Change Log¶
Release 0.2.5 (11 May 2022)¶
- updated for compatibility with latest scikit-image (issue 53).
- HyperSpy is now an optional dependency. It can be installed with
pip
by specifyingfpd[HS]
insteadfpd
, or separately by any other means.
Release 0.2.4 (2 May 2022)¶
virtual_images()
now pads input data with pixels offill_value
in cases where image shifts are larger than the ‘spare’ space allowed by the aperture(s).- new
radial_profiles()
for calculating radial profiles of 4-D datasets with variable centre coordinates. (The olderradial_profile()
function may still be used on single images or a small number of them.) - internal (hidden) utility functions for finding integer factors are now public:
int_factors()
andnearest_int_factor()
. rotate_vector()
now also accepts an iterable as theyx_array
input.SegmentedDPC
(fpd.segmented_dpc_class.SegmentedDPC) is deprecated and will be removed in a future version.- new
segmented_dpc
module containing new (and improved) functions for segmented DPC analysis:SegmentedDPC
(fpd.segmented_dpc.SegmentedDPC); and experimental dataset parsing:load_gla_dpc()
.
Release 0.2.3 (26 February 2022)¶
- improve speed of the
method='linear'
mode ofshift_im()
by 4.6x. synthetic_aperture()
andsynthetic_images()
are deprecated in favour of the new functions:virtual_apertures()
andvirtual_images()
.virtual_images()
includes new features (described below) and is around 2x faster thansynthetic_images()
.virtual_apertures()
removes singular output axes in cases of a single aperture.virtual_images()
accepts singular apertures and returns output without aperture axis in those cases.sum_dif()
,virtual_images()
, andVirtualAnnularImages
can now shift images during the calculations through thedyx
anddyx_method
parameters.shift_im()
has a newmethod=pixel
setting for pixel-resolution image shifts.fill_value
is now applied to all methods inshift_im()
.- new
cmap_nfold
parameter indpc_explorer_class
, allowing the colormap to be repeated for improved angular contrast and use with data with symmetry axes. - the colormap index is now included in the command output of
dpc_explorer_class
.
Release 0.2.2 (29 November 2021)¶
strain()
now handles LinAlgError exceptions.- the return of
blob_log_detect()
now includes estimates of the error in the fitted coordinates. optimise_lattice()
now also returns a measure of the error in the lattice fit.- improved filtering of correlation peaks in
blob_log_detect()
. - setting negative
sigma
values inblob_log_detect()
andphase_correlation()
now generates a reference image by subtracting a smoothed version of it from itself. - setting
sigma=0
inblob_log_detect()
now passes the images through unmodified, matching the longstanding behaviour inphase_correlation()
. blob_log_detect()
now usesfftcorrelate()
internally, allowing normalisation of the correlation to be set with thephase_exponent
parameter.- new
fftcorrelate()
function for correlation of images through cross- (default), phase- and hybrid-correlations.
Release 0.2.1 (19 October 2021)¶
- improve size of centre rectangle GUI element in
dpc_explorer_class
for very small data ranges. - the
save_data()
method now returns the full filename of the output file. - new
signal_from
andper_pixel
parameters insnr_single_image()
for specifying the origin of the signal and whether the returns are per pixel, respectively, mirroring the parameters in the newsnr_single_image_wl()
function. The equivalent precision for the snr is also now included in the output. - new
snr_single_image_wl()
function for calculating the snr ratio of a single image using wavelet analysis for the noise component. - new
decibel()
function for calculating decibels from power ratios. - new
strain()
function for infinitesimal strain tensor calculations. - the
DataBrowser
class can now handle non-fpd hdf5 datasets, and the diffraction plot normalisation can be set through the newnorm
parameter. - removal of deprecated functions:
radial_average()
anddisc_edge_sigma()
(useradial_profile()
anddisc_edge_properties()
instead). - the
map_image_function()
function now allows the function parameters to be spatially varying by specifying them through themapped_params
parameter, for issue 46. - new
compression
parameter inwrite_hdf5()
, allowing use of the LZ4 algorithm for around 2x faster data reading and writing. See Compression for details. The LZ4 algorithm is provided by the hdf5plugin package, a new dependency. The default compression method remains gzip for maximum file portability. - update
MerlinBinary
class for Merlin file format version 0.77.0.16. - greatly improved Medipix colour handling and file conversion without header files in the
MerlinBinary
class. See merge request and Detector Axis and Colour Mode for details. - improve metadata compatibility for Hyperspy version > 1.6. See merge request for details.
- improve test coverage (from around 81% to 88%).
Release 0.2.0 (25 March 2021)¶
- automatic runtime configuration of BLAS libraries with the threadpoolctl package. This additional control has allowed speed increases of several functions.
- parallel execution may be by multithreading or multiprocessing. Threading is the default, which should improve performance on across different OSs.
- new
Timer
class for simple timing. - new
update_calibration()
for updating file calibrations. - more efficient data handling and OS warning messaging in
make_updated_fpd_file()
. The changes also fix issue #39.
Release 0.1.13 (23 January 2021)¶
- Several internal changes to maintain support for newer versions of dependences.
- The minimum version of h5py is now 2.10.0 for new indexing style.
- add warning to
fpd_to_hyperspy()
for issues with specific HyperSpy versions. center_of_mass()
andphase_correlation()
now print useful stats and a warning when nans are preset.center_of_mass()
now gracefully handles exceptions with Otsu thresholds.make_updated_fpd_file()
prints info and reopens file before processing to avoid issues on Windows.
Release 0.1.12 (21 December 2020)¶
fpd_to_tuple()
now has a field with the file object.- new
determine_read_chunks()
function for calculating chunk sizes. - new
make_updated_fpd_file()
function for creating modified files. - more robust conversion of app5 files with multiple datasets in
topspin_app5_to_hdf5()
. - improved version tags in hdf5 files made with
topspin_app5_to_hdf5()
, with PED_version incremented to 0.4.1. - update
MerlinBinary
for Merlin file format version 0.75.4.84. - Python2 legacy support has been dropped.
- The
AlignNR
is now public and imported at the top level. - update
phase_correlation()
for register_translation deprecation in newer skimage.
Release 0.1.11 (1 November 2020)¶
synthetic_data
module:¶
method
andfill_value
are now exposed inshift_images()
.- new
array_image()
function to make it easier to generate synthetic lattice (and other ‘arrayed’) images.
mag_tools
module:¶
- new
exchange_length()
function. - new
vortex()
andcross_tie()
functions for generating magnetic textures. - new
fresnel()
andtie()
functions for calculation of Fresnel images and performing transport of intensity analysis. - new
tem_dpc()
function for performing TEM-DPC analysis.
fft_tools
module:¶
- new
fft_diff()
andfft2_diff()
functions for performing Fourier space differentiation and integration of 1-D arrays and images. - new
fft2_laplacian()
andfft2_ilaplacian()
functions for performing Fourier space Laplacian and inverse Laplacian calculations. - new
im2fftrdf()
function for calculating the azimuthally averaged profile of the spectral components of an image. - sub-pixel calculations are now possible in
fft2rdf()
through the newsp
parameter. - new
pad_image()
function for convenient padding of images to a given size and shape. - new
cepstrum()
andcepstrum2()
functions for performing 1-D and 2-D cepstrum calculations. - new
fft2_igrad()
function for inverse 2-D gradient calculations.
tem_tools
module:¶
- new
defocus_from_image()
function to automate extraction of defocus in TEM images. - the radius and angle of the mouse position are now displayed in the plot in
synthetic_lattice()
, allowing the coordinates to be more easily seen (e.g. for specifying inlattice_resolver()
). - the search angle range is now exposed in
lattice_resolver()
through thesearch_dangle
parameter. - the
optimise_lattice()
function now performs a weighted fit if the weights are specified in theweights
parameter. blob_log_detect()
now extracts a signal metric and returns it in an additional column, which may be used for weighting the lattice fit, or for other purposes.- new
background_erosion()
function to perform background estimation and removal in diffraction images. - new multithreaded non-rigid image alignment class
AlignNR
.
fpd_processing
module:¶
nrmse()
can now handle nans by setting the parameterallow_nans
to True.
fpd_file
module:¶
- chunking for sum image calculations in
write_hdf5()
is now automated, with control set by the newMiB_max
parameter.
Others:¶
- new
progress_bar
option in many functions and classes (write_hdf5()
,to_array()
,topspin_app5_to_hdf5()
,sum_im()
,sum_dif()
,synthetic_images()
,center_of_mass()
,find_matching_images()
,map_image_function()
,VirtualAnnularImages
). - reading GSF files with
readGSF()
is much faster for large files. - new
gaussian_fwhm()
function for calculating Gaussian FWHM.
Plus many minor improvements.
Release 0.1.10 (7 April 2020)¶
find_circ_centre()
now returns subpixel centre coordinates by peak fitting in Hough space.- fix typo in function name
fpd_to_hyperspy()
. - y-axes are now shared in plots from
lattice_magnitudes()
. - polar plots have been improved in
disc_edge_properties()
and erf fits now use a free minimum value.
Release 0.1.9 (1 March 2020)¶
- reverse angle direction in
disc_edge_sigma()
for consistency. - new
sum_ax()
function for summing over an axis. - fix bug in reshaping
phase_correlation()
withpre_func
andpost_func
. - add rebin option to downscaling in
synthetic_aperture()
(now the default method). - add rebin option to downscaling in
disk_image()
. - improve normalisation of live radius plotting in
dpc_explorer_class
. - new
tem_tools/airy_fwhm()
function intem_tools
module. radial_average()
is marked as deprecated in favour of the new and currently identicalradial_profile()
function.- drop hyperspy option from
disc_edge_sigma()
function. - fix edge-case bug
center_of_mass()
when usingpre_func
but notrebinning
. phase_correlation()
can now be set to not perform derivatives withsigma=0
.sum_ax()
progress bar can now be disabled withprogress_bar=False
.shift_im()
now has multiple methods for image shifting (default is now linear).- new
disc_edge_properties()
to replace the simplerdisc_edge_sigma()
function. The latter is deprecated and will be removed in a future release. The former performs more analysis and returns a namedtuple with many additional properties extracted. - the array interface of
MerlinBinary
progress bar is now suppressed (re-enable witharray_interface_progress_bar=True
). write_hdf5()
now uses functions infpd_processing
for sum images.- some optimisation of file conversion with
write_hdf5()
. write_hdf5()
now accepts a function to manipulate images during conversion (doc: Data Manipulation).- new
fpd_to_tuple()
function for accessing our HDF5 files (doc: Updating Files).
Release 0.1.8 (4 November 2019)¶
- updates for compatibility with most recent skimage and numpy.
Release 0.1.7 (1 September 2019)¶
- new Airy disc diameter
airy_d()
- new 7-smooth number
smooth7()
- new module for io
fpd_io
featuring a NanoMegas Topspin app5 file converter for SPED datatopspin_app5_to_hdf5()
(documentation: Converting Topspin app5 Files).
Release 0.1.6 (24 March 2019)¶
- improvements to
MerlinBinary
class - speed optimisations in
synthetic_images()
- ‘Uniform’ colourmap renamed to ‘MLP’
- additional conversion functions in
mag_tools
- improvements to the single image SNR function,
snr_single_image()
Release 0.1.5 (18 February 2019)¶
- improvements to or new lattice functions:
lattice_from_inliers()
,blob_log_detect()
,lattice_resolver()
- new SNR and gun noise correction tools in a new
utils
module - many other small improvements.
Release 0.1.4 (27 October 2018)¶
- new
CubicImageInterpolator
andVirtualAnnularImages
classes - several lattice finding tools:
blob_log_detect()
,friedel_filter()
,synthetic_lattice()
,vector_combinations()
,lattice_angles()
,lattice_magnitudes()
,lattice_inlier()
,optimise_lattice()
- ctf tools:
ctf()
,scherzer_defocus()
,defocus_from_ctf_crossing()
- image alignment tools:
orb_trans()
,optimise_trans()
,apply_image_trans()
- many other small improvements.
Release 0.1.3 (31 July 2018)¶
- new
MerlinBinary
class - many other small improvements.
25 Mar 2018¶
- Notebook demos are now available at https://gitlab.com/fpdpy/fpd-demos