CNVkit检测拷贝数变异

作者按

本文记述了博主测试软件CNVkit的所有过程,mind如下,部分尚待补充。

概述

CNVkit是一款使用率较高的检测染色体片段拷贝数变异的软件

官方文献为

https://journals.plos.org/ploscompbiol/article?id=10.1371/journal.pcbi.1004873

官方manual网址为

https://cnvkit.readthedocs.io/en/stable/quickstart.html#install-cnvkit

原理

(待有时间补充)

安装

cnvkit为Python写成的,所以可以直接用conda安装
命令为

conda install cnvkit

之后可直接调用 cnvkit.py

运行脚本

1.准备panel的捕获bed,用插件cnvkit.py target
参数解释:

[--annotate ANNOTATE] 如果供应商BED文件没有用相应的基因名称标记每个区域,则--annotate选项可以添加或替换这些标签。基因注释数据库,用RefSeq或Ensembl,可以从UCSC以“flat”格式获得,链接为用于hg19的refFlat.txt。
在其他情况下,区域标签是由逗号分隔的人类可读基因名称和数据库登录代码的组合(例如,“ref | BRAF,mRNA | AB529216,en | ENST00000496384”)。

[--short-names] --short-names选项以逗号分隔这些基因,然后选择覆盖共享该种质的连续区域的最大数量的单一基因,并将其作为这些区域的新标签。(仅应用refFlat注释会更简单。)
target bed不需要是基因,但为了方便,CNVkit的文档和源代码通常指与“基因”具有相同标签的连续目标区域。

[--split] BED大小可能不相同,因此--split选项会划分较大的区域,以便分割后的平均区域大小接近于指定的大小 --average-size。

[-a AVG_SIZE] 如果需要更高的分辨率,可以选择较小的--average-size。
人类基因组中的外显子平均大小约为200bp。默认267是为了分裂较大的外显子将产生最小大小为200的bin。由于包含较少read的bin会导致噪音较大的拷贝数信号,该方法确保分裂更大的外显子不会比平均值更差。
例如,将--average-size设置为100bp,将产生大约两倍的bin,这可能导致更高分辨率的分段。但是,每个bin计数的read数将减少一半左右,从而增加bin覆盖范围内的方差或“噪音”。噪声过多可能会使可视化变得困难,并且由于噪声可能无法正太分布,特别是在存在多个读数为零的分箱的情况下,分割算法可能会在低覆盖率样本上产生较不准确的结果。在实践中,bin为200-300个read效果较好; 因此我们建议靶向测序覆盖度为200x至300x,读长100bp时,可以将其设为100bp。
对于panel捕获的,如果target region没有统一密度地平铺, 测试样本的读取深度标准化为pooled reference时,log2比率将会平均。但是,pooled reference的“分布”以及测试样本.cnr文件中相应分档的“比重”将相应更高或更低。
此外捕获富集区域不应该包含在目标BED文件中,可以通过使用-x选项从访问区域(这决定了antitarget)中排除。需要和湿实验同事确认。

[-o FILENAME] 输出文件。
脚本

#change your own bed for cnvkit use
cnvkit.py target input/panel.bed \
--annotate input/refFlat \
--split \
--short-names \
-a 267 \
-o output/my_targets.bed

2.根据捕获bed获取背景未捕获的区域,用cnvkit.py antitarget
参数有:
[-g FILENAME] 即--access,文件下载路径https://github.com/etal/cnvkit/tree/master/data

[-a AVG_SIZE]
[-m MIN_SIZE]
[-o FILENAME]

脚本

#creat antitarget region
cnvkit.py antitarget input/panel.bed \
--access input/access \
--avg-size 49984 \
--min-size 3124 \
-o output/my_antitargets.bed

3.计算正常样本的覆盖深度
脚本

for i in `cat normal.list`
do
cnvkit.py coverage input/${i}.HQ.bam output/Target.bed -o cnn/${i}.targetcoverage.cnn&&cnvkit.py coverage input/${i}.HQ.bam output/Background.bed -o cnn/${i}.antitargetcoverage.cnn
done

4.构建参考baseline
脚本

cnvkit.py reference cnn/ Ref/ucsc.hg19.fasta -o cnn/ref.cnn

5.分析样本拷贝数
脚本

cnvkit.py coverage input/tumor.bam output/Target.bed -o output/tumor.targetcoverage.cnn

cnvkit.py coverage input/tumor.bam output/Background.bed -o output/tumor.antitargetcoverage.cnn

cnvkit.py fix output/tumor.targetcoverage.cnn output/tumor.antitargetcoverage.cnn cnn/ref.cnn -o output/tumor.cnr

cnvkit.py segment output/tumor.cnr  --min-variant-depth 20 -o output/tumor.cns -m cbs -t 0.01 --drop-low-coverage -p 8 

cnvkit.py call output/tumor.cns --center   -m threshold -t=-1.1,-0.25,0.2,0.7  --ploidy 2   --drop-low-coverage -y -x female -o output/tumor.call.cns

cnvkit.py gainloss  output/tumor.cnr  -t=2 -m=6 --drop-low-coverage -o output/tumor.cnv.xls -y -x female

cnvkit.py diagram output/tumor.cns -t=2 -m=6 -x female -y -o output/tumor-diagram.pdf

结果解析

(待补充)

可视化结果

参考文献

NOTE

你可能感兴趣的:(CNVkit检测拷贝数变异)