Skip to content

Commit 3cfa159

Browse files
authored
Merge pull request #134 from dkazanc/docs_update
Change to calendar versioning and docs update
2 parents fb3013f + ecd918c commit 3cfa159

12 files changed

Lines changed: 91 additions & 81 deletions

File tree

.scripts/conda_upload.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ export CONDA_BLD_PATH=~/conda-bld
1010
$CONDA/bin/conda install conda-build
1111
$CONDA/bin/conda install -c anaconda anaconda-client
1212

13-
export VERSION=$(date +%Y.%m)
13+
export VERSION=1.0.0
1414
$CONDA/bin/conda build .
1515

1616
# upload packages to conda

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
# Change Log
22
All notable changes in ToMoBAR project will be documented in this file.
33

4+
## v.1.0
5+
6+
To better communicate breaking changes, ToMoBAR is moving from calendar versioning to semantic versioning. The initial `1.0` release is based on the `2025.12` version.
7+
48
## v.2025.10
59

610
### Changed

Readme.md

Lines changed: 10 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
</td>
88
<td>
99
<font size="5"><b> TOmographic MOdel-BAsed Reconstruction software <a href="https://github.com/dkazanc/ToMoBAR/tree/master/docs/Kazantsev_CT_20.pdf">PAPER (CT Meeting 2020)</a></b></font>
10-
<br><font size="3" face="verdana" color="green"><b> ToMoBAR</b> is a Python and Matlab (not currently maintained) library of direct and model-based regularised iterative reconstruction algorithms with a plug-and-play capability. ToMoBAR offers you a selection of various data models and regularisers resulting in complex objectives for tomographic reconstruction. ToMoBAR can handle multi-GPU parallel reconstruction in Python and also device-to-device methods operating on CuPy arrays. </font></br>
10+
<br><font size="3" face="verdana" color="green"><b> ToMoBAR</b> is a Python library of fast direct and model-based regularised iterative algorithms with a plug-and-play capability for reconstruction of parallel-beam geometry data. ToMoBAR offers you a selection of various data models and regularisers resulting in complex objectives for tomographic reconstruction. ToMoBAR can handle multi-GPU parallel reconstruction in Python and also device-to-device methods operating on CuPy arrays. It is currently used in production at <a href="https://www.diamond.ac.uk/Home.html">Diamond Light Source</a> as a part of the <a href="https://diamondlightsource.github.io/httomo/">HTTomo</a> framework for big-data processing and reconstruction.</font></br>
1111
</td>
1212
</tr>
1313
</table>
@@ -16,21 +16,23 @@
1616
|--------|-------------------|
1717
| ![Github Actions](https://github.com/dkazanc/ToMoBAR/actions/workflows/tomobar_conda_upload.yml/badge.svg) | ![conda version](https://anaconda.org/httomo/tomobar/badges/version.svg) ![conda last release](https://anaconda.org/httomo/tomobar/badges/latest_release_date.svg) [![conda platforms](https://anaconda.org/httomo/tomobar/badges/platforms.svg) ![conda dowloads](https://anaconda.org/httomo/tomobar/badges/downloads.svg)](https://anaconda.org/httomo/tomobar/) |
1818

19-
### Updates:
20-
There are $\sf\color{red}BREAKING$ $\sf\color{red}CHANGES$ from ToMoBAR $\sf\color{red}v.2025.08$, see [CHANGELOG](https://github.com/dkazanc/ToMoBAR/blob/master/CHANGELOG.md) for all detailed changes.
19+
### Updates:
20+
* $\sf\color{red}!$ To better communicate breaking changes, ToMoBAR is moving from calendar versioning to semantic versioning. The initial 1.0 release is based on the 2025.12 version.
21+
* There are $\sf\color{red}BREAKING$ $\sf\color{red}CHANGES$ from ToMoBAR $\sf\color{red}v.2025.08$, see [CHANGELOG](https://github.com/dkazanc/ToMoBAR/blob/master/CHANGELOG.md) for all detailed changes.
2122

2223
## ToMoBAR highlights:
2324
Check what ToMoBAR can [do](https://dkazanc.github.io/ToMoBAR/introduction/about.html#what-tomobar-can-do). Please also see [Tutorials](https://dkazanc.github.io/ToMoBAR/tutorials/direct_recon.html) and [Demos](https://github.com/dkazanc/ToMoBAR/tree/master/Demos/Python).
25+
ToMoBAR
2426

2527
## Installation
2628
Please check the detailed [installation](https://dkazanc.github.io/ToMoBAR/howto/installation.html) guide where all [software dependencies](https://dkazanc.github.io/ToMoBAR/introduction/dependencies.html) are listed.
2729

2830
### Software includes:
29-
* A wrapper around [ASTRA-toolbox](https://www.astra-toolbox.com/) to simplify access to various reconstruction methods available in ASTRA
31+
* Wrappers around [ASTRA-toolbox](https://www.astra-toolbox.com/) to simplify access to various reconstruction methods available in ASTRA-Toolbox
32+
* Optimised CUDA/CuPy implementation of the fast [Log-Polar]( https://epubs.siam.org/doi/10.1137/15M1023762) (Fourier-based) direct reconstruction method.
3033
* Regularised iterative ordered-subsets [FISTA](https://epubs.siam.org/doi/10.1137/080716542) reconstruction algorithm with linear and non-linear data fidelities
3134
* Regularised iterative [ADMM](https://ieeexplore.ieee.org/document/7744574/) reconstruction algorithm
32-
* CuPy driven [forward/backward projectors](https://github.com/dkazanc/ToMoBAR/blob/master/Demos/Python/Demo_CuPy_3D.py) to enable faster device-to-device operations and all in GPU memory protoyping of algorithms
33-
* [Access to multi-GPU capability through mpi4py library](https://github.com/dkazanc/ToMoBAR/blob/master/Demos/Python/MultiGPU_demo.py)
35+
* CuPy driven [forward/backward projectors](https://github.com/dkazanc/ToMoBAR/blob/master/Demos/Python/Demo_CuPy_3D.py) to enable faster device-to-device operations and all-in-GPU memory prototyping of algorithms.
3436
* [Demos](https://github.com/dkazanc/ToMoBAR/tree/master/Demos) to reconstruct synthetic and also real data [4-6]
3537

3638
<div align="center">
@@ -40,24 +42,5 @@ Please check the detailed [installation](https://dkazanc.github.io/ToMoBAR/howto
4042
<img src="docs/source/_static/TomoRec_surf2.jpg" width="600">
4143
</div>
4244

43-
### References:
44-
1. [D. Kazantsev and N. Wadeson 2020. TOmographic MOdel-BAsed Reconstruction (ToMoBAR) software for high resolution synchrotron X-ray tomography. CT Meeting 2020](https://github.com/dkazanc/ToMoBAR/tree/master/docs/Kazantsev_CT_20.pdf)
45-
2. [P. Paleo and A. Mirone 2015. Ring artifacts correction in compressed sensing tomographic reconstruction. Journal of synchrotron radiation, 22(5), pp.1268-1278.](https://doi.org/10.1107/S1600577515010176)
46-
3. [D. Kazantsev et al. 2017. A Novel Tomographic Reconstruction Method Based on the Robust Student's t Function For Suppressing Data Outliers. IEEE TCI, 3(4), pp.682-693.](https://doi.org/10.1109/TCI.2017.2694607)
47-
4. [D. Kazantsev et al. 2017. Model-based iterative reconstruction using higher-order regularization of dynamic synchrotron data. Measurement Science and Technology, 28(9), p.094004.](https://doi.org/10.1088/1361-6501/aa7fa8)
48-
5. [H. Om Aggrawal et al. 2017. A Convex Reconstruction Model for X-ray tomographic Imaging with Uncertain Flat-fields", IEEE Transactions on Computational Imaging](http://ieeexplore.ieee.org/document/7967846/)
49-
6. [V. Van Nieuwenhove et al. 2015. Dynamic intensity normalization using eigen flat fields in X-ray imaging. Optics express 23(21)](https://visielab.uantwerpen.be/sites/default/files/ffc_2016.pdf).
50-
51-
### Applications (where ToMoBAR software have been used or referenced):
52-
7. [D. Kazantsev et al. 2019. CCPi-Regularisation toolkit for computed tomographic image reconstruction with proximal splitting algorithms. SoftwareX, 9, pp.317-323.](https://doi.org/10.1016/j.softx.2019.04.003)
53-
8. [E. Guo et al. 2018. The influence of nanoparticles on dendritic grain growth in Mg alloys. Acta Materialia.](https://doi.org/10.1016/j.actamat.2018.04.023)
54-
9. [E. Guo et al. 2018. Revealing the microstructural stability of a three-phase soft solid (ice cream) by 4D synchrotron X-ray tomography. Journal of Food Engineering](https://www.sciencedirect.com/science/article/pii/S0260877418302309)
55-
10. [E. Guo et al. 2017. Dendritic evolution during coarsening of Mg-Zn alloys via 4D synchrotron tomography. Acta Materialia](https://doi.org/10.1016/j.actamat.2016.10.022)
56-
11. [E. Guo et al. 2017. Synchrotron X-ray tomographic quantification of microstructural evolution in ice cream–a multi-phase soft solid. Rsc Advances](https://doi.org/10.1039/C7RA00642J)
57-
12. [Liu Shi et al. 2020. Review of CT image reconstruction open source toolkits, Journal of X-Ray Science and Technology](https://content.iospress.com/articles/journal-of-x-ray-science-and-technology/xst200666)
58-
59-
### License:
60-
GNU GENERAL PUBLIC LICENSE v.3
61-
62-
### Questions/Comments
63-
can be addressed to Daniil Kazantsev at [email protected]
45+
### To cite software please use:
46+
[D. Kazantsev and N. Wadeson 2020. TOmographic MOdel-BAsed Reconstruction (ToMoBAR) software for high resolution synchrotron X-ray tomography. CT Meeting 2020](https://github.com/dkazanc/ToMoBAR/tree/master/docs/Kazantsev_CT_20.pdf)

docs/source/howto/installation.rst

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,9 @@
22

33
Installation Guide
44
------------------
5-
ToMoBAR is a Python package with several :ref:`ref_dependencies`. To ensure its full functionality it is recommended to install them.
6-
It mostly relies on the GPU-enabled computations and therefore we suggest using a decent NVIDIA graphics card to support it.
5+
ToMoBAR is a Python package with several :ref:`ref_dependencies`. To enable full functionality, it is recommended to install a subset of these dependencies.
6+
7+
.. note:: ToMoBAR relies on GPU-accelerated computations; therefore, we also recommend using a capable NVIDIA graphics card to take full advantage of its features.
78

89
.. _ref_python:
910

docs/source/introduction/about.rst

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,32 +5,42 @@ About ToMoBAR
55

66
The general concept:
77
====================
8+
89
ToMoBAR is a Python library (Matlab is not currently supported) of direct and model-based
910
regularised iterative reconstruction algorithms with a plug-and-play capability.
1011
ToMoBAR offers you a selection of various data models and regularisers resulting in
1112
complex objectives for tomographic reconstruction. ToMoBAR uses ASTRA-Toolbox [VanAarle2015]_,
1213
for projection-backprojection parallel-beam geometry routines, which is
1314
a common geometry for X-ray synchrotron imaging [SX2022]_.
1415

15-
ToMoBAR can operate in GPU device-to-device fashion on CuPy arrays therefore ensuring
16-
a better computational efficiency. With GPU device controlling :ref:`ref_api`
17-
exposed it can also support multi-GPU parallel computing [CT2020]_ .
16+
Where it is used:
17+
=================
18+
19+
ToMoBAR is currently used in production at `Diamond Light Source <https://www.diamond.ac.uk/Home.html>`_, which is
20+
the United Kingdom's national synchrotron science facility. ToMoBAR is exposed through the
21+
`HTTomolibGPU <https://diamondlightsource.github.io/httomolibgpu/>`_ library which is the backend for the
22+
`HTTomo <https://diamondlightsource.github.io/httomo/>`_'s framework for big-data processing and
23+
reconstruction.
1824

19-
.. figure:: ../_static/TomoRec_surf2.jpg
20-
:scale: 30 %
21-
:alt: ToMoBAR in action
2225

23-
What ToMoBAR can do:
26+
What can ToMoBAR do:
2427
====================
2528

29+
ToMoBAR can operate in GPU device-to-device fashion on CuPy arrays therefore ensuring a better computational
30+
efficiency. With the GPU device controlling :ref:`ref_api` exposed it can also support multi-GPU parallel computing [CT2020]_ .
31+
2632
* Reconstruct parallel-beam projection data in 2D and 3D using GPU-accelerated routines from ASTRA-toolbox [VanAarle2015]_.
2733
* Employ fast GPU-accelerated direct methods, such as FBP method in :mod:`tomobar.methodsDIR` and CuPy accelerated Fourier
28-
reconstruction :func:`FOURIER_INV` in :mod:`tomobar.methodsDIR_CuPy`.
34+
reconstruction :func:`FOURIER_INV` [NIKITIN2017]_ in :mod:`tomobar.methodsDIR_CuPy`.
2935
* Use advanced model-based regularised iterative schemes such as FISTA and ADMM proximal splitting algorithms in :mod:`tomobar.methodsIR` or
3036
even faster implementations with CuPy in :mod:`tomobar.methodsIR_CuPy`.
3137
* The FISTA algorithm [BT2009]_, [Xu2016]_ offers various modifications: convergence acceleration with ordered-subsets,
3238
different data fidelities: PWLS, Huber, Group-Huber [PM2015]_, Students't [KAZ1_2017]_, and SWLS [HOA2017]_
3339
to deal with noise and various imaging artefacts, such as, rings, streaks.
3440
* Combine FISTA and ADMM methods with regularisers from the CCPi-Regularisation Toolkit [KAZ2019]_. It is possible to construct different combinations of the objective function.
3541

42+
.. figure:: ../_static/TomoRec_surf2.jpg
43+
:scale: 30 %
44+
:alt: ToMoBAR in action
45+
3646
See more on ToMoBAR's API in :ref:`ref_api`.

docs/source/introduction/dependencies.rst

Lines changed: 37 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -5,43 +5,58 @@ Dependencies
55
ToMoBAR relies on several dependencies which we list bellow in the order of priority.
66
In general, we would recommend installing 1,2 and 3 packages.
77

8-
* 1. `ASTRA-toolbox <https://www.astra-toolbox.com/>`_ is the major dependency
9-
as ToMoBAR heavily relies on the GPU-accelerated projection/backprojection routines of the toolbox. With
8+
* 1. `ASTRA-toolbox <https://www.astra-toolbox.com/>`_ is the important dependency
9+
as ToMoBAR relies on the GPU-accelerated projection/backprojection routines of the toolbox. With
1010
the package installed, one can perform :ref:`tutorials_direct` and :ref:`examples_basic_iter`,
11-
however, the regularisation will not be available for :ref:`examples_regul_iter`.
11+
note that for regularised iterative methods you either need
12+
`CCPi-Regularisation-Toolkit <https://github.com/TomographicImaging/CCPi-Regularisation-Toolkit/>`_ [KAZ2019]_
13+
or a CuPy installation, see bellow for more details.
1214

13-
Normally ASTRA included into the list of dependencies, but one can install it with:
15+
Normally ASTRA Toolbox is included into the list of dependencies of ToMoBAR, but one can install it with:
1416

1517
.. code-block:: console
1618
17-
$ conda install conda-forge::astra-toolbox
19+
$ conda install -c astra-toolbox -c nvidia astra-toolbox
1820
1921
* 2. `CCPi-Regularisation-Toolkit <https://github.com/TomographicImaging/CCPi-Regularisation-Toolkit/>`_ [KAZ2019]_ provides
2022
CPU and GPU regularisers (2D/3D) to enable :ref:`examples_regul_iter` in ToMoBAR.
2123
Once installed, one gets an access to more than 10 plug-and-play regularisers to
2224
compliment ToMoBAR's iterative reconstruction algorithms.
2325

2426
For Python installation, see `conda-httomo <https://anaconda.org/httomo/ccpi-regulariser>`_
25-
and `conda-ccpi <https://anaconda.org/ccpi/ccpi-regulariser>`_ pages. It is recommended
26-
to install using the :code:`httomo` channel first as this combination is normally tested
27-
by the ToMoBAR's author:
27+
and `conda-ccpi <https://anaconda.org/ccpi/ccpi-regulariser>`_ pages.
2828

2929
.. code-block:: console
3030
31-
$ conda install httomo::ccpi-regulariser # linux/windows
32-
$ conda install httomo::ccpi-regularisation-cupy # all OS but CuPy modules only
3331
$ conda install ccpi::ccpi-regulariser # linux/windows (in case if above doesn't work)
32+
$ conda install httomo::ccpi-regulariser # linux/windows
33+
3434
35+
.. note:: For faster device-to-device regularised iterative reconstruction, consider using the CuPy-based version of ToMoBAR (see point 3).
3536

36-
If one needs to install only CuPy modules (see 6.), the quickest way will be
37+
* 3. `CuPy <https://cupy.dev/>`_ dependency provides access to GPU-accelerated routines that are separate from the main host-device-host implementation approach. The CuPy-driven algorithms operate on CuPy arrays that remain on the GPU, rather than on NumPy arrays stored in CPU memory.
38+
When the CuPy dependency is available, users can access methods from the following classes:
39+
:mod:`tomobar.methodsDIR_CuPy` and :mod:`tomobar.methodsIR_CuPy`. For example, the ultra-fast reconstruction method
40+
:func:`tomobar.methodsDIR_CuPy.RecToolsDIRCuPy.FOURIER_INV`, based on the Fourier transform [NIKITIN2017]_, is available in :mod:`tomobar.methodsDIR_CuPy`.
41+
In addition, faster regularised iterative reconstruction methods are also provided (see point 4).
42+
We plan to continue developing and supporting this capability, as it offers significant efficiency gains f
43+
or GPU-based computations without requiring explicit software builds.
44+
45+
For Python installation see `conda-cupy <https://anaconda.org/anaconda/cupy>`_ page.
3746

3847
.. code-block:: console
3948
40-
$ pip install ccpi-regularisation-cupy # all OS but CuPy modules only
49+
$ conda install conda-forge::cupy
50+
51+
* 4. CuPy-enabled CCPi-Regularisation-Toolkit can be used when point 3 is satisfied. This will give you an access to
52+
:mod:`tomobar.methodsIR_CuPy` modules, where more efficient iterative regularisation methods are implemented.
53+
Note, however, that modules in :mod:`tomobar.methodsIR` won't be accessible without installation of CCPi-Regularisation-Toolkit (see point 2).
4154

42-
* 3. `TomoPhantom <https://github.com/dkazanc/TomoPhantom>`_ is optional but can be very
55+
56+
* 5. `TomoPhantom <https://github.com/dkazanc/TomoPhantom>`_ is optional but can be very
4357
handy to generate synthethic tomographic data and play with :ref:`examples_synth_iter`.
44-
Also most of the `Demos <https://github.com/dkazanc/ToMoBAR/tree/master/Demos/Python>`_ in ToMoBAR using TomoPhantom.
58+
Also most of the `Demos <https://github.com/dkazanc/ToMoBAR/tree/master/Demos/Python>`_ in ToMoBAR
59+
using TomoPhantom.
4560

4661
For Python installation see the `installation guide <https://dkazanc.github.io/TomoPhantom/howto/installation.html>`_.
4762

@@ -50,7 +65,13 @@ If one needs to install only CuPy modules (see 6.), the quickest way will be
5065
$ conda install httomo::tomophantom # linux/windows
5166
5267
53-
* 4. Wavelet toolbox `pypwt <https://github.com/pierrepaleo/pypwt>`_ or **pycudwt** is optional and required only
68+
* 6. `HTTomolibGPU <https://diamondlightsource.github.io/httomolibgpu/>`_ is a library of GPU accelerated methods for tomography which uses ToMoBAR as a backend for `reconstruction <https://diamondlightsource.github.io/httomolibgpu/reference/methods_list/reconstruction_methods.html>`_. This library can be useful if one builds the full pipeline for raw data processing, including pre-processing, reconstruction and post-processing.
69+
70+
.. code-block:: console
71+
72+
$ pip install httomolibgpu
73+
74+
* 7. Wavelet toolbox `pypwt <https://github.com/pierrepaleo/pypwt>`_ or **pycudwt** is optional and required only
5475
if the CCPi-Regularisation-Toolkit already installed. It adds soft/hard thresholding of Wavelets coefficients to the available regularisers.
5576
In some cases it can be beneficial for the reconstruction quality.
5677

@@ -62,29 +83,7 @@ If one needs to install only CuPy modules (see 6.), the quickest way will be
6283
$ conda install httomo::pypwt # if above didn't work (linux only)
6384
6485
65-
* 5. `CuPy <https://cupy.dev/>`_ dependency is optional and used to write high-level code in Python for GPU computations.
66-
Those algorithms operating on CuPy arrays that are kept on the GPU device as opposed to Numpy arrays kept in the CPU memory.
67-
It is a work in progress to fully support the CuPy compute in ToMoBAR, however, some reconstruction methods, such as direct and iterative
68-
were already ported, see :mod:`tomobar.methodsDIR_CuPy` and :mod:`tomobar.methodsIR_CuPy`, respectively.
69-
We have plans to continue developing and supporting this new capability as it offers promising efficiency for GPU computations, no OS-specific builds required,
70-
and simplicity of the implementation.
71-
72-
For Python installation see the `conda-cupy <https://anaconda.org/anaconda/cupy>`_ page.
73-
74-
.. code-block:: console
75-
76-
$ conda install conda-forge::cupy # linux/windows
77-
78-
* 6. CuPy-enabled CCPi-Regularisation-Toolkit can be used when (5) is satisfied. This will give you an access to
79-
:mod:`tomobar.methodsDIR_CuPy` and :mod:`tomobar.methodsIR_CuPy` modules, while regularisation methods of
80-
:mod:`tomobar.methodsIR` won't be accessible.
81-
82-
.. code-block:: console
83-
84-
$ pip install ccpi-regularisation-cupy # all OS but CuPy modules only
85-
86-
87-
* 7. `mpi4py <https://mpi4py.readthedocs.io/en/stable/>`_ is a Python extension for parallel computing using MPI.
86+
* 8. `mpi4py <https://mpi4py.readthedocs.io/en/stable/>`_ is a Python extension for parallel computing using MPI.
8887
Install only if you are planning to use multi-GPU computing. ToMoBAR in itself doesn't offer
8988
any parallelisation and you might want to check the `HTTomo <https://github.com/DiamondLightSource/httomo>`_ package.
9089
HTTomo supports MPI-based reconstruction and uses ToMoBAR as a backend.

0 commit comments

Comments
 (0)