对 subtomo averaging 我也还有很多疑惑,还在摸索期,如有任何问题,欢迎大家私信交流,祝大家科研顺利~
relion_class_ranker
可以通过Subset selection任务调用。relion_it.py
自动流程化数据处理脚本,可以从导入数据开始全流程自动化处理数据,得到最终结果。 在relion_it.py GUI
里,可以先设置好数据的相关参数,以及需要运行的任务类型,然后点击save&run
按钮,即可开始预处理流程,界面会自动跳转到 RELION-4.0 主界面,并实时显示预处理运算进度和后处理运算进度。relion --ccpem &
。manual picking
中直接调用 topaz denoise
,对图像进行降噪处理后再进行手动挑颗粒操作,也可以在 auto-picking
中 Topaz tab
中使用 Topaz 训练模型和自动挑颗粒。对于Topaz denoise,可以在 manual picking 页面中将 OR:use Topaz denoising?
设为Yes,并且设置好Topaz可执行文件的位置,便可以在进行 manual pick之前调用Topaz进行去噪操作。其中和tomo相关的代码主要在/src/jaz/tomography/programs/
里面,在编译生成命令的时候,都在前面加了relion_tomo_
的前缀。
RELION 使用到了以下数据类型:
Tomogram set
层析图像集描述了一个项目中定义的所有层析图像(tomograms),也就是倾斜序列。通常命名为 tomograms.star。它包含了 T+1 个表,其中 T 代表层析图像的数量。例如下图是demo数据集里的tomogram set 示例(可以看到有一个global表,然后分别是5个层析图的信息):
第一个表(名为 global)定义了和每个层析图相关的属性。每一行对应一个层析图,它列出了以下属性:
- tomogram name (
rlnTomoName
): 层析图的名字,在项目中引用此层析图的唯一标识符(即在层析图像集、粒子集和流形集内)。- tilt series file name (
rlnTomoTiltSeriesName
):图像stack的路径- frame count (
rlnTomoFrameCount
)- tomogram size (
rlnTomoSize
)- handeness (
rlnTomoHand
):这个值是+1或-1,它描述焦点是增加还是减少,作为深度的函数(投影Z坐标)。它不是先验的,必须通过实验来确定。在整个数据集中通常是相同的。- pixel size (
rlnTomoTiltSeriesPixelSize
):单位是 Å 。- voltage (
rlnVoltage
):单位是kV 。- spherical aberration (
rlnSphericalAberration
)- amplitude contrast (
rlnAmplitudecontrast
)- (optional) The path to a STAR file containing the 3D positions of fiducial markers detected by relion_tomo_find_fiducials (
rlnTomoFiducialsStarFile
)
之后的表格分别对应一个断层扫描图,它们的名字与它们所指的断层扫描图相同。每一行对应一个倾斜图像,描述以下属性:
- The rows of the projection matrices that map points in 3D space onto the 2D image (
rlnTomoProj
): 将3D空间中的点映射到2D图像的投影矩阵。- astigmatic defocus (
rlnDefocus
,rlnDefocusAngle
):像散的散焦。- intensity scale factor related to effective ice thickness at each tilt angle (
rlnCtfScalefactor
):强度尺度因子与有效冰厚在每个倾斜角度。(一般是1)- cumulative radiation dose (
rlnMicrographPreExposure
):累积剂量。
断层图集(tomogram set)通常是作为新项目的一部分创建的第一个数据文件。它可以通过调用relion_tomo_import_tomograms
程序从IMOD
导入现有的对齐来生成。初始对齐可以并且应该再继续使用relion_tomo_align
程序进行优化。
Particle set
通常命名为particles.star
,列出了数据集里的所有颗粒。大致相当于relion中SPA程序所使用的粒子文件,是tomography程序和一般细化程序之间的绑定元素,也是RELION中唯一可以被SPA程序所理解的断层扫描数据文件。
与SPA粒子集一样,tomography的粒子集由optics表和particle表组成。与SPA粒子集不同,粒子的坐标是3维的(rlnCoordinate
和rlnOrigin
),并且每个粒子还需要一个tomogram名称(rlnTomoName
),用于识别粒子的原始层析图,正如tomogram set中定义的那样。
另外,与SPA不同的是,断层扫描颗粒不应该被认为是存储在磁盘上的像素数据,而应该被认为是这个文件中定义的抽象实体。用于细化的3D图像可以用relion_tomo_subtomo
程序创建,但应该把它们看成是瞬态数据,一旦其层析图的任何其他属性被更新,这些瞬态数据就会失效。因此,在处理断层扫描数据集期间,这些3D图像通常被创建多次。
和2D颗粒集的另一个不同之处在于,断层扫描的颗粒可以有选择地拥有两个不同的方向。在断层扫描中,粒子的近似方向通常由几何背景(geometric context)决定(例如它们嵌入的膜的方向)。
因此,通过定义每个subtomogram相对于该几何图形的初始方向(使用字段rlnTomoSubtomogram
),然后在细化过程中应用强先验来约束描述粒子本身相对于其subtomogram的方向的角度(rlnAngle
),可以极大地加速subtomogram对齐。 由于 relion_refine 仅考虑后一个角度,因此先验只会影响这些角度。 通常,这意味着 rlnAngleTilt
角度将受到约束,而其他两个通常是未知的,即使在断层扫描中也是如此。
然后在细化过程中应用强大的先验约束的角度描述粒子的取向本身的subtomogram 。由于relion_refine
只考虑后一个角度,所以先验只会影响这些角度。通常,这意味着rlnAngleTilt
的角度会受到限制,而其他两个通常是未知的,即使在断层扫描中也是如此。
目前有两种方法可以创建新的粒子集:
relion_tomo_sample_manifold
沿着一组用户定义的(并且可能拟合的)manifold 对粒子进行采样。relion_tomo_import_particles
中提供了有关如何从现有数据集中导入粒子的更详细说明。Trajectory set
轨迹集(通常命名为motion.star
)包含对应粒子集中所有粒子的运动轨迹。 可以使用程序 relion_tomo_align
估计轨迹,并且它们将被任何需要粒子位置的 relion 断层扫描程序考虑。
轨迹文件由 P+1 个表组成,其中 P 是相应粒子集中的颗粒数。 第一个表只包含粒子的数量,而每个后续的表都列出了每个粒子的轨迹。 轨迹以 Å 为单位,它们与颗粒在按时间顺序排列的第一个倾斜图像(即累积剂量最低的图像)中的位置有关。
Manifold set
流形集通常命名为manifolds.star
,它列出了所有断层图中定义的所有流形。 在这种情况下,所有流形都是嵌入在 3D 空间中的 2D 表面。 目前仅支持球体和球状体。 球状体是类球表面(斑点),其与球体的偏差使用球谐函数基表示。 可以使用程序 program_tomo_add_sphere
导入球体,而可以使用程序 relion_tomo_fit_blobs_3d
将球状体从初始球体拟合到膜囊泡。
流形文件包含每个断层图的一个表,每个表都以相应的断层图名称命名(参见断层图集)。 表的每一行对应一个流形,列出其:
rlnTomoManifoldIndex
),rlnTomoManifoldType
),rlnTomoManifoldParams
).参数集因流形类型而异:
给定一组流形,程序 relion_tomo_sample_manifold
允许用户沿每个流形对粒子进行采样,生成一个新的粒子集。 这些粒子排列成使得它们的 Z 方向垂直于流形的表面法线。 这允许在细化期间应用强倾斜先验以节省时间。
Optimisation set
优化集是 relion 断层扫描项目中的中心数据类型,它只包含其他文件的路径。 它通常被命名为 optimisation_set.star
。
具体来说,它可以指向以下数据文件:
所有这些条目都是可选的,不同的程序需要不同的输入。所有程序都将优化集作为输入,并且大多数程序也会写出一个。如果数据文件由程序创建或更新,则将其添加到程序写出的优化集中。这使用户不必跟踪哪些程序更新了哪些数据文件。例如,relion_tomo_refine_ctf
只会更新 tomogram set,因为对于每个倾斜图像只定义一次散焦,而 relion_tomo_align
将更新断层图集、粒子集和轨迹集。
运行程序时,始终使用 --i
参数指定输入优化集。此外,也可以单独指定单个数据文件,在这种情况下,单个文件将覆盖优化集中列出的文件。这使用户可以轻松地执行与交换特定数据文件的相同程序。如果程序所需的所有数据文件都已单独指定,则根本不需要优化集。各个数据文件的输入参数始终命名如下:
--t
for the tomogram set
--p
for the particle set
--mot
for the trajectory set
--man
for the manifold set.
--ref<1/2>
for the respective reference map
--mask
for the reference mask
--fsc
for the reference FSC
有 3 种方法可以创建初始优化集:
relion_tomo_make_optimisation_set
。1. relion_tomo_reconstruct_particle
:
(对应代码: /src/jaz/tomography/programs/reconstruct_particle.cpp)
从给定的数据集生成高分辨率map。该程序根据给定的优化集(optimisation set)构建高分辨率 3D reference maps。 它类似于 relion_reconstruct
,只是它不需要预先提取的粒子图像。 相反,它直接从倾斜序列中提取任意大小的方形窗口(--b
参数),并将其用于重建(使用傅立叶反变换)。它考虑了单个粒子的散焦,以及粒子运动和高阶像差。
输出由一对maps(每半个集合一个)以及一个合并map组成。 此外,还有 3 个map的分子(数据项)和分母(权重项)(参见|RELION| 论文中的公式 3),以方便进一步处理。
相关参数:
--i
--p
--t
--mot
: 输入的 optimisation-set 和/或它的各成分。
--b
: 重建的box size。注意,这与用于细化粒子的框大小无关。 这允许用户构建任意大小的 3D 地图,以获得粒子周围结构的概览。 足够大的框尺寸还允许捕获更多已被 CTF 离域的高频信号。
--crop
:裁剪框大小。 如果设置,程序将输出一组额外的已裁剪为此大小的map。 如果需要的 map 小于检索 CTF 离域信号所需的 box 的大小,这将很有用。
--bin
:下采样(分箱)因子。 注意,这不会改变 box 的大小。 重建的区域反而变得更大。
--SNR
: 应用具有此信噪比的维纳滤波器。如果省略,重建将使用启发式方法来防止除以过小的数字。请注意,使用低(即使是现实的)SNR 可能会冲掉较高的频率,这可能会使map不适合用于进一步细化。
--sym
: 对称类的名称(例如,C6 表示六重点对称).
--mem
: (近似)用于重建的最大内存量(见下文)。
--j
: 用于程序非重构部分的线程数(例如对称应用或网格校正)。这应该设置为可用的 CPU 内核数。
--j_out
: 并行计算部分重建的线程数。这更快,但它需要为每个线程额外的内存。当与 --mem 参数一起使用时,这个数字将减少到(大约)维持强加的内存限制。
--j_in
: 用于每个部分重建的线程数。这是并行化过程的较慢方法,但它不需要额外的内存。除非内存有限,否则应该首选 --j_out 选项。 --j_out 和 --j_in 的乘积不应超过可用的 CPU 内核数。
--o
: 输出目录的名称(将被创建)。
程序输出:
运行程序后,输出目录(–o 参数)将包含以下项目:
.mrc
:重建的裁剪后的maps。_full.mrc
:重建的全尺寸maps,以防全尺寸(–b 参数)与裁剪后的尺寸(–crop 参数)不同。data_.mrc
:全尺寸的重构数据项。weight_.mrc
:全尺寸的重构权重项。note.txt
:包含运行程序的命令的文本文件。2. relion_tomo_subtomo
:
(对应代码: /src/jaz/tomography/programs/subtomo.cpp)
创建伪子断层作为relion_refine
的输入。
该程序创建可以输入 relion_refine
以执行 subtomogram 对齐的pseudo subtomograms
。这些伪子断层图并不意味着代表粒子的实际密度分布,而是抽象的 3D 图像描述项,允许 relion_refine 近似在相应的 2D 图像堆栈上执行对齐时会出现的成本函数。具体来说,每个伪子断层图由 CTF 加权观测值的总和(数据项)以及相应的 CTF² 项总和(权重项)组成。此外,输出权重项还包含 - 沿 Z 轴连接的 - 3D 多重图像(对每个傅里叶体素有贡献的傅里叶切片数),允许 relion_refine
估计一个球型对称噪声分布。
重建的 pseudo subtomo 会考虑粒子的运动,以及高阶像差(如果它们已被估计)。该程序将输出一个新的粒子集
,以及一个新的优化集
,其中初始粒子集已被新生成的粒子集替换。该粒子集可以输入 relion_refine
。
如果 subtomo 方向已定义(参见 particle set),那么将在该坐标系中构建 subtomo。 如果粒子的近似方向是从周围的几何形状先验已知的,这允许在 relion_refine 中使用角度先验以避免搜索不合理的方向。 特别是对于从流形采样的粒子(使用 relion_tomo_sample_manifold),子断层坐标系的 Z 轴始终垂直于局部流形。 然后可以应用强倾斜角先验来仅搜索不会使粒子倾斜太远离该方向的方向,而其余两个角度不受约束(即倾斜方向和围绕 Z 轴的旋转)。
相关参数:
--i
和/或--p
、--t
和 –mot
:输入优化集和/或其组件(参见优化集)。
--b
:重建的初始框大小。足够大的框尺寸允许捕获更多已被 CTF 离域的高频信号。
--crop
:裁剪后的输出框大小。构建后,生成的伪子断层图被裁剪到这个大小。较小的框尺寸允许使用 relion_refine 进行的(通常昂贵的)细化更快地进行。
--bin
:下采样(分箱)因子。请注意,这不会改变初始或裁剪框的大小。重建的区域反而变得更大。
--cone_weight
:在傅里叶空间中沿 Z 轴(由粒子的坐标系定义)对锥体进行减重。这对于嵌入膜中的粒子很有用,因为它可以防止对齐被膜信号驱动(平面膜的信号位于 3D 傅里叶空间中的一条线内)。请注意,粒子的坐标系由 subtomogram 方向(如果已定义)和粒子方向(参见粒子集)给出。这允许用户首先获得膜驱动的对齐,然后专门抑制该方向的信号。
--cone_angle
:要抑制的锥体的(完整)开口角度,以度为单位。该角度应包括膜方向的不确定性及其在亚断层图中表示的区域的变化。
--j
:用于并行重建伪子断层图的线程数。每个线程都需要额外的内存,因此应该将其设置为可用的 CPU 内核数,除非内存要求变得过高。
--o
:输出目录的名称(将被创建)。
程序输出:
运行程序后,输出目录(-- o 参数)将包含以下项目:
particle_name
>_data.mrc:表示所有 subtomograms 的数据项的 3D 图像。particle_name
>_weights.mrc:所有 subtomograms 的权重项。 每个 3D 图像包含沿 Z 连接的图像,描述所有 CTF² 的总和,以及描述多重性的图像。这些程序使用现有的粒子集和一对高分辨率的 3D reference maps 来估计或改善不同的属性。
relion_tomo_align
:relion_tomo_refine_ctf
:relion_tomo_local_particle_refine
:relion_tomo_fit_blobs_3d
:relion_tomo_import_tomograms
:relion_tomo_import_particles
:relion_tomo_reconstruct_tomogram
:relion_tomo_make_optimisation_set
relion_tomo_make_reference
relion_postprocess
on a pair of reference half maps.relion_tomo_add_spheres
:relion_tomo_find_fiducials
:relion_tomo_sample_manifold
:二维的CTF在最开始导入tomograms的时候传入,每一个断层序列 tilt series 对应一个CTF参数文件。通过 --i input/tomograms_descr.star
中的 _rlnTomoImportCtfFindFile
字段传入 CTF 参数文件(如使用CTFFind得到的TXT file)的路径。如图所示:
这些参数会用于创建 pseudo subtomograms——构造的 3D 数据数组集,其中包含预乘了CTF的倾斜系列图像的总和,以及包含相应 CTF 平方和的辅助数组以及每个 3D 体素被观察到的频率。
在得到伪子断层并进行平均以后,还会对倾斜序列的 CTF 参数进行重新估计和更新。每张图像上的颗粒除散焦以外使用相同的CTF参数。
体的重构分成 tomograms 的重构和 particle 的重构(subtomogram)。
在生成伪子断层时调用的是subtomo.cpp
。particle 的重构调用的 API 是 reconstruct_particle.cpp
。
在进行 reconstruct particle 的时候,直接从倾斜序列中提取任意大小的方形窗口,并将其用于重建(使用傅立叶反变换)。并且考虑了单个粒子的散焦,以及粒子运动和高阶像差。
参数优化是在傅里叶频域。调用的是和单颗粒分析流程中相同的API:ml_optimiser.cpp
。
没有进行缺失楔的mask操作。通过使用 2D 数据模型,不再需要缺失楔校正。相反,该问题接近于单颗粒分析,其中来自不同方向和不同结构状态的投影被同时整理出来。
Reference:
relion官方教程网址指路
relion4.0 beta测试结果
relion-4.0 YouTube 视频