拆峰赶尾人 AB1 拆重叠峰工具使用说明书

Sanger 测序遇到模板不纯、存在插入/缺失或引物区干扰时,峰图上会出现重叠峰(套峰):同一位置混着两种荧光信号,机器给出的碱基往往是信号最强的一位,并不能反映真实的碱基排列。本页把 AB1 的四通道荧光曲线做高斯拟合,再用自研算法拆分混合的碱基链,使之达到可用状态。

对应页面:/ab1_analysis(工具页左上角「? 功能说明书」即本页) · 纯浏览器本地计算(序列不上传服务器)

1这个页面解决什么问题

2界面元素一览

加载文件后,页面自上而下依次是:

+ 加载 AB1 文件 参数设置 仅查看峰图 your_sample.ab1(N bp,M 点/通道)
元素作用
+ 加载 AB1 文件 选择 .ab1 / .abi 文件(一次一个)。加载后自动解析、渲染完整峰图,并自动执行拆峰。
参数设置 打开拟合 / 拆峰参数面板(H、Trace_Back_Base、FIND_RANGE、STEP、POSS 等),点「确定」后按新参数重算当前序列。参数保存在本机,刷新页面仍在。
仅查看峰图 勾选后加载文件只渲染完整峰图、不自动拆峰(只想看曲线质量时用)。取消勾选时,若已有峰图且尚未拆峰,会自动补拆一次。
文件名(N bp,M 点/通道) 文件信息条:碱基(峰位)条数与每通道的采样点数,即曲线上点的数量。
完整峰图 卡片 四条通道原始荧光曲线 + 每 10 碱基竖线 + 底部碱基行(见第 4 节)。
拆峰结果 卡片 拟合峰标点 + 识别峰结果(斜排)+ 链 1 / 链 2 分行 + 一致性连线,标题右侧是统计(见第 5 节)。
底部按钮组 随当前结果出现,横向浮动(左右滚动峰图时始终留在窗口里居中), 不纵向浮动(不会贴住窗口下沿、也不会压在峰图上,它排在拆峰结果卡片下方):
  • 有拆峰结果时:✎ 修改识峰结果、✎ 修改拆峰结果(见第 6 节)。
  • 只有完整峰图(勾了「仅查看峰图」)时:只有一个 ✎ 修改碱基。
四通道配色 G 黑、A 绿、T 红、C 蓝 —— 曲线、碱基字符、识别峰结果里的碱基字符一律同色。
峰图为什么很宽?
两张图都将宽度×2并完整摊开,这样每个峰、每个碱基字符都能看清,横向对齐关系不会失真。

3快速上手

  1. 1加载 AB1:点「+ 加载 AB1 文件」选择一个有大量重峰的.ab1测序文件。页面自动完成解析 → 渲染完整峰图 → 拆峰。
  2. 2看拆峰结果:重叠区会被拆成上下两行(链 1 / 链 2)。绿线表示两条链在该位一致,红线表示不一致或存在插入/缺失。
  3. 3复制去 BLAST:点峰图左侧的「复制链1 / 复制链2」胶囊按钮,在弹出的窗口里确认起始/结束位, 直接复制到剪贴板,或点「去 blast」新开标签页送 BLAST。
  4. 4需要更灵敏/更保守时调参:打开「参数设置」调整阈值后点「确定」,页面会用新参数重算当前序列。
  5. 5结果不满意就手工修正:点底部按钮组进入编辑态,直接改识别峰结果或拆分出的碱基, 改完点「完成并重跑」/「完成修改」(见第 6 节)。

4看懂「完整峰图」

这是 AB1 原始数据的直接可视化,不参与拆峰计算,用来判断数据本身的质量:

图 1 「完整峰图」实物示意
420430440450TCCAAACCGCCTCCGAACAATAATAATGGTTAGGATTCATT123
G A T C 四条曲线 = AB1 四个荧光通道的原始信号

(峰图最左端固定有一个「复制序列」胶囊按钮;本图截取的是序列中段,未包含行首,按钮功能见第 7 节。)

鼠标悬停看真实坐标
把鼠标移到曲线区任意位置,会在光标旁显示该点的 x(扫描点序号)与 y(荧光强度)—— 即 AB1 文件里的原始数据坐标,方便与测序仪软件(如 Sequence Scanner)核对。

5看懂「拆峰结果」

这一张图是拆峰的产出。它在完整峰图的基础上增加了三部分信息:

图 2 「拆峰结果」实物示意
410420430440450[T,T][C,T][C,G][A,G][A,A][A,C][C,C][G,C][G,T][T,C][T,C][C,T][C,T][G,C][G,G][A,G][A,C][C,A][A,A][A,T][T,C][A,T][A,T][T,T][A,T][A,A][T,A][G,T][G,C][T,C][T,A][G,A][G,G][G,C][A,C][T,A][C,T][C,A][A,A][T,A][T,T]TTCGAACCGCTCTCGGACAACTATTAATGCTAGGCATCAATTCGAACCGTTCTCGGACAATTATTAATGCTAGGCATCAATT1234
绿线:两链一致 红线:两链不同 圆点:拟合出的峰顶

(两链行首固定有「复制链1」「复制链2」胶囊按钮;本图截取的是序列中段,未包含行首,按钮功能见第 7 节。)

标题右侧的统计怎么读

错峰位置共 N 位(两链一致 M 位、不同 K 位;与原始数据不同 D 位),拆解后双链匹配度 xx.x%(除去首尾各 30 位)

  • 错峰位置:去掉首尾各 30 位之后,链 1 相对链 2 发生错位(jump > 0)的位置数 —— 也就是真正被「拆」过的位置;没有错位的位不参与统计。
  • 两链一致 / 不同:这些错峰位上,链 1 与链 2 显示出来的碱基字符是否相同:相同记「一致」,不同记「不同」。 这条判据与图上连线的颜色同源 —— 绿线的位数就是「一致」,红线的位数就是「不同」, 所以照着峰图数线就能对上统计。
  • 与原始数据不同:错峰位上,链 1 的碱基与 AB1 自带碱基判定(同 x 位;找不到时在 ±FIND_RANGE 范围内就近取)不一致的位数 —— 这部分就是拆峰真正「改动」过的地方。
  • 双链匹配度=两链一致位数 ÷ 错峰位置数。低于 85% 时整行变红,提示该文件的拆分分歧较大,建议人工核对。

手工改过链上的碱基后,标题右侧另追加一条绿色文字,形如 修改后两链一致 xx 位、不同 x 位;双链匹配度 xx%,只统计本次人工修改后的情况(见第 6 节)。

6手工修正结果

算法给的是候选结果,遇到明显的误判时可以直接在图上改。修改入口是页面底部的按钮组: 三个入口互斥(同一时间只能开一个),进入后按钮文字变成「✓ 完成…」,并且被编辑的那部分底色转为淡蓝色, 表示「现在这里可以点」。

① 修改识峰结果

  1. 1点底部 ✎ 修改识峰结果:按钮变为 ✓ 完成并重跑, 识别峰结果整行底色转淡蓝;此时「修改拆峰结果」按钮暂时变灰,避免两套编辑同时开着。
  2. 2点任意一条识别峰结果(如 [T,G,A])弹出修改框:每一行是一个碱基, 可在下拉里换成 G / A / T / C;点「删除」去掉这一行,点「增加碱基」再加一行。
  3. 3点「确定」,图上该位置的标签立刻按你的修改更新(不必等重跑)。
  4. 4点 ✓ 完成并重跑:页面用你改过的识别峰结果重新拆一次峰。

② 修改拆峰结果

  1. 1点底部 ✎ 修改拆峰结果:按钮变为 ✓ 完成修改,链 1 / 链 2 两行底色转淡蓝。
  2. 2点链上的任意碱基弹出修改框,选 G / A / T / C 换成别的碱基。
  3. 3点 ✓ 完成修改 退出编辑态。

③ 仅查看峰图:修改碱基

勾了「仅查看峰图」时页面没有拆峰结果,底部只有一个按钮 ✎ 修改碱基,用法与「修改拆峰结果」相同, 只是改的对象换成完整峰图底部那一行原序列碱基:点碱基 → 弹出修改框 → 选新碱基;改过的碱基同样垫底纹、按通道色重画, 并同步写回「复制序列」复制到的内容。

改完记得把结果取走
手工修改只作用在当前页面的显示与复制内容上,不会写回原始 .ab1 文件。 请在退出编辑态后,用「复制链1 / 复制链2」或「下载区间」把结果取出(见第 8 节)。

7参数设置

点「参数设置」打开面板。所有参数都在本次页面会话内生效,并保存到本机(localStorage),刷新页面仍然保留; 点「确定」后立即按新参数重算当前序列,点「取消」不生效。点「恢复默认」还原出厂值。

下面两张示意图标出各参数作用在峰图的哪个位置。

图 3 参数示意(一):H、POSS、FIND_RANGE
H = 100 拟合最小峰高主峰 × POSS = 20±FIND_RANGE(±4 格)主峰 C(200)备选峰 G(134)矮峰 T(14)相邻碱基的峰STEP = 12 格(1 个碱基的间距)12345
图 4 参数示意(二):Trace_Back_Base 的回溯错位 示意图 · 连线含义与「拆峰结果」一致:链 1 第 i 位连到链 2 第 i − jump 位
链 1链 2CTGACGTACGACGTATGTCA错开 3 格回溯时链 2 最多相对链 1 落后 Trace_Back_Base − 1 = 3 位:同一位碱基在链 2 行里出现在左边 3 格处,连线因此朝左下倾斜。链 1 前 3 位、链 2 末 3 位没有对应碱基,不画连线;错开量超过 3 位的路径不参与打分,会被淘汰。1234
参数默认值含义什么时候调
H
拟合最小峰高
100 拟合出的峰,信号高度必须大于该阈值才算一个峰。 背景噪声大、出现很多碎峰 → 调高;矮峰也想纳入 → 调低。
Trace_Back_Base
前溯位数
4 回溯时链 2 相对链 1 允许的最大错开位数(默认 4,即允许两条链错开 3 位)。 重峰错位很大、明显不止错开 3 位时 → 调大。
FIND_RANGE
补峰搜索范围
4 序列寻找时,在主峰 ±FIND_RANGE 格范围内搜索备选峰。 备选峰离主峰较远、漏检时 → 适当调大。
STEP
碱基步进间距
12 序列寻找时,主链下一位 = 当前峰位 + STEP 格(12 为碱基的标准间距)。 测序读长特别密/疏时按需调整,一般不动。
POSS
备用峰判定倍数
0.1 ±FIND_RANGE 内的候选峰,峰幅须大于「主峰 × POSS」才被当作备选碱基。 想更灵敏(多纳入备选)→ 调低;想更保守(只留明显双峰)→ 调高。
仅从拟合点挑选备用点不勾选 勾选:备选碱基只取拟合出的峰。不勾选(默认):额外补查「该峰位 x 处其他通道的原始信号」,若大于「主峰 × POSS」也作为备选,灵敏度更高。 只想看拟合结果、不引入原始信号时 → 勾选。

8复制、下载与去 BLAST

峰图行首的胶囊按钮(复制序列 / 复制链1 / 复制链2)左键点击后会弹出「复制区间 / 下载区间 / 去 blast」窗口:

下载区间

在窗口里点 下载区间 会再弹出一个下载设置框,把当前选中的区间存成文件:

项目说明
文件格式 可选 .seq(纯序列)或 .fasta。
序列名
仅 FASTA 用
FASTA 首行 > 后面的名字,可以自己填;不填则默认用原文件名(去掉扩展名)。 选 .seq 时这一行会隐藏,因为纯序列文件没有序列名。
文件名 自动生成、只作展示:原文件名_链标识_deconvolve.扩展名。 例如从 sample.ab1 下载链 1 得到 sample_chain1_deconvolve.fasta, 下载原序列得到 sample_deconvolve.fasta(没有链标识)。
内容 就是当前窗口里选中的那个区间(改起止位后下载的就是新区间)。FASTA 的序列每行 60 个碱基。

下载完成后下载设置框自动关闭,原来的「复制区间 / 下载区间 / 去 blast」窗口仍然开着,可以继续复制或再去 BLAST。

9运行机制与常见问题

运行机制

常见问题

现象说明 / 处理
提示「无法解析 AB1 文件」或「处理失败」文件不是 AB1/ABI 格式(例如把 .seq、.fasta 或损坏文件改了后缀)。本页只接受真实的 AB1。
页面里没有「拆峰结果」卡片勾选了「仅查看峰图」。
匹配度整行变红低于 85%:两条链分歧较大,可能是数据质量差、或该文件本身不适合拆峰。建议人工核对峰图,或调整参数(H / POSS)后再看。
改了参数没变化参数面板需要点「确定」才会生效并重算,「取消」不会应用。
重峰区没被拆开可尝试把 POSS 调低(更灵敏)、FIND_RANGE 调大(搜索更远),或把 H 调低以纳入较矮的次峰。
屏幕窄时峰图错位/看不全峰图按真实比例完整摊开,窄屏请横向滚动查看;页面本身不会压缩横向比例。
点底部的碱基/识别峰结果没反应需要先点底部按钮进入编辑态(✎ 修改识峰结果 / ✎ 修改拆峰结果 / ✎ 修改碱基),非编辑态下点它们不会弹框。
看不到「修改识峰结果 / 修改拆峰结果」按钮勾了「仅查看峰图」时不会渲染拆峰结果,底部只留一个「修改碱基」。
改过的橙色底纹能去掉吗底纹是「这里人工改过」的标记,会一直保留到重新加载文件为止,设计上不提供单独清除。
改完拆峰链,那条绿色统计不见了又做了一次整幅重算(改参数点「确定」或点「完成并重跑」)。重算会清空拆峰链的人工修改与绿色统计,需重新修改一次。
我还在编辑态,按钮却自己变回「✎ …」了这是正常的:在参数设置里点了「确定」就会重算整版结果,旧结果已不存在,编辑态随之退出。重新点按钮进入即可。
结果怎么用
拆峰给出的是候选两条链,不是最终结论。请结合峰图形态判断:真正的双峰区两条链会稳定分开, 而噪声导致的「假重峰」两链往往在红线密集、匹配度很低。把链 1 送 BLAST,匹配目标物种,是最常用的判读方式。