下载四个为例:存放到工作路径中
library(GEOquery)
library(dplyr)
library(tidyverse)
library(affy)
data <- ReadAffy()#读取得到S4对象
第一步:质量控制(直接观察,平均值方法,数据拟合方法分别由image函数,simpleaffy包,affyPLM包实现)
1、直接观察:图像特别黑,说明型号的强度低,图像特别亮,说明信号强度可能过饱和。(在灰度图中不要出现大面积的黑色或白色即可)
# 查看第一张芯片的灰度图像
image(data[,1])
data[,1]
2、simpleaffy包获取质量分析报告,但这个包好像是基于3.0.0以下版本的R软件,所以没有实现。
第一列为所有样本的名称
第二列为检出率和平均背景噪声
第三列蓝色为实现尺度尺子,取值(-3,3),圆形不能超过1.25,否则数据质量不好,三角形不能超过3,否则数据质量不好
bioB说明芯片检测质量没有达标
3、affyPLM包
根据计算结果画权重图,残差图和残差符号图。同样,不要出现大面积异类颜色即可。
library(affyPLM)
Pset <- fitPLM(data)
#### 根据计算结果,画权重图
image(Pset, type="weights", which=1, main="Weights")
####根据计算结果,画残差图
image(Pset, type="resids", which=1, main="Residuals")
####根据计算结果,画残差符号图
image(Pset, type="sign.resids", which=1, main="Residuals.sign")
4、查看总体质量:
一个样本所有探针组的相对对数表达(RLE)分布和相对标准差(NUSE)箱线图表示。
library(affyPLM)
library(RColorBrewer)
# 对数据集做回归计算
Psel<-fitPLM(data)
# 载入一组颜色
colors<-brewer.pal(4,"Set3")
# 绘制RLE箱线图
Mbox(Pset, ylim=c(-1,1),col=colors,main="RLE",las=3)
##绘制NUSE箱线图
boxplot(Pset,ylim=c(0.95,1.05),col=colors,main="NUSE",las=3)
5、查看RNA降解曲线
###获取降解数据
data.deg <- AffyRNAdeg(data)
# 载入一组颜色
colors <- brewer.pal(4, "Set3")
##这里的4代表是4种颜色 如果simple的数量超过4时,要更改数量。
# 绘制RNA降解图
plotAffyRNAdeg(data.deg, col=colors)
legend("topleft", rownames(pData(data)), col=colors, lwd=1, inset=0.05, cex=0.5)
6、从聚类分析角度查看数据质量(PCA)
芯片数据标准化(基于RMA和gcRMA两种方法),crma来对数据进行预处理。
library(affycoretools)
###使用gcrma算法来预处理数据
CLLgcrma<-gcrma(data)
# 提取基因表达矩阵
eset<-exprs(CLLgcrma)
# 计算样品两两之间的Pearson相关系数
pearson_cor<-cor(eset)
# 得到Pearson距离的下三角矩阵
dist.lower<-as.dist(1-pearson_cor)
# 聚类分析
hc<-hclust(dist.lower,"ave")
plot(hc)
######## pca分析
x= paste("sclc.Tumer", 1:2, sep = "-")
y=paste("sclc.N", 1:2, sep = "-")
z=c(x,y)
##z是一个向量,将样本进行定义,用于下面的因子转化。
samplenames<-sub(pattern="\\.CEL.gz", replacement = "",colnames(eset))
groups<-samplenames
library(ggplot2)
install.packages("FactoMineR")
install.packages("factoextra")
##自定义一个函数
pca_plot = function(dddd,ggggg){
library("FactoMineR")
library("factoextra")
df.pca <- PCA(t(dddd), graph = FALSE)
fviz_pca_ind(df.pca,
#axes = c(2,3),
geom.ind = "point",
col.ind = ggggg ,
addEllipses = TRUE,
legend.title = "Groups"
)
}
##将结果可视化。画出pca图
pca_plot(eset,groups)
第二步:背景矫正(去除背景噪声)
Affy基因芯片基础知识:Affy基因芯片的探针长度为25个碱基,每个mRNA用11~20个探针去检测,这一组探针叫做probe sets。探针较短,为保证特异性,设计了两种探针,一类探针与基因完全匹配,PM probes,另一类为不匹配的探针,MM probes。PM和MM探针成对出现,,可以用函数查看每个探针的检测情况。
背景处理:去除芯片背景噪声,MAS和RMA为最常用两种方法。
##用pm和mm函数可查看每个探针的检测情况
mm.data.raw <- mm(data)
head(mm.data.raw, 2)
pm.data.raw <- pm(data)
head(pm.data.raw, 2)
###上面显示的列名称就是探针的名称。而基因名称用probeset名称表示:
head(geneNames(data))
##probeset不一定和实际基因一一对应,这些后面对探针进行基因名称映射时会看到。
##使用RMA方法消减芯片背景噪声。
data.rma <- bg.correct(data, method="rma")
##使用MAS方法消减芯片背景噪声。
data.mas <- bg.correct(data, method="mas")
###MAS方法应用后PM和MM的信号强度都被重新计算。
###RMA方法仅使用PM探针数据,背景调整后MM的信号值不变。
第三步:归一化处理
同一个RNA样本用相同类型的几个芯片进行杂交,获得的结果不可能完全相同,甚至差别很大,为使不同芯片获得的结果具有可比性,需进行归一化处理。
##1、线性缩放方法 常数(constant)
data.mas.ln <- normalize(data.mas, method = "constant")
##线性缩放方法以第一块芯片为参考,它的数值没有被处理,
##而其他芯片都被缩放了。对同一块芯片,不同探针的缩放倍数是一个常数(constant)
##2 非线性缩放方法
data.mas.nl <- normalize(data.mas, method = "invariantset")
## 3 分位数(quantile)方法
data.mas.qt <- normalize(data.mas, method = "quantiles")
第四步:汇总
使用合适的统计方法通过probe sets的杂交信号计算出基因的表达量
eset.rma.liwong <- computeExprSet(data.mas.qt, pmcorrect.method="pmonly", summary.method="liwong")
以上只是演示原始数据的处理过程,注意理解每一步用到的统计学知识,可以使用自动化函数直接代替上述操作:
eset.mas <- expresso(data, bgcorrect.method="mas", normalize.method="constant",
pmcorrect.method="mas", summary.method="mas")