aspire.ctf package¶
Submodules¶
aspire.ctf.ctf_estimator module¶
Contains code supporting CTF parameter estimation. Generally, this is a port of ASPIRE-CTF from MATLAB.
See paper:
“Reducing bias and variance for CTF estimation in single particle cryo-EM”Ayelet Heimowitz, Joakim Andén, Amit SingerUltramicroscopy, Volume 212, 2020
Note:
CtfEstimator computes the background as a monotonically decreasing
function of spatial frequency. This practice may lead to an inaccurate
background estimation for experimental images produced using a K2
camera in counting mode, as the background in this case is not
monotonically decreasing. Despite this, CTF parameters are captured
successfully in such situations.
Created on Sep 10, 2019 @author: Ayelet Heimowitz, Amit Moscovich
Integrated into ASPIRE-Python by Garrett Wright Feb 2021.
- class aspire.ctf.ctf_estimator.CtfEstimator(pixel_size, cs, amplitude_contrast, voltage, psd_size, num_tapers, dtype=<class 'numpy.float32'>)¶
- Bases: - object- CtfEstimator Class … - Instantiate a CtfEstimator instance. - Parameters:
- pixel_size – Size of the pixel in Å (angstrom). 
- cs – Spherical aberration in mm. 
- amplitude_contrast – Amplitude contrast. 
- voltage – Voltage of electron microscope. 
- psd_size – Block size (in pixels) for PSD estimation. 
- num_tapers – Number of tapers to apply in PSD estimation. 
 
- Returns:
- CtfEstimator instance. 
 - background_subtract_1d(amplitude_spectrum, linprog_method='highs', n_low_freq_cutoffs=14)¶
- Estimate and subtract the background from the power spectrum - Parameters:
- amplitude_spectrum – Estimated power spectrum 
- linprog_method – Method passed to linear program solver (scipy.optimize.linprog). 
- n_low_freq_cutoffs – Low frequency cutoffs (loop iterations). 
 
- Returns:
- 2-tuple of NumPy arrays (PSD after noise subtraction and estimated noise) 
 
 - background_subtract_2d(signal, background_p1, max_col)¶
- Subtract background from estimated power spectrum - Parameters:
- signal – Estimated power spectrum 
- background_p1 – 1-D background estimation 
- max_col – Internal variable, returned as the second parameter from opt1d. 
 
- Returns:
- 2-tuple of NumPy arrays (Estimated PSD without noise and estimated noise). 
 
 - elliptical_average(ffbbasis, amplitude_spectrum, circular)¶
- Computes radial/elliptical average of the power spectrum - Parameters:
- ffbbasis – FFBBasis instance. 
- amplitude_spectrum – Power spectrum. 
- circular – True for radial averaging and False for elliptical averaging. 
 
- Returns:
- PSD and noise as 2-tuple of NumPy arrays. 
 
 - estimate_psd(blocks, tapers_1d)¶
- Estimate the power spectrum of the micrograph using the multi-taper method - Parameters:
- blocks – 3-D NumPy array containing windows extracted from the micrograph in the preprocess function. 
- tapers_1d – NumPy array of data tapers. 
 
- Returns:
- NumPy array of estimated power spectrum. 
 
 - gd(signal, df1, df2, angle_ast, r, theta, pixel_size, g_min, g_max, amplitude_contrast, lmbd, cs)¶
- Runs gradient ascent to optimize defocus parameters - Parameters:
- signal – Estimated power spectrum 
- df1 – Defocus value in the direction perpendicular to df2. 
- df2 – Defocus value in the direction perpendicular to df1. 
- angle_ast – Angle between df1 and the x-axis, Radians. 
- r – Magnitude of spatial frequencies. 
- theta – Phase of spatial frequencies. 
- pixel_size – Pixel size in Å (angstrom). 
- g_min – Inverse of minimun resolution for PSD. 
- g_max – Inverse of maximum resolution for PSD. 
- amplitude_contrast – Amplitude contrast. 
- lmbd – Electron wavelength Å (angstrom). 
- cs – Spherical aberration in mm. 
 
- Returns:
- Optimal defocus parameters 
 
 - generate_ctf()¶
- Generates internal representation of the Contrast Transfer Function using parameters from this instance. 
 - micrograph_to_blocks(micrograph, block_size)¶
- Preprocess micrograph into blocks using block_size. - Parameters:
- micrograph – Micrograph as NumPy array. #NOTE looks like F order 
- blocksize – Size of the square blocks to partition micrograph. 
 
- Returns:
- NumPy array of blocks extracted from the micrograph. 
 
 - normalize_blocks(blocks)¶
- Preprocess CTF of micrograph using block_size. - Parameters:
- blocks – NumPy array of blocks extracted from the micrograph. 
- Returns:
- NumPy array of normalized blocks. 
 
 - opt1d(amplitude_spectrum, pixel_size, cs, lmbd, w, N, min_defocus=500, max_defocus=10000)¶
- Find optimal defocus for the radially symmetric case (where no astigmatism is present) - Parameters:
- amplitude_spectrum – Estimated power specrtum. 
- pixel_size – Pixel size in Å (angstrom). 
- cs – Spherical aberration in mm. 
- lmbd – Electron wavelength Å (angstrom). 
- w – Amplitude contrast. 
- N – Number of rows (or columns) in the estimate power spectrum. 
- min_defocus – Start of defocus loop scan. 
- max_defocus – End of defocus loop scan. 
 
- Returns:
- 2-tuple of NumPy arrays (Estimated average of defocus and low_freq_cutoff) 
 
 - pca(signal, pixel_size, g_min, g_max)¶
- Parameters:
- signal – Estimated power spectrum. 
- pixel_size – Pixel size in Å (angstrom). 
- g_min – Inverse of minimun resolution for PSD. 
- g_max – Inverse of maximum resolution for PSD. 
 
- Returns:
- ratio. 
 
 - preprocess_micrograph(micrograph, block_size)¶
- Preprocess micrograph into normalized blocks using block_size. - Parameters:
- micrograph – Micrograph as NumPy array. #NOTE looks like F order 
- blocksize – Size of the square blocks to partition micrograph. 
 
- Returns:
- NumPy array of normalized blocks extracted from the micrograph. 
 
 - set_angle(angle)¶
- Sets angle. - Parameters:
- angle – Angle (in Radians) between df1 and the x-axis. 
 
 - set_df1(df)¶
- Sets defocus. - Parameters:
- df – Defocus value in the direction perpendicular to df2. 
 
 - set_df2(df)¶
- Sets defocus. - Parameters:
- df – Defocus value in the direction perpendicular to df1. 
 
 - tapers(N, NW, L)¶
- Compute data tapers (which are discrete prolate spheroidal sequences (dpss)) - Uses scipy implementation, see:
- https://docs.scipy.org/doc/scipy/reference/generated/scipy.signal.windows.dpss.html 
 - Parameters:
- N – Size of each taper 
- NW – Half Bandwidth 
- L – Number of tapers 
 
- Returns:
- NumPy array of data tapers 
 
 - write_star(name, params_dict, output_dir)¶
- Writes CTF parameters to starfile for a single micrograph. 
 
- aspire.ctf.ctf_estimator.estimate_ctf(data_folder, pixel_size=1.0, cs=2.0, amplitude_contrast=0.07, voltage=300, num_tapers=2, psd_size=512, g_min=30, g_max=5, output_dir='results', dtype=<class 'numpy.float32'>, save_ctf_images=False, save_noise_images=False)¶
- Given paramaters estimates CTF from experimental data and returns CTF as a mrc file.