CNV软件的介绍
最近在学习CNV检测软件,在查阅的时候发现有个软件比较测试的文章,大力推荐了DECoN,那我就去学习一下这个软件吧。
先说说这个软件的优点:
- 基于经典软件ExomeDepth,采用的是Read-Depth(RD)主流检测策略。
- 青出于蓝而胜于蓝,在ExomeDepth的基础上新增加了亮点,检测染色体上第一个外显子区域的变异
和在隐马可夫模型中考虑了exon之间的距离这一因素。 - 基于NGS检测CNV,基于成本的因素,DECoN可以适用于exon-based的panel测序。
- 运行速度和存储消耗也有极大的优势,对于周期很短的临床检测样本,无疑是个很不错的选择。
文章链接:http://europepmc.org/backend/ptpmcrender.fcgi?accid=PMC5409526&blobtype=pdf
在准确性上,结果也很诱人,通过模拟数据和真实数据对软件的性能进行评估,在模拟数据集中,DECoN效果惊人,100%的灵敏度和99%的特异性。真实数据采用了illumina TruSight Cancer Panel测序的结果,最终鉴定出来24个exon CNV,用MLPA技术进行验证,有23个可以检测到,假阳性率4%。这个结果确实能压倒一大批的检测软件。
原理大家可以参考我前面写的,链接为https://www.jianshu.com/p/6301d9592d50。
CNV软件的安装。
接下来进行实际操作吧。哈哈,踩坑之后,才深感好看的玫瑰都是带刺的。
软件下载路径为:https://github.com/RahmanTeam/DECoN
docker安装方法见链接:
https://github.com/RahmanTeam/DECoN/pull/4/commits/74eec4176a48e0b1daded5e08e8292bf003137c7
我这边采用的是常规的git 安装。
git clone https://github.com/RahmanTeam/DECoN.git
官网上表示,R依赖包为3.1.2,对于其他的R,确实存在很多冲突,所以老老实实地安装3.1.2的包吧。报错信息如下。
R安装包下载路径为:https://cran.r-project.org/src/base/R-3/R-3.2.1.tar.gz。
接下来开始漫长的填坑环节了。
下载好后,目录如下,我安装的是Linux版本,因此进入该目录进行安装:
R安装好后,需要安装DECoN的依赖包,如果没有添加该版本R的环境变量的话,需要将下面的Rscript换成R-3.2.1版本的全路径Rscript。
安装包:
./setup.sh
你会发现,没有运行过久,就会缺包而运行程序退出。报错查看文件为:
其他包安装方法可以为:
source("https://bioconductor.org/biocLite.R")
biocLite("Biostrings")
biocLite("IRanges")
biocLite("Rsamtools")
biocLite("GenomicRanges")
biocLite("GenomicAlignments")
install.packages("reshape")
缺什么包补什么包吧。
CNV软件的运行及测试。
安装好后,再进行分析。分析步骤比较简单。
- 第一步:读入并获得count矩阵。
从原始数据得到比对后的bam文件之后,读入bam,注意文件夹里除了bam文件外还需要bai索引。这里的bam文件是bam文件集,包括实验样本和对照样本。
脚本为:
/data/pipe_panel/software/R/R-3.1.2/bin/Rscript --default-packages=methods,datasets,utils,grDevices,graphics,stats ReadInBams.R --bams bam.list --bed target.bed --fasta ucsc.hg19.fasta -out results
bed文件的整理如下,该文件不需要表头。name表示基因名。
bam.list文件如下:
这个步骤是与参考基因组对比,将bed区域的深度从bam中提取出来,采用的函数为getBamCounts。并将结果存储为.RData格式。
在做第一步的时候发现,你只能在packrat包所在的目录下运行,无法在其他地方导入packrat包。这个是因为packrat并没有安装在R-3.1.2的library下,因此无法导入。为解决这个问题,可以在脚本中首行处将包的lib文件进行加载。另外,packrat::on需要加上全路径。
添加脚本如下:
.libPaths(c("/software/CNV/DECoN/Linux/packrat/lib/x86_64-unknown-linux-gnu/3.1.2", "/software/CNV/DECoN/Linux/packrat/lib-ext"))
packrat::on('/software/CNV/DECoN/Linux')
- 第二步:质检
进行质量控制,检测coverage过度的exon区域,相关性较差的样本等,用法如下:
Rscript --default-packages=methods,datasets,utils,grDevices,graphics,stats \
IdentifyFailures.R --Rdata results.Rdata \
--mincorr 0.98 --mincov 100 --exons hg19.BRCA.exons.bed \
--custom TRUE --out results.corr
这一步的bed需要表头,有5列,分别是Chr、Start、End、Gene、Custom.Exon,有标题。实际上就是可以自己定义哪个位置是哪个外显子。
- 第三步:检测CNV区域
这里的hg19.BRCA.exons.bed和第二步的为同一个。
/data/pipe_panel/software/R/R-3.1.2/bin/Rscript --default-packages=methods,datasets,utils,grDevices,graphics,stats makeCNVcalls.R --Rdata results.RData --transProb 0.01 --custom TRUE --out result.call.cnv --plot All --plotFolder DECoNPlots --exons hg19.BRCA.exons.bed
但是也会出现报错,需要调整的地方为:
colnames(ExomeCount)[1:length(sample.names)+6]=sample.names
替换成:sample.names <- colnames(ExomeCount)[1:length(sample.names)+6]
- 第四步:结果解读
xxx_all.txt和xxx_custom.txt文件都是汇总结果,但是custom文件是有我们自己定义的外显子信息,另外可查看图形结果,出来图的即为阳性CNV结果。结果如下所示:
上面的折线图展示的是基因上coverage的分布,灰色代表对照样本,蓝色代表实验样本;中间展示的是基因的名称,最下方的散点图代表观测值和期望值之间的比值,灰色区域代表95%置信区间,当比值显著偏离置信区间时,认为该区域存在拷贝数变异。上图所示的红点区域代表实际观测值小于期望值,说明发生了deletion。高于观察值则为insertion。
参考:
1:https://pzweuj.github.io/2019/05/21/DECoN.html
2:https://cloud.tencent.com/developer/article/1556107