@@ -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+
111122Handedness 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
117128must be resolved such that all relative rotation estimates either contain a global reflection
118129or don't before downstream reconstruction. The :mod: `aspire.abinitio.J_sync ` module implements a
119130power-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
175192Symmetry-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
189215Extensibility
190216-------------
0 commit comments