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分析工具的使用對於我們的研究工作非常重要。

原創文章,作者:LNKG,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/150279.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
LNKG的頭像LNKG
上一篇 2024-11-07 09:50
下一篇 2024-11-07 09:50

相關推薦

  • Python字典去重複工具

    使用Python語言編寫字典去重複工具,可幫助用戶快速去重複。 一、字典去重複工具的需求 在使用Python編寫程序時,我們經常需要處理數據文件,其中包含了大量的重複數據。為了方便…

    編程 2025-04-29
  • 如何通過jstack工具列出假死的java進程

    假死的java進程是指在運行過程中出現了某些問題導致進程停止響應,此時無法通過正常的方式關閉或者重啟該進程。在這種情況下,我們可以藉助jstack工具來獲取該進程的進程號和線程號,…

    編程 2025-04-29
  • 註冊表取證工具有哪些

    註冊表取證是數字取證的重要分支,主要是獲取計算機系統中的註冊表信息,進而分析痕迹,獲取重要證據。本文將以註冊表取證工具為中心,從多個方面進行詳細闡述。 一、註冊表取證工具概述 註冊…

    編程 2025-04-29
  • Python運維工具用法介紹

    本文將從多個方面介紹Python在運維工具中的應用,包括但不限於日誌分析、自動化測試、批量處理、監控等方面的內容,希望能對Python運維工具的使用有所幫助。 一、日誌分析 在運維…

    編程 2025-04-28
  • t3.js:一個全能的JavaScript動態文本替換工具

    t3.js是一個非常流行的JavaScript動態文本替換工具,它是一個輕量級庫,能夠很容易地實現文本內容的遞增、遞減、替換、切換以及其他各種操作。在本文中,我們將從多個方面探討t…

    編程 2025-04-28
  • Trocket:打造高效可靠的遠程控制工具

    如何使用trocket打造高效可靠的遠程控制工具?本文將從以下幾個方面進行詳細的闡述。 一、安裝和使用trocket trocket是一個基於Python實現的遠程控制工具,使用時…

    編程 2025-04-28
  • gfwsq9ugn:全能編程開發工程師的必備工具

    gfwsq9ugn是一個強大的編程工具,它為全能編程開發工程師提供了一系列重要的功能和特點,下面我們將從多個方面對gfwsq9ugn進行詳細的闡述。 一、快速編寫代碼 gfwsq9…

    編程 2025-04-28
  • Python 編寫密碼安全檢查工具

    本文將介紹如何使用 Python 編寫一個能夠檢查用戶輸入密碼安全強度的工具。 一、安全強度的定義 在實現安全檢查之前,首先需要明確什麼是密碼的安全強度。密碼的安全強度通常包括以下…

    編程 2025-04-27
  • Morphis: 更加簡便、靈活的自然語言處理工具

    本文將會從以下幾個方面對Morphis進行詳細的闡述: 一、Morphis是什麼 Morphis是一個開源的Python自然語言處理庫,用於處理中心語言(目前僅支持英文)中的詞性標…

    編程 2025-04-27
  • HR測試用例生成工具:hrtest的全面解析

    本文將從使用、功能、優點和代碼示例等多個方面詳細介紹HR測試用例生成工具hrtest。 一、使用 HR測試用例生成工具hrtest是一款可以自動生成測試用例的工具,省去了繁瑣的手動…

    編程 2025-04-27

發表回復

登錄後才能評論