【Rna-seq 分析流程】00.数据处理

本系列文章是简单的 Rna-seq 分析全流程,主要是代码和结果展示。


1. 简介

分析数据可以从 NCBI,GEO 等网站上下载,进行数据挖掘,本次使用数据从 GEO 下载。

GEO(Gene Expression Omnibus)高通量基因表达数据库

网址:GEO官网

其下两个子数据库:

* GEO DataSets:收录整个实验的数据集,一般可以从中挖掘。

* GEO Profiles:用以储存基因在数据集中的表达谱。




2.数据信息

下载的数据为:

训练集:* GSE104954-GPL22945_series_matrix.txt.gz(储存表达量文件)

               * GPL22945.soft.gz (储存样本信息文件)

验证集:* GSE108113_series_matrix.txt.gz(储存表达量文件)

               * GPL19983.soft.gz (储存样本信息文件)

以上文件都需要用,为之后数据筛选分析做准备。




3. 思路

1. 通过 R 包 “GEOquery” 将上述文件的基因表达量信息,样本信息提取到数据集中

2. 根据样本信息将基因表达量分组,例如本次研究目标是 抗中性粒细胞胞浆抗体(Antineutrophil cytoplasmic antibody,ANCA)相关性血管炎(ANCA - associated vasculitis,AAV)之后简写为 AAV。就可以通过样本信息将AAV相关的样本和正常人的样本提取出来分组,并添加对应分组列如:AAV和Control。

3. 确保之前的表达量数据即的样本顺序与样本信息的样本顺序一致。

4. 通过 R 包 “GEOquery” 提取该实验集获取探针号(ID)与基因 Symbol 和 ENTREZ_GENE_ID 的对应关系。

5. 将样本信息和对应的分组单独提到一个 dataframe 里,后续操作会经常用到分组信息。

6. 保存之前处理过的数据文件,方便后续分析。




4. 代码

##---- 1. 已下载数据读取 ----

suppressMessages(library(GEOquery))

file_path <- "GSE104954-GPL22945_series_matrix.txt.gz"

eSet <- getGEO(filename = file_path)

exp <- exprs(eSet)

pd <- pData(eSet)

gpl <- eSet@annotation

eSet_v <- getGEO(filename = "GSE108113_series_matrix.txt.gz")

exp_v <- exprs(eSet_v)

pd_v <- pData(eSet_v)

fd_v <- fData(eSet_v)

gpl_v <- eSet_v@annotation

###---- 2. 提取临床信息 ----

pd_AAV = subset(pd, pd['diagnosis:ch1'] == 'ANCA-associated vasculitis')

pd_C = pd[is.na(pd$`diagnosis:ch1`), ]

pd_train = rbind(pd_AAV, pd_C)

pd_v_AAV0 = pd_v[grep("ANCA Associated Vasculitis", pd_v$title),]

pd_v_AAV = pd_v_AAV0[grep("tissue: Tubulointerstitium from kidney biopsy", pd_v_AAV0$characteristics_ch1),]

pd_v_C = pd_v[grep("Healthy Living Donor", pd_v$title),]

pd_verify = rbind(pd_v_AAV, pd_v_C)

###---- 3. 调整 pd 的行名顺序与 exp 列名完全一致 ----

exp_train = exp[, c(rownames(pd_train))]

exp_verify = exp_v[, c(rownames(pd_verify))]

p = identical(rownames(pd_train),colnames(exp_train));p

if(!p) exp_train = exp_train[,match(rownames(pd_train),colnames(exp_train))]

p1 = identical(rownames(pd_verify),colnames(exp_verify));p1 

##----  4.ids 平台注释 ------------

GPL22945 <-getGEO(gpl,destdir =".")

GPL22945_anno <- Table(GPL22945) 

probe_symbols_ENid = GPL22945_anno[c('ID','Symbol','ENTREZ_GENE_ID')] # 获取探针号与基因Symbol的对应关系

exp_train = merge(rownames_to_column(as.data.frame(exp_train),'ID'), probe_symbols_ENid, by = "ID", all.x = T)

exp_verify =  merge(rownames_to_column(as.data.frame(exp_verify),'ID'), fd_v, by = "ID", all.x = T)

exp_verify = merge(exp_verify, probe_symbols_ENid, by = "ENTREZ_GENE_ID", all.x = T)

# lncRNA

options(stringsAsFactors = F)

lncRNA_genecode <- read.table("anno.txt")

tmp<-sapply(strsplit(lncRNA_genecode$V1,'.',fixed = T),function(x)x[1])

lncRNA_genecode$GENEID<-tmp

colnames(lncRNA_genecode)[2]<-'GENEBIOTYPE'

colnames(lncRNA_genecode)[3]<-'gene_name'

tmp1<-lncRNA_genecode[lncRNA_genecode$gene_name %in% exp_train$Symbol,]

lncRNA<-exp_train[match(tmp1$gene_name,exp_train$Symbol),]

filtered_exp_train <- exp_train[!exp_train$Symbol %in% tmp1$gene_name, ]

filtered_exp_train <- filtered_exp_train[, !colnames(filtered_exp_train) %in% c("ID","ENTREZ_GENE_ID")]

rownames(filtered_exp_train) <- NULL

filtered_exp_train <- column_to_rownames(filtered_exp_train, "Symbol")

exp_train_old <-exp_train

exp_train<-filtered_exp_train

##---- 5. 分组 -----

train_group_AVV = data.frame(Sample = rownames(pd_AAV), label = "AAV")

train_group_C = data.frame(Sample = rownames(pd_C),  label = "C")

train_group = rbind(train_group_AVV,train_group_C)

valid_group_AVV = data.frame(Sample = rownames(pd_v_AAV), label = "AAV")

valid_group_C = data.frame(Sample = rownames(pd_v_C),  label = "C")

valid_group <- rbind(valid_group_AVV,valid_group_C)

###---- 6. save ----

write.csv(pd, file = "pd_train.csv")

write.csv(exp_train, file = "exp_train.csv")

write.csv(probe_symbols_ENid, file = "probe.csv")

write.csv(train_group, "train_group.csv")

write.csv(pd_v, file = "pd_verify.csv")

write.csv(exp_verify, file = "exp_verify.csv")

write.csv(valid_group, "valid_group.csv")

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容