Skip to content

Releases: 3d-pli/SLIX

Version 2.4.2

10 May 09:02
Compare
Choose a tag to compare

v2.4.2

Added

Changed

Fixed

  • Added SLIX.parameters to the __init__.py file.
  • Fixed an issue where vectors were misaligned when using both vector options of SLIXVisualizeParameter.
  • Fixed an issue where a white border would be shown in the output vector images when using the latest SLIX versions.

Version 2.4.1

30 Mar 11:27
Compare
Choose a tag to compare

v2.4.1

Added

  • Added inclination sign map in SLIXParameterGenerator
  • Added SLIX.parameters which contains all the parameters for the operations of the toolbox.
  • Added SLIX._logging to replace the print statements in SLIX. This is a private variable and should not be used.
  • Added SLIX._decorators for additional checks of the toolbox. This should ensure that the toolbox is not used in a wrong way.

Changed

  • Added check for write operations before actually trying to generate any content reducing the computing time if the program would fail anyways.

  • Changed the memory management between CPU and GPU in SLIXParameterGenerator which might reduce computing time.

  • Changed print statements in SLIX to logging statements where possible. The tqdm progress bar is still used.

  • SLIX.GPU now uses more than 1 thread for the GPU. The current value is 16x16 threads per block.

  • Replaced uint8 with int8 in _centroid_correction_bases. This shouldn't affect the toolbox itself but ensures that the correct data type is used.

  • Refactored some methods throughout the toolbox to improve maintainability. This will not affect the functionality of the toolbox.

  • The inclination sign map will now be written by default.

Fixed

  • Fixed out-of-bounds issues in SLIX.GPU when using more than 1x1 threads per block.
  • Fixed issue in centroid calculation on the GPU where the normalized image wasn't stored in the GPU memory resulting in additional transfers through the CPU and GPU.
  • Fixed an issue with SLIX.attributemanager where the method set_reference_modality_to was not working because it got overwritten.
  • Fixed an issue where you could use any amount of arguments after the --smoothing flag in SLIXParameterGenerator resulting in weird behaviour for the users.
  • Fixed an issue where the GPU would still be used to calculate the centroids even though the GPU execution was disabled.

Version 2.4.0

14 Dec 16:15
Compare
Choose a tag to compare

v2.4.0

Added

  • Added vector weighting option available for SLIXVisualizeParameter with the parameter --weight_map. This parameter is used to weight the length of the shown vectors in both the unit vector visualization as well as the vector distribution.
  • Added new options to SLIXVisualizeParameter to allow the user to customize the appearance of the resulting parameter maps such as the vector maps and the FOM.
  • Added a new interface to SLIX.visualize called Colormaps. This class contains basic colormaps that can be used to visualize the results of the SLIX.visualize methods.
  • Currently this class holds the following color maps:
    • Colomaps.rgb
    • Colormaps.hsv_black
    • Colormaps.hsv_white
    • Colormaps.hsv_black_reverse
    • Colormaps.hsv_white_reverse
    • Colormaps.rgb_reverse
  • Added command line parameters for the user to choose the color maps when calling SLIXVisualizeParameter (-c, --colormap).
  • Added a new color_bubble method to SLIX.visualize.
  • Added an inclination parameter to SLIXVisualizeParameter [...] fom to allow the user to choose the inclination of the FOM.

Changed

  • When calling SLIXVisualizeParameter, a color bubble associated with the written image will be written as well. This can be disabled by using the --disable_colorbubble option.
  • Added a new method to SLIX.toolbox to get unit vectors from both direction and inclination images (3D instead of 2D only).
  • Added the name of the color map to the filename.
  • Added optional paramer name for the directions in SLIXVisualizeParameter (--direction).

Fixed

  • Fixed a bug in SLIXVisualizeParameter and SLIX.visualize.unit_vectors which caused the unit vectors to be drawn in the wrong direction.

Version 2.3.0: SLIXCluster, Rework of SLIXLineplotParameterGenerator and several new additions

09 Sep 13:14
Compare
Choose a tag to compare

v2.3.0

Added

  • Added SLIXCluster, a tool which can be used to separate regions based on classification data through SLI measurements. The parameters aren't final yet and might change in the future.
  • Added SLIX.classification which includes the classification methods of generated parameter maps.
  • Added a new parameter to SLIXVisualizeParameter [...] vector named --distribution which allows to plot all vectors in a selected threshold region. This allows to see which regions have a high confidence in their reported orientation and which regions might not give any information. Please note that the performance for full measurements isn't that high in the current state.
  • Added SLIX.visualization.unit_vector_distribution which is used for the creating of the image described in the last bullet point.
  • Added DPI option to SLIXVisualizeParameter. The default was 1000 dpi but images with a lower dpi value might be interesting when presenting the image for a paper or presentation.
  • Added --value and --saturation to SLIXVisualizeParameter [...] fom which allows the user to set two images to weight the FOM.

Changed

  • Restructured some of the hidden methods to other Python files to make the basic package infrastructure easier to read.
  • Renamed methods in SLIX.visualization to prevent the repetition of visualize
  • The README.md will now use GitHub asset links instead of the old repository used during the first implementation of SLIX.
  • Changed the structure for the command line programs from _cmd.py to a package named _cmd containing all programs in separate files. Both solutions work but the new solution allows SLIX to scale more easily in the future.
  • When using the smoothing parameter in SLIXParameterGenerator, the resulting files will include the chosen algorithm as well as their respective parameters.
  • Rework of SLIXLineplotParameterGenerator. The tool will now generate way more detailed parameters when called with default parameters. You can use the --simple option to reduce the information to average values (just like before). The CSV structure was also altered to make parsing the results easier.
  • SLIXLineplotParameterGenerator now also supports the smoothing options from SLIXParameterGenerator
  • Multiple line profiles will be calculated in parallel when using SLIXLineplotParameterGenerator
  • When reading multiple files from a folder with SLIXParameterGenerator the filename will now not match the folder name but will instead use the file pattern in the read files instead.
  • Disabled the GPU usage for unit vectors in SLIXVisualizeParameter until a better solution for large input files has been found.
  • When using SLIXVisualizeParameter, a warning will now be shown when the background image dimensions do not match the image dimensions of the direction.
  • When using SLIXVisualizeParameter, the background image will only be rotated when it would match the orientation of the direction images

Fixed

  • Fixed a bug in the tests of the visualization images where the Matplotlib figure wasn't cleared as expected. The tests did check the right things though. It only resulted in a problem when adding another test for the new parameter.
  • Fixed a bug where a 3D stack with the shape (1, 1, x) would not be processed correctly with SLIXParameterGenerator
  • Fixed a bug in SLIXVisualizeParameter which could occur when the thinout is exactly the image size

v2.2.1: Fixed an issue regarding the background mask

23 Jul 09:23
Compare
Choose a tag to compare

v2.2.1

Added

Changed

Fixed

  • Fixed an error regarding the mask caluclation which sometimes would not create a mask because of an error when using the average histogram

v2.2.0

07 Jul 12:05
Compare
Choose a tag to compare

v2.2.0

Added

  • Added SLIXVisualizeParameter to the toolbox which enables visualizing directions either as a fiber orientation map or as vectors seen before in the example Jupyter notebook
  • Added a new paragraph to the README.md to explain the new SLIXVisualizeParameter
  • Added a new method in visualization.py to generate a fiber orientation map from a direction.
  • Added a --correctdir option to SLIXParameterGenerator to accommodate for a camera shift during the measurement which impacts the resulting direction angle.
  • Added a --smoothing option to SLIXParameterGenerator as there are now two methods to smooth the line profiles of a measurement (Savitzky-Golay and Fourier)
  • Added a --output_type option to SLIXParameterGenerator. SLIX now generally supports TIFF, HDF5 and NIfTI files. HDF5 files require that the image is locaed at /Image
  • Added a --unit_vector option to write unit vectors (as .nii). The functionality was implemented already but there wasn't a parameter for users.
  • Added attributemanager.py which handles the newly added attributes in HDF5 files.
  • Added the option to read an entire folder of 2D image files instead of an image stack when following the following regex syntax: .*_+p[0-9]+_?.*\.(tif{1,2}|jpe*g|nii|h5|png)
  • Added imwrite_rgb to io.py for writing fiber orientation maps as TIFF or HDF5.
  • .nii.gz files can now be read. While this was technically possible before this change, a if clause prevented the usage of the right library

Changed

  • Added compression to all available data types (.tiff, .nii.gz, .h5). nii files will only be written as a compressed file if you use --output_type .nii.gz. Other data types will be compressed automatically.
  • Overhaul of the documentation. The path changed from /doc to /docs. The documentation is now hosted on https://3d-pli.github.io/SLIX/
    and isn't solely in the GitHub wiki anymore.
  • Changed the datatype for the detected number of peaks from int to uint16 because there shouldn't be more than 65535 peaks in a measurement.
  • There is now only a single _cmd.py instead of two cmd_[...].py which cleans up the package a bit.
  • Added documentation to missing methods.
  • Changed how the background_threshold parameter works. Now, you define a fraction. If the fraction of background pixels lies above this defined threshold,
    background pixels will not be considered for computing the median for visualizing a downscaled vector image.
  • The CPU and GPU separation of the SLIX toolbox are now protected as users should only use the main methods.
  • Changed the error message when the GPU cannot be used due to errors with Numba. Previously the same message shown when CuPy couldn't be initialized was shown.
  • Changed the background mask algorithm when using SLIXParameterGenerator. Instead of a fix value it is not based on the average image histogram. The parameter remains disabled by default.
  • Removed the --mask_threshold parameter from SLIXParameterGenerator in process of the previously bullet point.

Fixed

  • Fixed a bug where the direction of a line profile with two peaks wasn't generated when the distance between the peaks was outside of 180° +- 35°.
  • Fixed a few bugs regarding image orientations when reading / writing different data types
  • When importing a module from SLIX, the underlying modules were visible. This is now resolved.
  • Fixed a bug which could result in white pixels inside of the visualized direciton.
  • Fixed the missing parallelization of the peak generation when using only the GPU. Previously an issue with Numba prevented this. A change in the code structure now allowed to implement parallelization.

v2.0.0

16 Mar 16:44
9d8d25b
Compare
Choose a tag to compare

Version 2.0 of SLIX introduces major changes to the project structure.
If you're using the package in your own programs, please check for API changes which might cause different results as seen before.

Additions to SLIX in version 2.0:

  • Many functions have a more detailed variant of their previous functionality available. This allows further analysis of things like the peak position or direction angle which wasn't possible previously.
  • The toolbox now completely uses Numba removing PyMP as a dependency. With that Windows is now supported.
  • NVIDIA GPUs can be used for acceleration of SLIX
  • The toolbox isn't limited to a number of up to three directions anymore and is more flexible for any further additions to the program.

Documentation extension

23 Oct 18:54
Compare
Choose a tag to compare

This issue fixes some typos in the README.md and tutorial.
Introduced a troubleshooting section for line profiles with 3/5 peaks.
Further explanations in README.md, paper.md and tutorial.

v1.2.1 -- Small bug fixes and changes to the build system

21 Oct 14:07
Compare
Choose a tag to compare

This version fixes some smaller bugs present in the documentation and makes the repository compatible with publishing on PyPi.
The example Jupyter Notebook was also expanded to include how you could transfer the generated parameter maps to unit vector maps which could be used for tractography applications.

v1.2.0

20 Oct 21:30
Compare
Choose a tag to compare

Repository:

  • Added GitHub workflow for automated testing
  • Added CONTRIBUTING.md
  • Greatly expanded README.md to include more examples, tutorials and generally more information on how to use the toolbox.

Toolbox:

  • Added progress bars to most methods so that the user can see how long each task will take approximately
  • Fixed a bug where the program could crash if the user did use the toolbox and did not set an upper prominence bound
  • Fixed a bug where some methods could cause a crash because of a left over parameter that wasn't used anymore
  • Fixed a bug where the NUMBER_OF_SAMPLES parameter would not be correctly applied to the sampling algorithm if the number of samples got changed.
  • Wrong datatypes when calling the program will now result in an error message instead of a crash because of tifffile
  • Fixed a bug where the crossing direction could not be correctly reshaped by the toolbox

Visualization:

  • Added visualization to SLIX. Now parameter maps and unit vectors can be visualized using Matplotlib.
  • A tutorial was added under examples

General:

  • Fixed some smaller bugs in both programs in /bin
  • Added two new parameters in SLIXParameterGenerator
  • Added API documentation to the repository and in form of markdown documents in /doc