R package(二):xcms代謝組學(xué)初探

library(xcms)
library(ggplot2)
library(ggrepel)
dda_data <- readMSData("PestMix1_DDA.mzML", mode = "onDisk")

檢出peak
官方推薦參數(shù)

cwp <- CentWaveParam(snthresh = 5, noise = 100, ppm = 10,
                     peakwidth = c(3, 30))
dda_data <- findChromPeaks(dda_data, param = cwp)
參數(shù)設(shè)置.png

查看檢出的features

plotChromPeaks(dda_data)
plotChromPeaks

上圖中一條線(實(shí)際為矩形)代表一個(gè)離子救崔,線的長度代表峰寬,寬度代表質(zhì)荷比m/z的范圍捏顺。
圖形不夠美觀六孵,也不能帶標(biāo)記label。
使用ggplot2繪圖幅骄。

data <- chromPeaks(dda_data)|> data.frame()
ggplot(data)+ 
  geom_rect(aes(xmin = rtmin,xmax = rtmax ,ymin = mzmin ,ymax = mzmax),color = "black",alpha = 0)+
  geom_text_repel(aes(x = rt,y = mz,label = row.names(data)),size = 3)+
  xlab("Retention time")+
  theme_bw()
geom_rect

可以觀察到許多features具有非常相似的質(zhì)荷比mz和非常接近的保留時(shí)間rt劫窒。如CP083,CP084拆座。

i = 83
mz = c(data$mzmin[i],data$mzmax[i])
mz
rt = c(data$rtmin[i],data$rtmax[i])
rt
mzr <- mz + c(-0.01, 0.01)
rtr <- rt + c(-5, 5)
chromPeaks(dda_data, mz = mz, rt = rt)
#           mz    mzmin    mzmax      rt   rtmin   rtmax     into     intb     maxo  sn sample
#CP83 217.144 217.1437 217.1443 508.258 504.478 513.617 473.4116 468.0113 184.1682 116      1
#CP84 217.144 217.1437 217.1443 508.678 508.678 513.617 207.2879 204.4068 163.8278 116      1

看看他們是否是同一種feature主巍。
可視化

ggplot(data)+ 
  geom_rect(aes(xmin = rtmin,xmax = rtmax ,ymin = mzmin ,ymax = mzmax),color = "black",alpha = 0)+
  geom_text_repel(aes(x = rt,y = mz,label = row.names(data)),size = 3)+
  xlab("Retention time")+
  xlim(rtr)+
  ylim(mzr)+
  theme_bw()
geom_rect

提取EIC圖

dda_data |> 
  filterMz(mzr)|>
  filterRt(rtr)|>
  plot(type = "XIC")
abline(v = data$rt[i],col = "red")
abline(h = data$mz[i],col = "blue")
XIC

證明他們確實(shí)是同一個(gè)features
設(shè)置合并參數(shù)將其合并。

mpp <- MergeNeighboringPeaksParam(expandRt = 2, expandMz = 0.01)
xdata_pp <- refineChromPeaks(dda_data, mpp)
# Evaluating 5 peaks in file PestMix1_DDA.mzML for merging ... OK

#Merging reduced 99 chromPeaks to 99.
#Warning message:
#In serialize(data, node$con) :
#  'package:stats' may not be available when loading

MergeNeighboringPeaksParam函數(shù)的參數(shù)有4個(gè)挪凑,分別為:expandRt, expandMz , ppm和 minProp孕索。
expandRt將保留時(shí)間窗口向兩邊擴(kuò)展多少秒,
expandMz躏碳,將每個(gè)色譜峰的m/z范圍擴(kuò)大(兩邊)搞旭。
minProp, 數(shù)值在0-1之間,表示合并兩個(gè)峰所需要達(dá)到的強(qiáng)度比例。 默認(rèn)(minProp = 0.75)表示只有當(dāng)信號(hào)的中間部分大于兩個(gè)峰值的“maxo”(峰值頂點(diǎn)的最大強(qiáng)度)中最小值的75%時(shí)肄渗,峰才會(huì)合并镇眷。

比較合并前和合并后的峰形

chr_raw <- chromatogram(dda_data, mz = mzr, rt = rtr)
plot(chr_raw)
abline(v = data$rt[i],col = "red")
chr_raw <- chromatogram(xdata_pp, mz = mzr, rt = rtr)
plot(chr_raw)
abline(v = data$rt[i],col = "red")
chromatogram

合并前后對(duì)比

提取上述色譜峰的二級(jí)質(zhì)譜
dda_spectra <- chromPeakSpectra(dda_data)
mcols(dda_spectra) %>% nrow()
#[1] 158
mcols(dda_spectra)$peak_id |>table()
#CP01 CP04 CP05 CP06 CP08 CP11 CP12 CP13 CP14 CP18 CP22 CP25 CP26 
#   3    2    2    2    2    2    2    4    4    1    5    5    6 
#CP33 CP34 CP35 CP36 CP41 CP42 CP44 CP46 CP47 CP48 CP50 CP51 CP52 
#   2    5    5    1    3    5    2    4    3    3    1    3    3 
#CP53 CP57 CP59 CP60 CP61 CP63 CP64 CP65 CP66 CP67 CP69 CP71 CP72 
#   5    5    2    2    2    4    5    1    4    3    3    4    3 
#CP73 CP81 CP82 CP85 CP88 CP89 CP90 CP91 CP93 CP94 CP95 CP98 CP99 
 #  1    4    3    2    2    3    3    3    6    4    1    2    1

共檢測(cè)到158個(gè)二級(jí)質(zhì)譜,有些色譜峰沒有二級(jí)質(zhì)譜恳啥,如CP02偏灿,有些色譜峰又有好幾個(gè)二級(jí)質(zhì)譜,如CP42钝的。

i = 93
id = rownames(data)
id[i]
ex_spectra_S1 <- dda_spectra[mcols(dda_spectra)$peak_id == id[i]]
ex_spectra_S1
plot(ex_spectra_S1[[1]])
MS2
e = c()
l = length(ex_spectra_S1)
for (i in 1:l){
  tar <- ex_spectra_S1[[i]]
  for (t in 1:l) {
    ex_spectra <- ex_spectra_S1[[t]]
    d <-compareSpectra(tar,ex_spectra, binSize = 0.1,fun = "dotproduct")
    e <-append(e, d)
  }
}
e
matrix <- matrix(e,l,l)
names(ex_spectra_S1)
row.names(matrix)<- colnames(matrix) <- names(ex_spectra_S1)
plot(hclust(as.dist(matrix)))
#data1
pheatmap::pheatmap(matrix,
                   display_numbers = T,
                   cluster_rows = F,
                   cluster_cols = F,
                   number_format = "%.2f")
pheatmap

整合同一個(gè)feature的多張圖譜

ex_spectrum <- combineSpectra(ex_spectra, method = consensusSpectrum, mzd = 0,
                              ppm = 20, minProp = 0.8, weighted = FALSE,
                              intensityFun = median, mzFun = median)
ex_spectrum
plot(ex_spectrum[[1]])

將整合后的碎片信息光譜與整合前做對(duì)比

par(mfrow = c(1, 3))
plot(ex_spectrum[[1]],ex_spectra[[1]])
plot(ex_spectrum[[1]],ex_spectra[[2]])
plot(ex_spectrum[[1]],ex_spectra[[3]])
二級(jí)質(zhì)譜比對(duì).png

比對(duì)評(píng)分

compareSpectra(ex_spectrum[[1]],ex_spectra[[1]], binSize = 0.02,
               fun = "dotproduct")
compareSpectra(ex_spectrum[[1]],ex_spectra[[2]], binSize = 0.02,
               fun = "dotproduct")
compareSpectra(ex_spectrum[[1]],ex_spectra[[3]], binSize = 0.02,
               fun = "dotproduct")

參考資料:

XCMS官方說明文檔
LC-MS/MS data analysis with xcms (bioconductor.org)
使用xcms進(jìn)行LC-MS數(shù)據(jù)預(yù)處理和分析 ? xcms (sneumann.github.io)
Chromatographic peak detection using the centWave method — findChromPeaks-centWave ? xcms (sneumann.github.io)
centWave Parameters ? msbrowser (tkimhofer.github.io)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
禁止轉(zhuǎn)載翁垂,如需轉(zhuǎn)載請(qǐng)通過簡(jiǎn)信或評(píng)論聯(lián)系作者。
  • 序言:七十年代末硝桩,一起剝皮案震驚了整個(gè)濱河市沿猜,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌碗脊,老刑警劉巖啼肩,帶你破解...
    沈念sama閱讀 206,126評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異衙伶,居然都是意外死亡祈坠,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門矢劲,熙熙樓的掌柜王于貴愁眉苦臉地迎上來赦拘,“玉大人,你說我怎么就攤上這事芬沉√赏” “怎么了?”我有些...
    開封第一講書人閱讀 152,445評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵丸逸,是天一觀的道長蹋艺。 經(jīng)常有香客問我,道長黄刚,這世上最難降的妖魔是什么捎谨? 我笑而不...
    開封第一講書人閱讀 55,185評(píng)論 1 278
  • 正文 為了忘掉前任,我火速辦了婚禮憔维,結(jié)果婚禮上涛救,老公的妹妹穿的比我還像新娘。我一直安慰自己埋同,他們只是感情好州叠,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,178評(píng)論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著凶赁,像睡著了一般咧栗。 火紅的嫁衣襯著肌膚如雪逆甜。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 48,970評(píng)論 1 284
  • 那天致板,我揣著相機(jī)與錄音交煞,去河邊找鬼。 笑死斟或,一個(gè)胖子當(dāng)著我的面吹牛素征,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播萝挤,決...
    沈念sama閱讀 38,276評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼御毅,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了怜珍?” 一聲冷哼從身側(cè)響起端蛆,我...
    開封第一講書人閱讀 36,927評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎酥泛,沒想到半個(gè)月后今豆,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,400評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡柔袁,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,883評(píng)論 2 323
  • 正文 我和宋清朗相戀三年呆躲,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片捶索。...
    茶點(diǎn)故事閱讀 37,997評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡插掂,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出情组,到底是詐尸還是另有隱情燥筷,我是刑警寧澤箩祥,帶...
    沈念sama閱讀 33,646評(píng)論 4 322
  • 正文 年R本政府宣布院崇,位于F島的核電站,受9級(jí)特大地震影響袍祖,放射性物質(zhì)發(fā)生泄漏底瓣。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,213評(píng)論 3 307
  • 文/蒙蒙 一蕉陋、第九天 我趴在偏房一處隱蔽的房頂上張望捐凭。 院中可真熱鬧,春花似錦凳鬓、人聲如沸茁肠。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽垦梆。三九已至匹颤,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間托猩,已是汗流浹背印蓖。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評(píng)論 1 260
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留京腥,地道東北人赦肃。 一個(gè)月前我還...
    沈念sama閱讀 45,423評(píng)論 2 352
  • 正文 我出身青樓,卻偏偏與公主長得像公浪,于是被迫代替她去往敵國和親他宛。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,722評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容