Skip to content

Commit ef04691

Browse files
committed
more doc page updates
1 parent 7121f6b commit ef04691

1 file changed

Lines changed: 41 additions & 15 deletions

File tree

docs/source/orientation_estimation.rst

Lines changed: 41 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -108,12 +108,23 @@ scores such as ``cl_dist`` or ``shifts_1d``. Key behaviors include:
108108
- Shared ``max_shift`` and ``shift_step`` parameters that influence accuracy/runtime
109109
trade-offs during 1D shift searches.
110110

111+
.. mermaid::
112+
113+
classDiagram
114+
class CLMatrixOrient3D{
115+
src: ImageSource
116+
+estimate_rotations()
117+
+estimate_shifts()
118+
+pf
119+
+clmatrix
120+
}
121+
111122
Handedness Synchronization
112123
^^^^^^^^^^^^^^^^^^^^^^^^^^
113124

114-
Many of the commonlines algorithms involve solving for a set of relative rotations between
115-
pairs of estimates. Due to the inherent handedness ambiguity in the cryo-EM problem,
116-
each estimated relative rotation may contain a spurios reflection. These spurious reflections
125+
Many of the common-line algorithms involve solving for a set of relative rotations between
126+
pairs of image orientations. Due to the inherent handedness ambiguity in the cryo-EM problem,
127+
each estimated relative rotation might contain a spurious reflection. These spurious reflections
117128
must be resolved such that all relative rotation estimates either contain a global reflection
118129
or don't before downstream reconstruction. The :mod:`aspire.abinitio.J_sync` module implements a
119130
power-method based handedness synchronization to complete this task.
@@ -127,6 +138,12 @@ power-method based handedness synchronization to complete this task.
127138
- ``CLOrient3D`` subclasses simply import the ``JSync`` module to access handedness
128139
synchronization methods.
129140

141+
Class Hierarchy Overview
142+
^^^^^^^^^^^^^^^^^^^^^^^^
143+
144+
The relationships below show how the concrete solvers inherit shared behaviors (masking, CL matrix
145+
utilities, synchronization helpers) before layering on algorithm-specific logic.
146+
130147
.. mermaid::
131148

132149
classDiagram
@@ -173,18 +190,27 @@ Algorithms for Symmetric Molecules
173190
----------------------------------
174191

175192
Symmetry-aware variants search for multiple common lines per image pair, enforce minimum
176-
angular separation via ``min_dist_cls``, and embed symmetry group constraints while estimating
177-
rotations:
178-
179-
- ``CLSymmetryC2`` and ``CLSymmetryC3C4`` (matrix-based subclasses): These methods extend
180-
the ``clmatrix`` workflow and leverage commonline properties of molecules with cyclic
181-
symmetry to estimate and synchronize rotations.
182-
- ``CLSymmetryCn`` and ``CLSymmetryD2``: These methods derive directly from ``CLOrient3D``
183-
and construct a set of candidate rotations discritized over SO(3) as a search space.
184-
Symmetry properties are leveraged to reduce redundancy over the serach space.
185-
186-
These classes ultimately reuse the same ``estimate_shifts`` implementation once
187-
symmetry-consistent rotations are available.
193+
angular separation (``min_dist_cls`` or ``eq_min_dist``), and embed symmetry group constraints
194+
while estimating rotations:
195+
196+
- ``CLSymmetryC2`` (:file:`src/aspire/abinitio/commonline_c2.py`): Extends ``CLMatrixOrient3D``
197+
to tabulate two mutual common lines per pair, masks neighborhoods around the first detection
198+
with ``min_dist_cls``, scores both blocks through ``_syncmatrix_ij_vote_3n``, and hands the
199+
resulting triplets to ``JSync`` for reflection cleanup.
200+
- ``CLSymmetryC3C4`` (:file:`src/aspire/abinitio/commonline_c3_c4.py`): Targets order-3 and
201+
order-4 cyclic molecules by detecting self-common-lines, forming relative third-row outer
202+
products, running a local/global ``JSync`` pass, then calling ``_estimate_third_rows`` and
203+
``_estimate_inplane_rotations`` to recover full rotations.
204+
- ``CLSymmetryCn`` (:file:`src/aspire/abinitio/commonline_cn.py`): Handles higher-order cyclic
205+
symmetry (n > 4) by generating a discretized set of candidate rotations on the sphere, evaluating
206+
likelihoods of induced common/self-common lines, pruning equatorial degeneracies, and synchronizing
207+
the surviving outer-product blocks before estimating in-plane angles.
208+
- ``CLSymmetryD2`` (:file:`src/aspire/abinitio/commonline_d2.py`): Deals with dihedral symmetry
209+
via a Saff–Kuijlaars sphere grid, equator/top-view filtering, exhaustive lookup tables for
210+
relative rotations, and a color/sign synchronization stage that enforces the ``DnSymmetryGroup``
211+
constraints prior to assigning final rotations.
212+
213+
These classes reuse the ``estimate_shifts`` implementation once symmetry-consistent rotations are available.
188214

189215
Extensibility
190216
-------------

0 commit comments

Comments
 (0)