生信工具

Sequenza从WES推断出拷贝数概况

2020-07-02  本文已影响0人  共由小兑

Annals of Oncology 26: 64–70, 2015
doi:10.1093/annonc/mdu479
Published online 15 October 2014

Sequenza: allele-specific copy number and mutation profiles from tumor sequencing data

背景:
肿瘤 DNA 的外显子组或全基因组深度测序连同配对的正常 DNA 可能提供肿瘤特征的体细胞突变的详细图像。 然而,由于肿瘤标本中正常细胞的存在、瘤内或瘤体的异质性以及原始数据的庞大规模,这些序列数据的分析可能会变得复杂。

材料和方法:
Sequenza是一个使用配对的肿瘤正常DNA测序数据来估计肿瘤细胞和倍性,并计算等位基因特异性拷贝数图谱和突变图谱的软件包。将Sequenza和两个以前发布的算法应用于30个肿瘤的外显子组序列数据。通过将这些结果与使用匹配的SNP阵列生成的结果进行比较,并通过肿瘤的等位基因特异性拷贝数分析(ASCAT)算法对其进行处理,从而评估这些算法的性能。

结果:
Sequenza / exome 和 SNP / ASCAT 之间的比较显示出细胞结构和多倍性估计值之间有很强的相关性。该性能明显优于以前发布的算法。 此外,在模拟正常肿瘤混合物的人工数据中,Sequenza在肿瘤含量低至30%的样品中检测到了正确的倍性。

结论:
Sequenza和基于SNP阵列的拷贝数图谱之间的一致性表明,单独进行外显子组测序不仅足以识别小规模突变,而且足以估计细胞数量和推断DNA拷贝数畸变。


介绍

Figure S1: Detailed schema of sequenza workflow

Sequenza软件由两个不同的部分组成:


序列在肿瘤外显子测序数据中的应用

为了比较Sequenza WES图谱与当前最新的SNP图谱,从10例OVCA患者和20例KIRC患者中获得了配对的肿瘤正常外显子和Affymetrix SNP6阵列。之所以选择肾脏癌和卵巢癌,是因为它们代表了两种截然不同的癌症类型:透明细胞肾癌的细胞数低,拷贝数变异少,而卵巢癌通常表现出大量的拷贝数改变和高肿瘤细胞数。


Figure 1. Representative output of the Sequenza algorithm
Figure 1.A 观察数据的对数后验概率(LPP)被计算为一系列候选倍性和细胞质数值
Figure 1.B 观察每个基因组片段(黑色圆圈和点)的深度比和 BAF 值
Figure 1.C 根据基因组位置绘制染色体图,指示MAF(上)、BAF(中)和DR(下)

讨论

☀️ 🌤 ⛅️ 🌥 ☁️ 🌦 🌧 ⛈ 🌩 🌨 ❄️ ☃️ ⛄️ 可 可 爱 爱 的 分 隔 线 🌈


测试

1. SAMtools输出pileup格式的肿瘤和正常标本数据。

> samtools mpileup normal.sorted.bam -f genome.fa -Q 20 |gzip > normal.pileup.gz
> samtools mpileup tumour.sorted.bam -f genome.fa -Q 20 |gzip > tumor.pileup.gz

2. python_sequenza-utils

#2.1 gc_wiggle生成全基因组GC文件
> python sequenza-utils.py GC-windows -w 50 genome.fa |gzip > hg38.gc50Base.txt.gz
#2.2 pileup2seqz生成合并seqz文件
> python sequenza-utils.py pileup2seqz -gc hg38.gc50Base.txt.gz -n normal.pileup.gz -t tumor.pileup.gz |gzip > out.seqz.gz
#2.3 seqz-binning修剪seqz文件
> python sequenza-utils.py seqz-binning -w 50 -s out.seqz.gz | gzip > out_small.seqz.gz

注意:也可用bam2seqz合并1和2.2步,直接从bam到合并seqz文件。

> python sequenza-utils.py bam2seqz -n normal.sorted.bam -t tumour.sorted.bam -f genome.fa -gc hg38.gc50Base.txt.gz -o > out.seqz.gz

3. R_sequenza_package
再次感叹一下安装R包真难!R-sequenza手册地址

> library(sequenza)
> seqz.data <- read.seqz("data.bin50_seqz.gz")
> head(seqz.data)
# A tibble: 6 x 14
  chromosome position base.ref depth.normal depth.tumor depth.ratio    Af    Bf
  <chr>         <int> <chr>           <int>       <int>       <dbl> <dbl> <dbl>
1 chrM              2 N                 369         908        2.48 1         0
2 chrM             14 T                 214         548        2.56 0.998     0
3 chrM             26 C                 346         847        2.45 0.999     0
4 chrM             31 C                 408         966        2.37 0.998     0
5 chrM             34 G                 428        1042        2.44 0.999     0
6 chrM             43 C                 586        1445        2.47 0.999     0
# ... with 6 more variables: zygosity.normal <chr>, GC.percent <dbl>,
#   good.reads <dbl>, AB.normal <chr>, AB.tumor <chr>, tumor.strand <chr>
> chromosome_list<-c("chr1","chr2","chr3","chr4","chr5","chr6","chr7","chr8","chr9","chr10","chr11","chr12","chr13","chr14","chr15","chr16","chr17","chr18","chr19","chr20","chr21","chr22")
> test <- sequenza.extract(data.bin50_seqz.gz,chromosome.list=chromosome_list)
> for(i in 1:22){
    pdf(paste("figure2 Plot chromosome view chr",i,".pdf",sep=""))
    chromosome.view(mut.tab = test$mutations[[i]], baf.windows = test$BAF[[i]],ratio.windows = test$ratio[[i]], min.N.ratio = 1,segments = test$segments[[i]], main = test$chromosomes[i])
    dev.off()
}
figure2 Plot chromosome view chr13.pdf
> CP.example <- sequenza.fit(test)
> pdf("figure2.5 cp.plot.pdf")
> cint <- get.ci(CP.example)  #extract confidence intervals
> cp.plot(CP.example)
> cp.plot.contours(CP.example, add = TRUE, likThresh = c(0.95))
> dev.off()
figure2.5 cp.plot.pdf
> sequenza.results(sequenza.extract = test, cp.table = CP.example,sample.id = "Test", out.dir="TEST")

sequenza.results后生成的TEST文件夹结果:


Test_model_fit.pdf Test_segments.txt
Test_mutations.txt
Test_confints_CP.txt
Test_alternative_solutions.txt
Test_genome_view.pdf
Test_gc_plots.pdf
Test_chromosome_depths.pdf

突然发现sequenza.results后就会有全部的内容😂😂😂
只能安慰自己一步步画可以对个别图修改特定格式,害!
所以,最后,懒人版本👇🏻👇🏻👇🏻

> args<-commandArgs(T)
> library(sequenza)
> setwd("/out")
> seqz.data <- read.seqz("data.bin50_seqz.gz")
> #Inference of cellularity and ploidy
> CP.example <- sequenza.fit(result)
> #Results of model fitting
> sequenza.results(sequenza.extract = test, cp.table = CP.example,sample.id = "Test", out.dir="TEST")

👏🏻 👏 👏🏼 👏🏽 👏🏾 👏🏿 nice!👏🏻 👏 👏🏼 👏🏽 👏🏾 👏🏿

上一篇下一篇

猜你喜欢

热点阅读