第2章:ClinGen与InterVar的输入格式要求

好,咱们直接进入正题。

今天要聊的是ClinGen和InterVar的输入格式。说白了,就是这两个工具到底要“吃”什么样的数据才能干活。我刚开始接触时也踩过坑——兴致勃勃跑了个分析,结果程序报错,一看日志,格式不对。嗯,从那以后,我对输入格式的要求就特别上心。

2.1 核心输入:VCF文件

两个工具都支持VCF,但细节上不太一样。VCF全称是Variant Call Format,是变异检测的标准格式。我习惯用VCF v4.2,这个版本最通用。

一个标准的VCF文件,长这样:

#CHROM  POS     ID      REF     ALT     QUAL    FILTER  INFO    FORMAT  SAMPLE
chr1    12345   .       A       G       100     PASS    .       GT      0/1
chr1    67890   rs123   C       T       200     PASS    DP=50   GT      1/1

这里有个关键点——ClinGen和InterVar对VCF的容忍度不同。我遇到过不少新手,直接把没过滤的VCF扔进去,结果跑出一堆噪声。

2.2 两者VCF输入的具体要求

咱们直接上对比表,这样看得更清楚:

特性 ClinGen InterVar
VCF版本 v4.2优先,v4.1也可 v4.2,其他版本可能报错
染色体格式 支持chr1和1两种 只接受1,加chr会跳过
REF/ALT要求 必须大写字母 大写或小写都行,但建议大写
多等位位点 自动拆分,但速度慢 不自动拆分,需预处理
缺失值 跳过缺失REF的行 报错退出

我个人的经验:不管你用哪个工具,提前把VCF做一遍标准化总没错。用bcftools norm拆分多等位位点,再用bcftools annotate检查染色体前缀。

2.3 ANNOVAR注释格式

InterVar特别喜欢用ANNOVAR的注释输出。为什么呢?因为ANNOVAR给出了基因、功能影响、人群频率等关键字段,InterVar可以直接拿来套ACMG规则。

ANNOVAR的典型输出大概这样:

Chr     Start   End     Ref     Alt     Func.refGene    Gene    ExonicFunc.refGene
chr1    12345   12345   A       G       exonic          GENE1   nonsynonymous SNV
chr1    67890   67890   C       T       intronic        GENE2   .

这里要注意,ANNOVAR输出的是制表符分隔的文本,不是VCF。你想想看,如果你把VCF和ANNOVAR的输出混在一起,程序肯定懵。

一个小技巧:我一般用ANNOVAR/table_annovar.pl加-buildver hg19,然后再用convert2annovar.pl把VCF转成ANNOVAR格式。这两个脚本配合好,能省不少事。

2.4 ClinGen的特定输入格式

ClinGen除了VCF,还接受自己的“变体列表”格式。嗯,这个格式我第一次见时也不太习惯。它实际上是一个简化版:

chr1,12345,A,G
chr1,67890,C,T

就四列——染色体、位置、参考、替代。没别的了。这种格式适用于你已经筛选好的候选位点,不想带一大堆元数据。

我一般什么时候用呢?比如我已经跑完了过滤,手里只剩下几十个位点等着ClinGen做功能注释和解读,这时候用这个格式反而快。

2.5 两者输入流程对比

为了让你更直观地理解,我画了张图。这张图梳理了从原始数据到运行工具的核心路径:

输入格式处理流程 原始VCF文件 质检、拆分 多等位标准化 → ClinGen输入 VCF/变体列表 ClinGen运行 InterVar输入 ANNOVAR注释/VCF InterVar运行 输出结果比较 ACMG分级/证据 记得预处理

2.6 常见的输入坑点

说完了理论,聊聊实战中的坑。

  • 染色体命名不一致:有人用“chr1”,有人用“1”,ClinGen都能处理,但InterVar只认“1”。我建议最好在预处理阶段就统一用“1”。
  • 缺少必要字段:InterVar需要基因名和功能影响,ClinGen需要染色体和位置。嗯,如果你用了变体列表格式,记得确保数据完整。
  • 大小写问题:我见过有人把REF写成小写字母,结果ClinGen直接跳过。都统一用大写,省心。

我曾经踩过的坑:有一次我直接拿原始VCF跑InterVar,结果它报了个“parsing error”。查了半天,原来是VCF里有一行FILTER字段是空值。从那以后我习惯在跑之前先用bcftools query看一眼关键字段有没有缺失。

2.7 实用预处理命令(参考)

你可以用bcftools快速标准化VCF。我个人常用的命令是:

# 基因组排序并拆分多等位位点
bcftools norm -m -both -f /path/to/reference.fa input.vcf -Oz -o output.vcf.gz

# 索引
bcftools index output.vcf.gz

# 检查染色体格式(如果开头是chr,去掉)
bcftools annotate --remove-chr input.vcf > output_nochr.vcf

这些命令很稳定,我基本每次都用它们做预处理。

2.8 本章小结

说白了,ClinGen和InterVar的输入格式并不复杂。VCF是通用的,但具体字段要求有细微差别。ANNOVAR输出是InterVar的“心头好”,而ClinGen则更灵活——VCF和变体列表都行。

记得一点:预处理是成功的一半。标准化染色体格式、统一大小写、拆分多等位位点,这些事看似繁琐,但能帮你避免半夜跑完程序发现结果全是空的尴尬。

好了,下节我们再聊别的。嗯,就到这里。