本文首发于“生信补给站”公众号 https://mp.weixin.qq.com/s/k7yzk9hPX3Bi-ohAo83ZYw
Mutational Signatures 出现在2013年的nature文章Signatures of mutational processes in human cancer中(https://www.nature.com/articles/nature12477)。将mutation位置加上前后一个碱基,构成三碱基模式,然后统计96(6 * 4 * 4)种突变组合的情况。
好奇为什么是96种的,可以查一下文献。
本文介绍如何利用deconstructSigs-R包进行mutation signature分析。
一 载入R包 数据
直接CRAN安装,后面再下载相应的数据库即可
#install.packages("deconstructSigs") library(deconstructSigs) #读入数据 head(sample.mut.ref) Sample chr pos ref alt 1 1 chr1 905907 A T 2 1 chr1 1192480 C A 3 1 chr1 1854885 G C 4 1 chr1 9713992 G A 5 1 chr1 12908093 C A 6 1 chr1 17257855 C T class(sample.mut.ref) ## [1] "data.frame"
只需要将自己的数据整理成以上五列(ID,chr,pos,ref,alt )信息即可,如果是TCGA中的MAF文件也是很好提取的。
二 mut.to.sigs.inpu
使用mut.to.sigs.input构建输入文件
使用 mut.to.sigs.input
函数,构建计算signature的输入文件,得到每个样本的96种三碱基类型。
# Convert to deconstructSigs input sigs.input <- mut.to.sigs.input(mut.ref = sample.mut.ref, sample.id = "Sample", chr = "chr", pos = "pos", ref = "ref", alt = "alt") 注:这一步也许会提示没有XX包,按照要求下载指定R包即可(也许是数据库,耐心安装)。 #查看结果信息 dim(sigs.input) #[1] 2 96 head(t(sigs.input)) #只有两个sample:“1”和“2” 1 2 A[C>A]A 9 1 A[C>A]C 7 1 A[C>A]G 5 0 A[C>A]T 7 0 C[C>A]A 10 3 C[C>A]C 18 2
以上就得到了sample.mut.ref文件中每一个sample的96种三碱基类型的结果。
三 推断signature组成
3.1 使用whichSignatures推断signature的组成
# Determine the signatures contributing to the example sample1 sample_1 = whichSignatures(tumor.ref = sigs.input, signatures.ref = signatures.cosmic, sample.id = 1, contexts.needed = TRUE, tri.counts.method = 'default')
tumor.ref:每个sample的96种三碱基突变序列
signatures.ref:已知的signatures参考文件,可选signatures.nature2013和signatures.cosmic
sample.id:对应tumor.ref文件中的样本名
contexts.needed :是否需要突变上下文
tri.counts.method:三核酸序列标准化方式,默认“default” 不进行标准化 ;或者选择exome,genome,exome2genome,genome2exome 来限定区域。
3.2 查看返回结果
#查看结果 class(sample_1) # [1] "list" #查看权重结果 sample_1$weights #输出tumor的三碱基序列百分比 sample_1$tumor #三碱基序列百分比 * 权重 sample_1$product
whichSignatures
会输出5个元素的list文件:
- weights -- data frame containing the weights assigned to each of the k signatures of the input signatures matrix
- tumor -- matrix of the trinucleotide contexts for the tumor sample used as input
- product -- matrix obtained when the tumor matrix is multiplied by the assigned weights
- diff -- matrix representing the difference between the tumor matrix and product matrix
- unknown -- numeric weight not assigned to any of the input signatures
3.3 指定signature权重
通过associated
参数指定参与计算的signature
sample_1.associate = whichSignatures(tumor.ref = sigs.input, signatures.ref = signatures.cosmic, sample.id = 1, associated = c("Signature.1","Signature.22"), contexts.needed = TRUE, tri.counts.method = 'default') sample_1.associate$weights
3.4 设定signature的阈值
通过signature.cutoff
设定阈值,小于此值的为0
sample_1.cutoff = whichSignatures(tumor.ref = sigs.input, signatures.ref = signatures.cosmic, sample.id = 1, contexts.needed = TRUE, signature.cutoff = 0.08 , tri.counts.method = 'default') sample_1.cutoff$weights
四 signature可视化
使用plotSignatures 参数可视化
# Plot example plot_example <- whichSignatures(tumor.ref = sigs.input, signatures.ref = signatures.cosmic, sample.id = 1) # Plot output plotSignatures(plot_example, sub = 'example')
查看sample1的signature的组成情况,就是上面plot_example$weight , plot_example$tumor , plot_example$product 的结果可视化。