1、目的
在之前的很多教程中都提到了目标基因表达量的提取这个问题,其实最简单的方法就是用Excel,但是要从几千甚至上万的表格中进行操作(而且可能存在重复),实在会大大降低工作效率。
①文件准备
直接准备基因的表达谱文件即可,但是考虑到后续分析的需要,最好使用count文件的表达量矩阵进行提取。
2、代码
remove(list = ls()) ##清空当前环境
setwd("D:/生信代码复现/番外篇:目标基因表达量提取/12-1番外:目标基因表达量提取") ##💚💚💚💚💚设置路径
#引用包
library(limma)
library(tidyverse)
gene="RPL12P10" #目标基因的名称
expFile="combined_RNAseq_counts.txt" #表达数据文件💚💚💚💚这个在我们在D:\生信代码复现\1.新TCGA\1.新TCGA就进行分析了,所以可以直接拿过来用。
#读取基因表达文件,并对数据进行处理
rt=read.table(expFile, header=T, sep="\t", check.names=F)
rt=as.matrix(rt)
rownames(rt)=rt[,1]
exp=rt[,2:ncol(rt)]
dimnames=list(rownames(exp),colnames(exp))
data=matrix(as.numeric(as.matrix(exp)), nrow=nrow(exp), dimnames=dimnames)
data=as.data.frame(data)
#以01A和11A分组,正常放前面,肿瘤放后面
exp_data_T = data%>% dplyr::select(str_which(colnames(.), "-01A")) # 匹配列名或用下示写法
nT = ncol(exp_data_T)
exp_data_N = data%>% dplyr::select(str_which(colnames(.), "-11A"))
nN = ncol(exp_data_N)
data= cbind(exp_data_N, exp_data_T)
data=avereps(data)
data1=t(data[gene,,drop=F])
#获取正常样品和肿瘤样品的数目
group=sapply(strsplit(rownames(data1),"\\-"), "[", 4)
group=sapply(strsplit(group,""), "[", 1)
group=gsub("2", "1", group)
conNum=length(group[group==1]) #正常组样品数目
treatNum=length(group[group==0]) #肿瘤组样品数目
Type=c(rep(1,conNum), rep(2,treatNum))
#样品分组
exp=cbind(data1, Type)
exp=as.data.frame(exp)
colnames(exp)=c("gene", "Type")
exp$Type=ifelse(exp$Type==1, "Normal", "Tumor")
exp$gene=log2(exp$gene+1)
#输出目标基因的表达量
outTab=exp
colnames(outTab)=c(gene, "Type")
outTab=cbind(ID=row.names(outTab), outTab)
write.table(outTab, file="geneExp.txt", sep="\t", quote=F, row.names=F)
3、效果
最后我们就得到想要的基因表达量的文件


4、遇到的问题
无