software

ODGI 实跑|图上的位置能投到另一条路径,为什么还要用 FASTA 核对目标碱基?

作者:发布于 2026-11-15约 6 分钟阅读
输出了坐标,碱基对得上吗。四个节点、两条路径,分别检查正向、反向和独有节点。正向共享,ref 25 对到 alt 30,上游多出五个碱基,距离为零。反向共享,ref 12 返回 alt 25,取碱基核对,互补的 A 位于零起点 24。样本独有,alt 12 返回 ref 10,距离为 5,参考路径并不经过该节点。

一条样本路径比参考多出五个碱基,还把中间一段反向放置。现在要把参考上的一个碱基投到这条路径,应该直接加五、交换链方向,还是先找这条碱基所在的图节点?我们用 ODGI 构建一张可以手算的小图,在共享正向片段、共享反向片段和样本独有片段分别查询位置,再从工具导出的 FASTA 逐碱基核对。三种位置都给了目标坐标,但这三个数字能支持的解释不同。ODGI 位置转换说明

先把两条完整路径拼出来

图中有四个节点,长度分别为十、十二、八、五个碱基。参考路径按一、二、三号节点的正向顺序经过,长三十碱基。另一条路径先走一号,然后穿过参考里没有的四号,再从反方向走过二号,最后正向通过三号,总长三十五碱基。我们把节点碱基和方向先写在纸面上,手工生成两条期望序列,用工具导出的两条路径逐字验证。只有这一步成立,后面发现的差异才可以沿着节点、下标、方向逐层定位。ODGI 项目与图操作命令

对单个位置有三种常见描述。第一种是“在哪条样本路径的哪个偏移”,第二种是“在哪个图节点、节点内哪个偏移、以哪个方向经过”,第三种是“相对另一条参考路径的位置”。源和目标都穿过同一个节点时,有机会定位到同一份图序列。源有而目标不经过的节点,工具仍可能返回附近的参考位置。理解哪一类转换正在发生,需要保留图位置和到参考的距离两项,单抄最后的目标数字常常会丢失必要信息。

实跑经验|把一个方向不明的数字落实到碱基

安装 ODGI 0.9.3 后,我们用图构建命令生成二进制图,再实际运行路径导出以及位置查询。所有单碱基检查都从零开始计数。参考偏移零落在一号节点的起点,两条路径都从这里正向通过,目标偏移也是零、距离为零。参考偏移二十五落在三号节点内的偏移三,目标偏移三十,距离仍为零。此处目标比源多出的五个碱基都在上游,方向相同,手工检查 FASTA 相应位置可以对上。

输入路径与偏移 返回的目标偏移 到参考距离 相对方向 独立核对
ref,0 alt,0 0 正 共享起点
ref,12 alt,25 0 反 源 T 的互补 A 在 alt 零起点 24
ref,19 alt,18 0 反 源 C 的互补 G 在 alt 零起点 17
ref,25 alt,30 0 正 同一共享节点的正向位置
alt,12 ref,10 5 正 源在仅 alt 包含的五碱基节点中

反向的第一行值得自己算一遍。参考偏移十二位于二号节点内部的偏移二。从目标左侧开始,前面一号加上四号共十五碱基。长度十二的二号节点在目标上反向通过,因此对应碱基的零起点下标是十五加上十一减二,得到二十四。参考 FASTA 的十二位是 T,目标二十四位是 A,目标二十五位却是 G。另一个反向测试也复现了恰好相差一位的情形。由此能确认,在这个版本、这个命令和这两处反向输出上,直接把输出数字作为字符串零起点下标,会取错碱基。所测版本的 position 实现

输出了坐标,碱基对得上吗。四个节点、两条路径,分别检查正向、反向和独有节点。正向共享,ref 25 对到 alt 30,上游多出五个碱基,距离为零。反向共享,ref 12 返回 alt 25,取碱基核对,互补的 A 位于零起点 24。样本独有,alt 12 返回 ref 10,距离为 5,参考路径并不经过该节点。
四个节点、两条路径,分别检查正向、反向和独有节点。

不要把这个观察简化成对全表统一减一。这样处理会把原本正确的正向起点移到序列之外。做区间或单碱基转换时,应先说明数字代表碱基还是边界,输入输出允许何种链方向、坐标从哪里起算。零起点半开区间的两端描述边界,一个反向区间的左右关系也会反转。对真实流程先造一段可辨认的序列,测试正向两端、反向两端和内部位置,分别从输出 FASTA 抽取碱基与原序列或反向互补核实。升级版本时把这些测试一起重跑。

odgi build -g toy.gfa -o graph.og -t 1
odgi paths -i graph.og -f > paths.fa
odgi position -i graph.og -p ref,12,+ -v -t 1
odgi position -i graph.og -p ref,12,+ -r alt -t 1
odgi position -i graph.og -p alt,12,+ -r ref -t 1

另一种辅助检查是回投。把反向示例返回的目标位置重新作为输入,仍可能得到一开始给定的源位置。这说明两个方向的转换规则可以互相配套,却不能单独证明把中间那个数字当作 FASTA 下标时取出的是正确碱基。记录“能回到原点”和“中间序列核对一致”两个独立结果,会比只记一次往返成功更有判断力。前者可发现走到了另一条重复路径,后者可暴露端点与碱基下标之间的偏差。

采用 BED 输出时,可以额外做一条长度为一的半开区间,手工提取该区间的序列,再做一条跨过插入边界的多碱基区间。若区间包含目标路径没有的序列,应分别记录有对应的部分和没有对应的部分。同一个质控模板既能发现多取一个碱基,也能发现只抽查两端造成的内部缺口遗漏。

投影有个数字,并不等于这个节点被目标路径穿过

最后一行的输入落在四号节点内的偏移二,能直接在图位置输出中看到。参考只走一、二、三号,从未经过四号。程序给了一个参考路径上的位置,并报告距离五。这个结果可用于在参考图上标记“样本独有段大概出现在此处附近”,却不能据此把插入片段内部的某个碱基写成参考上一个严格对应的替换。将图节点、两侧锚点及样本内偏移一并保留,才方便后续重建它的真实序列。

处理实际图时还会遇到重复节点,某个节点可能被同一条路径多次经过。一份可靠的转换记录至少应留下源路径和偏移、节点编号、相对方向、到参考的距离、目标路径和两侧上下文。选中项目关心的少数坐标,额外抽取两侧一段有辨识度的序列做比对。若只核对中心一个碱基,四种碱基偶然相同并不难,特别是在同聚物或串联重复中。把相邻碱基和结构接头也纳入核对,能更好地区分真正对应、反向边界和附近平移三种情况。

下载本篇实验脚本与结果(12 篇合集 ZIP),解压后打开 085-odgi 目录。

需要在大量样本路径上反复检查变异坐标时,可在云生信的生物信息分析服务器将图、导出的路径序列与坐标核对表一起按版本保存。

把知识用于当前任务

下一步可以直接开始分析

按研究目标查找在线工具、课程、计算资源或完整分析服务。

按目标找方案仍有疑问,联系客服 ↗