Segmented Subtomogram Averaging (SSTA)
Segmented subtomogram averaging (SSTA) was first introduced by Guyomar et al. In the SSTA workflow, subtomogram averaging is performed along the microtubules segment-by-segment so that the resulting averages reflect the local structural heterogeneity.
In cylindra
, SSTA can be easily performed owing to the powerful combination of the
polars expression system and the
built-in methods for cryo-ET.
Note
The EMPIAR deposition by the authors such as EMPIAR-11253 is very useful to test this workflow.
Preparation
After loading the tomogram and the microtubules are properly fitted with splines,
molecules can be initialized along each spline at dimeric intervals. The interval can be
described by the polars
expression col('pitch') * 2
, which is evaluated with the
"pitch" value of spline global properties.
ui.infer_polarity(splines="all")
ui.global_cft_analysis(splines="all") # to get lattice pitch
ui.map_along_spline(
splines="all",
molecule_interval="col('pitch') * 2",
prefix="Center",
)
You can further refine the molecules by aligning them to the pre-determined structure of microtubules such as EMD-7974.
Note
The template image must be rotated in the correct direction so that the axis of the template microtubule matches the y-axis.
ui.sta.align_all(
layers=['Center-0'],
template_path="path/to/template.mrc",
mask_params=(0.3, 0.8),
max_shifts=(1.0, 1.0, 1.0),
rotations=((0.0, 0.0), (10.0, 2.0), (0.0, 0.0)),
cutoff=0.2,
)
By the standard subtomogram averaging using
average_all
, you can check if
the alignment was successful.
ui.sta.average_all(layers=['Center-0-ALN1'], size=48.0)
SSTA
Molecules can be grouped by its features. This means that
you can obtain averages for each group of molecules. The grouped averaging is a
generalization of what SSTA supposed to do. What we need here is to correctly label the
molecules for each segment, that is, a column with values like
[0, 0, 0, 1, 1, 1, ..., n-1, n-1, n-1]
is needed supposing that there are n
segments.
Molecules generated by map_along_spline
are already labeled with the nth
column,
which takes the value of [0, 1, ..., N-1]
. Expression col('nth') // Ns
will group
the molecules into segments of Ns
molecules. Since we initialized molecules at dimeric
intervals, the intervals are usually ~8.2 nm. For 100-nm SSTA, the Ns
value should be
\(100 / 8.2 \approx 12\).
ui.sta.average_groups(
layers=['Center-0-ALN1'],
size=48.0,
by="col('nth') // 12",
)