AXITOM

AXITOM: A Python package for reconstruction of axisymmetric tomograms acquired by a conical beam - Published in JOSS (2019)

https://github.com/polymerguy/axitom

Science Score: 95.0%

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

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 4 DOI reference(s) in README and JOSS metadata
  • Academic publication links
    Links to: joss.theoj.org
  • Committers with academic emails
    2 of 3 committers (66.7%) from academic institutions
  • Institutional organization owner
  • JOSS paper metadata
    Published in Journal of Open Source Software

Keywords from Contributors

interactive

Scientific Fields

Mathematics Computer Science - 84% confidence
Last synced: 6 months ago · JSON representation

Repository

Axisymmetric recontruction of tomography data acquired by a conical beam

Basic Info
  • Host: GitHub
  • Owner: PolymerGuy
  • License: mit
  • Language: Python
  • Default Branch: master
  • Size: 121 MB
Statistics
  • Stars: 6
  • Watchers: 0
  • Forks: 2
  • Open Issues: 0
  • Releases: 1
Created over 6 years ago · Last pushed over 6 years ago
Metadata Files
Readme License

README.md

CircleCI codecov MIT License Documentation Status PyPI version DOI


Logo

AXITOM

Tomographic reconstruction of axisymmetric fields acquired by a cone beam
Explore the docs

About The Project

This python package provides tools for axis-symmetric cone-beam computed tomography. A Feldkamp David Kress algorithm performs the reconstruction which have been adapted such that is exploits the axis-symmetric nature of the tomogram.

This toolkit has a highly specialised usage, and there are plenty of more general and excellent frameworks for tomographic reconstruction, such as: * TomoPy (General computed tomography, cone and parallel beam geometry) * PyAbel (Computed tomography based on the inverse Abel transform, parallel beam geometry)

This project aims at providing a simple, accessible toolkit for forward-projection and reconstruction of axis-symmetric tomograms based on a conical beam geometry.

Built With

This project is heavily based on the following packages: * Numpy * Scipy * Scikit-image * Matplotlib

Getting Started

To get a local copy up and running follow these steps.

Install via package manager:

The toolkit is available via PIP, and the instructions below shows how a virtual environment can be created and the toolkit installed.

Prerequisites:

This toolkit is tested on Python 3.6
We recommend the use of virtualenv

Installing:

$ virtualenv -p python3.6 env
$ source ./env/bin/activate #On Linux and Mac OS
$ env\Scripts\activate.bat #On Windows
$ pip install axitom

Now the toolkit is installed and ready for use.

Run the tests:

$ nosetests axitom

If you want to check out the examples, then download the files in the examples folder and run the examples.

Clone the repo:

These instructions will get you a copy of the project up and running on your local machine for development and testing purposes.

Prerequisites:

This toolkit is tested on Python 3.6
We recommend the use of virtualenv

Clone this repo to your preferred location

$ git init
$ git clone https://github.com/PolymerGuy/axitom.git

We recommend that you always use virtual environments, either by virtualenv or by Conda env

$ virtualenv -p python3.6 env
$ source ./env/bin/activate #On Linux and Mac OS
$ env\Scripts\activate.bat #On Windows
$ pip install -r requirements.txt

You can now run an example::

$ python <path_to_axitom>/examples/comparison_to_Nikon.py

Run the tests

The tests should always be launched to check your installation. These tests are integration and unit tests.

If you cloned the repo, you have to call pytest from within the folder

$ pytest

Example

Let us now go through the necessary steps for doing a reconstruction of a tomogram based on a single image. First, we need to import the tools

import axitom as tom
from scipy.ndimage.filters import median_filter

The example data can be downloaded from the AXITOM/tests/example_data/ folder. The dataset was collected during tensile testing of a polymer specimen. Assuming that the example data from the repo is located in root folder, we can make a config object from the .xtekct file

config = tom.config_from_xtekct("radiogram.xtekct")

We now import the projection

 projection = tom.read_image(r"radiogram.tif", flat_corrected=True)

As we will use a single projection only in this reconstruction, we will reduce the noise content of the projection by employing a median filter. Using such a filter works fine since the density gradients within the specimen are relatively small. You may here choose any filter of your liking.

 projection = median_filter(projection, size=21)

Now, the axis of rotation has to be determined. The axis of rotation is found by first binarizing of the image into object and background, and subsequently determining the centre of gravity of the object

 _, center_offset = tom.object_center_of_rotation(projection, background_internsity=0.9)

The config object has to be updated with the correct values

 config = config.with_param(center_of_rot=center_offset)

We are now ready to initiate the reconstruction

 tomo = tom.fdk(projection, config)

The results can then be visualized

import matplotlib.pyplot as plt
plt.title("Radial slice")
plt.imshow(tomo.transpose(), cmap=plt.cm.magma)

Results

Contributing

Contributions are what makes the open-source community such a fantastic place to learn, inspire, and create. Any contributions you make are greatly appreciated.

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature)
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

License

Distributed under the MIT License. See LICENSE for more information.

Contact

Sindre Nordmark Olufsen (PolymerGuy) - sindre.n.olufsen@ntnu.no

Acknowledgements

We are in great debt to the open-source community and all the contributors the projects on which this toolkit is based.

Owner

  • Name: Sindre Nordmark Olufsen
  • Login: PolymerGuy
  • Kind: user
  • Location: Norway
  • Company: Centre for Advanced Structural Analysis (CASA), NTNU

Mechanical engineer and happy coder

JOSS Publication

AXITOM: A Python package for reconstruction of axisymmetric tomograms acquired by a conical beam
Published
October 09, 2019
Volume 4, Issue 42, Page 1704
Authors
Sindre Nordmark Olufsen
Structural Impact Laboratory (SIMLab), Department of Structural Engineering, NTNU, Norwegian University of Science and Technology, NO-7491 Trondheim, Norway
Editor
Kathryn Huff ORCID
Tags
tomography conical-beam X-ray

GitHub Events

Total
Last Year

Committers

Last synced: 7 months ago

All Time
  • Total Commits: 127
  • Total Committers: 3
  • Avg Commits per committer: 42.333
  • Development Distribution Score (DDS): 0.016
Past Year
  • Commits: 0
  • Committers: 0
  • Avg Commits per committer: 0.0
  • Development Distribution Score (DDS): 0.0
Top Committers
Name Email Commits
Sindre s****n@n****o 125
Lorena A. Barba l****a@g****u 1
Kyle Niemeyer k****r@g****m 1
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 1
  • Total pull requests: 2
  • Average time to close issues: 4 minutes
  • Average time to close pull requests: about 14 hours
  • Total issue authors: 1
  • Total pull request authors: 2
  • Average comments per issue: 2.0
  • Average comments per pull request: 0.0
  • Merged pull requests: 2
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 0
  • Pull requests: 0
  • Average time to close issues: N/A
  • Average time to close pull requests: N/A
  • Issue authors: 0
  • Pull request authors: 0
  • Average comments per issue: 0
  • Average comments per pull request: 0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • PolymerGuy (1)
Pull Request Authors
  • kyleniemeyer (1)
  • labarba (1)
Top Labels
Issue Labels
Pull Request Labels

Packages

  • Total packages: 1
  • Total downloads:
    • pypi 36 last-month
  • Total dependent packages: 0
  • Total dependent repositories: 1
  • Total versions: 4
  • Total maintainers: 1
pypi.org: axitom

Tools for axis-symmetric cone-beam computed tomography

  • Versions: 4
  • Dependent Packages: 0
  • Dependent Repositories: 1
  • Downloads: 36 Last month
Rankings
Dependent packages count: 10.0%
Forks count: 19.1%
Average: 19.5%
Stargazers count: 21.5%
Dependent repos count: 21.7%
Downloads: 25.0%
Maintainers (1)
Last synced: 6 months ago

Dependencies

docs/requirements.txt pypi
  • imageio *
  • matplotlib *
  • natsort *
  • numpy *
  • numpydoc *
  • scikit-image *
  • scipy *
  • sphinx_rtd_theme *
requirements.txt pypi
  • codecov *
  • coverage *
  • imageio *
  • matplotlib *
  • natsort *
  • numpy *
  • pytest *
  • pytest-cov *
  • scikit-image *
  • scipy *
setup.py pypi
  • imageio *
  • matplotlib *
  • natsort *
  • nose *
  • numpy *
  • scikit-image *
  • scipy *