赶尾人一站式建树工具使用说明书
做一棵系统发育树,标准流程是「多序列比对 → 比对修剪 → 最大似然建树」三步,对应 MAFFT、trimAl、IQ-TREE 三套命令行软件。本页把这三步串成一条流水线:把测序文件拖进浏览器,点按钮(或一次「一键执行」),全部在服务器上跑完,结果直接在页面底部画出系统发育树 —— 不需要装软件,也不需要写命令。
1这个页面解决什么问题
- 痛点:一套建树环境(MAFFT + trimAl + IQ-TREE)装下来动辄几百 MB,命令参数也各有各的写法;把三条命令手动串起来、还要在不同软件间倒文件,是菌物鉴定里最耗时的一环。
- 本页的做法:上传序列 → 对齐 → 裁切 → 建树,四步都在同一个页面里完成。每一步的中间结果(对齐后的峰图、裁切区、建出的树)都直接画在页面上,可看、可改、可下载。
- 支持的数据:
.ab1(带四通道峰图,可目视判断质量、可手动裁切)、.seq/.fasta/.fa(纯文本序列);也可以直接填 GenBank Accession ID 从 NCBI 拉取。 - 多片段:ITS、tef1、rpb2… 不同片段各自放一个标签页,独立跑流水线;建树时后端会按标签页顺序把各片段拼成多分区矩阵,一棵树同时用上全部片段。
2界面元素一览
页面右侧是一条固定的浮动操作栏,左侧是序列展示区。自上而下(绿色 = 常规的左键操作,红色 = 容易被忽略的隐藏入口):
操作栏的真实排布(配色一致,尺寸为示意)。
「一键执行」是窄长竖排按钮,三段渐变依次对应右侧三键;
「手机版右键」只在窄屏出现。
| 元素 | 作用 |
|---|---|
| + 加载序列 |
左键=打开系统文件选择器,一次可多选 .ab1 / .seq / .fasta / .fa;也可以直接把文件拖拽到按钮上。右键 / 长按=打开「加载序列」窗口,两种来源二选一:从 GenBank 获取(填 Accession ID,英文逗号分隔)或手动填入序列(直接粘贴序列,可另起一个序列名)。 从「Nucleotide 检索」页点「去建树」跳转过来时,本窗口会自动打开并预填好 accession。 对齐之后本按钮禁用(变灰,提示「已对齐,无法加载新序列」)—— 已对齐的数据不应再插入新序列,否则比对失去意义。 |
| 一键执行 | 依次执行 对齐 → 裁切 → 建树,任一步失败即停止。它自己不动,只是把右侧三键按顺序替你点一遍 —— 按钮上自上而下的三段颜色(紫 / 橙 / 绿)就是按三键的顺序排的,不是进度条。已经对齐之后本按钮失效(变灰、提示「已对齐,一键执行已失效」),因为后两步要基于当前的对齐状态走,此时请直接点后面三个按钮。 |
| 🔗 Mafft对齐 | 左键=按上次的参数直接执行;右键 / 长按=打开「🔗 MAFFT 对齐参数」窗口,改完再执行。对齐之后本按钮变灰禁用(已对齐的数据不再重复对齐)。 |
| ✂️ trimAl裁切 | 左键=按上次的参数直接执行;右键 / 长按=打开「✂️ 裁切参数」窗口,窗口里比另两个多一个「手动裁剪」按钮,用于在峰图上自己框选要裁掉的列(见第 5 节)。必须先对齐才能裁切。 执行过裁切之后,按钮文字会变成「✂️ 手动裁切」,并自动进入手动裁剪模式,方便你接着微调裁切范围;此时它不再响应右键参数。 |
| 🌳 iqtree建树 | 左键=按上次的参数直接执行;右键 / 长按=打开「🌳 建树配置」窗口,改完再执行(命令里须保留 in.fa 与 out 两个占位符)。结果在页面底部画出系统发育树。必须先对齐才能建树。 |
| 🧰 工具箱 | 四个辅助功能:恢复状态(三档回滚) / 序列紧凑视图 / 拖动排序 / 修改碱基(见第 8 节)。进入拖动排序或修改碱基模式时,本按钮会变红并改文案为「✓ 完成拖动 / ✓ 完成修改」,再点一次退出。 |
| 手机版右键 | 手机 / 平板上没有鼠标右键,点它弹出同样的菜单(等价于在按钮上 右键 / 长按)。桌面宽度下不显示,窄屏(≤768px)才出现。 |
| 已对齐(灰) | 禁用态示意。执行过对齐之后,「+ 加载序列」「🔗 Mafft对齐」「一键执行」会一起褪成这个灰并不可点(页面上的文字仍是白色,底色变为浅灰),鼠标悬停会给出原因提示。 |
| 标签页栏(页面上沿) | 一页一组序列。可新建、改名、删除标签页;不同片段放不同标签页,建树时按标签页顺序合并成多分区矩阵。 |
| 序列区块 | 每条序列一块:左上角是标本名输入框(可改,该名字就是树上的叶名),右上角是删除按钮,下方便是峰图 / 碱基行(见第 4 节)。 |
| 底部图例 + 按钮 | 图例:对齐插入的空位(黄色虚线框)、裁切掉的区域(灰色块);右侧是「🗑 清空全部」与「💾 导出合并FASTA」(把当前标签页全部序列导成一个 FASTA 文件)。 |
3四步流程
- 1上传:点「+ 加载序列」选择文件(或直接拖入页面)。建树至少要 4 条序列,且应当是同源片段(例如都是同一条 ITS 引物扩出来的)。
- 2对齐:点「🔗 Mafft对齐」。服务器跑 MAFFT,把长短不一的序列按同源位点排好,不足处在峰图上补出黄色虚线框的插入空位。
- 3裁切:点「✂️ trimAl裁切」。自动识别因比对而变得不可靠的列(大片空位、两端乱序区),把它们灰化——灰块覆盖的列不参与建树。
- 4建树:点「🌳 iqtree建树」。IQ-TREE 做最大似然建树 + UFBoot 自举检验,完成后页面底部直接画出系统发育树。
(第 2 至第 4 步也可以合并成一次「一键执行」。)三个执行按钮都还能 右键 / 长按 打开参数窗口,改完参数再跑,详见第 7 节。
- 对齐之后:「+ 加载序列」「🔗 Mafft对齐」「一键执行」三个按钮一起变灰 —— 比对已经定型,不应再插入序列或重复对齐。
- 裁切之后:「✂️ trimAl裁切」变成「✂️ 手动裁切」,方便继续微调。
- 想重来:工具箱 →「↺ 恢复状态」,按需要选一档回滚(想连「修改碱基」一起撤销就选「回滚至刚上传」),三个按钮随即恢复可用。
4看懂「序列区块」
每个序列区块就是把一条测序读长摊开画出来。下面是同一条序列在加载后、与对齐后的样子(取同一段,便于对比)。
- 1四通道荧光曲线:G 黑、A 绿、T 红、C 蓝。纵轴为荧光强度,量程按四通道全局最大值动态缩放,保证所有峰顶都入画。
- 2整十位刻度线 + 顶部序号:每 10 个碱基一条灰线与序号,用于定位与报数。
- 3底部碱基行:机器判定出的碱基,字符颜色对应通道色,整行可连续复制。
(纯文本序列 .seq / .fasta 没有峰图数据,区块里只显示碱基行,没有四通道曲线。)
点「🔗 Mafft对齐」之后,同一段序列会变成:
- 1插入空位高亮框:MAFFT 为了让同源位点对齐而补进的位置。该位在本序列没有碱基(碱基行是黄色
-),但在别的序列上可能有——这正是「对齐」的含义。 - 2重新编号的对齐刻度:插入空位后,原有的「每 10 碱基」编号不再对得上,刻度会按对齐后的列号重算(图中同一段序列的刻度从 110/120… 顺移到 120/130…)。
- 3连续的插入空位会把后面的曲线整体推开:图中 140 刻度附近是一段连续空位,它右侧的峰形因此相对图 1 明显右移。 这样处理之后,曲线、碱基字符、刻度三者始终逐列对齐 —— 手动裁剪、修改碱基都依赖这个对齐关系。
- 黄色 ⚠ 本页同名:当前标签页内有两条序列的标本名相同 —— 建树时同名叶会更难区分,建议改名。
- 绿色 √ 对方标签页名:该标本名在别的标签页里也出现过(多片段测同一批标本时很常见,属正常提示)。
- 黄绿并存时以黄色优先。序列增删、改名、标签页增删后徽章会自动重算。
5裁切:去掉不可靠的列
比对之后,两端和空位扎堆的区段会变得不可靠,直接拿去建树会引入噪声。trimAl 默认用 -automated1 自动判断,把这些列裁掉。
下面这张图取同一条序列的比对首端——那里裁切最集中、最容易看清:
- 1灰块(裁切掉的区域):这些列会被排除在建树数据之外。灰块常落在比对的首尾或中段 —— 那些位置上序列普遍缺失、信号杂乱,trimAl 会把它们整段判为不可靠。 灰块内若同时出现黄色虚线框,说明该列既是插入空位、又被裁掉 —— 两种标记可以叠加。
- 2保留下来的碱基行:灰块右侧的列才真正送进 IQ-TREE。裁剪按列判定,所以除了连续的大段灰块,也可能出现零星的单列灰块。 若灰块占比过高,说明这段数据的可比对区段偏短,可考虑换一段更长的读长,或改用「手动裁剪」自己界定保留区。
手动裁剪
自动裁切有时过于激进或过保守,此时可以自己框选,两种入口:
- 裁切之前:右键(长按)「✂️ trimAl裁切」→ 在参数窗口点「手动裁剪」;
- 自动裁切之后:按钮已自动变成「✂️ 手动裁切」,直接点它即可进入手动裁剪模式。
然后在峰图上按住鼠标横向拖出一个框,松手即把该区间标记为裁切区(同样显示为灰块)。被手动裁剪的列同样不参与建树,但依然占列位。
6看懂「系统发育树」
建树成功后,页面底部会出现「🌳 系统发育树」区块 —— 这就是 IQ-TREE 的产出,直接画在页面上,无需跳转。
- 1节点置信度:枝端节点上方的红色数字,即 UFBoot 自举支持值(0–100)。越接近 100 越可靠;低于 70 的分支在解读时应当谨慎。
- 2枝长比例尺:图下「分支长度:遗传距离(不足 2px 强制按 2px 显示)」给出枝长的尺度;为避免极短枝挤成一条线,短于 2px 的枝条会被强制按 2px 画出(即视觉上会比真实遗传距离略长,读树时以数字与相对长短为准)。
树上方的枝长缩放倍数控制条(- / 滑块 / +,范围 0.2×–6×)只影响显示宽度,不改变树的拓扑与枝长数值。旁边是「🌲 去树查看器」,把当前树 POST 到树查看器页面,在更宽的画布里交互查看。
| 按钮 | 作用 |
|---|---|
| 🌲 去树查看器 | 在新标签页打开树查看器,携带当前 Newick 与标题。 |
| 🔀 通过枝长重排序列 | 按树中的叶序(默认短子树在上)重排页面上所有标签页的序列区块,让页面顺序与树的叶序一致,方便逐条核对。 执行后页面顶部会提示「已按枝长重排 N 个标签页(共 M 条序列)」。 |
| ⬇ 下载 .treefile | 下载 Newick 格式的树文件(tree.treefile),可继续用其它软件分析或归档。 |
| 🖼 下载为 PNG 图片 | 把页内绘制的树与图例合成一张高清 PNG 图片导出,用于报告或插图。 |
| 💾 下载本页 | 把当前整页状态保存成一个自包含的 HTML 文件(含峰图与已绘制的树),可离线打开、可分享。见第 9 节注意事项。 |
-m MFP = ModelFinder Plus,自动为数据挑最合适的核苷酸替换模型;-B 1000 = 1000 次 UFBoot 自举,给出节点支持值;-T AUTO = 自动选择线程数。这条流水线没有
-bb / -alrt 等额外检验,是一套兼顾速度与稳健的常用默认组合。
7参数配置(右键 / 长按)
三个执行按钮都支持右键(手机上长按,或用「手机版右键」按钮)打开参数窗口。左键 = 按上次参数直接跑,右键 = 先改参数再跑。
| 按钮 | 参数窗口标题 | 默认命令 |
|---|---|---|
| 🔗 Mafft对齐 | MAFFT 对齐参数 | --auto --adjustdirection in.fa |
| ✂️ trimAl裁切 | 裁切参数(另有「手动裁剪」按钮) | -in in.fa -automated1 -colnumbering |
| 🌳 iqtree建树 | 建树配置 | -s in.fa -m MFP -B 1000 -T AUTO --prefix out |
in.fa:代表输入文件名。后端会按标签页顺序把各标签页的序列组合成输入(多标签页即多分区),你不需要写真实路径。out:代表输出前缀。建树的输出文件(.treefile等)由后端按此前缀落盘。- 因此建树命令里必须同时包含
in.fa与out,否则保存时会提示「命令中缺少 in.fa / out,请检查」并中止。
参数窗口里还可以勾选「🔗 所有标签页使用相同参数」(默认勾选):取消后可为每个标签页分别指定命令,适合各片段用不同模型的场景。
--adjustdirection 会让 MAFFT 自动检测并反向互补方向不一致的序列。若发生了这种情况,页面会提示
「⚠️N 条序列已自动进行反向互补,裁切时需注意处理!」—— 这意味着该序列的首尾方向与其它序列相反,后续裁切(尤其手动裁剪)时要留意它对应的列位置。
8工具箱
点「🧰 工具箱」弹出四项辅助功能:
| 功能 | 说明 |
|---|---|
| ↺ 恢复状态 | 点开后弹出三档回滚选择框(每一项都有悬停说明),按需要把当前标签页退回某个节点: ↩ 回滚至刚上传 —— 回到刚加载 / 上传时的序列:清除对齐与裁切标记、清空已执行的命令,并一并撤销「修改碱基」的改动。 ↩ 回滚至对齐前 —— 撤销对齐与裁切,但保留「修改碱基」的改动。 ↩ 回滚至裁切前 —— 只撤销裁切标记,对齐结果与碱基修改都保留。 后两档之所以不回退碱基:「修改碱基」是改正测序错误的人工成果,回滚对齐 / 裁切只该动软件产生的标记,不该顺手把人工修正也抹掉。三档都会重渲染序列块(顺带清掉插入空位与灰块),保留序列排列与标本名;执行前会弹确认框。回滚到「刚上传 / 对齐前」后阶段回到 0,三个执行按钮恢复可用。 |
| 📋 序列紧凑视图 | 把峰图收成「每序列一行、每碱基一个方块」的比对矩阵,便于横向对比 —— 这是检查比对质量最方便的视图。对齐之后才能用;面板内可纵横滚动、可切换标签页。面板没有固定尺寸:序列少时它就只有几行那么高,序列多时才逐渐变高,最高长到屏幕高度的 88%(再多就在序列区出现纵向滚动条)。 面板右上角另有两个开关,默认都是关闭的: ⇔ 拖动 - 位(按钮中间那个黄色方块就是序列里的空位块)—— 开启后黄色 - 空位块才能左右拖动换位。默认锁住是为了防止误拖改坏对齐结果,要调空位位置时先点它。✂️ 手动裁剪 —— 开启后在本面板里横向拖过若干列即可裁切,边界判定与上面的拖动完全一致(同一套列号计算);松手后这些列整列灰化。手动裁剪之后就回不到自动裁切了(trimAl 按钮会变成「✂️ 手动裁切」)。 两个开关互斥,同一时刻只能开一个。它和峰图上的手动裁剪是同一套裁切:在这里裁完,下方峰图会同步出现灰块;反过来也一样(见下方图 5)。 |
| ⇕ 拖动排序 | 把每条序列左侧的删除按钮暂时变成拖动把手,按住上下拖动即可调整序列顺序(松手即生效)。再次点工具箱可退出该模式。 |
| ✎ 修改碱基 | 进入碱基编辑模式:单个碱基可拖动换位、双击改字母或删除;在碱基行或峰图区的空白处双击即可新增,新碱基落在你双击的那个 x 上 —— 所以可以直接对着某个没被识别出来的峰补一个碱基。适合修掉明显的 basecall 错误。 两条边界:「-」空位不可修改,它是对齐留下的占位标记、不是碱基,双击只会提示你(要挪位置请拖动它或它的黄色方块);对齐之后不能再增删,双击空白会提示你先用「恢复状态 → 回滚至对齐前」退回未对齐状态(对齐后改字母、拖动仍然可用,以免破坏比对列数)。 |
- 1⇔ 拖动 - 位(图中未开启,灰底):默认关闭。开启后黄色空位块才能左右拖动换位,用来手动微调比对。按钮中间那个黄色方块不是文字,就是序列里空位块的样子。
- 2✂️ 手动裁剪(图中已开启,铜橙描底):开启后横向拖过若干列即可裁切,松手生效;开了它就跑不了自动裁切,trimAl 按钮会跟着变成「✂️ 手动裁切」。两个开关互斥。
- 3标本名列:每行一条序列,行首即标本名(与树上叶名一致),可与下方序列区块逐条对照。
- 4被裁切的列(整列灰化):这些列不参与建树,但仍占列位。它与下方峰图里的灰块是同一份裁切状态,两边始终同步。
- 5正在拖选的列(橙色描边):按住鼠标横向拖过的整段列会跨所有序列一起高亮,松手即按「交 / 差」规则生效 —— 拖一段新区域=裁掉,再拖同一区域=取消裁切。
面板高度随序列条数浮动:像图中 7 条序列就只占这么一小块,序列多时会自动长高,最多长到屏幕高度的 88%,再多就在序列区出现纵向滚动条。
「拖动排序」与「修改碱基」进行中时,工具箱按钮会变红并改文案为「点此完成」,再次点击即退出该模式。
9运行机制与常见问题
运行机制
- 服务器端执行:与「拆峰」页不同,本页会把序列上传到服务器,由服务器调用 MAFFT / trimAl / IQ-TREE 可执行文件;页面顶部会出现全屏遮罩显示当前进度,完成后关闭。
- 三个阶段:对齐、裁切、建树各对应一个接口(
/api/mafft、/api/trim、/api/build)。任一阶段失败会弹窗提示原因,且流水线不继续。 - 页内出图:建树返回的 Newick 文本由前端还原真实叶名后,直接在本页绘制(与「树查看器」同一套算法),不跳转、不嵌 iframe。
- 命名还原:为规避命令行对特殊字符的限制,后端处理时会把长标本名替换成短代号,返回前端时再逐一还原 —— 所以页面上看到的叶名始终是你的标本名。
常见问题
| 现象 | 说明 / 处理 |
|---|---|
| 点裁切或建树,提示「必须先进行对齐!」 | 这两步依赖比对结果。请先执行「🔗 Mafft对齐」,或改用「一键执行」。 |
| 序列没有峰图,只有一排碱基 | 该文件是纯文本序列(.seq/.fasta),本身不含四通道数据。只有 .ab1 才有峰图。 |
| 页面卡顿、滚动发涩 | 带峰图的序列太多。建议控制单次加载数量,或分标签页分批处理;纯文本序列负担小得多。 |
| 弹窗「建树失败: ……」 | 后端返回了具体原因(如序列数不足、比对矩阵异常、模型无法估计等)。请按提示调整数据或参数后重试。 |
| 「一键执行」点不动了 | 已经对齐过,该按钮按设计失效(避免在已对齐的状态上重复对齐)。请直接用后面三个按钮。 |
| 「+ 加载序列」按钮变灰、提示「已对齐,无法加载新序列」 | 同理:对齐之后不允许再插入序列(否则新旧序列没法逐列比对)。若确实要补序列,先用工具箱「↺ 恢复状态 → 回滚至对齐前」清空对齐状态(该档保留「修改碱基」的改动),重新加载后再统一对齐。 |
| 提示「N 条序列已自动进行反向互补」 | MAFFT 检测到这些序列方向相反并已自动纠正。若后续要手动裁剪,请注意该序列的列方向。 |
| 「下载本页」后重新打开,按钮不能用了 | 保存出来的是静态快照:只保留「工具箱」里的拖动排序与紧凑视图两项,其余按钮(对齐/裁切/建树)不带后端能力,点击无效。峰值与已画好的树仍在,可查看、可继续导出。 |
| 灰块看起来把整段都盖住了 | 可能是数据本身可比对区段很短(如序列彼此差异过大)。试着换一段更长的读长、检查是否混入了非同源序列,或用「手动裁剪」自行界定保留区。 |