Releases: oncoray/mirp
Version 2.4.1
Minor changes
- Added
kurtosis
method for local binary pattern filter.
Version 2.4.0
Major changes
-
It is now possible to use and process (in-memory) images and masks in a native
mirp
format. It was already
possible to export imaging and masks, e.g. usingextract_images(..., image_export_format="native")
or
extract_features_and_images(..., image_export_format="native"
). Now the resulting images and masks can be used
as input, e.g.extract_features(image=native_images, masks=native_masks, ...)
, withnative_images
and
native_masks
being the resulting images and masks, respectively.This allows for external processing of the contents of images and masks, such as performing gamma corrections. The
image and mask contents are retrieved using theget_voxel_grid
method, and set using theset_voxel_grid
method.
set_voxel_grid
expects anumpy.ndarray
of the same shape and type (float
for images,bool
for masks) as the
original. -
Parallel processing is now possible using the
joblib
backend in addition toray
. This can be specified using the
parallel_backend
argument. Both libraries are now optional, and not installed automatically usingpip
.
Fixes
- Setting file types is now case-insensitive.
- The co-occurrence matrix-based maximum correlation coefficient no longer has complex values. This was already the
case, but the return value could still be of a complex type. - Sample names are now more effectively determined based on file name and folder structure.
- Computing semi-axes length for flat geometries no longer produces occasional warnings due to machine precision.
- Computing morphological features for line-like structures no longer results in divisions by zero.
- Computing morphological features with an empty intensity-mask no longer results in illegal divisions.
- Computing aggregated texture feature values from underlying NaN values no longer generates warnings.
- Features that are not computed because they are not IBSI-compliant are now no longer exported together with valid
features. - Fixed a warning caused by a division by 0 when computing the coefficient of dispersion.
Version 2.3.4
Minor changes
- It is now possible to compute local binary patterns as a filter.
- Computation of the co-occurrence matrix-based maximum correlation coefficient now relies less on look-up, at the cost
of a larger memory footprint. Computation should be more efficient.
Fixes
- It is now possible to merge labelled segmentation masks (e.g. 1, 2) using the settings
xml
file. Previously,
this would result in an error when attempting to merge the names of the regions of interest. - The co-occurrence matrix-based maximum correlation coefficient no longer has complex values.
- Directories with sample names without any further underlying directories (no
image_sub_folder
or
mask_sub_folder
) are now correctly filtered usingsample_name
.
Version 2.3.3
Minor changes
- Added the co-occurrence matrix-based maximum correlation coefficient feature. Since no reference standards for this
feature exist, you need to specifyibsi_compliant = False
to compute it.
Fixes
numpy.trapz
was deprecated and is now replaced bynumpy.trapezoid
.pyproject.toml
was updated to conform with PEP 639.
Documentation
- The documentation erroneously mentioned that the
by_slice
parameter could take"largest"
as an option. This
was no longer possible since the introduction of themask_select_largest_slice
parameter in version 2.1.0.
Version 2.3.2
Minor changes
- Improved checks on absent (missing) image transformation parameters where the user is expected to specify one or
more values. This now provides clear errors. - The default value of
bias_field_correction_n_fitting_levels
was changed from1
to3
, as
bias_field_correction_n_fitting_levels=1
yielded only very minor improvements to image quality,
i.e. did not noticeably reduce bias fields in MR.
Fixes
- Background label is now specified as an integer for scikit-image's
measure.label
function.
Documentation
- Several fixes to the documentation were made.
Version 2.3.1
Fixes
- SUV values with decay correction
START
are now computed correctly. The previous code, based on the QIBA
vendor-neutral code, computed the SUV values as if decay correctionNONE
was used. - The error message for invalid feature families for filtered images (response maps) now correctly mentions
response_map_feature_families
. - Setting
response_map_feature_families = "all
now correctly excludes morphological features. - Trying to compute local intensity features from imaging with high resolution and low image dimensions no
longer causes a hard crash due to memory errors produced byscipy.ndimage.convolve
. Instead, these errors are
handled gracefully -- local intensity features are not computed, however.
Version 2.3.0
Major changes
-
The proper ancient feature computation code running in the background of MIRP has been completely refactored. We
moved from a functional backend where all features were computed per feature family to a more flexible
object-oriented approach. Although this change is not visible at the user-end, it offers several new possibilities:- Single features can now be computed. In addition, for some features (e.g. percentile statistics), a flexible
percentile value could be passed. - Creation of feature maps.
- Output of features and their metadata to machine-readable formats, instead of just tabular data.
Important: Though the name of features in the tabular exports has not changed, their ordering may have.
Avoid using column position when processing or analysing feature data. - Single features can now be computed. In addition, for some features (e.g. percentile statistics), a flexible
-
Apparent diffusion coefficient (ADC) maps, diffusion contrast-enhanced (DCE) MRI and multi-frame DICOM objects in
general are now supported. -
Planar imaging, i.e. computed radiography, digital X-ray and digital mammography DICOM files are now supported.
-
Python version 3.12 is now supported thanks to recent updates by the maintainers of
ray
anditk
.
This means thatmirp
now supports Python version 3.10 and later.
Fixes
- Internal use of
numpy.cross
no longer produces deprecation warnings.
Version 2.2.4
Fixes
- Masks can now be plotted in images without causing an error when using
matplotlib
version 3.9.0 or later.
Version 2.2.3
Minor changes
-
Tables with feature values now contain extra columns to better identify the input data. For example, the new columns specify the file name (for non-DICOM input), the directory path of the image and masks and several DICOM tags, if available.
-
MIRP now checks whether there are potential problems between the frames of reference of image and mask files.
Version 2.2.2
Minor changes
-
show
method ofGenericImage
and subclasses now indicate if a user-providedslice_id
is out-of-volume and
select the nearest slice instead. -
Naming of branches in the settings
xml
file now matches that of their respective settings classes.xml
files
with the previous branch names still function. -
Errors encountered during file import and handling are now more descriptive.
-
extract_mask_labels
andextract_image_parameters
now export extra information from DICOM metadata, e.g. series
UID.
Documentation
- Added a new tutorial on applying image filters to images.
- Added documentation on the feature naming system.
- Added documentation on the design of MIRP.
Fixes
- Computing features related to the minimum volume enclosing ellipsoid no longer produces warnings due to the use of
deprecatednumpy.matrix
class.