Bioconductor的质谱蛋白组学数据分析
这篇跟之前的一篇博文Bioconductor的DNA甲基化芯片分析流程一样,主要简单的记录下如何基于bioconductor的R包对蛋白组质谱数据进行分析。在看到这篇biocondutor官网文档Mass spectrometry and proteomics data analysis之前,我一直以为质谱数据的分析过程就是用一些商业化软件或者开源软件将谱图转化为肽段/蛋白的表达谱,由于蛋白组应用未如NGS数据那般热门,所以就未去搜索过是否能用R包来对质谱数据进行一定程度的分析。还好biocondutor将蛋白组质谱数据分析相关的R包做了总结,如上述那篇文章,我也正好来学习下
安装
首先是这篇教程相关R包的安装,以常规的bioconductor包安装方式即可,PS.记得换源(如中科大),不然会比较慢,然后加载
library("mzR")
library("mzID")
library("MSnID")
library("MSnbase")
library("rpx")
library("MLInterfaces")
library("pRoloc")
library("pRolocdata")
library("MSGFplus")
library("rols")
library("hpar")
如果遇到报错:/bin/bash: nc-config: 未找到命令,则:
sudo apt-get install netcdf-bin
如果继续报错:rnetCDF.h:1:20: fatal error: netcdf.h: 没有那个文件或目录,则:
sudo apt-get install libnetcdf-dev
sudo apt-get install libudunits2-dev
sudo apt-get install udunits-bin
在Bioconudtor3.5版本下,已经有94个蛋白组相关R包,64个质谱相关R包以及17个质谱实验数据相关R包,虽然跟NGS相比还是比较少的,但是也蛮可观了。现在Biocondutor已经3.6版本了,可能也有新的R包收录了
蛋白组公共数据库
对于NGS以及芯片数据,我们一般首选会去GEO/SRA/TCGA等数据库下载公共数据库。而对于蛋白组数据,我们可以选择ProteomeXchange数据库,一些研究论文的原始数据会上传到这个PX上,可供下载研究。因此我们除了可以去其官网http://proteomexchange.org/下载公共数据,还可以通过rpx
包进行下载,只需要知道PX号即可,如
px <- PXDataset("PXD000001")
pxfiles(px)
# [1] "F063721.dat"
# [2] "F063721.dat-mztab.txt"
# [3] "PRIDE_Exp_Complete_Ac_22134.xml.gz"
# [4] "PRIDE_Exp_mzData_Ac_22134.xml.gz"
# [5] "PXD000001_mztab.txt"
# [6] "README.txt"
# [7] "TMT_Erwinia_1uLSike_Top10HCD_isol2_45stepped_60min_01-20141210.mzML"
# [8] "TMT_Erwinia_1uLSike_Top10HCD_isol2_45stepped_60min_01-20141210.mzXML"
# [9] "TMT_Erwinia_1uLSike_Top10HCD_isol2_45stepped_60min_01.mzXML"
# [10] "TMT_Erwinia_1uLSike_Top10HCD_isol2_45stepped_60min_01.raw"
# [11] "erwinia_carotovora.fasta"
# [12] "generated"
如果想看看最新ProteomeXchange发布的数据有哪些,可以用pxannounced()
函数
处理MS数据
我们可以从ProteomeXchange选择下载mzXL
格式的MS原始数据,用pxget
函数
fn <- "TMT_Erwinia_1uLSike_Top10HCD_isol2_45stepped_60min_01-20141210.mzML"
mzf <- pxget(px, fn)
然后用mzR
包对raw MS data进行处理,PS.mzR
包不仅能读入mzML格式,还可以处理mzXML,netCDF以及mzData等数据,常用的函数有:读入数据的openMSfile
,提取数据矩阵的header
以及提取峰图谱的peaks
ms <- openMSfile(mzf)
hd <- header(ms)
head(peaks(ms, 1000))
plot(peaks(ms, 1000), type = "h")
如果对于查库后的数据(也就是identification data),可以用mzID
包来读取数据并处理,并且mzR
包也可以
##加载临时数据(identification data)
f <- dir(system.file("extdata", package = "RforProteomics"),
pattern = "mzid", full.names=TRUE)
basename(f)
## [1] "TMT_Erwinia.mzid.gz"
##mzID包
id <- mzID(f)
id
##mzR包
id1 <- openIDfile(f)
fid1 <- mzR::psms(id1)
head(fid1)
至于如何查库,一般会用一些专门用于查库的软件,如:PD,Maxquant等。但现在一些开源软件也整合在一些R包中了,如:X!Tandem的rTANDEM
包,MSGF+的MSGFplus
包。对于后者这教程还简单介绍了其用法,具体可去Mass spectrometry and proteomics data analysis中查看
对于查库后的分析,则可以使用MSnID
包,主要用于查库后的过滤等操作,输入格式可以是data.frame
或者mzIdenML
文件,一般这步会整合在查库的软件(一些比较完善的软件)中,由于没用过蛋白查库软件,所以在这也不细说了,大致上就是一些过滤的指标。。。
其实biocondutor包中有一个MSnbase
包,将上述从raw MS data到identification results做了个整合,类似于表达谱芯片分析的软件。 MSnbase
包将输入文件转化成MSnExp
类,然后经过一定的数据处理后,变成MSnSet
类用于下游定量分析;跟芯片分析类似,也有pData
和fData
等函数,可以说就是芯片分析的'翻版',从而使整个流程标准化,文档以iTRAQ数据作为例子进行了演示说明:从查库到定量
一些非常规格式的蛋白组质谱数据怎么处理呢,如mzTab
格式文件,那么可以使用readMSnSet2
函数
对于质谱raw数据的处理,MSnbase
包有一整套流程,如:clean
,smooth
,pickPeaks
,removePeaks
以及trimMz
,都是在MSnExp
类基础上进行的。此外MALDIquant
包和xcms
包也有各自预处理方法
除了预处理外,根据定量数据的不同形式,也有属于各自的标准化方法,还有补空的算法,当然最后还需要将肽段数据整合为蛋白水平的数据,这里就因数据而异了
统计分析
当定量数据转化为蛋白水平后,我就可以根据蛋白的表达谱数据进行差异蛋白筛选等下游分析,这里biocondutor给出3个R包可供选择
MSstats
: A set of tools for statistical relative protein significance analysis in DDA, SRM and DIA experiments. Data stored in data.frame or MSnSet objects can be used as inputmsmsTests
: Statistical tests for label-free LC-MS/MS data by spectral counts, to discover differentially expressed proteins between two biological conditions. Three tests are available: Poisson GLM regression, quasi-likelihood GLM regression, and the negative binomial of the edgeR package. All can be readily applied on MSnSet instances produced, for example by MSnIDisobar
also provides dedicated infrastructure for the statistical analysis of isobaric data
个人对msmsTests
包比较感兴趣(但现在很少用spectral counts(MS2)来定量分析了,主流是MS1数据),刚好可以跟我最近的一篇博文Differential expression in proteomics比较验证下;至于isobar
包则是专门用来处理iTRAQ数据的;MSstats
包也不错,能处理DDA和DIA数据,这很实用
后续
Biocondutor还在下游分析中的Machine learning、Annotation等方面给出了建议,个人觉得这些可以类似于RNA-Seq数据来处理蛋白组质谱数据,反正都是基于表达谱,只是RNA-seq是转录本/基因水平的,而蛋白组质谱是蛋白水平的
最后还给了一些其他相关分析方法所对应的包,有需求时可以看看
Analysis of post translational modification with
isobar
Analysis of label-free data from a Synapt G2 (including ion mobility) with
synapter
Analysis of spatial proteomics data with
pRoloc
Analysis of MALDI data with the
MALDIquant
packageAccess to the Proteomics Standard Initiative Common QUery InterfaCe with the
PSICQUIC
package
以上所有内容及代码均来自Biocondutor官方的文档Mass spectrometry and proteomics data analysis,我只以自己的角度做了个记录,如要了解具体内容,推荐参看其文档原文,更加详细及全面!