宏基因組標準流程--metaWRAP

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").

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
禁止轉載,如需轉載請通過簡信或評論聯系作者。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,527評論 6 544
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,687評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事?!?“怎么了?”我有些...
    開封第一講書人閱讀 178,640評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,957評論 1 318
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,682評論 6 413
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 56,011評論 1 329
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,009評論 3 449
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,183評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,714評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,435評論 3 359
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,665評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,148評論 5 365
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,838評論 3 350
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,251評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,588評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,379評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,627評論 2 380

推薦閱讀更多精彩內容