赶尾人 AB1 拆重叠峰工具使用说明书
Sanger 测序遇到模板不纯、存在插入/缺失或引物区干扰时,峰图上会出现重叠峰(套峰):同一位置混着两种荧光信号,机器给出的碱基往往是信号最强的一位,并不能反映真实的碱基排列。本页把 AB1 的四通道荧光曲线做高斯拟合,再用自研算法拆分混合的碱基链,使之达到可用状态。
1这个页面解决什么问题
- 重叠峰:一段序列里同一个峰位混有两个碱基的荧光信号,机器 basecall 容易出现 N、无法反映碱基的真实排列顺序。
- 本页的做法:不依赖机器给的碱基判定,直接对四通道曲线做高斯拟合找出每个峰, 再用动态规划把「链 1」与「链 2」对齐,输出两条链各自的碱基序列,以及每一处不一致的位置。
- 典型用法:拆出的链 1 / 链 2 分别复制 → 确认拆分效果 → 去 BLAST
2界面元素一览
加载文件后,页面自上而下依次是:
| 元素 | 作用 |
|---|---|
| + 加载 AB1 文件 | 选择 .ab1 / .abi 文件(一次一个)。加载后自动解析、渲染完整峰图,并自动执行拆峰。 |
| 参数设置 | 打开拟合 / 拆峰参数面板(H、Trace_Back_Base、FIND_RANGE、STEP、POSS 等),点「确定」后按新参数重算当前序列。参数保存在本机,刷新页面仍在。 |
| 仅查看峰图 | 勾选后加载文件只渲染完整峰图、不自动拆峰(只想看曲线质量时用)。取消勾选时,若已有峰图且尚未拆峰,会自动补拆一次。 |
| 文件名(N bp,M 点/通道) | 文件信息条:碱基(峰位)条数与每通道的采样点数,即曲线上点的数量。 |
| 完整峰图 卡片 | 四条通道原始荧光曲线 + 每 10 碱基竖线 + 底部碱基行(见第 4 节)。 |
| 拆峰结果 卡片 | 拟合峰标点 + 识别峰结果(斜排)+ 链 1 / 链 2 分行 + 一致性连线,标题右侧是统计(见第 5 节)。 |
| 底部按钮组 | 随当前结果出现,横向浮动(左右滚动峰图时始终留在窗口里居中),
不纵向浮动(不会贴住窗口下沿、也不会压在峰图上,它排在拆峰结果卡片下方):
|
| 四通道配色 | G 黑、A 绿、T 红、C 蓝 —— 曲线、碱基字符、识别峰结果里的碱基字符一律同色。 |
3快速上手
- 1加载 AB1:点「+ 加载 AB1 文件」选择一个有大量重峰的.ab1测序文件。页面自动完成解析 → 渲染完整峰图 → 拆峰。
- 2看拆峰结果:重叠区会被拆成上下两行(链 1 / 链 2)。绿线表示两条链在该位一致,红线表示不一致或存在插入/缺失。
- 3复制去 BLAST:点峰图左侧的「复制链1 / 复制链2」胶囊按钮,在弹出的窗口里确认起始/结束位, 直接复制到剪贴板,或点「去 blast」新开标签页送 BLAST。
- 4需要更灵敏/更保守时调参:打开「参数设置」调整阈值后点「确定」,页面会用新参数重算当前序列。
- 5结果不满意就手工修正:点底部按钮组进入编辑态,直接改识别峰结果或拆分出的碱基, 改完点「完成并重跑」/「完成修改」(见第 6 节)。
4看懂「完整峰图」
这是 AB1 原始数据的直接可视化,不参与拆峰计算,用来判断数据本身的质量:
- 1四通道荧光曲线:G 黑、A 绿、T 红、C 蓝。纵轴为荧光强度,量程按四通道全局最大值动态缩放,保证所有峰顶都入画。
- 2每 10 碱基竖线 + 顶部序号:与 IQ-TREE / 建树页同样的展示逻辑,方便定位与报数。
- 3底部碱基行:按 AB1 自带峰位(PLOC)放置的原始碱基,字符颜色对应通道色,整行可连续复制(不逐字符换行)。
(峰图最左端固定有一个「复制序列」胶囊按钮;本图截取的是序列中段,未包含行首,按钮功能见第 7 节。)
x(扫描点序号)与 y(荧光强度)——
即 AB1 文件里的原始数据坐标,方便与测序仪软件(如 Sequence Scanner)核对。
5看懂「拆峰结果」
这一张图是拆峰的产出。它在完整峰图的基础上增加了三部分信息:
- 1拟合峰顶圆点:对四通道曲线做高斯拟合(三点法 + 求根 + 递归剥离)后定出的峰位, 圆点颜色即该峰的碱基类型(通道色)。
- 2识别峰结果(斜排):每个位置识别出的候选碱基集合。整行按 60° 斜排、右侧下垂,
相邻位置的标签因此不会互相遮挡。写法有两种:本位只有一种碱基时写成
[A,A]; 两种以上时按去重后的列表写(如[C,G],主峰 C 之外还有一个备选峰 G,典型的重峰信号)。 灰色-表示主链未覆盖该位。 碱基字符用该碱基的通道色(G 黑 / A 绿 / T 红 / C 蓝),方括号与逗号保持灰色。 - 3链 1 / 链 2 两行:重叠区被拆成上下两行,各自是独立的一条候选序列;碱基字符用通道色显示,缺失位画灰色
-。 - 4一致性连线:把链 1 的每一位与链 2 的对应位(按错位量对齐)连起来 —— 绿线 = 两条链在该位一致,红线 = 不一致, 插入位不画连线、改在链 1 碱基下方画一段红色横线。
(两链行首固定有「复制链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点底部 ✎ 修改识峰结果:按钮变为 ✓ 完成并重跑, 识别峰结果整行底色转淡蓝;此时「修改拆峰结果」按钮暂时变灰,避免两套编辑同时开着。
- 2点任意一条识别峰结果(如
[T,G,A])弹出修改框:每一行是一个碱基, 可在下拉里换成 G / A / T / C;点「删除」去掉这一行,点「增加碱基」再加一行。 - 3点「确定」,图上该位置的标签立刻按你的修改更新(不必等重跑)。
- 4点 ✓ 完成并重跑:页面用你改过的识别峰结果重新拆一次峰。
- 同一位置不会出现重复碱基:已被别的行占用的碱基在下拉里是灰的、选不了;「增加碱基」加出的也是最前面还没用过的那个。
- 不允许把一个位置改成 0 个碱基:只剩 1 个时「删除」按钮自动禁用。
- 改过就留痕:改过的识别峰结果位置会垫一块淡橙底纹;即使再改回原样,底纹也不还原,方便回头复查哪些位是手工定的。
- 重算时以你改的为准:点「完成并重跑」、或在参数设置里点「确定」,这些位置一律按你的结果算,不会被算法覆盖回去。
- 修改框里的碱基列表:下拉里的 G / A / T / C 直接用各碱基的通道色显示,不再另加一行颜色文字说明。
- 图上标签怎么写:本位只有一种碱基 → 写成
[A,A];有两种以上 → 按去重后的列表写 (如[C,G],不是[C,C,G])。修改框里一律去重 —— 同一个碱基只占一行,省得两行一模一样看混。 - 修改框里的「算法给出 [...]」按当前参数取值:它是这一步重算后、算法本身给出的原样结果, 不含任何人工修改。所以在参数设置里改过参数再打开修改框,这里显示的就是新参数下的结果, 不会还停在你上一轮改的值上。
- 改参数后编辑态自动退出:参数一变就要重算,重算会换掉整版结果 —— 此时若还停在编辑态, 按钮上那句「✓ 完成…」所对应的结果已经不存在了。所以点「确定」重算后,按钮会自动复原为「✎ …」。
② 修改拆峰结果
- 1点底部 ✎ 修改拆峰结果:按钮变为 ✓ 完成修改,链 1 / 链 2 两行底色转淡蓝。
- 2点链上的任意碱基弹出修改框,选 G / A / T / C 换成别的碱基。
- 3点 ✓ 完成修改 退出编辑态。
- 换字符同时换颜色:碱基按新碱基的通道色重画,被改过的碱基垫上淡橙底纹。
- 连线颜色跟着重算:与该位相关的连线按「两链显示出来的字符是否相同」重新上色(绿 = 一致、红 = 不同)。
- 结果会同步到复制链:点「复制链1 / 复制链2」拿到的就是改过之后的序列。
- 改完给一条对照统计:退出编辑态后,拆峰结果标题右侧追加一条绿色文字
修改后两链一致 xx 位、不同 x 位;双链匹配度 xx%,用来对照修改后两条链的吻合程度。 - 注意:整幅重算(在参数设置里点「确定」、或点「完成并重跑」)会把图重新画一遍, 拆峰链上的人工修改与那条绿色统计会一并清空;识峰结果的修改则会保留、并继续参与重算。
③ 仅查看峰图:修改碱基
勾了「仅查看峰图」时页面没有拆峰结果,底部只有一个按钮 ✎ 修改碱基,用法与「修改拆峰结果」相同, 只是改的对象换成完整峰图底部那一行原序列碱基:点碱基 → 弹出修改框 → 选新碱基;改过的碱基同样垫底纹、按通道色重画, 并同步写回「复制序列」复制到的内容。
.ab1 文件。
请在退出编辑态后,用「复制链1 / 复制链2」或「下载区间」把结果取出(见第 8 节)。
7参数设置
点「参数设置」打开面板。所有参数都在本次页面会话内生效,并保存到本机(localStorage),刷新页面仍然保留; 点「确定」后立即按新参数重算当前序列,点「取消」不生效。点「恢复默认」还原出厂值。
下面两张示意图标出各参数作用在峰图的哪个位置。
- 1主峰:本位振幅最大的峰(图中 C 通道,归一到 200),它的通道就是该位的主选碱基。
- 2备选峰:落在主峰 ±FIND_RANGE(±4 格)内、且峰高 > 主峰 × POSS 的峰。
图中 G 峰 134 > 200 × 0.1 = 20 → 这一位记作
[C,G]。 - 3峰高不足的峰:峰高 ≤ 主峰 × POSS(图中 T 峰 14,在同一条 POSS 线下方)→ 不作为备选碱基。
- 4相邻碱基的峰:距本位约 STEP(12 格)的另一个峰(图中 A 通道,即前一位碱基)。 它落在 ±FIND_RANGE 之外,不参与本位的备选判定 —— 这也是补峰只在很窄范围内搜索的原因。
- 5H(拟合最小峰高):峰高必须 > 此线才会被拟合为一个峰,进入峰表;低于此线的信号不参与拟合。
- 1链 1 行:DP 回溯得到的主链,位置正常排布。
- 2链 2 行:另一条候选链;出现重叠峰时它与链 1 错位,同一位碱基会落在左边的格子上。
- 3错开量:回溯时链 2 最多落后 Trace_Back_Base − 1 = 3 位(图中两条竖虚线之间即 3 格)。 链 1 前 3 位、链 2 末 3 位没有对应碱基,不画连线。
- 4两行之间的连线:链 1 第 i 位连到链 2 第 i − jump 位,所以一律朝左下倾斜; 绿 = 两位碱基相同,红 = 不同(图中链 1 的 C 对到链 2 的 T)。 错开量超过 3 位的路径不参与打分,因此被淘汰。
| 参数 | 默认值 | 含义 | 什么时候调 |
|---|---|---|---|
| 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」窗口:
- 默认区间:
- 原序列:默认全选整条链。
- 链 1 / 链 2:默认给出自动定位的可靠区——先强制去掉前后各 10 位, 再以「链 1 该位 == 链 2 对应位」为「好位」做滑窗评分(窗口 20、阈值 9、最短 20 位,与本站 BLAST 页的 AB1 可用区段算法同款), 取最长的最优段。这样复制出来的区间尽量避开头尾的低质量区与重峰分歧区。
- 手动调整:起始位 / 结束位均为 1 基、含端点;输入框上下箭头每点一次 ±10 位;输入时会做边界钳制(起始位不能超过「结束位 − 10」)。 调整的同时,对应峰图行上的碱基会画出红框并滚动定位,方便目视核对。
- 复制区间:把该区间的子串复制到剪贴板,底部浮出提示。
- 下载区间:把该区间存成文件(详见下方)。
- 去 blast:新标签页打开本站 BLAST 页,自动携带完整链 + from + to + 文件名(文件名预填到 BLAST 的 Job Title), 不用手工复制粘贴。
- 按
Esc或点击遮罩可关闭窗口(红框一并消失);下载窗开着时按Esc先关下载窗,再按一次才关本窗。
下载区间
在窗口里点 下载区间 会再弹出一个下载设置框,把当前选中的区间存成文件:
| 项目 | 说明 |
|---|---|
| 文件格式 | 可选 .seq(纯序列)或 .fasta。 |
| 序列名 仅 FASTA 用 |
FASTA 首行 > 后面的名字,可以自己填;不填则默认用原文件名(去掉扩展名)。
选 .seq 时这一行会隐藏,因为纯序列文件没有序列名。 |
| 文件名 | 自动生成、只作展示:原文件名_链标识_deconvolve.扩展名。
例如从 sample.ab1 下载链 1 得到 sample_chain1_deconvolve.fasta,
下载原序列得到 sample_deconvolve.fasta(没有链标识)。 |
| 内容 | 就是当前窗口里选中的那个区间(改起止位后下载的就是新区间)。FASTA 的序列每行 60 个碱基。 |
下载完成后下载设置框自动关闭,原来的「复制区间 / 下载区间 / 去 blast」窗口仍然开着,可以继续复制或再去 BLAST。
9运行机制与常见问题
运行机制
- 纯前端计算:AB1 文件在浏览器里解析、拟合、拆分,不会上传到服务器,原始测序数据不出本机。
- 自动流水线:加载文件 → 解析并渲染完整峰图 → 让出主线程(约 30ms)后再执行拆峰计算 → 渲染拆峰结果。 计算期间页面会短暂无响应,属正常现象。
- 参数与重算:只改「H」不会重新做高斯拟合(峰表被缓存复用),只重建序列与拆分结果,所以重算很快; 改动其他参数会走完整流程。
- 手工修正的作用范围:识峰结果的修改(第 6 节 ①)会一直被沿用,并在每次重算时覆盖算法结果; 拆峰链碱基的修改(第 6 节 ②)与那条绿色对照统计,会在任何一次整幅重算后被清空 —— 因为整张图被重新画过了。
常见问题
| 现象 | 说明 / 处理 |
|---|---|
| 提示「无法解析 AB1 文件」或「处理失败」 | 文件不是 AB1/ABI 格式(例如把 .seq、.fasta 或损坏文件改了后缀)。本页只接受真实的 AB1。 |
| 页面里没有「拆峰结果」卡片 | 勾选了「仅查看峰图」。 |
| 匹配度整行变红 | 低于 85%:两条链分歧较大,可能是数据质量差、或该文件本身不适合拆峰。建议人工核对峰图,或调整参数(H / POSS)后再看。 |
| 改了参数没变化 | 参数面板需要点「确定」才会生效并重算,「取消」不会应用。 |
| 重峰区没被拆开 | 可尝试把 POSS 调低(更灵敏)、FIND_RANGE 调大(搜索更远),或把 H 调低以纳入较矮的次峰。 |
| 屏幕窄时峰图错位/看不全 | 峰图按真实比例完整摊开,窄屏请横向滚动查看;页面本身不会压缩横向比例。 |
| 点底部的碱基/识别峰结果没反应 | 需要先点底部按钮进入编辑态(✎ 修改识峰结果 / ✎ 修改拆峰结果 / ✎ 修改碱基),非编辑态下点它们不会弹框。 |
| 看不到「修改识峰结果 / 修改拆峰结果」按钮 | 勾了「仅查看峰图」时不会渲染拆峰结果,底部只留一个「修改碱基」。 |
| 改过的橙色底纹能去掉吗 | 底纹是「这里人工改过」的标记,会一直保留到重新加载文件为止,设计上不提供单独清除。 |
| 改完拆峰链,那条绿色统计不见了 | 又做了一次整幅重算(改参数点「确定」或点「完成并重跑」)。重算会清空拆峰链的人工修改与绿色统计,需重新修改一次。 |
| 我还在编辑态,按钮却自己变回「✎ …」了 | 这是正常的:在参数设置里点了「确定」就会重算整版结果,旧结果已不存在,编辑态随之退出。重新点按钮进入即可。 |