4775ee1 | Joost van Griethuysen | 05 July 2018, 14:01:01 UTC | v2.0.0 release | 05 July 2018, 14:01:07 UTC |
5a09f94 | Joost van Griethuysen | 05 July 2018, 14:00:30 UTC | DOCS: Update documentation to reflect new type of installation | 05 July 2018, 14:00:30 UTC |
6b9f964 | Joost van Griethuysen | 05 July 2018, 13:05:07 UTC | Merge pull request #394 from JoostJM/publish-pypi Publish pypi | 05 July 2018, 13:05:07 UTC |
767d673 | Joost van Griethuysen | 05 July 2018, 12:53:22 UTC | ENH: Switch to live PyPi Server | 05 July 2018, 12:53:22 UTC |
04a1536 | Joost van Griethuysen | 05 July 2018, 11:44:32 UTC | ENH: Add testing of python 3.4-6 and 2.7 in for each CI server Add missing python versions to the matrix configuration of travis and appveyor config files. Rewrite the circle ci config file to work with parallel and sequential jobs in a workflow. Moreover, change CircleCI testing back to native python testing and use SciKit-CI (quicker setup of docker image used), and keep the testing of jupyter notebooks as a separate job performed after regular tests have passed Increase required version of setuptools to ensure correct processing of the `long_description_content_type` flag in `setup.py`. | 05 July 2018, 12:33:14 UTC |
c26b328 | Joost van Griethuysen | 04 July 2018, 16:53:02 UTC | BUG: Fix missing description | 05 July 2018, 11:37:31 UTC |
fbe985a | Joost van Griethuysen | 04 July 2018, 16:39:46 UTC | BUG: Fix missing patchelf tool in CircleCI Needed to run auditwheel, which in turn is used to correct the Linux wheels. | 04 July 2018, 16:39:46 UTC |
6615ec6 | Joost van Griethuysen | 04 July 2018, 16:17:51 UTC | ENH: Move creation of distribution to after_test In place of creation of the distributions, run build ext to test compilation of the C extensions in the Build step. | 04 July 2018, 16:17:51 UTC |
e6afeda | Joost van Griethuysen | 04 July 2018, 15:45:35 UTC | ENH: Add publishing to PyPi to continuous integration Adds a deploy step for all 3 ci-servers used by pyradiomics (supporting Linux, Windows and Mac OSX). The deployment step is only run for tagged releases, i.e. when a build is triggered for a tag. Furthermore, this tag is checked against a regex expression, to restrict deployment only to releases (e.g. v1.0, v2.1.3) and/or release candidates (e.g. v1.0-rc1, v2.1.3-rc12). Authentication to the PyPi server is done using (private) environment variables set in the accounts on the various CI-servers. These variables will be only available to builds on branches/tags in the repository that is linked to the CI-account (i.e. not available for forked builds). Finally, the current deployment step publishes to the test server, rather than the live server. This is done for testing of the workflow. Prior to integration into the master this will be rectified. | 04 July 2018, 15:45:35 UTC |
69933c7 | Joost van Griethuysen | 02 July 2018, 14:32:27 UTC | Merge pull request #393 from JoostJM/revise-bincount-checks Revise bincount checks | 02 July 2018, 14:32:27 UTC |
c8ceee2 | Joost van Griethuysen | 28 June 2018, 06:41:29 UTC | BUG: Skip returning the approximation in Wavelet twice The approximation should only be returned for the last wavelet, and this is done so by building it from `data`. However, during the iteration of the results (`dec`), the (intermediate) approximiation is not skipped. Add a check for skipping the approximation result in this loop. | 28 June 2018, 06:41:29 UTC |
c073d20 | Joost van Griethuysen | 27 June 2018, 16:00:19 UTC | Merge pull request #386 from JoostJM/add-binCount-support ENH: Add support for using a fixed bin count | 27 June 2018, 16:00:19 UTC |
5648984 | Joost van Griethuysen | 27 June 2018, 15:56:54 UTC | DOCS: Add detailed explanation on C-extension errors Add an explanation of the various errors thrown by the C extensions when calculating texture features in the C extensions to the FAQ section of the documentation. Also add some pointers to potential solutions where appropriate. | 27 June 2018, 15:56:54 UTC |
885f981 | Joost van Griethuysen | 11 January 2018, 22:33:47 UTC | ENH: Add support for using a fixed bin count In most literature on Radiomics to date, gray value discretization is done using either a fixed bin count or a fixed bin width. Although there is consensus on the need for discretization prior to texture-feature calculation, there is no definitive evidence favouring either the fixed bin count or fixed bin width method in a general application. There is some literature available showing a better reproducibility using a fixed bin width for features extracted from PET imaging. On the other hand, in many studies a fixed bin count is used. At PyRadiomics, we recommend using a fixed bin width, but implement a fixed bin count for completeness. See [this FAQ topic](http://pyradiomics.readthedocs.io/en/latest/faq.html#radiomics_fixed_bin_width) for a more detailed explanation of our rationale for recommending usage of a fixed bin width. Additionally, update the documentation to reflect the new voxel-based extraction functionality. | 27 June 2018, 15:31:54 UTC |
d3df83f | Joost van Griethuysen | 27 June 2018, 14:45:50 UTC | ENH: Check if Matrix arrays are allocated correctly If size is too big or the computer is unable to allocate memory for the output texture matrices, the function (PyArray_SimpleNew) returns NULL. Check for this and throw a python runtime error if that is the case. Replace the large number with `INT_MAX` in the size check for increased readability. | 27 June 2018, 14:45:50 UTC |
4027a52 | Joost van Griethuysen | 26 June 2018, 11:01:00 UTC | BUG: Fix axis definition in wavelet Use a list instead of a set to ensure the order of elements is preserved. A tuple is not used from the start, as elements cannot be deleted from the tuple. | 26 June 2018, 11:01:00 UTC |
f0e82e3 | Joost van Griethuysen | 20 June 2018, 14:13:48 UTC | Merge pull request #391 from JoostJM/bins-check ENH: Add check to prevent too many bins from being generated | 20 June 2018, 14:13:48 UTC |
844e03d | Joost van Griethuysen | 20 June 2018, 12:40:31 UTC | ENH: Add check to prevent too many bins from being generated When the GLCM is calculated in C, an array is generated of size Ng x Ng x Na (Ng = number of bins, Na = number of angles). If the number of bins exceeds 12852 with 13 angles, the resulting array has more than 2,147,483,648 elements, which in turn causes the index variable (int32) to overflow, crashing the python interpreter. Seeing as generally ~100 bins are advised, limit the number of bins instead of using datatypes that can reach higher numbers. A maximum number of 7000 is chosen (allowing for a maximum of 43 angles in GLCM). If the number of bins exceeds this number, an error is raised. Additionally, add a size check prior to instantiating the output arrays in C. If the size > 2147483648, throw an error. Fix typo in error message when calculation of angles fails. | 20 June 2018, 12:40:31 UTC |
da1fc16 | Joost van Griethuysen | 19 June 2018, 12:51:12 UTC | BUG: Fix deprecation error in featureextractor After recent merging of voxelwise extraction, API to a calculate features has changed from `calculateFeatures` to `execute`, this was correctly changed in feature extractor for the calculation of firstorder and texture features, but not for shape features. | 19 June 2018, 12:51:12 UTC |
1ec4fd6 | Joost van Griethuysen | 14 June 2018, 07:46:20 UTC | Merge pull request #389 from JoostJM/docker-requirements-bug BUG: Fix missing packages in Dockerfile | 14 June 2018, 07:46:20 UTC |
c0555c6 | Joost van Griethuysen | 13 June 2018, 15:40:08 UTC | Merge pull request #387 from JoostJM/add_wavelet_tests TEST: Add wavelet test | 13 June 2018, 15:40:08 UTC |
4803cb7 | Joost van Griethuysen | 13 June 2018, 08:16:39 UTC | BUG: Fix missing packages in Dockerfile To enable local binary pattern 2D and 3D, scipy, scikit-image and trimesh are additionally required, but these are not mentioned in the requirements (to allow installing without these packages). To enable these filters in the CLI-docker, add pip install lines for these packages to the dockerfile. | 13 June 2018, 08:16:39 UTC |
da7321d | Joost van Griethuysen | 13 June 2018, 08:03:25 UTC | TYPO: Fix typo in formula of firstorder-Uniformity A higher uniformity indicates a more homogeneous distribution of gray values instead of a more heterogeneous one. | 13 June 2018, 08:03:25 UTC |
aef949f | Joost van Griethuysen | 11 January 2018, 22:33:47 UTC | TEST: Add wavelet test Add a test to check if precropping and different size input images still produce the same output for the wavelet filter. This test uses 2 new test cases that have been added to the 1.0.0 release of PyRadiomics and enabled for download by `getTestCase()`. Additionally ensures temporal consistency by using a baseline file that defines the 1D-array of voxels in the ROI for each wavelet level (This array can be obtained by slicing the image array with a boolean cast of the mask array). The baseline is generated using the large (64x64x64) image without pre cropping. The function to generate this baseline is added to `add_baseline.py`. Finally, apply some style changes to the other test files to make them more consistent with pyradiomics style. Supersedes #348. | 05 June 2018, 11:01:52 UTC |
7e5f75d | Joost van Griethuysen | 11 January 2018, 22:33:47 UTC | DOCS: Update release notes | 05 June 2018, 08:49:49 UTC |
4464d1c | Joost van Griethuysen | 11 January 2018, 22:33:47 UTC | REF: Add references to new filters Add refrences to 2D and 3D Local Binary Pattern and Gradient (Magnitude) filter. Add new filters and feature classes in the ReadMe documentation. Fix to short title underling in FAQ documentation | 05 June 2018, 08:11:00 UTC |
e6435e7 | Joost van Griethuysen | 04 June 2018, 14:39:59 UTC | Merge pull request #337 from JoostJM/add-voxel-based-calculation ADD: Add voxel-based extraction | 04 June 2018, 14:39:59 UTC |
233b486 | JoostJM | 11 January 2018, 22:33:47 UTC | BUG: Fix broken tests Due to some API changes, continuous testing was reporting some errors: - Fix a flake8 coding style error in `base.py` - Add a call to `_initCalculation` in `test_cmatrices.py` to ensure feature classes are correctly initialized prior to calculating texture matrices - Update call in `test_features.py` to `execute` (reflecting API change) | 04 June 2018, 13:16:55 UTC |
fafe8c5 | Joost van Griethuysen | 11 January 2018, 22:33:47 UTC | ADD: Add customizable initialization value for voxel based extraction Add optional customization of the initialization value for the output arrays when calculating features voxel based. By default this value is 0, but any float is allowed. Additionally, change the name of the variable holding the customization settings in the feature classes from `kwargs` to `settings`. This better reflects what the variable holds and is similar to the variable name in the featureextractor module. | 04 June 2018, 13:14:33 UTC |
671acf5 | Joost van Griethuysen | 11 January 2018, 20:48:20 UTC | Update examples to reflect new API Only abstract feature class API is changed, so only the examples that work with the feature classes directly need be updated. | 04 June 2018, 13:11:20 UTC |
9aa5305 | Joost van Griethuysen | 11 January 2018, 21:36:24 UTC | ADD: Add example to show new voxel based functionality Add example settings for voxel based extraction. Add helloVoxel example to extract a parameter map from a test case. | 04 June 2018, 13:11:20 UTC |
4f9ab6b | Joost van Griethuysen | 11 January 2018, 20:02:30 UTC | ADD: Add voxel-based extraction Add a voxel based extraction, which outputs a dictionary of SimpleITK images instead of float values. Each voxel in the returned image represent the respective feature value for that region. The local region can be defined as 'masked' or 'unmasked'. In unmasked mode, the region is defined as a cube with radius `kernelRadius` around the voxel: the kernel. If part of the kernel is outside of the image bounds, those parts are excluded. In masked mode, the kernel is defined similar to unmasked mode, with additional exclusion of voxels that are outside the masked area (ROI). This change also slightly changes the moment of several instantiation. In previous version, the the texture matrices in glcm, glrlm, etc. were calculated during initialization of the class. However, because for the voxel-based extraction they have to be calculated separately for each voxel, this functionality has been moved to the top of the `_calculateFeatures` (which runs when the features are acutally calculated). N.B. This changes the API to the abstract feature class. Features are now extracted by a call to `execute` instead of `calculateFeatures`. In addition to a name change, `execute` also directly returns the result (similar to usage of the feature extractor class). As before, calculated results remain available in the class under the `featureValues` attribute. Adds a new section to the parameter file to allow customization of voxel-based extraction specific settings. TODO: - Update examples to reflect API change - Add functionality in feature extractor module to make voxel based extraction available - Write new examples to reflect new functionality | 04 June 2018, 13:10:27 UTC |
1b0eb74 | Joost van Griethuysen | 31 May 2018, 13:55:03 UTC | Merge pull request #373 from JoostJM/remove-python-equivalents-for-c-functions Remove python equivalents for c functions | 31 May 2018, 13:55:03 UTC |
06bc744 | Joost van Griethuysen | 31 May 2018, 13:54:46 UTC | Merge pull request #375 from tommydino93/patch-1 -swt3 comments | 31 May 2018, 13:54:46 UTC |
81dd0c1 | tommydino93 | 18 April 2018, 12:16:03 UTC | Update imageoperations.py | 18 April 2018, 12:16:03 UTC |
48c2bcd | tommydino93 | 18 April 2018, 12:06:09 UTC | Update imageoperations.py | 18 April 2018, 12:06:09 UTC |
fb166ac | tommydino93 | 18 April 2018, 11:28:08 UTC | Update imageoperations.py | 18 April 2018, 11:28:08 UTC |
597750b | tommydino93 | 18 April 2018, 07:57:50 UTC | Update imageoperations.py | 18 April 2018, 07:57:50 UTC |
dd75c92 | tommydino93 | 17 April 2018, 15:04:43 UTC | -swt3 comments I have just added some comments to the method _swt3 which is called inside the method getWaveletImage | 17 April 2018, 15:04:43 UTC |
0c80bdb | Joost van Griethuysen | 11 April 2018, 14:17:02 UTC | STYL: Fix Flake8 errors | 11 April 2018, 14:20:27 UTC |
9899db3 | Joost van Griethuysen | 27 March 2018, 10:00:57 UTC | ENH: Remove Python equivalents for C extension functionality Remove Python Texture matrix calculation: - GLCM - GLRLM - GLSZM - GLDM - NGTDM Remove Python surface area calculation Remove Python `GenerateAngles()` Remove parameters associated with enabling/disabling C Extensions Update warning messages displayed when C extensions fail to load. Update examples. Update documentation. | 11 April 2018, 14:01:45 UTC |
80ca820 | Joost van Griethuysen | 27 March 2018, 08:37:07 UTC | ENH: Update Matrices test script Remove Python calculation from `test_cmatrices.py`. Instead, compare to baseline files (binary numpy array files). Additionally, rename the script to `test_matrices.py`. Update and move the script to add a new baseline to the tests folder, so that it can utilize the testUtils module during generation of a new baseline. The updates now include the generation of a baseline matrix file if the class contains the appropriate function (`_calculateCMatrix`). | 11 April 2018, 14:01:45 UTC |
974a734 | Joost van Griethuysen | 09 April 2018, 08:04:02 UTC | Merge pull request #369 from fedorov/fix-std-formula Fix std formula | 09 April 2018, 08:04:02 UTC |
ca645d6 | Andrey Fedorov | 05 April 2018, 18:55:04 UTC | STYLE: fix syntax in feature formula documentation | 05 April 2018, 18:55:04 UTC |
72e02d4 | Andrey Fedorov | 05 April 2018, 18:50:52 UTC | STYLE: fix feature documentation formula syntax | 05 April 2018, 18:51:18 UTC |
11f5b5d | Joost van Griethuysen | 04 April 2018, 14:42:45 UTC | Merge pull request #366 from JoostJM/update-c-functions Update c functions | 04 April 2018, 14:42:45 UTC |
c559171 | Joost van Griethuysen | 26 March 2018, 15:39:11 UTC | ENH: Update/Simplify C functions for shape Ensure consistency between C functions in shape and texture, move common functionality to separate function (various checks to ensure validity of input). Also remove use of Deprecated Numpy API functions and define the constant to enforce this. Surface Area Simplify function by removing interpolation (also removes the need for the edgeTable). This can be done as the point on the edge is always 0.5 (corner is always either 0 or 1 as it represents a binary mask). Apply a similar fix to the python calculation of surface area. Diameters Implement a simplified and customized function to generate angles, which are needed to find all border voxels. Additionally, skip checking unnecessary indices (as mask is padded with 0's). | 28 March 2018, 14:07:14 UTC |
382b4fd | Joost van Griethuysen | 26 March 2018, 15:36:09 UTC | ENH: Switch to C generated angles Add a function in C to generate angles and implement this directly in the C functions to calculate the texture matrices. As the angles are sometimes needed to determine weights to apply to the matrices, generated angles are also returned by the C function; i.e. a tuple as (matrix, angles). | 26 March 2018, 15:36:09 UTC |
7241bd0 | Joost van Griethuysen | 22 March 2018, 12:11:25 UTC | STYL: Refactor / simplify C extensions Ensure all C extensions use similar signatures where possible (e.g. work with pointers for sizes, use strides extracted from the numpy array descriptions). This includes a bug fix in GLSZM calculation, where the newly created output array was not initialized with 0's. Additionally, add extra tests for the angles array: ensure that the shape is (Na, 3) and move this testing functionality to a separate function (as the same function can then be reused by all C extensions for texture matrices. Finally, factor out use of deprecated Numpy C API functions and add define to disable deprecated API. | 26 March 2018, 15:35:00 UTC |
ea9a6ce | Joost van Griethuysen | 26 March 2018, 08:24:50 UTC | DOCS: Fix typo in NGTDM example | 26 March 2018, 08:24:50 UTC |
38c3fb6 | Joost van Griethuysen | 21 March 2018, 10:10:30 UTC | Merge pull request #364 from JoostJM/imagetype-bug Update the validation rule for image types | 21 March 2018, 10:10:30 UTC |
665e9bc | Joost van Griethuysen | 21 March 2018, 09:22:05 UTC | BUG: Update the validation rule for image types Before, available filters were hard coded in the `paramSchema.yaml`, requiring the developer to add any new filters explicitly. Change this to use a schema validation rule which checks against the result of `getImageTypes`, which dynamically enumerates the available filters. Additionally, by applying a regex matching rule that matches any key, the validation rule to test the custom settings is retained. | 21 March 2018, 09:22:05 UTC |
62b3cbd | Joost van Griethuysen | 14 March 2018, 15:45:10 UTC | Merge pull request #357 from JoostJM/add-lbp Add Local Binary Pattern Image Filter | 14 March 2018, 15:45:10 UTC |
9914251 | Joost van Griethuysen | 08 March 2018, 10:37:27 UTC | ADD: Add 3D implementation of Local Binary Pattern Uses spherical harmonics implemented in `scipy` and defines an icosphere (implemented in `trimesh`) to sample neighbours. Derived images are returned for each level, with an additional derived image for the kurtosis. To reduce computation time/cost, LBP is only calculated for voxels included in the segmentation. To implement this, the signature of a filter function is changed (in addition to the image, the mask is also passed to the function). Update the examples, feature extractor and documentation accordingly. | 14 March 2018, 14:59:34 UTC |
8777b55 | Joost van Griethuysen | 07 March 2018, 15:32:47 UTC | DOC: Update documentation style of feature classes | 14 March 2018, 14:58:11 UTC |
ec009e9 | Joost van Griethuysen | 07 March 2018, 14:46:22 UTC | ADD: Add and document a 2D implementation of Local Binary Pattern Requires `skimage` to function. `skimage` is not added to the requirements and only imported when the function is called. If the package is unavailable, a warning is logged and no image is yielded (does not crash the extraction, but no features for LBP are calculated) | 14 March 2018, 14:58:11 UTC |
947c48f | Joost van Griethuysen | 14 March 2018, 14:56:29 UTC | Merge pull request #356 from JoostJM/add-gradient-filter Add the Gradient Magnitude image filter. | 14 March 2018, 14:56:29 UTC |
d87f9f3 | Joost van Griethuysen | 08 March 2018, 12:25:54 UTC | DOC: Add Gradient filter to documentation | 13 March 2018, 09:10:07 UTC |
3e4bd2d | Joost van Griethuysen | 07 March 2018, 12:01:10 UTC | ADD: Add the Gradient Magnitude image filter. Returns an image with the gradient magnitude as voxel value. Adds parameter `gradientUseSpacing`, which controls whether or not to take image spacing into account when computing the gradient. | 13 March 2018, 09:10:07 UTC |
de34dce | Joost van Griethuysen | 13 March 2018, 09:08:43 UTC | Merge pull request #353 from JoostJM/update-testing Update testing | 13 March 2018, 09:08:43 UTC |
d7447de | Joost van Griethuysen | 08 March 2018, 13:27:52 UTC | ENH: Further update getTestCase() function No further changes to the interface are made. However, if `dataDirectory` is specified and no test cases can be found there, it subsequently downloads testcases into that directory. This allows users to get test cases easily, but store them locally (not in a temporary directory). If no directory is supplied, the temporary directory is used. Attempts to create the directory if they don't already exist. | 08 March 2018, 13:27:52 UTC |
61e82ca | Joost van Griethuysen | 07 March 2018, 15:44:11 UTC | STYL: Fix Flake8 errors | 08 March 2018, 12:27:24 UTC |
b447fa4 | Joost van Griethuysen | 07 March 2018, 15:36:39 UTC | BUG: Update test_cmatrices to new interface | 08 March 2018, 12:27:24 UTC |
617ddcc | Joost van Griethuysen | 06 March 2018, 16:53:15 UTC | ENH: Reconfigure tests Allows for multiple configurations using the same test cases (e.g. force2D extraction, weighting). Also redefines the structure of the baseline files, as this allows for better tracking of changes. | 08 March 2018, 12:27:24 UTC |
ca94c9e | Joost van Griethuysen | 06 March 2018, 14:40:40 UTC | ENH: Update the getTestCase() function Test data is now available als binary data attached to the v1.0 release. Update the `getTestCase()` function to retrieve images from this location (does not use the `data` directory anymore) and update the use of this function in the examples and testing scripts. If data is available locally, this can still be used by passing it to the `getTestCase()` function, but it is not used in the repository anymore (allows for removal of the test cases from the repository itself to speed up cloning/downloading. See also #60. | 08 March 2018, 12:27:24 UTC |
dffb440 | Joost van Griethuysen | 08 March 2018, 06:18:04 UTC | Merge pull request #347 from JoostJM/refactor-clis ENH: Refactor CLI scripts | 08 March 2018, 06:18:04 UTC |
010db6e | Joost van Griethuysen | 07 March 2018, 15:24:02 UTC | Merge pull request #351 from JoostJM/ngtdm-feature-fix BUG: Fix formula error in NGTDM's Complexity and Contrast | 07 March 2018, 15:24:02 UTC |
5358d21 | Joost van Griethuysen | 07 March 2018, 10:43:02 UTC | Merge pull request #355 from JoostJM/eigenvalue-bug BUG: Fix machine precision errors in eigen value calculation | 07 March 2018, 10:43:02 UTC |
655f269 | Joost van Griethuysen | 07 March 2018, 10:17:02 UTC | DOC: Update changelog | 07 March 2018, 10:17:02 UTC |
f75bfce | Joost van Griethuysen | 07 March 2018, 10:14:34 UTC | BUG: Fix machine precision errors in eigen value calculation If the segmentation in the dataset represents a 2D segmentation, the smallest of the 3 eigenvectors should be 0. But because a transform to physical coordinates (taking into account rotation and scaling), this can actually compute very small (~1e-16) negative numbers. This in turn causes an error in numpy.sqrt. This commit implements a 3-fold fix. 1) Because we do not need the eigen vectors, we can also calculate the eigenvalues using just the scaled coordinates, without rotation. In case of a 2D segmentation, this then results in correct calculation of 0 for the smallest eigen value. 2) After computation of eigen values. They are checked if they are negative, but > -1e-10. If that is the case, a warning is logged and they are rounded to 0. 3) Add additional checks to ensure the eigenvectors are not < 0 (effectively < -1e-10) in the feature functions. If that is the case, a warning is logged and nan is returned. | 07 March 2018, 10:14:34 UTC |
940ea94 | Joost van Griethuysen | 06 March 2018, 12:38:41 UTC | DOCS: Update release notes and baseline | 06 March 2018, 12:38:41 UTC |
4af8364 | Joost van Griethuysen | 19 February 2018, 12:09:12 UTC | BUG: Fix formula error in NGTDM's Complexity and Contrast Erroneously divided by the square of number of voxels, instead of just the number of voxels. Additionally, use the number of voxels with at least 1 neighbor, which is lesser equal to the total number of voxels in the ROI (exclude voxels without neigbors). Update documentation accordingly | 06 March 2018, 12:29:47 UTC |
1af2eff | Joost van Griethuysen | 06 March 2018, 12:29:00 UTC | DOCS: Update release notes | 06 March 2018, 12:29:00 UTC |
0f16cd2 | Joost van Griethuysen | 02 March 2018, 09:05:32 UTC | DOCS: Update documentation for new entry point style. Additionally, re-add the `pyradiomicsbatch` as a deprecated entry point to preserve legacy functionality. Also re-add the `--label` argument as a deprecated argument in the `pyradiomics` entry point. | 02 March 2018, 09:05:32 UTC |
dd7c445 | Joost van Griethuysen | 21 February 2018, 17:23:29 UTC | ENH: Refactor CLI scripts Combine the `pyradiomics` and `pyradiomicsbatch` entry point into 1 joint entry point `pyradiomics`. This new entry point operates in batch mode when input to `Image|Batch` has `.csv` extension. In batch mode, `Mask` argument is ignored. In single mode `Mask` inputs is required. Additionally, enables easy multi-threaded extraction by specifying `--jobs` / `-j` argument (with integer indicating number of parallel threads to use. Will only work in batch mode, as extraction is multi-threaded at the case level (1 thread per case). Removes argument `--label` / `-l`, specifying an override label to use is now achieved through specifying `-s "label:N"`, with N being the label value. Also includes a small update to initialization of the feature extractor: - In addition to a string pointing to a parameter file, feature extractor now also accepts a dictionary (top level specifies customization types 'setting', 'imageType' and 'featureClass') as 1st positional argument - Regardless of initialization with or without a customization file/dictionary, `kwargs` passed to the constructor are used to override settings. | 22 February 2018, 13:28:51 UTC |
2e6d2c1 | Joost van Griethuysen | 21 February 2018, 16:22:28 UTC | Merge pull request #346 from michaelschwier/resize_bug BUG: Fixed resizing for wavelet filtering (resizing was scrambling image) | 21 February 2018, 16:22:28 UTC |
67845cf | Michael Schwier | 21 February 2018, 15:54:03 UTC | ENH: changed pad mode from constant to wrap | 21 February 2018, 15:54:03 UTC |
bc9f0fd | Joost van Griethuysen | 21 February 2018, 15:47:31 UTC | Merge pull request #345 from JoostJM/add-filter-formulas DOCS: Add formula for LoG | 21 February 2018, 15:47:31 UTC |
00408d0 | Joost van Griethuysen | 20 February 2018, 10:00:00 UTC | DOCS: Add ITK reference to LoG-filter documentation Additionally, update the title overlines in installation.rst to match the title (style error). | 20 February 2018, 10:00:00 UTC |
7ff0548 | Michael Schwier | 16 February 2018, 20:05:49 UTC | BUG: Fixed resizing for wavelet filtering. Resizing does not scramble image anymore. (bugfix courtesy of Jan Moltz/Fraunhofer MEVIS) | 16 February 2018, 20:05:49 UTC |
8b39b51 | Joost van Griethuysen | 17 March 2017, 08:22:04 UTC | DOCS: Add formula for LoG Add documentation with formulas defining the LoG filter. | 15 February 2018, 10:00:00 UTC |
8c7dd45 | Joost van Griethuysen | 30 January 2018, 12:13:42 UTC | Merge pull request #342 from JoostJM/add-package-versions DOCS: Add version of packages used in feature calculation | 30 January 2018, 12:13:42 UTC |
c7c5d2e | Joost van Griethuysen | 30 January 2018, 11:11:15 UTC | BUG: Fix incorrect path in helloRadiomicsWithSettings.py Path in L79 was build using a hardcoded `\`, which only works on windows. Fix this error by implementing a call to `os.path.join`. | 30 January 2018, 11:11:15 UTC |
cb321f5 | Joost van Griethuysen | 24 January 2018, 15:07:06 UTC | DOCS: Add version of packages used in feature calculation Add versions of SimpleITK, Numpy and PyWavelet to the additional info output. PyRadiomics uses these 3 packages to process the images and calculate the features. | 24 January 2018, 15:07:06 UTC |
ed9e300 | Joost van Griethuysen | 15 January 2018, 13:10:48 UTC | BUG: Update paths in testCases.csv Update the paths in the testCases file to use `/` instead of `\`. This fixes loading the testcases using this file on Linux and Mac. | 15 January 2018, 13:12:02 UTC |
9420a45 | Joost van Griethuysen | 10 January 2018, 22:20:14 UTC | Merge pull request #334 from JoostJM/add-json-configuration Add json configuration | 10 January 2018, 22:20:14 UTC |
85a367b | Joost van Griethuysen | 10 January 2018, 17:44:14 UTC | DOCS: Update customization section Make the customization section more readable by using a different format for the settings names. Add a back reference in the parameter file section, pointing back to the customization section (provides the exhaustive list of possible settings etc.) | 10 January 2018, 17:44:14 UTC |
ed19f0b | Joost van Griethuysen | 10 January 2018, 17:37:44 UTC | ENH: Add support for JSON configuration string Add a function (`LoadJSONParams`) in the featureextractor, which accepts a JSON formatted string. This string will then be validated similar to a parameter file and if successful, used to customize the extraction. | 10 January 2018, 17:37:44 UTC |
e6886e2 | Andrey Fedorov | 09 January 2018, 03:41:24 UTC | Merge pull request #333 from fedorov/fix-travisci BUG: add pip link | 09 January 2018, 03:41:24 UTC |
5f244f2 | Andrey Fedorov | 09 January 2018, 02:12:15 UTC | BUG: add pip link As suggested by @jcfr in https://github.com/Radiomics/pyradiomics/pull/332#issuecomment-356097814 | 09 January 2018, 02:12:15 UTC |
5e1d7a6 | Andrey Fedorov | 09 January 2018, 02:10:38 UTC | Merge pull request #329 from fedorov/add-docker-instructions ENH: update installation instructions | 09 January 2018, 02:10:38 UTC |
e174424 | Andrey Fedorov | 03 January 2018, 17:26:33 UTC | ENH: add instructions on how to generate sphinx documentation | 03 January 2018, 17:26:33 UTC |
9c01e5f | Andrey Fedorov | 03 January 2018, 17:23:29 UTC | ENH: add docker setup instructions | 03 January 2018, 17:23:29 UTC |
a9bff5d | Andrey Fedorov | 28 December 2017, 22:17:09 UTC | ENH: update installation instructions Add instructions for 3D Slicer extension and Docker approaches. | 28 December 2017, 22:17:09 UTC |
fb7590c | Joost van Griethuysen | 20 December 2017, 10:53:27 UTC | DOCS: Make link to google groups forum more visible | 20 December 2017, 10:53:27 UTC |
2504f45 | Joost van Griethuysen | 15 November 2017, 13:07:55 UTC | STYL: Correct Flake8 errors | 15 November 2017, 13:07:55 UTC |
0257217 | Joost van Griethuysen | 15 November 2017, 10:51:13 UTC | 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 | Joost van Griethuysen | 02 November 2017, 09:24:07 UTC | Merge pull request #323 from JoostJM/wavelet-update Simplify Wavelet filter function | 02 November 2017, 09:24:07 UTC |
b395904 | Joost van Griethuysen | 01 November 2017, 15:46:09 UTC | REF: Update reference to official publication. | 01 November 2017, 15:46:09 UTC |
71ed68d | Joost van Griethuysen | 31 October 2017, 15:58:24 UTC | 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 |