Skip to content

Commit

Permalink
Merge pull request #898 from CSSFrancis
Browse files Browse the repository at this point in the history
Merging smaller changes that where originally in RNM
  • Loading branch information
pc494 committed Jan 19, 2023
2 parents 5456873 + 2cad5b1 commit 03760fb
Show file tree
Hide file tree
Showing 24 changed files with 727 additions and 477 deletions.
7 changes: 7 additions & 0 deletions CHANGELOG.rst
Expand Up @@ -7,6 +7,7 @@ All notable changes to this project will be documented in this file.
The format is based on `Keep a Changelog <https://keepachangelog.com/en/1.0.0/>`_,
and this project adheres to `Semantic Versioning <https://semver.org/spec/v2.0.0.html>`_.


Unreleased
==========

Expand All @@ -15,10 +16,16 @@ Added
- Added damp_extrapolate_to_zero to ReducedIntensity1D
- Added in deprecation wrapper class to wrap deprecated functions in pyxem.
- Center-of-mass algorithm added to get_direct_beam_position (#845)
- Added `VectorSignal1D` class to handle 1 dimensional signals

Changed
-------
- Sklearn is now required to be on the 1.0 series.
- Changed `set_signal_dimension` to `Hyperspy.signals.BaseSignal.transpose`
- Moved code from `VectorSignal` to `VectorSignal2D`. Change is more inline with stated dimensions
- Fixed bugs resulting from API change in hyperspy/hyperspy#3045. Markers explicitly initialized
- DiffractionVectors.get_diffraction_pixels_map returns a ragged signal
- VirtualDarkFieldImage.get_vdf_segment changed to properly handle setting of axes

Fixed
-----
Expand Down
5 changes: 4 additions & 1 deletion pyxem/generators/indexation_generator.py
Expand Up @@ -122,7 +122,10 @@ def __init__(self, signal, diffraction_library):
self.library = diffraction_library

def correlate(
self, n_largest=5, include_phases=None, **kwargs,
self,
n_largest=5,
include_phases=None,
**kwargs,
):
"""
Correlates the library of simulated diffraction patterns with the
Expand Down
2 changes: 1 addition & 1 deletion pyxem/generators/integration_generator.py
Expand Up @@ -238,7 +238,7 @@ def extract_intensities(self, radius: int = 1):
)

intensities = BaseSignal(intensities)
intensities.axes_manager.set_signal_dimension(0)
intensities = intensities.transpose(0)

return intensities

Expand Down
8 changes: 7 additions & 1 deletion pyxem/hyperspy_extension.yaml
Expand Up @@ -83,12 +83,18 @@ signals:
dtype: real
lazy: False
module: pyxem.signals.diffraction_vectors
DiffractionVectors1D:
signal_type: diffraction_vectors
signal_dimension: 1
dtype: real
lazy: False
module: pyxem.signals.diffraction_vectors1d
DiffractionVectors2D:
signal_type: diffraction_vectors
signal_dimension: 2
dtype: real
lazy: False
module: pyxem.signals.diffraction_vectors
module: pyxem.signals.diffraction_vectors2d
VectorMatchingResults:
signal_type: vector_matching
signal_dimension: 0
Expand Down
5 changes: 4 additions & 1 deletion pyxem/signals/__init__.py
Expand Up @@ -31,7 +31,9 @@
)
from .diffraction_variance1d import DiffractionVariance1D
from .diffraction_variance2d import DiffractionVariance2D, ImageVariance
from .diffraction_vectors import DiffractionVectors, DiffractionVectors2D
from .diffraction_vectors import DiffractionVectors
from .diffraction_vectors2d import DiffractionVectors2D
from .diffraction_vectors1d import DiffractionVectors1D
from .diffraction1d import Diffraction1D, LazyDiffraction1D
from .diffraction2d import Diffraction2D, LazyDiffraction2D
from .electron_diffraction1d import ElectronDiffraction1D, LazyElectronDiffraction1D
Expand Down Expand Up @@ -64,6 +66,7 @@
"DiffractionVariance2D",
"ImageVariance",
"DiffractionVectors",
"DiffractionVectors1D",
"DiffractionVectors2D",
"Diffraction1D",
"LazyDiffraction1D",
Expand Down
48 changes: 24 additions & 24 deletions pyxem/signals/diffraction2d.py
Expand Up @@ -283,7 +283,6 @@ def flip_diffraction_x(self):
"""
s_out = self.copy()
s_out.axes_manager = self.axes_manager.deepcopy()
s_out.metadata = self.metadata.deepcopy()
s_out.data = np.flip(self.data, axis=-1)
return s_out

Expand Down Expand Up @@ -314,7 +313,6 @@ def flip_diffraction_y(self):
"""
s_out = self.copy()
s_out.axes_manager = self.axes_manager.deepcopy()
s_out.metadata = self.metadata.deepcopy()
s_out.data = np.flip(self.data, axis=-2)
return s_out

Expand Down Expand Up @@ -615,10 +613,9 @@ def correct_bad_pixels(

""" Direct beam and peak finding tools """

def get_direct_beam_position(self, method,
lazy_output=None,
signal_slice=None,
**kwargs):
def get_direct_beam_position(
self, method, lazy_output=None, signal_slice=None, **kwargs
):
"""Estimate the direct beam position in each experimentally acquired
electron diffraction pattern.
Expand Down Expand Up @@ -722,17 +719,18 @@ def get_direct_beam_position(self, method,
x = x - signal_slice[0]
y = y - signal_slice[1]
kwargs["mask"] = (x, y, r)
centers = signal.center_of_mass(lazy_result=lazy_output,
show_progressbar=False,
**kwargs,
)
centers = signal.center_of_mass(
lazy_result=lazy_output,
show_progressbar=False,
**kwargs,
)
shifts = -centers.T + origin_coordinates

if signal_slice is not None:
shifted_center = [(low_x + high_x) / 2, (low_y + high_y) / 2]
unshifted_center = np.array(self.axes_manager.signal_shape) / 2
shift = np.subtract(unshifted_center, shifted_center)
shifts = shifts+shift
shifts = shifts + shift

shifts.set_signal_type("beam_shift")

Expand Down Expand Up @@ -836,9 +834,9 @@ def center_direct_beam(
max_y = int(signal_center[1] + half_square_width)
sig_slice = (min_x, max_x, min_y, max_y)
kwargs["signal_slice"] = sig_slice
shifts = self.get_direct_beam_position(method=method,
lazy_output=lazy_output,
**kwargs)
shifts = self.get_direct_beam_position(
method=method, lazy_output=lazy_output, **kwargs
)
if "order" not in align_kwargs:
if subpixel:
align_kwargs["order"] = 1
Expand Down Expand Up @@ -912,7 +910,9 @@ def threshold_and_mask(self, threshold=None, mask=None, show_progressbar=True):
)
return s_out

@deprecated_argument(since="0.15.0", name="lazy_result", alternative="lazy_output", removal="1.00.0")
@deprecated_argument(
since="0.15.0", name="lazy_result", alternative="lazy_output", removal="1.00.0"
)
def center_of_mass(
self,
threshold=None,
Expand Down Expand Up @@ -1597,25 +1597,25 @@ def get_variance(
if method == "Omega":
one_d_integration = self.get_azimuthal_integral1d(npt=npt, **kwargs)
variance = (
(one_d_integration ** 2).mean(axis=navigation_axes)
(one_d_integration**2).mean(axis=navigation_axes)
/ one_d_integration.mean(axis=navigation_axes) ** 2
) - 1
if dqe is not None:
sum_points = self.get_azimuthal_integral1d(
npt=npt, sum=True, **kwargs
).mean(axis=navigation_axes)
variance = variance - ((sum_points ** -1) * dqe)
variance = variance - ((sum_points**-1) * dqe)

elif method == "r":
one_d_integration = self.get_azimuthal_integral1d(npt=npt, **kwargs)
integration_squared = (self ** 2).get_azimuthal_integral1d(
integration_squared = (self**2).get_azimuthal_integral1d(
npt=npt, **kwargs
)
# Full variance is the same as the unshifted phi=0 term in angular correlation
full_variance = (integration_squared / one_d_integration ** 2) - 1
full_variance = (integration_squared / one_d_integration**2) - 1

if dqe is not None:
full_variance = full_variance - ((one_d_integration ** -1) * dqe)
full_variance = full_variance - ((one_d_integration**-1) * dqe)

variance = full_variance.mean(axis=navigation_axes)

Expand All @@ -1627,19 +1627,19 @@ def get_variance(
axis=navigation_axes
)
integration_squared = (
(self ** 2)
(self**2)
.get_azimuthal_integral1d(npt=npt, **kwargs)
.mean(axis=navigation_axes)
)
variance = (integration_squared / one_d_integration ** 2) - 1
variance = (integration_squared / one_d_integration**2) - 1

if dqe is not None:
sum_int = self.get_azimuthal_integral1d(npt=npt, **kwargs).mean()
variance = variance - (sum_int ** -1) * (1 / dqe)
variance = variance - (sum_int**-1) * (1 / dqe)

elif method == "VImage":
variance_image = (
(self ** 2).mean(axis=navigation_axes)
(self**2).mean(axis=navigation_axes)
/ self.mean(axis=navigation_axes) ** 2
) - 1
if dqe is not None:
Expand Down

0 comments on commit 03760fb

Please sign in to comment.