宏基因组单样品vamb分箱,gtdb物种注释与建树

个人记录,其实很多文件夹的设置并不是那么合理。

先放一些分箱相关的来来来,一起来pick宏基因组binning分析工具 (baidu.com)

存放已有序列的文件夹

  • ./qc 质控后的双端测序文件.fq.gz
  • ./ 当前文件夹,放.fa后缀的contig文件
  • 我的文件名编码是S1-1,S1-2这样的。

文件夹

  • ./concatenate 整理好的序列长度大于2000的
  • ./map 放.mmi的索引文件
  • ./bam 放.bam的比对文件
  • ./sort 排序后的.bam文件
  • ./bins 把所有的bin的.fa文件放在一个文件夹
  • ./checkmout 放checkm的输出文件,这个文件夹在代码运行前要是空的
  • ./bin_cds 放prodigal output

软件位置(已安装和自己安的)

GitHub - Ecogenomics/GTDBTk: GTDB-Tk: a toolkit for assigning objective taxonomic classifications to bacterial and archaeal genomes.icon-default.png?t=N7T8https://github.com/Ecogenomics/GTDBTk

如果要混样binning,cat合并contigs前参考一下这个:处理contig合并后有序列名相同的问题-CSDN博客

1.取序列长度大于2000的序列(根据推荐)

for file in 2023tire_contig/*.fa; do
filename=$(basename "$file" .fa)
python soft/vamb/vamb-master/src/concatenate.py ./concatenate/$filename.fna.gz $file
done

28个样4分钟(25个线程)

2.创建索引文件mmi

for file in *.fa; do
filename=$(basename "$file" .fa)
python ~/soft/vamb/vamb-master/src/concatenate.py ./concatenate/$filename.fna.gz $file
done

-I 参数用于设置索引文件的最大内存占用量

3. 比对

for file in map/*.mmi; do 
filename=$(basename "$file" .mmi) minimap2 -aI 64g -t 25 -N 5 -ax sr $file --split-prefix mmsplit qc/${filename}_1.fq.gz qc/${filename}_2.fq.gz | samtools view -F 3584 -b --threads 25 > bam/$filename.bam 
done

一个样品9分钟左右,28个样品4个小时(25个线程)。.bam的文件很大,我的文件10G+

4. sort——把得到的bam给sort一下

for file in bam/*.bam; do
filename=$(basename "$file" .bam)
samtools sort --threads 25 -o sort/${filename}.sorted.bam $file
done

一个样品4分钟左右,28个样品2小时(25个线程)。

5.vamb

for file in concatenate/*.fna.gz; do
filename=$(basename "$file" .fna.gz)
vamb -o C --outdir ${filename}-OUT --fasta $file --bamfiles sort/${filename}.sorted.bam --minfasta 200000
done

一个样品6分钟左右,一共3个小时(25个线程)。

6.整理生成的所有bin文件,将前缀命名为样品名,并把它们全部移到binning文件夹

下面这个mv最好改成cp就是了

mkdir -p bins # 创建名为bins的文件夹,如果创过了就不用了 
for dir in S*-OUT/bins/S1; do 
sample_id=$(echo "$dir" | cut -d- -f1-2) # 提取样本ID 
for file in "$dir"/*; do 
mv "$file" "bins/${sample_id}_$(basename "$file")" # 重命名文件并保存到bins文件夹 
done

瞬间完成

解析cut -d- -f1-2(如果使用vamb时把结果文件夹直接名为样品名,就不用这么麻烦了)

-d选项指定了字段的分隔符,这里设置为-;-f选项指定要提取的字段编号或范围,这里设置为1-2,表示提取第一个和第二个字段。

例如,对于字符串S1-1-OUT/bins/S1,使用cut -d- -f1-2命令将返回S1-1,即将-作为分隔符,提取字符串中的前两个字段。

如果不放到文件夹,直接放当前目录用下面这个替换第五行(我用的是下面这个)

mv "$file" "${sample_id}_$(basename "$file")"

7. checkM检测

CheckM :用于评估从分离株、单细胞或宏基因组中获得的基因组质量的工具。 - 简书 (jianshu.com)

source activate metawrap-env
checkm lineage_wf ./bins ./checkmout -t 25 --pplacer_threads 8 --tab_table -f bin_checkm.tsv

checkm lineage_wf默认的bins后缀是.fna,如果你的文件后缀是.fa,需要增加一个参数(-x fa)

28个样品耗时25分钟(25个线程)

8.把completeness大于50 and contamination小于 10的挑进文件夹bins_90_10

手动从表格里筛选completeness大于50 and contamination小于10的(可以用excel),另存为表格bin_checkm_50_10.tsv。

mkdir -p bins_90_10 # 创建名为bins_90_10的文件夹 
while read prefix _; do 
find ./bins -name "${prefix}*" -exec cp {} bins_50_10/ \; # 复制符合前缀的文件到bins_90_10文件夹 
done < bin_checkm_50_10.tsv

可以把挑出来的这些再checkm一次(但没必要)

checkm lineage_wf ./bins_50_10 ./checkmout -t 25 --pplacer_threads 8 --tab_table -f bin_checkm_50_10.tsv

十分钟左右(25个线程)

9.prodigal 基因预测

其实checkm里面就直接做了这个了,但是文件还得移来移去重命名,我就直接自己prodigal了

for file in bins/*.fna; do

filename=$(basename "$file" .fna) prodigal -i $file -f gff -p meta -o bin_cds/$filename.gff3 -a bin_cds/$filename.faa

done

28分钟

prodigal虽然没有在这一命令里输入线程值,但它会根据提交任务设置的CPU使用数自动分配并加速。

10.diamond比对功能基因

用blastp比对自己的库

11.物种注释

source activate gtdbtk

gtdbtk classify_wf --pplacer_cpus 50 --cpus 50 --genome_dir bins_50_10 --full_tree -x fna --out_dir gtdbtk 
tail -n+2 gtdbtk/gtdbtk.bac120.summary.tsv|cut -f 1-2|sed 's/;/\t/g'|sed '1 s/^/ID\tDomain\tPhylum\tClass\tOrder\tFamily\tGenus\tSpecies\n/' > gtdbtk/tax.txt

50线程,CPU,1h(感觉提高线程对增速不明显)

进入./gtdbtk/align

gunzip gtdbtk.bac120.user_msa.fasta.gz

这一步的可能报错如下(对于我的427个样品),要注意提交服务器节点的运行内存性能。

WARNING: pplacer requires ~320 GB of RAM to fully load the bacterial tree into memory.

12.对细菌们建树(同样是用gtdbtk,利用gtdbtk classify_wf生成的多序列比对文件)

gtdbtk infer --out_dir infer --cpus 50 --msa_file gtdbtk/align/gtdbtk.bac120.user_msa.fasta

14. 画进化树图

使用生成的gtdbtk.unrooted.tree文件作图,另用一个excel导入进化树图的注释信息。

circle tree (chiplot.online)

宏基因组binning是一种用于对宏基因组数据进行分类和鉴定的方法。宏基因组数据是指从环境样品中获取的多个未知微生物基因组片段。这些基因组片段在后续的分析中通常需要被分类和归类,以获得有关微生物群落的更多信息。 宏基因组binning主要依赖于DNA序列的相似性,并通过比对和聚类的方式来组装和分类基因组片段。首先,它会使用组装算法将原始DNA序列拼接成长长度的连续序列,这被称为contig。然后,根据这些contig之间的相似性,将它们归类为不同的bins,每个bin代表一个可能的微生物基因组。常用的聚类方法包括k-means聚类和基于相似性网络的聚类。 在binning过程中,还会使用一些附加的信息来辅助分类,比如基于GC含量、覆盖度、共线性等特征进行筛选和分类。这些特征有助于识别和归类那些相似度较高的基因组,并进一步提高准确性。 宏基因组binning在环境微生物组学研究中扮演着重要的角色。它能够帮助我们了解到环境中存在的微生物多样性,发现新的微生物种类,并进一步研究它们在生态系统功能中的作用。此外,宏基因组binning还可以用于分析寄生菌、病原体等微生物组的基因组,并为其后续处理和研究提供数据支持。 总而言之,宏基因组binning是一种用于对宏基因组数据进行分类和鉴定的方法,通过比对和聚类等步骤对基因组片段进行组装和归类,为环境微生物组学研究提供了重要的工具。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值