美文网首页NGS避坑指南
细数绘制一张全景图所遇到的坑

细数绘制一张全景图所遇到的坑

作者: 村狗儿 | 来源:发表于2019-04-25 18:00 被阅读29次

细数绘制一张全景图所遇到的坑

大家好,我是生信技能树学徒,前面我们带来了大量的表达数据挖掘实战演练,但是TCGA数据库之丰富程度,值得我们花费多年时间继续探索,现在带来的是突变全景图,如果你对之前的教程感兴趣,可以点击学习菜鸟团(周一数据挖掘专栏)成果展

就是上面这张全景,我重复出来的是下面这个样子

文章

标题: Comprehensive and Integrative Genomic Characterization of Hepatocellular Carcinoma

链接: https://www.cell.com/cell/fulltext/S0092-8674(17)30639-6

数据准备

绘制全景图需要maf格式的突变信息文件以及临床信息文件。

还是从XENA上进行下载

需要注意,这里储存突变信息的文件需要是maf格式,和我们之前根据是否存在该基因的突变对样本进行分类的文件不同。

处理数据-R-maftools

1. 读取临床信息

tumor_type <-"LIHC"

Rdata_file <- paste('./data/', tumor_type,'.phenoData.Rdata', sep ='')

if(!file.exists( Rdata_file )) {

phenoData <- read.table( destfile,

header =T,

sep ='\t',

quote ='')

rownames( phenoData ) <- phenoData[ ,1]

colnames( phenoData )[1] <-"Tumor_Sample_Barcode"

phenoData[1:5,1:5]

save( phenoData, file = Rdata_file )

}else{

load( Rdata_file )

}

这里是遇到的第一个坑:我们看一下临床信息的“Tumor_Sample_Barcode”,是16位的短ID,但是后来在使用read.maf读取maf文件时,发现下载的maf文件的“Tumor_Sample_Barcode”是长ID,就存在了两个ID不匹配,从而导致临床信息被直接略过了。我去github上翻看了一下作者的代码,read.maf也可以接受数据框。所以就把maf文件先读取进来,处理一下ID。

2. 读取maf文件

maf <-data.table::as.data.table(read.csv(file ="./raw_data/TCGA.LIHC.mutect.DR-10.0.somatic.maf.gz",

header =TRUE, sep ='\t',

stringsAsFactors =FALSE, comment.char ="#"))

maf$Tumor_Sample_Barcode <- substr(maf$Tumor_Sample_Barcode,1,16)

require(maftools)

## 作者用到了HBV和HCV的临床信息

phenoData$HBV <- ifelse(phenoData$hist_hepato_carc_fact =='Hepatitis B','HBV','others')

phenoData$HCV <- ifelse(phenoData$hist_hepato_carc_fact =='Hepatitis C','HCV','others')

phenoData[phenoData$neoplasm_histologic_grade ==""] <-'no_reported'

## 这个函数不强求直接读取文本文件,也可以读取数据变量

laml <-read.maf(maf, clinicalData =phenoData)

laml

laml@data <- laml@data[grepl('PASS', laml@data$FILTER), ]

接下来绘图遇到了第二个坑,关于factor的问题,以及颜色的对应关系的列表如何制作,绘图的函数怎么调用颜色信息。

3. 绘图

library(RColorBrewer)

png(paste0('oncoplot_top26_phone', tumor_type,'.png'), res =150,

width =1500, height =1080)

## 文章中这些driver gene是Mutsig挑选出来的,文章里面提供了,就直接使用了这个数据

genes = c("TP53","CTNNB1","ALB","AXIN1","BAP1","KEAP1","NFE2L2","LZTR1","RB1","PIK3CA","RPS6KA3","AZIN1","KRAS","IL6ST","RP1L1","CDKN2A","EEF1A1","ARID2","ARID1A","GPATCH4","ACVR2A","APOB","CREB3L3","NRAS","AHCTF1","HIST1H1C")

## 为突变类型的分类数据设置颜色

variantClass <- names(table(laml@data$Variant_Classification))

col = c(RColorBrewer::brewer.pal(n =4, name ='Set1'),

RColorBrewer::brewer.pal(n =5, name ='Set2'))

names(col) = variantClass

col

## 绘图的时候我们使用的数据是laml,临床信息在clinical.data里面

## 绘图函数要求这些设置颜色的数据是factor,所以我们要把加到图上的

## 临床信息转变为因子

laml@clinical.data$neoplasm_histologic_grade <-

as.factor(laml@clinical.data$neoplasm_histologic_grade)

gradecolors = RColorBrewer::brewer.pal(n =4,name ='Spectral')

names(gradecolors) = levels(laml@clinical.data$neoplasm_histologic_grade)

laml@clinical.data$race.demographic <-

as.factor(laml@clinical.data$race.demographic)

Racecolors = RColorBrewer::brewer.pal(n =5,name ='Spectral')

names(Racecolors) = levels(laml@clinical.data$race.demographic)

laml@clinical.data$gender.demographic <-

as.factor(laml@clinical.data$gender.demographic)

Gendercolors = c("#b3e2cd","#fb9a99")

names(Gendercolors) = levels(laml@clinical.data$gender.demographic)

laml@clinical.data$HBV <-

as.factor(laml@clinical.data$HBV)

HBVcolors = c("#ffffb3","#e31a1c")

names(HBVcolors) = levels(laml@clinical.data$HBV)

laml@clinical.data$HCV <-

as.factor(laml@clinical.data$HCV)

HCVcolors = c("#1b9e77","#fc8d62")

names(HCVcolors) = levels(laml@clinical.data$HCV)

## 绘图函数需要一个list

phecolors = list(neoplasm_histologic_grade = gradecolors,

race.demographic = Racecolors,

gender.demographic = Gendercolors,

HBV = HBVcolors,

HCV = HCVcolors)

## clinicalFeatures是从laml@clinical.data里面挑取数据,所以

## 一定要是laml@clinical.data里面的列名

oncoplot(maf = laml,

colors = col,

bgCol ="#ebebeb", borderCol ="#ebebeb",

genes = genes, GeneOrderSort =F, keepGeneOrder =T,

fontSize =7, legendFontSize =7,

annotationFontSize =7,

annotationTitleFontSize =7,

sortByMutation =T,

showTumorSampleBarcodes =F,

annotationColor = phecolors,

clinicalFeatures = c("neoplasm_histologic_grade",

"race.demographic",

"gender.demographic",

"HBV",

"HCV"))

dev.off()

相关文章

  • 细数绘制一张全景图所遇到的坑

    细数绘制一张全景图所遇到的坑 大家好,我是生信技能树学徒,前面我们带来了大量的表达数据挖掘实战演练,但是TCGA数...

  • 基本突变情况热图绘制

    对于测序相关文章,有一张漂亮的基因突变全景图可以为文章增色不少。下面我们就来一步步看怎么绘制漂亮的全景图。 基本热...

  • H5 转盘抽奖(awardRotate.js)碰到的问题

    如题,在使用awardRotate.js做这个大转盘的时候碰到无数坑,下面来细数一下: 一、canvas 绘制远程...

  • H5 转盘抽奖(awardRotate.js)碰到的问题

    如题,在使用awardRotate.js做这个大转盘的时候碰到无数坑,下面来细数一下:一、canvas 绘制远程图...

  • python所遇到的坑

    我是在ubuntu中,自带的有python2,python3有安装了anaconda套件,所以python的版本很...

  • 我所遇到的坑

    我所遇到的坑 JavaScript VueJS 在Vue中数组发生改变,需要用到以下函数才能动态更新。 push(...

  • 细数我养玫瑰遇到的那些坑

    最近入了养花的坑,养了大半年了,开始记点小笔记吧。先从坎坷的玫瑰之路说起吧。 半年前买了盆迷你玫瑰,刚买回来时娇艳...

  • 安装Genymotion所遇到的坑

    之前知道Genymotion是一款出色的跨平台的Android模拟器,具有容易安装和使用、运行速度快的特点,是An...

  • 使用RxSwift所遇到的坑

    摘要:当Swift迅速崛起、并渐渐取代oc成功iOS开发的首选语言的时候,Swift的相关框架也是如雨后春笋般冒了...

  • 使用openGLES2.0做一个全景图片展示-ios版

    一. 背景分析首先我们得有一张全景图片,这个图片是由两个摄像头拍摄合成到一张图片上的全景图片。有了图片,如何在手机...

网友评论

    本文标题:细数绘制一张全景图所遇到的坑

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