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

你可能感兴趣的:(TCGA肿瘤微环境分析(免疫和基质评分)2.0)