deconstructSigs|探寻cosmic的独特“气质”-mutation signature !

简介: deconstructSigs|探寻cosmic的独特“气质”-mutation signature !

本文首发于“生信补给站”公众号  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 的结果可视化。

相关文章
|
4月前
|
监控 安全 项目管理
『软件工程3』你应该知道的三种原型实现模型:抛弃式、演化式、增量式
该文章详细解释了三种原型实现模型——抛弃式、演化式、增量式模型的特点、流程、优缺点及适用场景。
『软件工程3』你应该知道的三种原型实现模型:抛弃式、演化式、增量式
|
5月前
|
前端开发 API Swift
探索iOS应用开发的新趋势:SwiftUI和Combine框架
【8月更文挑战第16天】本文深入探讨了iOS平台上的两个最新技术:SwiftUI和Combine。SwiftUI旨在简化用户界面的构建,而Combine则优化了事件处理机制。我们将分析这两个框架如何共同推动iOS开发的未来,以及它们给开发者带来的便利和挑战。
125 6
|
5月前
|
前端开发 JavaScript 开发者
JavaScript中的哲学难题:深入探讨undefined与null的情感纠葛
【8月更文挑战第23天】在Web前端开发中,理解和区分`undefined`与`null`至关重要。`undefined`表示变量已声明但未赋值,常出现在未初始化的变量或函数无返回值的情形;`null`则是开发者主动赋值的结果,意味着变量虽存在但值为空。虽然`undefined == null`为真,但`undefined === null`为假,表明它们在语义上有明显差异。合理使用两者能增强代码的健壮性和可读性,避免运行时错误。
40 0
barplot3d|圣诞节送你一个mutation signature搭建的“乐高”
barplot3d|圣诞节送你一个mutation signature搭建的“乐高”
|
算法 搜索推荐
《十大排序算法》让你的思维流动起来。今天的主角又是排序思想你了解多少。每种算法的内容在代码中体现出来。
《十大排序算法》让你的思维流动起来。今天的主角又是排序思想你了解多少。每种算法的内容在代码中体现出来。
205 0
《十大排序算法》让你的思维流动起来。今天的主角又是排序思想你了解多少。每种算法的内容在代码中体现出来。
|
架构师 Java 编译器
抽丝剥茧聊协程之深入理解Continuation原理
抽丝剥茧聊协程之深入理解Continuation原理
抽丝剥茧聊协程之深入理解Continuation原理
|
编解码 前端开发 JavaScript
前端Base64编码知识,一文打尽,探索起源,追求真相。
Base64编码,你一定知道的,先来看看她在前端的一些常见应用: 当然绝部分场景都是基于Data URLs
469 0
前端Base64编码知识,一文打尽,探索起源,追求真相。
|
容器
「站在上帝的角度」谈谈Element组件结构-Rate
「站在上帝的角度」谈谈Element组件结构-Rate
MASS幸运哈希游戏系统开发丨冲突解决方法(代码分析)
3.2 链地址法 链地址法就是将相应位置上冲突的所有关键词存储在同一个单链表中。 设关键字序列为 47 , 7 , 29 , 11 , 16 , 92 , 22 , 8 , 3 , 50 , 37 , 89 , 94 , 21 47, 7, 29, 11, 16, 92, 22, 8, 3, 50, 37, 89, 94, 2147,7,29,11,16,92,22,8,3,50,37,89,94,21,散列函数取为h ( k e y ) = k e y m o d    11 h(key) = key \mod 11h(key)=keymod11,用分离链接法处理冲突。
|
缓存 移动开发 前端开发
从 SWR 开始 — 一窥现代请求 hooks 设计模型
本文将以 swr 为例子,讲述现在最热门的 useRequest、swr 和 react-query 三个请求 hooks 的新机制,以及新机制后 class Component 和 hooks 在设计上的区别。
从 SWR 开始 — 一窥现代请求 hooks 设计模型