Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
67 changes: 41 additions & 26 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,24 @@
* XX.X
* 25.0.0
- New features:
- Added `FunctionOfAbs` class (#1976)
- Added `Cone3D_Flex` geometry as a CIL acquisition geometry type. This allows users to reconstruct non-circular trajectories. (#2039)
- Added `ASTRA` backend support for `ProjectionOperator` and `FBP` to use `Cone3D_Flex` geometry. (#2039)
- Added `show_system_positions` for visualisation of `Cone3D_Flex` geometries. (#2039)
- Added an Accelerated Proximal Gradient Descent Algorithm (APGD) with options for momentum (#2145)
- Enhancements:
- Added an accelerated version to the TransmissionAbsorption processor, controlled by the `accelerated` parameter (default is `True`) (#2036)
- Made the call to next() in algorithm iteration loop explicit (#2069)
- Added option for a random seed in the power method in the linear operator (#1585)
- Improved efficiency of `Normaliser` processor. Reduced memory use and increased speed (#2111)
- Extra functionality for sampler: `get_previous_samples()` and `get_current_sample()` (#2079)
- PDHG 'check_convergence' updated for new literature (#2084)
- Updated `create_local_env_for_cil_development.sh` script to work on Windows (#2144)
- Improved consistency of `step_size` property across GD, ISTA, FISTA and APGD algorithms (#2157)
- In PDHG algorithm, we now have options to initialise the dual variable, as well as the primal variable (#2169)
- Allow FluxNormaliser.preview_configuration() even if flux contains zeros (#2177)
- Check if kwargs are used in AcquisitionData and ImageData initialisation (#2178)
- Added a flag to `show_geometry` that allows for disabling the call to `plt.show()` (#2195)
- The random methods to populate a data container can now be accessed via `fill()` and `allocate()`, and will have a lower memory footprint on creation (#2037)
- Bug fixes:
- Fix deprecation warning for rtol and atol in GD (#2056)
- Removed the deprecated usage of run method in test_SIRF.py (#2070)
Expand All @@ -14,49 +29,49 @@
- Copy geometry in the creation of a DataContainer (#2108)
- Fix order of operations for subtraction and division between a BlockDataContainer and DataContainer (#2133)
- Update default compression for TIFFWriter setup (#2197)
- ProjectionOperator device input is no longer case-sensitive (#2065)
- Fix `pkg_resources` deprecation warning on `setuptools>=81 dxchange<=0.2.0` (#2207)
- Deprecated
- Positional arguments for `get_slice` on `AcquisitionGeometry` and `AcquisitionData` have been deprecated (#2039)
- Methods to allocate a `DataContainer` using the old numpy random number generator have been renamed and deprecated, `RANDOM`->`RANDOM_DEPRECATED` and `RANDOM_INT`->`RANDOM_INT_DEPRECATED`. See "Breaking Changes" for details of new behaviour (#2037)
- Sampler's `get_samples` has been deprecated, use `view_samples` (#2128)
- Removed code
- Removed the following code which has been deprecated since v23.0.0 or earlier (#2150):
- `dimension_labels` kwarg in `AcquisitionGeometry.allocate()` and in `ImageData`'s `__init__`
- `axpby` (alias of `sapyb`)
- `shape` setter in `DataContainer` and `ImageGeometry`
- use of integer compression in `NEXUSDataWriter`
- Removed unused kwargs passed to ImageData and AcquisitionData, including `suppress_warning` (#2206)
- Documentation:
- Updated documentation for the ChannelWiseOperator including new example (#2096)
- Updated documentation for LADMM (#2015)
- Updated Contributor's Guide to include an example of parametrized tests, using `unittest-parametrize` (#1990)
- Tidied up documentation of `L1Norm` (#2186)
- Enhancements:
- Add accelerated version to TransmissionAbsorption processor, controlled by `accelerated` parameter, default is True (#2036)
- Made the call to next() in algorithm iteration loop explicit (#2069)
- Added option for a random seed in the power method in the linear operator (#1585)
- Improved efficiency of `Normaliser` processor. Reduced memory use and increased speed (#2111)
- Extra functionality for sampler: `get_previous_samples()` and `get_current_sample()` (#2079)
- Renamed Sampler's `get_samples` to `view_samples` (deprecating `get_samples`) (#2128)
- PDHG 'check_convergence' updated for new literature (#2084)
- Make install local env script work on windows (#2144)
- Added an Accelerated Proximal Gradient Descent Algorithm (APGD) with options for momentum (#2145)
- Improved consistency of `step_size` property across GD, ISTA, FISTA and APGD algorithms (#2157)
- In PDHG algorithm, we now have options to initialise the dual variable, as well as the primal variable (#2169)
- Allow FluxNormaliser.preview_configuration() even if flux contains zeros (#2177)
- Check if kwargs are used in AcquisitionData and ImageData initialisation (#2178)
- Added a flag to `show_geometry` that allows for disabling the call to `plt.show()` (#2195)
- Added callbacks to documentation (#2067)
- Added new tutorials to the "How-To" page in the docs (#1972)
- Testing:
- Developers can now run the full CI matrix [via the web UI](https://github.com/TomographicImaging/CIL/actions/workflows/build.yml) (#2160)
- Added tests for ProjectionOperator inputs that use `unittest-parametrize` module (#1990)
- Added tests for Normaliser processor
- Update minimum cmake version to 3.5
- Added unit test for the `ZEISSDataReader` (#2098)
- Added `requirements-test-windows.yml` to create test environment (#2174)
- Automate Windows conda build & release (#1918)
- Dependencies:
- Move from CMake to `pip install` (#2145)
- Use conda native compilers (#2199)
- matplotlib-base is an optional dependency, instead of required (#2093)
- `unittest-parametrize has been added as a dependency for tests (#1990)
- olefile and dxchange are an optional dependency, instead of required (#2149)
- `unittest-parametrize` has been added as a dependency for tests (#1990)
- Defer import of olefile and dxchange (#2149)
- zenodo_get is an optional dependency, instead of required (#2146)
- `FindIPP.cmake` fallback (#2148)
- enable `find_package` using `*_ROOT` hints
- simplified `cilacc` build logic for optional dependencies
- Removed the following code which has been deprecated since v23.0.0 or earlier (#2150):
- `dimension_labels` kwarg in `AcquisitionGeometry.allocate()` and in `ImageData`'s `__init__`
- `axpby` (alias of `sapyb`)
- `shape` setter in `DataContainer` and `ImageGeometry`
- use of integer compression in `NEXUSDataWriter`
- Removed unused kwargs passed to ImageData and AcquisitionData, including `suppress_warning` (#2206)
- Changes that break backwards compatibility:
- Updated `RANDOM` and `RANDOM_INT` `DataContainer.fill()` and `geometry.allocate()` methods to use numpy default random number generator, old methods can be accessed with `RANDOM_DEPRECATED` AND `RANDOM_INT_DEPRECATED`. Random methods can now be accessed from `fill()` and `allocate()` (#2037)
- Removed upper version constraints on optional plugins when resolving conda environment (#2204)
- Relaxed numpy runtime pinning of versions (#2156)
- Breaking changes:
- `RANDOM` and `RANDOM_INT` options in `DataContainer.fill()` and `geometry.allocate()` methods now use numpy default random number generator to populate the array. Values for a set seed will now change compared to previous versions. Previous methods can be accessed with `RANDOM_DEPRECATED` and `RANDOM_INT_DEPRECATED`. (#2037)
- `RANDOM` and `RANDOM_INT` options in `DataContainer.fill()` and `geometry.allocate()` methods will no longer use a random seed set externally using `numpy.random.seed()`, the seed should be provided as an argument. `RANDOM_DEPRECATED` and `RANDOM_INT_DEPRECATED` will still use an externally set seed (#2037)

* 24.3.0
- New features:
Expand Down
2 changes: 2 additions & 0 deletions CITATION.cff
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,8 @@ authors:
given-names: Hannah
- family-names: Sugic
given-names: Danica
- family-names: Vidal
given-names: Franck
title: Core Imaging Library (CIL)
date-released: '2018-01-08'
identifiers:
Expand Down
3 changes: 2 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ We recommend using either [`miniconda`](https://docs.conda.io/projects/miniconda
Install a new minimal environment with CIL using:

```sh
conda create --name cil -c https://software.repos.intel.com/python/conda -c conda-forge -c ccpi cil=24.3.0
conda create --name cil -c https://software.repos.intel.com/python/conda -c conda-forge -c ccpi cil=25.0.0
```
A number of additional dependencies are required for specific functionality in CIL, these should be added to your environment as necessary. See the dependency table below for details.

Expand All @@ -41,6 +41,7 @@ While building the CIL package we test with specific versions of dependencies. T
| [TomoPhantom](https://github.com/dkazanc/TomoPhantom) | [2.0.0](https://github.com/dkazanc/TomoPhantom/releases/tag/v2.0.0) | `ccpi::tomophantom=2.0.0` | Generates phantoms to use as test data. | [Apache-2.0](https://github.com/dkazanc/TomoPhantom/blob/master/LICENSE) |
| [ipykernel](https://github.com/ipython/ipykernel) || `ipykernel` | Provides the IPython kernel to run Jupyter notebooks. | [BSD-3-Clause](https://github.com/ipython/ipykernel/blob/main/LICENSE) |
| [ipywidgets](https://github.com/jupyter-widgets/ipywidgets) || `ipywidgets` | Enables visualisation tools within jupyter noteboooks. | [BSD-3-Clause](https://github.com/jupyter-widgets/ipywidgets/blob/main/LICENSE) |
|[zenodo_get](https://github.com/dvolgyes/zenodo_get)|>= 1.6|`zenodo_get>=1.6`| Downloads datasets from Zenodo, is used by `dataexample` to get data used in CIL-Demos |[AGPL-3.0](https://github.com/dvolgyes/zenodo_get?tab=AGPL-3.0-1-ov-file)|

We maintain an environment file with the required packages to run the [CIL demos](https://github.com/TomographicImaging/CIL-Demos) which you can use to create a new environment. This will have specific and tested versions of all dependencies that are outlined in the table above:

Expand Down
8 changes: 4 additions & 4 deletions Wrappers/Python/cil/framework/acquisition_geometry.py
Original file line number Diff line number Diff line change
Expand Up @@ -2321,7 +2321,7 @@ def create_Cone2D(source_position, detector_position, detector_direction_x=[1,0]
Creates the AcquisitionGeometry for a cone beam 2D tomographic system.

After creating the AcquisitionGeometry object, the panel must be set using the `set_panel()` method and the angles must be set using the `set_angles()` method.
In addition,`set_channels()` can be used to set the number of channels and their labels. `set_labels()` can be used to set the order of the dimensions describing the data.
In addition, `set_channels()` can be used to set the number of channels and their labels. `set_labels()` can be used to set the order of the dimensions describing the data.

See notes for default directions.

Expand Down Expand Up @@ -2364,7 +2364,7 @@ def create_Parallel3D(ray_direction=[0,1,0], detector_position=[0,0,0], detector
Creates the AcquisitionGeometry for a parallel beam 3D tomographic system.

After creating the AcquisitionGeometry object, the panel must be set using the `set_panel()` method and the angles must be set using the `set_angles()` method.
In addition,`set_channels()` can be used to set the number of channels and their labels. `set_labels()` can be used to set the order of the dimensions describing the data.
In addition, `set_channels()` can be used to set the number of channels and their labels. `set_labels()` can be used to set the order of the dimensions describing the data.

Parameters
----------
Expand Down Expand Up @@ -2413,7 +2413,7 @@ def create_Cone3D(source_position, detector_position, detector_direction_x=[1,0,
Creates the AcquisitionGeometry for a cone beam 3D tomographic system.

After creating the AcquisitionGeometry object, the panel must be set using the `set_panel()` method and the angles must be set using the `set_angles()` method.
In addition,`set_channels()` can be used to set the number of channels and their labels. `set_labels()` can be used to set the order of the dimensions describing the data.
In addition, `set_channels()` can be used to set the number of channels and their labels. `set_labels()` can be used to set the order of the dimensions describing the data.

Parameters
----------
Expand Down Expand Up @@ -2460,7 +2460,7 @@ def create_Cone3D_Flex(source_position_set, detector_position_set, detector_dire
Creates the AcquisitionGeometry for a per-projection cone beam 3D tomographic system.

After creating the AcquisitionGeometry object, the panel must be set using the `set_panel()` method.
In addition,`set_channels()` can be used to set the number of channels and their labels. `set_labels()` can be used to set the order of the dimensions describing the data.
In addition, `set_channels()` can be used to set the number of channels and their labels. `set_labels()` can be used to set the order of the dimensions describing the data.

Parameters
----------
Expand Down
3 changes: 0 additions & 3 deletions docs/source/utilities.rst
Original file line number Diff line number Diff line change
Expand Up @@ -37,9 +37,6 @@ A set of simulated volumes and CT data
.. autoclass:: cil.utilities.dataexample.SIMULATED_PARALLEL_BEAM_DATA
:members:

.. autoclass:: cil.utilities.dataexample.SIMULATED_CONE_BEAM_DATA
:members:


A CT dataset from the Diamond Light Source
------------------------------------------
Expand Down
4 changes: 2 additions & 2 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,6 @@ dependencies = [
"pywavelets",
"scipy>=1.4.0",
"tqdm",
"zenodo_get>=1.6",
]
[project.optional-dependencies]
plugins = [
Expand All @@ -83,11 +82,12 @@ gpu = [
test = [
#"ccpi-regulariser=24.0.1", # [not osx] # missing from PyPI
"cvxpy",
"matplotlib>=3.3.0",
"matplotlib-base>=3.3",
"packaging",
"scikit-image",
"unittest-parametrize",
"wget",
"zenodo_get>=1.6",
]
docs = [
"jinja2",
Expand Down
Loading