第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 两者输入流程对比
为了让你更直观地理解,我画了张图。这张图梳理了从原始数据到运行工具的核心路径:
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和变体列表都行。
记得一点:预处理是成功的一半。标准化染色体格式、统一大小写、拆分多等位位点,这些事看似繁琐,但能帮你避免半夜跑完程序发现结果全是空的尴尬。
好了,下节我们再聊别的。嗯,就到这里。