BiocNeighbors 1.4.2
的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]3330 453 5202 1713 84 1954 6101 5370 6996 255 # # [2]4316 4108 8339 2349 8027 4012 7406 4294 9085 2981 # # [3]1488 2739 4203 7265 2415 9604 1684 4807 1929 368 # # [4]503 3776 3251 223 8246 154 7273 4974 8659 4734 # # [5]263 2254 4146 7821 8135 6604 5996 1620 8644 2938 # # [6]9232 29 5844 9273 2854 6970 6750 3720 8387 6651
头(输出端距离美元)
# #[1][2][3][4][5][6][7]# #(1)0.9549388 0.9730841 0.9882953 0.9905818 0.9938405 0.9974384 1.000726 # #(2)1.0250026 1.0309801 1.0598124 1.1316205 1.1389508 1.1660076 - 1.177922 # #(3)0.8048801 0.9330851 0.9579151 0.9606285 0.9664934 1.0006901 1.012451 # #(4)0.8739503 0.9477754 0.9998853 1.0192013 1.0375460 1.0391052 - 1.041700 # #(5)0.9000127 0.9015812 0.9615081 0.9739660 0.9995403 1.0007290 1.025438 # #[6]0.9290770 1.0146314 1.0224247 1.0559702 1.0629684 1.0785404 - 1.093382 # #[8][9][10]# #(1)1.002664 1.007617 1.019291 # #(2)1.178585 1.190359 1.196825 # # # #(3)1.012911 1.023324 1.029479 1.052582 1.058496 1.059432(4)# #(5)1.058356 1.063869 1.067919 # #(6日)1.100609 1.100866 1.105177
我们也可以在一个数据集的基础上再确定邻居查询分在另一个数据集。
nquery ndim < < - 1000 - 20查询< -矩阵(runif (nquery * ndim), ncol = ndim) qout < - queryKNN(数据、查询、k = 5, BNPARAM = AnnoyParam())头(qout美元指数)
# # [1][2][3][4][5]# # [1]9728 4016 4777 1961 3795 # # (2)8444 2423 9186 7961 4366 # # [3]5585 8332 6774 3664 6207 # # (4)1247 2838 748 5210 8646 # # [5]25 8704 419 589 6180 # # 2465 864 5663 6221 4024 (6)
头(qout距离美元)
# #[1][2][3][4][5]# #(1)0.9035632 0.9583917 0.9695784 0.9708687 - 0.9732593 # #(2)0.7779893 0.9002860 0.9738870 0.9785135 - 0.9811455 # #(3)0.7432720 0.9567128 0.9840043 1.0007811 - 1.0292883 # #(4)0.9533122 0.9736031 0.9905141 1.0444406 - 1.0453193 # #(5)0.8218890 0.8650465 0.9208409 0.9362080 - 0.9643939 # #(6日)0.9163575 0.9436435 1.0057408 1.0197005 1.0507250
它也同样容易使用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 / RtmpFLnDHO / file7bd9127d33df.idx”
如果跨会话持续索引,索引文件的路径可以直接指定buildIndex
。这可以用来构造索引对象直接使用相关的构造函数,例如,AnnoyIndex ()
,HnswIndex ()
。然而,它成为用户的责任清理任何临时索引文件完成后计算。
sessionInfo ()
# # R版本操作(2019-12-12)# #平台:x86_64-pc-linux-gnu(64位)# #下运行:Ubuntu 18.04.3 LTS # # # #矩阵产品:默认# #布拉斯特区:/home/biocbuild/bbs - 3.10 - bioc / R / lib / libRblas。所以# # LAPACK: /home/biocbuild/bbs - 3.10 - bioc / R / lib / libRlapack。# # # #语言环境:# # [1]LC_CTYPE = en_US。utf - 8 LC_NUMERIC = C # #[3]而= en_US。utf - 8 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.4.2 knitr_1.28 BiocStyle_2.14.4 # # # #通过加载一个名称空间(而不是附加):# # [1]Rcpp_1.0.3 bookdown_0.17 lattice_0.20-40 # # [4] digest_0.6.25 grid_3.6.2 stats4_3.6.2 # # [7] magrittr_1.5 evaluate_0.14 rlang_0.4.4 # # [10] stringi_1.4.6 S4Vectors_0.24.3 Matrix_1.2-18 # # [13] rmarkdown_2.1 BiocParallel_1.20.1 tools_3.6.2 # # [16] stringr_1.4.0 parallel_3.6.2 xfun_0.12 # # [19] yaml_2.2.1 compiler_3.6.2 BiocGenerics_0.32.0 # # [22] BiocManager_1.30.10 htmltools_0.4.0