TCGA

从TCGA表达矩阵里拆出配对样本

2020-08-18  本文已影响0人  小洁忘了怎么分身

0.需求

TCGA里的数据tumor多normal少,想要挑选出配对样本进行差异分析。(并不是说必须挑配对样本才能做哦,直接做也是可以的)

1.数据

这里使用的数据是TCGA的CHOL表达矩阵。

rm(list = ls())
load("exp.Rdata")
dim(exp)
## [1] 30348    45
exp[1:4,1:4]
##                    TCGA-W5-AA36-01A-11R-A41I-07
## ENSG00000000003.13                         2504
## ENSG00000000419.11                         1272
## ENSG00000000457.12                          504
## ENSG00000000460.15                          123
##                    TCGA-W5-AA2H-01A-31R-A41I-07
## ENSG00000000003.13                          226
## ENSG00000000419.11                         1146
## ENSG00000000457.12                          602
## ENSG00000000460.15                          162
##                    TCGA-ZU-A8S4-11A-11R-A41I-07
## ENSG00000000003.13                         4107
## ENSG00000000419.11                          741
## ENSG00000000457.12                          312
## ENSG00000000460.15                          170
##                    TCGA-WD-A7RX-01A-12R-A41I-07
## ENSG00000000003.13                         9646
## ENSG00000000419.11                         1266
## ENSG00000000457.12                         1317
## ENSG00000000460.15                          451
head(colnames(exp))
## [1] "TCGA-W5-AA36-01A-11R-A41I-07"
## [2] "TCGA-W5-AA2H-01A-31R-A41I-07"
## [3] "TCGA-ZU-A8S4-11A-11R-A41I-07"
## [4] "TCGA-WD-A7RX-01A-12R-A41I-07"
## [5] "TCGA-3X-AAVC-01A-21R-A41I-07"
## [6] "TCGA-3X-AAVE-01A-11R-A41I-07"

从TCGA ID里可以找到tumor和normal的分组,统计它们的数量:

table(stringr::str_sub(colnames(exp),14,15)<10)
## 
## FALSE  TRUE 
##     9    36

2.代码实现

配对样本的共同点是病人ID(前12位)一致,根据这个来匹配即可。

先拆分成tumor和normal两个矩阵,根据ID的14和15位来拆

library(stringr)
exp_nor = exp[,str_sub(colnames(exp),14,15) > 10]
exp_tum = exp[,str_sub(colnames(exp),14,15)<=10]

有normal样本的病人的ID,是normal组样本ID的前12位,也是exp_nor的行名。

patient = str_sub(colnames(exp_nor),1,12)

然后将tumor矩阵中与patient相匹配的样本名选出来,能匹配到的就会被挑出来。%in%从来都是R语言里的一个神技能:%in%很简单

k = str_sub(colnames(exp_tum),1,12) %in% patient;table(k) 
## k
## FALSE  TRUE 
##    27     9
exp_tum = exp_tum[,k]

可以把表达矩阵拼回去咯:

exp2 = cbind(exp_tum,exp_nor)
dim(exp2)
## [1] 30348    18

就相当于把表达矩阵按列取子集了,tumor和normal各九个样本,后面可以拿来做配对样本的差异分析哦,例如下面这张图,就是COAD数据配对差异分析得到的差异基因热图。

转录组的差异分析在这里:TCGA(转录组)差异分析三大R包及其结果对比

上一篇下一篇

猜你喜欢

热点阅读