使用暹罗神经网络进行宏基因组分箱
项目描述
半Bin:使用暹罗神经网络进行短读和长读宏基因组分箱
半Bin是一个命令行工具,用于深度学习宏基因组分箱,处理短读和长读。
联系我们:请使用 GitHub issues 报告错误,并使用 SemiBin用户邮件列表 进行更开放性的讨论或提问。
如果您在出版物中使用此软件,请引用
Pan, S.; Zhu, C.; Zhao, XM.; Coelho, LP. 一种深度暹罗神经网络提高了不同环境中微生物组数据集的宏基因组组装基因. Nat Commun 13, 2326 (2022). https://doi.org/10.1038/s41467-022-29843-y
自监督方法和用于长读数据集(以及它们的基准测试)的算法在以下文章中描述
Pan, S.; Zhao, XM; Coelho, LP. SemiBin2:自监督对比学习提高了短读和长读测序的宏基因组组装基因. Bioinformatics 39, 第1期,2023年6月,第i21–i29页; https://doi.org/10.1093/bioinformatics/btad209
半Bin的基本使用方法
有关从零开始运行半Bin的教程,请参阅此处 半Bin教程.
安装
conda create -n SemiBin
conda activate SemiBin
conda install -c conda-forge -c bioconda semibin
这将同时安装SemiBin2
命令(为了向后兼容)以及旧的SemiBin
命令。对于新项目,建议您仅使用SemiBin2
:这两个命令执行相同的功能,但SemiBin2
的界面略好一些。
输入到SemiBin的是contigs(从reads组装而成)和BAM文件(reads映射到contigs)。在文档中,您可以查看如何从元基因组开始生成输入。
使用单样本binning运行(例如:人类肠道样本)
SemiBin2 single_easy_bin -i contig.fa -b S1.sorted.bam -o output --environment human_gut
(如果您使用的是来自长读的长contigs,请添加--sequencing-type=long_read
参数)。
使用多样本binning运行
SemiBin2 multi_easy_bin -i contig_whole.fa -b *.sorted.bam -o output
输出包括output_bins
目录中的bins(包括bin.*.fa和recluster.*.fa)。
请查看以下更多选项和详细信息,并阅读文档。
高级安装
SemiBin在Python 3.7-3.12上运行(并且持续进行测试)。
Bioconda
如上所示,这是最简单的模式。然而,如果您想使用带有GPU的SemiBin(如果您有,这将更快),您需要安装具有GPU支持的PyTorch。
conda create -n SemiBin
conda activate SemiBin
conda install -c conda-forge -c bioconda semibin
conda install -c pytorch -c nvidia pytorch pytorch-cuda=11.8
MacOS注意事项:您只能在MacOS中使用conda安装PyTorch的CPU版本,并且您需要从源安装以利用GPU(参见#72)。有关如何安装PyTorch的更多信息,请参阅他们的文档。
源
您需要以下依赖项
安装依赖项的最简单方法是使用conda
conda install -c bioconda bedtools hmmer samtools
依赖项安装完成后,您可以通过运行以下命令安装SemiBin
python setup.py install
运行SemiBin1的可选额外依赖项
binning示例
SemiBin在单样本、联合组装和多样本binning上运行。这里我们以简单模式为例。有关每个SemiBin子命令的详细信息和示例,请阅读文档。
从长读组装binning
从版本1.4开始,SemiBin提出了一个新的算法(基于集成DBSCAN算法)用于从长读组装binning。要使用它,您可以使用bin_long
子命令或向single_easy_bin
或multi_easy_bin
子命令传递选项--sequencing-type=long_read
。
自监督模式
从版本1.3开始,SemiBin支持完全自监督学习,这绕过了使用MMSeqs2对contigs进行注释的需要。在基准测试中,自监督学习既快(4倍快;峰值时仅使用11%的RAM)又比在手稿中测试的版本生成8.3-21.5%的高质量bins。要使用它,将选项--training-mode=self
传递给single_easy_bin
或multi_easy_bin
子命令。
简单单/联合组装binning模式
单样本和联合组装在SemiBin中处理方式相同。
您需要以下输入
- contig文件(以下示例中的
contig.fa
) - 来自将短reads映射到contigs的BAM文件(以下示例中的
mapped_reads.sorted.bam
),已排序
可以使用single_easy_bin
命令一次性生成结果。
例如
SemiBin2 \
single_easy_bin \
--input-fasta contig.fa \
--input-bam mapped_reads.sorted.bam \
--environment human_gut \
--output output
或者,您可以通过不传递--environment
标志来为该样本训练一个新的模型
SemiBin2 \
single_easy_bin \
--input-fasta contig.fa \
--input-bam mapped_reads.sorted.bam \
--output output
以下环境受支持
human_gut
dog_gut
ocean
soil
cat_gut
human_oral
mouse_gut
pig_gut
built_environment
wastewater
鸡砂囊
(由 Florian Plaza Oñate 贡献)全局
如果没有其他环境适合,可以使用 global
环境。请注意,训练一个新的模型可能需要很多时间和磁盘空间。需要一些耐心。如果您有很多来自相同环境的样本,您也可以从它们中训练一个新的模型并重新使用。
简单的多样本分箱模式
可以在多样本分箱模式下使用 multi_easy_bin
命令
您需要以下输入
- 联合连续序列文件
- 来自映射的 BAM 文件
对于每个连续序列,名称的格式为 <样本名称>:<连续序列名称>
,其中 :
是默认分隔符(可以通过 --separator
参数更改)。注意:请确保样本名称是唯一的,并且分隔符在拆分时不会引起混淆。例如
>S1:Contig_1
AGATAATAAAGATAATAATA
>S1:Contig_2
CGAATTTATCTCAAGAACAAGAAAA
>S1:Contig_3
AAAAAGAGAAAATTCAGAATTAGCCAATAAAATA
>S2:Contig_1
AATGATATAATACTTAATA
>S2:Contig_2
AAAATATTAAAGAAATAATGAAAGAAA
>S3:Contig_1
ATAAAGACGATAAAATAATAAAAGCCAAATCCGACAAAGAAAGAACGG
>S3:Contig_2
AATATTTTAGAGAAAGACATAAACAATAAGAAAAGTATT
>S3:Contig_3
CAAATACGAATGATTCTTTATTAGATTATCTTAATAAGAATATC
您可以使用此功能获取联合连续序列
SemiBin2 concatenate_fasta -i contig*.fa -o output
如果样本或连续序列名称使用了默认分隔符(:
),则需要使用 --separator
、-s
参数来更改它。
在将样本(单独)映射到联合 FASTA 文件后,您可以使用一行代码获取结果
SemiBin2 multi_easy_bin -i concatenated.fa -b *.sorted.bam -o output
使用 strobealign-aemb 的丰度信息运行
strobealign-aemb 是一种用于宏基因组分箱的快速丰度估计方法。由于 strobealign-aemb 无法为连续序列的每个位置提供映射信息,因此我们无法在需要使用较小的 5 且需要拆分连续序列以生成必须链接约束的分箱模式下,将 SemiBin2 与 strobealign-aemb 一起运行。
- 拆分 fasta 文件
python script/generate_split.py -c contig.fa -o output
- 使用 strobealign-aemb 映射读取以生成丰度信息
strobealign --aemb output/split.fa read1_1.fq read1_2.fq -R 6 > sample1.txt
strobealign --aemb output/split.fa read2_1.fq read2_2.fq -R 6 > sample2.txt
strobealign --aemb output/split.fa read3_1.fq read3_2.fq -R 6 > sample3.txt
strobealign --aemb output/split.fa read4_1.fq read4_2.fq -R 6 > sample4.txt
strobealign --aemb output/split.fa read5_1.fq read5_2.fq -R 6 > sample5.txt
- 运行 SemiBin2(类似于运行 SemiBin 与 BAM 文件)
SemiBin2 generate_sequence_features_single -i contig.fa -a *.txt -o output
SemiBin2 generate_sequence_features_multi -i contig.fa -a *.txt -s : -o output
SemiBin2 single_easy_bin -i contig.fa -a *.txt -o output
SemiBin2 multi_easy_bin i contig.fa -a *.txt -s : -o output
输出
输出文件夹将包含
- 从数据中计算的特征,用于训练和聚类
- 保存的半监督深度学习模型
- 输出分箱
- 关于每个分箱的基本信息表
- 一些中间文件
默认情况下,重建的分箱位于 output_recluster_bins
目录中。
有关输出详情,请阅读文档。
项目详情
下载文件
下载适合您平台文件的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。