美文网首页TCGA
从TCGA表达矩阵里拆出配对样本

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

作者: 小洁忘了怎么分身 | 来源:发表于2020-08-18 14:53 被阅读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包及其结果对比

    相关文章

      网友评论

        本文标题:从TCGA表达矩阵里拆出配对样本

        本文链接:https://www.haomeiwen.com/subject/wkwcjktx.html