首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用R包deconstructSigs根据已知的signature进行比例推断

使用R包deconstructSigs根据已知的signature进行比例推断

作者头像
生信技能树
发布2020-06-09 14:52:33
2K0
发布2020-06-09 14:52:33
举报
文章被收录于专栏:生信技能树生信技能树

对wgs数据的somatic突变文件自己推断denovo的signature,可以使用SomaticSignatures 包的identifySignatures函数,这个教程我在生信技能树分享过:使用R包SomaticSignatures进行denovo的signature推断,比如:0元,10小时教学视频直播《跟着百度李彦宏学习肿瘤基因组测序数据分析》 这个文献,研究者就是使用R包SomaticSignatures进行denovo的signature推断,拿到了11个自定义的signature。

但是更多的时候,研究者不会去自定义signature的,而是会直接使用sanger研究所科学家【1】提出来了肿瘤somatic突变的signature概念 ,把96突变频谱的非负矩阵分解后的30个特征,在cosmic数据库可可以查询到的30个特征。不同的特征有不同的生物学含义【2】,比如文章【3】 就是使用了 这些signature区分生存!主要是R包deconstructSigs可以把自己的96突变频谱对应到cosmic数据库的30个突变特征。

  • 【1】https://software.broadinstitute.org/cancer/cga/msp
  • 【2】https://en.wikipedia.org/wiki/Mutational_signatures
  • 【3】https://www.nature.com/articles/s41586-019-1056-z

而且我在教程:比较不同的肿瘤somatic突变的signature 也分享了如何比较不同方法拿到的signature,这样它们的生物学意义就可以联系起来了。

首先R包deconstructSigs可以把自己的96突变频谱对应到cosmic数据库的30个突变特征

在文章主页下载;https://static-content.springer.com/esm/art%3A10.1038%2Fs41422-020-0333-6/MediaObjects/41422_2020_333_MOESM23_ESM.csv

这个是大于500M的CSV文件,下载后修改名字,然后**读入R,**筛选拿到SNV突变位点,去对应的参考基因组里面获取突变上下文,就是 mut.to.sigs.input 函数:

library(data.table)
a=fread('../maf.csv',data.table = F)
a[1:4,1:3]
colnames(a)
mut=a
table(mut$Variant_Type)
mut=mut[mut$Variant_Type=='SNP',] 
a=mut[,c(10,2,3,8,9)]
colnames(a)=c( "Sample","chr", "pos","ref",  "alt")
# 下面的 mut.to.sigs.input 函数仅仅是需要 SNV的5列信息即可
sigs.input <- mut.to.sigs.input(mut.ref = a, 
                                sample.id = "Sample", 
                                chr = "chr", 
                                pos = "pos", 
                                ref = "ref", 
                                alt = "alt",
                                bsg = BSgenome.Hsapiens.UCSC.hg19)

然后 对每个样本,循环运行 whichSignatures 函数,判断每个样本的signature组成:

w=lapply(unique(a$Sample) , function(i){
  ## signatures.cosmic signatures.nature2013
  sample_1 = whichSignatures(tumor.ref = sigs.input[,], 
                             signatures.ref = signatures.cosmic, 
                             sample.id =  i, 
                             contexts.needed = TRUE,
                             tri.counts.method = 'default')
  print(i)
  return(sample_1$weights)
})
w=do.call(rbind,w)
library(pheatmap)
pheatmap(t(w),cluster_rows = F,cluster_cols = T)
pheatmap(w,cluster_rows = T,cluster_cols = F)
mut.wt=w
save(mut.wt,file = 'wgs-mut.wt.Rdata')

这个时候,可以选择signatures.cosmic 和 signatures.nature2013,这两个内置的signature,比如signatures.cosmic,其实在网络文件,signatures_probabilities.txt 可以查看。

R包SomaticSignatures进行denovo的signature推断后的11个signature

就是前面对每个样本,循环运行 whichSignatures 函数,判断每个样本的signature组成的时候,替换掉内置的signatures.cosmic 和 signatures.nature2013,代码如下:

signatures.cosmic
rowSums(signatures.cosmic)
colnames(signatures.cosmic)
load(file = 'escc_denovo_results.Rdata')
str(sigs_nmf) 
# sp signatures_probabilities
sp=sigs_nmf@signatures
head(sp)
colSums(sp)
sp=apply(sp,2,function(x){
  x/sum(x)
})
head(sp)
colSums(sp)
sp=t(sp)
chr=colnames(sp)
colnames(sp)=gsub(' ','',
                  paste(substring(chr,4,4),
                        '[',substring(chr,1,1),'>',substring(chr,2,2),']',
                        substring(chr,6,6)
                  ))
colnames(signatures.cosmic)
sp=sp[,colnames(signatures.cosmic)]
sc=signatures.cosmic

其中代码里面的escc_denovo_results.Rdata文件,来自于教程:使用R包SomaticSignatures进行denovo的signature推断

把自己的11个signature制作成为R包内置的signatures.cosmic 和 signatures.nature2013样式,这个代码非常复杂,需要大家自行认真的理解。

接下来对每个样本,循环运行 whichSignatures 函数的代码如下:

b=a[a$Sample %in% head(s,20),]
w=lapply(unique(b$Sample) , function(i){
  ## signatures.cosmic signatures.nature2013
  sample_1 = whichSignatures(tumor.ref = sigs.input[,], 
                             signatures.ref = as.data.frame(sp), 
                             sample.id =  i, 
                             contexts.needed = TRUE,
                             tri.counts.method = 'default')
  print(i)
  return(sample_1$weights)
})
w=do.call(rbind,w)
library(pheatmap)
pheatmap(t(w),cluster_rows = F,cluster_cols = T)
pheatmap(w,cluster_rows = T,cluster_cols = F)
sp=sigs_nmf@samples
sp=sp[rownames(sp) %in% head(s,20),]
pheatmap(sp,cluster_rows = F,cluster_cols = F)
pheatmap(w,cluster_rows = F,cluster_cols = F)

可以看到,自己制作好的 as.data.frame(sp) 就替代了 R包内置的signatures.cosmic 和 signatures.nature2013。

这个时候,就会根据自己的11个signature进行分解,而不是原来的R包内置的signatures.cosmic 和 signatures.nature2013两种分解模式。

但是可以对比两次的11个signature分解的差异。

首先看看教程:使用R包deconstructSigs根据已知的signature进行比例推断,的比例情况:

然后看看教程:使用R包SomaticSignatures进行denovo的signature推断,的比例情况;

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-06-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 生信技能树 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 首先R包deconstructSigs可以把自己的96突变频谱对应到cosmic数据库的30个突变特征
  • R包SomaticSignatures进行denovo的signature推断后的11个signature
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档