Skip to main content

5 Representing variation in VCF records

下面详细讲解 VCF 规范第 5 节 “Representing variation in VCF records”。这一节是 VCF 的核心:它告诉你如何把真实 DNA 变异写成 VCF 行,以及如何从 VCF 行还原出单倍型。内容从简单 SNP 一直讲到复杂结构变异和断点表示。


5.1 Creating VCF entries for SNPs and small indels​

5.1.1 基本思想​

VCF 记录的本质是:

在参考基因组的位置 POS,把 REF 这段序列替换成 ALT 这段序列。

参考单倍型:a-REF-t
替代单倍型:a-ALT-t

其中 a 和 t 是 REF 左右两侧的侧翼序列。

5.1.2 例子 1:SNP、插入、缺失​

假设参考序列在某个位点附近是:

示例序列说明
Refa t C g aC 是参考碱基
1a t G g aC 变成 G(SNP)
2a t - g aC 被删除
3a t C A g a在 C 后插入 A

对应的 VCF 记录:

#CHROM POS ID REF ALT QUAL FILTER INFO
20 3 . C G . PASS DP=100
20 2 . TC T . PASS DP=100
20 2 . TC TCA . PASS DP=100

解释:

  • SNP:POS=3,REF=C,ALT=G。参考单倍型 ...t C g... → 替代 ...t G g...。
  • 缺失:POS=2,REF=TC,ALT=T。参考 ...t C g... → 替代 ...t - g...。注意 REF 包含事件前一个碱基 T,POS 指向这个 T。
  • 插入:POS=2,REF=TC,ALT=TCA。参考 ...t C g... → 替代 ...t C A g...。同样 REF 包含前一个碱基 T。

关键规则:对于简单插入/缺失,如果 REF 或 ALT 本来会是空,必须包含事件前一个碱基;如果事件发生在 contig 位置 1,则包含事件后一个碱基。

5.1.3 例子 2:多个分离等位基因​

假设群体中有三个等位基因:

示例序列说明
Refa t C g a参考
1a t G g aC→G
2a t - g aC 缺失

对应 VCF:

#CHROM POS ID REF ALT QUAL FILTER INFO
20 2 . TC TG,T . PASS DP=100

这里 REF=TC,ALT=TG,T。

  • TC 是参考等位基因。
  • TG 表示 C→G 的 SNP。
  • T 表示 C 缺失。
    所以有三个分离等位基因:TC、TG、T。

5.1.4 例子 3:复杂混合​

假设有四个分离等位基因:{tCg, tg, t, tCAg},对应序列:

示例序列说明
Refa t C g a参考
1a t - g aC 缺失
2a t - - aC 和 G 都缺失
3a t C A g a在 C 后插入 A

VCF 写成:

#CHROM POS ID REF ALT QUAL FILTER INFO
20 2 . TCG TG,T,TCAG PASS DP=100

注意:VCF 不保留碱基对齐的等价性,只记录替换关系。记录类型(SNP、Indel、Mixed、Reference)由 REF/ALT 动态决定。


5.2 Decoding VCF entries for SNPs and small indels​

这一节讲如何从 VCF 记录还原单倍型。

5.2.1 SNP​

VCF:

20 3 . C T . PASS DP=100

还原:

示例序列说明
Refa t C g a参考
1a t T g aC→T

5.2.2 插入​

VCF:

20 3 . C CTAG . PASS DP=100

还原:

示例序列说明
Refa t C - - - g a参考
1a t C T A G g a在 C 后插入 TAG

5.2.3 缺失​

VCF:

20 2 . TCG T . PASS DP=100

还原:

示例序列说明
Refa T C G a参考
1a T - - a删除 CG

5.2.4 微卫星混合​

VCF:

20 4 . GCG G,GCGCG . PASS DP=100

三个等位基因:GCG、G、GCGCG。
还原时可以有多种等价对齐,例如:

参考:a t c G C G - - a
等位1:a t c G - - - - a (缺失 2 个碱基)
等位2:a t c G C G C G a (插入 2 个碱基)

VCF 不指定具体对齐,只保证最终序列正确。


5.3 Encoding Structural Variants​

结构变异(SV)跨度大、可能不精确,通常用符号 ALT 表示,例如 <DEL>、<DUP>、<INV>、<CNV>。
文档第 11 页给了一些例子,概括如下:

  1. 精确缺失:已知断点,有 1 bp 微同源,样本纯合缺失。
  2. 不精确缺失:约 205 bp。
  3. ALU 元件缺失:不精确。
  4. L1 插入:不精确。
  5. 不精确重复:约 21 kb,样本拷贝数 3。
  6. 串联重复:76 bp,样本拷贝数 5,但单倍型未知。

这些例子用 SVTYPE、END、SVLEN、IMPRECISE 等 INFO 键描述。具体编码方式在第 3 节已讲。


5.4 Specifying complex rearrangements with breakends​

这是第 5 节最复杂的部分:如何用 breakend(断点) 表示任意重排。

5.4.1 核心概念​

一个重排事件可以看成一组新的邻接关系。每个邻接连接两个 breakend,它们互为 mate。

每个 breakend 用一行 VCF 表示,INFO 中写 SVTYPE=BND。

REF 字段:从 POS 开始的一段参考序列 s。
ALT 字段:替换 s 的字符串,包含三部分:

  1. 替换后的字符串 t(可能包含插入序列)。
  2. mate 的位置 p,格式 chr:pos。
  3. 连接方向,用方括号 [ 或 ] 表示。

四种 ALT 语法:

REFALT含义
st[p[从 p 向右延伸的片段接在 t 后面
st[p]从 p 向左延伸的反向互补片段接在 t 后面
s]p]t从 p 向左延伸的片段接在 t 前面
s[p[t从 p 向右延伸的反向互补片段接在 t 前面

5.4.2 例子:3-break 操作​

图 1 展示 6 个 breakend 的所有方向:

#CHROMPOSIDREFALTINFO
2321681bnd_WGG[17:198982[SVTYPE=BND
2321682bnd_VT]13:123456]TSVTYPE=BND
13123456bnd_UCC[2:321682[SVTYPE=BND
13123457bnd_XA]17:198983]ASVTYPE=BND
17198982bnd_YAA]2:321681]SVTYPE=BND
17198983bnd_ZCC[13:123457[SVTYPE=BND

5.4.3 插入序列​

如果两个 breakend 之间有插入序列,直接写在 ALT 的 t 中:

2 321682 bnd_V T ]13:123456]AGTNNNNNCAT 6 PASS SVTYPE=BND;MATEID=bnd_U
13 123456 bnd_U C CAGTNNNNNCAT[2:321682[ 6 PASS SVTYPE=BND;MATEID=bnd_V

5.4.4 大插入:用 contig 表示​

如果插入太长,可以用 assembly 文件中的 contig 表示:

13 123456 bnd_U C C[<ctg1>:1[ 6 PASS SVTYPE=BND
13 123457 bnd_V A ]<ctg1>:329]A 6 PASS SVTYPE=BND

如果只插入 contig 的一部分:

13 123456 bnd_U C C[<ctg1>:7[ 6 PASS SVTYPE=BND
13 123457 bnd_V A ]<ctg1>:214]A 6 PASS SVTYPE=BND

如果 contig 是环状的,可以加循环邻接:

13 123456 bnd_U C C[<ctg1>:229[ 6 PASS SVTYPE=BND
13 123457 bnd_V A ]<ctg1>:45]A 6 PASS SVTYPE=BND
<ctg1> 1 bnd_X A ]<ctg1>:329]A 6 PASS SVTYPE=BND
<ctg1> 329 bnd_Y T T[<ctg1>:1[ 6 PASS SVTYPE=BND

对于完整插入,可以用简写:

13 321682 INS0 T C<ctg1> 6 PASS SVTYPE=INS

5.4.5 多个 mate​

一个 breakend 可以有多个 mate,这时 ALT 写成逗号分隔的多个替代邻接:

2 321682 bnd_V T ]13:123456]T 6 PASS SVTYPE=BND;MATEID=bnd_U
13 123456 bnd_U C C[2:321682[;C[17:198983[ 6 PASS SVTYPE=BND;MATEID=bnd_V,bnd_Z
17 198983 bnd_Z A ]13:123456]A 6 PASS SVTYPE=BND;MATEID=bnd_U

5.4.6 显式 partner​

参考基因组中相连但在变异中断开的两个 breakend 叫 partner。可以用 PARID 显式指定:

2 321681 bnd_W G G[13:123460[ 6 PASS PARID=bnd_V;MATEID=bnd_X
2 321682 bnd_V T ]13:123456]T 6 PASS PARID=bnd_W;MATEID=bnd_U
13 123456 bnd_U C C[2:321682[ 6 PASS PARID=bnd_X;MATEID=bnd_V
13 123460 bnd_X A ]2:321681]A 6 PASS PARID=bnd_U;MATEID=bnd_W

5.4.7 端粒​

端粒用虚拟 breakend 表示:位置 0 和 N+1。例如整个 1 号染色体易位到 13 号:

1 0 bnd_X N N[13:123457[ 6 PASS SVTYPE=BND;MATEID=bnd_V
1 1 bnd_Y T ]13:123456]T 6 PASS SVTYPE=BND;MATEID=bnd_U
13 123456 bnd_U C C[1:1[ 6 PASS SVTYPE=BND;MATEID=bnd_Y
13 123457 bnd_V A ]1:0]A 6 PASS SVTYPE=BND;MATEID=bnd_X

5.4.8 事件修饰符​

多个邻接可以属于同一个事件,用 EVENT 标记:

2 321681 bnd_W G G[13:123457[ 6 PASS SVTYPE=BND;MATEID=bnd_X;EVENT=RR0
2 321682 bnd_V T ]13:123456]T 6 PASS SVTYPE=BND;MATEID=bnd_U;EVENT=RR0
13 123456 bnd_U C C[2:321682[ 6 PASS SVTYPE=BND;MATEID=bnd_V;EVENT=RR0
13 123457 bnd_X A ]2:321681]A 6 PASS SVTYPE=BND;MATEID=bnd_W;EVENT=RR0

5.4.9 倒位​

倒位可以用简写:

2 321681 INV0 G <INV> 6 PASS SVTYPE=INV;END=421681

也可以用 breakend 描述:

2 321681 bnd_W G G[2:421681[ 6 PASS SVTYPE=BND;MATEID=bnd_U;EVENT=INV0
2 321682 bnd_V T ]2:421682]T 6 PASS SVTYPE=BND;MATEID=bnd_X;EVENT=INV0
2 421681 bnd_U A A[2:321681[ 6 PASS SVTYPE=BND;MATEID=bnd_W;EVENT=INV0
2 421682 bnd_X C ]2:321682]C 6 PASS SVTYPE=BND;MATEID=bnd_V;EVENT=INV0

5.4.10 断点位置不确定性​

用 CIPOS 表示位置置信区间:

2 321681 bnd_V T T[13:123462[ 6 PASS SVTYPE=BND;MATEID=bnd_U;CIPOS=0,6
13 123456 bnd_U A A]2:321687] 6 PASS SVTYPE=BND;MATEID=bnd_V;CIPOS=0,6

注意:ALT 中的 mate 坐标是假设当前 breakend 位置固定时的坐标,CIPOS 描述不确定性。

5.4.11 单断点​

没有 mate 的 breakend 叫单断点:

2 321681 bnd_W G G. 6 PASS SVTYPE=BND
2 321682 bnd_V T ]13:123456]T 6 PASS SVTYPE=BND;MATEID=bnd_U
13 123456 bnd_U C C[2:321682[ 6 PASS SVTYPE=BND;MATEID=bnd_V
13 123457 bnd_X A .A 6 PASS SVTYPE=BND

单断点可用于未观察到的 partner,或拷贝数变化。

5.4.12 样本混合物​

癌症样本可能混合正常和肿瘤基因组,用 ##SAMPLE 定义:

##SAMPLE=<ID=Blood,Genomes=Germline,Mixture=1.,Description="Patient germline genome">
##SAMPLE=<ID=TissueSample,Genomes=Germline;Tumor,Mixture=.3,.7,Description="Patient germline genome;Patient tumor genome">

数据行可以按样本报告计数,也可以解卷积后报告拷贝数。

5.4.13 克隆衍生关系​

用 ##PEDIGREE 描述肿瘤基因组之间的克隆衍生:

##PEDIGREE=<Derived=PRIMARY-TUMOR-GENOME-ID,Original=GERMLINE-GENOME-ID>
##PEDIGREE=<Derived=SECONDARY1-TUMOR-GENOME-ID,Original=PRIMARY-TUMOR-GENOME-ID>
##PEDIGREE=<Derived=SECONDARY2-TUMOR-GENOME-ID,Original=PRIMARY-TUMOR-GENOME-ID>

5.4.14 非整倍体中的相位邻接(bundles)​

在癌症基因组中,一个 breakend 可以有多个单倍型。每个单倍型称为一个 bundle。用 DP、CN、BDP、BCN、HQ 等 FORMAT 子字段描述:

子字段含义
DP片段深度
CN片段拷贝数
BDPbundle 深度
BCNbundle 拷贝数
HQ单倍型质量

例如:

Allele110
Haplotype12,3,45
Segment Depth5174
Segment Copy Number131
Bundle Depth403
Bundle Copy Number131
Haplotype quality304040

总结​

  • 5.1–5.2:简单变异用 REF/ALT 替换表示。插入/缺失要包含前一个碱基(或位置 1 时后一个碱基)。VCF 不保留碱基对齐的等价性。
  • 5.3:结构变异用符号 ALT(如 <DEL>、<DUP>)和 INFO 键(SVTYPE、END、SVLEN、IMPRECISE 等)描述。
  • 5.4:复杂重排用 breakend 表示。每个 breakend 一行,SVTYPE=BND。ALT 用四种方括号语法表示连接方向。支持插入序列、大插入用 contig、多 mate、显式 partner、端粒、事件分组、倒位、位置不确定性、单断点、样本混合物、克隆衍生和单倍型 bundles。

这一节是 VCF 最灵活也最复杂的部分,掌握 REF/ALT 替换逻辑和 breakend 的 ALT 语法,就能读懂绝大多数 VCF 记录。