diff --git a/src/aspire/abinitio/commonline_base.py b/src/aspire/abinitio/commonline_base.py index e3d8fa50db..3a7d57252d 100644 --- a/src/aspire/abinitio/commonline_base.py +++ b/src/aspire/abinitio/commonline_base.py @@ -4,6 +4,7 @@ import numpy as np import scipy.sparse as sparse +from aspire.image import Image from aspire.operators import PolarFT from aspire.utils import common_line_from_rots, fuzzy_mask, tqdm from aspire.utils.random import choice @@ -91,8 +92,14 @@ def _prepare_pf(self): imgs = self.src.images[:] if self.mask: - fuzz_mask = fuzzy_mask((self.n_res, self.n_res), self.dtype) + # For best results and to reproduce MATLAB: + # Set risetime=2 + # Always compute mask (erf) in doubles. + fuzz_mask = fuzzy_mask((self.n_res, self.n_res), np.float64, risetime=2) + # Apply mask in doubles (allow imgs to upcast as needed) imgs = imgs * fuzz_mask + # Cast to desired type + imgs = Image(imgs.asnumpy().astype(self.dtype, copy=False)) # Obtain coefficients of polar Fourier transform for input 2D images pft = PolarFT(