Metadata-Version: 2.1
Name: flexcalc
Version: 1.0.0
Summary: CT data pre- and post-processing tools, simulation of spectral data, and batch-processing of large number of datasets
Home-page: https://github.com/cicwi/flexcalc
Author: Alex Kostenko
License: GNU General Public License v3
Description-Content-Type: text/markdown
License-File: LICENSE.md
Requires-Dist: numpy
Requires-Dist: tqdm
Requires-Dist: simpleitk
Requires-Dist: scipy
Requires-Dist: scikit-image
Requires-Dist: flexdata
Requires-Dist: flextomo
Provides-Extra: dev
Requires-Dist: sphinx; extra == "dev"
Requires-Dist: sphinx-rtd-theme; extra == "dev"
Requires-Dist: myst-parser; extra == "dev"
Provides-Extra: draw
Requires-Dist: networkx; extra == "draw"
Requires-Dist: pygraphviz; extra == "draw"
Provides-Extra: mesh
Requires-Dist: numpy-stl; extra == "mesh"

# flexCALC

This project is a part of the larger X-ray tomographic reconstruction toolbox comprised of [flexDATA](https://github.com/cicwi/flexDATA), [flexTOMO](https://github.com/cicwi/flexTOMO) and [flexCALC](https://github.com/cicwi/flexCALC).
flexCALC contains various routines useful with tomographic reconstructions but not directly reconstruction algorithms. These routines include data pre- and post-processing tools, simulation of spectral data, and batch-processing of large number of datasets.

## Getting Started

We recommend that the user installs [conda package manager](https://docs.anaconda.com/miniconda/) for Python 3.

### Installing with conda

`conda install flexcalc -c cicwi -c astra-toolbox -c nvidia`

### Installing with pip

`pip install flexcalc`

### Installing from source

```bash
git clone https://github.com/cicwi/flexcalc.git
cd flexcalc
pip install -e .
```

## Running the examples

To learn about the functionality of the package check out our `examples/` folder. Examples are separated into blocks that are best to run in VS Code / Spyder environment step-by-step.

## Modules

flexCALC is comprised of several modules:

* `flexcalc.process`: Pre- and post-processing routines. For instance: volume registration, rings removal etc.
* `flexcalc.analyze`: Utilities for data analysis.
* `flexcalc.batch`: Define a batch processing pipeline and push multiple datasets through it.

Typical usage:

```python
# Import:
from flextomo import project
from flexcalc import process

# Read data and apply beam-hardening:
proj, geom = process.process_flex(path)
proj = process.equivalent_density(proj, geom, energy, spec, compound = 'Al', density = 2.7)

# Align the rotation centre:
process.optimize_rotation_center(proj, geom, subscale = 2)

# Reconstruct:
vol = project.init_volume(proj)
project.FDK(proj, vol, meta['geometry'])
```

## Authors and contributors

* **Alexander Kostenko** - *Initial work*
* **Willem Jan Palenstijn** - *Packaging, installation and maintenance*
* **Alexander Skorikov** - *Packaging, installation and maintenance*

## How to contribute

Contributions are always welcome. If you have any issues, questions, or remarks, then please open an issue on GitHub.

## License

This project is licensed under the GNU GENERAL PUBLIC License - see the [LICENSE.md](LICENSE.md) file for details
