erah官方文檔:https://cran.r-project.org/web/packages/erah/vignettes/eRahManual.pdf
erah包的輸入格式必須是cdf或者mzXML,cdf都是儀器導(dǎo)出,mzXML可以通過轉(zhuǎn)換工具得到。本次實驗數(shù)據(jù).D格式通過轉(zhuǎn)換工具proteowizard的MSConvert轉(zhuǎn)為mzXML格式,首次采用的默認(rèn)參數(shù)。

image
下圖截取mzXML格式數(shù)據(jù)一部分

image
mzXML包含了一次實驗中所有的分子片段的質(zhì)譜圖,并且包含了一些實驗的基本數(shù)據(jù).其核心數(shù)據(jù)是峰譜圖,<peaks>標(biāo)簽內(nèi)的一段很長的數(shù)據(jù)就是峰譜數(shù)據(jù),其本身是荷質(zhì)比與強度的Key-Value鍵值對,是經(jīng)過壓縮之后的數(shù)據(jù)。peaks標(biāo)簽里面會指定壓縮的float數(shù)據(jù)精度是多少(32位或者64位),壓縮方式是什么(一般是zlib).只要按照這種規(guī)格解碼就可以查看到真實的離子質(zhì)荷比與豐度的相關(guān)數(shù)據(jù)。
轉(zhuǎn)換之后的數(shù)據(jù)每一類放在一個文件夾,按文檔說明進行預(yù)處理。
以下是翻譯的部分官方文檔函數(shù):
- 設(shè)置去卷積參數(shù)
setDecPar(min.peak.width, min.peak.height=2500,
noise.threshold=500,
avoid.processing.mz=c(73:75,147:149),
compression.coef=2, analysis.time=0)
min.peak.width:最小峰寬度,通常為化合物峰寬度平均值的一半
min.peak.height:最小化合物峰高度,低于該值忽略
noise.threshold:此臨界點之下認(rèn)為是噪音
avoid.processing.mz:不期望被處理的塊,例如73,74,75,147,148,149,這些是普遍存在的質(zhì)量碎片,由帶有三甲基硅基的化合物組成,一般不處理
compression.coef:采用正交信號反褶積(OSD)算法,對數(shù)據(jù)進行壓縮的值,一般是2
analysis.time:譜圖保留時間的處理,如果是0,所有譜圖都處理
2、GC-MS數(shù)據(jù)去卷積,返回MetaboSet class
deconvolveComp(Experiment, decParameters,
samples.to.process=NULL, down.sample=FALSE,
virtual.scans.ps=NULL)
Experiment:newExp創(chuàng)建的實驗數(shù)據(jù)
decParameters:setDecPar 設(shè)置的去卷積參數(shù)
samples.to.process:向量,表示需要處理的樣品
down.sample:if TRUE:則譜圖向下采樣,10個掃描點定義一個峰,用于處理較長的具有較寬峰的譜圖(20s以上的峰寬度,每分鐘具有較小的掃描值)
virtual.scans.ps:手動校正每秒掃描次數(shù)。當(dāng)譜圖向下采樣時(每秒掃描太少或太多),可以定義每秒虛擬掃描,數(shù)據(jù)進行插值,但還是建議重新分析
3、設(shè)置對齊參數(shù)
setAlPar(min.spectra.cor, max.time.dist,
mz.range=c(70:600))
min.spectra.cor:最小譜圖相關(guān)值,(0-無相似度,1-非常相似),2個或更多成分的相似度達到該值才被認(rèn)為是同一種化合物并進行對齊
max.time.dist:最大保留時間的距離(秒),2個或更多成分保留時間的差小于多少才作為同一種化合物并進行對齊
mz.range:比較譜圖時塊的范圍
實驗樣品超出100個(Windows)or 1000(mac or Linux) 對齊會出現(xiàn)錯誤或運行時間很長,這種情況下,需要分塊處理,這個問題可以通過alignComp函數(shù)中的參數(shù)blocks.size解決
通過這幾個參數(shù)限制篩選,若有些化合物未被檢測到,從缺失化合物恢復(fù)的步驟進行找回
4、去卷積的化合物對齊
alignComp(Experiment, alParameters, blocks.size=NULL)
Experiment:去卷積之后的數(shù)據(jù),deconvolveComp
alParameters:setAlPar設(shè)置的參數(shù)
blocks.size:實驗樣品超出100個(Windows)or 1000(mac or Linux) 對齊會出現(xiàn)錯誤或運行時間很長,這種情況下,需要分塊處理
5、缺失成分恢復(fù)
recMissComp(Experiment, min.samples, free.model=F)
Experiment:對齊處理后的數(shù)據(jù),alignComp
min.samples:恢復(fù)的缺失化合物。樣品中出現(xiàn)該化合物的最小次數(shù),一般設(shè)置比較大,若設(shè)置過小,會出現(xiàn)較多錯誤的信息,推薦執(zhí)行alignList 或 idList函數(shù),評估化合物出現(xiàn)的樣本平均數(shù)量
free.model:if TRUE,樣品中發(fā)現(xiàn)的缺失光譜被用來計算最后的平均光譜
free.model參數(shù)推薦設(shè)置為False(除非碳跟蹤應(yīng)用程序),因為成分缺失化合物的樣品色譜通常被噪音影響,這會降低某個化合物的匹配值
如果化合物之前已被識別,應(yīng)用recMissComp函數(shù)后它們需要再次被識別,即identifyComp函數(shù)必須在recMissComp函數(shù)之后運行,即使identifyComp函數(shù)之前已經(jīng)運行
6、譜圖成分識別
identifyComp(Experiment, id.database=mslib, mz.range=NULL, n.putative=3)
Experiment:去卷積及對齊處理后的數(shù)據(jù),alignComp
id.database:質(zhì)譜庫,用于與實驗譜圖比較,默認(rèn)北美的MassBank
mz.range:與alignComp相同,如果在alignComp的setAlPar參數(shù)中給定,沒必要再次給出,否則需要給出
n.putative:每個頻譜對應(yīng)返回化合物名稱的個數(shù)
最后一步是識別對齊后的化合物并給出推薦名稱,erah依據(jù)參考數(shù)據(jù)庫比較了所有的譜圖,此包默認(rèn)的數(shù)據(jù)庫是MassBank MS library,然而我們強烈建議使用Golm Metabolome 數(shù)據(jù)庫
7、識別名稱、匹配值、其他變量
idList(object, id.database=mslib)
object:經(jīng)過去卷積、對齊及識別的數(shù)據(jù)
id.database:質(zhì)譜庫
返回識別化合物名稱、匹配度、其他變量的表格
8、保留指數(shù)誤差
erah 可以根據(jù)內(nèi)標(biāo)或外標(biāo)計算保留指數(shù)誤差。若是內(nèi)標(biāo),需要將化合物的AlignID值作為參考,這樣一旦識別出代謝物,應(yīng)用idList函數(shù)的輸出值可以找到該化合物的AlignID值。例如這個化合物是脂肪酸甲酯或其他代謝物,只要這個識別是正確的。正確識別的化合物可用于制作內(nèi)標(biāo)曲線。首先,定義一個參考列表,例如,我們?nèi)×?個已知代謝物的idList,手動定義RT和RI,此方法應(yīng)用于外標(biāo)。
為了查看特殊代謝物的保留指數(shù)RI,可以用findComp和compInfo函數(shù),例如想知道酚酸的保留指數(shù)(Golm數(shù)據(jù)庫),
findComp(name="phenol", id.database = golm.database)
得到DB.id=23,再用compInfo函數(shù)檢索
compInfo(comp.id=23, id.database=golm.database)
得到RI=1049.38,最后計算RI的誤差
computeRIerror(ex, id.database = golm.database,reference.list=reference.list, ri.error.type="relative")
計算保留指數(shù)誤差強烈建議使用Golm Metabolome數(shù)據(jù)庫
a.findComp(name = NULL, id.database = mslib, CAS = NULL,
chem.form = NULL)
name: 待查詢的化合物名稱
id.database:質(zhì)譜庫
CAS:CAS號
chem.form :化學(xué)式
b.compInfo(comp.id, id.database=mslib)
comp.id: 化合物的DB.id
id.database:質(zhì)譜庫
c.computeRIerror(Experiment, id.database=mslib, reference.list,
ri.error.type=c('relative','absolute'), plot.results=TRUE)
通過內(nèi)外標(biāo)曲線計算保留指數(shù)誤差
Experiment:經(jīng)過去卷積、對齊及識別的數(shù)據(jù)
id.database:質(zhì)譜庫
reference.list:參考數(shù)據(jù)創(chuàng)建標(biāo)準(zhǔn)曲線(內(nèi)標(biāo)或外標(biāo))
ri.error.type:指定計算RI的絕對誤差還是相對誤差
plot.results:展示RI/RT表格
9、列表ID
可以通過idList, alignList, dataList 分別得到識別列表、對齊列表、最終列表,
a.alignList(object, by.area=TRUE)
object: 去卷積、對齊和(可選)識別后的數(shù)據(jù)
by.area: if TRUE: 按去卷積色譜峰的面積含量,if FALSE 輸出去卷積峰強度
返回:
AlignID:ID
Factor: 因子標(biāo)簽名稱
tmean: 保留時間的平均值
FoundIn: 被檢測到化合物的樣品數(shù)量
Quantification: 列是樣品,行為代謝物,每列的名是樣品名
b.dataList(Experiment, id.database=mslib, by.area=TRUE)
與alignList相似,返回DB.id.X
10、結(jié)果及可視化
若AlignID 是41
a. plotProfile(Experiment,AlignId, per.class=T, xlim=NULL)
Experiment: 去卷積、對齊和(可選)識別后的數(shù)據(jù)
AlignId: 化合物識別ID
per.class: if TRUE 每類一個顏色,if FALSE 每個樣品一個顏色
xlim: x軸(保留時間)范圍
b. plotSpectra(Experiment, AlignId, n.putative=1,
compare=T, id.database=mslib, comp.db=NULL,
return.spectra=F, draw.color="purple", xlim=NULL)
Experiment:去卷積、對齊和(可選)識別后的數(shù)據(jù)
AlignId:化合物識別ID
n.putative: 當(dāng)比較參考光譜和實驗光譜,返回的命中個數(shù)
compare: if TRUE 數(shù)據(jù)庫的參考光譜進行比較
id.database: 質(zhì)譜庫
comp.db: 如果想比較實驗圖譜與數(shù)據(jù)庫中的其他譜圖,從數(shù)據(jù)庫中選擇comp.db數(shù)
return.spectra: if TRUE,返回選出化合物的實驗譜圖
draw.color: 顏色
xlim: x軸范圍(m/z)