TCGA 拷贝数变异(CNV)数据整理(一)

zhuang_gj

3月-09-2021

从TCGA下载Masked Copy Number Segment 数据-----解压后进行处理

rm(list = ls())
## 将整理好的Masked Copy Number Segment重新命名为“rawdata”
## 查看rawdata下面的文件
length(dir("rawdata") )
## [1] 1025
## 创建一个文件用来放rawdata里面的txt文件
dir.create("rawdata_all")

## 用lapply将rawdata里面txt文件整理到一个文件夹里
raw_txt <- dir("rawdata/")
lapply(raw_txt, function(x){
  mydir <- paste0("./rawdata/",x)
  file <- list.files(mydir,pattern = "nocnv_grch38")
  myfile <- paste0("./rawdata/",x,"/",file)
  file.copy(myfile,"rawdata_all")  
})
## [[1]]
## [1] FALSE
## 
## [[2]]
## [1] FALSE

library(data.table)
cnv_file <- dir("rawdata_all")
cnv_file[1]
## [1] "AMAZE_p_TCGASNP_b86_87_88_N_GenomeWideSNP_6_A01_735406.nocnv_grch38.seg.v2.txt"
## 文件所在位置
file <- paste0("./rawdata_all/",cnv_file)
head(file )
## [1] "./rawdata_all/AMAZE_p_TCGASNP_b86_87_88_N_GenomeWideSNP_6_A01_735406.nocnv_grch38.seg.v2.txt"
## [2] "./rawdata_all/AMAZE_p_TCGASNP_b86_87_88_N_GenomeWideSNP_6_A02_735476.nocnv_grch38.seg.v2.txt"
## [3] "./rawdata_all/AMAZE_p_TCGASNP_b86_87_88_N_GenomeWideSNP_6_A03_735420.nocnv_grch38.seg.v2.txt"
## [4] "./rawdata_all/AMAZE_p_TCGASNP_b86_87_88_N_GenomeWideSNP_6_A04_735430.nocnv_grch38.seg.v2.txt"
## [5] "./rawdata_all/AMAZE_p_TCGASNP_b86_87_88_N_GenomeWideSNP_6_A05_735540.nocnv_grch38.seg.v2.txt"
## [6] "./rawdata_all/AMAZE_p_TCGASNP_b86_87_88_N_GenomeWideSNP_6_A06_735442.nocnv_grch38.seg.v2.txt"
## 批量读取txt文件
file_list <- list()
fred_cnv <- function(x){
  file_list[[x]] <- data.table::fread(file = x,data.table = F)
   file_list[[x]]   
}

cnv_df <- lapply(file, fred_cnv)
cnv_df <- do.call(rbind,cnv_df)
head(cnv_df)
##                            GDC_Aliquot Chromosome     Start       End
## 1 3c7ea150-a119-4cd1-a7ef-1543ef87eebf          1   3301765 247650984
## 2 3c7ea150-a119-4cd1-a7ef-1543ef87eebf          2    480597 236626512
## 3 3c7ea150-a119-4cd1-a7ef-1543ef87eebf          2 236626820 236627088
## 4 3c7ea150-a119-4cd1-a7ef-1543ef87eebf          2 236631315 237489539
## 5 3c7ea150-a119-4cd1-a7ef-1543ef87eebf          2 237489625 237489879
## 6 3c7ea150-a119-4cd1-a7ef-1543ef87eebf          2 237492059 239533237
##   Num_Probes Segment_Mean
## 1     129636       0.0174
## 2     129172       0.0159
## 3          2      -1.5617
## 4        639       0.0003
## 5          3      -1.4417
## 6       1100       0.0153
## 读取metadata里面的注释信息
metadata <- jsonlite::fromJSON("metadata.cart.2021-02-15.json")
library(dplyr)
metadata_id <- metadata %>% 
  dplyr::select(c(file_name,associated_entities)) 

meta_df <- do.call(rbind,metadata$associated_entities)
head(metadata_id,2)
##                                                                           file_name
## 1     TRIAL_p_TCGA_191_193_SNP_N_GenomeWideSNP_6_F12_932404.nocnv_grch38.seg.v2.txt
## 2 COAPT_p_TCGASNP_197_201_204_N_GenomeWideSNP_6_D01_1051508.nocnv_grch38.seg.v2.txt
##                                                                                                 associated_entities
## 1 TCGA-EL-A3D5-10A-01D-A201-01, aliquot, e9ccf355-e68a-489c-a914-31b766bd0aef, a1e0d8be-7916-4bb2-9c3f-1e74b51c6ed3
## 2 TCGA-E3-A3DY-10A-01D-A20A-01, aliquot, dffef9e8-5b69-43d9-a95b-0744daa38d1d, b75decce-46f0-4689-be1b-08a9943775eb
## 匹配样本
cnv_df$Sample <- meta_df$entity_submitter_id[match(cnv_df$GDC_Aliquot,meta_df$entity_id)]
length(unique(cnv_df$GDC_Aliquot))
## [1] 1025
length(unique(cnv_df$Sample))
## [1] 1025
head(cnv_df)
##                            GDC_Aliquot Chromosome     Start       End
## 1 3c7ea150-a119-4cd1-a7ef-1543ef87eebf          1   3301765 247650984
## 2 3c7ea150-a119-4cd1-a7ef-1543ef87eebf          2    480597 236626512
## 3 3c7ea150-a119-4cd1-a7ef-1543ef87eebf          2 236626820 236627088
## 4 3c7ea150-a119-4cd1-a7ef-1543ef87eebf          2 236631315 237489539
## 5 3c7ea150-a119-4cd1-a7ef-1543ef87eebf          2 237489625 237489879
## 6 3c7ea150-a119-4cd1-a7ef-1543ef87eebf          2 237492059 239533237
##   Num_Probes Segment_Mean                       Sample
## 1     129636       0.0174 TCGA-BJ-A0Z9-01A-11D-A10T-01
## 2     129172       0.0159 TCGA-BJ-A0Z9-01A-11D-A10T-01
## 3          2      -1.5617 TCGA-BJ-A0Z9-01A-11D-A10T-01
## 4        639       0.0003 TCGA-BJ-A0Z9-01A-11D-A10T-01
## 5          3      -1.4417 TCGA-BJ-A0Z9-01A-11D-A10T-01
## 6       1100       0.0153 TCGA-BJ-A0Z9-01A-11D-A10T-01
## 改名
cnv_df$Sample <- substring(cnv_df$Sample,1,16)
head(cnv_df)
##                            GDC_Aliquot Chromosome     Start       End
## 1 3c7ea150-a119-4cd1-a7ef-1543ef87eebf          1   3301765 247650984
## 2 3c7ea150-a119-4cd1-a7ef-1543ef87eebf          2    480597 236626512
## 3 3c7ea150-a119-4cd1-a7ef-1543ef87eebf          2 236626820 236627088
## 4 3c7ea150-a119-4cd1-a7ef-1543ef87eebf          2 236631315 237489539
## 5 3c7ea150-a119-4cd1-a7ef-1543ef87eebf          2 237489625 237489879
## 6 3c7ea150-a119-4cd1-a7ef-1543ef87eebf          2 237492059 239533237
##   Num_Probes Segment_Mean           Sample
## 1     129636       0.0174 TCGA-BJ-A0Z9-01A
## 2     129172       0.0159 TCGA-BJ-A0Z9-01A
## 3          2      -1.5617 TCGA-BJ-A0Z9-01A
## 4        639       0.0003 TCGA-BJ-A0Z9-01A
## 5          3      -1.4417 TCGA-BJ-A0Z9-01A
## 6       1100       0.0153 TCGA-BJ-A0Z9-01A
## Gistic只需要maskedCNS的六列
cnv_df <- cnv_df[,c('Sample','Chromosome','Start','End','Num_Probes','Segment_Mean')]
head(cnv_df)
##             Sample Chromosome     Start       End Num_Probes Segment_Mean
## 1 TCGA-BJ-A0Z9-01A          1   3301765 247650984     129636       0.0174
## 2 TCGA-BJ-A0Z9-01A          2    480597 236626512     129172       0.0159
## 3 TCGA-BJ-A0Z9-01A          2 236626820 236627088          2      -1.5617
## 4 TCGA-BJ-A0Z9-01A          2 236631315 237489539        639       0.0003
## 5 TCGA-BJ-A0Z9-01A          2 237489625 237489879          3      -1.4417
## 6 TCGA-BJ-A0Z9-01A          2 237492059 239533237       1100       0.0153
# 只挑选肿瘤样本
dim(cnv_df)
## [1] 61626     6
cnv_df <- cnv_df[grep("01A$",cnv_df$Sample),]
dim(cnv_df)
## [1] 28628     6
head(cnv_df)
##             Sample Chromosome     Start       End Num_Probes Segment_Mean
## 1 TCGA-BJ-A0Z9-01A          1   3301765 247650984     129636       0.0174
## 2 TCGA-BJ-A0Z9-01A          2    480597 236626512     129172       0.0159
## 3 TCGA-BJ-A0Z9-01A          2 236626820 236627088          2      -1.5617
## 4 TCGA-BJ-A0Z9-01A          2 236631315 237489539        639       0.0003
## 5 TCGA-BJ-A0Z9-01A          2 237489625 237489879          3      -1.4417
## 6 TCGA-BJ-A0Z9-01A          2 237492059 239533237       1100       0.0153
## 将整理好的数据写出去
write.table(cnv_df,"MaskedCopyNumberSegment(Tumor).txt",sep="\t",
            quote = F,col.names = F,row.names = F)

marker file数据下载和处理

GDC Reference Files---选择最新版本的“SNP6 GRCh38 Remapped Probeset File for Copy Number Variation Analysis”文件snp6.na35.remap.hg38.subset.txt.gz
注意:If you are using Masked Copy Number Segment for GISTIC analysis, please only keep probesets with freqcnv = FALSE

hg38_marker_file <- read.delim("snp6.na35.remap.hg38.subset.txt.gz")
head(hg38_marker_file )
##         probeid chr       pos strand type freqcnv   par
## 1 SNP_A-1780270   7  78970267      +  SNP    TRUE FALSE
## 2 SNP_A-1780271  15  33103578      +  SNP   FALSE FALSE
## 3 SNP_A-1780272   1 189838554      -  SNP    TRUE FALSE
## 4 SNP_A-1780274  20  35320106      -  SNP   FALSE FALSE
## 5 SNP_A-1780277  12  75270266      +  SNP   FALSE FALSE
## 6 SNP_A-1780278   1 218717316      +  SNP   FALSE FALSE
# 注意“If you are using Masked Copy Number Segment for GISTIC analysis, please only keep probesets with freqcnv =FALSE”
hg_marker_file <- hg38_marker_file[hg38_marker_file$freqcnv=="FALSE",]
hg_marker_file <- hg_marker_file [,c(1,2,3)]
head(hg_marker_file )
##         probeid chr       pos
## 2 SNP_A-1780271  15  33103578
## 4 SNP_A-1780274  20  35320106
## 5 SNP_A-1780277  12  75270266
## 6 SNP_A-1780278   1 218717316
## 7 SNP_A-1780283   4 126709121
## 8 SNP_A-1780285   6  90209746
## 写出去
write.table(hg_marker_file,file = "hg_marker_file.txt",sep = "\t",col.names = T,row.names = F)
有兴趣的可以试试 TCGAbiolinks包看看结果如何。
下回讲讲如何用整理好的文件使用Gistic 2.0在线分析的得到Amplification GISTIC plot 以及Deletion GISTIC plot ~~~~~~~~~~~~~ maftools可视化相关结果 ~~~~~~~~~~~~~ 挑选拷贝数差异区域的基因。

坚持写代码的快一年半了,零零碎碎的代码产生的数据,占了我电脑大部分的空间,是时候整理下代码,让它变得更方便查询,毕竟每次写代码总会有改变,而有些是不需要变的。要感谢导师罗老师给予物质和精神上的支持,让我学习生物信息学,不给我设限,自由的探索数据。

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

推荐阅读更多精彩内容