Skip to content

Commit ae1e14c

Browse files
authored
Merge pull request #561 from JoostJM/3.0-release
3.0 release
2 parents 9883f66 + a0c3875 commit ae1e14c

File tree

11 files changed

+102
-281
lines changed

11 files changed

+102
-281
lines changed

.circleci/config.yml

Lines changed: 7 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -21,37 +21,21 @@ jobs:
2121
command: echo -e "Host github.com\n\tStrictHostKeyChecking no\n" > /etc/ssh/ssh_config
2222
- checkout
2323
- run:
24-
# Jupyter datascience notebook does not support python 2 anymore, install it manually.
25-
# See also https://github.com/jupyter/docker-stacks/issues/432
26-
# Next, install python 2 kernel globally, so it can be found from the root
27-
name: Install Python 2 Kernel
24+
name: Install pyradiomics in Python 3
2825
command: |
29-
conda create -n python2 python=2 ipykernel
30-
pip install kernda --no-cache
31-
$CONDA_DIR/envs/python2/bin/python -m ipykernel install
32-
kernda -o -y /usr/local/share/jupyter/kernels/python2/kernel.json
33-
pip uninstall kernda -y
34-
- run:
35-
name: Install pyradiomics in Python 2 and 3
36-
command: |
37-
source activate python2
38-
python -m pip install --no-cache-dir -r requirements.txt
39-
python -m pip install --no-cache-dir -r requirements-dev.txt
40-
python setup.py install
4126
source activate root
4227
python -m pip install --no-cache-dir -r requirements.txt
4328
python -m pip install --no-cache-dir -r requirements-dev.txt
4429
python setup.py install
4530
- run:
46-
name: test notebooks in python 2 and 3
31+
name: test notebooks in python 3
4732
command: |
48-
jupyter nbconvert --ExecutePreprocessor.kernel_name=python2 --ExecutePreprocessor.timeout=-1 --to notebook --output-dir /tmp --execute notebooks/helloRadiomics.ipynb notebooks/helloFeatureClass.ipynb notebooks/PyRadiomicsExample.ipynb
4933
jupyter nbconvert --ExecutePreprocessor.kernel_name=python3 --ExecutePreprocessor.timeout=-1 --to notebook --output-dir /tmp --execute notebooks/helloRadiomics.ipynb notebooks/helloFeatureClass.ipynb notebooks/PyRadiomicsExample.ipynb
5034
51-
build-2.7: &build_template
35+
build-3.5: &build_template
5236
working_directory: /pyradiomics
5337
docker:
54-
- image: circleci/python:2.7-jessie
38+
- image: circleci/python:3.5-jessie
5539
user: root
5640
steps:
5741
- checkout
@@ -75,12 +59,6 @@ jobs:
7559
root: .
7660
paths: dist
7761

78-
build-3.5:
79-
<<: *build_template
80-
docker:
81-
- image: circleci/python:3.5-jessie
82-
user: root
83-
8462
build-3.6:
8563
<<: *build_template
8664
docker:
@@ -163,7 +141,6 @@ jobs:
163141
name: Build Conda packages
164142
command: |
165143
mkdir /conda-bld
166-
conda build ./conda --python=2.7 --croot /conda-bld
167144
conda build ./conda --python=3.5 --croot /conda-bld
168145
conda build ./conda --python=3.6 --croot /conda-bld
169146
conda build ./conda --python=3.7 --croot /conda-bld
@@ -176,26 +153,22 @@ workflows:
176153
version: 2
177154
build_and_deploy:
178155
jobs:
179-
- build-2.7: &build_job_template
156+
- build-3.5: &build_job_template
180157
filters:
181158
tags:
182159
only:
183160
- /^v?[0-9]+(\.[0-9]+)*(rc[0-9]+)?/
184-
- build-3.5:
185-
<<: *build_job_template
186161
- build-3.6:
187162
<<: *build_job_template
163+
- build-3.7:
164+
<<: *build_job_template
188165
- test-notebooks:
189166
requires:
190-
- build-2.7
191167
- build-3.5
192168
- build-3.6
193169
- build-3.7
194-
- build-3.7:
195-
<<: *build_job_template
196170
- deploy: &deploy_template
197171
requires:
198-
- build-2.7
199172
- build-3.5
200173
- build-3.6
201174
- build-3.7

.travis.yml

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,6 @@ language: python
55
matrix:
66
include:
77

8-
- os: osx
9-
language: generic
10-
env:
11-
- PYTHON_VERSION=2.7.12
12-
- PYTHON_SHORT_VERSION=2.7
13-
148
- os: osx
159
language: generic
1610
env:
@@ -34,7 +28,6 @@ cache:
3428
- $HOME/.pyenv/versions/3.7.2
3529
- $HOME/.pyenv/versions/3.6.5
3630
- $HOME/.pyenv/versions/3.5.5
37-
- $HOME/.pyenv/versions/2.7.12
3831
- $HOME/downloads
3932

4033
before_install:

CHANGES.rst

Lines changed: 41 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,21 +2,51 @@
22
Release Notes
33
=============
44

5-
.. note::
6-
**Upcoming changes in 3.0 release**
7-
8-
- Removal of deprecated code (e.g. ``commandlinebatch.py``, ``calculateFeatures()`` function in feature classes);
9-
deprecated radiomics features are retained.
10-
- End of official python 2.7 support
11-
12-
- No CI-tests for python 2.7
13-
- No pre-build binaries for python 2.7 distributed on PyPi and Anaconda Cloud
14-
- Compatibility code using six is retained (allowing local build).
15-
165
------------
176
Next Release
187
------------
198

9+
---------------
10+
PyRadiomics 3.0
11+
---------------
12+
13+
.. warning::
14+
As of this release, Python 2.7 testing is removed. Compatibility code such as it is will be left in place, but
15+
future changes will not be checked for backwards compatibility. Moreover, no pre-built binaries for python 2.7
16+
will be distributed on PyPi or Conda.
17+
Finally, some deprecated code is removed (``commandlinebatch.py`` and ``calculateFeatures()``).
18+
19+
Bug Fixes
20+
#########
21+
22+
- Fix broken Conda deployment (`51c5849 <https://github.com/Radiomics/pyradiomics/commit/51c5849>`_)
23+
- Fix error in IBSI mapping (labs/pyradiomics-dcm) (`54d6689 <https://github.com/Radiomics/pyradiomics/commit/54d6689>`_)
24+
- Fix resampling error when spacing is correct, but sizes are different (`ac7458e <https://github.com/Radiomics/pyradiomics/commit/ac7458e>`_)
25+
- Fix label channel selection (`54a3782 <https://github.com/Radiomics/pyradiomics/commit/54a3782>`_)
26+
- Use local scope of settings, preventing race conditions in parallel extraction (`43578f7 <https://github.com/Radiomics/pyradiomics/commit/43578f7>`_)
27+
- Fix resampling for 2D input (`#545 <https://github.com/Radiomics/pyradiomics/pull/545>`_)
28+
29+
Internal API
30+
############
31+
32+
- Update C API to use large datatype for index pointers (`#500 <https://github.com/Radiomics/pyradiomics/pull/500>`_,
33+
`#501 <https://github.com/Radiomics/pyradiomics/pull/501>`_)
34+
- Update docker CLI to use python 3.6.9 and fix bugs to allow integration with pyradiomics-dcm lab (`#527 <https://github.com/Radiomics/pyradiomics/pull/527>`_)
35+
- Add option to force path to UNIX style paths, even on windows (`3c0708a <https://github.com/Radiomics/pyradiomics/commit/3c0708a>`_)
36+
- Removed deprecated code (`fedaa5e <https://github.com/Radiomics/pyradiomics/commit/fedaa5e>`_)
37+
38+
Testing
39+
#######
40+
41+
- Remove testing and deployment for python 2.7 (`a5a7e61 <https://github.com/Radiomics/pyradiomics/commit/a5a7e61>`_)
42+
43+
Documentation
44+
#############
45+
46+
- Refactor documentation (`#536 <https://github.com/Radiomics/pyradiomics/pull/536>`_)
47+
- Fix various typos/wording
48+
- Clarify use of force2D, and add example settings file (`#558 <https://github.com/Radiomics/pyradiomics/pull/558>`_)
49+
2050
-----------------
2151
PyRadiomics 2.2.0
2252
-----------------

README.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# pyradiomics v2.2.0
1+
# pyradiomics v3.0
22

33
## Build Status
44

@@ -76,8 +76,8 @@ The documentation can then be viewed in a browser by opening `PACKAGE_ROOT\build
7676
Furthermore, an instruction video is available [here](http://radiomics.io/pyradiomics.html).
7777

7878
### Installation
79-
PyRadiomics is OS independent and compatible with both Python 2.7 and Python 3.4, 3.5 and 3.6. As of version 2.0,
80-
PyRadiomics releases are also made available on PyPi. To install PyRadiomics, ensure you have python
79+
PyRadiomics is OS independent and compatible with Python >= 3.5. Pre-built binaries are available on
80+
PyPi and Conda. To install PyRadiomics, ensure you have python
8181
installed and run:
8282

8383
`python -m pip install pyradiomics`
@@ -158,7 +158,7 @@ This package is covered by the open source [3-clause BSD License](LICENSE.txt).
158158
<sup>6</sup>Isomics
159159

160160
### Contact
161-
We are happy to help you with any questions. Please contact us on the [Radiomics community section of the 3D Slicer Discourse](https://discourse.slicer.org/c/community/radiomics).
161+
We are happy to help you with any questions. Please contact us on the [Radiomics community section of the 3D Slicer Discourse](https://discourse.slicer.org/c/community/radiomics/23).
162162

163163
We welcome contributions to PyRadiomics. Please read the [contributing guidelines](CONTRIBUTING.rst) on how to
164164
contribute to PyRadiomics.

appveyor.yml

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,7 @@ version: "0.0.1.{build}"
33
environment:
44
matrix:
55

6-
# Visual Studio (Python 2 & 3, 64 bit)
7-
8-
- PYTHON_DIR: "C:\\Python27-x64"
9-
PYTHON_VERSION: "2.7.x"
10-
PYTHON_SHORT_VERSION: "2.7"
11-
PYTHON_ARCH: "64"
12-
BLOCK: "0"
6+
# Visual Studio (Python 3, 64 bit)
137

148
- PYTHON_DIR: "C:\\Python35-x64"
159
PYTHON_VERSION: "3.5.x"

docs/faq.rst

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -363,11 +363,11 @@ Miscellaneous
363363
Which python versions is PyRadiomics compatible with?
364364
#####################################################
365365

366-
PyRadiomics is compatible with both python 2 and python 3. However, the automated testing only uses python versions 2.7,
367-
3.5, 3.6 and 3.7 (only 64 bits architecture). Python < 2.6 is not supported. Other python versions may be compatible with
368-
PyRadiomics, but this is not actively tested and therefore not guaranteed to work. In the future, support for python 2.7
369-
will also be dropped, to compatibility fixes are retained. This means that future releases of PyRadiomics will only have
370-
pre-built wheels for Python versions >= 3.5.
366+
PyRadiomics is compatible with python 3. Python 2 support was dropped in PyRadiomics version 3.0, though compatibility
367+
code was retained. However, the automated testing only uses python versions 3.5, 3.6 and 3.7 (64 bits architecture).
368+
Python < 2.6 is not supported. Other python versions may be compatible with PyRadiomics, but this is not actively tested
369+
and therefore not guaranteed to work. Pre-built wheels are only available for the tested versions of python (3.5, 3.6
370+
and 3.7)
371371

372372
A new version of PyRadiomics is available! Where can I find out what changed?
373373
#############################################################################
@@ -390,15 +390,14 @@ I found a bug! Where do I report it?
390390

391391
We strive to keep PyRadiomics as bug free as possible by thoroughly testing new additions before including them in the
392392
stable version. However, nothing is perfect, and some bugs may therefore exist. Report yours by
393-
`opening an issue <https://github.com/Radiomics/pyradiomics/issues>`_ on the GitHub or contact us at the
394-
`pyradiomics email list <https://groups.google.com/forum/#!forum/pyradiomics>`_. If you want to help in fixing it, we'd
395-
welcome you to open up a `pull request <https://github.com/Radiomics/pyradiomics/pulls>`_ with your suggested fix.
393+
`opening an issue <https://github.com/Radiomics/pyradiomics/issues>`_ on the GitHub. If you want to help in fixing it,
394+
we'd welcome you to open up a `pull request <https://github.com/Radiomics/pyradiomics/pulls>`_ with your suggested fix.
396395

397396
My question is not listed here...
398397
#################################
399398

400399
If you have a question that is not listed here, check the
401-
`pyradiomics email list <https://groups.google.com/forum/#!forum/pyradiomics>`_ or the
400+
`pyradiomics forum on 3D Slicer discourse <https://discourse.slicer.org/c/community/radiomics/23>`_ or the
402401
`issues on GitHub <https://github.com/Radiomics/pyradiomics/issues>`_. Feel free to post a new question or issue and
403402
we'll try to get back to you ASAP.
404403

docs/index.rst

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -114,8 +114,8 @@ See also the `requirements file <https://github.com/Radiomics/pyradiomics/blob/m
114114
Installation
115115
------------
116116

117-
PyRadiomics is OS independent and compatible with both Python 2.7 and Python >=3.4. As of version 2.0,
118-
PyRadiomics releases are also made available on PyPi. To install PyRadiomics, ensure you have python
117+
PyRadiomics is OS independent and compatible with and Python >=3.5. Pre-built binaries are available on
118+
PyPi and Conda. To install PyRadiomics, ensure you have python
119119
installed and run:
120120

121121
* ``python -m pip install pyradiomics``
@@ -155,7 +155,7 @@ Developers
155155

156156
Contact
157157
-------
158-
We are happy to help you with any questions. Please contact us on the `Radiomics community section of the 3D Slicer Discourse <https://discourse.slicer.org/>`_.
158+
We are happy to help you with any questions. Please contact us on the `Radiomics community section of the 3D Slicer Discourse <https://discourse.slicer.org/c/community/radiomics/23>`_.
159159

160160
We'd welcome your contributions to PyRadiomics. Please read the
161161
:ref:`contributing guidelines <radiomics-contributing-label>` on how to contribute to PyRadiomics. Information on

docs/installation.rst

Lines changed: 36 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -14,19 +14,28 @@ There are three ways you can use pyradiomics:
1414
1. Install via pip
1515
------------------
1616

17-
As of version 2.0.0, PyRadiomics will be available for installation via pip. For the python versions
17+
Pre-built binaries are available on PyPi for installation via pip. For the python versions
1818
mentioned below, wheels are automatically generated for each release of PyRadiomics, allowing you to
1919
install pyradiomics without having to compile anything. For other python versions, a source distribution
2020
is also available, but this requires compiling the C extensions.
2121

22-
* Ensure that you have ``python`` installed on your machine, version 2.7, 3.4, 3.5 or 3.6 (64-bits).
22+
* Ensure that you have ``python`` installed on your machine, version 3.5, 3.6 or 3.7 (64-bits).
2323

24-
* Install PyRadiomics:
24+
* Install PyRadiomics::
2525

26-
* ``python -m pip install pyradiomics``
26+
python -m pip install pyradiomics
27+
28+
--------------------
29+
2. Install via conda
30+
--------------------
31+
32+
Besides pre-built binaries for PyPi, PyRadiomics is also available on conda cloud.
33+
To install PyRadiomics on Conda, run::
34+
35+
conda install -c radiomics pyradiomics
2736

2837
----------------------
29-
2. Install from source
38+
3. Install from source
3039
----------------------
3140

3241
PyRadiomics can also be installed from source code. This allows for the bleeding edge version, but does
@@ -35,21 +44,22 @@ of texture matrices and some shape features.
3544

3645
* Ensure you have the version control system ``git`` installed on your machine.
3746

38-
* Ensure that you have ``python`` installed on your machine, at least version 2.7 or 3.4 (64-bits).
47+
* Ensure that you have ``python`` installed on your machine, at least version 3.5 (64-bits).
48+
49+
* Clone the repository::
3950

40-
* Clone the repository:
51+
git clone git://github.com/Radiomics/pyradiomics
4152

42-
* ``git clone git://github.com/Radiomics/pyradiomics``
4353

54+
* For unix like systems (MacOSX, linux)::
4455

45-
* For unix like systems (MacOSX, linux):
56+
cd pyradiomics
57+
python -m pip install -r requirements.txt
58+
python setup.py install
4659

47-
* ``cd pyradiomics``
48-
* ``python -m pip install -r requirements.txt``
49-
* ``python setup.py install``
60+
* To use your build for interactive use and development::
5061

51-
To use your build for interactive use and development:
52-
* ``python setup.py build_ext --inplace``
62+
python setup.py build_ext --inplace
5363

5464
* If you don't have sudo/admin rights on your machine, you need to locally install numpy, nose, tqdm, PyWavelets, SimpleITK (specified in requirements.txt).
5565
In a bash shell::
@@ -59,11 +69,11 @@ of texture matrices and some shape features.
5969
pip install --user -r requirements.txt
6070
export PYTHONPATH=$HOME/.local/lib64/python2.7/site-packages
6171

62-
* For Windows:
72+
* For Windows::
6373

64-
* ``cd pyradiomics``
65-
* ``python -m pip install -r requirements.txt``
66-
* ``python setup.py install``
74+
cd pyradiomics
75+
python -m pip install -r requirements.txt
76+
python setup.py install
6777

6878
* If the installation fails, check out the :ref:`radiomics-faq-label`. If your error is not listed there,
6979
contact us by `creating an issue <https://github.com/Radiomics/pyradiomics/issues/new>`_ on the PyRadiomics
@@ -90,14 +100,14 @@ This approach may be preferred if you are interested in using pyradiomics from t
90100
First, you will need to install Docker on your system, if it is not installed already. You can follow the instructions below to do this.
91101

92102
Once Docker is installed, you can issue ``docker pull radiomics/pyradiomics:CLI`` command in the shell to download the pyradiomics Docker image.
93-
After that you can invoke pyradiomics tool as follows:
103+
After that you can invoke pyradiomics tool as follows::
94104

95-
``docker run radiomics/pyradiomics:CLI --help``
105+
docker run radiomics/pyradiomics:CLI --help
96106

97107
Docker containers cannot directly access the filesystem of the host. In order to pass files as arguments to pyradiomics and to access files that converters create,
98-
an extra step is required to specify which directories will be used for file exchange using the -v argument:
108+
an extra step is required to specify which directories will be used for file exchange using the -v argument::
99109

100-
``-v <HOST_DIR>:<CONTAINER_DIR>``
110+
-v <HOST_DIR>:<CONTAINER_DIR>
101111

102112
The argument above will make the ``HOST_DIR`` path available within the container at ``CONTAINER_DIR`` location. The files that will be read or written by the
103113
converter run from the docker container should be referred to via the ``CONTAINER_DIR`` path.
@@ -121,12 +131,11 @@ Note `the system requirements <https://docs.docker.com/docker-for-windows/>`_:
121131

122132
**IMPORTANT**: You will also need to share the drive you will be using to communicate data to and from Docker image in Docker Settings as shown in the screenshot below.
123133

124-
Most likely you will experience the display of an error message similar to the one shown below:
125-
134+
Most likely you will experience the display of an error message similar to the one shown below::
126135

127-
``C:\Program Files\Docker\Docker\Resources\bin\docker.exe: Error response from daemon: \``
128-
``C: drive is not shared. Please share it in Docker for Windows Settings.``
129-
``See 'C:\Program Files\Docker\Docker\Resources\bin\docker.exe run --help'.``
136+
C:\Program Files\Docker\Docker\Resources\bin\docker.exe: Error response from daemon:
137+
C: drive is not shared. Please share it in Docker for Windows Settings.
138+
See 'C:\Program Files\Docker\Docker\Resources\bin\docker.exe run --help'.
130139

131140
If you have this error, make sure that the drive, where the ``HOST_DIR`` is located, is shared:
132141

0 commit comments

Comments
 (0)