青莲干货 | 一文详解蛋白质组学数据归一化

2024-08-01 12:23:23, 莲莲看 北京青莲百奥生物科技有限公司


  摘要  

本文将全面介绍蛋白质组数据归一化的必要性,各种方法以及效果差别,帮助读者全面理解这一重要过程。

并附上简单R语言的实现方法和一个在线做归一化的平台Bioladder生信云(http://bioladder.cn)。

01

蛋白质组数据归一化的必要性

在生物学实验中,实验条件、上样量和技术变异等因素会导致样本之间的整体偏差,使得实际相似的定量值出现差异。因此,蛋白质组数据的归一化是蛋白质组学研究中的关键步骤,旨在消除实验过程中的系统性偏差,从而使不同样本间的数据可以进行有效比较。

02

常见蛋白质组数据归一化的方法分类

蛋白质组数据归一化的方法有以下分类:

批次内归一化

  • 基于单个锚定数据的归一化:中值归一化系列、总量归一化、最大值归一化

  • 基于全局数据的归一化:线性函数归一化、分位数归一化、Z-Score归一化

批次间归一化:

  • ComBat批次矫正

  • RUV (Remove Unwanted Variation)批次矫正

下面为大家介绍不同场景下的详细应用介绍,文末有汇总,点击关注不迷路!

中值归一化(Median Normalization)

方法:即每列数据除以该列数据的中位数。

说明:采用中值归一化的前提假设是,需要比对的多个样本中,大部分蛋白的表达量是相似的。而中位数是大部分蛋白所集中的点,受该样本的极大值或极小值定量影响很小,把每个样本的定量中值归一化成一个相等的值,可以有效地保证归一化后,大部分蛋白的表达量区间相似。在蛋白组学中基本上是最常见,最常用的算法。

R语言中的实现方法:

# 读取原始数据文件df = read.delim("https://www.bioladder.cn/shiny/zyp/bioladder2/demoData/normalize/demo.txt",# 这里读取了网络上的demo数据,将此处换成你自己电脑里的文件                row.names = 1  # 指定第一列为行名,根据实际数据修改)
# 中位数归一化nor_median=function(x){ y=na.omit(x) return(x/median(y))}dfmedian = apply(df, 2,nor_median) # 2是对列进行计算;1是对行进行计算

共有蛋白中值归一化

方法:即每列数据除以共有蛋白的中位数。

说明:与中值归一化相比,碰到部分特殊结果,也即部分样本鉴定数量少地多(比如只有其它样本的1/2甚至更少),直接用中值归一化会导致整体的偏移,因此只用共有蛋白做归一化。共有蛋白做归一化假设在所有样本中共有蛋白质的总体表达水平是稳定的,即这些蛋白质的表达不受生物学差异的显著影响

劣势:依赖共有蛋白质,如果样本中共有蛋白质数量较少,或这些共有蛋白质的表达不稳定,归一化效果会受到影响。

R语言中的实现方法:

# 共有蛋白中值归一化library(tidyverse)
# 定义一个函数 rmnaMedianNormalize,用于中位数归一化rmnaMedianNormalize = function(x, df) { median = median(x[complete.cases(df)]) # 计算非缺失值的中位数 x / median # 返回归一化后的值,每个值除以中位数}
# 使用 dplyr 的管道操作 %>%dfrmnaMedian = df %>% # 将 df 数据框作为输入 mutate(across( # 使用 mutate 和 across 对所有数值列应用同一函数 where(is.numeric), # 选择所有数值型列 ~rmnaMedianNormalize(.x, df) # 调用 rmnaMedianNormalize 函数,.x 表示每列的数据向量 ))

保留原始丰度的中位数归一化

方法:即做完中位数归一化后,再对所有数乘以常数因子(刚才最大的中位数)。

说明:跟中位数归一化相比,归一化后的数据丰度大小与之前保持相同。如后续做log转换,基本不会出现负数,如后续分析要求非负矩阵时尤为有用。

总量归一化

方法:即每列数据除以该列数据的和。

说明:前提假设是,所有样本的总表达量相似,若样本间总表达量差异较大时效果不佳。这种方法在转录组中用得比较多,包括RNA-seq中常用的RPKM等。

R语言中的实现方法:

# 总和归一化nor_sum=function(x){  y=na.omit(x)  return(x/sum(y))}dfsum = apply(df, 2,nor_sum)  # 2是对列进行计算;1是对行进行计算

最大值归一化

方法:每个数减去该列的最大值。

说明:前提假设是,每个样本的最大值蛋白相似,且定量较稳定。用得不多。单靠一个最大值,变异度较大。

R语言中的实现方法:

nor_max=function(x){  y=na.omit(x)                # 去除空值  return(x/max(y))}dfmax = apply(df, 2,nor_max)  # 2是对列进行计算;1是对行进行计算

线性函数归一化

方法:每个数减去该列的最小值,再除以个最大值和最小值的差。

说明:是对原始数据的线性变换,使结果值映射到[0-1]之间,保留源数据存在的关系,消除取值范围最简单的方法,不过,极易受个别离群值影响,如果数据集中某个数值很大,其他各值归一化后会接近0。这种方法的假设是,各个样本中,最大值和最小值都是相似的。

在机器学习应用的颇多,尤其是使用梯度下降法的算法,如线性回归、逻辑回归和神经网络。

劣势:极端值影响很大,如果数据中存在异常值,会严重影响归一化效果,因为最大值和最小值会受到极端值的影响。

R语言中的实现方法:

# 线性函数归一化nor_min_max=function(x){  y=na.omit(x)  return((x - min(y))/(max(y) - min(y)))}dfmin_max = apply(df, 2,nor_min_max)  # 2是对列进行计算;1是对行进行计算

分位数归一化

方法:

  1. 排序:对每个样本的数据按升序排序。

  2. 计算分位数平均值:对所有样本的每个分位数位置的数值求平均值,得到分位数平均值向量。

  3. 替换原数据:将每个样本中排序后的数据替换为分位数平均值向量中的对应值。

  4. 还原排序:将替换后的数据按照原始顺序还原。

说明:前提假设是样本间具有相似的分布且需要较大的数据量,在其他组学中微阵列数据和RNA-Seq数据的归一化处理中应用的多一些。

劣势:生物学解释复杂,在生物数据中,归一化后的数据可能难以解释生物学意义,因为它改变了原始数据的实际分布。

R语言中的实现方法:

分位数归一化limma::normalizeQuantiles(df)

Z Score 归一化

方法:每个数减去该列的平均值,再除以标准差。

Z Score归一化的公式如下:

其中:

  • x是原始数据值,

  • μ是数据的均值,

  • σ是数据的标准差,

  • z是归一化后的数据值。

说明:经过处理的数据符合标准正态分布,即均值为0,标准差为1。这种方法的假设是,每个样本的定量值服从正态分布,大部分蛋白表达量相似,且方差也相似。

应用:在绘制热图时,Zscore归一化基本上都是要做的,可以更清楚地通过热图看清数据的分布。另外在机器学习应用的颇多,如支持向量机(SVM)、k近邻(k-NN)、线性回归和逻辑回归,数据标准化有助于提高模型性能。

R语言中的实现方法:

dfZScore = scale(df)

ComBat批次矫正

原理:使用贝叶斯框架来调整批次效应,适用于大多数高通量数据,包括基因表达、蛋白质组学和代谢组学数据。

优点:对不同类型的数据适用,并且可以处理具有多个批次的数据。

实现:可以在R语言的sva包中找到该方法。

library(sva)library(bladderbatch)  # 用于加载 bladderbatch包中的示例数据集# 加载数据data(bladderdata)  dat <- bladderEset[1:50,]  # 选择 bladderEset 数据集的前50行作为分析数据集
pheno = pData(dat) # 从数据集中提取表型数据edata = exprs(dat) # 从数据集中提取基因表达数据batch = pheno$batch # 提取批次信息mod = model.matrix(~as.factor(cancer), data=pheno) # 创建一个设计矩阵,用于调整模型
# 加载# parametric adjustment 参数化调整combat_edata1 = ComBat(dat=edata, # 指定原始数据(基因表达数据)。 batch=batch, # 指定批次信息。 mod=NULL, # 表示没有使用设计矩阵,只进行参数化调整。 par.prior=TRUE, # 指定使用参数化先验。 prior.plots=FALSE)
# reference-batch version, with covariates 参考批次版本,带有协变量combat_edata3 = ComBat(dat=edata, batch=batch, mod=mod, # 指定了先前创建的模型设计矩阵作为协变量。 par.prior=TRUE, ref.batch=3) # 指定批次3作为参考批次。

RUV (Remove Unwanted Variation)批次矫正

原理:通过添加潜在因素来解释和消除批次效应,通常使用已知的不变基因或探针。

优点:灵活性高,可以根据具体数据特点进行调整。

实现:在R语言的ruv包中可以找到该方法。

总结

以下是各种批次内归一化方法的简短比较表格,包括定义、公式、方法、假设前提、应用范围、优点和缺点。

这张表格概括了每种归一化方法的关键特性,帮助选择适合具体应用的数据归一化方法。

03

BioLadder云平台免费在线做归一化

不想写代码?可以用BioLadder生信云平台在线做归一化。

目前BioLadder已经支持了以下归一化的方式

  • 中值归一化

  • 共有蛋白中值归一化

  • 线性函数归一化

  • ZScore归一化

网址:归一化-BioLadder生物信息在线分析可视化云平台www.bioladder.cn/web/#/chart/48






关注青莲百奥


  • 客服电话: 400-6699-117 转 1000
  • 京ICP备07018254号
  • 电信与信息服务业务经营许可证:京ICP证110310号
  • 京公网安备1101085018
  • 客服电话: 400-6699-117 转 1000
  • 京ICP备07018254号
  • 电信与信息服务业务经营许可证:京ICP证110310号
  • 京公网安备1101085018

Copyright ©2007-2026 ANTPEDIA, All Rights Reserved