xcms用于LC-MS和GC-MS数据分析,用于色谱分离和单光谱质谱数据处理和可视化的框架。导入AIA / ANDI NetCDF,mzXML,mzData和mzML文件。预处理数据以实现高通量,非靶的分析物分析。
1 安装和导入
BiocManager::install("xcms")
BiocManager::install("msdata")
library(xcms)
library(magrittr)
library(ggplot2)
xcms包依赖的包很多,安装起来很费时间
2 .导入数据
所使用的示例数据是msdata包自带的数据,使用MSnbase包的readMSData函数加载,dda_data对象包含指定 mzML 文件中的所有 MS1 和 MS2 数据。
dda_file <- system.file("TripleTOF-SWATH/PestMix1_DDA.mzML",package = "msdata")
dda_data <- readMSData(dda_file, mode = "onDisk")
如果没有安装msdata包,可以直接导入
dda_data <- readMSData("PestMix1_DDA.mzML", mode = "onDisk")
在experimentData@instrumentModel储存仪器信息。
可以通过以下命令查看。
dda_data@experimentData@instrumentModel
#[1] "TripleTOF 6600"
dda_data@experimentData@instrumentManufacturer
#[1] "SCIEX"
提取总离子流图
总离子流图是每个时间点所有离子叠加起来的信号强度
bpis <- chromatogram(dda_data, aggregationFun = "sum")
plot(bpis,col = c("blue"))
使用ggplot2作图。
data <- data.frame(rtime=bpis@.Data[[1]]@rtime,intensity=bpis@.Data[[1]]@intensity)
ggplot(data,aes(rtime,intensity))+geom_line()
提取基峰色谱图
基峰色谱图是每个时间点信号最强峰
bpis2 <- chromatogram(dda_data, aggregationFun = "max")
plot(bpis2,col = c("red"))
参数aggregationFun可以选择"mean","min"。
将TIC和BPC图合在一起。
data2 <- data.frame(rtime=bpis2@.Data[[1]]@rtime,TIC=bpis@.Data[[1]]@intensity,
BPC=bpis2@.Data[[1]]@intensity)
library(reshape2)
data3 <-melt(data2,id.vars = "rtime",variable.name= "Type",value.name = "Intensity")
ggplot(data3,aes(rtime,Intensity,group = Type,color = Type))+
geom_line()+
scale_color_manual(values = c("red","blue"))
使用msLevel函数查看所有峰的质谱级数
head(msLevel(dda_data))
# F1.S0001 F1.S0002 F1.S0003 F1.S0004 F1.S0005 F1.S0006
# 1 1 1 1 1
length(msLevel(dda_data))
#[1] 7602
使用列联函数table查看MS1和MS2的个数
table(msLevel(dda_data))
# 1 2
#4627 2975
或者使用管道命令 |>,filterMsLevel选择质谱级数
dda_data |> filterMsLevel(1L) |> length()
#[1] 4627
dda_data|> filterMsLevel(2L) |> length()
#[1] 2975
可见7602张质谱图中,有4627张一级质谱,2975张二级质谱。
查看一级谱图
data_1L <- filterMsLevel(dda_data,1L)
table(msLevel(data_1L))
# 1
# 4627
plot(data_1L[2003:2005])+xlim(200,400)
查看二级谱图
data_2L <- filterMsLevel(dda_data,2L)
table(msLevel(data_2L))
# 1
# 2975
plot(data_2L[[1]])$data
# i mtc
# 1 0.04827657 55.93534
# 2 0.09725399 78.95068
# 3 0.05769959 138.01590
提取二级质谱并使用precursorMz函数求得母离子的质荷比
dda_data %>% filterMsLevel(2L) %>% precursorMz() %>% head()
# F1.S0023 F1.S0024 F1.S0028 F1.S0029 F1.S0113 F1.S0120
#212.07649 220.14811 93.03474 219.17504 666.06150 329.07436
使用precursorIntensity函数求得母离子的离子强度
dda_data %>% filterMsLevel(2L) %>% precursorIntensity() %>% head()
#F1.S0023 F1.S0024 F1.S0028 F1.S0029 F1.S0113 F1.S0120
# 0 0 0 0 0 0
dda_data %>% precursorIntensity()%>% head()
#F1.S0001 F1.S0002 F1.S0003 F1.S0004 F1.S0005 F1.S0006
# NA NA NA NA NA NA
Sciex公司产生的数据一般不会将母离子的离子强度导出(一般MS1为NA,MS2为0),需要使用xcms包的函数estimatePrecursorIntensity。
prec_int <- xcms::estimatePrecursorIntensity(dda_data)
fData(dda_data)$precursorIntensity <- prec_int
dda_data %>%
filterMsLevel(2L) %>%
precursorIntensity() %>%
head()
参考资料:
XCMS官方说明文档
LC-MS/MS data analysis with xcms (bioconductor.org)