根据自己的需求选择对应的癌症,然后下载,这里就不展开讲了。以下为下载的数据目录
从CPTAC下载的蛋白质数据很多都是有缺失值的,这样不利于我们后期分析,所以需要对这些缺失值进行补缺,然后校正(归一化)。
首先新建空文件夹名为1_数据补缺校正,将下载的第二个文件(肿瘤文件)复制到空文件夹中
然后新建的txt文件,名为input.txt,将复制到空文件夹的表格内容粘贴到input.txt中,然后保存
之后在新建的空文件夹新建脚本,脚本代码如下所示:
if (!requireNamespace("BiocManager", quietly = TRUE))
install.packages("BiocManager")
BiocManager::install("impute")
if (!requireNamespace("BiocManager", quietly = TRUE))
install.packages("BiocManager")
BiocManager::install("limma")
library(impute)
library(limma)
setwd("C:\\Users\\Administrator\\Desktop\\cptac\\1_数据补缺校正") #设置工作目录
file="input.txt" #输入文件名字
#读取file并对基因整理
rt=read.table(file,sep="\t",header=T,check.names=F,row.names=1)
rt=as.matrix(rt)
#选取数值,需要修改
#selectCol=seq(2,ncol(rt),2) #保留列号为偶数的列,如果需要保留列号为奇数的列,把第一个2改成1
#rt=rt[,selectCol]
#数据补缺
mat=impute.knn(rt)
rt=mat$data
#对数据进行矫正
normalizeData=normalizeBetweenArrays(as.matrix(rt))
#输出结果
normalizeData=rbind(geneNames=colnames(normalizeData),normalizeData)
write.table(normalizeData,file="normalize.txt",sep="\t",quote=F,col.names=F)
最后将上述代码复制到R中运行,运行完在名为1_数据补缺校正的文件夹中就会有normalize.txt了。至此就实现了数据补缺和校正
差异分析肯定是对某个类别进行的分析,比如对性别、癌症的诊断方式等,这里我们以癌症患者的性别进行分组演示。
首先新建文件夹为2_分组分析,将数据补缺校正得到的normalize.txt文件和数据库下载的临床文件复制到该文件夹中
接着新建文本文件sample1.txt和sample2.txt,将排序之后的临床文件的female对应的id复制粘贴到sample1.txt中,将male对应的id复制粘贴到sample2.txt中
然后建立perl脚本文件cptac_group.pl,在此文件夹目录下打开powershell,输入perl cptac_group.pl,(此脚本太大了,代码就先不放了)程序运行完即可显示sample1和sample2对应的样本数,并且在文件夹下按照sample1和sample2的顺序生成了新的样本表达文件sampleExp.txt
至此,样本分组完毕
在进行完上面三步之后,接下来就可以进行差异分析了,步骤如下:
新建空白文件夹3_差异分析,并将数据分组之后的结果sampleExp.txt复制到该文件夹下
新建R语言脚本cpta_diff.R,其代码如下:
setwd("C:\\Users\\Administrator\\Desktop\\cptac\\3_差异分析") #设置工作目录
inputFile="sampleExp.txt" #输入文件
pFilter=0.05 #p值临界值
logFCfilter=0 #logFC临界值
conNum=56 #sample1组样品数目
treatNum=41 #sample2组样品数目
#读取输入文件
outTab=data.frame()
group=c(rep(1,conNum),rep(2,treatNum))
data=read.table(inputFile,sep="\t",header=T,check.names=F,row.names=1)
data=as.matrix(data)
#差异分析
for(i in row.names(data)){
geneName=i
rt=rbind(expression=data[i,],group=group)
rt=as.matrix(t(rt))
tTest<-t.test(expression ~ group, data=rt)
pvalue=tTest$p.value
conGeneMeans=mean(data[i,1:conNum])
treatGeneMeans=mean(data[i,(conNum+1):ncol(data)])
logFC=treatGeneMeans-conGeneMeans
conMed=median(data[i,1:conNum])
treatMed=median(data[i,(conNum+1):ncol(data)])
diffMed=treatMed-conMed
if( ((logFC>0) & (diffMed>0)) | ((logFC<0) & (diffMed<0)) ){
outTab=rbind(outTab,cbind(gene=i,conMean=conGeneMeans,treatMean=treatGeneMeans,logFC=logFC,pValue=pvalue))
}
}
#输出所有蛋白的差异情况
write.table(outTab,file="all.xls",sep="\t",row.names=F,quote=F)
#输出差异表格
outDiff=outTab[( abs(as.numeric(as.vector(outTab$logFC)))>logFCfilter & as.numeric(as.vector(outTab$pValue))
然后打开R软件,粘贴此代码运行,最终在文件夹下即可得到结果,如下图所示:
其中:
至此,蛋白质组的差异分析就结束了,如果需要作图,用表格的差异数据在graphpad可自行作图。