跳转到主要内容

全球-全球遗传数据库搜索。

项目描述


vpsearch - 用于序列数据库的快速优势点树搜索

这是一个用于通过优势点树快速进行最近邻搜索的序列数据库索引和查询的包。对于像RDP这样的合理大型数据库,这通常比其他基于对齐的方法快5-10倍。

优势点树搜索使用全局到全局对齐来比较序列,而不是BLAST等使用的种子和扩展近似方法。

用法

给定一个序列数据库(FASTA格式),vpsearch build 构建一个优化的优势点搜索树。构建树是一个一次性操作,除非数据库更改,否则无需再次进行。例如,我们为细菌16S序列的RDP数据库构建了一个优势点树。该数据库包含281261个序列,其中39237个是重复的。在删除这些重复项后,我们剩下242024个唯一序列。为这些序列构建树的操作如下

  $ vpsearch build rdp_download_281261seqs_dedup.fa
  Building for 242024 sequences...
  done.
  Linearizing...done.
  Database created in rdp_download_281261seqs_dedup.db

对于全长序列的RDP数据库,在标准机器上大约需要20分钟。当只考虑序列的选定区域时,构建树所需的时间可以大大减少。例如,RDP 16S序列的v1-v2高度可变区(350个碱基对)或v3-v4区(250个碱基对)的优势点树可以在30秒到1分钟内构建。

一旦构建了树,就可以使用vpsearch query命令查找未知序列。这里我们提供一个包含单个序列的查询文件

  vpsearch query rdp_download_281261seqs_dedup.fa query.fa
  query	S000143715	99.54	1529	0	0	1	1524	1	1529	0	7546
  query	S004085923	99.08	1529	0	0	1	1524	1	1526	0	7481
  query	S004085922	99.08	1529	0	0	1	1524	1	1526	0	7481
  query	S004085925	98.50	1531	0	0	1	1524	1	1527	0	7386

默认情况下,vpsearch query命令在每个查询序列中输出数据库中的最佳四个匹配项(匹配项的数量可以通过-k参数更改)。查找一次处理一个查询序列,但可以通过启用多个线程来并行处理多个查询;使用-j选项指定线程数。

vpsearch query命令尝试以标准BLAST表格格式输出其结果。列的解释如下

列名 示例 备注
查询ID 查询
主题ID S000143715
相同度 99.54
比对长度 1529
错配 0 当前未实现
间隙打开 0 当前未实现
查询起始 1
查询结束 1524
主题起始 1
主题结束 1529
E值 0 不适用(总是0)
比特得分 7546 解释为比对得分

请注意,当前不显示错配数和间隙打开数。这将在软件包的下一个版本中解决。

安装

使用EDM

Enthought Deployment Manager(EDM)用户可以通过从该存储库提供的捆绑文件中导入EDM环境来安装必要的先决条件(Click、Cython、Numpy和Parasail)

  edm env import -f <bundle.json> vpsearch

其中<bundle.json>是以下之一:vpsearch_py3.6_osx-x86_64.jsonvpsearch_py3.6_rh6-x86_64.json,具体取决于您的平台。

完成后,激活环境,并安装此软件包。从此存储库的根目录运行

  edm shell -e vpsearch
  pip install -e .

使用Pip、Conda等

其他软件包安装工具(如Pip或Conda)的用户需要按照Parasail网页上的说明安装Parasail库。完成后,可以使用包管理器的适当命令安装Python依赖项。例如,对于pip,可以使用以下命令完成

  pip install -r requirements.txt

完成后,激活您的虚拟环境,并通过以下命令安装此软件包

  pip install -e .

使用Docker

可以构建包含vpsearch及其所有依赖项的Docker镜像。例如,当将vpsearch集成到工作流程管理器(如Snakemake、CWL或WDL)中时,这很有用。

要构建镜像,从此存储库的根目录运行以下命令

  docker build . -t vpsearch-image

镜像构建完成后,可以在容器内运行vpsearch。假设您当前目录中有一个目标序列的FASTA文件,文件名为database.fasta,运行以下命令以构建vpsearch索引

  docker run -it -v $PWD:/data -t vpsearch-image vpsearch build /data/database.fasta

要针对给定FASTA文件query.fasta的查询序列查询索引,运行

  docker run -it -v $PWD:/data -t vpsearch-image vpsearch query /data/database.db /data/query.fasta

故障排除

vpsearch软件包依赖于Parasail C库进行比对。如果构建软件包失败,因为找不到Parasail库,您可以在构建软件包之前通过设置环境变量PARASAIL_INCLUDE_DIRPARASAIL_LIB_DIR手动指定Parasail包含文件和共享对象库的位置

  export PARASAIL_INCLUDE_DIR=/location/of/parasail/include/files
  export PARASAIL_LIB_DIR=/location/of/parasail/lib/files
  pip install -e .

请注意,如果Parasail安装在非标准位置,您可能需要在运行时设置LD_LIBRARY_PATH变量。

实现说明

树构建操作分为两个阶段。我们首先使用动态数据结构构建树作为Python对象节点树,因为它更容易构建。然后,它将节点拓扑线性化为几个整数数组,这些数组易于序列化和快速查找。表示线性化树的对象只能查询数据库,不能构建树。较慢的节点树实现可以构建和查询(尽管有更多开销)。

构建轮子

可以使用在GitHub actions下运行的cibuildwheel以平台无关的方式构建此包的轮子。作为管理员,您可以通过从GitHub actions菜单中选择“构建轮子”操作,然后点击“运行工作流程”按钮来启动工作流程构建轮子。当工作流程完成后,Linux和macOS的轮子将作为压缩工件可用。

可以在本地运行cibuildwheel,但只能构建Linux的轮子。在干净的Python环境中,运行pip install cibuildwheel安装工具,然后例如

  CIBW_BUILD_VERBOSITY=1 \
  CIBW_BUILD=cp38-manylinux_x86_64 \
  CIBW_BEFORE_BUILD="./ci/build-parasail.sh" \
  python -m cibuildwheel --output-dir wheelhouse --platform linux

构建Linux的Python 3.8轮子。通过改变构建标记,可以构建其他Python版本的轮子。

许可证

此包根据BSD许可证授权。

参考文献

视角树在以下文章中介绍

Uhlmann, Jeffrey (1991). "使用度量树满足一般的近似/相似性查询"。信息处理信件。40 (4): 175–179. doi:10.1016/0020-0190(91)90074-r。

Yianilos (1993)。在一般度量空间中进行最近邻搜索的数据结构和算法(PDF)。第四届ACM-SIAM离散算法研讨会。美国费城工业与应用数学学会。第311–321页。pny93。

Parasail库在以下文章中描述

Daily, Jeff. (2016)。Parasail:全局、半全局和局部成对序列比对的SIMD C库。BMC生物信息学,17(1),1-11。doi:10.1186/s12859-016-0930-z

项目详情


下载文件

下载您平台上的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分发

vpsearch-0.1.2.tar.gz (218.2 kB 查看哈希)

上传时间

构建分发

vpsearch-0.1.2-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl (15.0 MB 查看哈希)

上传时间 CPython 3.10 manylinux: glibc 2.12+ x86-64

vpsearch-0.1.2-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl (13.5 MB 查看哈希)

上传时间 CPython 3.10 manylinux: glibc 2.12+ i686

vpsearch-0.1.2-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl (15.0 MB 查看哈希值)

上传时间: CPython 3.9 manylinux: glibc 2.12+ x86-64

vpsearch-0.1.2-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl (13.5 MB 查看哈希值)

上传时间: CPython 3.9 manylinux: glibc 2.12+ i686

vpsearch-0.1.2-cp39-cp39-macosx_10_9_x86_64.whl (2.7 MB 查看哈希值)

上传时间: CPython 3.9 macOS 10.9+ x86-64

vpsearch-0.1.2-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl (15.0 MB 查看哈希值)

上传时间: CPython 3.8 manylinux: glibc 2.12+ x86-64

vpsearch-0.1.2-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl (13.5 MB 查看哈希值)

上传时间: CPython 3.8 manylinux: glibc 2.12+ i686

vpsearch-0.1.2-cp38-cp38-macosx_10_9_x86_64.whl (2.7 MB 查看哈希值)

上传时间: CPython 3.8 macOS 10.9+ x86-64

vpsearch-0.1.2-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl (14.9 MB 查看哈希值)

上传时间: CPython 3.7m manylinux: glibc 2.12+ x86-64

vpsearch-0.1.2-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl (13.4 MB 查看哈希值)

上传时间: CPython 3.7m manylinux: glibc 2.12+ i686

vpsearch-0.1.2-cp37-cp37m-macosx_10_9_x86_64.whl (2.7 MB 查看哈希值)

上传时间: CPython 3.7m macOS 10.9+ x86-64

vpsearch-0.1.2-cp36-cp36m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl (14.9 MB 查看哈希值)

上传时间: CPython 3.6m manylinux: glibc 2.12+ x86-64

vpsearch-0.1.2-cp36-cp36m-manylinux_2_12_i686.manylinux2010_i686.whl (13.4 MB 查看哈希)

上传时间 CPython 3.6m manylinux: glibc 2.12+ i686

vpsearch-0.1.2-cp36-cp36m-macosx_10_9_x86_64.whl (2.7 MB 查看哈希)

上传时间 CPython 3.6m macOS 10.9+ x86-64

支持者