9d26a6b | Andrey Fedorov | 13 February 2020, 16:05:47 UTC | DOCS: fix parameter name | 13 February 2020, 16:05:47 UTC |
ae1e14c | Joost van Griethuysen | 11 February 2020, 18:10:14 UTC | Merge pull request #561 from JoostJM/3.0-release 3.0 release | 11 February 2020, 18:10:14 UTC |
a0c3875 | Joost van Griethuysen | 11 February 2020, 16:54:44 UTC | Update documentation and CHANGES Preparation for 3.0 release. | 11 February 2020, 16:54:44 UTC |
0101187 | Joost van Griethuysen | 11 February 2020, 16:16:04 UTC | DEPRECATE: Remove deprecated functions - Remove commandlinebatch.py - Remove CalculateFeatures() from radiomics.base.RadiomicsBase | 11 February 2020, 16:54:31 UTC |
a5a7e61 | Joost van Griethuysen | 11 February 2020, 16:03:08 UTC | TESTING: Remove testing for Python 2.7 | 11 February 2020, 16:03:08 UTC |
9883f66 | Joost van Griethuysen | 11 February 2020, 14:42:29 UTC | Update Issue templates Refer to Slicer discourse instead of google groups. | 11 February 2020, 14:42:29 UTC |
fbb6ac0 | Joost van Griethuysen | 11 February 2020, 13:59:51 UTC | TYPO: Fix typo in example settings for 2D extraction force2DDimension does not exist, it should be force2Ddimension. | 11 February 2020, 13:59:51 UTC |
33b974c | Andrey Fedorov | 09 February 2020, 03:58:46 UTC | Merge pull request #558 from rcuocolo/master 2D MRI extraction parameter file example | 09 February 2020, 03:58:46 UTC |
3b4fdd6 | Andrey Fedorov | 06 February 2020, 16:22:05 UTC | Merge pull request #559 from zivy/updateDocumentation Remove duplicate word. | 06 February 2020, 16:22:05 UTC |
47f8598 | Ziv Yaniv | 06 February 2020, 15:57:19 UTC | Remove duplicate word. | 06 February 2020, 15:57:19 UTC |
bafd7e2 | Renato Cuocolo | 04 February 2020, 13:29:41 UTC | Update customization.rst Fixed another typo and minor language edit. | 04 February 2020, 13:29:41 UTC |
e24a67e | Renato Cuocolo | 04 February 2020, 13:26:49 UTC | Update customization.rst Edited a typo. | 04 February 2020, 13:26:49 UTC |
0ded0f5 | Renato Cuocolo | 04 February 2020, 11:18:16 UTC | Merge branch 'master' into master | 04 February 2020, 11:18:16 UTC |
c3de30b | Renato Cuocolo | 04 February 2020, 11:15:02 UTC | Update customization.rst Edited for clarity the explanation of resampling and force2DDimension settings. | 04 February 2020, 11:15:02 UTC |
2005bd2 | Joost van Griethuysen | 04 February 2020, 10:00:59 UTC | TEST: Fix bug in loading image/mask during testing In commit 43578f7, use of class instance scope settings was changed to local scope settings allow correct parallel extraction using a shared instance of the extractor. However, this also meant that the settings had to be passed to the function that loads the image and mask. While this was done so for the call to this function from inside RadiomicsFeatureExtractor, this was not done so for the call to this function in TestUtils, which is the workflow for loading the image/mask during testing. This resulted in ignoring settings during loading, which meant no normalization or resampling was applied. This only affected the testing, and not the regular flow of PyRadiomics. | 04 February 2020, 10:00:59 UTC |
1f8c778 | Renato Cuocolo | 03 February 2020, 10:01:51 UTC | Update MR_2D_extraction.yaml | 03 February 2020, 10:01:51 UTC |
02cd38e | Renato Cuocolo | 03 February 2020, 09:59:28 UTC | Merge pull request #1 from rcuocolo/rcuocolo-2D-example Example of 2D extraction from MRI images. | 03 February 2020, 09:59:28 UTC |
91e7d3e | Renato Cuocolo | 03 February 2020, 09:57:57 UTC | Example of 2D extraction from MRI images. Commented settings regarding 2D extraction. | 03 February 2020, 09:57:57 UTC |
f719e5e | Joost van Griethuysen | 07 January 2020, 17:01:57 UTC | Merge pull request #545 from KathrynSch/fix-2d-resampling Fix resampling operation for 2d images | 07 January 2020, 17:01:57 UTC |
3c17192 | KathrynS | 30 December 2019, 13:24:47 UTC | fixes resampling operation for 2d images | 30 December 2019, 13:24:47 UTC |
c46ed88 | Andrey Fedorov | 11 December 2019, 21:58:03 UTC | BUG: fix typo Resolves #538 | 11 December 2019, 21:58:03 UTC |
6644f12 | Joost van Griethuysen | 27 November 2019, 17:03:04 UTC | Merge pull request #536 from JoostJM/refactor-docs Refactor docs | 27 November 2019, 17:03:04 UTC |
fb67525 | Joost van Griethuysen | 27 November 2019, 16:19:13 UTC | DOCS: Change community Switch to Slicer Discourse community instead of google groups. | 27 November 2019, 16:19:13 UTC |
89cc953 | Andrey Fedorov | 27 November 2019, 16:13:38 UTC | Update pointer to the forum | 27 November 2019, 16:13:38 UTC |
078835c | Joost van Griethuysen | 01 November 2019, 09:55:37 UTC | DOCS: Update command line usage section - Fix incorrectly encoded links - Add documentation on multiprocessing - Use sub headers instead of bullet points to improve readability | 01 November 2019, 09:55:37 UTC |
8da1db7 | Andrey Fedorov | 14 October 2019, 18:06:36 UTC | STYLE: add link to the publication | 14 October 2019, 18:06:36 UTC |
43578f7 | Joost van Griethuysen | 26 September 2019, 08:47:08 UTC | BUG: Use local scope copy of settings When extracting features in parallel, the extractor instance is shared across workers. To prevent customized updates of `label` and `label_channel` from affecting different cases, use a local copy of `self.settings`. Then, perform per-case custom updates of settings on this local copy, and pass it to the required functions. | 26 September 2019, 08:49:03 UTC |
54a3782 | Joost van Griethuysen | 26 September 2019, 08:17:14 UTC | BUG: Fix label_channel selection bug When Label_channel column is present in the CSV input, it needs to be parsed as an int. However, due to a bug, the value for label was used instead. | 26 September 2019, 08:17:14 UTC |
7bab402 | Joost van Griethuysen | 25 September 2019, 07:56:55 UTC | Merge pull request #527 from JoostJM/docker Add Docker for PyRadiomics-dcm Labs | 25 September 2019, 07:56:55 UTC |
1559ade | Joost van Griethuysen | 04 September 2019, 14:24:20 UTC | BUG: Include all pyradiomics-dcm lab files in the docker Include the resources folder and example parameters as well. | 04 September 2019, 14:24:20 UTC |
6683061 | Joost van Griethuysen | 02 September 2019, 13:21:23 UTC | ENH: Update CLI Dockerfile Setup PyRadiomics from the build context instead of cloning & installing it. | 02 September 2019, 13:21:23 UTC |
c5bc148 | Joost van Griethuysen | 02 September 2019, 12:50:03 UTC | BUG: Fix path to the pyradiomics-dcm.py script | 02 September 2019, 12:50:03 UTC |
9e6d486 | Joost van Griethuysen | 29 August 2019, 15:34:20 UTC | Update issue templates | 29 August 2019, 15:34:20 UTC |
4478b0c | Joost van Griethuysen | 29 August 2019, 15:19:16 UTC | DOCS: Refactor documentation - Update FAQ section - Move information on using the feature classes directly to the developers section, as it is not intended for standard usage. Additionally, fix typo in _cmatrices | 29 August 2019, 15:19:16 UTC |
7fb9423 | Joost van Griethuysen | 21 August 2019, 14:27:39 UTC | ENH: Add docker for pyradiomics-dcm labs script - Based on Docker file for PyRadiomics CLI, and copy required applications from the qiicr/dcmqi docker (segimage2itkimage and tid1500writer) - Update PyRadiomics CLI dockerfile to include bzip2-devel, which is needed to run pandas - Fix bug in pyradiomics-dcm.py: when using dcm2niix as converter, the expected filename should be included in the commandline arguments | 21 August 2019, 14:27:39 UTC |
0ff1d8f | Joost van Griethuysen | 14 August 2019, 05:22:48 UTC | BUG: Fix formatting of missing label error | 14 August 2019, 05:22:48 UTC |
52c671f | Joost van Griethuysen | 13 August 2019, 09:12:15 UTC | Merge pull request #514 from JoostJM/docker BUG: Update docker CLI to use python 3.6.9 | 13 August 2019, 09:12:15 UTC |
bb69378 | Joost van Griethuysen | 12 August 2019, 12:51:52 UTC | BUG: Update docker CLI to use python 3.6.9 | 12 August 2019, 13:53:40 UTC |
eae15ef | Andrey Fedorov | 30 July 2019, 15:19:01 UTC | fix typo | 30 July 2019, 15:19:01 UTC |
9a764cd | Andrey Fedorov | 30 July 2019, 15:05:59 UTC | clarify details about using DICOM as input | 30 July 2019, 15:14:04 UTC |
58a6143 | Andrey Fedorov | 30 July 2019, 14:30:47 UTC | add pointer to the list of SimpleITK supported formats | 30 July 2019, 14:30:47 UTC |
bad0f20 | Andrey Fedorov | 17 July 2019, 19:13:35 UTC | Merge pull request #506 from kaczmarj/patch-1 fix spelling error | 17 July 2019, 19:13:35 UTC |
70aca19 | Jakub Kaczmarzyk | 17 July 2019, 19:02:03 UTC | fix spelling error replace instances of "seperately" with "separately" | 17 July 2019, 19:02:03 UTC |
10fa9c8 | Joost van Griethuysen | 11 July 2019, 13:22:49 UTC | ENH: Upgrade docker CLI python version to python 3.6.9 | 11 July 2019, 13:22:49 UTC |
9232ffe | Joost van Griethuysen | 09 July 2019, 11:07:17 UTC | BUG: DeprecationWarning has no attribute `message` Change to `args[0]`. Fixes #503. | 09 July 2019, 11:07:17 UTC |
add4de0 | Joost van Griethuysen | 26 June 2019, 08:38:03 UTC | Merge pull request #501 from JoostJM/index-overflow BUG: Force dType of discretized image array to int. | 26 June 2019, 08:38:03 UTC |
3b6b37c | Joost van Griethuysen | 26 June 2019, 07:05:04 UTC | STYL: Prevent warning C4133 (incompatible types) In wrapper for calculation of texture matrices, pointers to the voxels array (3 datatypes) need to be initialized to NULL, which was done using a single line. However, this throws an incompatible datatypes warning when compiling, even though the code runs fine. Perform assignment on separate lines to prevent this warning. | 26 June 2019, 07:05:04 UTC |
5178571 | Joost van Griethuysen | 26 June 2019, 06:50:54 UTC | BUG: Force dType of discretized image array to int. If input image array has a dType with max-value smaller than the number of bins, an overflow can occur, causing invalid values and subsequent faillure of texture matrix calculation (e.g. values of '0' or negative values can be present, causing index errors). To prevent this, ensure the output datatype is 'int', which has a large enough dynamic range to prevent overflow (if number of bins is larger than INT_MAX, the extraction will most likely fail anyway, due to size/memory issues). | 26 June 2019, 06:50:54 UTC |
8c4785f | Joost van Griethuysen | 26 June 2019, 06:48:03 UTC | STYL: Revert change in helloRadiomics.py Accidentally committed unnecessary change in 6b6da3e. | 26 June 2019, 06:48:03 UTC |
0c23612 | Joost van Griethuysen | 25 June 2019, 10:55:58 UTC | Merge pull request #500 from JoostJM/index-overflow BUG: Mitigate integer overflow in texture classes | 25 June 2019, 10:55:58 UTC |
6b6da3e | Joost van Griethuysen | 25 June 2019, 10:26:58 UTC | BUG: Remove use of `intptr_t` Linux compiler does not recognize type `intptr_t`. Therefore, update code to work with `size_t`. | 25 June 2019, 10:26:58 UTC |
ea9613f | Joost van Griethuysen | 25 June 2019, 08:51:17 UTC | BUG: Mitigate integer overflow in texture classes Replace indexing using `int` data type by `size_t` and `intptr_t` datatype (depending on whether negative values are needed). | 25 June 2019, 08:51:17 UTC |
a68f6cf | Joost van Griethuysen | 12 June 2019, 05:25:38 UTC | Merge pull request #492 from maekclena/overflow BUG: Mitigate integer overflow | 12 June 2019, 05:25:38 UTC |
60b8ad0 | Maekclena | 11 June 2019, 15:53:36 UTC | BUG: Mitigate integer overflow | 11 June 2019, 15:53:36 UTC |
ac7458e | Joost van Griethuysen | 03 June 2019, 09:01:01 UTC | BUG: Fix resampling error when spacing is equal to resampledPixelSpacing When spacing is already correct, no resampling is required. However, if the size does not match, or the origin or direction is different, there can still be a geometry mismatch. Therefore, if the original image spacing is equal to the resampledPixelSpacing, apply resampling to just the mask, and then apply pre-crop. | 03 June 2019, 09:01:01 UTC |
7a5e509 | Joost van Griethuysen | 24 May 2019, 13:09:47 UTC | BUILD: update .dockerignore Update .dockerignore to resemble .gitignore file. This excludes many of the auto-generated files, but does include the .git folder, which is needed to create a valid version number by versioneer. | 24 May 2019, 13:09:47 UTC |
3c0708a | Joost van Griethuysen | 17 May 2019, 11:28:04 UTC | ENH: Add option for UNIX path sep for voxel-based output This allows the user to force the path separators in the output to be "/", even when running on Windows-based systems. | 17 May 2019, 11:28:04 UTC |
fab347b | Joost van Griethuysen | 17 May 2019, 08:09:52 UTC | ENH: Explicitly decode readme using utf-8 in setup.py Some build systems use ascii as the default encoding, which fails on the hyphen (0xe2) in the citation reference. | 17 May 2019, 08:09:52 UTC |
5d6f590 | Joost van Griethuysen | 16 May 2019, 12:53:28 UTC | ENH: Use YAML safe load | 16 May 2019, 12:53:28 UTC |
54d6689 | Joost van Griethuysen | 08 May 2019, 15:02:01 UTC | BUG: Fix errors in IBSI mapping | 08 May 2019, 15:02:01 UTC |
51c5849 | Joost van Griethuysen | 07 May 2019, 14:31:22 UTC | CI: Fix broken conda deployment Apply fixes investigated in [deploy_conda branch](https://github.com/JoostJM/pyradiomics/tree/deploy_conda). Fixes broken conda deployment for windows and linux: - Use miniconda for windows for all distributions, not just py27 - Use gcc_linux-64 instead of gcc in linux environment | 07 May 2019, 14:31:22 UTC |
24a9b42 | Joost van Griethuysen | 06 May 2019, 10:01:04 UTC | v2.2.0 Release | 06 May 2019, 14:55:33 UTC |
b09c23a | Joost van Griethuysen | 06 May 2019, 14:38:23 UTC | Merge pull request #486 from JoostJM/update_ci_python_dists Update ci python dists | 06 May 2019, 14:38:23 UTC |
d487180 | Joost van Griethuysen | 06 May 2019, 12:06:24 UTC | TEST: Update python distributions Drop support for Python 3.4, add support for Python 3.7 | 06 May 2019, 14:13:47 UTC |
c63020f | Andrey Fedorov | 03 May 2019, 22:35:13 UTC | BUG: add explicit conversion to float for feature values | 03 May 2019, 22:35:13 UTC |
394654d | Joost van Griethuysen | 03 May 2019, 11:08:22 UTC | BUG: Fix broadcasting bug in glcm Does not change output, as implicit broadcasting already yielded correct results. | 03 May 2019, 11:08:22 UTC |
7594bec | Joost van Griethuysen | 01 May 2019, 14:10:14 UTC | Merge pull request #481 from JoostJM/update_cli ENH: Refactor command line and feature extractor | 01 May 2019, 14:10:14 UTC |
1fc7884 | Joost van Griethuysen | 26 April 2019, 05:39:48 UTC | BUG: Fix JSON serialization - Handle json dump outside of loop, otherwise the result would not represent a valid json document (misses to top-level list). - Define a custom encoder to handle serialization of numpy arrays, as due to recent changes, feature values are numpy arrays with no shape (scalars). Finally, update some exception logging to reflect PyRadiomics' style (using `exc_info=True`). | 30 April 2019, 15:31:38 UTC |
4c1cbd0 | Joost van Griethuysen | 17 April 2019, 09:13:51 UTC | ENH: Update the jupyter notebooks | 30 April 2019, 15:31:00 UTC |
26d7ff6 | Joost van Griethuysen | 17 April 2019, 07:59:47 UTC | ENH: Refactor command line and feature extractor Commandline - Instantiate feature extractor in main loop and pass it to the worker processes (this will only load the parameter file once, including all checks etc.) - Simplify construction of `caseGenerator` (only contains case index and case, setting(overrides) are no longer needed as these are used to instantiate the extractor) - Remove function '_buildGenerator', as construction of the generator is now a one-line code. Deprecated commandline switch `label` is now handled inside the `_parseOverrides` function, which in turn is called in `_processCases`. FeatureExtractor - RENAME CLASS FROM `RadiomicsFeaturesExtractor` TO `RadiomicsFeatureExtractor`, which shows better correspondence to the module name. - Ensure that the feature extractor instance can be sent over a Pipe using pickle: - logger object is now defined as a global variable, not a variable of the extractor instance. This is done because this object often contains stream objects, which cannot be pickled - define geometryTolerance as a global variable, as this will then be set separately for each worker thread, as necessary. This prevents the tolerance from being set once in the parent process, but not in the child-processes. - Reduce the number of instance variables in the extractor as much as possible. Current variables retained (and pickled) are `settings`, `enabledImagetypes` `enabledFeatures`, `featureClassNames` - Move parsing of shape-calculation settings to the function `computeShape()` - Update docstring of `enableImageTypesByName` to reflect additions to PyRadiomics' filters - Move the binCount warning to the instantiation of the extractor, resulting in 1 warning overall, instead of 1 warning for each extraction case. Apply changes to rest of PyRadiomics' code to reflect changes made in feature extractor API. | 30 April 2019, 15:31:00 UTC |
a542f69 | Andrey Fedorov | 25 April 2019, 20:07:57 UTC | ENH: pretty print JSON output | 25 April 2019, 20:07:57 UTC |
eccdbc2 | Andrey Fedorov | 25 April 2019, 19:56:28 UTC | BUG: fix variable name Looks like no one used JSON output for batch execution before! | 25 April 2019, 19:56:28 UTC |
e9d60c7 | Joost van Griethuysen | 17 April 2019, 06:10:11 UTC | BUG: Force cast coefficients to float When calculating texture matrices, the graylevel vector will have the same datatype as the pixeltype of the input image. This can cause overflows when used in the feature calculation formulas. Therefore, force cast them to float prior to using in a feature formula. | 17 April 2019, 07:56:28 UTC |
009b5b2 | Joost van Griethuysen | 16 April 2019, 08:09:18 UTC | BUG: Fix some bugs when using temporary files in feature extraction - If the temporary output folder does not yet exist, create it - When intermediate file already exists, fix bugs in loading it | 16 April 2019, 08:09:18 UTC |
b6422ee | Joost van Griethuysen | 15 April 2019, 11:11:53 UTC | ENH: Apply precrop is no resampling is required If desired spacing is equal to current spacing, no resampling is required. However, part of the resampling process is to define a cropped area, reducing the size of imageNode and maskNode. If no resampling is, apply pre-cropping to obtain the same effect. | 15 April 2019, 11:11:53 UTC |
e3eb427 | Joost van Griethuysen | 11 April 2019, 09:11:58 UTC | STYL: Update style in labs documentation Additionally, fix some rendering errors. | 11 April 2019, 09:11:58 UTC |
723d868 | Joost van Griethuysen | 11 April 2019, 09:00:48 UTC | DOC: Fix math render errors. | 11 April 2019, 09:00:48 UTC |
690891d | Joost van Griethuysen | 11 April 2019, 08:50:39 UTC | DOC: Update documentation for getBinEdges() | 11 April 2019, 08:50:39 UTC |
3efae04 | Joost van Griethuysen | 27 March 2019, 09:25:41 UTC | LOG: Provide clearer error message when segmentation consists of 1 voxel | 27 March 2019, 09:25:41 UTC |
a7bed1d | Joost van Griethuysen | 22 March 2019, 09:57:16 UTC | ENH: Update calculation of RobustMeanAbsoluteDeviation Change the generation of the mask to prevent greater-than and lesser-than comparisons with NaN values. | 22 March 2019, 09:57:16 UTC |
decd8e1 | Joost van Griethuysen | 21 March 2019, 16:34:42 UTC | LOG: Fix indentation error when validating cases Final message was indented too much, causing it to log the final message after each individual case was validated. | 21 March 2019, 16:34:42 UTC |
6d385a1 | Joost van Griethuysen | 19 March 2019, 08:23:34 UTC | LOG: Update logging during mask loading - Fix a bug in the check for presence of the label - Raise error when resegmentation excludes all voxels in the ROI | 19 March 2019, 08:23:34 UTC |
8df1190 | Joost van Griethuysen | 14 March 2019, 16:15:08 UTC | BUG: Fix error in writing csv results When additional keys are found, csv writer issues an error. Prevent this by taking the set of all headers found in the cases and use that. | 14 March 2019, 16:15:08 UTC |
a5336fe | Joost van Griethuysen | 13 March 2019, 10:12:20 UTC | BUG: Fix range error for label channel | 13 March 2019, 10:12:20 UTC |
f4696b5 | Joost van Griethuysen | 13 March 2019, 09:36:57 UTC | DOCS: Add documentation on `voxelBatch` setting | 13 March 2019, 09:36:57 UTC |
077edb9 | Joost van Griethuysen | 13 March 2019, 09:21:04 UTC | BUG: Fix error in showing results in helloVoxel.py Because of changes made in #457 (more specifically, commit d90aa7f), diagnostic information is now also provided if voxel-based extraction is enabled. This requires type checking on the output in `helloVoxel.py`, as diagnostic features cannot be stored as a SimpleITK image. | 13 March 2019, 09:22:49 UTC |
3f49835 | Joost van Griethuysen | 06 March 2019, 14:02:49 UTC | Merge pull request #445 from JoostJM/add-segmentation-support Add support for overlapping masks / Slicer Segementation objects | 06 March 2019, 14:02:49 UTC |
8f12a51 | Joost van Griethuysen | 06 March 2019, 13:40:34 UTC | STYL: Fix typo in shape 2D documentation | 06 March 2019, 13:40:34 UTC |
e372598 | Joost van Griethuysen | 06 March 2019, 13:37:09 UTC | DOC: Add documentation of shape2D features | 06 March 2019, 13:37:09 UTC |
1b8490d | Joost van Griethuysen | 06 March 2019, 09:55:53 UTC | BUG: Use correct dtype when calculating voxel-based with full kernels When calculating voxel-based with full kernel, `maskArray` replaced by a `numpy.ones` array, of the same shape as the original `maskArray`. However, the dtype was not explicitly set, but needs to be boolean as it is used to slice an array later on. | 06 March 2019, 09:56:07 UTC |
6ec585c | Joost van Griethuysen | 06 March 2019, 09:50:56 UTC | ENH: Allow different type for parameter file path specification A file location may also be passed as e.g. an instance of pathlib WindowsPath, which is not recognized as a string, but does represent a valid file path. Therefore, change the check to see if the string representation of the passed object resolves to an existing file, and if so, use that file as the parameter file. | 06 March 2019, 09:50:56 UTC |
64a3ab0 | Joost van Griethuysen | 06 March 2019, 09:15:59 UTC | BUG: Fix misalignment when calculating firstorder voxel-wise In firstorder, image array is padded to ensure full kernels are always possible. However, this requires an update of the kernel coordinates, which need to be done on a copy of the coordinates to prevent misalignment in the results feature map. | 06 March 2019, 09:15:59 UTC |
49bda8c | Joost van Griethuysen | 01 March 2019, 16:42:50 UTC | Merge pull request #466 from JoostJM/add-bounding-box-iteration Add bounding box iteration | 01 March 2019, 16:42:50 UTC |
0602f6a | Joost van Griethuysen | 20 February 2019, 14:47:44 UTC | ENH: Select index using `label_channel` setting Additionally, add range constraint on `label` setting (> 0) and implement label check when getting the mask. | 20 February 2019, 16:29:29 UTC |
297b51c | Joost van Griethuysen | 07 December 2018, 11:31:38 UTC | ENH: Add support for overlapping masks / Slicer Segementation objects In the new version of Slicer, segmentation is done using Segmentation Objects, which allow for overlapping segmentation. When stored, these `.seg.nrrd` files can be read by SimpleITK as vector images. By extracting the nth index from the vector, a labelmap (3D volume) can be obtained representing the nth segement. To ensure correct functionality in the rest of PyRadiomics, all non-zero in the obtained mask are then set to the label value. | 20 February 2019, 16:29:29 UTC |
aecc8ec | Joost van Griethuysen | 20 February 2019, 16:10:14 UTC | BUG: Fix GSLZM calculation in voxel-based calculation When growing the regions, mask voxels are set to 0 to prevent reprocessing. However, when extracting voxel-based, these need to be reset to allow for correct processing of voxels in the subsequent kernels. Therefore, if Nvox > 1, keep track of the processed voxels and reset them after processing. Additionally, force cast PyArray_DIM to make function `try_parse_voxels_arr` consistent with function `try_parse_arrays`. | 20 February 2019, 16:29:08 UTC |
39262ad | Joost van Griethuysen | 20 February 2019, 14:51:33 UTC | STYL: Simplify initialization of target voxel array in firstorder | 20 February 2019, 16:29:08 UTC |
011999f | Joost van Griethuysen | 20 February 2019, 12:33:16 UTC | BUG: Fix bugs with empty angles in GLRLM and GLCM In segment based mode, empty angles are removed from the calculation, but when calculating multiple voxel kernels, empty angles may presist (empty in some kernels, not in others). Exclude those angles from the calculations per voxel by setting them to NaN and using `nanmean` for combining angle results. Additionally, move some of the coefficients that are only used in single features to those features. Conserves memory and prevents unnecessary calculation. | 20 February 2019, 16:29:08 UTC |
8de7fb2 | Joost van Griethuysen | 15 February 2019, 17:13:18 UTC | ENH: Implement vectorized voxel-based calculation Implement vectorized calculation of voxel kernels and remove need of kernel generation for voxel-based calculation of texture matrices. For the latter, define kernels by updating the bounding box for calculation on the fly in the C extension. The mask array is then only utilized to either mask the kernels (`maskedKernel=True`, maskArray elements true where segmented) or no mask, in which case the maskArray is set to `numpy.ones` of `shape(imageArray)`. This reduces both the number of python-based loops, as the iteration time in the C extension (only iterates over the kernel for each voxel, not the entire image). Vectorize all feature formulas (exception: shape and shape2D features) Update firstorder to work with vectorized calculation (add dimension to `targetVoxelArray`, add `discretizedTargetVoxelArray`. Add voxelSetting parameter `voxelBatch`, which controls the maximum number of voxel calculated in a vectorized way (allows specification of less voxels in 1 batch to conserve memory). Default setting of -1 means all voxels are calculated in one batch Additionally, remove `self.matrix`, as this is reference equal to `self.imageArray` when applying binning. | 20 February 2019, 16:29:08 UTC |
b01edeb | Joost van Griethuysen | 13 February 2019, 09:02:48 UTC | ENH: Add C support for by-voxel calculation Add an extra dimension as the first dimension of each texture matrix, which will correspond to the matrix for the segment (segment-based, size 1) or the specific kernel identified by the voxel index in the passed array (voxel-based). This will allow a more vectorized calculation of kernels when processing in by-voxel mode. Additionally, update the python formulas to allow for this additional dimension by adding axis specifications to all reducing operations and updating defined axes to shift by +1. Use numpy.squeeze to convert the returned result in segment-based calculation from a 1-D array with size 1 to a scalar float value. | 20 February 2019, 16:29:08 UTC |