ChimeraX 与 IMOD:看 3D 与分割
实际做 Cryo-ET 绕不开的两个工具 —— 用 IMOD 对齐与重构,再跟着教程用 ChimeraX 把你的 MRC 体看出来、出成图,最后把里面的结构一根根描出来。
讲完原理,真正动手时绕不开两个软件:IMOD(把倾转序列对齐、重构成三维体)和 ChimeraX(把重构出的三维体看清楚、做成图、把里面的结构描出来)。这一页给出它们各自怎么装、怎么用 —— 既包括把体「看出来」,也包括把感兴趣的结构从体里「分割」出来。
安装与配置
两个都免费、跨平台(Windows / macOS / Linux)。
- IMOD:从 bio3d.colorado.edu/imod 下载对应平台的安装包,按说明安装即可;它自带
etomo、3dmod、tilt等命令行工具。重构大体积时,配一块支持 CUDA 的 NVIDIA 显卡会快很多。装好后,命令行里能跑imod、etomo即说明配置成功。 - ChimeraX:从 cgl.ucsf.edu/chimerax 下载安装,学术用途免费。渲染大体积时显卡越好越流畅;显存不足时可以先把体降采样再看。
装好后,IMOD 负责「倾转序列 → .mrc / .rec 体」,ChimeraX 负责「把体看出来、分割开」—— 下面分别说怎么用。
IMOD:对齐与重构
IMOD 由科罗拉多大学 Boulder 实验室(David Mastronarde 等)开发,是 Cryo-ET 事实上的标准包。它覆盖从原始倾转序列到三维体的整条流程:
- etomo —— 图形化的流水线向导,一步步引导对齐与重构;
- 对齐:先做粗对齐,再用金颗粒(fiducial)或图块追踪(patch tracking)做精对齐,估计每张投影的几何参数;
- 重构:
tilt命令做加权反投影(WBP)或 SIRT,得到三维体(tomogram); - 3dmod —— 浏览三维体、画模型、做分割与标注。
导入倾转序列 → 粗对齐 → 精对齐(fiducial / patch)→ tilt 重构 → 在 3dmod 里查看。每一步 etomo 都有对应面板,命令也可脚本化批量跑。
把 MRC 可视化:ChimeraX 上手教程
重构跑完,你拿到的是一个三维体文件(.mrc 或 .rec)—— 一堆密度数值,肉眼看不了。UCSF ChimeraX(免费)能把它渲染成能看、能转、能出图的三维结构。跟着这条最小流程走一遍:
- 安装并打开。 从官网下载 ChimeraX(Windows / macOS / Linux 均可)。启动后,把你的体数据直接拖进窗口,或在底部命令行输入
open 路径/到/你的.mrc,ChimeraX 会自动识别为体数据。 - 调等值面阈值。 打开后会弹出 Volume Viewer 面板。拖动里面的阈值(level)滑块:调低,显示更多(也更多噪声);调高,只留下最强的密度。来回拖,找到结构刚好清晰、噪声又不太多的那个值 —— 这一步最关键。
- 选显示样式。 命令
volume #1 style surface用实心等值面(看整体形状最常用);style mesh网格;style image体渲染。 - 打光与描边。
lighting soft柔和,或lighting full带阴影、更立体;再加graphics silhouettes true给结构描个边,截图更清楚。 - 配色。
color #1 cornflowerblue这类单色;或按数值/高度上色,让深浅有层次。 - 转、切、看。 鼠标拖动旋转,
view复位视角;想看内部,就用剖切面(Side View 里的 clip,或clip命令)切开。 - 出图。
save 图名.png supersample 3导出高分辨率截图;要旋转动画就movie record… 转一圈 …movie encode 动画.mp4。
本站结果页里那些三维重构图(apoferritin、Vipp1),正是这样在 ChimeraX 里渲染出来的。先把一个阈值和视角调好,之后每次截图都很专业。
把结构分割出来
「看见」只是第一步。等值面让你看到整团密度,但里面常有好几样东西混在一起 —— 一段膜、一个核糖体、一个囊泡。**分割(segmentation)**就是把体里一块块结构圈出来、各自当成独立对象去上色、隐藏、测量、单独导出。下面给出两条最常见的入门路径:在 ChimeraX 里对密度图分区,或在 IMOD 的 3dmod 里手工描轮廓建模型。
分割回答的是「这块密度是什么、在哪、有多大」。原始的体只是一锅密度值;分割给每一勺密度贴上标签,于是你能把膜从背景里抠出来、单独量它的面积或体积、或者把一个细胞器拎出来转着看。无论自动还是手画,本质都是在体里画边界、给区域命名。
在 ChimeraX 里分割密度图
ChimeraX 自带 Segment Map 工具(菜单 Tools → Volume Data → Segment Map),它把一张密度图自动切成许多区域(region):算法在密度里找一个个局部极大值,再把周围相连的体素归到最近的极大值名下,于是整个体被划成一片片小块,每块是一个候选结构单元。
最小流程:
- 先调好阈值。 和上面看体一样,先在 Volume Viewer 里把等值面阈值定到结构清晰、噪声可控 —— 分割是在这个阈值之上的密度里做的,阈值太低会把噪声也切成区域。
- 跑 Segment Map。 打开工具、选中你的体、点 Segment。它会算出一堆区域,每块自动上不同颜色。
- 挑出你要的结构。 区域往往偏碎。用工具里的合并/分组把同属一个结构(比如一段膜、一个颗粒)的相邻区域并到一起;不需要的区域可以隐藏或删掉,只留下感兴趣的那一块。
- 上色、隐藏、单独看。 给保留下来的区域单独配色,把其余密度藏掉,就得到一张「只剩目标结构」的干净图。
- 测量与导出。 选中某个区域可以读它的体素数(换算成体积)、看它的位置与范围;也能把这块区域单独存成一个新的体或表面网格(surface mesh),供后续分析或出图。
Segment Map 这种「按局部极大值分水岭」的自动分割,对形状紧凑、密度突出的东西(独立颗粒、清晰的囊泡)很好用,但对又长又细、对比度又低的膜容易切碎或切断。实际中常把它当起点:先自动分出大块,再用上色/合并/隐藏手工收拾边界。需要更准的表面,还可以单独导出区域的 surface,再用 ChimeraX 的表面显示选项(实心 / 网格 / 透明度、平滑)去调,让膜或细胞器的轮廓干净可读。
在 IMOD 3dmod 里手画分割
当结构太细、对比度太低、自动工具不靠谱时,最稳的办法是手工描轮廓。IMOD 的 3dmod 就是干这个的:你逐层翻过断层图,沿着膜或细胞器的边界一圈圈画线,这些线攒起来就构成一个三维模型对象,再从轮廓生成表面 —— 这就是一份人工分割。
最小流程:
- 打开断层图。
3dmod 你的.rec(或在 etomo 里点开)。会出现一个 ZaP 切片窗口,可以滚轮逐层(沿 Z)翻看;同时另开一个 Model 状态,准备画线。 - 进建模式。 在窗口里切到 Model 模式(不是 Movie 模式)。此时鼠标点击会落下模型点。
- 沿边界描轮廓(contour)。 翻到能看清目标的某一层,沿着膜 / 细胞器的边缘点一圈点,连成一条闭合的轮廓线。翻到下一层,再描一条。一层层描下来,这一摞轮廓就勾出了结构在三维里的形状。
- 分对象(object)。 一个对象对应一种结构。要分割多样东西(比如外膜、内膜、一个囊泡),就新建多个对象,每个对象给不同颜色,各自描各自的轮廓。
- 从轮廓生成表面网格。 描完后,让 3dmod 把一摞轮廓「蒙皮」成三角面(mesh),就得到一个连续的三维表面 —— 膜或细胞器的实体形状。
- 存模型、当分割用。 把模型存成 IMOD 的
.mod文件。这份模型本身就是一份分割:每个对象 = 一个被标注的结构,可以用来测面积 / 体积、统计、或导出表面供 ChimeraX 渲染。
手画很费时但最可控 —— 弱信号、复杂膜结构常常只能这么来。诀窍是不必每层都画:隔几层画一条轮廓,让插值补中间,再回头修关键层,能省下大量点击。
自动分割工具(了解即可)
逐层手画细胞里几十段膜显然吃不消,所以有一批自动 / 半自动工具去学着分割膜与细胞器,常见的有 MemBrain(专攻膜分割)、EMAN2(带基于卷积网络的断层图分割工作流),以及商业软件 Dragonfly。它们大多需要你先手标一小批样本作训练,再让模型推广到整套数据;产物同样是膜 / 细胞器的标签或表面。这里只点名,具体用法与效果随数据而定,按各自文档来。
一条线串起来:重构越干净,分割越省力
不管走 ChimeraX 还是 3dmod,分割的难易直接取决于体本身有多干净。噪声大、缺失楔形把结构沿 z 拉糊的体,膜的边界忽隐忽现,自动工具切碎、手画也找不准边。反过来,一个去噪到位、缺失楔形被补偿过的体,膜清晰连续、颗粒边界利落,分割会轻松得多。
这正是训练去噪 / 复原那一步的意义所在:自监督模型(CryoCARE、DeepDeWedge,乃至本站的重构方法)先把体清理干净、把缺失楔形交给学到的先验去补,再进 ChimeraX / 3dmod 分割 —— 一个好的重构,是一份好分割的前提。
两者如何衔接
一句话:IMOD 负责「从投影到三维体」,ChimeraX 负责「把三维体看明白、分割开、讲出来」。 中间还能接上结构分析里的子断层平均、颗粒挑选与分割,进一步提升信噪比、定位与解读结构。而本站讲的重构方法,正是想替换或增强 IMOD 这一步里对缺失楔形的处理。
上一步:训练去噪 / 复原模型 —— 把体清理干净,再回到这里把结构看出来、分割开。这是软件流水线的最后一站。