https://github.com/Radiomics/pyradiomics

sort by:
Revision Author Date Message Commit Date
09c5125 Merge branch 'master' into slicer # Conflicts: # radiomics/featureextractor.py 05 December 2017, 09:13:54 UTC
2504f45 STYL: Correct Flake8 errors 15 November 2017, 13:07:55 UTC
0257217 BUG: Fix error handling for image/mask mismatch In `imageoperations.checkMask` and error is thrown if the image and mask do not align or contain tolerance errors. The error message is caught and parsed to provide users with a more insightful message providing potential solutions. However, this was done by evaluating the `message` attribute of the RunTimeError thrown by SimpleITK. This attribute is present in python 2, but not in python 3. Instead, use `args[0]` attribute, which contains the message, and is present in both python 2 and 3. 15 November 2017, 10:51:13 UTC
6ac3bb8 Merge pull request #323 from JoostJM/wavelet-update Simplify Wavelet filter function 02 November 2017, 09:24:07 UTC
b395904 REF: Update reference to official publication. 01 November 2017, 15:46:09 UTC
71ed68d ENH: Simplify Wavelet filter function PyWavelets package supports applying wavelets sequentially along multiple axes, therefore there is no need for reslicing the (partially filtered) data using python functions. This reduces a lot of complexity in the code and also includes a higher performance of the filter. Additionally, allow for 2D application of wavelets when `force2D` is set to `True`, where no wavelet will be applied along the `force2Ddimension`. 01 November 2017, 15:23:45 UTC
8f283a5 Merge pull request #319 from JoostJM/change-filter-coefficients Change calculation of filter correction coefficients 01 November 2017, 15:21:57 UTC
209019b Merge pull request #320 from JoostJM/binwidth-explained Add explanation on enforcing a bin width 01 November 2017, 15:21:42 UTC
b5e6081 Merge pull request #321 from JoostJM/duplicate_features Remove duplicate features 30 October 2017, 09:10:50 UTC
91f3820 BUG: Fix incorrect reference in addClassToBaseline.py The addClassToBaseline disables all image types and then enables just the `Original` image type, but did this using the old names for the needed functions. Update the names to reflect changes made to `featureextractor.py` 27 October 2017, 14:24:12 UTC
18ffb41 BUG: Prevent testing of deprecated features Unit testing determined test to run by checking all features that are contained in the feature class, but this also includes the deprecated features. Change test case generation to use the list of features for which there is the baseline (in current class and current test case). Additionally, check if these baseline features include tests for all non-deprecated features. Change the `getFeatureNames` function in `base.py` to generate a dictionary instead of a list: the key is the feature name, and the value is a boolean indicating if the feature is deprecated (`True`). 27 October 2017, 14:17:33 UTC
3f8feea TEST: Remove deprecated features from baseline Remove deprecated features from baseline, these are not calculated anymore. Features that are not removed, but only marked as redundant / deprecated are still included in the unit tests (and baseline). 26 October 2017, 17:03:26 UTC
54232d3 ENH: Add "deprecated" decorator Add "deprecated" decorator to mark (feature) functions as being deprecated. This will add an `_is_deprecated` attribute to the function object (value will be `True`). When a feature function has this attribute (and set to `True`), this feature will not be enabled by default (i.e. when no individual features for that class are specified, or when all classes are enabled, again, without specifying individual features). These features can still be enabled by specifying them as individual features. Some features are deprecated, but also return a deprecation warning. This is also included in the documentation. 26 October 2017, 16:56:55 UTC
52e55bf STYL: Re-add duplicate features as deprecated features Re-add the feature calculation functions for the duplicate features, but instead of returning a result, raise a `DeprecationWarning` exception, which is handled in the base class. This will not add the deprecated feature to the returned results, but log a warning to notify the user of the duplicity. Additionally, for features with certain important assumptions, add warning messages to the log when these assumtions are not met: - Joint Average, if the GLCM is not symmetrical - Sum of Squares, if the GLCM is not symmetrical - Sum Average, if the GLCM IS symmetrical (as it is then equal to 2 * Joint Average) 26 October 2017, 15:51:08 UTC
a2208a9 Merge pull request #322 from JoostJM/gldm-bug Fix incorrect usage of self.maskArray 26 October 2017, 12:04:06 UTC
b6a0c4a Remove duplicate features In addition to the equality between the formulas for Sum Variance and Cluster Tendency (#300), the following features also have identical formulas: GLDM - Gray Level Non-Uniformity Normalized = First Order - Uniformity GLCM - Dissimilarity = GLCM - Difference average GLCM - Homogeneity1 = GLCM - ID (Exactly identical formula, only difference in name) GLCM - Homogeneity2 = GLCM - IDM (Exactly identical formula, only difference in name) Remove these features from the feature classes and update the documentation accordingly. Remove features from example parameter files where applicable. Add mathematical proof for these equalities to the documentation. Simplify formulas in documentation for GLSZM, GLRLM and GLDM (use a predifined variable Nz for the sum of the matrix). 26 October 2017, 09:17:10 UTC
0b8d1ed BUG: Fix incorrect usage of self.maskArray In full-python calculation of the GLDM matrix, calculation would fail when label != 1. Update GLDM to also work with different mask values. Fix an additional bug in testUtils, where the Label value stored in the baseline was not passed to the checkMask function when loading a test case. 26 October 2017, 09:16:56 UTC
8a75ab8 FAQ: Add explanation on enforcing a bin width Add a FAQ explaining why pyradiomics only allows the specification of a fixed bin width, and not a fixed bin count. 26 October 2017, 09:16:40 UTC
4700502 STYL: Fix flake8 errors 26 October 2017, 09:14:52 UTC
36bd0b1 STYL: Remove bare except statements Flake8 fails on bare except statement. Recode these statements as `except Exception`. 26 October 2017, 08:29:19 UTC
7535f8d Merge pull request #318 from JoostJM/filter-out-nans Add --skip-nans command line argument 23 October 2017, 08:26:50 UTC
4a5b250 ENH: Add --skip-nans command line argument Add a command line argument to skip printing out features that compute a NaN. Fixes #314 23 October 2017, 06:16:42 UTC
172dafd BUG: Change calculation of filter correction coefficients Update coefficients to use `max(|x|)`, instead of `max(x)` (use the absolute values). This prevents invalid calculation, as `max(x)` can be negative (impossible sqrt in square filter). Furthermore, this defines the range to be scaled to the larges difference from 0, instead of just the maximum value (which can yield very different ranges). 23 October 2017, 05:59:27 UTC
60c18e2 Merge pull request #317 from JoostJM/add-precrop Add pre-cropping 19 October 2017, 15:07:49 UTC
939c0e5 ENH: Add pre-cropping When resampling is enabled, image and mask are pre-cropped onto the bounding box (with additional padding). This speeds up the resampling process and the application of filters. Moreover, it can significantly reduce the memory footprint of the extraction, especially when the images are large, but contain only small ROIs. Add functionality to also pre-crop the image when no resampling is applied. This way, the advantages when applying filters on a pre-cropped image and mask are also available when extracting without resampling. Similar as pre-cropping when resampling, additional padding is available (parameter `padDistance`), which is ensure to not exceed the original image bounds. 14 October 2017, 11:16:41 UTC
ac66e6c DOCS: Update Changelog and notebooks. Update Changelog to reflect recent changes made. Update notebooks to work with latest version of PyRadiomics. 12 October 2017, 08:52:08 UTC
4425f4b Merge pull request #310 from JoostJM/remove-32-bit-support Remove 32 bit support 12 October 2017, 08:07:17 UTC
e6227f2 ENH: Remove 32 bit support When using PyRadiomics in 32 bits architecture, memory errors can arise when extracting large masks, or many small ones (see also #303). Therefore, remove support for 32 bits architecture by raising an exception when trying to install PyRadiomics on 32 bits architecture. Update documentation accordingly. 11 October 2017, 14:21:55 UTC
c4b1785 Merge pull request #313 from Radiomics/remove-unused-circle-1.0-config ci: Remove unused circle 1.0 configuration files 11 October 2017, 14:14:04 UTC
b845694 ci: Remove unused circle 1.0 configuration files The configuration files became obsolete following 672e7b2 (Migrating to CircleCI 2). 11 October 2017, 14:08:41 UTC
f11440f Merge pull request #312 from Radiomics/readme-improve-badge-layout README: Improve badges layout 11 October 2017, 14:07:01 UTC
e9ef927 README: Improve badges layout [ci skip] 11 October 2017, 13:56:20 UTC
aca0d08 Merge pull request #306 from JoostJM/update-base-docs Update documentation in base.py 09 October 2017, 16:14:21 UTC
4139259 Merge pull request #309 from JoostJM/add-pykwalify-log-handler Add logger handler to pykwalify if none is defined 09 October 2017, 15:29:41 UTC
a746c31 Merge pull request #305 from JoostJM/add-parallel-processing Add parallel batch processing example 09 October 2017, 14:53:04 UTC
d389152 Merge pull request #307 from JoostJM/update-batch-script Add additional checks to batch processing script 09 October 2017, 14:52:52 UTC
c99e290 LOG: Add logger handler to pykwalify if none is defined When parameter validation fails, PyKwalify logs an error. However, by default, no handlers are configured (as pyradiomics defines it's handlers at the 'radiomics' level, not the root logger). Check if either the root logger or PyKwalify has a logger handler configured. If not, add the first radiomics handler (the stream handler with output to stderr), so the error is logged if the parameter validation fails. Fixes #304 09 October 2017, 14:36:51 UTC
16b8b45 ENH: Add parallel batch processing example Add an example of how to extract features using parallel threading (1 thread per case). Assumes similar input and produces similar output as `batchprocessing.py`, with the addition of two additional predifined, but optional, columns; "Patient" and "Reader". 06 October 2017, 15:58:32 UTC
9222e23 ENH: Add additional checks to batch processing script Add additional checks to ensure required columns are present and have a value for each case. If columns are missing, log an error and exit. If cells in required column have missing values (empty strings), log an error and skip to next case. Also update the image and mask filepath if the path is relative, as it is assumed to be relative to the input file, not the current working directory. Finally replace `os.path.exists` with `os.path.isfile` in `featureextractor.py`, as a directory is also an existing path, but should not be used during attempt to load using SimpleITK. 06 October 2017, 15:58:20 UTC
0acccfe DOCS: Update documentation in base.py Clarify that variables mentioned in the base class are variables instantiated by the base class, not possible settings for customization (also add redirect to customization documentation). Update the documentation to reflect changes made to the structure of the base class, more specifically the initialization of a feature class. Add documentation for the "Label" parameter to the customization documentation. 06 October 2017, 15:58:06 UTC
f268b92 DOCS: Update version in README 06 October 2017, 15:51:40 UTC
ee56ab5 PyRadiomics 1.3.0 06 October 2017, 13:50:42 UTC
403cb74 Merge pull request #295 from JoostJM/add-gldm Add Gray Level Dependence Matrix (GLDM) 06 October 2017, 13:21:05 UTC
531e886 ENH: Add Gray Level Depende Matrix (GLDM) 06 October 2017, 12:31:49 UTC
fda2a25 Merge pull request #296 from JoostJM/add-ngtdm Add Neighbouring Gray Tone Difference Matrix (NGTDM) 06 October 2017, 12:24:51 UTC
6933258 ENH: Add Neighbouring Gray Tone Difference Matrix (NGTDM) 13 September 2017, 00:56:08 UTC
0a0eb4f Merge pull request #302 from JoostJM/add-resegementation Add optional resegmentation of mask 12 September 2017, 23:07:39 UTC
4022f56 Merge pull request #301 from fedorov/add-docker ENH: update cli-docker to use CentOS 6 07 September 2017, 16:48:35 UTC
8fc0a41 ENH: update cli-docker to use CentOS 6 07 September 2017, 16:47:35 UTC
5da1850 DOCS: Update reference to getImageTypes() function to reflect change by #291 PR 291 changed the name of the function, but failed to correct the reference to it in the developers section of the documentation. 07 September 2017, 15:59:05 UTC
390aff4 ENH: Add resegmentation Add functionality to resegment the mask prior to calculation of features (ony applies to firstorder / texture, no resegmentation possible prior to shape feature calculation). Introduces new parameter `resegmentRange`, a list of 2 floats which define the lower and upper threshold, respectively. Values outside the range specified are removed from the mask. When the resultant size is too small (parameter `minimumROISize`, default 1), an error is logged and the original mask is used. A value of None (the default value) for the parameter `resegmentRange` disables resegmentation. 07 September 2017, 15:36:06 UTC
4f9abf1 Merge pull request #299 from JoostJM/update-resampling Allow a 0 value for output spacing when resampling 07 September 2017, 15:31:40 UTC
0f6a0d1 ENH: Allow a 0 value for output spacing when resampling When resampling, allow the output spacing for any dimension to be set to 0 (the parameter 'resampledPixelSpacing' still needs to be a sequence of 3 elements, but the value of any element can be 0). Doing so will enable 'preserving' the original spacing, as 0 values are replaced with the original spacing for that dimension (original spacing of the mask). This way, it is possible to only resample in-plane (by setting the out-of-plane output spacing to 0). Additionally, move the check between original and resampled spacing to after the size check (no resampling over dimensions for which bounding box size = 1) and build in a tolerance (1e-5 + 1e-8 * abs(resampledspacing)). Finally, fix data type for resampled spacing in the validation schema for parameter files (change from integer to float). 06 September 2017, 14:49:00 UTC
1c52a10 Merge pull request #297 from fedorov/add-docker ENH: add a dockerfile that exposes command line tools 06 September 2017, 14:43:34 UTC
c8aab69 Merge pull request #300 from JoostJM/remove-duplicate-features Remove Sum Variance 06 September 2017, 14:33:40 UTC
70f1c48 Fix typos in CHANGES.rst 05 September 2017, 00:30:55 UTC
147c1c8 STYL: Correct difference variance formula (docs) Correct error in difference variance formula as pointed out by @clarehchao. Additionally, fix an error in the exampleCT settings (enabled shape features erroneously listed as glcm features). 05 September 2017, 00:15:31 UTC
81f32fd Update baseline 04 September 2017, 21:19:41 UTC
de633a9 Remove Sum Variance feature Sum Variance is mathematically equal to Cluster Tendency, therefore remove Sum Variance from PyRadiomics. Add a new section to the documentation that lists removed features with the reason why this was done (here including the proof that Sum Variance and Cluster Tendency are equal). Additionally, Sum Average is very similar to Joint Average (if and only if the GLCM is symmetrical, Sum Average = 2 * Joint Average). As there is a difference possible between these features, but not in the case of 'default' settings, Sum Average is not removed, but disabled in the default parameter files. 04 September 2017, 20:52:10 UTC
b5bddb5 STYL: Update feature function names to better reflect feature names Some feature function names differed from the feature name due to changes to enhance comparability to IBSI defined features. Update the function names to reflect the feature names. 04 September 2017, 20:14:12 UTC
956175e DOCS: Update GLCM formula documentation u_x and u_y are represented in the documentation as being a function of i and j, respectively. However, these variables are both scalars. Update the documentation to reflect this. 04 September 2017, 20:09:18 UTC
26b9ef3 BUG: Fix name of force2D when generating angles (GLRLM and GLSZM) Because GLRLM and GLSZM are forced with distance 1, other parameters are passed manually to the generate angles function. However, the `force2D` parameter was named incorrectly and as such, ignored. Fix the name to enable forced 2D extraction for GLRLM and GLSZM. 04 September 2017, 17:43:49 UTC
5ce9f48 DOCS: Fix error in usage documentation In the documentation on using the feature classes directly, the line to enable all features in the first order feature class was missing. This resulted in no features being calculated, as on the feature class level, all features are disabled by default. 01 September 2017, 15:42:16 UTC
7dcc2a9 Change license in setup.py to reflect change by #272 31 August 2017, 13:40:53 UTC
1675ac7 DOCS: Add changes of #294 to changelog 29 August 2017, 19:35:22 UTC
ef2c40f Merge pull request #294 from JoostJM/docs-add-contributing Add contributing to documentation 29 August 2017, 19:29:22 UTC
96da6ae ENH: add a dockerfile that exposes command line tools 23 August 2017, 15:03:22 UTC
c73e7e3 DOCS: Update reference to SlicerRadiomics in the readme 23 August 2017, 08:59:55 UTC
d1c5bf4 DOCS: Update links to contributing guidlines from documentation and readme 23 August 2017, 08:55:42 UTC
0dca895 DOCS: Add contributing to documentation Change CONRTRIBUTING.md to restructured text and include it in the sphinx generated documentation. Additionally, add a section to encourage users to share their parameter files in the PyRadiomics repository. 23 August 2017, 08:38:10 UTC
de5e977 TEST: Add test for example settings Add a nosetest that checks all yaml structured files (= files with `.yaml` or `. yml` extension) in `examples/exampleSettings`. All found files are validated using PyKwalify and the paramSchema and functions in PyRadiomics Additionally, add a simple python script to manually test a parameter file (`bin/testParams`). 23 August 2017, 08:16:41 UTC
7db7798 DOCS: Update Changes.rst 23 August 2017, 08:16:05 UTC
70665cc Merge branch 'master' into slicer # Conflicts: # radiomics/featureextractor.py 23 August 2017, 08:13:14 UTC
9ae44b2 STYL: Update log messages to better reflect changes made by #291 23 August 2017, 08:11:24 UTC
425c7e9 Merge pull request #291 from JoostJM/revert-280 Revert 280 and 281, update customization names and documentation 23 August 2017, 07:59:17 UTC
ff622d8 STYL: Revise parameter naming Make distinction between different categories of parameters more explicit, and rename categories to better reflect their definition. PyRadiomics can be customized via 3 categories of *parameters*: 1. "imageType": specifies filters / image types that can be used to extract features from 2. "featureClass": specifies which feature classes and features should be extracted 3. "setting": specifies all setting to customize how the extraction is done. In PyRadiomics, "parameter" refers to one or more customization categories and "setting" refers explicitly to type 3 customization. Furthermore, document that only type 3 parameters can be provided at initialization when not using the parameter file (type 1 and 2 have to be changed using dedicated functions in featureextractor (type 1 and 2) or the individual feature classes (type 2). Especially for type 1, this includes renaming of various variables, including the name used in the parameter file ("imageType" in stead of "inputImage"). Finally, expand documentation on making the parameter file, including an example directly in the documentation (instead of just referring to the repository). 21 August 2017, 13:30:23 UTC
fd36b18 Revert 280 / 280 Reverts #280 / #281, as this change introduces some confusion into the what goes into `**kwargs` for initialization of featureextractor (or one of the feature classes). `**kwargs` only contains settings (i.e. one of the three categories of customization). PRs #280 and #281 included `inputImages` (one of the other categories) to enable customizing the enabled input image types in the slicer extension. However, the functionality to customize this is already present in featureextractor through function calls (such as `enableAllInputImages()`). Therefore, revert these PRs and update the slicer extension to make use of this API. 21 August 2017, 08:04:27 UTC
a3fa6c7 Merge pull request #290 from fabianbalsiger/master Fixes typos 21 August 2017, 06:16:33 UTC
a8d63c9 Merge branch 'master' into master 18 August 2017, 13:52:33 UTC
462f347 DOCS: typo Volum to Volume 18 August 2017, 13:36:06 UTC
aa51f3f DOCS: typo Volum to Volume 18 August 2017, 13:35:05 UTC
df8d79d BUG: Fix capitalization error in example settings Filter should be "Wavelet", not "wavelet" 18 August 2017, 10:28:40 UTC
181e599 Merge pull request #284 from JoostJM/document-ibsi-compliance Add reference to IBSI feature definitions 16 August 2017, 14:53:00 UTC
e0cba85 Merge pull request #274 from JoostJM/revise-base-initialization Revise style in base initialization 16 August 2017, 14:48:48 UTC
3288643 Merge pull request #288 from JoostJM/document-log Make sigma documentation more clear 16 August 2017, 14:48:32 UTC
f496d40 STYL: Make sigma documentation more clear 16 August 2017, 10:05:37 UTC
4ca4ead STYL: Update some variable and function names for clarity ROICoordinates --> labelledVoxelCoordinates size --> boundingBoxSize _initLesionWiseCalculation() --> _initSegementBasedCalculation() Additionally, add feature class name to log message when feature class is initialized. 16 August 2017, 09:58:01 UTC
d41028a STYL: Revise style in base initialization 16 August 2017, 09:58:01 UTC
f75de97 DOCS: Add reference to IBSI feature definitions Add a reference to the feature definitions by IBSI, and document where PyRadiomics features differ. 16 August 2017, 09:57:23 UTC
8e01df7 Merge pull request #287 from JoostJM/add-python2-docker Fix missing python 2 environment 16 August 2017, 09:55:24 UTC
d2126d1 BUG: Fix loading parameter file in notebooks. Some recent changes broke source code in some notebooks (wrong/missing imports, missing new lines). 16 August 2017, 09:39:55 UTC
968a962 BUG: Fix missing python 2 environment See also [#433](https://github.com/jupyter/docker-stacks/pull/433) on jupyter/docker-stack. Python 2 support is now removed from jupyter/datascience-notebook. Update dockerfile and config.yml to install python2 kernel manually. 16 August 2017, 09:06:34 UTC
cb17d65 BUG: Fix JSON error in RadiomicsExample.ipynb Similar error and fix as previous 2 commits; missing comma in notebook breaks JSON decoding. 16 August 2017, 09:04:08 UTC
1043547 BUG: Fix JSON error in FilteringEffects.ipynb Similar error and fix as previous commit; missing comma in notebook breaks JSON decoding. 16 August 2017, 08:59:06 UTC
c8fa6ae BUG: Fix JSON error in feature visualization notebooks In FeatureVisualization.ipynb and FeatureVisualizationWithClustering.ipynb, a missing comma caused a JSON decode error, breaking the notebook. Insert missing commas to fix. 16 August 2017, 08:06:43 UTC
73233c6 Merge pull request #285 from JoostJM/fix-urllib-python3-compatibility Fix python3 incompatibility when getting a test case 16 August 2017, 06:38:33 UTC
511d02d TEST: Update dockerfile only run certain notebooks Only run helloRadiomics.ipynb, helloFeatureClass.ipynb and PyRadiomicsExample.ipynb, as these extensively test PyRadiomics, but are not dependent on 3rd party URLs to run correctly. Additionally, update the paths to ensure correct relative paths. 16 August 2017, 06:23:18 UTC
9d278bb BUG: Add directory check when downloading example data When downloading example data, the feature visualization notebooks assumes a directory called `example_data` exists. However, if this is not the case, an error is thrown when trying to download the example_data zip file. Add a check to determine if the directory exists and if not, create a directory. Fixes #276 16 August 2017, 06:23:18 UTC
f1550c6 BUG: Fix python3 incompatibility when getting a test case In python 3, the function `urlretrieve` is moved. Prevent incompatibility by using implementation in `six.moves`. 16 August 2017, 06:23:18 UTC
8c4313d Fix url path for data and citation in notebook example 15 August 2017, 18:18:03 UTC
back to top