分箱-binning
宏基因組分箱是指從宏基因組數據中將不同物種的序列分離,將來自同一菌種的序列聚類,得到單個菌株的數據。分箱的對象可以是reads、contig以及gene。
我們常說的binning一般指的是contig binning,側重于單菌基因組的獲得,目標是從宏基因組數據中提取出單菌的draft genome。
binning本質是聚類,聚類操作基于下面的數據:
- 核酸組成(不同物種間核酸組成存在差異)
- 豐度信息(對contig來說就是測序深度,來自同一個物種的片段測序深度應該相近。)
分箱流程
分箱軟件
Metabat2,maxbin2 和 concoct 是三款常用的分箱軟件;需要準備的輸入數據為宏基因組拼接結果和質控過濾的測序數據。
metabat2 分箱
# 構建index
bowtie2-build A1.contigs.fa A1.contigs.db
# 比對并排序
bowtie2 --threads 6 -x ./A1.contigs.db \
-1 ./A1_1.fq.gz \
-2 ./A1_2.fq.gz 2>A1.map.log | \
samtools sort -o A1.sort.bam
# 運行分箱
runMetaBat.sh A1.contigs.fa \ # 輸入, 組裝結果
A1.sort.bam \ # 輸入,bam文件
--minContig 1000 # contig最小長度
maxbin2 分箱
# 創建目錄
mkdir A1.bindir
# 該軟件自動調用bowtie2進行比對
run_MaxBin.pl -contig A1.contigs.fa \ # 輸入, 組裝結果
-reads ./A1_1.fq.gz \ # 輸入,測序數據
-reads2 ./A1_2.fq.gz \ # 輸入,測序數據
-out A1.bindir/A1.bin \ # 輸出目錄
-min_contig_length 1000 \
-thread 6
concoct 分箱
# bowtie2 比對
bowtie2-build A1.contigs.fa A1.contigs.db
bowtie2 --threads 6 -x ./A1.contigs.db \
-1 ./A1_1.fq.gz \
-2 ./A1_2.fq.gz 2>A1.map.log | \
samtools sort -o A1.sort.bam
samtools index A1.sort.bam
# 數據劃分
cut_up_fasta.py -c 10000 -o 0 \
--merge_last \
-b contigs_10K.bed \
A1.contigs.fa > contigs_10K.fa
# 生成coverage信息
concoct_coverage_table.py \
contigs_10K.bed ./*.sort.bam > coverage_table.tsv
# 運行分箱
concoct --composition_file contigs_10K.fa \ # 輸入,fasta序列
--coverage_file coverage_table.tsv \ # 輸入,coverage信息
-b concoct_output/ \ # 輸出,結果目錄
--threads 6 \ # 線程數
--read_length 150 \ # read長度
--length_threshold 1000 # contig閾值
# subcontig 合并回原始contig
merge_cutup_clustering.py concoct_output/clustering_gt1000.csv \
> concoct_output/clustering_merged.csv
# 構建bin輸出目錄
mkdir concoct_output/fasta_bins
# 提取bin序列
extract_fasta_bins.py A1.contigs.fa \
concoct_output/clustering_merged.csv \
--output_path concoct_output/fasta_bins