一份抛光后的 FASTA 从头到尾全是正常碱基,看不到一个 N,常让人以为每一位都得到了读段支持。Medaka 可以在没有预测的地方沿用原草图,所以输出看似完整时,最需要查的文件往往是旁边那份缺口区间表。我们让软件的神经网络实际预测一次,再从完全相同的预测文件生成三份输出。在没有测到的同一个位置,最终可以得到 A、N,或者根本没有该位置。区别来自生成共识时如何表示缺口。Medaka 2.2.2 的工作流程
把一个错误放在有读段处,另一个放在无人覆盖处
生成一条三千六百碱基的人工真值,在第一千五百位和第三千一百位各把原来的 T 改成 A,得到待抛光草图。从真值而非草图取四十四条长一千二百碱基的读段,正反各二十二条,所有读段都落在草图中部。最左边的读段从零基第四百位开始,最右的读段末端到第二千六百位之前。这样第一个错误有多条观测穿过,第二个错误连一条也没有。模拟读段故意不含测序错误,目的在于验证有证据和无证据位置的输出来源。
先用 minimap2 把读段比回草图,排序建索引,再用安装的 Medaka 2.2.2 在中央处理器上执行实际神经网络推理。显式使用软件附带的纳米孔超高准确度碱基识别模式 SUP 对应的抛光模型,版本为五点二。这里的读段来自模拟器,并没有经过真实碱基识别模型。这种设置允许检验程序在划定的覆盖范围内如何生成和拼接预测,不能用来评估该模型处理某一类真实化学条件的准确率。正式项目应根据实际碱基识别模型和文库选择相应的抛光模型,并把二者完整名称写进日志。Medaka 的模型对应表
从一个预测文件生成三种可核对的输出
神经网络日志显示,请求预测从零到三千六百的整条草图,实际有堆叠观测的位置只从四百到二千五百九十九,两端均为零基位置。将后者写成左闭右开区间就是从四百到二千六百,共二千二百个碱基。随后三轮生成共识都读取同一份预测文件,没有重新比对或重新运行神经网络。这样任何差异都可以追到输出阶段。阅读日志时要注意末位的书写约定,否则很容易把最后一个有读段的碱基划进缺口。
默认生成完整序列,结果长三千六百,第一个错误修回 T,第二个位置却仍为草图错误的 A。对照真值,其余碱基全部相同。将缺口填充字符改为 N,再得到一条同样长的序列,其中恰有一千四百个 N,原来第三千一百位所在的区域也在其中。关闭缺口填充只输出有预测的片段,得到一条二千二百碱基的序列,与真值中部逐字相同。短文件标题附有原草图区间,可以将局部位置换回原坐标。把这三条 FASTA 的长度直接画成模型效果排名,会给同一次推理编造出三个不同的准确率。
| 使用同一份预测 | FASTA 长度 | 原第 1500 位 | 原第 3100 位 |
|---|---|---|---|
| 默认用草图填补 | 3600 | T,纠正 | A,沿用草图 |
| 缺口填 N | 3600 | T,纠正 | N |
| 只保留有预测的片段 | 2200 | T,位于输出第 1100 位 | 没有对应碱基 |

若把抛光结果直接送去注释,保留草图的版本有利于维持序列名称与原有坐标,屏蔽版则能提醒注释人员某个外显子中的字母缺少新增证据。正式数据若发生插入或删除,最终共识的坐标还会相对草图平移。缺口文件明确以草图为坐标系,叠加到新版注释前应建立两版之间的映射。本例只有等长替换,特意让坐标变换不干扰对缺口来源的判断。
实跑经验|先用 BED 对账,再把区间交给下游
medaka inference input.bam inference.hdf --model r1041_e82_400bps_sup_v5.2.0 --threads 2 --batch_size 4
medaka sequence inference.hdf draft.fa filled.fa
medaka sequence inference.hdf draft.fa masked.fa --fill_char N
medaka sequence inference.hdf draft.fa blocks.fa --no-fillgaps
cat filled.fa.gaps_in_draft_coords.bed
默认输出与填 N 输出都附带草图坐标下的缺口文件。两份内容一致,分别是从零到四百、从二千六百到三千六百,长度相加一千四百,恰好等于填 N 输出的 N 数。将两个缺口与中央的二千二百相加,正好恢复整条草图的三千六百。只保留预测片段时,我们在该次独立输出路径中没有得到缺口 BED,因此需要坐标映射时,应保留生成完整序列时对应的区间文件。真实基因组草图本身可能已经包含 N,不能把文件里所有 N 的数目直接当成新增缺口,最好分别统计原有模糊碱基与此次未预测区间。Medaka 共识拼接和缺口处理实现
若目标基因第一个可疑替换位于被读段覆盖的区域,仍然要检查实际深度、两条链的支持和比对位置是否唯一。相邻重复可能把同一批读段放到错误拷贝上,造成看似有预测却缺少独立支持。若另一个位点落在缺口内,即使最终 FASTA 给出一个明确字母,也只能追溯到原草图。报告时可以把位点表与缺口相交,为每条记录增加一个“碱基来自抛光区还是草图回填区”的字段,再按来源解释差异,避免把回填区写成经新测序证实的等位。
另一种容易忽略的情况是统计分母变化。只保留中央片段时,与真值的相似度在本例中达到全长精确匹配,但它只覆盖原模板的一部分。沿用草图的输出覆盖完整,却把一个已知错误也保留下来。报告局部碱基一致率时同时给出参与比较的长度、原模板长度和未评估长度,并尽量保留一份带坐标的屏蔽版本,才能让下一位使用者根据自己的研究问题选择是否纳入这些区域。
需要为多份纳米孔组装统一保存草图、预测、缺口区间和抛光结果时,可使用云生信的生物信息分析服务器开展队列复核。
