TCGA肿瘤微环境分析(免疫和基质评分)2.0

肿瘤微环境是指肿瘤的发生、生长及转移与肿瘤细胞所处的内外环境有着密切关系,它不仅包括肿瘤所在组织的结构、功能和代谢,而且亦与肿瘤细胞自身的核和胞质内在环境有关。肿瘤细胞可以通过自分泌和旁分泌,改变和维持自身生存和发展的条件,促进肿瘤的生长和发展。全身和局部组织亦可通过代谢、分泌、免疫、结构和功能的改变,限制和影响肿瘤的发生和发展。

(一)、TCGA_STAD_FPKM数据下载

1)下载表达数据

第一步:打开网站Bing,输入TCGA CDC

打开bing

第二步:点击CDC
image.png

第三步:在搜索框内输入感兴趣的胃癌缩写STAD,会调出第一个,单击进入
image.png

第四步:单击respiratory
image.png

剩下的数据下载步骤,参照下面的链接

2)下载临床数据
具体步骤见链接:https://www.jianshu.com/p/3edfb364093c

(二)、expre_df样本表达矩阵创建

#####2.1、更改工作目录到含有stad_fpkm子文件夹下#######

#####这里是GDCdata\TCGA-STAD\harmonized\Transcriptome_Profiling\Gene_Expression_Quantification目录下的407个文件

#####2.2、查看目录下files文件数目是否和网页上一直
~~~R
length(list.files())
#407
2.3、切换到原先第一层目录下,读入metadata.cart.2021-08-09.json文件,用以提取表达数据用的
metadata <- jsonlite::fromJSON("metadata.cart.2021-08-09.json")###网页上下载
dim(metadata)#读入json格式的文件,该文件是一个407行,14列的数据框
colnames(metadata)#有如下列

#方法:
###### 提取filename和 associated_entities中的 entity_submitter_id出来
######做成一个数据框
######然后批量对应转换

##转换的信息就是两列filename和associated_entities,我们把它选出来
metadata$associated_entities[1][[1]]#有四项
2.4、提取filename和样本名称(样本名就是associated_entities中的entity_submitter_id)
library(dplyr)
metadata_id <- metadata %>% dplyr::select(c(file_name,associated_entities))
2.5、做成一个数据框
##把filename和 associated_entities中的 entity_submitter_id提取出来,做成一个数据框,然后我批量对应转换
#先做一个空的数据框
naid_df <- data.frame()
2.6、将工作目录转到download的目录的fpkm下中
2.7、批量对应转换
for (i in 1:length(list.files())){
  naid_df[i,1] <- substr(metadata_id$file_name[i],1,nchar(metadata_id$file_name[i])-3)
  naid_df[i,2] <- metadata_id$associated_entities[i][[1]]$entity_submitter_id
}
2.8、naid_df的列命名
colnames(naid_df) <- c("filename","TCGA_id")#添加列名
View(naid_df)
2.9、保存从metadata中提取的样本名和文件名,保存在expre_df文件夹下####

转到第一层目录下

save(naid_df,file = "naid_df.Rda")#
load(file = "naid_df.Rda")
########################################
########################################
2.10、根据naid_df中的信息,提取stad_fpkm文件夹下样本的表达数据
2.11、(确认工作目录到stad_fpkm文件夹下)
2.12、提取目录下所有文件夹下所有压缩包
all_files <- list.files(path = "./" ,pattern='*.gz$',recursive=T)
2.13、先提一个试试
test<-data.table::fread(paste0("./",all_files[1]))
View(test)

#发现是一个样本的表达数据,第一列是ensemble_id号,第二列是表达量
#####2.14、先建一个数据框,行ensemble_id号,列为样本名TCGA_id号
expr_df <- data.frame(matrix(NA,nrow(test),nrow(naid_df)))
#View(expr_df)
2.15、将压缩包内的数据依次加入数据框中###
for (i in 1:nrow(naid_df)) {
  
  print(i)
  
  expr_df[,i]<- data.table::fread(paste0("./",all_files[i]))[,2]#把每次读取出来的第二列数据变成一列
  
}#此步骤操作需要时间
View(expr_df)
2.16、用naid_df$TCGA_id中的TCGA_id号给获得的数据命列名
colnames(expr_df) <- naid_df$TCGA_id
2.17、读取第一个文件,将其第一列ensemble_id号合并到大数据框上
gene_id <- data.table::fread(paste0("./",all_files[1]))$V1
#head(gene_id)
expr_df <- cbind(gene_id=gene_id,expr_df)
#cbind() 把矩阵横向合并成一个大矩阵(列方式),而rbind()是纵向合并(行方式)
#View(expr_df)#tail(expr_df)
tail(expr_df$gene_id,10)#最后5行正确,不同于counts数据
#################################
2.18、去掉ensemble_id的版本号
library(tidyr)
expr_df <- expr_df %>%
  tidyr::separate(gene_id,into = c("gene_id"),sep="\\.")
#View(expr_df)
2.19、更改工作目录到第一层目录下,将数据保存在expr_df文件夹里
save(expr_df,file = 'expr_df.Rdata')
load(file = 'expr_df.Rdata')
write.table(expr_df,file = "expr_df.txt")
write.csv(expr_df,file = "expr_df.csv")

(三)、expr_df id转换

这里采用GRCh38人的注释(自己下载好GTF文件在文件夹下)或者采用org.Hs.eg.db
#####3.1、读取(二)中的expr_df.Rdata/.txt/.csv结尾的数据,三选一
#####
rm(list=ls())
#####
load(file="expr_df.Rdata")###特别占用内存
#expr_df <- read.table(file="expr_df.txt",sep="\t",header=T,check.names=F)
#或者用expr_df <- read.csv(file="expr_df.csv",header=T,check.names=F,row.names = 1)
#####View(expr_df[1:20,1:10])
3.2、注释文件处理
#####更改工作目录id_transfer文件夹下
#####读取下载的人类基因注释文件GRCh38(提前自行准备)
####GTF注释################
library(rtracklayer)
gtf1 <- rtracklayer::import('human.gtf')
#View(gtf1)
3.3 将读取的注释文件制成数据框
gtf_df <- as.data.frame(gtf1)
#View(gtf_df)
3.4 选取gene_name,gene_id,gene_biotype
geneid_df <- dplyr::select(gtf_df,c(gene_name,gene_id,gene_biotype))
#View(geneid_df[1:20,3])
#sort(table(geneid_df$gene_biotype))#不需要也可以
#源代码在https://www.jianshu.com/p/a5a23f926931
#x选取基因类型为“protein_coding”的对应关系
3.5 筛选gene_biotype为protein_coding的注释
geneid_df <- geneid_df[geneid_df[,3]=='protein_coding',]  
#View(geneid_df)
#length(unique(geneid_df$gene_id))#gene_id去重复,再View(geneid_df)
#symbol列去重
geneid_df <- geneid_df[!duplicated(geneid_df[,1]),]##下次试试不去重,在后面值取平均用
#View(geneid_df)#最后得到给样本表达矩阵注释的矩阵
3.6 数据保存,注释文件中提取的注释矩阵
save(geneid_df,file = 'geneid_df.Rdata')
write.table(geneid_df,file = 'geneid_df.txt')
write.csv(geneid_df,file = 'geneid_df.csv')
3.7. 注释矩阵(geneid_df)给样本表达矩阵(expr_df)注释
方法
通过以上两个矩阵有相同gene_id列(ensemble_id号)合并
筛选方法有三种,选择其中一种即可,但是注意列名的末尾
#####加载注释文件,三选一
#load(file = 'geneid_df.Rdata')
geneid_df<- read.table(file = 'geneid_df.txt',header = T)
#geneid_df<- read.csv(file = 'geneid_df.csv')

#####geneid_df和expr_df矩阵按gene_id合并,三选一
#####筛选方法一
expr_geneid_df<-merge(expr_df,geneid_df,by="gene_id")
View(expr_geneid_df)
#tail(colnames(expr_geneid_df))#发现合并的最后两行在最末
#筛选方法二
#expr_geneid_df<- filter(expr_df, expr_df$gene_id%in%geneid_df$gene_id)
#View(expr_geneid_df)
#tail(colnames(expr_geneid_df))#发现合并的最后两行在最末
#筛选方法三
#shai_gene_id<- expr_df_nopoint$gene_id[expr_df_nopoint$gene_id%in%geneid_df$gene_id==T]
#expr_df_merge3<- expr_df_nopoint[which(expr_df_nopoint$gene_id%in%shai_gene_id), ]
#View(expr_df_merge3)
3.8 列名排序
#最后两项有数据
expr_geneid_df <- dplyr::select(expr_geneid_df,1,409:410,2:408)
#####3.4 将gene_name作为行名,样本号作为列名##########
rownames(expr_geneid_df) <- expr_geneid_df$gene_name
#####3.5 列只保留样本名TCGA_id,其它去除
expr_geneid_df <- expr_geneid_df[,-c(1:3)]
3.9,经过注释的样本矩阵表达数据,至此ID转换成功
write.csv(expr_geneid_df,file = "expr_geneid_df.csv")
write.table(expr_geneid_df,file = "expr_geneid_df.txt")
save(expr_geneid_df,file="expr_geneid_df.Rdata")


#致此,经过注释后的表达矩阵完成

#expr_geneid_df <- read.csv(file = "expr_geneid_df.csv")
#expr_geneid_df <- read.table(file = "expr_geneid_df.txt")
#load(file="expr_df_merge.Rda")

(四)、tumor microenvironment score

还有 72% 的精彩内容
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
支付 ¥50.00 继续阅读
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,692评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,482评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,995评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,223评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,245评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,208评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,091评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,929评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,346评论 1 311
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,570评论 2 333
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,739评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,437评论 5 344
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,037评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,677评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,833评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,760评论 2 369
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,647评论 2 354

推荐阅读更多精彩内容