2023-MutationalPatterns包学习笔记(一)

老规矩,先奉上学习资料链接:

MutationalPatterns简介

突变过程在基因组DNA中会留下特征足迹(footprints)。该软件包提供了一套全面的灵活功能,使研究人员能够轻松评估和可视化碱基替代类别中的大量mutational patterns,例如健康样本,肿瘤样本或NDA修复缺陷细胞。

该包涵盖了广泛的模式,包括:mutational signatures, transcriptional and replicative strand bias, lesion segregation, genomic distribution以及association with genomic features

该软件包适用于单核苷酸变异(SNVs)插入和删除(Indels)双碱基替换(DBSs)更大的多碱基替换(MBSs)

该包提供了提取mutational signatures de novo和在单个样本级别上确定先前识别的mutational signatures的贡献的功能。

此教程展示了这个包中一些常见函数的使用方式。

安装并加载:

if (!requireNamespace("BiocManager", quietly = TRUE))
    install.packages("BiocManager")

BiocManager::install("MutationalPatterns")
library(MutationalPatterns)

输入数据

此包的输入数据为VCF文件以及对应的参考基因组序列。

包中内置了一些参考基因可供选择:

library(BSgenome)
head(available.genomes())

ref_genome <- "BSgenome.Hsapiens.UCSC.hg19"
library(ref_genome, character.only = TRUE)
image-20230928175607927.png

这个包中提供了两个示例数据集:

  • 其中一个包含来自3个不同组织的9个正常人类成体干细胞的体细胞SNV catalogues(Blokzijl et al. 2016)
  • 另一个包含来自3个健康人类造血干细胞的体细胞indels和DBSs(Osorio et al. 2018)

加载示例SNVs数据

vcf_files <- list.files(system.file("extdata", package = "MutationalPatterns"),
  pattern = "sample.vcf", full.names = TRUE
)

sample_names <- c(
  "colon1", "colon2", "colon3",
  "intestine1", "intestine2", "intestine3",
  "liver1", "liver2", "liver3"
)

# 生成GRangesList对象
grl <- read_vcfs_as_granges(vcf_files, sample_names, ref_genome)

# 添加样本信息
tissue <- c(rep("colon", 3), rep("intestine", 3), rep("liver", 3))

grl对象:

image-20230928181821411.png

加载示例数据indels, DBSs and MBSs

blood_vcf_fnames <- list.files(
  system.file("extdata", package = "MutationalPatterns"), 
  pattern = "blood.*vcf", full.names = TRUE)

# Set their sample names.
blood_sample_names <- c("blood1", "blood2", "blood3")

# 使用type="all"参数不过滤任何突变类型
blood_grl <- read_vcfs_as_granges(blood_vcf_fnames, blood_sample_names, ref_genome, type = "all")

# You can now retrieve different types of mutations from the GrangesList.
snv_grl <- get_mut_type(blood_grl, type = "snv")
indel_grl <- get_mut_type(blood_grl, type = "indel")
dbs_grl <- get_mut_type(blood_grl, type = "dbs")
mbs_grl <- get_mut_type(blood_grl, type = "mbs")

也可以在数据读取的时候直接选择一种mutations

indel_grl <- read_vcfs_as_granges(blood_vcf_fnames, blood_sample_names, ref_genome, type = "indel")

Mutation characteristics

mutation有四种类型:

  • SNVs:Base substitution types,Mutation spectrum,96 mutational profile,Larger contexts
  • Indels
  • DBSs
  • MBSs

1)SNVs:Base substitution types

mutations_from_vcf:先来看第一种SNVs的特征单碱基替换,使用mutations_from_vcf函数:格式为REF>ALT

## 1)SNVs:Base substitution types 单个样本
muts <- mutations_from_vcf(grl[[1]])
head(muts, 12)

[1] "A>C" "A>G" "C>T" "A>G" "G>T" "T>A" "T>C" "G>A" "G>A" "C>A" "G>A" "G>T"

mut_type:也可以将碱基替换模式转换成6 types of base substitution types:C>A, C>G, C>T, T>A, T>C, T>G

如G>T,G为reference allele,T为alternative allele,将G:C>T:A变成C>A

types <- mut_type(grl[[1]])
head(types, 12)

[1] "T>G" "T>C" "C>T" "T>C" "C>A" "T>A" "T>C" "C>T" "C>T" "C>A" "C>T" "C>A"

mut_context:从参考基因组中检索VCF对象中碱基替换的序列上下文(一个碱基上游和一个碱基下游)

context <- mut_context(grl[[1]], ref_genome)
head(context, 12)

 chr1  chr1  chr1  chr1  chr1  chr1  chr1  chr1  chr1  chr2  chr2  chr2 
"CAG" "AAC" "ACA" "AAG" "TGA" "GTT" "ATT" "CGC" "AGC" "ACA" "CGT" "GGA" 

type_context:可以检索VCF GRanges对象中所有位置的类型和上下文。

type_context <- type_context(grl[[1]], ref_genome)
lapply(type_context, head, 12)

$types
 [1] "T>G" "T>C" "C>T" "T>C" "C>A" "T>A" "T>C" "C>T" "C>T" "C>A" "C>T" "C>A"

$context
 chr1  chr1  chr1  chr1  chr1  chr1  chr1  chr1  chr1  chr2  chr2  chr2 
"CTG" "GTT" "ACA" "CTT" "TCA" "GTT" "ATT" "GCG" "GCT" "ACA" "ACG" "TCC"

mut_type_occurrences:可以在GRangesList中计算所有VCF对象的突变类型发生次数

type_occurrences <- mut_type_occurrences(grl, ref_genome)
type_occurrences

结果如下:

image-20230928211912611.png

2)SNVs:Mutation spectrum

突变谱显示碱基替换类型中每种突变类型的相对贡献。

plot_spectrum函数可以绘制6种碱基替代类型在所有样本上的平均相对贡献。

误差条表示所有样本的95%置信区间。

图的标题显示突变的总数。

opt <- list(od = "youpath/")

## 2)SNVs:Mutation spectrum
p1 <- plot_spectrum(type_occurrences)
p2 <- plot_spectrum(type_occurrences, CT = TRUE)
p3 <- plot_spectrum(type_occurrences, CT = TRUE, indv_points = TRUE, legend = FALSE)

library(gridExtra)
p <- grid.arrange(p1, p2, p3, ncol = 3, widths = c(3, 3, 1.75))
ggsave(filename = paste0(opt$od, "/Mutation spectrum.png"), width = 12, height = 4, plot = p)
image-20230928212724401.png

也可以进行分组绘制展示:

p4 <- plot_spectrum(type_occurrences, by = tissue, CT = TRUE, legend = TRUE)
p5 <- plot_spectrum(type_occurrences, CT = TRUE, legend = TRUE, error_bars = "stdev")
p <- grid.arrange(p4, p5, ncol = 2, widths = c(4, 2.3))
ggsave(filename = paste0(opt$od, "/Mutation_spectrum_group.png"), width = 10, height = 4, plot = p)
image-20230928222011423.png

3)SNVs:96 mutational profile

首先生成一个96个三核苷酸突变计数矩阵

## 3)SNVs:96 mutational profile
mut_mat <- mut_matrix(vcf_list = grl, ref_genome = ref_genome)
head(mut_mat)
image-20230928224644567.png

对96突变谱进行可视化,选择其中两个样本绘图看一下:

p <- plot_96_profile(mut_mat[, c(1, 7)])

可视化结果如下:

image-20230928224859648.png

4)SNVs:Larger contexts

也可以看看看到更大的突变背景。但是,这只有在有大量突变时才有用

##  4)SNVs:Larger contexts
mut_mat_ext_context <- mut_matrix(grl, ref_genome, extension = 2)
head(mut_mat_ext_context)
p <- plot_profile_heatmap(mut_mat_ext_context, by = tissue)
ggsave(filename = paste0(opt$od, "/Larger_contexts.png"), width = 10, height = 4, plot = p)
image-20230928230219904.png

Indels

首先,通过get_indel_context获得COSMIC indel上下文,get_indel_context函数将muttype和muttype_sub列添加到GRangesList中。muttype列包含indel的主要类型。muttype_sub列显示重复单元的数量。图中还会显示微同源性缺失(microhomology (mh) deletions)长度,并计算indels每类型的数量。

### Indels
indel_grl <- get_indel_context(indel_grl, ref_genome)
head(indel_grl[[1]], n = 3)

indel_counts <- count_indel_contexts(indel_grl)

              blood1 blood2 blood3
C_deletion_1      37     10      2
C_deletion_2      14      4      1
C_deletion_3       4      2      2
C_deletion_4       1      1      0
C_deletion_5       1      0      0
C_deletion_6+      1      0      0

绘制indel spectra谱

p <- plot_indel_contexts(indel_counts, condensed = TRUE)
ggsave(filename = paste0(opt$od, "/indel_spectra.png"), width = 12, height = 7, plot = p)
image-20230928232309720.png

不展示indel细节

## 不展示细节
p <- plot_main_indel_contexts(indel_counts)
ggsave(filename = paste0(opt$od, "/indel_main_spectra.png"), width = 10, height = 7, plot = p)
image-20230928233014401.png

DBSs

通过更改GRangesList的REF和ALT列获取COSMIC DBS上下文。计算每种类型的DBS数量。这同样会得到一个类似于mut_mat矩阵的矩阵,并进行绘图展示:

### DBSs
head(dbs_grl[[1]])
dbs_grl <- get_dbs_context(dbs_grl)
head(dbs_grl[[1]])
dbs_counts <- count_dbs_contexts(dbs_grl)

p <- plot_dbs_contexts(dbs_counts, same_y = TRUE)
ggsave(filename = paste0(opt$od, "/DBSs_spectra.png"), width = 10, height = 7, plot = p)
image-20230928234618227.png

也可以选择只基于参考碱基来绘图,现在x轴包含参考碱基

p <- plot_main_dbs_contexts(dbs_counts, same_y = TRUE)
ggsave(filename = paste0(opt$od, "/DBSs_main_spectra.png"), width = 10, height = 7, plot = p)
image-20230928234754832.png

MBSs

这个示例数据中没有COSMIC MBS,就看看代码吧

### MBSs
mbs_counts <- count_mbs_contexts(mbs_grl)
p <- plot_mbs_contexts(mbs_counts, same_y = TRUE)
ggsave(filename = paste0(opt$od, "/MBSs_spectra.png"), width = 10, height = 7, plot = p)

示意图如下:

image-20230929002637654.png

样本整合

有时每个样本只有很少的突变。在这些情况下,组合多个样本可能是有用的。这可以通过pool_mut_mat来实现。这适用于snv、索引、DBSs和mbs的矩阵。

pooled_mut_mat <- pool_mut_mat(mut_mat, grouping = tissue)
head(pooled_mut_mat)
image-20230929002730721.png

下次学习Mutational signatures~

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

推荐阅读更多精彩内容