2 contig direction
在序列图里说 contig “作为有向节点处理,有正、负方向”,并不是说节点本身像有向边那样有箭头,而是说:同一个 contig 在被边、路径或比对引用时,可以有两种方向状态:正向 $+$ 和反向 $-$。
1. 正方向:按存储的序列方向
每个 contig 在 FASTA/GFA 文件里都存了一条序列,例如:
>contigA
ATCG...
这条序列的书写方向就是它的正方向。通常约定为 DNA 的 $5'\to 3'$ 方向。也就是说,contigA+ 表示“按照文件里写的从第一个碱基到最后一个碱基来读”。
2. 负方向:反向互补
contigA- 不是另一条独立的序列,而是同一条双链 DNA 的反向互补序列。
例如存储序列是:
ATCG
那么:
- 正方向:
ATCG - 负方向:反向
GCTA,再互补CGAT
所以 contigA- 实际读作 CGAT。它对应的是双链中另一条链的 $5'\to 3'$ 方向。
3. 为什么需要正负方向?
因为 DNA 是双链。两个 contig 连接时,它们可能以四种相对方向相连:
A+ 连 B+
A+ 连 B-
A- 连 B+
A- 连 B-
如果不记录方向,就不知道该如何拼接序列,也不知道重叠区域该按哪条链计算。例如 GFA 的 L 行会写成:
L A + B - 10M
这表示:A 的正方向末端与 B 的负方向末端有 10 bp 重叠。拼接时,B 需要先反向互补。
路径也是这样。GFA 的 P 行可能写成:
P path1 A+,B-,C+
它表示路径依次经过:A 正向、B 反向、C 正向。对应的序列是:
seq(A) + revcomp(seq(B)) + seq(C)
4. 正负不是绝对“正链/负链”
要注意:这里的 $+$ 和 $-$ 是相对于该 contig 自身存储序列的,不是相对于某个全局参考基因组的正链/负链。不同 contig 的“正方向”可能来自不同物理链,除非有一个参考序列来统一定向。
5. 在 GfaViz 中的体现
GfaViz 支持 GFA 2 的 fragment lines。补充材料 Fig. S2 中,reads 比对到 contig 时:
- 绿色线表示 read 来自 forward strand
- 红色线表示 read 来自 reverse strand
这就是方向在可视化中的直观表现:同一个 contig 作为参考,read 可以正方向匹配,也可以负方向匹配。
所以,contig 的“正负方向”可以理解为:
正方向 = 文件里存储的序列方向;负方向 = 该序列的反向互补方向。
在图中,节点本身定义一次,但在边和路径中被引用时,必须带上 $+$ 或 $-$,以说明它是以哪条链、哪个方向参与连接。