为什么Alpha多样性的输入数据会是它?
生物信息學習的正確姿勢
NGS系列文章包括NGS基礎、在線繪圖、轉錄組分析?(Nature重磅綜述|關于RNA-seq你想知道的全在這)、ChIP-seq分析?(ChIP-seq基本分析流程)、單細胞測序分析?(重磅綜述:三萬字長文讀懂單細胞RNA測序分析的最佳實踐教程)、DNA甲基化分析、重測序分析、GEO數據挖掘(典型醫學設計實驗GEO數據分析 (step-by-step))、批次效應處理等內容。
在擴增子培訓過程中,總會被問到一個問題:抽平后的OTU表和計算相對豐度后的OTU表差別是什么?
抽平和計算相對豐度都是對OTU表進行標準化的方式,而抽平后的OTU表一般就會用于計算Alpha多樣性,兩者都可用于計算樣本間的差異OTU。但是為什么不統一使用抽平后的OTU表或計算相對豐度的OTU表呢?
我們在擴增子培訓中學到了兩種以上的方式計算Alpha多樣性,比如用vegan包去計算6種Alpha多樣性、usearch計算14種Alpha多樣性等。下面我們可以嘗試使用抽平后的OTU表(otutab_rare.txt)和計算相對豐度后的OTU表(otutab.freq.txt)分別來計算Alpha多樣性。
方法一:vegan包計算Alpha多樣性
suppressWarnings(suppressMessages(library(vegan))) otu_rare=read.table("otutab_rare.txt", header=T, sep="\t", quote = "", row.names=1, comment.char="") otu_freq=read.table("otutab.freq.txt", header=T, sep="\t", quote = "", row.names=1, comment.char="") # 計算抽平后的OTU表的richness, chao1和ACE指數 estimateR_rare = t(estimateR(t(otu_rare)))[,c(1,2,4)] head(estimateR_rare)## S.obs S.chao1 S.ACE ## KO1 2148 2442.130 2442.174 ## KO2 2097 2376.372 2387.770 ## KO3 1792 2169.230 2147.837 ## KO4 1853 2174.955 2199.956 ## KO5 1657 2061.449 2091.146 ## KO6 1976 2303.736 2294.931# 計算相對豐度后的OTU表的richness, chao1和ACE指數 ## 由于代碼運行報錯所以就注釋掉了,報錯內容在注釋中進行展示 #estimateR_freq = t(estimateR(t(otu_freq)))[,c(1,2,4)] ## Error in estimateR.default(newX[, i], ...) : function accepts only integers (counts)方法二:usearch計算Alpha多樣性
# input rare table to calculate the alpha diversty usearch -alpha_div otutab_rare.txt -output rare.alpha.txt## usearch v10.0.240_win32, 2.0Gb RAM (8.4Gb total), 8 cores ## (C) Copyright 2013-17 Robert C. Edgar, all rights reserved. ## http://drive5.com/usearch ## ## License: woodcorpse@163.com ## ## 00:00 4.5Mb 0.1% Reading otutab_rare.txt00:00 5.2Mb 100.0% Reading otutab_rare.txt# input otu rare table to calculate the alpha diversty #usearch -alpha_div otutab.freq.txt -output freq.alpha.txt ## ---Fatal error--- ##alphadiv.cpp(192) assert failed: m_TotalCount > 0可以看到當輸入數據是抽平后的OTU表(otutab_rare.txt)時,無論用哪種方法計算Alpha多樣性都沒有問題,而輸入數據是計算相對豐度后的OTU表(otutab.freq.txt)時,代碼紛紛報錯。
由于usearch并未開源,所以我們主要來看vegan的estimateR函數的報錯原因function accepts only integers (counts),表明該函數只接受整數,并且函數的文檔也指明Function estimateR is based on abundances (counts) on single sample site,說明輸入數據需要是豐度的counts值,但更具體的原因是什么呢?這就和Alpha多樣性的不同指標的計算方式有關了。
estimateR函數計算了三種Alpha多樣性指標,分別是Richness、Chao1、ACE。
Richness是最好計算的Alpha多樣性指數,其計算方式是
其中N就是該樣本的物種數目;
Chao1是常用的Alpha多樣性指數之一,其計算方式是
其中N是該樣本的物種數目;S是該樣本中豐度為1的物種數目;D是該樣本中豐度為2的物種數目;
ACE是常用的Alpha多樣性指數之一,其計算方式是
可以看到計算Chao1指數和ACE指數都依據豐度的counts值來計算,而輸入計算了相對豐度的OTU表時就丟失了豐度的counts值信息,故而只能使用抽平后的OTU表。
那你還知道哪些基于豐度的counts值計算的Alpha多樣性指標或者Alpha多樣性其他容易被忽視又很重要的知識點呢?歡迎在評論區討論。
視頻演示Alpha多樣性圖形繪制
往期精品(點擊圖片直達文字對應教程)
后臺回復“生信寶典福利第一波”或點擊閱讀原文獲取教程合集
總結
以上是生活随笔為你收集整理的为什么Alpha多样性的输入数据会是它?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 图像处理包magick - R版的PS
- 下一篇: 视力差,不要怕!PNAS:服用超长链多不