b9b1cd6 | Joost van Griethuysen | 11 October 2018, 06:05:06 UTC | STYL: Update style to PyRadiomics style, minor changes Update style to follow PyRadiomics Style (2 space indent, logger child of 'radiomics' logger). Additionally, add some minor changes (e.g. use of choices in argument parser, mark methods as static where applicable) | 19 October 2018, 20:52:56 UTC |
b17f29c | Andrey Fedorov | 10 October 2018, 15:28:12 UTC | ENH: minor improvements * recognize wavelet features computed with forced 2d * do not require both plastimatch and dcm2niix installed | 19 October 2018, 20:52:56 UTC |
b25e21f | Joost van Griethuysen | 09 October 2018, 13:18:33 UTC | STYL: Update import order, remove pathlib module Update import order to adhere to coding style (prevents flake8 errors) Additionally, remove usage of pathlib, as it is not available in python 2.7 (It is only part of the std lib since 3.4). | 19 October 2018, 20:52:56 UTC |
679a78f | Andrey Fedorov | 09 October 2018, 20:00:21 UTC | ENH: improved documentation * added README * added sample command line and parameter file that will be use in the @zhenweishi study | 19 October 2018, 20:52:56 UTC |
e02e625 | Andrey Fedorov | 09 October 2018, 19:39:06 UTC | ENH: include pyradiomics identification and version | 19 October 2018, 20:52:56 UTC |
4038d98 | Andrey Fedorov | 08 October 2018, 17:55:36 UTC | STYLE: fix flake8 issues | 19 October 2018, 20:52:56 UTC |
3e2febf | Andrey Fedorov | 08 October 2018, 17:41:19 UTC | ENH: cleanup and reorganization Mapping of features to ISBI is added temporarily, pending resolution of #435 | 19 October 2018, 20:52:56 UTC |
f3b235e | Andrey Fedorov | 05 October 2018, 21:20:33 UTC | WIP: DICOM-ified pyradiomics script Initial commit, copy of the script from https://github.com/QIICR/dicom4miccai-handson/tree/master/scripts Re #434 | 19 October 2018, 20:52:56 UTC |
6a7cb98 | Joost van Griethuysen | 19 October 2018, 09:59:40 UTC | Merge pull request #410 from JoostJM/expand-feature-tests Expand feature tests | 19 October 2018, 09:59:40 UTC |
9d992fe | Joost van Griethuysen | 15 October 2018, 08:58:14 UTC | BUG: Fix error in JSON serialization Currently, the standard JSON encoder does not serialize int16 and throws a type error. To prevent this, ensure that image and mask diagnostics return type float (for features, this is already the case). | 15 October 2018, 08:58:14 UTC |
167888b | Joost van Griethuysen | 05 October 2018, 14:26:26 UTC | BUG: Fix memory error in MCC Due to the broadcasting of 4 arrays (with each of shape Ng x Ng x Ng x Na after broadcasting), too much memory is needed. Therefore, compute Q using a for loop instead of broadcasting and `numpy.sum`. This is a slightly slower computation method, but should take care of the memory issue. | 05 October 2018, 14:26:26 UTC |
d8074dc | Joost van Griethuysen | 05 October 2018, 09:08:20 UTC | Merge pull request #433 from JoostJM/add-input-validation ENH: Implement input validation for PyRadiomics script | 05 October 2018, 09:08:20 UTC |
b9d5f26 | Joost van Griethuysen | 05 October 2018, 08:54:50 UTC | TEST: Add new tests Testing for - normalization - resampling - matrix merging (GLCM, GLRLM) - Fixed bin Count (Only texture classes) - resegmentation (Not shape class) - flat region (Only texture classes) | 05 October 2018, 09:04:32 UTC |
765cbd3 | Joost van Griethuysen | 21 September 2018, 12:08:45 UTC | ENH: Retain original ordering when re-writing baseline files Additionally allow for adding to/updating existing tests. | 05 October 2018, 08:53:40 UTC |
efaea42 | Joost van Griethuysen | 21 September 2018, 11:52:37 UTC | ENH: Update testing to work with new definition of provenance information "general_info" features have been replaced by "diagnostics" features. Update the testing scripts and baseline to reflect this change. | 05 October 2018, 08:31:41 UTC |
e2284d3 | Joost van Griethuysen | 15 August 2018, 09:16:52 UTC | ENH: Use feature extractor functionality when running tests Use the loadImage function of the feature extractor to load the images and apply pre-processing. Remove deprecated setting "enableCExtensions" from the baseline files. | 05 October 2018, 08:30:00 UTC |
5103356 | Joost van Griethuysen | 15 August 2018, 08:14:35 UTC | ENH: Update test package to new name nose-parameterized is deprecated. | 05 October 2018, 08:30:00 UTC |
84c01ff | Joost van Griethuysen | 15 August 2018, 08:14:08 UTC | ENH: Add script to create new tests This script takes a configuration file, a test name (must be unique) and the test case to use. It then generates the output and stores this in the baseline files. Update the test_features script to allow for tests that do not test all available features. (testing still fails if there are feature classes that are not tested). When a feature class is tested, all features must be enabled. | 05 October 2018, 08:30:00 UTC |
1d8c1d2 | Joost van Griethuysen | 03 October 2018, 14:47:16 UTC | Merge pull request #431 from JoostJM/force-cast-mask ENH: Implement force-cast while loading mask | 03 October 2018, 14:47:16 UTC |
e815a1a | Joost van Griethuysen | 02 October 2018, 13:53:19 UTC | ENH: Implement input validation for PyRadiomics script Checks if passed settings are valid and if all file locations for input Image and Mask exist. | 03 October 2018, 12:12:37 UTC |
f6accf5 | Joost van Griethuysen | 02 October 2018, 15:47:06 UTC | TEST: Update mask hashes to reflect new hash due to force cast When force casting to sitk.UInt32, the mask hash is changed for the breast and lung test cases. Update the mask hash in the baseline and force cast the mask prior to hashing in the testUtils to retain consistency with the feature extractor output. | 02 October 2018, 15:47:06 UTC |
89a957d | Joost van Griethuysen | 01 October 2018, 11:19:38 UTC | ENH: Implement force-cast while loading mask PyRadiomics requires the mask to be of an integer data type. Force type to UInt32 upon load from file (string input), or apply a Cast (SimpleITK.Image input). Remove now unnecessary cast in `imageoperations.cropToTumorMask` | 02 October 2018, 15:35:51 UTC |
6542181 | Joost van Griethuysen | 02 October 2018, 15:10:36 UTC | BUG: Fix a bug in MCC function Improve the fix added in e15f169. In case of a flat region, GLCM has shape [1, 1, a], thereby resulting only in 1 eigenvalue (1). To prevent an indexing error, return arbitrary 1 in this case. In certain cases linalg.eigvals returns a complex number. Cast to float to ensure just the real part is returned. | 02 October 2018, 15:10:36 UTC |
e85f05c | Joost van Griethuysen | 28 September 2018, 14:28:18 UTC | v2.1.0 Release | 28 September 2018, 14:28:18 UTC |
14809a5 | Joost van Griethuysen | 28 September 2018, 11:22:11 UTC | Merge pull request #427 from JoostJM/mesh-volume Mesh volume and diameters | 28 September 2018, 11:22:11 UTC |
263e8b3 | Joost van Griethuysen | 27 September 2018, 12:59:35 UTC | STYL: Update shape documentation and feature names To better reflect computation method, explicitly name the two volume features `MeshVolume` and `VoxelVolume`. Add documentation specifying the unless otherwise mentioned, features are based on the mesh approximation of the shape. Only exceptions to this are the `VoxelVolume` and PCA-derived features (`MajorAxisLength`, `MinorAxisLength`,`LeastAxisLength`, `Elongation` and `Flatness`. For these features, it is explicitly stated in the documentation that these do not make use of the mesh approximation, but the segmented voxel(center)s themselves. | 28 September 2018, 10:52:02 UTC |
1642170 | Joost van Griethuysen | 21 September 2018, 08:02:39 UTC | TEST: Update baseline | 28 September 2018, 10:52:02 UTC |
7fd96f2 | Joost van Griethuysen | 21 September 2018, 08:02:24 UTC | ENH: Calculate Maximum diameters based upon mesh Similar to the change in volume calculation, change the calculation for maximum diameters into one based on the triangle mesh generated by the marching cubes algorithm. This yields a higher consistency between volume, surface area and diameters, as they are now all based on the same volume (defined by the triangle mesh). Additionally, this is also computationally more efficient, as only one pass over all voxels is required, instead of 1 for surface area and volume, and another one for the calculation of the maximum diameters. | 28 September 2018, 10:52:02 UTC |
00e18bf | Joost van Griethuysen | 18 September 2018, 15:47:15 UTC | ENH: Calculate Volume based on triangle mesh In concordance with the IBSI definition of volume, calculate it using the triangle mesh that is also generated for the calculation of surface area. This yields a better correspondence between the calculated volume and surface area, needed for calculation of several subsequent shape features (e.g. sphericity). Original formula for calculation is retained as 'new' feature "ApproximateVolume". | 28 September 2018, 10:52:02 UTC |
8451138 | Joost van Griethuysen | 28 September 2018, 08:34:11 UTC | TEST: Add explicit install of numpy in install step In the case where PyWavelet needs to be compiled, numpy must be available. Even though it is specified in the requirements, it will not be available for compiling PyWavelets if not previously installed. Prevent failure of installation by explicitly checking if numpy is available and install it if not. | 28 September 2018, 10:52:02 UTC |
6223d35 | Joost van Griethuysen | 28 September 2018, 08:44:10 UTC | BUG: fix building pywavelets from source Since release 1.0.0 of PyWavelets, python 3.4 is no longer officially supported. Therefore, no pre-built wheels are available on PyPi. To retain support for Python 3.4 on windows, it has to be build from source (pulled form PyPi). For this, both Cython and Numpy need to be pre-installed. For Linux and Mac, 3.4 wheels are available for the latest release. | 28 September 2018, 10:51:40 UTC |
4eb9264 | Joost van Griethuysen | 27 September 2018, 13:05:47 UTC | Merge pull request #428 from JoostJM/resegmented-shape ENH: Allow to also use resegmented mask for shape calculation | 27 September 2018, 13:05:47 UTC |
b3282f5 | Joost van Griethuysen | 25 September 2018, 10:06:01 UTC | ENH: Allow to also use resegmented mask for shape calculation Add new paramter `resegmentShape` to control this behaviour. This allows the user to also use the resegmented mask for shape calculation, e.g. in the usecase of PET, where a resegementation based on SUV may be performed (e.g. to obtain mean tumor volume). Addtionally, update documentation to reflect new resegmentation modes. | 25 September 2018, 10:06:01 UTC |
8cedd8f | Joost van Griethuysen | 24 September 2018, 09:39:17 UTC | BUG: Update logging in PyRadiomics scripts - Fix bug where a more verbose log level for the file is ignored (logger level was not updated) - Prevent repeated configuration of logging, leading to multiple file handlers and duplicate messages in the log - Update format of the main thread to more closely match those in a parallel thread | 24 September 2018, 09:39:17 UTC |
828a7ac | Joost van Griethuysen | 21 September 2018, 12:59:30 UTC | Typo: Remove duplicate key in example "shape" feature class was listed twice. | 21 September 2018, 12:59:30 UTC |
a59861e | Joost van Griethuysen | 21 September 2018, 12:46:23 UTC | ENH: Prevent division by 0 in ngtdm Coarseness In case of a flat region, N_gp = 1, resulting a division by 0. Return 0 for Coarseness in this case. | 21 September 2018, 12:46:23 UTC |
e15f169 | Joost van Griethuysen | 21 September 2018, 12:28:07 UTC | BUG: Fix a bug in MCC function In case of a flat region, GLCM has shape [1, 1, a], thereby resulting only in 1 eigenvalue (1). To prevent an indexing error, return arbitrary 1 in this case. In certain cases linalg.eigvals returns a complex number. Cast to float to ensure just the real part is returned. | 21 September 2018, 12:28:07 UTC |
592ab62 | Joost van Griethuysen | 21 September 2018, 12:24:33 UTC | BUG: Fix error in settings parsing In the normalization function, 2 settings are used: "normalizeScale" and "removeOutliers". However, the parsing at the start of the function used incorrect names. Apply a fix to ensure correct parsing. | 21 September 2018, 12:24:33 UTC |
423c666 | Joost van Griethuysen | 21 September 2018, 10:53:36 UTC | Merge pull request #411 from JoostJM/add-maximal-correlation-coefficient ADD: Add GLCM Maximal Correlation Coefficient | 21 September 2018, 10:53:36 UTC |
4f73269 | Joost van Griethuysen | 20 September 2018, 12:06:21 UTC | Merge pull request #425 from JoostJM/enhance-function-customization ENH: Change signature of customizable functions to use `kwargs` | 20 September 2018, 12:06:21 UTC |
f84c17f | Joost van Griethuysen | 14 September 2018, 12:53:25 UTC | ENH: Change signature of customizable functions to use `kwargs` All functions that can be customized in the settings, or call functions that can be customized, now use a signature using `kwargs`, which will contain all customization specified in the `setting` section. Necessary elements are obtained using `get()` at the start of the function. This enables easier addition of new features (only needed to update validation and the function itself, which saves updating the calls to the function throughout pyradiomics). Additionally, this also allows users to replaces functions in PyRadiomics with their own, so long as it follows the same signature (but now does allow for additional/different customization arguments). | 20 September 2018, 11:54:53 UTC |
ec3b415 | Joost van Griethuysen | 17 September 2018, 12:27:04 UTC | Merge pull request #426 from JoostJM/Bug-general-info BUG: Fix error in generation of provenance info with misaligned mask | 17 September 2018, 12:27:04 UTC |
7af844f | Joost van Griethuysen | 17 September 2018, 11:55:45 UTC | STYL: Update naming of provenance info features Features providing diagnostic/provenance info are now encoded as diagnostics_<Type>_<Feature>. Here <Type> is either "Versions", "Configuration", "Image-<specifier>" or "Mask-<specifier>". In the latter 2 cases, the specifier indicates where in the preprocessing pipeline the image or mask is: "original" (as from file), "interpolated" (after resampling, only available if enabled), "corrected" (only mask, if mask correction was needed) and "resegmented" (only mask, if resegmentation is enabled). Finally <Feature> indicates the element in that particular group, e.g. "Size" for the x, y and z dimensions of the image or mask. | 17 September 2018, 11:55:45 UTC |
40070bb | Joost van Griethuysen | 17 September 2018, 11:07:29 UTC | BUG: Fix error in generation of provenance info with misaligned mask When image and mask do not share an identical geometric space, the general info elements for ROI mean, minimum and maximum are incorrect. In case where the mask size does not match the image size, this even produces an error. Therefore, do not include the image prior to the image and mask geometry are ensured to be the same (this is only the case for the original mask, as the next step is either resampling (forcing similar geometry) or checkMask (comparing/correcting geometry)). Additionally, add spacing and size elements of the mask for comparison. | 17 September 2018, 11:07:29 UTC |
c285c15 | Joost van Griethuysen | 12 September 2018, 15:53:16 UTC | BUG: Fix some small bugs in the baseline generation script | 14 September 2018, 12:43:29 UTC |
0a5a7d7 | Joost van Griethuysen | 23 August 2018, 15:34:41 UTC | DOCS: Expand explanation of IMC 1 and 2 Also document the equality of HXY1 and HXY2 (both equal to HX + HY), and their relationship with mutual information (I = HX + HY - HXY). Add the expected ranges of values. Fix typos in the rendering of the MCC formula. | 12 September 2018, 13:24:18 UTC |
f4e9392 | Joost van Griethuysen | 22 August 2018, 14:29:26 UTC | ADD: Add GLCM Maximal Correlation Coefficient Add the 14th Haralick feature to the GLCM. Add baseline for this feature and update documentation accordingly. Additionally, simplify eigenValue calculation in shape.py (instead of numpy.linalg.eigval, call numpy.linalg.eigvals, which only returns eigenvalues and not the eigenvectors (not used)). | 12 September 2018, 13:24:18 UTC |
7d919cf | Joost van Griethuysen | 12 September 2018, 09:33:55 UTC | BUG: Fix error in general info generation (image elements) Min and max were reversed. | 12 September 2018, 09:33:55 UTC |
e4eaf85 | Joost van Griethuysen | 10 September 2018, 12:00:25 UTC | Merge pull request #420 from JoostJM/update-resegmentation Extend resegmenting functionality | 10 September 2018, 12:00:25 UTC |
c44fa15 | Joost van Griethuysen | 28 August 2018, 15:03:08 UTC | ENH: Update provenance info, use error raising Update the general info class, which will now be updated at multiple points in the extraction pipeline. This enables reflecting the various changes introduced by the pre-processing. Instead of returning "None" when checks fail, raise a ValueError. This removes the need for checking for "None" and ensures that the extraction is cancelled, with a warning message shown to the user. | 10 September 2018, 11:27:17 UTC |
b3a1504 | Joost van Griethuysen | 28 August 2018, 12:45:05 UTC | ENH: Extend resegmenting functionality In addition to the original mode (now default mode "absolute"), add new modes "relative" and "sigma", which allow for a dynamic threshold defined as either a threshold relative to the maximum value found in the ROI ("relative") or as a n * sigma difference from the mean ("sigma"). Additionally, it is now allowed to provide either 1 or 2 thresholds, where in case of 1 threshold it is interpreted as the lower threshold (i.e. retaining everything equal to or higher than that threshold). In case the function fails, a ValueError is raised. The checks to determine the validity of the resegmented mask is not determined in this function, but is applied in the pipeline defined by featureextractor. | 10 September 2018, 11:26:12 UTC |
a4d0f8a | Joost van Griethuysen | 10 September 2018, 11:17:48 UTC | Merge pull request #422 from JoostJM/publish-conda Publish conda | 10 September 2018, 11:17:48 UTC |
875e7b4 | Joost van Griethuysen | 07 September 2018, 15:55:02 UTC | ENH: Only deploy from main repository | 10 September 2018, 09:40:16 UTC |
fec600a | Joost van Griethuysen | 07 September 2018, 14:31:17 UTC | ENH: Enable upload to conda | 07 September 2018, 15:19:29 UTC |
be7464e | Joost van Griethuysen | 07 September 2018, 13:16:36 UTC | ENH: Move conda configuration to separate bat/sh file | 07 September 2018, 14:03:56 UTC |
623b836 | Joost van Griethuysen | 07 September 2018, 13:33:11 UTC | BUG: Fix incorrect check for minimum ROI dimensions. By using `<=`, also ROIs that had the same number of dimensions as minimum dimensions were excluded. Additionally, set the default value for required minimum dimensions to 2 (2D ROIs). | 07 September 2018, 13:33:11 UTC |
c39ea9c | Joost van Griethuysen | 06 September 2018, 11:35:19 UTC | Test: Test packaging in Appveyor and Travis | 07 September 2018, 11:51:02 UTC |
d64ebab | Joost van Griethuysen | 05 September 2018, 13:39:48 UTC | ADD: Add conda packaging Add a recipe for building a conda package for PyRadiomics. Update config.yml for CircleCI to test a script for automated building and uploading to Anaconda. Currently just builds the distributions, but does not upload them. | 06 September 2018, 09:55:04 UTC |
0fe737e | Joost van Griethuysen | 29 August 2018, 09:20:33 UTC | DOCS: Update Readme and setup.py script setup.py - Add additional project urls - Add classifier python 3.6 Readme - Update docker section (include CLI docker, point to dockerhub, instead of building docker) - Update usage section on use of CLIs - Add new (optional) requirements, which are needed for LBP filters | 29 August 2018, 09:20:33 UTC |
bbf8238 | Joost van Griethuysen | 29 August 2018, 08:20:28 UTC | v2.0.1 Release Update changelist and documentation. | 29 August 2018, 08:20:28 UTC |
f3ee994 | Joost van Griethuysen | 28 August 2018, 11:56:26 UTC | Merge pull request #416 from JoostJM/add-center-of-mass Add center of mass (General Info) | 28 August 2018, 11:56:26 UTC |
217a840 | Joost van Griethuysen | 28 August 2018, 09:53:22 UTC | BUG: Fix incorrect parsing of Label in batch file When a column "Label" has been specified in the batch input file, the value should be used for the extraction label. However, this is required to be an integer, whereas it may be parsed as string. Therefore, add a check to convert to integer if it is a string (and therefore not None). When extracting in parallel, info messages of each thread are filtered out of the console output. However, info messages from the script, e.g. detailing how long the extraction of a single patient took, should not be filtered out. In the batch script, this filter had the wrong logger name passed to the filter (radiomics.batch instead of radiomics.script). | 28 August 2018, 09:53:22 UTC |
917fadf | Joost van Griethuysen | 27 August 2018, 14:23:38 UTC | Merge pull request #419 from JoostJM/bug-memory-leaks Fix memory leak in C extensions | 27 August 2018, 14:23:38 UTC |
ce20248 | Joost van Griethuysen | 27 August 2018, 13:25:14 UTC | BUG: Fix memory leak in C extensions Since C functionality is implemented for the calculation of the angles, texture matrix calculation returns a tuple of the matrix and the angles. However, this uses Py_BuildValue with specifier "O", which increases the reference count, and thereby introduces a memory leak. Fix this by replacing "O" by "N", which has the same effect for the returned values, but does not increase the reference count. Moreover, the angles array is only needed for GLCM and GLRLM matrices. Therefore, only return the angles array in these 2 functions and free the array in the other functions. | 27 August 2018, 13:47:16 UTC |
69ccb7d | Joost van Griethuysen | 22 August 2018, 08:03:36 UTC | Merge pull request #407 from JoostJM/simplify-glcm-features ENH: Simplify computation of various GLCM features | 22 August 2018, 08:03:36 UTC |
91405b0 | Joost van Griethuysen | 28 November 2017, 10:26:37 UTC | ENH: Add center of mass Add a general info feature that computes the center of mass of the current ROI. Center of mass is computed in both continuous index coordinates (`getCenterOfMaskIndexValue`) and real-world coordinates (`getCenterOfMassValue`). | 15 August 2018, 09:48:08 UTC |
5e475ba | Joost van Griethuysen | 14 August 2018, 08:44:50 UTC | Merge pull request #409 from JoostJM/bugfix-docker-cli BUG: Fix missing requirements in docker CLI file | 14 August 2018, 08:44:50 UTC |
09af9b5 | Joost van Griethuysen | 13 August 2018, 11:31:27 UTC | BUG: Fix missing requirements in docker CLI file For the additional filters, PyRadiomics requires scikit-image, which in turn requires matplotlib. To install this package, freetype and libpng are needed. Install these as well. | 13 August 2018, 11:31:27 UTC |
fe0e2c3 | Joost van Griethuysen | 13 August 2018, 10:06:37 UTC | DOCS: Update usage section on commandline usage Show correct way to specify output file in batch processing. Fix help message in the commandline script showing the default format (is "txt", but help message said "csv"). | 13 August 2018, 10:06:37 UTC |
1f16b9e | Joost van Griethuysen | 13 August 2018, 08:15:29 UTC | ENH: Update warning message for checking ROI. | 13 August 2018, 08:15:29 UTC |
247bd6a | Joost van Griethuysen | 08 August 2018, 07:00:16 UTC | ENH: Simplify computation of various GLCM features Inverse Difference, Inverse Difference Moment, Inverse Difference Normalized, Inverse Difference Moment Normalized and Inverse Variance all use a |i=j| element, which is equal to the k_diff. This enables the use of p_x-y (`pxSuby`) and k_diff (`kValuesDiff`), which are precomputed in `_calculateCoefficients`. Note that for Inverse Variance, the first element (k = 0) is skipped, in accordance with the constraint of i not equal to j in the formula. As `pxSuby` contains fewer elements and dimensions than `P_glcm`, replacing `P_glcm` by `pxSuby` and `numpy.abs(i-j)` by `kValuesDiff` simplifies the function, and less computations are required. Update the feature formulas in the documentation accordingly. The final calculated result should be identical (within machine precision), therefore the baseline does not need to be updated. | 08 August 2018, 07:00:16 UTC |
4ba909a | Joost van Griethuysen | 08 August 2018, 06:15:02 UTC | STYL: Correct typo in IMC1 and 2 features (GLCM) Name should be informational measure of correlation instead of informal. | 08 August 2018, 06:15:02 UTC |
9f9361a | Joost van Griethuysen | 08 August 2018, 06:00:05 UTC | REF: Add reference for the GLDM texture feature class | 08 August 2018, 06:00:05 UTC |
6b828e6 | Joost van Griethuysen | 07 August 2018, 15:58:16 UTC | Merge pull request #405 from JoostJM/fix-wavelet-name-bug BUG: Fix an error in generating the approximation name for wavelet. | 07 August 2018, 15:58:16 UTC |
c8284bc | Andrey Fedorov | 07 August 2018, 15:27:50 UTC | Merge branch 'master' into fix-wavelet-name-bug | 07 August 2018, 15:27:50 UTC |
e47afb1 | Andrey Fedorov | 07 August 2018, 15:24:57 UTC | Merge pull request #404 from fedorov/fix-spacing ENH: fix the assigment of x and y pixel spacing | 07 August 2018, 15:24:57 UTC |
691812c | Joost van Griethuysen | 07 August 2018, 13:45:02 UTC | BUG: Fix an error in generating the approximation name for wavelet. | 07 August 2018, 13:52:31 UTC |
e49133c | Andrey Fedorov | 02 August 2018, 13:49:29 UTC | ENH: fix the assigment of x and y pixel spacing Note that this issue has no effect on the calculation, but might be confusing to the developers, and also might cause problems later in case those are reused in a feature where order matters. | 02 August 2018, 13:49:29 UTC |
2a9fd79 | Andrey Fedorov | 23 July 2018, 18:29:14 UTC | BUG: fix invocation of numpy.histogram As noted in #399, numpy.histogram returns a tuple, appears that the index was missed earlier. | 23 July 2018, 18:29:14 UTC |
c6a1f21 | Andrey Fedorov | 23 July 2018, 18:07:04 UTC | STYLE: fix math rendering | 23 July 2018, 18:07:04 UTC |
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 |