1读取数据为QFeatures

我们将使用CPTAC研究6的一个子集,包含条件a和B(Paulovich et al. 2010).经MaxQuant处理的肽水平数据(Cox and Mann 2008)可在msdata包:

basename(f <- msdata::quant(pattern = "cptac", full.names = TRUE))
## [1] "cptac_a_b_peptides.txt"

从列的名称中,我们可以看到定量列,从“强度”。(注意这个点!)在56到61位。

名称(read.delim (f))
##[1]“序列”“n .术语。cleavage。”窗口“##[3]”C.term.cleavage。”“Amino.acid窗口。在“##[5]”前面。酸”“Second.amino。酸“##[7]”第二。最后。氨基。酸”“Last.amino。acid" ##[9] "氨基酸。”后“A.Count“# #”[11]R.Count”“N.Count“# #”[13]D.Count”“C.Count“# #”[15]Q.Count”“E.Count“# #”[17]G.Count”“H.Count“# #[19]”I.Count”“L.Count“# #[21]”K.Count”“M.Count“# #[23]”F.Count”“P.Count“# #[25]”S.Count”“T.Count“# #”[27]W.Count”“Y.Count“# #[29]”V.Count”“U.Count”# #[31]“长度”“错过了。乳沟" ##[33]"质量" "蛋白质" ##[35]"铅。剃须刀。蛋白质”开始。position“##[37]”结束。位置独特. .。”##[39]“独特的蛋白质。”“收费”##[41]“PEP”“分数”##[43]“识别。类型。6 a_7”“Identification.type。6A_8" ## [45] "Identification.type.6A_9" "Identification.type.6B_7" ## [47] "Identification.type.6B_8" "Identification.type.6B_9" ## [49] "Experiment.6A_7" "Experiment.6A_8" ## [51] "Experiment.6A_9" "Experiment.6B_7" ## [53] "Experiment.6B_8" "Experiment.6B_9" ## [55] "Intensity" "Intensity.6A_7" ## [57] "Intensity.6A_8" "Intensity.6A_9" ## [59] "Intensity.6B_7" "Intensity.6B_8" ## [61] "Intensity.6B_9" "Reverse" ## [63] "Potential.contaminant" "id" ## [65] "Protein.group.IDs" "Mod..peptide.IDs" ## [67] "Evidence.IDs" "MS.MS.IDs" ## [69] "Best.MS.MS" "Oxidation..M..site.IDs" ## [71] "MS.MS.Count"
(i <- grep("Intensity\\.", names(read.delim(f)))) .
## [1] 56 57 58 59 60 61

我们现在使用readQFeatures函数。肽水平表达数据将作为类的实例导入RQFeatures命名cptac用一种叫做.我们也使用属性的行名肽序列分析。

库("QFeatures") cptac <- readQFeatures(f, ecol = i, sep = "\t", name = "peptides", fnames = "Sequence")

2编码实验设计

下面我们更新样例(列)注释,以编码两组6A和6B以及原始样例编号。

cptac$group <- rep(c("6A", "6B"), each = 3) cptac$sample <- rep(7:9, 2) colData(cptac)
##数据帧与6行2列##组样本## <字符> <整数> ##强度。6a_7 6A 7 ##强度。6a_8 6A 8 ##强度。6a_9 6A 9 ##强度。6b_7 6B 7 ##强度。6b_8 6B 8 ##强度。6b_9 6B 9 ##强度。6b_8 6B 8 ##强度。6b_9 6B 9 ##强度。6b_8 6B

3.过滤污染物和反向撞击

filterFeatures(cptac, ~ Reverse == "")
在1 / 1的试验中发现“反向”
类QFeatures的一个实例,包含1个assays: ## [1] peptides: summarizeexperiment with 11436行和6列
filterFeatures(cptac, ~电位。污染物== "")
# #的潜力。在1 / 1的检测中发现污染物
类QFeatures的一个实例,包含1个assays: ##[1]肽:summarizeexperiment with 11385行和6列
library("magrittr") cptac <- cptac %>% filterFeatures(~ Reverse == "") %>% filterFeatures(~ Potential。污染物== "")
在1 / 1的试验中发现“反向”
# #的潜力。在1 / 1的检测中发现污染物

4删除不需要的特征变量

上面读取的电子表格包含MaxQuant返回的许多变量,但在下游统计分析的框架中不一定是必需的。

rowDataNames (cptac)
##长度为1的字符列表[["peptides"]]序列N.term.cleavage.window…MS.MS.Count

下面我们唯一需要的是肽序列和蛋白质标识符。下面,我们存储这些感兴趣的变量,并使用selectRowData函数。

rowvars <- c("Sequence", "Proteins", "Leading.razor.protein") cptac <- selectRowData(cptac, rowvars) rowDataNames(cptac)
长度为1的字符列表[["peptides"]

5管理缺失值

在某些蛋白质组学实验中,缺失值可能非常多,需要仔细处理。第一步是在样本和特征中评估它们的存在。但在此之前,我们需要将0替换为NA函数将缺失的数据编码为0,因此MaxQuant使用zeroIsNA函数。

cptac <- 0 (cptac, i = seq_along(cptac))) nNA(cptac, i = seq_along(cptac))
## $nNA ##数据框架与1行3列##分析nNA pNA ## <字符> <整数> <数字> ## 1肽30609 44.9194 ## ## $nNArows ##数据框架与11357行和4列##分析名称nNA pNA ## <字符> <字符> <整数> <数字> ## 1肽AAAAGAGGAG…2多肽AAAALAGGK 0 0.0000 ## 3多肽AAAALAGGKK 0 0.0000 ## 4多肽AAADALSDLE…5肽AAADALSDLE…0 0.0000 ## ... ... ... ... ...## 11353肽YYSIYDLGNN…6 100.0000 ## 11354肽YYTFNGPNYN…3 50.0000 ## 11355多肽YYTITEVATR 4 66.6667 ## 11356多肽YYTVFDRDNN…6 100.0000 ## 11357多肽YYTVFDRDNN…6 100.0000 ## ## $nNAcols ##数据帧与6行和4列##分析名称nNA pNA ## <字符> <字符> <整数> <数字> ## 1肽强度....4669 41.1112 ## 2多肽强度.... 5388 47.4421 ## 3 peptides Intensity.... 5224 45.9981 ## 4 peptides Intensity.... 4651 40.9527 ## 5 peptides Intensity.... 5470 48.1641 ## 6 peptides Intensity.... 5207 45.8484

的输出。nNA函数告诉我们

  • 目前数据中有接近50%的值是缺失的;
  • 4051个多肽缺失值为0,989个多肽缺失值为1,3014个多肽仅由缺失值组成;
  • 6个样本的缺失值范围具有可比性,在4651到5470之间。

在这个数据集中,我们有如此多的肽而没有任何数据,因为这6个样本是一个更大数据集的子集,而这些肽恰好在a组和b组中不存在filterNA去除所有含有一个或多个缺失值的肽pNA = 0(这也是默认值)。

cptac <- filterNA(cptac, i = seq_along(cptac), pNA = 0
类QFeatures的一个实例,包含1个assays: ## [1] peptides: summarizeexperiment with 4051行和6列

如果我们想保留缺失值高达90%的肽,在这种情况下对应于那些只有一个值的肽(即缺失值的5/ 6%),我们可以设置机构到0.9。

6计算独特功能

计算样品中独特特征的数量可用于质量控制或评估不同条件或实验设置之间的识别效率。countUniqueFeatures可用于计数一个分析的每个样品中所包含的特征的数量QFeatures对象。例如,我们可以从样品中计算每个样品的(非缺失的)肽的数量化验。注意,计数自动存储在colDatacptac下,peptide_counts

cptac <- countUniqueFeatures(cptac, i = "peptides", colDataName = "peptide_counts") colData(cptac)
## DataFrame与6行3列##组样本peptide_counts ## <字符>   ##强度。6a_7 6A 7 4051 ##强度。6a_8 6A 8 4051 ##强度。6a_9 6A 9 4051 ##强度。6b_7 6B 7 4051 ##强度。6b_8 6B 8 4051 ##强度。6b_9 6B 9 4051 ##强度。6b_9 6B 8 4051 ##强度。6b_9 6B 9 4051 ##

我们还可以数出独特蛋白质的数量。因此,我们需要讲述countUniqueFeatures我们需要按蛋白质分组(蛋白质名称存储在rowData蛋白质):

cptac <- countUniqueFeatures(cptac, i = "peptides", groupBy = "Proteins", colDataName = "protein_counts") colData(cptac)
# # DataFrame与# # 6行和4列组样本peptide_counts protein_counts # # <人物> <整数> <整数> <整数> # # Intensity.6A_7 6 7 4051 1125 # # Intensity.6A_8 6 8 4051 1125 6 # # Intensity.6A_9 9 4051 1125 # # Intensity.6B_7 6 b 7 4051 1125 # # Intensity.6B_8 6 b 8 4051 1125 # # Intensity.6B_9 6 b 9 4051 1125

7归责

嫁祸于方法可以使用多种方法进行缺失值的imputation。该方法接受一个类的实例QFeatures(或SummarizedExperiment)作为输入,一个命名所需方法的字符(参见?嫁祸于获取包含详细信息的完整列表),并返回class的一个新实例QFeatures(或SummarizedExperiment)。

如详细描述在(Lazar et al. 2016),在LC/MSMS实验中,有两种机制导致缺失值。

  • 缺失值是由于没有检测到一个特征,尽管离子以可检测的浓度存在。例如,在离子抑制的情况下或由于随机,数据依赖性质的质谱采集方法。这些缺失值被期望在数据中随机分布,并被定义为随机失踪(3月)或完全随机失踪(MCAR)。

  • 生物学上相关的缺失值,由没有低丰度离子(低于仪器检测的极限)。这些缺失值不期望随机分布在数据中,并被定义为失踪不是随机的(MNAR)。

MAR值和MCAR值可以用许多imputation方法很好地处理。然而,MNAR数据需要一些关于生成缺失数据的底层机制的知识,以便能够尝试数据imputation。理想情况下,MNAR特征应该用left-censor(例如使用确定性或概率最小值)方法。反之,建议使用热的甲板方法(例如,最近邻居,最大似然等),当数据随机丢失。

混合imputation法。黑色单元格表示存在定量值,浅灰色对应缺失数据。两个感兴趣的组沿热图列用绿色和蓝色表示。左边标注了两类蛋白质:黄色是随机缺失值的蛋白质(如果有的话),而棕色的蛋白质是非随机缺失值的候选蛋白质。

图1:混合imputation法
黑色单元格表示存在定量值,浅灰色对应缺失数据。两个感兴趣的组沿热图列用绿色和蓝色表示。左边标注了两类蛋白质:黄色是随机缺失值的蛋白质(如果有的话),而棕色的蛋白质是非随机缺失值的候选蛋白质。

预计这两类缺失值的识别将取决于各种因素,如特征强度和实验设计。下面,我们使用混合imputation,对654个假设包含随机分布的缺失值(如果有)的特征应用最近邻imputation(图中黄色部分)1)和对35个显示缺失值的非随机模式(图中棕色)的蛋白质进行确定性最小值imputation1).

8数据转换

当使用参数方法(如t检验或线性模型)分析连续数据时,通常需要对数据进行对数变换。下图(左)显示了我们的数据主要是由小值组成,长尾的大值组成,这是定量组学数据的典型模式。

下面,我们使用logTransform函数对数据进行log2转换。这一次,我们将创建一个新的肽分析来包含log2转换的数据,而不是重写肽分析。

cptac <- addAssay(cptac, logTransform(cptac[[1]]), name = "peptides_log") cptac
## [2] peptides_log: summarizeexperiment with 4051行和6列

addAssay ()函数是将新的分析添加到a的一般函数QFeatures对象。使用下面的语法,上面的步骤也可以很有趣,它隐式返回一个updatedQFeatures对象。

logTransform(cptac, i = "peptides", name = "log_peptides")
par(mfrow = c(1,2)) limma:: plot密度(化验(cptac[[1]])) limma:: plot密度(化验(cptac[[2]])))
左为原始尺度的定量数据,右为log2变换后的定量数据。

图2:左为原始尺度的定量数据,右为log2变换后的定量数据

9正常化

化验的QFeatures对象可以用正常化函数。归一化的类型由方法参数;下面,我们使用分位数归一化,将归一化数据存储到一个新的实验中,并将结果数据可视化。

cptac <- addAssay(cptac, normalize(cptac[["peptides_log"]], method = "center.median"), name = "peptides_norm"
## [1] peptide: summarizeexperiment with 4051行和6列## [2]peptides_log: summarizeexperiment with 4051行和6列## [3]peptides_norm: summarizeexperiment with 4051行和6列

如上所述,normalize ()函数也可以直接应用于QFeatures对象。

Normalize (cptac, I = "log_peptides", name = "lognorm_peptides", method = "center.median")
par(mfrow = c(1, 2)) limma:: plot密度(化验(cptac[["peptides_log"]])) limma:: plot密度(化验(cptac[["peptides_norm"]])))
中位数归一化前(左)和后(右)log2肽强度分布。

图3:中位数归一化前(左)和后(右)log2肽强度分布

10功能聚合

在这个阶段,可以直接使用肽水平强度来进行统计分析(戈明明,吉瓦特和克莱门特2016年),或将肽水平数据汇总为蛋白质强度,并在蛋白质水平上进行差异表达分析。

要聚合特征数据,可以使用aggregateFeatures函数,该函数接受以下输入:

  • 的名称QFeatures包含肽定量数据的实例-“cptac”在我们的例子中;
  • :包含(规范化)肽定量数据的测定方法的名称或索引-“peptides_norm”在我们的情况下;
  • fcol:特征变量(在上面的实验中)用于定义要聚合的肽-“蛋白质”在这里,假设我们想要聚合属于一个蛋白质(组)的所有肽;
  • 的名字:新的聚合体测定方法的名称-“蛋白质”在这种情况下;
  • 最后有趣的,将计算此聚合的函数-我们将使用默认值,即robustSummary(Sticker et al. 2019)
cptac <- aggregateFeatures(cptac, i = "peptides_norm", fcol = "Proteins", name = "Proteins"
## [1] peptide:总结实验4051行6列## [2]peptides_log:总结实验4051行6列## [3]peptides_norm:总结实验4051行6列## [4]proteins:总结实验1125行6列

我们得到了最终的1125个定量蛋白蛋白质化验。下面,我们展示了前6种蛋白质及其各自变量的定量数据。后者显示了在聚合步骤中使用的肽的数量(营收列)。

(试验(cptac[[“蛋白质”]]))
# # # # Intensity.6A_7 Intensity.6A_8 P00918ups | CAH2_HUMAN_UPS -1.1215216 - -1.379182 # # P01008ups | ANT3_HUMAN_UPS; CON__P41361 -1.5422314 - -2.248132 # # P01127ups | PDGFB_HUMAN_UPS -1.9097789 - -1.459409 # # P02144ups | MYG_HUMAN_UPS -1.5447867 - -1.802439 # # P02753ups | RETBP_HUMAN_UPS -0.5570714 - -1.565853 # # P02787ups | TRFE_HUMAN_UPS -1.6165226 - -1.387464 # # Intensity.6A_9 Intensity.6B_7 # # P00918ups | CAH2_HUMAN_UPS -1.729731 - -0.08402797 # # P01008ups | ANT3_HUMAN_UPS; CON__P41361 -2.027588 - -1.64110874 # #|MYG_HUMAN_UPS -1.081029 -0.49570667 ## p0275ups |RETBP_HUMAN_UPS -1.806130 0.03241792 ## P02787ups|TRFE_HUMAN_UPS -2.014992 -0.22328799 ## P01008ups|ANT3_HUMAN_UPS;CON__P41361 -1.6201035 -1.88043072 ## P02144ups| PDGFB_HUMAN_UPS 0.4099189 -1.19416255 ## P02753ups|RETBP_HUMAN_UPS -0.6263334 -0.20902837 ## ##P02787ups|TRFE_HUMAN_UPS 0.1491834 -0.20422237
rowData (cptac[[“蛋白质”]])
##数据帧1125行和3列##蛋白质Leading.razor.protein ## <字符> <字符> ## P00918ups|CAH2_HUMAN_UPS P00918ups|…P00918ups |…CON__P41361 P01008ups|…P01008ups |…## P01127ups|PDGFB_HUMAN_UPSP01127ups |…MYG_HUMAN_UPS P02144ups|…P02144ups |…## P02753ups|RETBP_HUMAN_UPS |…P02753ups |… ## ... ... ... ## sp|Q99207|NOP14_YEAST sp|Q99207|... sp|Q99207|... ## sp|Q99216|PNO1_YEAST sp|Q99216|... sp|Q99216|... ## sp|Q99257|MEX67_YEAST sp|Q99257|... sp|Q99257|... ## sp|Q99258|RIB3_YEAST sp|Q99258|... sp|Q99258|... ## sp|Q99383|HRP1_YEAST sp|Q99383|... sp|Q99383|... ## .n ##  ## P00918ups|CAH2_HUMAN_UPS 1 ## P01008ups|ANT3_HUMAN_UPS;CON__P41361 1 ## P01127ups|PDGFB_HUMAN_UPS 1 ## P02144ups|MYG_HUMAN_UPS 1 ## P02753ups|RETBP_HUMAN_UPS 2 ## ... ... ## sp|Q99207|NOP14_YEAST 1 ## sp|Q99216|PNO1_YEAST 1 ## sp|Q99257|MEX67_YEAST 2 ## sp|Q99258|RIB3_YEAST 2 ## sp|Q99383|HRP1_YEAST 2

我们可以快速了解一下营收通过计算下面的表格,我们可以看到405个蛋白质是基于一个肽段,230个蛋白质是基于两个肽段,119个蛋白质是基于三个肽段,还有一个蛋白质是由44个肽段聚合而成。

构成了rowData (cptac表([[“蛋白质”]]).美元)
## ## 12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 ## 405 230 119 84 64 53 37 29 24 24 13 9 4 33 7 31 11 ## 21 22 23 24 25 30 31 33 44 ## 12 21 11 11 11 11 11

让我们选择P02787ups | TRFE_HUMAN_UPS并在蛋白和肽水平上观察其在两组中的表达规律。

library("ggplot2") library("dplyr") longFormat(cptac["P02787ups|TRFE_HUMAN_UPS",]) %>% as.data.frame() %>% mutate(group = ifelse(grepl("A", colname), "A", "B")) %>% mutate(sample = sub("Intensity\\.", "" ", colname)) %>% ggplot(aes(x = sample, y = value, color = rowname, shape = group)) + geom_point() + facet_grid(~ assay))
##协调输入:##删除12个不在名字中的sampleMap行(实验)
蛋白*P02787ups|TRFE_HUMAN_UPS*(右,绿色)及其多肽(左)在A组(圆)和B组(三角形)中的表达强度。

图4:蛋白质的表达强度P02787ups | TRFE_HUMAN_UPS(右,绿色)及其肽(左)在A组(圆)和B组(三角形)

11待办事项

  • 改进数据可视化。

12另请参阅

会话信息

## R版本4.2.1(2022-06-23)##平台:x86_64-pc-linux-gnu(64位)##运行在Ubuntu 20.04.5 LTS ## ##矩阵产品:默认## BLAS: /home/biocbuild/bbs-3.16-bioc/R/lib/libRblas。/home/biocbuild/bbs-3.16-bioc/R/lib/libRlapack。所以## ## locale: ## [1] LC_CTYPE=en_US。UTF-8 LC_NUMERIC= c# # [3] LC_TIME=en_GB LC_COLLATE= c# # [5] LC_MONETARY=en_US。utf - 8 LC_MESSAGES = en_US。UTF-8 ## [7] LC_PAPER=en_US。UTF-8 LC_NAME= c# # [9] LC_ADDRESS=C lc_phone = c# # [11] LC_MEASUREMENT=en_US。UTF-8 LC_IDENTIFICATION=C ## ##附加的基本包:## [1]stats4 stats graphics grDevices utils datasets methods ##[8]基础## ##其他附加包:[7] SummarizedExperiment_1.28.0 Biobase_2.58.0 ## [11] IRanges_2.32.0 S4Vectors_0.36.0 ## [13] BiocGenerics_0.44.0 MatrixGenerics_1.10.0 ## [15] matrixStats_0.62.0 BiocStyle_2.26.0 ## ##通过命名空间加载(并且没有附加):## [1] sass_0.4.2 jsonlite_1.9.3 [4] bslib_0.4.0 assertthat_0.2.1 BiocManager_1.30.19 ## [7] highr_0.9 msdata_0.37.0 GenomeInfoDbData_1.2.9 ## [10] yaml_2.3.6 pillar_1.8.1 lattice_0.20-45 ## [13] glue_1.6.2 limma_3.54.0 digest_0.6.30 ## [19] Matrix_1.5-1 BiocBaseUtils_1.0.0 pkgconfig_2.0.3 ## [22] magick_2.7.3 bookdown_0.29 zlibbioc_1.44.0 ## [25] scales_1.2.1 tibble_3.1.8 generics_0.1.3 ## [28] farver_2.1.1[37] tools_4.2.1 lifecycle_1.0.3 string_1 .4.1 ## [40] munsell_0.5.0 cluster_2.1.4 DelayedArray_0.24.0 ## [43] compiler_4.2.1 jquerylib_0.1.4 caTools_1.18.2 ## [46] rlang_1.0.6 grid_4.2.1 RCurl_1.98-1.9 ## [49] MsCoreUtils_1.10.0 igraph_1.3.5 bitops_1.0-7 ## [52] labeling_0.4.2 rmarkdown_2.17 gtable_0.3.1 ## [55] DBI_1.1.3 R6_2.5.1 knitr_1.40 ## [58] fastmap_1.1.0utf8_1.2.2 clue_0.3-62 ## [61] ProtGenerics_1.30.0 KernSmooth_2.23-20 stringi_1.7.8 ## [64] Rcpp_1.0.9 vctrs_0.5.0 tidyselect_1.2.0 ## [67] xfun_0.34

参考文献

考克斯,J, M,曼,2008。MaxQuant能够实现高肽识别率,个性化p.p.b.范围的质量精度和蛋白质组范围的蛋白质定量。”生物科技Nat》26(12): 1367-72。https://doi.org/10.1038/nbt.1511

高明明,L J, K Gevaert, L Clement. 2016。“肽水平稳健岭回归提高了依赖数据的定量无标签鸟枪蛋白质组学的估计、敏感性和特异性。”Mol细胞蛋白质组学15(2): 657-68。https://doi.org/10.1074/mcp.M115.055897

拉扎尔,C, L Gatto, M Ferro, C Bruley和T Burger, 2016。“解释无标签定量蛋白质组数据集中缺失值的多重性质,以比较Imputation策略。”J蛋白质组Res15(4): 1116-25。https://doi.org/10.1021/acs.jproteome.5b00981

鲍洛维奇,阿曼达·G,迪恩·比尔海默,艾米-琼·L·哈姆,洛伦佐·维加-蒙托托,保罗·A·鲁德尼克,大卫·L·塔布,王沛等。2010。“表征酵母性能标准的实验室间研究,以基准LC-MS平台性能。”摩尔。细胞。蛋白质组学9(2): 242-54。

斯蒂克,阿德里安,卢格尔·戈明尼,伦纳特·马丁斯,利芬·克莱门特,2019年。蛋白质组范围内无标签量化的稳健总结和推断bioRxivhttps://doi.org/10.1101/668863