1. metaWRAP簡介
[MetaWRAP](https://github.com/bxlab/metaWRAP "MetaWRAP")旨在成為一個易于使用的宏基因組數據分析軟件包,從頭到尾完成宏基因組分析的核心任務:序列質量控制、組裝、可視化、分類分析、提取基因組草圖(又稱分箱binning)和功能注釋。此外,metaWRAP將bin提取和分析提升到了一個新的層次(參見下面的模塊概述)。雖然沒有簡單的最佳方法來處理宏基因組數據,但在深入研究分析參數之前,metaWRAP是一種快速而簡單的方法。MetaWRAP可應用于多種環境,包括腸道、水和土壤微生物組(詳情請參閱MetaWRAP手冊)
> 宏基因組 ( Metagenome)(也稱微生物環境基因組Microbial Environmental Genome, 或元基因組)是由 Handelsman 等 1998 年提出的新名詞, 其定義為“the genomes of the total microbiota found in nature” , 即環境中全部微小生物遺傳物質的總和。它包含了可培養的和未可培養的微生物的基因。
?2. metaWRAP的分析模塊
通過`metawrap -h`命令可顯示metawrap命令的幫助信息,其中重點在于其能完成的[功能模塊](https://github.com/bxlab/metaWRAP/blob/master/Module_descriptions.md "功能模塊"),包括:
- read_qc # 數據質控模塊,包括去除宿主/污染序列。
- assembly # 拼接模塊,由短序列reads拼接成重疊群contigs。
- binning # 重疊群分箱模塊,將重疊群contigs根據四聯密碼子相似性分為不同的組,表示一個分類單元的基因組。
- bin_refinement # 分箱提煉模塊,根據metaBAT2,MaxBin2,CONCOCT三軟件的結果,整合最優分箱。
- reassemble_bins # 分箱重組裝模塊,根據分箱結果,將短序列reads重新組裝,以期優化組裝結果。
- quant_bins # 分箱豐度分析模塊。
- kraken # 短序列reads/重疊群contigs分類學注釋模塊。
- blobology # 數據可視化模塊。
- annotate_bins # 分箱基因功能注釋模塊。
- classfy_bins? ? # 分箱分類學注釋模塊。
metaWRAP 模塊的邏輯關系如下圖所示:
{.showpic}
其中,綠色板塊和黃色板塊代表數據,紅色板塊代表metaWRAP的分析模塊,灰藍板塊代表數據可視化結果。
數據流上按照以下邏輯關系組織:
**原始reads數據->質控后的clean reads數據->拼接后的重疊群contigs數據->分箱后的bins數據->分類學、基因功能等綜合分析結果
**
3. metaWRAP的使用
#### 3.0 數據準備
宏基因組數據按照來源可分為**自產數據**,**公共數據**和**模擬數據**。
##### 3.0.1. 自產數據
根據實驗設計,采集樣品,提取環境總DNA,送交測序服務公司測序。
##### 3.0.2. 公共數據
方法1:利用一般下載工具(需首先獲得數據資源的地址)
```shell
(sradownload) [user@server ~]# wget ftp.sra.ebi.ac.uk/vol1/fastq/ERR011/ERR5031889/ERR5031889_1.fastq.gz
(sradownload) [user@server ~]# wget ftp.sra.ebi.ac.uk/vol1/fastq/ERR011/ERR5031889/ERR5031889_2.fastq.gz?
(sradownload) [user@server ~]# gzip -d? *.gz
```
方法2:利用NCBI sratools下載
```shell
(sradownload) [user@server ~]# prefetch ERR5031889 # 根據給定的run accession下載
(sradownload) [user@server ~]# fastq_dump? --split-files ERR5031889.sra # 將sra格式轉為fastq
```
方法3:利用enaBrowserTools下載
```shell
(enatools) [user@server ~]# enaDataGet -a? -f 'fastq' -as? /path/to//key_files/aspera_settings.ini ERR3021563 # 參數-as : 指定Aspera密匙
```
##### 3.0.3. 模擬數據
[InSilicoSeq](https://github.com/HadrienG/InSilicoSeq "InSilicoSeq")是一個產生Illumina短序列數據的模擬器。主要用于模擬宏基因組樣本,也可用于從單個基因組產生測序數據。
```shell
(insilicoseq) [user@server ~]# iss generate --ncbi bacteria -U 30 --model miseq --output miseq_ncbi --n_reads 10m --cpus 24
# 從NCBI細菌數據庫中選取30個物種(隨機選取,也可以指定物種以及豐度)來生成10m reads的雙末端MiSeq數據,生成的兩個文件各含有500萬個reads。
```
> 模擬數據在方法開發,以及數據分析可重復性評價上有重要作用。除InSilicoSeq外,還有[CAMISIM](https://github.com/CAMI-challenge/CAMISIM "CAMISIM")可供選擇。
------------
> 以下分析流程基于InSilicoSeq的模擬數據
#### 3.1 數據質控 (read_qc模塊)
高通量測序的建庫過程中,由于各種物理化學原因或者污染,以及測序儀本身的問題,都會導致問題序列的產生。所以高通量測序數據的質控主要包括去除接頭adapter,過濾低質量reads,以及涉及宿主時,去除宿主來源的reads。
`metawrap read_qc`借助[Trim-galore](https://www.bioinformatics.babraham.ac.uk/projects/trim_galore/ "Trim-galore")(默認參數),根據接頭序列和PHRED評分 (閾值為20) 對原始數據raw data進行處理,以保留高質量的clean reads。然后clean reads會被[BMTagger](ftp://ftp.ncbi.nlm.nih.gov/pub/agarwala/bmtagger/ "BMTagger")比對到人基因組 (需要配置相應數據庫),并去除 (配對reads中如僅有一端比對到宿主序列上,也會被去除)。最后,[FASTQC](https://www.bioinformatics.babraham.ac.uk/projects/fastqc/ "FASTQC")用于生成raw reads和clean reads的質量報告,以評估reads質量改進。
命令:
```shell
(metawrap-env) [user@server ~]# metawrap read_qc -1 raw_data/10m_1.fastq -2 raw_data/10m_2.fastq -t 96 -o read_qc --skip-bmtagger
```
參數說明:
- -1 正向雙末端測序fastq文件
- -2 反向雙末端測序fastq文件
- -t 計算線程數
- -o 結果輸出目錄
- \--skip-trimming? # 跳過trim Galore的剪切
- \--skip-bmtagger? # 跳過去宿主操作
- \--skip-pre-qc-report? # 跳過對raw reads的FastQC評價
- \--skip-post-qc-report # 跳過clean reads的FastQC評價
> 非人類宿主源片段的去除,可參考<a href='/detail/86'>用Bowtie2去宿主序列</a>
------------
#### 3.2 拼接 (assembly模塊)
宏基因組研究主要有兩種策略,一種是當有參考基因組,直接將reads比對到參考基因組上進行研究。其次是當沒有參考基因組信息時,需要通過序列組裝,基因預測,后續物種注釋以及功能注釋。而多數情況下,宏基因組數據分析為無參分析。
`metawrap assembly`借助[metaSPAdes](https://github.com/ablab/spades "metaSPAdes")和[MegaHit](https://github.com/voutcn/megahit "MegaHit")完成對短序列reads的拼接,并提供<a href="/detail/22">QUAST</a>評估報告。
> metaSPAdes 優點是拼接質量高,但對計算資源的要求較高。
> megahit 優點是速度快、對計算資源要求低,但拼接質量不高。
命令:
```shell
(metawrap-env) [user@server ~]# metawrap assembly -1 read_qc/final_pure_reads_1.fastq -2 read_qc/final_pure_reads_2.fastq -o assembly_metaspades -m 600 -t 96 --metaspades
```
參數說明:
- -1 正向雙末端測序fastq文件 (clean reads)
- -2 反向雙末端測序fastq文件 (clean reads)
- -m 內存上限,內存消耗超過該設定時終止程序
- -t 計算線程數
- -l? 重疊群contig長度下限 (default=1000)
- -o 結果輸出目錄
- \--megahit? # 用megahit拼接 (default)
- \--metaspades? # 用metaSPAdes拼接,取默認kmer=21,33,55
主要的輸出結果包括:
- final_assembly.fasta 拼接的結果
- assembly_report.html? quast報告
> **當選擇較長的kmer時,對于豐度較高的物種基因組拼接有利;而當選擇較短的kmer時,對于豐度較低的物種基因組有利。**
------------
#### 3.3 分類學注釋 (kraken模塊)
[Kraken](http://ccb.jhu.edu/software/kraken/ "Kraken")是一種快速而準確的分類學分類工具,它將reads與包含微生物獨特kmers的數據庫進行匹配。
```shell
(metawrap-env) [user@server ~]# metawrap kraken -o kraken -t 96 -s 1000000 assembly/final_assembly.fasta
```
參數說明:
- -o 結果輸出目錄
- -t? 計算線程數
- -s reads抽樣數 (default=all)
- \--no-preload? 禁止提前讀取kraken數據庫到內存 (程序運行將較慢, 但降低資源需求)
主要的輸出結果包括:
- kronagram.html 注釋結果html報告 (下圖)
- final_assembly.kraken 每個contigs的注釋結果
- final_assembly.krona 注釋結果分類匯總
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-YztsQFs8-1630332900519)(/media/editor/1620307904_20210506213255360535.jpg)]{.showpic}
------------
#### 3.4 重疊群分箱 (binning模塊)
`metaWRAP binning`借用了四個分箱工具(實為三個),分別是[metabat2](https://bitbucket.org/berkeleylab/metabat/src/master/ "metabat2"),[concoct](https://github.com/BinPro/CONCOCT "concoct"),[maxbin2](https://sourceforge.net/projects/maxbin2/ "maxbin2")。
命令:
```shell
(metawrap-env) [user@server ~] # metawrap binning -o initial_binning -t 96 --metabat2 --maxbin2 --concoct -a assembly_megahit/final_assembly.fasta read_qc/final_pure_reads_*.fastq
```
參數說明:
- -a 拼接后的fasta文件
- -o 結果輸出目錄
- -t 計算線程數
- -m 內存使用量 (default=4)
- -l 分箱bin的長度下限 (default=1000bp). Note: metaBAT 的默認下限為1500bp
- \--metabat2? 用metaBAT2分箱
- \--metabat1? 用metaBAT分箱
- \--maxbin2? 用MaxBin2分箱
- \--concoct? 用CONCOCT分箱
- \--universal? 使用通用的標記基因 (將提升對古菌的分箱效果)
- \--run-checkm? 対分箱bin進行CheckM分析 (需要40GB+的內存)
- \--single-end? 非配對reads模式 (provide *.fastq files)
- \--interleaved 輸入reads文件中含有交叉存取的配對reads
主要輸出結果:
- concoct_bins/ maxbin2_bins/ metabat2_bins/? 三個目錄分別為三種軟件的分箱結果
- work_files 分析過程中產生的過程文件
------------
#### 3.5 分箱提煉 (bin_refinement模塊)
<a href='/detail/81'>CheckM</a>是一款對基因組質量進行評估的軟件。其首先基于完整的已測序細菌基因組作為參考基因組,構建基因組的進化樹,構建每個譜系(可以理解為一類物種)的單拷貝基因集(管家基因)。在使用時,將分箱bin與參考基因組一起建樹,基于進化關系找到bin的參考物種,然后結合參考物種的單拷貝基因集,計算兩個重要指標:完整度和污染度。獲得每個bin的污染度、完整度信息后,然后通過bin_refinement模塊挑選高質量的bins進行后續分析。
> 完整度 (Completeness):Bin基因與對應SCGs相比,基因數量是否完整,取值[0,100%],數值越大,表示Bin質量越好;
> 污染度 (Contamination):Bin基因包含多個物種的SCGs,即一個Bin存在多個物種的程度,取值[0,100%],數值越小,表示Bin質量越好。
命令:
```shell
(metawrap-env) [user@server ~] # metawrap bin_refinement -o bin_refinement -t 96 -A initial_binning/metabat2_bins/ -B initial_binning/maxbin2_bins/? -C initial_binning/concoct_bins/ -c 80 -x 10
```
參數說明:
- -o 結果輸出目錄
- -t 計算線程數
- -m 內存使用量 (default=40)
- -A / -B / -C? 分別指向三種分箱結果
- -c? 完整度閾值
- -x? 污染度闕值
- \--skip-refinement 不使用binning_refiner產生bin集合的交叉混合。如輸入bin集合為A,B,C;binning_refiner將產生AB, BC, AC和ABC。
- \--skip-checkm? 跳過CheckM分析
- \--skip-consolidation 選擇提煉迭代中的最優版本
- \--keep-ambiguous? 當重疊群出現在不同的bin時,在各bin中保留 (default: 僅在最優bin中保留)
- \--remove-ambiguous? 當重疊群出現在不同的bin時,在各bin中都刪除 (default: 僅在最優bin中保留)
- \--quick 快速模式
結果目錄bin_refinement中有三個原始bin的結果與統計:concoct_bins/ concoct_bins.stats concoct_bins.contigs; maxbin2_bins/ maxbin2_bins.stats maxbin2_bins.contigs;metabat2_bins/ metabat2_bins.stats metabat2_bins.contigs。metawrap_80_10_bins/ 目錄包含最終分箱結果。
`.stats`文件包含每個bin的統計:完整度、污染度、GC含量、分類信息、N50、大小和來源。
```shell
(metawrap-env) [user@server ~] # head -n 3 metawrap_80_10_bins.stats
bin? ? completeness? ? contamination? GC? ? ? lineage? ? ? ? N50? ? size? ? binner
bin.21? 100.0? ? ? ? ? 0.0? ? ? ? ? ? 0.295? Mycoplasma? ? ? 430267? 857632? binsA
bin.1? 99.81? ? ? ? ? 2.347? ? ? ? ? 0.722? Streptomyces? ? 350100? 8215554? binsAC
```
提純的結果在 bin_refinement/figures/ 目錄中的圖片,有eps圖和png圖。
------------
#### 3.6 blobology
`metawrap blobology`模塊,將contig的GC含量和豐度進行散點圖可視化,并對不同分箱bin進行著色。
命令:
```shell
(metawrap-env) [user@server ~] # metawrap blobology -a assembly/final_assembly.fasta -o blobology -t 96 --bins bin_refinement/metawrap_80_10_bins read_qc/final_pure_reads_*.fastq
```
------------
#### 3.7 分箱豐度分析 (quant_bins模塊)
`metawrap quant_bins`分箱豐度分析可以獲取每個分箱bin在每個樣品中的豐度。它依賴[Salmon](https://salmon.readthedocs.io/en/latest/salmon.html "Salmon") (用于轉錄組和宏基因組分析) 來實現定量,估計每一個重疊群contig的豐度,然后計算出bin在不同樣本中的平均豐度。
命令:
```shell
(metawrap-env) [user@server ~] # metawrap quant_bins -b bin_refinement/metawrap_80_10_bins? -t 96 -o quant_bins -a assembly/final_assembly.fasta read_qc/final_pure_reads_*.fastq
```
參數說明:
- -b 分箱bins的存放目錄
- -o 結果輸出目錄
- -a 拼接后的fasta文件
- -t 計算線程數
主要輸出結果:bin_abundance_table.tab,bins的豐度表。
> 由于本次分析所用的模擬數據僅有一組,相當于一個樣本 (final_pure_reads_1.fastq和final_pure_reads_2.fastq),實際分析中如有多個樣本,按順序將不同樣本的reads fastq文件寫在命令之后即可。
------------
#### 3.8 分箱重組裝 (reassemble_bins模塊)
提純之后的bin還可以通過重組裝進一步改善結果。`metawrap reaseemble_bins`模塊先調用[bwa](http://bio-bwa.sourceforge.net/ "bwa")將原始reads比對到各個bins,然后進行重組裝。當只有拼接結果得到提升時,才對結果進行更新。
命令:
```shell
(metawrap-env) [user@server ~] # metawrap reassemble_bins -o reassemble_bins -1 read_qc/final_pure_reads_1.fastq -2 read_qc/final_pure_reads_2.fastq -t 96 -m 600 -c 80 -x 10 -b bin_refinement/metawrap_80_10_bins
```
參數說明:
- -1 正向雙末端測序fastq文件 (clean reads)
- -2 反向雙末端測序fastq文件 (clean reads)
- -b? bin_refinement 提純之后bins所在目錄
- -o 結果輸出目錄
- -t 計算線程數
- -m 內存使用量 (default=40)
- -c? bin 完整度闕值
- -x? bin 污染度闕值
- -l contig長度下限 (default=500)
- \--strict-cut-off? reads嚴格比對時允許的SNPs數上限 (default=2)
- \--permissive-cut-off? reads松弛比對時允許的SNPs數上限 (default=5)
- \--skip-checkm? 跳過CheckM分析
- \--parallel? 以并行方式運行spades,但每個線程僅針對一個bin
結果文件說明:
- original_bins 原始的bins
- original_bins.stats 原始bins的完整度、污染度、GC等統計信息
- reassembled_bins 重組裝的bins
- reassembled_bins.stats 重組裝的bins的完整度、污染度、GC等統計信息
此外還有,`reassembly_results.png `展示重新組裝之后N50,完整度和污染度的變化。
以及`reassembly_bins.png `展示CheckM對bin評估結果的可視化圖。
#### 3.9 分箱分類學注釋 (classify_bins模塊)
`metawrap classify_bins`模塊在NCBI_nt和NCBI_tax數據庫基礎上,使用工具[Taxator-tk](https://github.com/fungs/taxator-tk "Taxator-tk")對每條contigs進行分類學注釋,然后再估計bins的分類。注釋結果的準確性也是由參考數據庫決定的。
命令:
```shell
(metawrap-env) [user@server ~] # metawrap classify_bins -b reassemble_bin/reassembled_bins -o clssify_bin -t 8
```
結果文件說明:
```shell
(metawrap-env) [user@server ~] # head bin_taxonomy.tab
bin.20.orig.fa? Bacteria;Firmicutes;Clostridia;Eubacteriales;Clostridiaceae;Clostridium;Clostridium kluyveri
bin.14.orig.fa? Bacteria;Firmicutes;Bacilli;Bacillales;Staphylococcaceae
bin.7.orig.fa? Bacteria;Proteobacteria;Betaproteobacteria;Burkholderiales;Burkholderiaceae;Burkholderia
bin.19.orig.fa? Bacteria;Actinobacteria;Actinomycetia;Micrococcales;Micrococcaceae
bin.21.orig.fa? Bacteria;Tenericutes;Mollicutes;Mycoplasmatales;Mycoplasmataceae;Mycoplasmopsis;Mycoplasma agalactiae
bin.3.orig.fa? Bacteria;Proteobacteria;Gammaproteobacteria;Alteromonadales;Pseudoalteromonadaceae
bin.5.orig.fa? Bacteria;Firmicutes;Bacilli;Lactobacillales;Streptococcaceae;Streptococcus;Streptococcus thermophilus
bin.10.orig.fa? Bacteria;Actinobacteria;Actinomycetia;Corynebacteriales;Corynebacteriaceae;Corynebacterium;Corynebacterium pseudotuberculosis
bin.13.orig.fa? Bacteria;Proteobacteria;Epsilonproteobacteria;Campylobacterales;Thiovulaceae;Sulfurimonas;Candidatus Sulfurimonas baltica
bin.18.orig.fa? Bacteria;Tenericutes;Mollicutes;Mycoplasmatales;Mycoplasmataceae;Mycoplasma;Mycoplasma neurolyticum
```
------------
#### 3.10 分箱基因功能注釋 (annotate_bins模塊)
`metawrap annotate_bins`利用<a href='/detail/17'>Prokka</a>進行基因功能注釋。
命令:
```shell
(metawrap-env) [user@server ~] # metaWRAP annotate_bins -o annotate_bins -t 96 -b reassemble_bin/reassembled_bins/
```
結果文件說明:
- bin_funct_annotations? prokka完成的gff文件
- bin_translatedgenes? 翻譯后的基因蛋白序列
- bin_untranslated_genes 未翻譯的核苷酸序列
- prokka_out? prokka原始輸出結果
### 4. 參考文獻
> Uritskiy GV, DiRuggiero J, Taylor J. MetaWRAP-a flexible pipeline for genome-resolved metagenomic data analysis. Microbiome. 2018 Sep 15;6(1):158. doi: [10.1186/s40168-018-0541-1](http://doi.org/10.1186/s40168-018-0541-1 "10.1186/s40168-018-0541-1").