All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Fixed pytest failure. Changed
setup
-->setup_method
(#997) - :meth:`pyxem.signals.Diffraction2D.center_of_mass` now uses the :meth:`hyperspy.api.BaseSignal.map` function. (#1005)
- Replace
matplotlib.cm.get_cmap
(removed in matplotlib 3.9) withmatplotlib.colormaps
. (#1023) - Documentation fixes and improvement. (#1028)
- Fixed bug with flattening diffraction Vectors when there are different scales (#1024)
- Fixed intersphinx links and improved api documentation (#1056)
- Fix an off-by-one error in the :meth:`pyxem.signals.Diffraction2D.get_azimuthal_integral2d` (#1058)
- Added :class:`pyxem.utils.calibration_utils.Calibration` class for calibrating the signal axes of a 4-D STEM dataset(#993)
- Added :meth:`pyxem.signals.Diffraction2D.get_azimuthal_integral1D` method to calculate the azimuthal integral of a 2D diffraction pattern (#1008)
- Added example for doing azimuthal integration of a 2d diffraction pattern (#1009)
- Added :meth:`pyxem.signals.CommonDiffraction.get_virtual_image` method to calculate multiple virtual images from a 4D STEM dataset (#1014)
- Added GPU support for lazy signals. (#1012)
- Added GPU processing for :meth:`pyxem.signals.Diffraction2D.get_azimuthal_integral2d` (#1012)
- Added method for calibrating the detector gain (#1046)
- The module & all functions within
utils.reduced_intensity1d
are deprecated in favour of using the methods of ReducedIntensity1D (#994). - Deprecated
CalibrationGenerator
andCalibrationLibrary
in favour of :class:`pyxem.utils.calibration.Calibration` class (#1000) - Detector module as we move away from pyfai
- Deprecated
pyxem.generators.virtual_image_generator.VirtualImageGenerator
in favor of :meth:`pyxem.signals.CommonDiffraction.get_virtual_image` (#1014) - Several utility modules have been deprecated: utils.{pyfai,segement,virtual_images,background_utils,cluster_tools,signals, radial_utils} (#1030 & #1060, #1055).
- The following utils:
insitu_utils
,correlations_utils
andpixelated_stem_tools
,dask_tools
are now private. utils.vector_utils
, preferutils.vectors
utils.symmetric_vector_utils
, preferutils.vectors
utils.labeled_vector_utils
, preferutils.vectors
utils.expt_utils
, preferutils.diffraction
- Several expired methods of :class:`pyxem.signals.Diffraction2D` associated with radial integration (#998)
- The
peak_find_lazy
method of :class:`pyxem.signals.Diffraction2D` (#1040) dummy_data
that content is now available underdata.dummy_data
- Subpixel refinement now a function of the :py:class:`~pyxem.signals.DiffractionVectors` class (#980)
- The :py:class:`~pyxem.generators.SubpixelrefinementGenerator` class has been deprecated (#980)
- LazyDiffractionVectors are now supported(#969)
- DiffractionVectors now support intensity(#969)
- Add Examples for vector_finding and determining_ellipticity(#969)
- Add slicing methods to DiffractionVectors using
ivec
(#972) - :class:`~pyxem.signals.DiffractionVectors` now explicitly handles lazy signals (#972)
- Added html representation for non-lazy :class:`~pyxem.signals.DiffractionVectors` (#972)
- Added :class:`pyxem.signals.PolarVectors` for polar vectors (#981)
- Added clustering methods using :func:`pyxem.signals.DiffractionVectors.cluster` (#981)
- Added :class:`pyxem.signals.LabeledDiffractionVectors` for labeled diffraction vectors after clustering (#981)
- Revised the pyxem logo banner and favicon (#988)
- Update pyxem to work with hyperspy 2.0.0 (#969)
- Fixed slow markers (#969)
- Removed parallel and max_workers keywords in favor of using dask (#969)
- :class:`~pyxem.signals.DiffractionVectors2D` now extends :class:`~pyxem.signals.DiffractionVectors` for a more consistent API (#972)
- Fix :meth:`~pyxem.data.zrnb_precipitate` dataset to point to proper dataset
- Removed MIB reader (#979) in favor of hyperspy/rosettasciio#174
- Support for Hyperspy 1.x.x is not supported. Use pyxem 0.16.0 instead if using Hyperspy 1.x.x (#969)
- Added magnitude_limits to DPCSignal2D methods (#949)
- Added :py:class:`~pyxem.signals.LazyCorrelation1D` for lazy Correlation1D signals
- Improved the documentation and added Examples
- Add N-D filtering using :py:meth:`~pyxem.signals.Diffraction2D.filter`
- Add new :py:class:`pyxem.signals.InSituDiffraction2D` class for in-situ diffraction data
- Remove
ipywidgets
from requirements as it is not a dependency - Set skimage != to version 0.21.0 because of regression
- Do not reverse the y-axis of diffraction patterns when template matching (#925)
- Fixed bug in :py:class:`pyxem.generators.indexation_generator.AcceleratedIndexationGenerator` when passing orientations as tuples.
- Fix bug in calculating strain (#958)
- Fixed type error in
separate_watershed
with scikit-image 0.21 (#921) - Fixed VDF creation from peaks using generators.VirtualDarkFieldGenerator.get_virtual_dark_field_images (#926)
- Updating and correcting Zenodo (#924)
- Bug fix for center_direct_beam and half_square_width (#928 Thanks to @PVacek )
- 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
- Added kwargs to find_beam_offset_cross_correlation allowing for parameters to be passed to phase_cross_correlation (#907)
- Added LazyVirtualDarkField signal
- 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
- VectorSignal pixel_calibration deprecated and replaced with scales.
- 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
- Increased minimal version of scikit-image to >= 0.19.0
- Increased minimal version of Matplotlib to >= 3.3
- Fixed a factor of 1/2 missing in ScatteringFitComponentXTables
- Fixed error related to DiffractionSignal2D.apply_affine_transformation when multiple affine transformations are given. (#870)
- Bugfix related to Numpy 1.24.0. Strict array creation with dtype=object is needed for ragged arrays. (#880 & #881)
- Bug fix for doubling of inplane rotation in template matching. (#905 & #853)
- Bug fix for filtering vectors using a basis and DBSCAN
- Bug fix for passing vector attributes when signal is copied or changed.
- Increase minimal version of orix to >= 0.9.
- Increase minimal version of diffsims to >= 0.5.
- Fix bug in get_DisplacementGradientMap (#852)
- Fix template matching bugs (originally fixed in #771 but omitted from 0.14 series by accident)
- Getting and plot integrated intensity now support signals containing nan (#722)
- Add Symmetry1D signal class and symmetry analysis methods (#724)
- BeamShift class, which includes the make_linear_plane method for better correction of the beam shift when scanning large regions in STEM (#746)
- Add unit testing of docstring examples (#766)
- Add function for optimizing calibration of SPED data (#785)
- Add function for creating a orix CrystalMap from indexation results (#794)
- Speed optimizations for the fast template matching on CPU and GPU, improving speeds by 200% and 40% respectively (#796)
- Added the ability to determine the center and ellipticity using the determine_ellipse function.
- lazy_* virtual imaging has been removed, use get_integrated_intensity (#722)
- big_data_utils has been removed as this is not the modern way of attacking this problem
- similarly, TemplateIndexationGenerator has been removed as the Accelerated approach is far better (#823)
- Symmetry STEM Class updated to allow for better interpolation and lazy operation. (#809)
- Generalized plotting diffraction vectors on ND stacks of images (#783)
- Small bugfix with dask/cuda scheduler to prevent running out of VRAM (#779)
- Bugfix:AzimuthalIntegral1D accepts masks and uses updated map function (#826)
- The lazy_result keyword, which has been changed to lazy_output to conform to similar keyword in HyperSpy
- For developers: HyperSpy's .map function will now be used to process big datasets, instead of pyXem's process_dask_array
The code contained in this version is identical to 0.14.1, the release was recreated to fix an error with the Zenodo files.
- Code now support python 3.9
- Code now runs on hyperspy 1.6.2
- np.bool replaced by bool
- np.object replaced by object
- load_mib (#734)
- correct_bad_pixels now returns the same result when lazy/not-lazy (bug #723, fix #735)
- mirrored templates now correctly dealt with in radial template matching (#740)
- further bugfixes for AcceleratedIndexationGenerator (#744)
- a k-space error effecting azimuthal integration (#738)
- bug in .to_crystal_map()
- lazy_virtual_bright_field, use get_integrated_intensity instead
- lazy_virtual_dark_field, use get_integrated_intensity instead
- Faster rotation indexing, using in plane speeds up, added as AcceleratedIndexationGenerator (#673)
- get_direct_beam_position now supports lazy processing (#648)
- center_direct_beam now supports lazy processing (#658)
- Several functions for processing large datasets using dask (#648, #658)
- Methods to retrieve phase from DPC signal are added (#662)
- Add VirtualImageGenerator.set_ROI_mesh method to set mesh of CircleROI (#700)
- Added a setup.cfg
- The importing of pyxem objects has been standardized (#704)
- get_direct_beam_position now has reversed order of the shifts [y, x] to [x, y] (#653)
- .apply_affine_transform now uses a default order of 1 (changed from 3)
- find_peaks is now provided by hyperspy, method 'xc' now called 'template_matching'
- virtual_annular_dark_field and virtual_bright_field renamed; now have a lazy_ prefixing (#698)
- Plotting large, lazy, datasets will be much faster now (#655)
- Calibration workflow has been altered (see PR #640 for details)
- Azimuthal integration has been refactored (see PRs #625,#676 for details)
- Diffraction2D.remove_dead_pixels has been removed, use .correct_bad_pixels (#681)
- Diffraction2D.remove_background, has been moved to .subtract_diffraction_background (#697)
- The diffraction_component and scalable_reference_pattern modules have been removed (#674)
- local_gaussian_method for subpixel refinement has been removed
- utils.plot removed, functionality now in signals.diffraction_vectors
- utils.subpixelrefinement_utils removed, functionality in subpxielrefinement_generator
- utils.dpc_tools removed, either downstreamed to diffsims or up to differential_phase_contrast.py
- utils.diffraction_tools removed, downstreamed to diffsims
- utils.sim_utils removed, instead use the relevant diffsims functionality
- utils.calibration_utils removed, downstreamed to diffsims
- CI is now provided by github actions
- Code now depends on hyperspy==1.6.1 and skimage>=0.17.0
- This project now keeps a Changelog
- Slow tests now don't run by default
- Depend only on hyperspy-base and pyfai-base