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分析工具的使用對於我們的研究工作非常重要。
原創文章,作者:LNKG,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/150279.html