您的位置:

CNV分析工具CNVkit介绍

CNVkit是一款用于CNV分析的Python工具,基于Numpy和SciPy构建,支持各种类型的数据,包括面向外显子的WES、全基因组的WGS和配对末端测序的WGS,以及RNA-seq和甲基化测序等各种数据。CNVkit的核心功能是计算基因组或基因的拷贝数变异。CNVkit通过计算目标序列与参考的比值,将各个区域的CNV分析结果可视化呈现。

1. 安装cnvkit

1.1. 安装miniconda

在运行cnvkit之前,需要安装python和一些必需的包。在这里我们介绍miniconda,它是一个简单易用的虚拟环境管理工具。在官网上下载并安装miniconda,安装完成后,运行以下命令创建并激活一个虚拟环境:

conda create -n cnvkit python=3.8.5
conda activate cnvkit

1.2. 安装CNVkit

在虚拟环境中通过以下命令安装CNVkit:

conda install -c conda-forge cnvkit

1.3. 安装参考基因组

CNVkit需要一个参考基因组用于比对和分析。可以从UCSC下载最新版本的基因组文件。

wget http://hgdownload.soe.ucsc.edu/goldenPath/hg19/bigZips/hg19.fa.gz

1.4. 基因组数据预处理

首先需要将基因组数据中的reads mapping到参考基因组上,并且排序和索引。这可以通过Samtools工具来完成。

samtools view -bS input.sam > input.bam
samtools sort -o input.sorted.bam input.bam
samtools index input.sorted.bam

2. 分析cnvkit

2.1. 计算基因组的平均比例

计算整个基因组的比例,在样本和参考之间使比较。首先需要准备一个target bed文件,该文件包含基因组的所有外显子或其他感兴趣的区域。

cnvkit.py reference genome.fa --no-pooling -f focal.bed -o reference.cnn

2.2. GC校正

基因组中GC含量的变化会影响CNV的计算。为了进行GC校正,需要通过calculategc命令计算每个位点的GC含量,然后使用--gc-correction选项将其纳入计算。

cnvkit.py reference genome.fa --no-pooling --annotate gc_file.txt -f focal.bed -o reference_with_gc.cnn

2.3. 调整前景和背景

CNVkit提供了一个adjust命令,可以准确计算样本和参考之间的比例。

cnvkit.py adjust reference_with_gc.cnn sample.bam -o sample.cnr

2.4. 制备基因组纯度估计的标记文件

需要准备一个纯度估计的标记文件用于评估样本是否中心纯种。该文件应包括样本中未修改的区域序列和估计的比例:

chr1	100000	200000	1.0
chr2	150000	300000	0.9
chr3	50000	120000	0.8
...

2.5. 评估基因组纯度

通过evaluate命令根据所述标记文件计算纯度:

cnvkit.py evaluate sample.cns -s purity.txt -o qc_sample.png

3. CNVkit CNV可视化

3.1. 生成一份平均深度图

拷贝数的计算是基于read coverage,所以需要根据测序深度可视化样本覆盖率,通过以下命令生成一个平均覆盖度图:

cnvkit.py coverage sample.cnn -o coverage.png

3.2. 绘制CNV呈现图

创建CNV呈现图,显示拷贝数和B-allele分数的变化,最好选择有代表性的CNV events。通过plot命令生成CNV呈现图:

cnvkit.py call sample.cns -o calls.txt
cnvkit.py scatter -s sample.cns -c calls.txt -o scatter.png

3.3. 绘制可视化基因组轨迹

可视化基因组轨迹以及每个位点的检测结果,可以使用cnvkit的heatmap命令,生成越亮代表某一位点的CNV越高:

cnvkit.py heatmap sample.cnr –-samples-normal normal.cnr -o heatmap.png

4. 组合Batch处理脚本

4.1. 命令行参数和数据

为了轻松处理多个样本,我们可以定义一个实用的脚本

reference=/path/to/hg19.cnn
samples_dir=/path/to/samples
for sample in ${samples_dir}/*; do
  samp=$(basename ${sample} .bam)
  # Segmenting and calling
  cnvkit.py segment ${sample}.cnr ${sample}.cns
  # Plotting coverage, CNV calls, and heatmap
  cnvkit.py coverage ${sample}.cnr -o ${sample}.coverage.cnn.png
  cnvkit.py scatter ${sample}.cnr ${sample}.cns -s ${reference} -o ${samp}.scatter.png
  cnvkit.py heatmap ${sample}.cnr --chromosomes chr1,chr2,chr3,chr4,chr5,chr6,chr7,chr8,chr9,chr10,chr11,chr12,chr13,chr14,chr15,chr16,chr17,chr18,chr19,chr20,chr21,chr22,chrX --samples-normal ${reference} -o ${samp}.heatmap.png
done

该脚本遍历$samples_dir目录下的每个.bam文件并针对每个样品计算拷贝数变异,并可视化结果。请注意, 我们仅对前22条染色体的CNV进行了可视化,因为Y染色体和染色体MT的CNV对我们关注的感兴趣甚少。

总结

本文简单介绍了一个非常有用的CNV分析工具——CNVkit。该工具非常强大,可用于分析各种类型的数据,包括WES,WGS,RNA-seq和甲基化测序。本文介绍了如何安装cnvkit、如何预处理基因组数据、如何进行CNV分析并可视化结果。作为生物信息学工作者,了解CNV分析工具的使用对于我们的研究工作非常重要。