CNV检测与结果提取 - SpiralKernel/bioinfo-wiki GitHub Wiki
CNV检测与结果提取
更新:2026-10-15;状态:可用;验证范围:人工VCF的CN字段提取已执行;CNVkit及真实深度CNV检测未执行。
从可比深度生成分段与CN,再按字段含义导出,保留剂量和未知而非只留下事件标签。
先选测量场景
WGS、捕获与扩增子需采用支持该数据的深度方法,输入参考/靶区、正常基线及倍性必须一致。前置见CNV深度校正分段与拷贝数估计。
CNVkit捕获模板
按官方流程安装并准备匹配的BAM/正常对照、靶区与参考。以下仅演示输入衔接,未运行;不是所有群体数据都适用该对照设计:
cnvkit.py batch sample.bam --normal normal.bam --targets targets.bed \
--fasta ref.fa --output-reference baseline.cnn --output-dir cnvkit-out
cnvkit.py call cnvkit-out/sample.cns -o cnvkit-out/sample.call.cns
cnvkit.py export bed cnvkit-out/sample.call.cns --show all -o cnvkit-out/sample.all.bed
.cnr是相对信号,.cns是分段,call输出新增相应CN估计。示例不代替检查肿瘤纯度、性染色体或非二倍体设置。export默认可只输出非基线段,示例--show all用于保留所有段;坐标与CN解释见官方导出说明。
人工VCF的实际导出
先完成人工VCF贯通变异分类与提取,每页从根目录开始,进入examples/output/variants并使用bcftools环境:
bcftools query -i 'INFO/SVTYPE="CNV"' \
-f '%CHROM\t%POS\t%INFO/END[\t%SAMPLE=%CN]\n' normalized.vcf.gz
得到chrToy、800、900、S01=2、S02=1、S03=3。这是1-based POS/END的查询表,不能改名BED就声称已转换坐标。人工CN来自输入头部定义,不是本轮用深度估计得到的CN。
交付检查
真实工具可能使用CN、RDCN等不同字段;先读头部再改query模板。保存bin/分段信号、CN/质量、基线与样本对应;多个样本边界不同,要定义统一区域再比较,不能按结果第几行拼接。缺失CN保留未知,CN=1与CN=0不合并成同一“缺失基因”。
本轮整理入口
CNVkit深度分段与拷贝数解释细分输入/输出;拷贝数基线非整倍体与LOH与CNV与PAV交叉验证及群体矩阵说明剂量、基线及unknown。真实CNV调用仍未实测。