algotom


Namealgotom JSON
Version 1.6.0 PyPI version JSON
download
home_pagehttps://github.com/algotom/algotom
SummaryData processing algorithms for tomography
upload_time2024-05-07 03:18:39
maintainerNone
docs_urlNone
authorNghia Vo
requires_python>=3.8
licenseApache 2.0
keywords parallel-beam computed tomography image processing tomography x-ray imaging phase contrast imaging ring artifact removal
VCS
bugtrack_url
requirements numpy scipy numba pywavelets pillow h5py joblib
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Algotom
### Data processing (**ALGO**)rithms for (**TOM**)ography.

![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/algotom/algotom/algotom_ga.yml) [![Downloads](https://static.pepy.tech/personalized-badge/algotom?period=total&units=international_system&left_color=grey&right_color=blue&left_text=Pypi-downloads)](https://pepy.tech/project/algotom) ![Conda](https://img.shields.io/conda/dn/algotom/algotom?label=conda-downloads) ![GitHub code size in bytes](https://img.shields.io/github/languages/code-size/algotom/algotom) ![Conda](https://img.shields.io/conda/pn/algotom/algotom) ![GitHub issues](https://img.shields.io/github/issues-raw/algotom/algotom) ![Conda](https://img.shields.io/conda/dn/conda-forge/algotom?label=conda-forge%20downloads) ![Coverage](https://github.com/algotom/algotom/raw/doc/docs/coverage_report/coverage.svg)


![logo](https://github.com/algotom/algotom/raw/master/figs/readme/logo2.png)

**Algotom** is a Python package designed for tomography data processing. It 
offers a complete data processing pipeline; including reading and writing data, 
pre-processing, tomographic reconstruction, post-processing, data simulation, 
and calibration techniques. The package provides many utility methods to 
assist users in constructing a pipeline for processing their own data or 
developing new methods. Key features of Algotom include a wide range of 
processing methods such as artifact removal, distortion correction, 
speckle-based phase-contrast imaging, data reduction; and the capability of 
processing non-standard tomography acquisitions such as grid scans or helical scans. 
The software stands out for its readability, minimal dependencies, and rich documentation. 
Developed specifically for synchrotron-based tomographic beamlines, Algotom aims to 
maximize data quality, enhance workflow throughput, and exploit full beamline 
capabilities.

Features
--------

Algotom is a lightweight package. The software is built on top of a few core
Python libraries to ensure its ease-of-installation. Methods distributed in 
Algotom have been developed and tested at synchrotron beamlines where massive
datasets are produced. This factor drives the methods developed to be easy-to-use, 
robust, and practical. Algotom can be used on a normal computer to process large 
tomographic data. Some featuring methods in Algotom are as follows:

- Methods in a full data processing pipeline: reading-writing data, 
  pre-processing, tomographic reconstruction, and post-processing.
  
  ![pipe_line](https://github.com/algotom/algotom/raw/master/figs/readme/data_processing_space.png) 
 
- Methods for processing grid scans (or tiled scans) with the offset rotation-axis 
  to multiply double the field-of-view (FOV) of a parallel-beam tomography system.
  These techniques enable high-resolution tomographic scanning of large samples.
  
  ![grid_scan](https://github.com/algotom/algotom/raw/master/figs/readme/grid_scan.jpg)
  
- Methods for processing helical scans (with/without the offset rotation-axis).
  
  ![helical_scan](https://github.com/algotom/algotom/raw/master/figs/readme/helical_scan.jpg)

- Methods for determining the center-of-rotation (COR) and auto-stitching images 
  in half-acquisition scans (360-degree acquisition with the offset COR).

- Practical methods developed and implemented for the package: zinger removal, 
  tilted sinogram generation, sinogram distortion correction, simplified form of Paganin's filter,
  beam hardening correction, DFI (direct Fourier inversion) reconstruction,
  FBP (filtered back-projection) reconstruction, BPF (back-projection filtering) reconstruction, 
  and double-wedge filter for removing sample parts larger than the FOV in a sinogram.
  
  ![pipe_line](https://github.com/algotom/algotom/raw/master/figs/readme/double_wedge_filter.jpg)
  
- Utility methods for [customizing ring/stripe artifact removal methods](https://algotom.readthedocs.io/en/latest/toc/section4/section4_3.html) 
  and parallelizing computational work.

- Calibration methods for helical scans and tomography alignment.

- Methods for generating simulation data: phantom creation, sinogram calculation
  based on the Fourier slice theorem, and artifact generation.
  
  ![simulation](https://github.com/algotom/algotom/raw/master/figs/readme/simulation.png)

- Methods for phase-contrast imaging: phase unwrapping, speckle-based phase retrieval, image correlation, and image alignment.

  ![speckle](https://github.com/algotom/algotom/raw/master/figs/readme/speckle_based_tomography.png)

- Methods for downsampling, rescaling, and reslicing (+rotating, cropping) 
  3D reconstructed image without large memory usage.

  ![reslicing](https://github.com/algotom/algotom/raw/master/figs/readme/reslicing.jpg)

- Direct vertical reconstruction for single slice, multiple slices, and multiple slices at 
  different orientations.
  
  ![vertical_slice1](https://github.com/algotom/algotom/raw/master/figs/readme/direct_vertical_reconstruction.png)

  ![vertical_slice1](https://github.com/algotom/algotom/raw/master/figs/readme/limited_angle_tomography.png)
  
   

Installation
------------

- https://algotom.readthedocs.io/en/latest/toc/section3.html
- If users install Algotom to an existing environment and Numba fails to install due to the latest Numpy:
  + Downgrade Numpy and install Algotom/Numba again.
  + Create a new environment and install Algotom first, then other packages.
  + Use conda instead of pip.
- Avoid using the latest version of Python or Numpy as the Python ecosystem taking time to keep up with these twos.

Usage
-----
- https://algotom.readthedocs.io/en/latest/toc/section4/section4_5.html
- https://algotom.readthedocs.io/en/latest/toc/section1/section1_4.html
- https://algotom.readthedocs.io/en/latest/toc/section4.html
- https://github.com/algotom/algotom/tree/master/examples

Development principles
----------------------

- While Algotom offers a complete set of tools for tomographic data processing covering 
  pre-processing, reconstruction, post-processing, data simulation, and calibration techniques;
  its development strongly focuses on pre-processing techniques. This distinction makes it a
  prominent feature among other tomographic software.   

- To ensure that the software can work across platforms and is easy-to-install; dependencies are minimized, and only 
  well-maintained [Python libraries](https://github.com/algotom/algotom/blob/master/requirements.txt) are used.

- To achieve high-performance computing and leverage GPU utilization while ensuring ease of understanding, usage, and software 
  maintenance, Numba is used instead of Cupy or PyCuda.

- Methods are structured into modules and functions rather than classes to enhance usability, debugging, and maintenance.

- Algotom is highly practical as it can run on computers with or without a GPU, multicore CPUs; and accommodates both small 
  and large memory capacities.

Update notes
------------

- https://algotom.readthedocs.io/en/latest/toc/section6.html

Author
------

- Nghia T. Vo - *NSLS-II, Brookhaven National Lab, USA*; *Diamond Light Source, UK.*  
 
Highlights
----------

Algotom was used for some experiments featured on media:

- Scanning [Moon rocks and Martian meteorites](https://www.diamond.ac.uk/Home/News/LatestNews/2019/17-07-2019.html) 
  using helical scans with offset rotation-axis. Featured on [Reuters](https://www.reuters.com/article/idUKKCN1UC16V?edition-redirect=uk).
 
  ![moon_rock](https://github.com/algotom/algotom/raw/master/figs/readme/Moon_rock_Mars_meteorite.jpg)

- Scanning [Herculaneum Scrolls](https://www.diamond.ac.uk/Home/News/LatestNews/2019/03-10-2019.html) 
  using grid scans with offset rotation-axis respect to the grid's FOV (pixel size of 7.9 micron; 
  total size of 11.3 TB). Featured on [BBC](https://www.bbc.co.uk/news/av/uk-england-oxfordshire-49926789).
  The latest updates on the scroll's reading progress are [here](https://www.nature.com/articles/d41586-023-03212-1).

  ![herculaneum_scroll](https://github.com/algotom/algotom/raw/master/figs/readme/Herculaneum_scroll.jpg)

- Scanning ['Little Foot' fossil](https://www.diamond.ac.uk/Home/News/LatestNews/2021/02-03-21.html) 
  using two-camera detector with offset rotation-axis. Featured on [BBC](https://www.bbc.co.uk/news/science-environment-56241509).
    
  ![little_foot](https://github.com/algotom/algotom/raw/master/figs/readme/Little_foot.jpg)  

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/algotom/algotom",
    "name": "algotom",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.8",
    "maintainer_email": null,
    "keywords": "Parallel-beam Computed Tomography, Image Processing, Tomography, X-ray Imaging, Phase Contrast Imaging, Ring artifact removal",
    "author": "Nghia Vo",
    "author_email": "nvo@bnl.gov",
    "download_url": "https://files.pythonhosted.org/packages/26/f2/ac34ac24f30ca5977f18e27efaf53076015f507ffe89a847d8cf64f81329/algotom-1.6.0.tar.gz",
    "platform": "Any",
    "description": "# Algotom\r\n### Data processing (**ALGO**)rithms for (**TOM**)ography.\r\n\r\n![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/algotom/algotom/algotom_ga.yml) [![Downloads](https://static.pepy.tech/personalized-badge/algotom?period=total&units=international_system&left_color=grey&right_color=blue&left_text=Pypi-downloads)](https://pepy.tech/project/algotom) ![Conda](https://img.shields.io/conda/dn/algotom/algotom?label=conda-downloads) ![GitHub code size in bytes](https://img.shields.io/github/languages/code-size/algotom/algotom) ![Conda](https://img.shields.io/conda/pn/algotom/algotom) ![GitHub issues](https://img.shields.io/github/issues-raw/algotom/algotom) ![Conda](https://img.shields.io/conda/dn/conda-forge/algotom?label=conda-forge%20downloads) ![Coverage](https://github.com/algotom/algotom/raw/doc/docs/coverage_report/coverage.svg)\r\n\r\n\r\n![logo](https://github.com/algotom/algotom/raw/master/figs/readme/logo2.png)\r\n\r\n**Algotom** is a Python package designed for tomography data processing. It \r\noffers a complete data processing pipeline; including reading and writing data, \r\npre-processing, tomographic reconstruction, post-processing, data simulation, \r\nand calibration techniques. The package provides many utility methods to \r\nassist users in constructing a pipeline for processing their own data or \r\ndeveloping new methods. Key features of Algotom include a wide range of \r\nprocessing methods such as artifact removal, distortion correction, \r\nspeckle-based phase-contrast imaging, data reduction; and the capability of \r\nprocessing non-standard tomography acquisitions such as grid scans or helical scans. \r\nThe software stands out for its readability, minimal dependencies, and rich documentation. \r\nDeveloped specifically for synchrotron-based tomographic beamlines, Algotom aims to \r\nmaximize data quality, enhance workflow throughput, and exploit full beamline \r\ncapabilities.\r\n\r\nFeatures\r\n--------\r\n\r\nAlgotom is a lightweight package. The software is built on top of a few core\r\nPython libraries to ensure its ease-of-installation. Methods distributed in \r\nAlgotom have been developed and tested at synchrotron beamlines where massive\r\ndatasets are produced. This factor drives the methods developed to be easy-to-use, \r\nrobust, and practical. Algotom can be used on a normal computer to process large \r\ntomographic data. Some featuring methods in Algotom are as follows:\r\n\r\n- Methods in a full data processing pipeline: reading-writing data, \r\n  pre-processing, tomographic reconstruction, and post-processing.\r\n  \r\n  ![pipe_line](https://github.com/algotom/algotom/raw/master/figs/readme/data_processing_space.png) \r\n \r\n- Methods for processing grid scans (or tiled scans) with the offset rotation-axis \r\n  to multiply double the field-of-view (FOV) of a parallel-beam tomography system.\r\n  These techniques enable high-resolution tomographic scanning of large samples.\r\n  \r\n  ![grid_scan](https://github.com/algotom/algotom/raw/master/figs/readme/grid_scan.jpg)\r\n  \r\n- Methods for processing helical scans (with/without the offset rotation-axis).\r\n  \r\n  ![helical_scan](https://github.com/algotom/algotom/raw/master/figs/readme/helical_scan.jpg)\r\n\r\n- Methods for determining the center-of-rotation (COR) and auto-stitching images \r\n  in half-acquisition scans (360-degree acquisition with the offset COR).\r\n\r\n- Practical methods developed and implemented for the package: zinger removal, \r\n  tilted sinogram generation, sinogram distortion correction, simplified form of Paganin's filter,\r\n  beam hardening correction, DFI (direct Fourier inversion) reconstruction,\r\n  FBP (filtered back-projection) reconstruction, BPF (back-projection filtering) reconstruction, \r\n  and double-wedge filter for removing sample parts larger than the FOV in a sinogram.\r\n  \r\n  ![pipe_line](https://github.com/algotom/algotom/raw/master/figs/readme/double_wedge_filter.jpg)\r\n  \r\n- Utility methods for [customizing ring/stripe artifact removal methods](https://algotom.readthedocs.io/en/latest/toc/section4/section4_3.html) \r\n  and parallelizing computational work.\r\n\r\n- Calibration methods for helical scans and tomography alignment.\r\n\r\n- Methods for generating simulation data: phantom creation, sinogram calculation\r\n  based on the Fourier slice theorem, and artifact generation.\r\n  \r\n  ![simulation](https://github.com/algotom/algotom/raw/master/figs/readme/simulation.png)\r\n\r\n- Methods for phase-contrast imaging: phase unwrapping, speckle-based phase retrieval, image correlation, and image alignment.\r\n\r\n  ![speckle](https://github.com/algotom/algotom/raw/master/figs/readme/speckle_based_tomography.png)\r\n\r\n- Methods for downsampling, rescaling, and reslicing (+rotating, cropping) \r\n  3D reconstructed image without large memory usage.\r\n\r\n  ![reslicing](https://github.com/algotom/algotom/raw/master/figs/readme/reslicing.jpg)\r\n\r\n- Direct vertical reconstruction for single slice, multiple slices, and multiple slices at \r\n  different orientations.\r\n  \r\n  ![vertical_slice1](https://github.com/algotom/algotom/raw/master/figs/readme/direct_vertical_reconstruction.png)\r\n\r\n  ![vertical_slice1](https://github.com/algotom/algotom/raw/master/figs/readme/limited_angle_tomography.png)\r\n  \r\n   \r\n\r\nInstallation\r\n------------\r\n\r\n- https://algotom.readthedocs.io/en/latest/toc/section3.html\r\n- If users install Algotom to an existing environment and Numba fails to install due to the latest Numpy:\r\n  + Downgrade Numpy and install Algotom/Numba again.\r\n  + Create a new environment and install Algotom first, then other packages.\r\n  + Use conda instead of pip.\r\n- Avoid using the latest version of Python or Numpy as the Python ecosystem taking time to keep up with these twos.\r\n\r\nUsage\r\n-----\r\n- https://algotom.readthedocs.io/en/latest/toc/section4/section4_5.html\r\n- https://algotom.readthedocs.io/en/latest/toc/section1/section1_4.html\r\n- https://algotom.readthedocs.io/en/latest/toc/section4.html\r\n- https://github.com/algotom/algotom/tree/master/examples\r\n\r\nDevelopment principles\r\n----------------------\r\n\r\n- While Algotom offers a complete set of tools for tomographic data processing covering \r\n  pre-processing, reconstruction, post-processing, data simulation, and calibration techniques;\r\n  its development strongly focuses on pre-processing techniques. This distinction makes it a\r\n  prominent feature among other tomographic software.   \r\n\r\n- To ensure that the software can work across platforms and is easy-to-install; dependencies are minimized, and only \r\n  well-maintained [Python libraries](https://github.com/algotom/algotom/blob/master/requirements.txt) are used.\r\n\r\n- To achieve high-performance computing and leverage GPU utilization while ensuring ease of understanding, usage, and software \r\n  maintenance, Numba is used instead of Cupy or PyCuda.\r\n\r\n- Methods are structured into modules and functions rather than classes to enhance usability, debugging, and maintenance.\r\n\r\n- Algotom is highly practical as it can run on computers with or without a GPU, multicore CPUs; and accommodates both small \r\n  and large memory capacities.\r\n\r\nUpdate notes\r\n------------\r\n\r\n- https://algotom.readthedocs.io/en/latest/toc/section6.html\r\n\r\nAuthor\r\n------\r\n\r\n- Nghia T. Vo - *NSLS-II, Brookhaven National Lab, USA*; *Diamond Light Source, UK.*  \r\n \r\nHighlights\r\n----------\r\n\r\nAlgotom was used for some experiments featured on media:\r\n\r\n- Scanning [Moon rocks and Martian meteorites](https://www.diamond.ac.uk/Home/News/LatestNews/2019/17-07-2019.html) \r\n  using helical scans with offset rotation-axis. Featured on [Reuters](https://www.reuters.com/article/idUKKCN1UC16V?edition-redirect=uk).\r\n \r\n  ![moon_rock](https://github.com/algotom/algotom/raw/master/figs/readme/Moon_rock_Mars_meteorite.jpg)\r\n\r\n- Scanning [Herculaneum Scrolls](https://www.diamond.ac.uk/Home/News/LatestNews/2019/03-10-2019.html) \r\n  using grid scans with offset rotation-axis respect to the grid's FOV (pixel size of 7.9 micron; \r\n  total size of 11.3 TB). Featured on [BBC](https://www.bbc.co.uk/news/av/uk-england-oxfordshire-49926789).\r\n  The latest updates on the scroll's reading progress are [here](https://www.nature.com/articles/d41586-023-03212-1).\r\n\r\n  ![herculaneum_scroll](https://github.com/algotom/algotom/raw/master/figs/readme/Herculaneum_scroll.jpg)\r\n\r\n- Scanning ['Little Foot' fossil](https://www.diamond.ac.uk/Home/News/LatestNews/2021/02-03-21.html) \r\n  using two-camera detector with offset rotation-axis. Featured on [BBC](https://www.bbc.co.uk/news/science-environment-56241509).\r\n    \r\n  ![little_foot](https://github.com/algotom/algotom/raw/master/figs/readme/Little_foot.jpg)  \r\n",
    "bugtrack_url": null,
    "license": "Apache 2.0",
    "summary": "Data processing algorithms for tomography",
    "version": "1.6.0",
    "project_urls": {
        "Homepage": "https://github.com/algotom/algotom"
    },
    "split_keywords": [
        "parallel-beam computed tomography",
        " image processing",
        " tomography",
        " x-ray imaging",
        " phase contrast imaging",
        " ring artifact removal"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "3b85e1f320db66faea81c2ef1230f7057dfbb988795f3ce99b2a07663a48daed",
                "md5": "df8bd12aea7f921fe57d6227b7275d13",
                "sha256": "882948e0b249405e61fd4a9bb4016cd580e9de6c5b303efe84456067b2e7c200"
            },
            "downloads": -1,
            "filename": "algotom-1.6.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "df8bd12aea7f921fe57d6227b7275d13",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.8",
            "size": 118859,
            "upload_time": "2024-05-07T03:18:37",
            "upload_time_iso_8601": "2024-05-07T03:18:37.318671Z",
            "url": "https://files.pythonhosted.org/packages/3b/85/e1f320db66faea81c2ef1230f7057dfbb988795f3ce99b2a07663a48daed/algotom-1.6.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "26f2ac34ac24f30ca5977f18e27efaf53076015f507ffe89a847d8cf64f81329",
                "md5": "a3ef8f2c43b613408a707ea0ce1a377e",
                "sha256": "9b9f8a6fcd8d9ce9b8e6236d6181947d14b26aa3186cda0675c142ca3532417d"
            },
            "downloads": -1,
            "filename": "algotom-1.6.0.tar.gz",
            "has_sig": false,
            "md5_digest": "a3ef8f2c43b613408a707ea0ce1a377e",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8",
            "size": 109993,
            "upload_time": "2024-05-07T03:18:39",
            "upload_time_iso_8601": "2024-05-07T03:18:39.057806Z",
            "url": "https://files.pythonhosted.org/packages/26/f2/ac34ac24f30ca5977f18e27efaf53076015f507ffe89a847d8cf64f81329/algotom-1.6.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-05-07 03:18:39",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "algotom",
    "github_project": "algotom",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "requirements": [
        {
            "name": "numpy",
            "specs": [
                [
                    ">=",
                    "1.18"
                ]
            ]
        },
        {
            "name": "scipy",
            "specs": []
        },
        {
            "name": "numba",
            "specs": [
                [
                    ">=",
                    "0.50.1"
                ]
            ]
        },
        {
            "name": "pywavelets",
            "specs": []
        },
        {
            "name": "pillow",
            "specs": []
        },
        {
            "name": "h5py",
            "specs": []
        },
        {
            "name": "joblib",
            "specs": []
        }
    ],
    "lcname": "algotom"
}
        
Elapsed time: 0.25127s