2020-01-06 TCGA数据整理

探索并获取clinical表格和miRNA表达矩阵。
参考学习资料:简书作者小洁忘了怎么分身TCGA2.GDC数据整理

1.xml文件探索

使用R包XML:

#install.packages("XML")
library(XML)
result <- xmlParse("~/Downloads/clinical/014afcf0-da24-4c9b-9017-c745f04059ae/nationwidechildrens.org_clinical.TCGA-ZC-AAAF.xml")
rootnode <- xmlRoot(result)
rootsize <- xmlSize(rootnode)
print(rootnode[1])
print(rootnode[2])

初步探索发现,xml共有两个节点,第二个节点中储存着病人的信息。

> print(rootnode[1])
$admin
...
> print(rootnode[2])
$patient
...

进一步探索使用函数xmlToDataFrame获取临床信息相关内容

xmldataframe <- xmlToDataFrame(rootnode[2])
t(xmlToDataFrame(rootnode[2]))
> t(xmlToDataFrame(rootnode[2]))
                                          [,1]                                                                                                                                                                                
additional_studies                        ""                                                                                                                                                                                  
tissue_source_site                        "ZC"                                                                                                                                                                                
patient_id                                "AAAF"                                                                                                                                                                              
bcr_patient_barcode                       "TCGA-ZC-AAAF"                                                                                                                                                                      
bcr_patient_uuid                          "CD458290-F27B-479C-9B78-0AF23E7F63D9"                                                                                                                                              
informed_consent_verified                 "YES"                                                                                                                                                                               
icd_o_3_site                              "C38.1"                                                                                                                                                                             
icd_o_3_histology                         "8582/3"                                                                                                                                                                            
icd_10                                    "C38.1"                                                                                                                                                                             
tissue_prospective_collection_indicator   "YES"                                                                                                                                                                               
tissue_retrospective_collection_indicator "NO"                                                                                                                                                                                
days_to_birth                             "-27099"                                                                                                                                                                            
gender                                    "FEMALE"                                                                                                                                                                            
height                                    "165"                                                                                                                                                                               
weight                                    "68"                                                                                                                                                                                
race_list                                 "WHITE"                                                                                                                                                                             
ethnicity                                 "NOT HISPANIC OR LATINO"                                                                                                                                                            
other_dx                                  "No"                                                                                                                                                                                
history_of_neoadjuvant_treatment          "No"                                                                                                                                                                                
person_neoplasm_cancer_status             "TUMOR FREE"                                                                                                                                                                        
vital_status                              "Alive"                                                                                                                                                                             
days_to_last_followup                     "874"                                                                                                                                                                               
days_to_death                             ""                                                                                                                                                                                  
radiation_therapy                         "NO"                                                                                                                                                                                
postoperative_rx_tx                       "NO"                                                                                                                                                                                
post_op_ablation_embolization_tx          "NO"                                                                                                                                                                                
stage_event                               "IIb"                                                                                                                                                                               
primary_pathology                         "Anterior MediastinumThymoma; Type ABMedian Sternectomy0742011YES"                                                                                                                  
new_tumor_events                          "NO"                                                                                                                                                                                
day_of_form_completion                    "21"                                                                                                                                                                                
month_of_form_completion                  "5"                                                                                                                                                                                 
year_of_form_completion                   "2014"                                                                                                                                                                              
follow_ups                                "TCGA-ZC-AAAF-F685785E4486F6-267F-4171-861A-1F7184161FD3NONONOTUMOR FREEAlive1165NO3122014TCGA-ZC-AAAF-F70469563EAF41-4576-4D4C-95FB-4722FFF6B0C1NONONOTUMOR FREEAlive1165NO1822015"
drugs                                     ""                                                                                                                                                                                  
radiations                                ""      

病例相关信息记载非常详细,这个病人是个白人女性,无肿瘤,疾病编码是C38.1,已经随访了874天,具体信息见上述信息。
其中一个病人的信息是这样获取的,总共下载了116个病例信息,需要循环代码来读取。
学习小洁老师的循环代码

xmls = dir("~/Downloads/clinical/",pattern = "*.xml$",recursive = T)

td = function(x){
  result <- xmlParse(file.path("~/Downloads/clinical/",x))
  rootnode <- xmlRoot(result)
  xmldataframe <- xmlToDataFrame(rootnode[2])
  return(t(xmldataframe))
}

cl = lapply(xmls,td)
cl_df <- t(do.call(cbind,cl))
cl_df[1:3,1:3]
length(cl)
dim(cl[[1]])
dim(cl[[2]])

在这我到了cl_df <- t(do.call(cbind,cl))这一步的时候出错了,卡了很久,我尝试了很多种办法一直搞不明白哪里出了问题。
后来想到一种可能就是在前面我在第一个环节选择的时候在project这个选项选了2个,估计是这个地方出错,导致我得到的临床信息的记录是不一致的,所以出现了合并失败的结果。

出错原因查找

这里分析一下为什么会出现这个错误。又该怎么解决?
首先在TCGA数据库里面关于心脏相关的样本组织很少,一个是因为心脏的样本比较少,我当时下意识的选了2个项目,估计是想样本量多一点,但是不应该在方法还不熟练的情况下这样选择
解决方案有2种,一个是从新来一遍直选一个项目重头开始下载3个数据文件在一个一个合并。另一个是写一个算法来把所有四个项目下的样本都提取出来,比如只提取样本信息的某几项共有的指标,比如年龄性别,疾病,随访情况等,这样的话合并起来应该会容易一点,但是由于我的水平还达不到,暂时不能完成。
另一个就是既然我遇到了这种情况,那么其他人应该也遇到过,估计别人已经写好了,我只要找到这个方法即可。

2.探索miRNA信息

> x = read.table(file = "~/Downloads/mirna/032fd9b2-2400-4bce-b105-1f56def3257d/527618eb-b661-4f85-b586-4f2042f4f509.mirbase21.mirnas.quantification.txt",header = T,sep = "\t")
> head(x)
      miRNA_ID read_count reads_per_million_miRNA_mapped cross.mapped
1 hsa-let-7a-1     108784                     12676.0222            N
2 hsa-let-7a-2     109625                     12774.0195            N
3 hsa-let-7a-3     109658                     12777.8648            N
4   hsa-let-7b     148125                     17260.2201            N
5   hsa-let-7c      20287                      2363.9364            N
6   hsa-let-7d       3243                       377.8896            N
> tail(x)
         miRNA_ID read_count reads_per_million_miRNA_mapped cross.mapped
1876   hsa-mir-95         29                       3.379216            N
1877 hsa-mir-9500          0                       0.000000            N
1878   hsa-mir-96        160                      18.643951            N
1879   hsa-mir-98        428                      49.872569            N
1880  hsa-mir-99a       5991                     698.099436            Y
1881  hsa-mir-99b     167587                   19528.023723            N

可以看到,数据信息记载的第一列是miRNA_ID,第二列是raw_counts,第三列是RPM,至于第四列是什么没搞明白,但是目前重要的是我们需要前面两列的内容。
同样还是套用小洁老师总结的循环代码来汇总miRNA信息

mis = dir("~/Downloads/mirna/",pattern = "*mirnas.quantification.txt$",recursive = T)

ex = function(x){
  result <- read.table(file.path("~/Downloads/mirna/",x),sep = "\t",header = T)[,1:2]
  return(result)
}

mi = lapply(mis,ex)
mi_df <- t(do.call(cbind,mi))
mi_df[1:4,1:4]

得到表达矩阵信息查看前几行

> mi_df[1:4,1:4]
           [,1]           [,2]           [,3]           [,4]        
miRNA_ID   "hsa-let-7a-1" "hsa-let-7a-2" "hsa-let-7a-3" "hsa-let-7b"
read_count " 108784"      " 109625"      " 109658"      " 148125"   
miRNA_ID   "hsa-let-7a-1" "hsa-let-7a-2" "hsa-let-7a-3" "hsa-let-7b"
read_count "  66736"      "  66484"      "  66714"      "  64790"   

这样的合并后得到的是有些冗余的结果,需要瘦身

> colnames(mi_df) <- mi_df[1,]
> #奇数列是多余的,只保留偶数列
> mi_df <- mi_df[seq(2,nrow(mi_df),2),]
> dim(mi_df)
[1]  116 1881
> mi_df[1:4,1:4]
           hsa-let-7a-1 hsa-let-7a-2 hsa-let-7a-3 hsa-let-7b
read_count " 108784"    " 109625"    " 109658"    " 148125" 
read_count "  66736"    "  66484"    "  66714"    "  64790" 
read_count "  33740"    "  33546"    "  33772"    "  34418" 
read_count "  33770"    "  33675"    "  33476"    "  19526" 
> #转为数值型
> mi_df <- apply(mi_df, 2, as.numeric)
> mi_df[1:4,1:4]
     hsa-let-7a-1 hsa-let-7a-2 hsa-let-7a-3 hsa-let-7b
[1,]       108784       109625       109658     148125
[2,]        66736        66484        66714      64790
[3,]        33740        33546        33772      34418
[4,]        33770        33675        33476      19526

最终的这个表达矩阵有点奇怪,就是没有样本信息,这个时候就需要对应到临床信息了。
继续学习:小洁老师讲可以通过TCGAbiolinks完成这个数据处理的过程,继续往后看。

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

推荐阅读更多精彩内容