aspire.abinitio package

Submodules

aspire.abinitio.commonline_base module

class aspire.abinitio.commonline_base.CLOrient3D(src, n_rad=None, n_theta=360, n_check=None, hist_bin_width=3, full_width=6, max_shift=0.15, shift_step=1, mask=True)

Bases: object

Define a base class for estimating 3D orientations using common lines methods

Initialize an object for estimating 3D orientations using common lines.

Parameters:
  • src – The source object of 2D denoised or class-averaged images.

  • n_rad – The number of points in the radial direction. If None, n_rad will default to the ceiling of half the resolution of the source.

  • n_theta – The number of points in the theta direction. This value must be even. Default is 360.

  • n_check – For each image/projection find its common-lines with n_check images. If n_check is less than the total number of images, a random subset of n_check images is used.

  • max_shift – Determines maximum range for shifts as a proportion of the resolution. Default is 0.15.

  • shift_step – Resolution of shift estimation in pixels. Default is 1 pixel.

  • hist_bin_width – Bin width in smoothing histogram (degrees).

  • full_width – Selection width around smoothed histogram peak (degrees). adaptive will attempt to automatically find the smallest number of `hist_bin_width`s required to find at least one valid image index.

  • mask – Option to mask src.images with a fuzzy mask (boolean). Default, True, applies a mask.

build_clmatrix()

Build common-lines matrix from Fourier stack of 2D images

estimate_rotations()

Estimate orientation matrices for all 2D images

Subclasses should implement this function.

estimate_shifts(equations_factor=1, max_memory=4000)

Estimate 2D shifts in images

This function computes 2D shifts in x, y of images by solving the least-squares equations to Ax = b. A on the left-hand side is a sparse matrix representing precomputed coefficients of shift equations; and on the right-side, b is estimated 1D shifts along the theta direction between two Fourier rays (one in image i and the other in image j). Each row of shift equations contains four unknowns, shifts in x, y for a pair of images. The detailed implementation can be found in the book chapter as below: Y. Shkolnisky and A. Singer, Center of Mass Operators for Cryo-EM - Theory and Implementation, Modeling Nanoscale Imaging in Electron Microscopy, T. Vogt, W. Dahmen, and P. Binev (Eds.) Nanostructure Science and Technology Series, Springer, 2012, pp. 147–177

Parameters:
  • equations_factor – The factor to rescale the number of shift equations (=1 in default)

  • max_memory – If there are N images and N_check selected to check for common lines, then the exact system of equations solved for the shifts is of size 2N x N(N_check-1)/2 (2N unknowns and N(N_check-1)/2 equations). This may be too big if N is large. The algorithm will use equations_factor times the total number of equations if the resulting total number of memory requirements is less than max_memory (in megabytes); otherwise it will reduce the number of equations by approximation to fit in max_memory.

property pf

aspire.abinitio.commonline_c2 module

class aspire.abinitio.commonline_c2.CLSymmetryC2(src, n_rad=None, n_theta=None, max_shift=0.15, shift_step=1, epsilon=0.001, max_iters=1000, degree_res=1, min_dist_cls=25, seed=None, mask=True)

Bases: CLSymmetryC3C4

Define a class to estimate 3D orientations using common lines methods for molecules with C2 cyclic symmetry.

The related publications are listed below: X. Cheng, Random Matrices in High-dimensional Data Analysis, PhD thesis, Princeton University, (2013).

G. Pragier and Y. Shkolnisky, A Common Lines Approach for Abinitio Modeling of Cyclically Symmetric Molecules, Inverse Problems, 35, 124005, (2019).

Y. Shkolnisky, and A. Singer, Viewing Direction Estimation in Cryo-EM Using Synchronization, SIAM J. Imaging Sciences, 5, 1088-1110 (2012).

A. Singer, R. R. Coifman, F. J. Sigworth, D. W. Chester, Y. Shkolnisky, Detecting Consistent Common Lines in Cryo-EM by Voting, Journal of Structural Biology, 169, 312-322 (2010).

Initialize object for estimating 3D orientations for molecules with C2 symmetry.

Parameters:
  • src – The source object of 2D denoised or class-averaged images with metadata

  • n_rad – The number of points in the radial direction

  • n_theta – The number of points in the theta direction

  • max_shift – Maximum range for shifts as a proportion of resolution. Default = 0.15.

  • shift_step – Resolution of shift estimation in pixels. Default = 1 pixel.

  • epsilon – Tolerance for the power method.

  • max_iter – Maximum iterations for the power method.

  • degree_res – Degree resolution for estimating in-plane rotations.

  • min_dist_cls – Minimum distance between mutual common-lines. Default = 25 degrees.

  • seed – Optional seed for RNG.

  • mask – Option to mask src.images with a fuzzy mask (boolean). Default, True, applies a mask.

build_clmatrix()

Build common-lines matrix for molecules with C2 symmetry from Fourier stack of 2D images. This consists of finding for each pair of images the two common-lines induced by the 2-fold symmetry.

estimate_rotations()

Estimate rotation matrices for molecules with C2 symmetry.

aspire.abinitio.commonline_c3_c4 module

class aspire.abinitio.commonline_c3_c4.CLSymmetryC3C4(src, symmetry=None, n_rad=None, n_theta=None, max_shift=0.15, shift_step=1, epsilon=0.01, max_iters=1000, degree_res=1, seed=None, mask=True)

Bases: CLOrient3D, SyncVotingMixin

Define a class to estimate 3D orientations using common lines methods for molecules with C3 and C4 cyclic symmetry.

The related publications are listed below: G. Pragier and Y. Shkolnisky, A Common Lines Approach for Abinitio Modeling of Cyclically Symmetric Molecules, Inverse Problems, 35, 124005, (2019).

Y. Shkolnisky, and A. Singer, Viewing Direction Estimation in Cryo-EM Using Synchronization, SIAM J. Imaging Sciences, 5, 1088-1110 (2012).

A. Singer, R. R. Coifman, F. J. Sigworth, D. W. Chester, Y. Shkolnisky, Detecting Consistent Common Lines in Cryo-EM by Voting, Journal of Structural Biology, 169, 312-322 (2010).

Initialize object for estimating 3D orientations for molecules with C3 and C4 symmetry.

Parameters:
  • src – The source object of 2D denoised or class-averaged images with metadata

  • symmetry – A string, ‘C3’ or ‘C4’, indicating the symmetry type.

  • n_rad – The number of points in the radial direction

  • n_theta – The number of points in the theta direction

  • max_shift – Maximum range for shifts as a proportion of resolution. Default = 0.15.

  • shift_step – Resolution of shift estimation in pixels. Default = 1 pixel.

  • epsilon – Tolerance for the power method.

  • max_iter – Maximum iterations for the power method.

  • degree_res – Degree resolution for estimating in-plane rotations.

  • seed – Optional seed for RNG.

  • mask – Option to mask src.images with a fuzzy mask (boolean). Default, True, applies a mask.

static cl_angles_to_ind(cl_angles, n_theta)
estimate_rotations()

Estimate rotation matrices for molecules with C3 or C4 symmetry.

Returns:

Array of rotation matrices, size n_imgx3x3.

static g_sync(rots, order, rots_gt)

Every estimated rotation might be a version of the ground truth rotation rotated by g^{s_i}, where s_i = 0, 1, …, order. This method synchronizes the ground truth rotations so that only a single global rotation need be applied to all estimates for error analysis.

Parameters:
  • rots – Estimated rotation matrices

  • order – The cyclic order asssociated with the symmetry of the underlying molecule.

  • rots_gt – Ground truth rotation matrices.

Returns:

g-synchronized ground truth rotations.

aspire.abinitio.commonline_cn module

class aspire.abinitio.commonline_cn.CLSymmetryCn(src, symmetry=None, n_rad=None, n_theta=None, max_shift=0.15, shift_step=1, epsilon=0.001, max_iters=1000, degree_res=1, n_points_sphere=500, equator_threshold=10, seed=None, mask=True)

Bases: CLSymmetryC3C4

Define a class to estimate 3D orientations using common lines methods for molecules with Cn cyclic symmetry, with n>4.

Initialize object for estimating 3D orientations for molecules with Cn symmetry, n>4.

Parameters:
  • src – The source object of 2D denoised or class-averaged images with metadata

  • symmetry – A string, ‘Cn’, indicating the symmetry type.

  • n_rad – The number of points in the radial direction.

  • n_theta – The number of points in the theta direction.

  • max_shift – Maximum range for shifts as a proportion of resolution. Default = 0.15.

  • shift_step – Resolution of shift estimation in pixels. Default = 1 pixel.

  • epsilon – Tolerance for the power method.

  • max_iter – Maximum iterations for the power method.

  • degree_res – Degree resolution for estimating in-plane rotations.

  • n_points_sphere – The number of candidate rotations used to estimate viewing directions.

  • equator_threshold – Threshold for removing candidate rotations within equator_threshold degrees of being an equator image. Default is 10 degrees.

  • seed – Optional seed for RNG.

  • mask – Option to mask src.images with a fuzzy mask (boolean). Default, True, applies a mask.

estimate_rotations()

Estimate rotation matrices for molecules with Cn symmetry, n > 4.

Returns:

Array of rotation matrices, size n_imgx3x3.

static generate_candidate_rots(n, equator_threshold, order, degree_res, seed)

Generate random rotations that exclude rotations inducing equator images for use as candidates in the CLSymmetryCn algorithm.

Parameters:
  • n – Number of rotations to generate.

  • equator_threshold – Angular distance from equator (in degrees).

  • order – Cyclic order of underlying molecule.

  • degree_res – Degree resolution for in-plane rotations.

  • seed – Random seed.

Returns:

Candidate rotations, In-plane rotations

static relative_rots_to_cl_indices(relative_rots, n_theta)

Given a set of relative rotations between pairs of images produce the common-line indices for each pair.

Parameters:
  • relative_rots – The n x 3 x 3 relative rotations between pairs of images.

  • n_theta – The theta resolution for common-line indices.

Returns:

Common-line indices c1s, c2s each length n.

class aspire.abinitio.commonline_cn.MeanOuterProductEstimator

Bases: object

Incrementally accumulate outer product entries of unknown conjugation.

dtype

alias of float64

push(V)

Given V, accumulate entries into a running sum of J-synchronized entries.

synchronized_mean()

Calculate the mean of synchronized outer product estimates.

aspire.abinitio.commonline_d2 module

class aspire.abinitio.commonline_d2.CLSymmetryD2(src, n_rad=None, n_theta=None, max_shift=0.15, shift_step=1, grid_res=1200, inplane_res=5, eq_min_dist=7, epsilon=0.01, seed=None, mask=True)

Bases: CLOrient3D

Define a class to estimate 3D orientations using common lines methods for molecules with D2 (dihedral) symmetry.

Corresponding publication: E. Rosen and Y. Shkolnisky, Common lines ab-initio reconstruction of D2-symmetric molecules, SIAM Journal on Imaging Sciences, volume 13-4, p. 1898-1994, 2020

Initialize object for estimating 3D orientations for molecules with D2 symmetry.

Parameters:
  • src – The source object of 2D denoised or class-averaged images with metadata

  • n_rad – The number of points in the radial direction of Fourier image.

  • n_theta – The number of points in the theta direction of Fourier image.

  • max_shift – Maximum range for shifts as a proportion of resolution. Default = 0.15.

  • shift_step – Resolution of shift estimation in pixels. Default = 1 pixel.

  • grid_res – Number of sampling points on sphere for projetion directions. These are generated using the Saaf-Kuijlaars algorithm. Default value is 1200.

  • inplane_res – The sampling resolution of in-plane rotations for each projection direction. Default value is 5 degrees.

  • eq_min_dist – Width of strip around equator projection directions from which we do not sample directions. Default value is 7 degrees.

  • epsilon – Tolerance for J-synchronization power method.

  • seed – Optional seed for RNG.

  • mask – Option to mask src.images with a fuzzy mask (boolean). Default, True, applies a mask.

estimate_rotations()

Estimate rotation matrices for molecules with D2 symmetry. Sets the attribute self.rotations with an array of estimated rotation matrices, size src.nx3x3.

aspire.abinitio.commonline_ev module

class aspire.abinitio.commonline_ev.CommLineEV(src)

Bases: CLOrient3D

Class to estimate 3D orientations using Eigenvector method [SS11]

constructor of an object for estimating 3D orientations

estimate()

perform estimation of orientations

output()

Output the 3D orientations

aspire.abinitio.commonline_gcar module

class aspire.abinitio.commonline_gcar.CommLineGCAR(src)

Bases: CLOrient3D

Define a derived class to estimate 3D orientations using Globally Consistent Angular Reconstitution described as below: R. Coifman, Y. Shkolnisky, F. J. Sigworth, and A. Singer, Reference Free Structure Determination through Eigenvestors of Center of Mass Operators, Applied and Computational Harmonic Analysis, 28, 296-312 (2010).

constructor of an object for estimating 3D oreintations

estimate()

perform estimation of orientations

output()

Output the 3D orientations

aspire.abinitio.commonline_lud module

class aspire.abinitio.commonline_lud.CommLineLUD(src)

Bases: CLOrient3D

Define a derived class to estimate 3D orientations using Least Unsquared Deviations described as below: L. Wang, A. Singer, and Z. Wen, Orientation Determination of Cryo-EM Images Using Least Unsquared Deviations, SIAM J. Imaging Sciences, 6, 2450-2483 (2013).

constructor of an object for estimating 3D orientations

estimate()

perform estimation of orientations

output()

Output the 3D orientations

aspire.abinitio.commonline_sdp module

class aspire.abinitio.commonline_sdp.CommonlineSDP(src, n_rad=None, n_theta=360, n_check=None, hist_bin_width=3, full_width=6, max_shift=0.15, shift_step=1, mask=True)

Bases: CLOrient3D

Class to estimate 3D orientations using semi-definite programming.

See the following publication for more details:

A. Singer and Y. Shkolnisky, “Three-Dimensional Structure Determination from Common Lines in Cryo-EM

by Eigenvectors and Semidefinite Programming”

SIAM J. Imaging Sciences, Vol. 4, No. 2, (2011): 543-572. doi:10.1137/090767777

Initialize an object for estimating 3D orientations using common lines.

Parameters:
  • src – The source object of 2D denoised or class-averaged images.

  • n_rad – The number of points in the radial direction. If None, n_rad will default to the ceiling of half the resolution of the source.

  • n_theta – The number of points in the theta direction. This value must be even. Default is 360.

  • n_check – For each image/projection find its common-lines with n_check images. If n_check is less than the total number of images, a random subset of n_check images is used.

  • max_shift – Determines maximum range for shifts as a proportion of the resolution. Default is 0.15.

  • shift_step – Resolution of shift estimation in pixels. Default is 1 pixel.

  • hist_bin_width – Bin width in smoothing histogram (degrees).

  • full_width – Selection width around smoothed histogram peak (degrees). adaptive will attempt to automatically find the smallest number of `hist_bin_width`s required to find at least one valid image index.

  • mask – Option to mask src.images with a fuzzy mask (boolean). Default, True, applies a mask.

estimate_rotations()

Estimate rotation matrices using the common lines method with semi-definite programming.

aspire.abinitio.commonline_sync module

class aspire.abinitio.commonline_sync.CLSyncVoting(src, n_rad=None, n_theta=360, max_shift=0.15, shift_step=1, hist_bin_width=3, full_width=6, mask=True)

Bases: CLOrient3D, SyncVotingMixin

Define a class to estimate 3D orientations using synchronization matrix and voting method.

The related publications are listed as below: Y. Shkolnisky, and A. Singer, Viewing Direction Estimation in Cryo-EM Using Synchronization, SIAM J. Imaging Sciences, 5, 1088-1110 (2012).

A. Singer, R. R. Coifman, F. J. Sigworth, D. W. Chester, Y. Shkolnisky, Detecting Consistent Common Lines in Cryo-EM by Voting, Journal of Structural Biology, 169, 312-322 (2010).

Initialize an object for estimating 3D orientations using synchronization matrix

Parameters:
  • src – The source object of 2D denoised or class-averaged images with metadata

  • n_rad – The number of points in the radial direction

  • n_theta – The number of points in the theta direction. Default is 360.

  • max_shift – Determines maximum range for shifts as a proportion of the resolution. Default is 0.15.

  • shift_step – Resolution for shift estimation in pixels. Default is 1 pixel.

  • hist_bin_width – Bin width in smoothing histogram (degrees).

  • full_width – Selection width around smoothed histogram peak (degrees). adaptive will attempt to automatically find the smallest number of `hist_bin_width`s required to find at least one valid image index.

  • mask – Option to mask src.images with a fuzzy mask (boolean). Default, True, applies a mask.

estimate_rotations()

Estimate orientation matrices for all 2D images using synchronization matrix

syncmatrix_vote()

Construct the synchronization matrix using voting method

A pre-computed common line matrix is required as input.

aspire.abinitio.commonline_sync3n module

class aspire.abinitio.commonline_sync3n.CLSync3N(src, n_rad=None, n_theta=360, max_shift=0.15, shift_step=1, hist_bin_width=1, full_width='adaptive', epsilon=0.01, max_iters=1000, seed=None, mask=True, S_weighting=False, J_weighting=False, hist_intervals=100, disable_gpu=False)

Bases: CLOrient3D, SyncVotingMixin

Define a class to estimate 3D orientations using common lines Sync3N methods (2017).

Ido Greenberg, Yoel Shkolnisky, Common lines modeling for reference free Ab-initio reconstruction in cryo-EM, Journal of Structural Biology, Volume 200, Issue 2, 2017, Pages 106-117, ISSN 1047-8477, https://doi.org/10.1016/j.jsb.2017.09.007.

Initialize object for estimating 3D orientations.

Parameters:
  • src – The source object of 2D denoised or class-averaged images with metadata

  • n_rad – The number of points in the radial direction

  • n_theta – The number of points in the theta direction

  • max_shift – Maximum range for shifts as a proportion of box size. Default = 0.15.

  • shift_step – Step size of shift estimation in pixels. Default = 1 pixel.

  • hist_bin_width – Bin width in smoothing histogram (degrees).

  • full_width – Selection width around smoothed histogram peak (degrees). adaptive will attempt to automatically find the smallest number of `hist_bin_width`s required to find at least one valid image index.

  • epsilon – Tolerance for the power method.

  • max_iter – Maximum iterations for the power method.

  • seed – Optional seed for RNG.

  • mask – Option to mask src.images with a fuzzy mask (boolean). Default, True, applies a mask.

  • S_weighting – Optionally apply probabilistic weighting to the S matrix.

  • J_weighting – Optionally use J weights instead of signs when computing signs_times_v.

  • hist_intervals – Number of histogram bins used to compute triangle scores when S_weighting enabled.

  • disable_gpu – Disables GPU acceleration; forces CPU only code for this module. Defaults to automatically using GPU when available.

estimate_rotations()

Estimate rotation matrices.

Returns:

Array of rotation matrices, size n_imgx3x3.

aspire.abinitio.sync_voting module

class aspire.abinitio.sync_voting.SyncVotingMixin

Bases: object

SyncVotingMixin is a mixin implementing methods for the synchronization voting algorithm which are shared by CLSynVoting and CLSymmetryC3C4

Module contents