欢迎光临散文网 会员登陆 & 注册

生信代码分享,有手就行,列表基因内部相关性分析

2023-01-14 21:11 作者:光热生物  | 我要投稿

#install.packages("corrplot")

#本代码需要准备的输入数据为如下:

#1.基因列表文件,无表头的,可以是FPKM或TPM或微阵列数据

#2.表达矩阵文件,第一行为样本名,第一列为基因名

library(limma)

library(corrplot)

setwd("C:\\MetaCode\\1.Bioinformatics.Correlation.Analysis")   #设置工作目录,注意是双斜杠,不可以出现空格、中文。

rt=read.table("表达矩阵.txt",sep="\t",header=T,check.names=F)#读取表达矩阵文件,被命名为rt,它是有表头的,按\t分隔,不对它的名字进行检查,如果是TCGA的数据,没有“check.names=F”,那么“-”会被转为“.”

rt=as.matrix(rt)#将rt转为矩阵

rownames(rt)=rt[,1]#rt的第一列是行名

exp=rt[,2:ncol(rt)]#rt第二列开始到最后一列是表达量

dimnames=list(rownames(exp),colnames(exp))#在构建矩阵的时候确定矩阵的行名和列名

data=matrix(as.numeric(as.matrix(exp)),nrow=nrow(exp),dimnames=dimnames)#在构建矩阵的时候确定矩阵的行名和列名,此时我们的矩阵文件被命名为data文件

data=avereps(data)#如果存在基因名重复的话,对重复的基因取平均值。

#data=data[rowMeans(data)>0,]#R 语言中的 rowMeans() 函数用于找出 DataFrame 、矩阵或数组的每一行的均值,也就是说,通过这行代码可以去除表达均值为负数的基因。在现实应用中,我们往往去除低表达的基因,因为低表达的基因可能是干扰、噪音,特别是在转为TPM格式且与微阵列数据进行combat算法的合并的时候,因为GEO的数据往往偏大。

data=log2(data+1)#进行log2标准化,可以将数据拉到一定的范围,为了避免出现表达量为0导致报错的情况,一般统一加个1。数据的标准化(normalization)是将数据按比例缩放,使之落入一个小的特定区间。在某些比较和评价的指标处理中经常会用到,去除数据的单位限制,将其转化为无量纲的纯数值,便于不同单位或量级的指标能够进行比较和加权。标准一般化不会影响你进行相关性和差异分析。

gene=read.table("gene.txt", header=F, check.names=F, sep="\t")#获取基因表达量,命名为gene文件

sameGene=intersect(as.vector(gene[,1]),rownames(data))#as.vector函数可以将矩阵进行向量化,此代码的含义是,将gene文件第一列与data文件的行名进行取交集,交集基因命名为sameGene

geneExp=data[sameGene,]#对data文件的每一行进行比对,以提取data文件中含有sameGene的行,即我们目标基因的表达矩阵

out=rbind(ID=colnames(geneExp),geneExp)#利用函数cbind()和rbind() 把向量或矩阵拼成一个新的矩阵:cbind()把矩阵横向合并成一个大矩阵(列方式),而rbind()是纵向合并(行方式)。在这里就是把目标基因的表达矩阵和geneExp的列名进行合并,并定义为out文件。

write.table(out,file="geneExp.txt",sep="\t",quote=F,col.names=F)#输出out文件以便后续分析,它的名字是"geneExp.txt",是按sep="\t",不需要使用quote进行指定引号

rt=read.table("geneExp.txt",sep="\t",header=T,row.names=1,check.names=F)#读取目标基因的表达矩阵文件,被命名为rt,它是有表头的,按\t分隔,不对它的名字进行检查。

rt=t(rt)#对rt文件进行转置,类似于excel的行列倒置

res1 <- cor.mtest(rt, conf.level = 0.95)#著性检验,为每个值生成 p 值和置信区间 输入要素对

pdf("correlation.pdf",height=16,width=16)#保存图片的文件名称

corrplot(corr=cor(rt),

         method = "circle",

         order = "hclust",

         tl.col="black",

         addCoef.col = "black",

         p.mat = res1$p,

         sig.level = 0.001,

         insig = "pch",

         number.cex = 1,

         type = "upper",

         col=colorRampPalette(c("blue", "white", "red"))(50),

         )

dev.off()


生信代码分享,有手就行,列表基因内部相关性分析的评论 (共 条)

分享到微博请遵守国家法律