【4.2】宏基因组分析--MetaWRAP分析示例
启动:
activate2
conda activate metawrap-env
metaWRAP程序整理了所有的功能模块,可以独立运行。运行metaWRAP -h显示模块名称
Usage: metawrap [module] --help
Options:
read_qc 质控Raw read QC module
assembly 组装Assembly module
binning 分箱Binning module
bin_refinement 分箱提纯Refinement of bins from binning module
reassemble_bins 重装分箱Reassemble bins using metagenomic reads
quant_bins 定量Quantify the abundance of each bin across samples
blobology 可视化Blobology module
kraken 物种注释KRAKEN module
想查看每个模块的具体参数,如组装metawrap assembly -h
Usage: metawrap assembly [options] -1 reads_1.fastq -2 reads_2.fastq -o output_dir
Options:
-1 STR 正向序列forward fastq reads
-2 STR 反向序列reverse fastq reads
-o STR 输出目录output directory
-m INT 内存大小memory in GB (default=10)
-t INT 线程number of threads (defualt=1)
--use-megahit assemble with megahit (default)
--use-metaspades assemble with metaspades instead of megahit
二、具体案例
2.9 下载肠道宏基因组数据
mkdir -p /home/sam/project/metawrap ; cd /home/sam/project/metawrap
##下载3个样品,共6G,解压后15G;包括7G的序列(这里,我只下载了ERR011347这个测序结果)
mkdir raw_data; cd raw_data
wget -c ftp.sra.ebi.ac.uk/vol1/fastq/ERR011/ERR011347/ERR011347_1.fastq.gz;
wget -c ftp.sra.ebi.ac.uk/vol1/fastq/ERR011/ERR011347/ERR011347_2.fastq.gz;
wget ftp.sra.ebi.ac.uk/vol1/fastq/ERR011/ERR011348/ERR011348_1.fastq.gz;
wget ftp.sra.ebi.ac.uk/vol1/fastq/ERR011/ERR011348/ERR011348_2.fastq.gz;
wget ftp.sra.ebi.ac.uk/vol1/fastq/ERR011/ERR011349/ERR011349_1.fastq.gz;
wget ftp.sra.ebi.ac.uk/vol1/fastq/ERR011/ERR011349/ERR011349_2.fastq.gz;
# 解压
gunzip *.gz
# 移动至子目录
mkdir RAW_READS
mv *fastq RAW_READS
2.1 read_qc质控和去宿主
默认使用人类基因组的hg38的bmt索引去宿主,需要在软件安装和数据库配置中提前布置好。对于环境样本,也可以不去宿主,使用 –skip-bmtagger 跳过。
我们对每个样本进行处理
mkdir READ_QC
# 24线程程质控5GB数据,大约29分钟(m)单个样本,但软件好像不支持多线程
time metawrap read_qc -1 RAW_READS/ERR011347_1.fastq -2 RAW_READS/ERR011347_2.fastq -t 24 -o READ_QC/ERR011347
metawrap read_qc -1 RAW_READS/ERR011348_1.fastq -2 RAW_READS/ERR011348_2.fastq -t 24 -o READ_QC/ERR011348
metawrap read_qc -1 RAW_READS/ERR011349_1.fastq -2 RAW_READS/ERR011349_2.fastq -t 24 -o READ_QC/ERR011349
我们可以查看每个样品目录中的报告,来比较质控前后的变化,如READ_QC/ERR011347/pre-QC_report/ERR011347_2_fastqc.html包含质控前的质量评估结果。
READ_QC/ERR011347/post-QC_report/final_pure_reads_2_fastqc.html包含质控前的质量评估结果。
如果确定质量合格(质量不符合你自己要求,可查看帮助调整参数重新质控),可移动结果到新目录,质控后15G变为9G。
mkdir CLEAN_READS
for i in READ_QC/*; do
b=${i#*/}
mv ${i}/final_pure_reads_1.fastq CLEAN_READS/${b}_1.fastq
mv ${i}/final_pure_reads_2.fastq CLEAN_READS/${b}_2.fastq
done
2.2 组装
文件合并,方便拼接简化输入文件、组装获得统一的参考contig,如果文件过大,也可能需要分批处理。
cat CLEAN_READS/ERR*_1.fastq > CLEAN_READS/ALL_READS_1.fastq
cat CLEAN_READS/ERR*_2.fastq > CLEAN_READS/ALL_READS_2.fastq
组装,获得叠连群(contigs),是Binning的基本单元
#运行1h,仍然报错,去掉–metaspades后8m完成
time metawrap assembly -1 CLEAN_READS/ALL_READS_1.fastq -2 CLEAN_READS/ALL_READS_2.fastq -m 200 -t 96 -o ASSEMBLY # --metaspades
组装结果为ASSEMBLY/final_assembly.fasta,统计报告见ASSEMBLY/assembly_report.html
查看最长的3个contig信息
grep ">" ASSEMBLY/final_assembly.fasta | head -n3
>NODE_1_length_196124_cov_2.427049
>NODE_2_length_176373_cov_3.889994
>NODE_3_length_163601_cov_3.070200
看到最长的contig将近200kb,Top 3大于150kb,我们只使用了测试的7G数据,通常使用30 - 100 GB,拼接结果会更好。
参数说明:
Usage: metaWRAP assembly [options] -1 reads_1.fastq -2 reads_2.fastq -o output_dir
Options:
-1 STR forward fastq reads
-2 STR reverse fastq reads
-o STR output directory
-m INT memory in GB (default=24)
-t INT number of threads (defualt=1)
-l INT minimum length of assembled contigs (default=1000)
--megahit assemble with megahit (default)
--metaspades assemble with metaspades instead of megahit (better results but slower amd higher memory requirement)
2.3 kraken物种注释(可选)
kraken在reads和contig层面进行物种注释。当然kraken这么全能的工具,还可以在基因和bin层面
# 7G演示数据,8线程耗时3m17s
metawrap kraken -o KRAKEN -t 96 -s 1000000 CLEAN_READS/ERR*fastq ASSEMBLY/final_assembly.fasta
结果文件夹中有注释结果文件.kraken(每个reads的注释结果)、.krona(注释结果分类汇总),和可视化的Krona网页图表kronagram.html
参数说明:
(metawrap-env) [sam@localhost 21]$ metawrap kraken --help
Run on any number of fasta assembly files and/or or paired-end reads.
Usage: metaWRAP kraken [options] -o output_dir assembly.fasta reads_1.fastq reads_2.fastq ...
Options:
-o STR output directory
-t INT number of threads
-s INT read subsampling number (default=all)
--no-preload do not pre-load the kraken DB into memory (slower, but lower memory requirement)
Note: you may pass any number of sequence files with the following extensions:
*.fa *.fasta (assumed to be assembly files) or *_1.fastq and *_2.fastq (assumed to be paired)
2.4 4. 三种方法Bin
基于contig和三种bin方法,需要拼接结果和原始序列,用时34m
metawrap binning -o INITIAL_BINNING -t 8 -a ASSEMBLY/final_assembly.fasta --metabat2 --maxbin2 --concoct CLEAN_READS/ERR*fastq
结果目录中文件或目录说明
insert_sizes.txt 样本量统计和估计的建库时文库片段大小
concoct_bins maxbin2_bins metabat2_bins 三个目录为三种bin的结果
work_files有三种bin分析所需要的文件,如不同格式的bin覆盖度或丰度信息。
concoct, metabat2和maxbin2三个软件分别获得了47, 29 和20个bins,但我们并不知道它们质量如何,可以添加–run-checkm参数获得质量评估
这一步输入序列的后缀名需要为 fastq, 如果为fq的话,都会报错
(metawrap-env) [sam@localhost 21]$ metawrap binning --help
metawrap binning --help
Usage: metaWRAP binning [options] -a assembly.fa -o output_dir readsA_1.fastq readsA_2.fastq ... [readsX_1.fastq readsX_2.fastq]
Note1: Make sure to provide all your separately replicate read files, not the joined file.
Note2: You may provide single end or interleaved reads as well with the use of the correct option
Note3: If the output already has the .bam alignments files from previous runs, the module will skip re-aligning the reads
Options:
-a STR metagenomic assembly file
-o STR output directory
-t INT number of threads (default=1)
-m INT amount of RAM available (default=4)
-l INT minimum contig length to bin (default=1000bp). Note: metaBAT will default to 1500bp minimum
--metabat2 bin contigs with metaBAT2
--metabat1 bin contigs with the original metaBAT
--maxbin2 bin contigs with MaxBin2
--concoct bin contigs with CONCOCT
--universal use universal marker genes instead of bacterial markers in MaxBin2 (improves Archaea binning)
--run-checkm immediately run CheckM on the bin results (requires 40GB+ of memory)
--single-end non-paired reads mode (provide *.fastq files)
--interleaved the input read files contain interleaved paired-end reads
2.5 Bin提纯
三种主流bin结果各有优缺点,我们将对结果进行整合和优化,以获得更好的结果
如果你有超过3种结果,也可以合并,如5种结果,先合并1,2,3;再合并4,5;最后将两类合并。
推荐使用完整度70,污染率5的阈值;但本演示测序数据较小,仅使用50和10级别的阈值,保证有足够的结果用于演示和评估。要求越高,bin越少,请根据个人需要调整。
主要参数有-o输出目录;-t线程数;-A/B/C三种Bin结果;-c完整度阈值;-x污染率阈值;如下8线程,耗时67m
metawrap bin_refinement -o BIN_REFINEMENT -t 8 -A INITIAL_BINNING/metabat2_bins/ -B INITIAL_BINNING/maxbin2_bins/ -C INITIAL_BINNING/concoct_bins/ -c 50 -x 10
结果目录中有三个原始bin的结果与统计。metaWRAP目录包含最终结果。如果想查看中间文件见Binning_refiner目录。
.stat文件包含每个bin的统计:完整性、污染率、GC含量、物种、N50、大小和来源。
如cat BIN_REFINEMENT/metaWRAP_bins.stats
bin completeness contamination GC lineage N50 size binner
bin.1 98.92 0.866 0.401 Clostridiales 13297 2373299 binsBC
bin.8 93.73 0.884 0.312 Euryarchaeota 5058 1485694 binsC
bin.2 85.57 0.223 0.370 Clostridiales 5890 2030996 binsA
提纯的结果如何看,详见BIN_REFINEMENT/figures/目录中的图片,有eps矢量图和Png位图供查看和修改发表使用,作者太贴心了!
2.6 Blobology可视化bin
我们使用Blobology模块,将Contig的GC含量和丰度进行散点图可视化,并按物种或Bin进行着色,来观察结果。
可视化Bin的contig丰度和GC含量,耗时31m
metawrap blobology -a ASSEMBLY/final_assembly.fasta -t 8 -o BLOBOLOGY --bins BIN_REFINEMENT/metaWRAP_bins CLEAN_READS/ERR*fastq
存在如下图所 需的原始数据.binned.blobplot.文件,包括GC含量、丰度、平均丰度等,可使用ggplot2方便可视化如下图,难点是颜色分配。
参考脚本见程序目中
/conda2/envs/metawrap/bin/metawrap-scripts/blobology/makeblobplot_with_bins.R final_assembly.binned.blobplot 1 taxlevel_phylum有三个参数,脚本较老,需要自己修改一下。
按门水平着色的GC含量vs丰度散点图
按Bin着色的GC含量vs丰度散点图
7. Bin定量
我们想知道这些单菌基因组草图(bin)在每个样品中的丰度。quant_bin模块帮你实现,它也依赖salmon来实现定量,估计每一个scaffold的丰度,以及bin的平均丰度。
实际时间1m39s,计算时间45m6s,使用调用了我的所有线程。此处可设置线程,但salmon仍尽可能多调用资源。
metawrap quant_bins -b BIN_REFINEMENT/metaWRAP_bins -t 8 -o QUANT_BINS -a ASSEMBLY/final_assembly.fasta CLEAN_READS/ERR*fastq
结果包括bin丰度热图QUANT_BINS/genome_abundance_heatmap.png。
如果想自己画图,原始数据位于QUANT_BINS/abundance_table.tab
Genomic bins ERR011349 ERR011348 ERR011347
bin.9 0.113912116828 35.851964987 39.8440491514
bin.10 0.273774684856 9.52869077293 39.988244574
参数说明:
(metawrap-env) [sam@localhost 20200819]$ metawrap quant_bins
metawrap quant_bins
------------------------------------------------------------------------------------------------------------------------
----- Non-optional parameters -b and -o were not entered -----
------------------------------------------------------------------------------------------------------------------------
Usage: metaWRAP quant_bins [options] -b bins_folder -o output_dir -a assembly.fa readsA_1.fastq readsA_2.fastq ... [readsX_1.fastq readsX_2.fastq]
Options:
-b STR folder containing draft genomes (bins) in fasta format
-o STR output directory
-a STR fasta file with entire metagenomic assembly (strongly recommended!)
-t INT number of threads
2.8 重组装
提纯的bin还可以通过再组装进一步改善结果。基于原始reads对结果优化,只有结果更优的情况,才对结果进行更新。
先调用bwa比对原始序列到bin,使用SPAdes不同参数下(宽松和严谨)精细组装,去除小于1500bp的叠连群,checkM评估,结果统计,绘图。
用时41m, 线程总用时178m
metawrap reassemble_bins -o BIN_REASSEMBLY -1 CLEAN_READS/ALL_READS_1.fastq -2 CLEAN_READS/ALL_READS_2.fastq -t 8 -m 800 -c 50 -x 10 -b BIN_REFINEMENT/metaWRAP_bins
结果统计见BIN_REASSEMBLY/reassembled_bins.stats,发现3个bin通过严格模式下得到优化,6个通过宽松模式得到改进,4个没有变化。
bin completeness contamination GC lineage N50 size binner
bin.10.orig 65.78 0.0 0.263 Bacteria 3045 1159966 NA
bin.7.strict 54.94 0.671 0.501 Clostridiales 3947 1474089 NA
bin.4.permissive 99.32 1.342 0.408 Clostridiales 72135 2088821 NA
改进的情况如何呢?要查看结果BIN_REASSEMBLY/reassembly_results.png,比对重组装前后的变化,N50、这完整度和污染率均有改进。
BIN_REASSEMBLY/reassembled_bins.png展示CheckM对bin评估结果的可视化。
2.9 bin物种注释
其实Bin提纯和重组装中,在checkM的stat文件中,就有物种的注释结果。但软件和数据库都不完善。
基于NCBI_nt和NCBI_tax数据库,我们使用 Taxator-tk 进行每条contig物种注释,再估计bin整体的物种。注释结果的准确性由参考数据库决定(如参考库中有错误,我们无法识别,只能将错就错)。
此步8线程用时12分钟。
# real 12m, user 84m
metawrap classify_bins -b BIN_REASSEMBLY/reassembled_bins -o BIN_CLASSIFICATION -t 8
注释结果见BIN_CLASSIFICATION/bin_taxonomy.tab
bin.1.orig.fa Bacteria;Firmicutes;Clostridia;Clostridiales
bin.5.orig.fa Archaea;Euryarchaeota;Methanobacteria;Methanobacteriales;Methanobacteriaceae;Methanobrevibacter;Methanobrevibacter smithii
bin.11.orig.fa Bacteria;Bacteroidetes;Bacteroidia;Bacteroidales;Bacteroidaceae;Bacteroides
注意物种注释层级不同,因为有些物种在数据库中没有近亲。
2.10 Bin功能注释
此步基于PROKKA进行基因注释。
# 4m5s
metaWRAP annotate_bins -o FUNCT_ANNOT -t 8 -b BIN_REASSEMBLY/reassembled_bins/
每个bin基因注释的gff文件见 FUNCT_ANNOT/bin_funct_annotations
head FUNCT_ANNOT/bin_funct_annotations/bin.1.orig.gff
NODE_75_length_31799_cov_0.983871 Prodigal:2.6 CDS 2866 3645 . - 0 ID=HMOHEJHL_00001;inference=ab initio prediction:Prodigal:2.6;locus_tag=HMOHEJHL_00001;product=hypothetical protein
NODE_75_length_31799_cov_0.983871 Prodigal:2.6 CDS 3642 4478 . - 0 ID=HMOHEJHL_00002;inference=ab initio prediction:Prodigal:2.6;locus_tag=HMOHEJHL_00002;product=hypothetical protein
NODE_75_length_31799_cov_0.983871 Prodigal:2.6 CDS 4606 5859 . - 0 ID=HMOHEJHL_00003;inference=ab initio prediction:Prodigal:2.6;locus_tag=HMOHEJHL_00003;product=hypothetical protein
基因蛋白和核酸序列见FUNCT_ANNOT/bin_translated_genes和 FUNCT_ANNOT/bin_untranslated_genes目录。PROKKA输出结果见 FUNCT_ANNOT/prokka_out.
五、报错
报错1:BLAST Database error: Error: Not a valid version 4 database.
(metawrap-env) [sam@g01 21]$ blastn -task megablast -num_threads 40 -db /data/database/metawrap/NCBI_nt/nt -outfmt '6 qseqid qstart qend qlen sseqid staxids sstart send bitscore evalue nident length' -query test.fasta
BLAST Database error: Error: Not a valid version 4 database.
解决办法:
blast的版本和数据库的版本不一致
wget -c ftp://ftp.ncbi.nlm.nih.gov/blast/executables/blast+/LATEST/ncbi-blast-2.10.1+-x64-linux.tar.gz
tar xzvfm ncbi-blast-2.10.1+-x64-linux.tar.gz
/data/software/blast/ncbi-blast-2.10.1+/bin
export PATH=/data/software/blast/ncbi-blast-2.10.1+/bin:$PATH
参考资料
个人公众号,比较懒,很少更新,可以在上面提问题,如果回复不及时,可发邮件给我: tiehan@sina.cn