变异数据处理(1)

maftools

变异数据处理的总体思路如下:

image.png

思维导图

1.数据下载

TCGA的突变数据有4个软件得到的不同版本:

image.png

这个可以在gdc的官网上找到,case选择KIRC,文件类型选择maf即可获得。

image.png
image.png

选择mutect,就一个文件,直接点进去,download就行,下载下来只有一个tar.gz文件,解压放在工作目录下。

tar -xzvf file.tar.gz 解压tar.gz,即可得到一个maf.gz文件。

同样的筛选条件,参考//www.greatytc.com/p/559d9604fcdf下载临床信息数据并整理。

2.数据读取

使用R包maftools读取。

rm(list=ls())
options(stringsAsFactors = F) 
library(maftools) 
library(dplyr)
project='TCGA_KIRC'
laml = read.maf(maf = 'TCGA.KIRC.mutect.2a8f2c83-8b5e-4987-8dbf-01f7ee24dc26.DR-10.0.somatic.maf.gz')
#> -Reading
#> -Validating
#> -Silent variants: 8383 
#> -Summarizing
#> --Mutiple centers found
#> BI;BCM--Possible FLAGS among top ten genes:
#>   TTN
#>   MUC16
#>   HMCN1
#> -Processing clinical data
#> --Missing clinical data
#> -Finished in 2.474s elapsed (2.281s cpu)
laml 
#> An object of class  MAF 
#>                         ID summary   Mean Median
#>  1:             NCBI_Build  GRCh38     NA     NA
#>  2:                 Center  BI;BCM     NA     NA
#>  3:                Samples     336     NA     NA
#>  4:                 nGenes    9444     NA     NA
#>  5:        Frame_Shift_Del    1732  5.155      4
#>  6:        Frame_Shift_Ins    1201  3.574      1
#>  7:           In_Frame_Del     238  0.708      0
#>  8:           In_Frame_Ins     350  1.042      0
#>  9:      Missense_Mutation   12997 38.682     36
#> 10:      Nonsense_Mutation    1259  3.747      2
#> 11:       Nonstop_Mutation      18  0.054      0
#> 12:            Splice_Site     490  1.458      1
#> 13: Translation_Start_Site      25  0.074      0
#> 14:                  total   18310 54.494     47
maf_df = laml@data
save(laml,maf_df,file = "maf.Rdata")
length(unique(maf_df$Tumor_Sample_Barcode))#统计样本个数
#> [1] 336
length(unique(maf_df$Hugo_Symbol))#统计基因个数
#> [1] 9444

因此,有336个病人,9444个突变基因信息。

3.突变数据的可视化

3.1 plotmafSummary

maftools 自带可视化函数plotmafSummary,可以比较直观的统计maf文件的数据。

#if (as.numeric(dev.cur()) != 1) graphics.off()
plotmafSummary(maf = laml, rmOutlier = TRUE,
               #showBarcodes = FALSE,
               addStat = 'median', dashboard = TRUE, titvRaw = FALSE)
image.png

就是将maf_df 数据框做了统计,用barplot和boxplot做了可视化。

3.2 突变频谱图

选择突变数量前30的基因

oncoplot(maf = laml, top = 30, fontSize = 0.7)
image.png

下面展开一下这个图的解读

主体热图

一行是一个基因,总共是9444个基因,从中截取了top30;一列是一个样本,总共是336个样本。不同颜色代表不同类型的突变。

右侧条形图

右侧的条形图是每个基因的突变样本数、突变类型和比例

验证一下突变样本数

count(maf_df,Hugo_Symbol,sort = T)
#>       Hugo_Symbol   n
#>    1:         VHL 169
#>    2:       PBRM1 148
#>    3:         TTN  77
#>    4:       SETD2  46
#>    5:        BAP1  37
#>   ---                
#> 9440:       ZWINT   1
#> 9441:        ZXDA   1
#> 9442:        ZXDB   1
#> 9443:        ZXDC   1
#> 9444:         ZYX   1

结果显示VHL在169样本中突变,样本总数336,所以是49%,以此类推

条形图的颜色是突变类型,以VHL基因为例,他的突变类型分别是:

maf_df %>% filter(Hugo_Symbol=="VHL") %>%
  count(Variant_Classification,sort = T)
#>    Variant_Classification  n
#> 1:      Missense_Mutation 60
#> 2:        Frame_Shift_Del 41
#> 3:      Nonsense_Mutation 27
#> 4:        Frame_Shift_Ins 22
#> 5:            Splice_Site 16
#> 6:           In_Frame_Del  2
#> 7:       Nonstop_Mutation  1
顶部条形图

显示每个样本里突变的基因个数,可以看到最高的是那个一枝独秀的1600多。

laml@variants.per.sample %>% head()
#>            Tumor_Sample_Barcode Variants
#> 1: TCGA-B8-4143-01A-01D-1806-10     1611
#> 2: TCGA-B0-5098-01A-01D-1421-08      550
#> 3: TCGA-A3-A8OV-01A-11D-A36X-10      120
#> 4: TCGA-CJ-4920-01A-01D-1429-08      117
#> 5: TCGA-CZ-5468-01A-01D-1501-10      102
#> 6: TCGA-B0-5713-01A-11D-1669-08       97

3.2 可以给oncoplot加上一些临床信息

pd 是临床信息数据框,第一列是Tumor_Sample_Barcode,后面几列是各种分组,如gender,age,stage等等。

load("clinical.Rdata")
pd = clinical[,c("bcr_patient_barcode",
                 "stage_event",
              "gender",
              "vital_status")]
library(stringr)
pd$stage_event = sapply(str_extract_all(pd$stage_event,"I|V"), paste,collapse = "")
pd[pd==""] = NA

#调整pd的病人id顺序和laml里的样本id顺序一致
sam_id = unique(laml@data$Tumor_Sample_Barcode)
library(stringr)
pd = pd[match(str_sub(sam_id,1,12),
              pd$bcr_patient_barcode),]#根据前十二位匹配
pd$Tumor_Sample_Barcode = sam_id
head(pd)
#>     bcr_patient_barcode stage_event gender vital_status
#> 482        TCGA-A3-3383           I   MALE        Alive
#> 438        TCGA-CJ-4920           I FEMALE         Dead
#> 142        TCGA-CJ-4908           I   MALE        Alive
#> 311        TCGA-CZ-5469          II   MALE         Dead
#> 234        TCGA-CZ-5986           I   MALE        Alive
#> 202        TCGA-A3-3365           I   MALE        Alive
#>             Tumor_Sample_Barcode
#> 482 TCGA-A3-3383-01A-01D-0966-08
#> 438 TCGA-CJ-4920-01A-01D-1429-08
#> 142 TCGA-CJ-4908-01A-01D-1429-08
#> 311 TCGA-CZ-5469-01A-01D-1501-10
#> 234 TCGA-CZ-5986-01A-11D-1669-08
#> 202 TCGA-A3-3365-01A-01D-0966-08
pd = select(pd,Tumor_Sample_Barcode,everything())
pd = pd[,-2]
head(pd)
#>             Tumor_Sample_Barcode stage_event gender vital_status
#> 482 TCGA-A3-3383-01A-01D-0966-08           I   MALE        Alive
#> 438 TCGA-CJ-4920-01A-01D-1429-08           I FEMALE         Dead
#> 142 TCGA-CJ-4908-01A-01D-1429-08           I   MALE        Alive
#> 311 TCGA-CZ-5469-01A-01D-1501-10          II   MALE         Dead
#> 234 TCGA-CZ-5986-01A-11D-1669-08           I   MALE        Alive
#> 202 TCGA-A3-3365-01A-01D-0966-08           I   MALE        Alive
save(pd,file = "KIRC_pd.Rdata")

laml = read.maf(maf = 'TCGA.KIRC.mutect.2a8f2c83-8b5e-4987-8dbf-01f7ee24dc26.DR-10.0.somatic.maf.gz',
                clinicalData = pd)
#> -Reading
#> -Validating
#> -Silent variants: 8383 
#> -Summarizing
#> --Mutiple centers found
#> BI;BCM--Possible FLAGS among top ten genes:
#>   TTN
#>   MUC16
#>   HMCN1
#> -Processing clinical data
#> -Finished in 2.022s elapsed (1.889s cpu)

oncoplot(maf = laml,
         sortByAnnotation = TRUE,
         clinicalFeatures = c("stage_event",
                              'vital_status',
                              'gender')
          )
#> [1] "stage"
image.png

自定义颜色

col = RColorBrewer::brewer.pal(n = 8,name = 'Set3')
stagecolors = col[1:4]
names(stagecolors) = na.omit(unique(pd$stage_event))

vscolors = col[5:6]
names(vscolors) = unique(pd$vital_status)

gendercolors = col[7:8]
names(gendercolors) = unique(pd$gender)

ancolors = list(stage_event = stagecolors,
                vital_status = vscolors,
                gender = gendercolors)

oncoplot(maf = laml,
         sortByAnnotation = TRUE,
         clinicalFeatures = c("stage_event",
                              'vital_status',
                              'gender'),
        annotationColor = ancolors,
          )
image.png
如果瀑布图想要画自己想要的基因,使用帮助文档中的genes参数,将要画的基因组织成向量的形式传递给这个参数
browseVignettes("maftools")#可查看怎么自定义瀑布图的帮助文档html

*生信技能树课程笔记

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

推荐阅读更多精彩内容