Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions gallery/tutorials/lecture_feature_demo.py
Original file line number Diff line number Diff line change
Expand Up @@ -42,8 +42,8 @@
from aspire.noise import AnisotropicNoiseEstimator, WhiteNoiseEstimator
from aspire.operators import FunctionFilter, RadialCTFFilter, ScalarFilter
from aspire.source import RelionSource, Simulation
from aspire.utils import Rotation
from aspire.utils.coor_trans import (
from aspire.utils import (
Rotation,
get_aligned_rotations,
get_rots_mse,
register_rotations,
Expand Down
6 changes: 1 addition & 5 deletions gallery/tutorials/orient3d_simulation.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,11 +15,7 @@
from aspire.abinitio import CLSyncVoting
from aspire.operators import RadialCTFFilter
from aspire.source.simulation import Simulation
from aspire.utils.coor_trans import (
get_aligned_rotations,
get_rots_mse,
register_rotations,
)
from aspire.utils import get_aligned_rotations, get_rots_mse, register_rotations
from aspire.volume import Volume

logger = logging.getLogger(__name__)
Expand Down
2 changes: 1 addition & 1 deletion src/aspire/abinitio/commonline_base.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

from aspire.abinitio.orientation_src import OrientEstSource
from aspire.basis import PolarBasis2D
from aspire.utils.coor_trans import common_line_from_rots
from aspire.utils import common_line_from_rots
from aspire.utils.random import choice

logger = logging.getLogger(__name__)
Expand Down
2 changes: 1 addition & 1 deletion src/aspire/basis/basis_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
from numpy.polynomial.legendre import leggauss
from scipy.special import jn, jv, sph_harm

from aspire.utils.coor_trans import grid_2d, grid_3d
from aspire.utils import grid_2d, grid_3d

logger = logging.getLogger(__name__)

Expand Down
3 changes: 1 addition & 2 deletions src/aspire/ctf/ctf_estimator.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,7 @@
from aspire.numeric import fft
from aspire.operators import voltage_to_wavelength
from aspire.storage import StarFile
from aspire.utils import abs2, complex_type
from aspire.utils.coor_trans import grid_1d, grid_2d
from aspire.utils import abs2, complex_type, grid_1d, grid_2d

logger = logging.getLogger(__name__)

Expand Down
2 changes: 1 addition & 1 deletion src/aspire/denoising/adaptive_support.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
from aspire.noise import WhiteNoiseEstimator
from aspire.numeric import fft
from aspire.source import ImageSource
from aspire.utils.coor_trans import grid_2d
from aspire.utils import grid_2d

logger = logging.getLogger(__name__)

Expand Down
2 changes: 1 addition & 1 deletion src/aspire/image/image.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
import aspire.volume
from aspire.nufft import anufft
from aspire.numeric import fft, xp
from aspire.utils.coor_trans import grid_2d
from aspire.utils import grid_2d
from aspire.utils.matrix import anorm

logger = logging.getLogger(__name__)
Expand Down
2 changes: 1 addition & 1 deletion src/aspire/noise/noise.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

from aspire.numeric import fft, xp
from aspire.operators import ArrayFilter, ScalarFilter
from aspire.utils.coor_trans import grid_2d
from aspire.utils import grid_2d

logger = logging.getLogger(__name__)

Expand Down
2 changes: 1 addition & 1 deletion src/aspire/operators/filters.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
import numpy as np
from scipy.interpolate import RegularGridInterpolator

from aspire.utils.coor_trans import grid_2d
from aspire.utils import grid_2d
from aspire.utils.filter_to_fb_mat import filter_to_fb_mat

logger = logging.getLogger(__name__)
Expand Down
3 changes: 1 addition & 2 deletions src/aspire/source/image.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,7 @@
PowerFilter,
)
from aspire.storage import MrcStats, StarFile
from aspire.utils import Rotation
from aspire.utils.coor_trans import grid_2d
from aspire.utils import Rotation, grid_2d

logger = logging.getLogger(__name__)

Expand Down
10 changes: 8 additions & 2 deletions src/aspire/source/simulation.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,14 @@
from aspire.image.xform import NoiseAdder
from aspire.operators import ZeroFilter
from aspire.source import ImageSource
from aspire.utils import acorr, ainner, anorm, make_symmat, vecmat_to_volmat
from aspire.utils.coor_trans import uniform_random_angles
from aspire.utils import (
acorr,
ainner,
anorm,
make_symmat,
uniform_random_angles,
vecmat_to_volmat,
)
from aspire.utils.random import rand, randi, randn
from aspire.volume import Volume, gaussian_blob_vols

Expand Down
22 changes: 20 additions & 2 deletions src/aspire/utils/__init__.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,23 @@
from .misc import abs2, get_full_version, powerset, sha256sum # isort:skip
from .coor_trans import ( # isort:skip
common_line_from_rots,
crop_pad_2d,
get_aligned_rotations,
get_rots_mse,
grid_1d,
grid_2d,
grid_3d,
register_rotations,
uniform_random_angles,
)
from .misc import ( # isort:skip
abs2,
circ,
gaussian_2d,
get_full_version,
inverse_r,
powerset,
sha256sum,
)
from .matrix import (
acorr,
ainner,
Expand All @@ -23,6 +42,5 @@
vol_to_vec,
volmat_to_vecmat,
)
from .misc import circ, gaussian_2d, inverse_r
from .rotation import Rotation
from .types import complex_type, real_type, utest_tolerance
31 changes: 31 additions & 0 deletions src/aspire/utils/coor_trans.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@
General purpose math functions, mostly geometric in nature.
"""

import math

import numpy as np
from numpy.linalg import norm
from scipy.linalg import svd
Expand Down Expand Up @@ -302,3 +304,32 @@ def common_line_from_rots(r1, r2, ell):
ell_ji = int(np.mod(np.round(ell_ji), ell))

return ell_ij, ell_ji


def crop_pad_2d(im, size, fill_value=0):
"""
:param im: A 2-dimensional numpy array
:param size: Integer size of cropped/padded output
:return: A numpy array of shape (size, size)
"""

im_y, im_x = im.shape
# shift terms
start_x = math.floor(im_x / 2) - math.floor(size / 2)
start_y = math.floor(im_y / 2) - math.floor(size / 2)

# cropping
if size <= min(im_y, im_x):
return im[start_y : start_y + size, start_x : start_x + size]
# padding
elif size >= max(im_y, im_x):
# ensure that we return in the same dtype as the input
to_return = fill_value * np.ones((size, size), dtype=im.dtype)
# when padding, start_x and start_y are negative since size is larger
# than im_x and im_y; the below line calculates where the original image
# is placed in relation to the (now-larger) box size
to_return[-start_y : im_y - start_y, -start_x : im_x - start_x] = im
return to_return
else:
# target size is between mat_x and mat_y
raise ValueError("Cannot crop and pad an image at the same time.")
2 changes: 1 addition & 1 deletion src/aspire/utils/misc.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@

import numpy as np

from aspire.utils.coor_trans import grid_1d, grid_2d, grid_3d
from aspire.utils import grid_1d, grid_2d, grid_3d

logger = logging.getLogger(__name__)

Expand Down
3 changes: 1 addition & 2 deletions src/aspire/volume/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,7 @@
import aspire.image
from aspire.nufft import nufft
from aspire.numeric import fft, xp
from aspire.utils import Rotation, mat_to_vec, vec_to_mat
from aspire.utils.coor_trans import grid_2d, grid_3d
from aspire.utils import Rotation, grid_2d, grid_3d, mat_to_vec, vec_to_mat
from aspire.utils.matlab_compat import m_reshape
from aspire.utils.random import Random, randn
from aspire.utils.types import complex_type
Expand Down
Loading