cil

A versatile python framework for tomographic imaging

https://github.com/tomographicimaging/cil

Science Score: 65.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 6 DOI reference(s) in README
  • Academic publication links
  • Academic email domains
  • Institutional organization owner
    Organization tomographicimaging has institutional domain (www.ccpi.ac.uk)
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (14.7%) to scientific vocabulary

Keywords

optimisation python tomography
Last synced: 6 months ago · JSON representation ·

Repository

A versatile python framework for tomographic imaging

Basic Info
Statistics
  • Stars: 123
  • Watchers: 10
  • Forks: 51
  • Open Issues: 366
  • Releases: 24
Topics
optimisation python tomography
Created about 8 years ago · Last pushed 6 months ago
Metadata Files
Readme Changelog License Citation Codeowners

README.md

CIL - Core Imaging Library

CI-master conda-ver conda-date conda-plat conda-dl

Binder

The Core Imaging Library (CIL) is an open-source Python framework for tomographic imaging with particular emphasis on reconstruction of challenging datasets. Conventional filtered backprojection reconstruction tends to be insufficient for highly noisy, incomplete, non-standard or multichannel data arising for example in dynamic, spectral and in situ tomography. CIL provides an extensive modular optimisation framework for prototyping reconstruction methods including sparsity and total variation regularisation, as well as tools for loading, preprocessing and visualising tomographic data.

Documentation

The documentation for CIL can be accessed here.

Installation of CIL

Conda

Binary installation of CIL can be achieved with conda.

We recommend using either miniconda or miniforge, which are both minimal installers for conda. We also recommend a conda version of at least 23.10 for quicker installation.

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=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.

Binary packages and dependencies

While building the CIL package we test with specific versions of dependencies. These are listed in the build.yml GitHub workflow and environment-test.yml. The following table tries to resume the tested versions of CIL and its required and optional dependencies. If you use these packages as a backend please remember to cite them in addition to CIL.

| Package | Tested Version | Conda install command | Description | License | |----|----|--------|--------|----| | Python | 3.10 - 3.12 | "python>=3.10,<=3.12" || PSF-2.0 | | Numpy | 1.23 - 1.26 | "numpy>=1.23,<2" || BSD-3-Clause | | IPP | 2021.12 | -c https://software.repos.intel.com/python/conda ipp=2021.12 | The Intel Integrated Performance Primitives Library (required for the CIL recon class). | ISSL | |--|--| Optional dependencies |--|--| | ASTRA toolbox | 2.1 | CPU: conda-forge::astra-toolbox=2.1=py*
GPU: conda-forge::astra-toolbox=2.1=cuda* | CT projectors, FBP and FDK. | GPL-3.0 | | TIGRE | 2.6 | ccpi::tigre=2.6 | CT projectors, FBP and FDK. | BSD-3-Clause | | CCPi Regularisation Toolkit | 24.0.1 | ccpi::ccpi-regulariser=24.0.1 | Toolbox of regularisation methods. | Apache-2.0 | | TomoPhantom | 2.0.0 | ccpi::tomophantom=2.0.0 | Generates phantoms to use as test data. | Apache-2.0 | | ipykernel || ipykernel | Provides the IPython kernel to run Jupyter notebooks. | BSD-3-Clause | | ipywidgets || ipywidgets | Enables visualisation tools within jupyter noteboooks. | BSD-3-Clause | |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|

We maintain an environment file with the required packages to run the 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:

sh conda env create -f https://tomographicimaging.github.io/scripts/env/cil_demos.yml Or for a CPU-only environment which will work for a limited number of CIL demos sh conda env create -f https://tomographicimaging.github.io/scripts/env/cil_demos_cpu.yml

Docker

Finally, CIL can be run via a Jupyter Notebook enabled Docker container:

sh docker run --rm --gpus all -p 8888:8888 -it ghcr.io/tomographicimaging/cil:latest

[!TIP] docker tag | CIL branch/tag :---|:--- latest | latest tag v*.*.* YY.M | latest tag vYY.M.* YY.M.m | tag vYY.M.m master | master only build & test (no tag) | CI (current commit)

See ghcr.io/tomographicimaging/cil for a full list of tags.

[!NOTE] GPU support requires nvidia-container-toolkit and an NVIDIA GPU. Omit the --gpus all to run without GPU support.

[!IMPORTANT] Folders can be shared with the correct (host) user permissions using --user $(id -u) --group-add users -v /local/path:/container/path where /local/path is an existing directory on your local (host) machine which will be mounted at /container/path in the docker container.

[!TIP] See jupyter-docker-stacks for more information.

Getting Started with CIL

CIL Training

We typically run training courses at least twice a year - check https://ccpi.ac.uk/training/ for our upcoming events!

CIL on binder

Binder

Jupyter Notebooks usage examples without any local installation are provided in Binder. Please click the launch binder icon above. For more information, go to CIL-Demos and https://mybinder.org.

CIL Videos

Building CIL from source code

Getting the code

In case of development it is useful to be able to build the software directly. You should clone this repository as

sh git clone --recurse-submodule git@github.com:TomographicImaging/CIL

The use of --recurse-submodule is necessary if the user wants the examples data to be fetched (they are needed by the unit tests). We have moved such data, previously hosted in this repo at Wrappers/Python/data to the CIL-data repository and linked it to this one as submodule. If the data is not available it can be fetched in an already cloned repository as

sh git submodule update --init --recursive

Building with pip

Install Dependencies

To create a conda environment with all the dependencies for building CIL run the following shell script:

sh bash ./scripts/create_local_env_for_cil_development.sh

Or with the CIL build and test dependencies:

sh bash ./scripts/create_local_env_for_cil_development.sh -t

And then install CIL in to this environment using pip.

Alternatively, one can use the scripts/requirements-test.yml to create a conda environment with all the appropriate dependencies, using the following command:

sh conda env create -f ./scripts/requirements-test.yml or, on windows: sh conda env create -f ./scripts/requirements-test-windows.yml

Build CIL

A C++ compiler is required to build the source code. Let's suppose that the user is in the source directory, then the following commands should work:

sh pip install --no-deps .

If not installing inside a conda environment, then the user might need to set the locations of optional libraries:

sh pip install . -Ccmake.define.IPP_ROOT="<path_to_ipp>" -Ccmake.define.OpenMP_ROOT="<path_to_openmp>"

Building with Docker

In the repository root, simply update submodules and run docker build:

sh git submodule update --init --recursive docker build . -t ghcr.io/tomographicimaging/cil

Testing

One installed, CIL functionality can be tested using the following command:

sh export TESTS_FORCE_GPU=1 # optional, makes GPU test failures noisy python -m unittest discover -v ./Wrappers/Python/test

Citing CIL

If you use CIL in your research, please include citations to both the software on Zenodo, and a CIL paper:

E. Pasca, J. S. Jørgensen, E. Papoutsellis, E. Ametova, G. Fardell, K. Thielemans, L. Murgatroyd, M. Duff and H. Robarts (2023)
Core Imaging Library (CIL)
Zenodo [software archive]
DOI: https://doi.org/10.5281/zenodo.4746198

In most cases, the first CIL paper will be the appropriate choice:

J. S. Jørgensen, E. Ametova, G. Burca, G. Fardell, E. Papoutsellis, E. Pasca, K. Thielemans, M. Turner, R. Warr, W. R. B. Lionheart and P. J. Withers (2021)
Core Imaging Library - Part I: a versatile Python framework for tomographic imaging.
Phil. Trans. R. Soc. A. 379: 20200192.
DOI: https://doi.org/10.1098/rsta.2020.0192
Code: https://github.com/TomographicImaging/Paper-2021-RSTA-CIL-Part-I

However, if your work is more closely related to topics covered in our second CIL paper then please additionally or alternatively reference the second paper:

E. Papoutsellis, E. Ametova, C. Delplancke, G. Fardell, J. S. Jørgensen, E. Pasca, M. Turner, R. Warr, W. R. B. Lionheart and P. J. Withers (2021)
Core Imaging Library - Part II: multichannel reconstruction for dynamic and spectral tomography.
Phil. Trans. R. Soc. A. 379: 20200193.
DOI: https://doi.org/10.1098/rsta.2020.0193)
Code: https://github.com/TomographicImaging/Paper-2021-RSTA-CIL-Part-II

Owner

  • Name: CCPi
  • Login: TomographicImaging
  • Kind: organization
  • Location: United Kingdom

Collaborative Computational Project in Tomographic Imaging

Citation (CITATION.cff)

cff-version: 1.2.0
message: "If you use this software, please cite the software itself via zenodo as below, plus a CIL article, please see the CIL README for more details: https://github.com/TomographicImaging/CIL"
abstract: >
  The Core Imaging Library (CIL) is an open-source Python framework for tomographic imaging
  with particular emphasis on reconstruction of challenging datasets. Conventional filtered
  backprojection reconstruction tends to be insufficient for highly noisy, incomplete, non-standard
  or multichannel data arising for example in dynamic, spectral and in situ tomography. CIL
  provides an extensive modular optimisation framework for prototyping reconstruction methods
  including sparsity and total variation regularisation, as well as tools for loading, preprocessing
  and visualising tomographic data.
authors:
- family-names: Pasca
  given-names: Edoardo
- family-names: Jørgensen
  given-names: Jakob Sauer
- family-names: Papoutsellis
  given-names: Evangelos
- family-names: Ametova
  given-names: Evelina
- family-names: Fardell
  given-names: Gemma
- family-names: Thielemans
  given-names: Kris
- family-names: Murgatroyd
  given-names: Laura
- family-names: Duff
  given-names: Margaret
- family-names: da Costa-Luis
  given-names: Casper
- family-names: Robarts
  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:
- description: This is the collection of archived snapshots of all versions of the Core Imaging Library
  type: doi
  value: 10.5281/zenodo.4746198
keywords:
- tomographic imaging
- research
- tomography
- reconstruction
- imaging
- hyperspectral
- optimisation
license: Apache-2.0

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 260
  • Total pull requests: 248
  • Average time to close issues: 5 months
  • Average time to close pull requests: about 1 month
  • Total issue authors: 24
  • Total pull request authors: 22
  • Average comments per issue: 0.6
  • Average comments per pull request: 1.48
  • Merged pull requests: 153
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 106
  • Pull requests: 94
  • Average time to close issues: about 1 month
  • Average time to close pull requests: 19 days
  • Issue authors: 17
  • Pull request authors: 13
  • Average comments per issue: 0.41
  • Average comments per pull request: 0.85
  • Merged pull requests: 54
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • MargaretDuff (62)
  • lauramurgatroyd (49)
  • paskino (28)
  • casperdcl (21)
  • epapoutsellis (20)
  • hrobarts (18)
  • gfardell (15)
  • effepivi (10)
  • KrisThielemans (10)
  • samdporter (5)
  • WYVERN2742 (4)
  • manchester-jhellier (4)
  • DanicaSTFC (4)
  • samtygier-stfc (3)
  • jakobsj (2)
Pull Request Authors
  • casperdcl (70)
  • MargaretDuff (61)
  • lauramurgatroyd (30)
  • hrobarts (28)
  • gfardell (20)
  • paskino (17)
  • epapoutsellis (9)
  • tommheik (6)
  • DanicaSTFC (4)
  • manchester-jhellier (3)
  • wjp (2)
  • WYVERN2742 (2)
  • lattaai4 (2)
  • purepani (2)
  • fmwatson (1)
Top Labels
Issue Labels
bug (105) enhancement (90) documentation (16) gh-actions (8) Waiting for review (3) discussion (2) Work In Progress (2) help wanted (1) high_priority (1) epic (1) good first issue (1)
Pull Request Labels
Waiting for review (100) bug (39) gh-actions (25) documentation (22) enhancement (21) Merge pending jenkins (16) high_priority (15) Work In Progress (4) SIRF/CIL integration (3) discussion (1) good first issue (1)

Dependencies

.github/workflows/conda_and_docs_build.yml actions
  • actions/checkout v3.1.0 composite
  • actions/download-artifact v3.0.1 composite
  • actions/upload-artifact v3.1.1 composite
  • ad-m/github-push-action v0.6.0 composite
  • conda-incubator/setup-miniconda v2 composite
  • lauramurgatroyd/build-sphinx-action v0.1.3 composite
  • paskino/conda-package-publish-action v1.4.3 composite
Wrappers/Python/environment.yml conda
  • astra-toolbox 1.8.3
  • numpy 1.11.3
  • python 3.6.7
  • scikit-image 0.15.0
  • scipy 1.2.1
  • spyder 3.3.4