蛋白质组学定量 Normalization 方法之一

Normalization 是为了样本之间可以比较,用来矫正系统误差。例如上样量A样本是B样本的两倍,最后得出A样本里所有蛋白都是B样本蛋白的两倍,显然是不对的。这种现象在基因测序中也存在,例如测序深度差异等,常用的R包 edgeR 等也有不同的 Normalization 方法。
最简单最粗暴的方法是假设是大部分蛋白是没有发生变化的,只有少数改变了,只要每个样本除以自身所有蛋白丰度和,就可以矫正误差。但显然也有明显的弊端,如果某些蛋白丰度极高,凭一己之力改变了丰度之和,就无法正确矫正。如下

A B
1 2
2 4
3 6
10 8

因此,将丰度总和作为Normalization是不太可取的。因此也有其他的一些方法,取出样本中一部分代表总体来进行矫正。例如取中位数,取四分之一和四分之三分位数之间的样本来剔除极端值等。

参考

下面文章来自 Nature -- Proteogenomics connects somatic mutations to signalling in breast cancer

QC 过滤

首先作者对样本进行了过滤。reference 是混合样本,因为无论是 TMT 还是 iTRAQ 标记都只能标记有限样本,需要一个混合样本做参照,使在不同批次间可以比较。我们看下图每个样本与 reference的比值取对数结果大部分是符合预期的单峰分布(右),以0(1倍)为中心高斯(正太)分布,也有一些样本是明显的双峰分布(左)。



作者使用 R 包 mclust 双重高斯混合模型进行聚类,较小均值的77个样本通过QC。


Normalization


其实用的就是 z-score 方法的变种,(x-均值)/标准差 。区别是,这里并不是用的总样本的标准差。
首先假设样本中只有一部分蛋白发生了改变,另一部分没有发生改变,双峰原因是因为污染等,而没有发生上下调的蛋白拥有较小的标准差。
为了归一化前面讲的进样样和系统误差,采用了下面方式,使用 mixtools 包。

以单峰模型估计出均值

library(mixtools)
d<-density(na.omit(dat1[,1]), bw="SJ", kernel="gaussian") # Gaussian kernel density estimate
m <- d$x[which.max(d$y)] # 众数作为均值
plot(d)
image.png

双峰模型估计两个标准差

model<-normalmixEM(na.omit(dat1[,1]),mean.constr=c(m,m))
sigma = min(model$sigma)
plot(model,2)

使用最小的标准差标准化

(dat1[,1] - m)/sigma

效果

矫正前


校正后

最后

如有错误,欢迎指正
其他方法参考文献 A systematic evaluation of normalization methods in quantitative label-free proteomics

你可能感兴趣的:(蛋白质组学定量 Normalization 方法之一)