BiocNeighbors 1.14.0
的BiocNeighbors包提供了一些近似的邻居搜索算法:
这些方法补充具体的算法前面描述的。再次,它是简单的切换算法从一个到另一个通过简单地改变BNPARAM
论点findKNN
和queryKNN
。
我们再执行与惹恼邻居搜索算法通过指定BNPARAM = AnnoyParam ()
。
脑袋< - 10000 ndim < < - - 20数据矩阵(runif(脑袋* ndim), ncol = ndim)输出信号< - findKNN(数据、k = 10 BNPARAM = AnnoyParam())头(输出端美元指数)
# #[1][2][3][4][5][6][7][8][9][10]# #[1]4505 4168 617 8623 4240 6847 2259 5830 4422 1608 # #[2]1539 6123 9034 8664 9644 2079 6207 5303 2202 8149 # #[3]2978 6267 4601 1804 5566 1079 2886 5003 8680 9352 # #[4]2691 9637 5359 8149 5062 5112 5903 274 2143 1410 # #[5]5874 1426 133 8065 1319 3159 7696 8543 5047 8534 # #(6日)7955 3359 549 5782 4825 6797 2841 1235 6215 7083
头(输出端距离美元)
# #[1][2][3][4][5][6][7]# #(1)0.8825449 0.9915909 1.0092245 1.0188426 1.0392540 1.0516332 1.0519289 # #(2)0.8622014 0.9186255 0.9317672 1.0342002 1.0359803 1.0780544 - 1.0795301 # #(3)0.8337301 0.8998619 0.9341834 0.9551983 0.9601048 0.9736210 0.9805866 # #(4)0.8187793 0.8193409 0.9103844 0.9208554 0.9429098 0.9466539 - 0.9617505 # #(5)0.8705071 0.9711886 0.9909576 1.0005188 1.0054835 1.0277821 1.0325969 # #[6]0.9291477 0.9332741 0.9387993 0.9396378 0.9666235 0.9844171 - 0.9942077 # #[8][9][10]# #(1)1.0579325 1.058985 1.060058 # #(2)1.0945244 1.105723 1.114920 # # # #(3)1.0039030 1.012025 1.012901 0.9816138 1.012709 1.028672(4)# #(5)1.0444629 1.049320 1.053118 # #(6日)1.0305445 1.050729 1.057779
我们也可以在一个数据集的基础上再确定邻居查询分在另一个数据集。
nquery ndim < < - 1000 - 20查询< -矩阵(runif (nquery * ndim), ncol = ndim) qout < - queryKNN(数据、查询、k = 5, BNPARAM = AnnoyParam())头(qout美元指数)
# # [1][2][3][4][5]# # [1]7059 7607 2129 2347 6307 # # (2)6159 8596 6062 8976 9349 # # 5669 9320 7673 6012 7089 (3)# # [4]4221 4691 3187 7418 4053 # # (5)8709 1907 4231 4425 4741 # # 8317 1419 849 9364 4506 (6)
头(qout距离美元)
# #[1][2][3][4][5]# #(1)0.9419826 0.9975957 1.0318391 1.0445652 - 1.0455526 # #(2)0.8231115 0.8697896 0.9104496 0.9648659 - 0.9910955 # #(3)0.9634522 1.0049822 1.0079889 1.0189093 - 1.0468636 # #(4)0.8537957 0.8811178 0.9886814 1.0454019 - 1.0553904 # #(5)0.8202045 0.9335378 1.0480314 1.0797175 - 1.0798849 # #(6日)0.8650038 0.9380068 0.9622783 0.9756745 1.0326613
它也同样容易使用HNSW算法通过设置BNPARAM = HnswParam ()
。
选项描述的最准确的方法也适用于这里。例如:
子集
确定邻居的一个子集点。get.distance
为了避免不必要时检索的距离。BPPARAM
并行化计算跨多个工人。BNINDEX
建立森林一旦给定数据集和重用它在调用。使用预构建的BNINDEX
所示:
前< - buildIndex(数据,BNPARAM = AnnoyParam())着干活< - findKNN (BNINDEX =前,k = 5) out2 < - queryKNN (BNINDEX =前,查询=查询,k = 2)
骚扰和HNSW默认执行搜索基于欧氏距离。搜索的曼哈顿距离是通过简单的设置距离=“曼哈顿”
在AnnoyParam ()
或HnswParam ()
。
用户文档的每个函数的具体细节可用参数。
骚扰和HNSW生成索引结构——森林的树木和一系列的图表,当调用——分别保存到文件buildIndex ()
。默认情况下,这个文件位于tempdir ()
1在HPC的文件系统,您可以改变TEMPDIR
保存到一个位置,更适合并发访问。会议结束时,将被删除。
AnnoyIndex_path(前)
# # [1]“/ tmp / RtmpayapNL / file1b8bdd5f9f8fb5.idx”
如果跨会话持续索引,索引文件的路径可以直接指定buildIndex
。这可以用来构造索引对象直接使用相关的构造函数,例如,AnnoyIndex ()
,HnswIndex ()
。然而,它成为用户的责任清理任何临时索引文件完成后计算。
sessionInfo ()
# # R版本4.2.0 RC (2022-04-19 r82224) # #平台:x86_64-pc-linux-gnu(64位)# #下运行:Ubuntu 20.04.4 LTS # # # #矩阵产品:默认# #布拉斯特区:/home/biocbuild/bbs - 3.15 - bioc / R / lib / libRblas。所以# # LAPACK: /home/biocbuild/bbs - 3.15 - bioc / R / lib / libRlapack。# # # #语言环境:# # [1]LC_CTYPE = en_US。utf - 8 LC_NUMERIC = C # #[3]而= en_GB LC_COLLATE = C # # [5] LC_MONETARY = en_US。utf - 8 LC_MESSAGES = en_US。utf - 8 # # [7] LC_PAPER = en_US。utf - 8 LC_NAME = C # # [9] LC_ADDRESS C = C LC_TELEPHONE = # # [11] LC_MEASUREMENT = en_US。utf - 8 LC_IDENTIFICATION = C附加基本包:# # # # # #[1]统计图形grDevices跑龙套数据集方法基础# # # #其他附加包:# # [1]BiocNeighbors_1.14.0 knitr_1.38 BiocStyle_2.24.0 # # # #通过加载一个名称空间(而不是附加):# # [1]Rcpp_1.0.8.3 magrittr_2.0.3 BiocGenerics_0.42.0 # # [4] BiocParallel_1.30.0 lattice_0.20-45 R6_2.5.1 # # [7] rlang_1.0.2 fastmap_1.1.0 stringr_1.4.0 # # [10] tools_4.2.0 parallel_4.2.0 grid_4.2.0 # # [13] xfun_0.30 cli_3.3.0 jquerylib_0.1.4 # # [16] htmltools_0.5.2 yaml_2.3.5 digest_0.6.29 # # [19] bookdown_0.26 Matrix_1.4-1 BiocManager_1.30.17 # # [22] S4Vectors_0.34.0 sass_0.4.1 evaluate_0.15 # # [25] rmarkdown_2.14 stringi_1.7.6 compiler_4.2.0 # # [28] bslib_0.3.1 stats4_4.2.0 jsonlite_1.8.0