---
# System prepended metadata

title: Qiime2分析

---

# Qiime2環境安裝

**1. 下載QIIME 2 conda配置檔.yml:**
```
wget https://data.qiime2.org/distro/core/qiime2-2023.5-py38-linux-conda.yml
```
#

**2. 編輯配置檔加入nextflow與krona**
```
- nextflow=23.04.1
- krona=2.8.1
```
#

**3.啟動conda並建立環境**
```
source /storage_1/KF07453/miniconda3/bin/activate
conda env create -n qiime2 --file qiime2-2023.5-py38-linux-conda.yml
```
#
    
    
**4. 顯示所有環境並啟動環境**
```
conda env list
conda activate qiime2
```
#

**5.環境設定**
將新建立的qiime2環境的binary執行檔路徑寫入環境變數中
先進入python環境--->python
```
import os
Add_Binarry_Path='~/.conda/envs/HMP_project/bin/'
os.environ['PATH']=Add_Binarry_Path+':'+os.environ['PATH']
exit()
```
#
**6.建立專案目錄**
project_folder = "mouse_tutorial"
```
mkdir -p ./mouse_tutorial/seqs
mkdir -p ./mouse_tutorial/qza
mkdir -p ./mouse_tutorial/qzv
cd mouse_tutorial
```


# QIIME2分析-資料
Qiime2為用來分析微生物次世代基因定序資料的開源軟體

**1. 測試資料說明**
本次測試資料源自於Qiime2官網文件的Parkinson's Mouse Tutorial教學

使用之資料源自於Sampson et al., 2016的研究
(https://www.cell.com/cell/fulltext/S0092-8674(16)31590-2?_returnURL=https%3A%2F%2Flinkinghub.elsevier.com%2Fretrieve%2Fpii%2FS0092867416315902%3Fshowall%3Dtrue)
此實驗證實了糞便之微生物菌相對Parkinson’s Disease (PD)症狀發展有所影響

本次測試資料來自其中部分實驗資料，探討移植之菌相來源對於小鼠之微生物菌相分布之影響，而菌相分別源自健康對照組及PD患者之糞便微生物

**2.下載測試資料**
```
wget \
-O "demultiplexed_seqs.zip" \
"https://data.qiime2.org/2023.5/tutorials/pd-mice/demultiplexed_seqs.zip"
```

**3.將測試資料解壓縮並移動到seq資料夾中**
```
unzip demultiplexed_seqs.zip
mv demultiplexed_seqs/* seqs
```

**4.建立Manifest樣本清單檔案(manifest.tsv)**
Manifest.tsv目的是告訴Qiime2 .fastq.gz的路徑在哪裡，以及該檔案所對應的樣本名稱

可使用manifest.py生成manifest.tsv，或使用excel製作
結果會顯示:
manifest.tsv already generate in /storage_1/KF07453/mouse_tutorial/

查看manifest.tsv的前10行
```
head -n 10 manifest.tsv
```
![messageImage_1731046476617](https://hackmd.io/_uploads/BJaD3QiZyx.jpg)


**5.下載metadata詮釋資料**
metadata記錄實驗各樣本之不同特徵
若需要更改metadata.tsv，可用excel進行修改
```
wget \
-O "metadata.tsv" \
"https://data.qiime2.org/2023.5/tutorials/pd-mice/sample_metadata.tsv" 
```

查看metadata.tsv
```
head -n 10 metadata.tsv
```
![messageImage_1731047615281](https://hackmd.io/_uploads/HylYAx4iZke.jpg)


columns儲存樣本名稱(sample_name)，barcode，實驗小鼠編號(mouse_id)，基因型(genotype)，籠子編號(cage_id)，菌相來源(donor)，人類健康狀態(donor_status)，微生物菌相移植天數(days_post_transplant)，小鼠基因型與人類健康狀態(genotype_and_donor_status)。
Row 2紀錄每個特徵的屬性，樣本名稱(column 1)會用#q2:types表示，其餘的依照類別型(categorical)或數值型(numeric)進行分類。接著每個row代表一個樣本
#

# QIIME2 分析
**1.輸入原始資料，儲存成qza格式**

qza: Qiime2中儲存資料的格式，任何分析時input皆為qza檔案

qzv: 與qza對應的格式，供視覺化的檔案，可上傳至qiime2 view上查看結果




```
qiime tools import \
--type "SampleData[SequencesWithQuality]" \
--input-format SingleEndFastqManifestPhred33V2 \
--input-path ./manifest.tsv \
--output-path ./qza/demux_seqs.qza

'''
--type "SampleData[PairedEndSequencesWithQuality]" \
--input-format PairedEndFastqManifestPhred33V2 \
--input-path ./manifest.tsv \
--output-path ./qza/demux_seqs.qza
'''
```

![messageImage_1731375183564](https://hackmd.io/_uploads/Skg_x4xMkx.jpg)

* qiime tools import: 用此命令將資料輸入
* --type: 資料的形式，
單端序列格式:SampleData[SequencesWithQuality]
成對定序格式:SampleData[PairedEndSequencesWithQuality]
* --input-format:Fastq格式中序列品質的編碼方式，主流為Phred33V2，其次還有Phred64V2
若資料為成對定序並以Phred33V2進行編碼，則指定--input-format PairedEndFastqManifestPhred33V2 
* --input-path:manifest之檔案路徑
* --output-path:qza檔案輸出的位置，此範例設定輸出在當前目錄下，並命名為demux_seqs.qza
#

**2.檢視樣本的定序深度(sequencing depth)與序列的品質(quality score)**

```
qiime demux summarize \
--i-data ./qza/demux_seqs.qza \
--p-n 20000 \
--o-visualization ./qzv/demux_seqs.qzv
```
![1731375741056](https://hackmd.io/_uploads/SJc9fNgGke.jpg)


* --i-data: demux_seqs.qza的檔案位置
* --p-n: 從所有序列中隨機選擇的序列數量，預設為10000，選中的序列用以生成序列品質分布圖(quality plot)
* --o-visualization: qzv檔案的輸出位置，命名為demux_seqs.qzv

將demux_seqs.qzv檔案上傳到qiime2 view(https://view.qiime2.org/)進行視覺化

從quality plot可判斷序列的整體品質分布，並決定是否要進行修剪(trimmed)，以及從哪個位置進行修剪(position)
將游標移動到box，會顯示該位置的seven-number summary
通常定序剛開始與結束的兩端品質都會比較差，若序列頭尾品質低於20可考慮切除

![messageImage_1731376246562](https://hackmd.io/_uploads/B1ltSVgM1l.jpg)

![messageImage_1731376272578](https://hackmd.io/_uploads/S1aKHNlGyg.jpg)



Q = -10log10p（p表示測序的錯誤率，Q表示鹼基質量分數）

Q Value,正確率,錯誤率
10, 90%, 10%
20, 99%, 1%
30, 99.9%, 0.1%

#

**3.序列品質控制(DADA2)**
DADA2套件: 可對序列進行修剪(trimming)、過濾(filters)、降噪(denoises)、合併(merge)、去除重疊(dereplicates)

因上圖quality plot顯示在任何位置，Q value幾乎大於20，定序品質良好，因此保留完整序列(150 bases)

```
qiime dada2 denoise-single \
--i-demultiplexed-seqs ./qza/demux_seqs.qza \
--p-trim-left 0 \
--p-trunc-len 150 \
--p-n-threads 0 \
--o-denoising-stats ./qza/dada2_stats.qza \
--o-table ./qza/dada2_table.qza \
--o-representative-sequences ./qza/dada2_rep_set.qza
```



![messageImage_1731376839960](https://hackmd.io/_uploads/SyIhuElMJl.jpg)


*qiime dada2 denoise-single: 定序品質管控指令，輸出3個qza檔案
*--i-demultiplexed-seqs: 輸入之序列路徑
*--p-trim-left: 序列起始端切多少，預設是0
*--p-trunc-len: 序列剪切後的總長度，若單一序列低於此設定長度則捨棄這一序列
*--p-n-threads: 使用的CPU數量，設定0則使用所有的CPU(預設為1)
*--o-denoising-stats: 輸出檔案的位置，使用dada2各個階段控制序列的簡單統計(statistics)。檢查各個控管階段有無不尋常的篩選掉大量序列，以評估是否剪切過多
*--o-table: dada2處理後之特徵表(feature table)，包含了每個樣本中的微生物特徵（如ASVs或OTUs）的計數信息，以Feature ID表示描述這些特徵在不同樣本中的存在。特徵表對於後續的微生物群落分析非常重要，它可以被用來比較不同樣本之間的微生物組成，進行多樣性分析
*--o-representative-sequences: 各個Feature ID所對應的代表序列(representative sequences)


*qiime dada2 denoise-paired: 雙尾定序品質控管指令
*--p-trunc-len-f ...: forward-序列剪切後的總長度，若單一序列低於此設定長度則捨棄這一序列
*--p-trunc-len-r ...: reverse-序列剪切後的總長度，若單一序列低於此設定長度則捨棄這一序列

#================================================================

經序列品質管控後，會將相同的序列分成1組ASV（amplicon sequence variant)，並從各ASVs中選出一條代表該群的序列(Representative sequences)，並給予一串標號(Feature IDs)


ASV(擴增子序列變異) vs OTU(操作分類單元)

OTU: 跟據序列的相似性，以一定的相似度把序列歸集到一起。一般用的相似度是 97% 或 99%，產生出來的OTU稱為OTU97或 OTU99。
缺點: 敏感度不足，一個 OTU 中可能包含有不同的實際物種；再者，如果序列因為定序過程產生錯誤，會造成不可信賴的聚類結果

ASV: 針對定序時的錯誤來做修正。以目前最主流的 DADA2 演算法來說，就是根據 Illumina 定序的錯誤模型，藉由演算法與非監督式學習方法 selfConsist 來去除因為定序所造成的序列錯誤，而產出 ASV。因此相較於 OTU，ASV 的區分精細度就比較高。

#================================================================

#

**4.qza轉成qzv視覺化**
(1)表格化降噪統計結果
```
qiime metadata tabulate \
--m-input-file ./qza/dada2_stats.qza  \
--o-visualization ./qzv/dada2_stats.qzv
```

![messageImage_1731379348780](https://hackmd.io/_uploads/rknolHxMye.jpg)

表格化統計結果，input(輸入數據)；filtered(過濾後的數據)；denoised(降噪後的數據)；non-chimeric(去除嵌合體後的數據)


(2)特徵表結果
查看每個樣本品質控管後的特徵量，以及每個特徵頻率和其在樣本中出現的次數

```
qiime feature-table summarize \
--i-table ./qza/dada2_table.qza \
--m-sample-metadata-file ./metadata.tsv \
--o-visualization ./qzv/dada2_table.qzv
```

!! 若有出現以下Error，代表**樣本名稱與metadata.tsv不同**，主要為上傳到qiime2時，sample-id多了_和後面的數字

解決方法：可將qzv資料夾中的dada2_stats.qzv上傳到qiime2 view，將視覺化的檔案下載(download metadata TSV file)，並用excel打開，複製sample-id並取代原本的metadata.tsv的sample-name


![messageImage_1731390076955](https://hackmd.io/_uploads/rJBjcvgzkx.jpg)

最後再執行一次指令即可

![messageImage_1731390737770](https://hackmd.io/_uploads/HJeN6PlGJx.jpg)



(3)特徵ID的代表序列

```
qiime feature-table tabulate-seqs \
--i-data qza/dada2_rep_set.qza \
--o-visualization qzv/dada2_rep_set.qzv
```

![messageImage_1731389391549](https://hackmd.io/_uploads/BkHy_PlMyx.jpg)


**5.物種分類(Taxonomy assignment)**
使用機器學習分類器進行物種分類

* 分類器(classifier): 用以分類菌種之機器學習模型
* 微生物序列資料庫(microbiota database): 用以訓練分類器之資料來源，常見的微生物資料庫，分別為Greengenes, SILVA和RDP，下圖擷取自https://ithelp.ithome.com.tw/articles/10298358
* 已訓練的分類器:有訓練好的分類器模型可直接使用(https://docs.qiime2.org/2023.5/data-resources/#taxonomy-classifiers-for-use-with-q2-feature-classifier)


![下載](https://hackmd.io/_uploads/SJQyADlMJe.png)

(1)下載物種分類器

* 本次分析的序列為16S V4，將使用qiime2提供之Silva 138 99% OTUs from 515F/806R region of sequences分類器，可透過`wget`下載分類器，並命名為`silva-v4-nb-classifier.qza`

```
wget \
-O "qza/silva-V4-nb-classifier.qza" \
"https://data.qiime2.org/2023.5/common/silva-138-99-515-806-nb-classifier.qza"
```
![messageImage_1731392875243](https://hackmd.io/_uploads/Bk15B_ef1x.jpg)


(2)進行物種分類

```
qiime feature-classifier classify-sklearn \
--i-classifier qza/silva-V4-nb-classifier.qza \
--i-reads qza/dada2_rep_set.qza \
--o-classification qza/taxonomy.qza
```

* qiime feature-classifier classify-sklearn: 透過分類器對representive sequences進行分類之指令
* --i-classifier: 分類器位置
* --i-reads: representive sequences之檔案位置
* --o-classification: 輸出結果之taxonomy.qza

(3)將分類結果視覺化
```
qiime metadata tabulate \
--m-input-file qza/taxonomy.qza \
--o-visualization qzv/taxonomy.qzv
```

![messageImage_1731393945247](https://hackmd.io/_uploads/SJTiY_lM1g.jpg)

![messageImage_1731394015259](https://hackmd.io/_uploads/Hkfz5dgGke.jpg)


* Taxon 呈現各階層的分類結果 (界d、門p 綱c、目o、科f、屬g、種s)
* 若是出現許多顯示 Unassigned 或多數無法到 G (Genus) / S (Species)， 就要考慮分類器是否合適。由於使用16S V4定序，片段較短，許多分類結果只能達到G階層。


#
**6.分類柱狀圖**


```
qiime taxa barplot \
--i-table qza/dada2_table.qza \
--i-taxonomy qza/taxonomy.qza \
--m-metadata-file metadata.tsv \
--o-visualization qzv/taxa-bar-plots.qzv
```

![messageImage_1731393847169](https://hackmd.io/_uploads/rkMIFOgG1g.jpg)

* Download: 可選擇資料之下載方式，圖片(柱狀圖bar or 資料標籤legand)或是csv(儲存不同樣本之metadata及在特定分類層級下，各微生物出現頻率)
* Bar Width: 可調整每個bar的寬度
* Taxomic Level: 可選擇繪製之分類層級(界1 門2 綱3 目4 科5 屬6 種7)
* Color Palette: 可選擇bar繪製顏色
* Sort Sample By: 可選擇樣本依照metadata分類之排序依據


![messageImage_1731394226927](https://hackmd.io/_uploads/ByKVjugMJl.jpg)


不同樣本之分類柱狀圖，顯示不同樣本之微生物相對頻率(Relative Frequency)，也可以想成是微生物於樣本中之相對豐度(Relative Abundence)。顏色代表微生物分類，分類層級將依照使用者自行選擇進行繪製(這邊是選擇level 4 -->目)，游標移動至柱狀圖上將顯示詳細微生物在樣本中佔比於圖片上方
![messageImage_1731394244440](https://hackmd.io/_uploads/S1N5s_gfyl.jpg)

#
**7.互動式動態分類圓餅圖(krona)**

使用krona套件，需另外透過conda安裝korna

`conda install -c bioconda krona`

並透過pip安裝q2-krona
`pip install git+https://github.com/kaanb93/q2-krona.git`


```
qiime krona collapse-and-plot \
--i-table qza/dada2_table.qza \
--i-taxonomy qza/taxonomy.qza \
--o-krona-plot qzv/krona.qzv
```

* qiime krona collapse-and-plot: 繪製動態分類圓餅圖指令
* --i-table:輸入之feature table qza檔案位置
* --i-traxonomy: 輸入之taxonomy.qza檔案位置
* --o-krona-plot: 輸出之krona.qzv位置

![messageImage_1731395825603](https://hackmd.io/_uploads/HJF-ZtlGyl.jpg)


圓餅圖表示單一樣本中微生物在不同階層之分布，可以透過游標按住並滑動來觀察特定分類階層下的詳細分類
最內層代表界層級之分類，最外圍則為種層級之分類(根據taxonamy之分類解析度，最外層不一定是種)

![messageImage_1731396135267](https://hackmd.io/_uploads/H12NzKeGJg.jpg)


**8.繪製熱圖**

```
qiime taxa collapse \
--i-table qza/dada2_table.qza \
--i-taxonomy qza/taxonomy.qza \
--p-level 4 \
--o-collapsed-table qza/col_table_4.qza
```

* qiime feature-table heatmap: 繪製熱圖之指令
* --o-visualization qzv: 輸出之heatmap位置
* --p-color-scheme: 指定heatmap的配色(https://matplotlib.org/stable/users/explain/colors/colormaps.html)
* --p-cluster: 分群，可以選擇`features`、`samples`、`both`、`none`，根據序列/樣本/兩者/都不要


![messageImage_1731396660854](https://hackmd.io/_uploads/HkNUNFgGkg.jpg)

進行聚類(clustering)之結果

![下載 (1)](https://hackmd.io/_uploads/SytyLYWGyl.png)

這張heatmap是依照samples進行cluster，並且依照level4進行collaspe的結果
是根據樣本進行cluster的，因此若是樣本有依不同處理進行分組的話，就能快速地看出處理組之間的菌像分布較相似
若是依照features進行cluster圖左的黑線則會依照feature相似性顯示在heatmap上方

#

**9.繪製親緣樹(phylogenetic tree)**

分為rooted tree以及unrooted tree

rooted tree: 物種起源皆自同一個點，可看出演化的方向性，適合應用在觀察演化過程中不同物種之演化關係

unrooted tree: 定義演化的方向與路徑，著重在分類群之間的關係

繪製親緣數除了供視覺化參考外，後續多樣性分析的部分指標會需要用rooted tree來考慮菌種間的親緣關係(如Faith's Phylogenetic Diversity和UniFrac distance)

樹的製作主要可分為兩種方法:
* **fragment-insertion**: 將representative sequences依照序列插入已知的參考親緣樹中，需較多的計算和時間成本
* **align-to-tree**: 將序列進行alignment，接著透過遮罩(masks)，去除高度變異的位置，最後繪製親緣樹

qiime2官方教學文件解釋，fragment-insertion在對短片段Illumina序列進行親緣樹時可能會比傳統的基於序列比對的方法表現更好，儘管會需要更多的計算資源，因此本範例使用fragment-insertion方法繪製親緣樹

(1)下載參考樹

```
wget \
-O "qza/sepp-refs-gg-13-8.qza" \
"https://data.qiime2.org/2023.5/common/sepp-refs-gg-13-8.qza"
```

![messageImage_1731467589670](https://hackmd.io/_uploads/HJMuFqWzyx.jpg)


(2)進行親緣樹比對

```
qiime fragment-insertion sepp \
--i-representative-sequences ./qza/dada2_rep_set.qza \
--i-reference-database qza/sepp-refs-gg-13-8.qza \
--o-tree ./qza/rooted_tree.qza \
--o-placements ./qza/tree_placements.qza \
--p-threads 80
```

* qiime fragment-insertion sepp: 透過sepp方法進行fragment-insertion之指令
* --i-representative-sequences: 輸入之representative sequences qza檔案位置
* --i-reference-database: 輸入之參考樹位置
* --o-tree: 輸出之tree位置及名稱
* --o-placements: 輸出之插入結果之文件
* --p-thread: 使用之cpu核心數量，可透過`nproc`查詢最大CPU可使用量

![messageImage_1731468325796](https://hackmd.io/_uploads/rkkHhc-GJg.jpg)


**10.多樣性分析**
多樣性分析分為alpha及beta多樣性

* alpha多樣性: 反應**單一樣本(或1組樣本)內之多樣性**，不涉及個體之間的比較
--> 物種豐富度(richness)、物種均勻度(evenness)

* beta多樣性: 組間比較(兩組/多組間菌種分布差異程度)
以下3種多樣性的指標的視覺化結果可分為distance和pcoa(以emperor)

--> bray curtis: 考量物種組成也採計各物種的數量(abundance)-->物種共有的個體數與兩群集規模平均的比值
--> jaccard: 只比較兩群及共有物種的數量(richness)-->交集/聯集，數值越高，樣本相似越高
--> unifrac: 特定群集在系統發生樹上獨佔節點的比例，是評估群集中物種親緣關係的多樣性指標，基於物種的進化關係，判斷樣本間的相似程度
又分為weighted和unweighted，對應是否採計族群規模進行加權

#

**11.Alpha多樣性之稀疏曲線(rarefaction curve)繪製**

稀疏曲線的繪製: 需有各樣本ASVs資訊(feature table) + 各ASVs間的親緣關係(phylogenetic tree)

(1)對各樣本進行標準化
經標準化後，才能比較不同樣本之間多樣之差異

```
qiime diversity alpha-rarefaction \
--i-table ./qza/dada2_table.qza \
--i-phylogeny qza/rooted_tree.qza \
--m-metadata-file ./metadata.tsv \
--o-visualization ./qzv/alpha_rarefaction_curves.qzv \
--p-min-depth 1 \
--p-max-depth 4996
```

![messageImage_1731469397158](https://hackmd.io/_uploads/ryrOli-Myg.jpg)

* qiime diversity alpha-rarafaction: 繪製alpha rarefaction之指令
* --i-table: 輸入之feature table qza檔案之位置
* --i-phylogeny: 輸入之rooted tree qza檔案位置，要輸入親緣樹才能計算Faith's phylogenetic diversity
* --i-metadata-file: 輸入之metadata之位置
* --o-visualization: 輸出之qzv結果位置
* --p-min-depth: 繪製稀疏曲線之最小測序深度，預設為1
* --p-max-depth: 繪製稀疏曲線之最大測序深度，可查看feature table qzv設定樣本之最大測序深度(此範例為4996)
#

* Metrix: 可選擇alpha多樣性指標
樣本中觀察到物種數量observed_features在特定採樣深度下，觀察到的ASVs數量
* Shannon多樣性指標和系統發育多樣性faith_pd: 皆為多樣性指數，計算樣本之物種豐富度(richness)和均勻度(evenness)，差別在於faith_pd計算時有考慮到物種間親緣關係(phylogenetic tree)
* Sample Metadata column: 繪製稀疏曲線樣本分組方式




![messageImage_1731477925452](https://hackmd.io/_uploads/HJ5wXabG1l.jpg)

* X軸: 採樣深度(sampling depth)
* y軸: 多樣性指標
* 可透過稀疏曲線確認**樣本中的序列數是否足以代表整個樣本**，取樣深度代表每一輪無放回抽樣時所取出的菌種觀察值數量，隨採樣深度提高，Y軸之多樣性指標也趨於飽和(斜率接近於0)，即可推論樣本中的序列數足以代表整個樣本

![messageImage_1731479510357](https://hackmd.io/_uploads/Hyoku6bGJl.jpg)

* 上圖顯示每個取樣深度下每個分組的樣本數，有助於確定在特定取樣深度下的樣本損失
* 深度的選擇在於最小化序列損失的同時，最大化保留用於多樣性分析的序列，本範例將使勇每個樣本2000個序列的取樣深度進行分析

![messageImage_1731479681675](https://hackmd.io/_uploads/H1OqO6ZMJx.jpg)

* qiime diversity core-metrics-phylogenetic: 繪製alpha多樣性之指令
* --i-table: 輸入之feature table qza檔案之位置
* --i-phylogeny: 輸入之rooted tree qza檔案位置，有輸入親緣樹才能計算Faith's phylogenetic diversity
* --m-metadata-file: 輸入之metadata之位置
* --p-sampling-depth: 取樣深度
* --output-dir: 將所有結果輸出成一個資料夾

**12.Alpha多樣性**
alpha多樣性使用faith_pd，jaccard和bray curtitis的視覺化qzv檔案已存在core-metrics-results資料夾中

```
qiime diversity alpha-group-significance \
--i-alpha-diversity ./core-metrics-results/faith_pd_vector.qza \
--m-metadata-file ./metadata.tsv \
--o-visualization ./qzv/faiths_pd_statistics.qzv
```

![image](https://hackmd.io/_uploads/SyI_f0WG1g.png)


* qiime diversity alpha-group-significance: 視覺化alpha多樣性之指令
* --i-alpha-diversity: 輸入之alpha多樣性檔案位置
* --m-metadata-file: 輸入之metadata之位置
* --o-visualization: 輸出之檔案位置

![messageImage_1731483085016](https://hackmd.io/_uploads/Bk8k8A-Gke.jpg)

* 圖片上方Column為分組依據
* 顯著差異: 探討不同條件下分組之組間差異，並且進行成對比較(pairwise)檢測差異是否顯著

將core-metrics-results資料中之bray_curtis_emperor.qzv透過emperor套件視覺化









#

**13.Beta多樣性視覺化**

```
qiime diversity beta-group-significance \
--i-distance-matrix core-metrics-results/unweighted_unifrac_distance_matrix.qza \
--m-metadata-file metadata.tsv \
--m-metadata-column genotype_and_donor_status \
--p-pairwise \
--o-visualization qzv/unweighted-unifrac-genotype_and_donor_status-significance.qzv
```

![messageImage_1731483937276](https://hackmd.io/_uploads/H1UVtAWM1g.jpg)

* qiime diversity beta-group-significance: 視覺化beta多樣性之指令
* --i-distance-matrix: 輸入之beta多樣性(for distance)檔案位置
* --m-metadata-file: 輸入之metadata位置
* --m-metadata-column: 樣本分組依據
* --p-pairwise: 進行成對比較(pairwise)，預設只有ANOVA
* --o-visualization: 輸出檔案之位置

![image](https://hackmd.io/_uploads/HyYapA-fyg.png)
分組(donor type)之間(PERMANOVA, Permutational analysis of variance)分析結果
上圖按照genotype_and_donor_status分組的4組小鼠之間微生物beta多樣性(distance)存在統計上之顯著差異



* PERANOVA: 是一種比較兩分組之間的距離，為一種無母數統計的分析方法
* Number of permutations: 無母數統計中，對數據進行排序的方式的數量，用於計算p值
#



![messageImage_1731484618300](https://hackmd.io/_uploads/SJylh0bGJe.jpg)

* 樣本共分為4組，因此會產生4張圖，這邊只顯示其中2個結果，2張圖表示4個組別分別與susceptible and Healthy以及susceptible and PD兩組間的距離盒鬚圖，數值越大代表兩組之間差異越大
* 確定PERMANOVA分析組間的距離存在顯著差異後，進行成對比較可看出哪兩組間有顯著差異，可看出四組之間距離皆存在顯著差異
* 可將--m-metadata-column改成--m-metadata-column donor或--m-metadata-column genotype查看更詳細的分析結果


**Emperor**
Emperor是強大的互動式PCoA(主座標分析)視覺化工具，功能有很多，可選擇樣本的分組方式(透過**顏色**或是**形狀**)，也可選擇顯示特定分類的數據(Visibility)，並可選擇顯示的主座標(Axes)

![messageImage_1731486689236](https://hackmd.io/_uploads/BkkkmCMM1l.jpg)

* 主成分分析(PCA)與主座標分析(PCoA)皆為一種資料降維方法，對多為數據進行降維，同時保持數據中雙方差異貢獻最大的特徵，若樣本的群落組成越相似，則PCA/PCoA圖中的距離則越接近，因此群落結構相似度高的樣本會聚集在一起
* PCA: 在高維數據中找到最能解釋變異性的主成分(設法保留數據裡的變異(variance)，讓點的位置盡量不要變動)
* PCoA: 主要使用距離矩陣，在多維空間中呈現樣本之間的距離關係(讓原本數據各點間距哩，跟投影裡各點間距離之間的相關最高)

![image](https://hackmd.io/_uploads/SkeWI0zzJl.png)

#

**14.差異豐富度分析(LDA Effect size, LEFse)**

LEFse可用來檢測不同樣本組特徵(如ASV、菌種)之間的相對豐富度是否存在顯著差異


(1)過濾掉低豐富度(abundance)與低出現頻率(prevalence)的ASVs，可提供更好的分辨率

```
qiime feature-table filter-features \
--i-table ./qza/dada2_table.qza \
--p-min-frequency 50 \
--p-min-samples 4 \
--o-filtered-table ./qza/dada2_table_filtered.qza
```

![messageImage_1731554336389](https://hackmd.io/_uploads/S1hLh17fJe.jpg)


* qiime feature-table filter-features: 過濾特定AVs的指令
* --i-table: 輸入feature table之位置
* --p-mjin-frequency: ASV在所有樣本中出現的總頻率低於這個值，則去除掉此ASV
* --p-min-samples: ASV在樣本中出現的次數，低於這個值，則去除掉此ASV
* --o-filtered-table: 輸出篩選後的filtered table
#
* --m-metadata-file: 輸入metadata之路徑，本範例未使用
* --p-where: 若有輸入metadata，則可設定此參數透過metadata分組，篩選特定分組的結果，如donor=hc




(2)安裝dokdo套件

先透過git取得GitHub的dokdo檔案，再透過pip進行安裝，而不能像krona或nextflow直接先寫在yml配置檔裡面，因為pip還存在著另一個dokdo套件，兩者是不一樣的東西，以避免與我們要的dokdo搞混


```
git clone https://github.com/sbslee/dokdo
cd dokdo
pip install .
cd ..
```

![messageImage_1731553627343](https://hackmd.io/_uploads/Sy4dt17zke.jpg)


(3)產生LEFse

```
dokdo prepare-lefse \
--table-file ./qza/dada2_table_filtered.qza \
--taxonomy-file ./qza/taxonomy.qza \
--metadata-file ./metadata.tsv \
--class-col donor \
--output-file ./lefse_input_table.tsv
```

![messageImage_1731554863413](https://hackmd.io/_uploads/HJkI0kmzyx.jpg)


* dokdo prepare-lefse: 輸出LEFse之指令
* --table-file: 輸入feature table之位置，本範例使用的是filtered table
* --taxonomy-file: 輸入taxonomy.qza之位置
* --m-metadata-file: metadata之檔案路徑 

(4)透過網頁版[Galaxy with LEFse](https://galaxy.biobakery.org/)進行視覺化



(i)上傳檔案，點選左上角的上傳符號
![messageImage_1731556329293](https://hackmd.io/_uploads/S1hQEx7G1g.jpg)


(ii)按下方的choose local file-->選擇lefse_input_table.tsv上傳

![messageImage_1731562548848](https://hackmd.io/_uploads/B1TPnb7Gyg.jpg)


(iii)按左方的工具列的LEfSe，從A(按下A-->上傳檔案-->執行)到C

![messageImage_1731562931723](https://hackmd.io/_uploads/HJt66W7Gye.jpg)



#

**15.微生物基因功能預測PICRUSt2**

PICRUSt2(Phylogenetic investigation of communities by reconstruction of unobserved states)為一套根據標記基因的序列(如16S rRNA)去預測微生物基因功能的工具

PICRUSt2會將各個ASV序列與其參考資料中的序列進行比對，推斷每個ASV所含的基因家族(Gene family)，從而預測功能

![image](https://hackmd.io/_uploads/r1myw7QGke.png)

(1)將dada2_table.qza透過qiime2輸出成feature-table.biom

Biom(Biological observation matrix)檔案是專為生物資訊分析的檔案，內含ASVs在各樣本中的數量(abundance)資訊

```
qiime tools export \
--input-path ./qza/dada2_table_filtered.qza \
--output-path ./
```

![messageImage_1731569688347](https://hackmd.io/_uploads/H1mE_7mfJl.jpg)

* qiime tools export: 用於將qza匯出成不同格式
* --input-path: 輸入feature table的位置，本範例使用的是filtered table
* --output-path: 輸出之BIOM位置

(2)檢視輸出的BIOM檔案

`biom head -i feature-table.biom`

![messageImage_1731569956354](https://hackmd.io/_uploads/ryo4FQ7z1x.jpg)

(3)將dada2_rep_set.qza轉成fasta，內含feature ID與原始序列

```
qiime tools export \
--input-path qza/dada2_rep_set.qza \
--output-path ./
```

![messageImage_1731570054445](https://hackmd.io/_uploads/BJRoF77fJx.jpg)


(4)檢視輸出的fasta檔案

`head dna-sequences.fasta`

![messageImage_1731570323231](https://hackmd.io/_uploads/Hyyhc7XM1x.jpg)



#
**16.安裝與啟動mamba及PICRUSt2 (v2.5.0)**

官方建議設備: 含有16GB以上的RAM
安裝: 使用mamba而非conda，安裝速度會比conda還快，且使用conda安裝picrust2會產生套件之間的版本衝突

**(1)安裝mamba與picrust2環境**

```
conda deactivate
conda install mamba -n base -c conda-forge

mamba create -n picrust2 -c bioconda -c conda-forge picrust2=2.5.0

conda activate picrust2
```

![messageImage_1731649185726](https://hackmd.io/_uploads/B1A2CIVGyl.jpg)



![messageImage_1731649824715](https://hackmd.io/_uploads/Sy3NZP4Gyl.jpg)


![messageImage_1731649865095](https://hackmd.io/_uploads/SybwbPEfJx.jpg)


**(2)將安裝完成之picrust2寫入環境變數**

```
python
import os
Add_Binarry_Path='~/.conda/envs/picrust2/bin/'
os.environ['PATH']=Add_Binarry_Path+':'+os.environ['PATH']
exit()
```

**(3)執行Picrust2分析**
執行picrust2_pipeline.py

```
picrust2_pipeline.py \
-s dna-sequences.fasta \
-i feature-table.biom \
-o picrust2_out_pipeline \
-p 80
```

![messageImage_1731650170177](https://hackmd.io/_uploads/Sk9qzwNMye.jpg)


* -s: 輸入之sequence.fasta位置
* -i: 輸入之feature-table.biom位置
* -o: 輸出檔案之資料夾名稱
* -p: CPUs數量

若想要重跑Picrust2，輸出結果至同樣命名的folder，則要刪掉原本的folder才能重跑


**(4)進入picrust2_out_pipeline資料夾**

`cd picrust2_out_pipeline`

進入picrust2_out_pipeline資料夾，可以看到4個資料夾和4個檔案

![messageImage_1731650268327](https://hackmd.io/_uploads/HJwgmwVM1g.jpg)


* EC_metagenome_out: 使用MetaCyc代謝路徑資料庫的酵素編號(enzyme commission, EC numbers)豐富度預測結果、每個樣本的NSTI權重(weighted_nsti.tsv)、預測16s校正的特徵表
* intermediate: Folder containing intermediate MinPath files and files used for sequence placement pipeline
* KO_metagenome_out: 使用KEGG生物路徑資料庫的KO基因豐富度預測結果
* pathways_out: 根據EC numbers豐富度預測結果所推論出的MetaCyc代謝路徑豐富度
* EC_predicted.tsv.gz: 預測每個ASV中EC的數量
* KO_predicted.tsv.gz:預測每個ASV中對應到的KEGG pathway數量
* marker_predicted_and nsti.tsv.gz: 預測每個ASV中16s與NSTI的數量
* out.tre: 參考序列的樹

#

-->Picrust2預設使用MetaCyc資料庫進行pathway預測，因MetaCyc亦是微生物總體基因體定序(MGS, Shotgun metagenomics)基因功能分析常見的資料庫

-->Picrust2可藉由菌相資料獲得Enzyme Commission(EC number)、KEGG、MetaCyc路徑豐富度資料，以此預測菌群中的酵素及代謝路徑豐富度

-->Picrust2 Pathway的豐富度計算以預測EC number 的豐富度為主，並基於EC number比對MetaCyc資料庫進而計算出 Pathway的豐富度以降低產出假陽性 Pathways 的可能性

-->得到功能預測結果後，常會進行組間的豐富度比較，官方建議可採用具使用者介面的STAMP或是ALEDx2方法進行統計檢驗

**(5)輸出加上註釋的tsv檔案**

-->分析後主要透過三個壓縮檔解壓縮後的tsv視覺化，分別為
`EC_metagenome_out/pred_metagenome_unstrat_descrip.tsv.gz`
`KO_metagenome_out/pred_metagenome_unstrat_descrip.tsv.gz`
`pathways_out/path_abun_unstrat_descrip.tsv.gz`

然而Picrust2輸出時僅含有酵素及代謝路徑編號，為方便人類判讀，還會使用[Picrust2 Add description](https://github.com/picrust/picrust2/wiki/Add-descriptions)功能，替編號加入註釋(EC number pathway)，再加上註釋的tsv忠看到第二個column為description，供人類方便檢視


```
add_descriptions.py \
-i EC_metagenome_out/pred_metagenome_unstrat.tsv.gz \
-m EC \
-o EC_metagenome_out/EC_pred_metagenome_unstrat_descrip.tsv.gz

!gunzip EC_metagenome_out/EC_pred_metagenome_unstrat_descrip.tsv.gz
```

```
add_descriptions.py \
-i KO_metagenome_out/pred_metagenome_unstrat.tsv.gz \
-m KO \
-o KO_metagenome_out/KEGG_pred_metagenome_unstrat_descrip.tsv.gz

!gunzip KO_metagenome_out/KEGG_pred_metagenome_unstrat_descrip.tsv.gz
```

```
add_descriptions.py \
-i pathways_out/path_abun_unstrat.tsv.gz \
-m METACYC \
-o pathways_out/path_abun_unstrat_descrip.tsv.gz

!gunzip pathways_out/path_abun_unstrat_descrip.tsv.gz
```

![messageImage_1731651081917](https://hackmd.io/_uploads/S1LX8PNzyl.jpg)


* add_descriptions.py: 於tsv加上註釋
* -i: 輸入之tsv.gz檔案位置
* -m: 使用的註釋
* -o: 輸出檔案之名稱
* gunzip: 解壓縮.gz

#

**17.STAMP分析**
[STAMP](https://picrust.github.io/picrust/tutorials/stamp_tutorial.html)可對tsv檔案進行視覺化，以查看預測菌群中的酵素及代謝路徑豐富度之結果

(1)於本機端下載[STAMP](https://beikolab.cs.dal.ca/software/STAMP)

(2)將picrust2輸出的tsv檔案下載到本機端，並以Excel開啟

(3)刪除EC_pred_metagenome_unstrat_descrip.tsv與KEGG_pred_metagenome_unstrat_descrip.tsv中的function、path_abun_unstrat_descrip.tsv中的pathway欄(否則輸入STAMP時會發生Error)

(4)將metadata.tsv下載到本機端

(5)打開Stamp，輸入`ctrl+O`載入檔案
-->Profile file: KO/EC/Pathway之tsv
-->Group metadata file: metadata.tsv

![image](https://hackmd.io/_uploads/B19s_PNMkx.png)

-->1. 選擇分組依據
-->2. 選擇Multiple groups, two groups, two samples進行比較，並選擇統計方式
-->3. 選擇製作之圖表類型
-->4. 選擇是否過濾部分樣本

#
範例:

Multiple groups / bar plot / 1,4-dihydroxy-2-naphthoate polyprenyltransferase。顯示不同樣本中1,4-dihydroxy-2-naphthoate之豐富度，並以顏色區分不同組

ANOVA統計之P值顯示在圖片右上角。

![messageImage_1731651950245](https://hackmd.io/_uploads/rkycYDEM1e.jpg)

#

Multiple groups / box plot / 1,4-dihydroxy-2-naphthoate。同上，但是是將組別內所有樣本集合起來以box plot顯示。


![messageImage_1731652002357](https://hackmd.io/_uploads/ryY3KDVzkl.jpg)

#

Multiple groups / post hoc / 1,4-dihydroxy-2-naphthoate
當ANOVA分析結果顯示多組間存在顯著差異，再透過post hoc查看哪些組別存在差異

![messageImage_1731652145157](https://hackmd.io/_uploads/Hk5rcPVzJl.jpg)

#


Two groups/ Extended error bar，顯示2組別間具有顯著差異的特徵

![messageImage_1731652315276](https://hackmd.io/_uploads/rytgoPVzye.jpg)





