{ "info": { "author": "PolymerGuy", "author_email": "sindre.n.olufsen@ntnu.no", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python :: 3" ], "description": "\n\n\n[![CircleCI](https://circleci.com/gh/PolymerGuy/AXITOM.svg?style=svg)](https://circleci.com/gh/PolymerGuy/AXITOM)\n[![codecov](https://codecov.io/gh/PolymerGuy/AXITOM/branch/master/graph/badge.svg)](https://codecov.io/gh/PolymerGuy/AXITOM)\n[![MIT License][license-shield]][license-url]\n[![Documentation Status](https://readthedocs.org/projects/axitom/badge/?version=latest)](https://axitom.readthedocs.io/en/latest/?badge=latest)\n[![PyPI version](https://badge.fury.io/py/axitom.svg)](https://badge.fury.io/py/axitom)\n\n\n
\n

\n\"Logo\"\n

\n\n\n

AXITOM

\n\n

\nTomographic reconstruction of axisymmetric fields acquired by a cone beam\n
\nExplore the docs \n
\n

\n\n\nAbout The Project\n-----------------\nThis python package provides tools for axis-symmetric cone-beam computed tomography. A Feldkamp David Kress algorithm performs the reconstruction\nwhich have been adapted such that is exploits the axis-symmetric nature of the tomogram.\n\nThis toolkit has a highly specialised usage, and there are plenty of more general and excellent frameworks for tomographic reconstruction, such as:\n * [TomoPy](https://github.com/tomopy/tomopy) (General computed tomography, cone and parallel beam geometry)\n * [PyAbel](https://github.com/PyAbel/PyAbel) (Computed tomography based on the inverse Abel transform, parallel beam geometry)\n\n This project aims at providing a simple, accessible toolkit for forward-projection and reconstruction of \n axis-symmetric tomograms based on a conical beam geometry.\n\n\n### Built With\nThis project is heavily based on the following packages:\n* [Numpy](https://numpy.org/)\n* [Scipy](https://www.scipy.org/)\n* [Scikit-image](https://scikit-image.org/)\n* [Matplotlib](https://matplotlib.org/)\n\n\n\n\nGetting Started\n---------------\nTo get a local copy up and running follow these steps.\n\n### Install via package manager:\n\nThe toolkit is available via PIP, and the instructions below shows how a virtual environment can be created\nand the toolkit installed.\n\nPrerequisites:\n\n This toolkit is tested on Python 3.6\n We recommend the use of virtualenv\n\nInstalling:\n\n $ virtualenv -p python3.6 env\n $ source ./env/bin/activate #On Linux and Mac OS\n $ env\\Scripts\\activate.bat #On Windows\n $ pip install axitom\n\nNow the toolkit is installed and ready for use.\n\nRun the tests:\n\n $ nosetests axitom\n\nIf you want to check out the examples, then download the files in the examples folder and run the examples.\n\n\n### Clone the repo:\n\nThese instructions will get you a copy of the project up and running on your \nlocal machine for development and testing purposes.\n\nPrerequisites:\n\n This toolkit is tested on Python 3.6\n We recommend the use of virtualenv\n\n\nClone this repo to your preferred location\n\n $ git init\n $ git clone https://github.com/PolymerGuy/axitom.git\n\nWe recommend that you always use virtual environments, either by virtualenv or by Conda env\n\n $ virtualenv -p python3.6 env\n $ source ./env/bin/activate #On Linux and Mac OS\n $ env\\Scripts\\activate.bat #On Windows\n $ pip install -r requirements.txt\n\nYou can now run an example::\n\n $ python /examples/comparison_to_Nikon.py\n\n### Run the tests\nThe tests should always be launched to check your installation.\nThese tests are integration and unit tests.\n\nIf you cloned the repo, you have to call pytest from within the folder\n\n $ pytest\n\n\nExample\n-------\nLet us now go through the necessary steps for doing a reconstruction of a tomogram based on a single image.\nFirst, we need to import the tools\n\n import axitom as tom\n from scipy.ndimage.filters import median_filter\n\nThe example data can be downloaded from the AXITOM/tests/example_data/ folder. The dataset was collected during tensile testing of a polymer specimen.\nAssuming that the example data from the repo is located in root folder, we can make a config object\nfrom the .xtekct file\n\n config = tom.config_from_xtekct(\"radiogram.xtekct\")\n\nWe now import the projection\n\n projection = tom.read_image(r\"radiogram.tif\", flat_corrected=True)\n\nAs we will use a single projection only in this reconstruction, we will reduce the noise content of the projection by\nemploying a median filter. Using such a filter works fine since the density gradients within the specimen are relatively small.\nYou may here choose any filter of your liking.\n\n\n projection = median_filter(projection, size=21)\n\nNow, the axis of rotation has to be determined. The axis of rotation is found by first binarizing of the image into object and background,\nand subsequently determining the centre of gravity of the object\n\n _, center_offset = tom.object_center_of_rotation(projection, background_internsity=0.9)\n\nThe config object has to be updated with the correct values\n\n config = config.with_param(center_of_rot=center_offset)\n\nWe are now ready to initiate the reconstruction\n\n tomo = tom.fdk(projection, config)\n\n\nThe results can then be visualized\n\n import matplotlib.pyplot as plt\n plt.title(\"Radial slice\")\n plt.imshow(tomo.transpose(), cmap=plt.cm.magma)\n\n\n\"Results\"\n\n\nContributing\n------------\n\nContributions are what makes the open-source community such a fantastic place to learn, inspire, and create. Any contributions you make are **greatly appreciated**.\n\n1. Fork the Project\n2. Create your Feature Branch (`git checkout -b feature/AmazingFeature`)\n3. Commit your Changes (`git commit -m 'Add some AmazingFeature`)\n4. Push to the Branch (`git push origin feature/AmazingFeature`)\n5. Open a Pull Request\n\n\n\nLicense\n-------\n\nDistributed under the MIT License. See `LICENSE` for more information.\n\n\nContact\n-------\n\nSindre Nordmark Olufsen (PolymerGuy) - sindre.n.olufsen@ntnu.no\n\n\n\nAcknowledgements\n----------------\nWe are in great debt to the open-source community and all the contributors the projects on which this toolkit is based.\n\n\n[license-shield]: https://img.shields.io/badge/license-MIT-blue.svg?style=flat-square\n[license-url]: https://choosealicense.com/licenses/mit\n\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/PolymerGuy/AXITOM", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "axitom", "package_url": "https://pypi.org/project/axitom/", "platform": "", "project_url": "https://pypi.org/project/axitom/", "project_urls": { "Homepage": "https://github.com/PolymerGuy/AXITOM" }, "release_url": "https://pypi.org/project/axitom/0.1.3/", "requires_dist": [ "imageio", "matplotlib", "natsort", "nose", "numpy", "scikit-image", "scipy" ], "requires_python": "", "summary": "Tools for axis-symmetric cone-beam computed tomography", "version": "0.1.3" }, "last_serial": 5899336, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "ea5a8e6808419fb56f1e351c6df4ebb1", "sha256": "d1759c215189f3aca320e29eecaa1c3d0a7fdc2ccd68b761597bbccc731ae83f" }, "downloads": -1, "filename": "axitom-0.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "ea5a8e6808419fb56f1e351c6df4ebb1", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 16952, "upload_time": "2019-08-19T12:15:11", "url": "https://files.pythonhosted.org/packages/c7/76/2e4e6db0d837035b7e5bbf4c6d4ea5204adca2c21bfb182063114524249f/axitom-0.1.0-py3-none-any.whl" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "6b904a0824b447a88077ecc669a18b8a", "sha256": "fbf58d573e62bf92c915dc56a257fe6b94b7543a601e5cc682cb4e7b6db4507c" }, "downloads": -1, "filename": "axitom-0.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "6b904a0824b447a88077ecc669a18b8a", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 10562741, "upload_time": "2019-08-19T12:44:39", "url": "https://files.pythonhosted.org/packages/bf/83/78e67d4c4920091b65c40fe4de2f8f578e6594319ffebf97ab9b55428b1e/axitom-0.1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f4555d30d2c0850a9a8439f015bca32a", "sha256": "8f9bb18b0df5daf723589e35caf5efe8799224df89528894527999bf46339b6c" }, "downloads": -1, "filename": "axitom-0.1.1.tar.gz", "has_sig": false, "md5_digest": "f4555d30d2c0850a9a8439f015bca32a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10563237, "upload_time": "2019-08-19T12:44:53", "url": "https://files.pythonhosted.org/packages/2b/2f/caa91a886b0167c1615e1ad3dc3a983b86ced6aff0b7e86f308c4b887845/axitom-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "3f8e977962ce19ea4f14201022617f27", "sha256": "e32605a856a513f27df476c2bb79400a7c72b38d85abe5b7c6f974e071cc6ddc" }, "downloads": -1, "filename": "axitom-0.1.2-py3-none-any.whl", "has_sig": false, "md5_digest": "3f8e977962ce19ea4f14201022617f27", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 10562730, "upload_time": "2019-08-19T12:55:27", "url": "https://files.pythonhosted.org/packages/b7/76/07293ff6004d1e2290d019e7f227612e74ea04b6a00c400c9fbf07967ce2/axitom-0.1.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "04404eaa9760c020a656e52fb3ecd1ab", "sha256": "0bd829a9318c2419157401ae220337d925060b8132e63aca178a4b32bedb0e2a" }, "downloads": -1, "filename": "axitom-0.1.2.tar.gz", "has_sig": false, "md5_digest": "04404eaa9760c020a656e52fb3ecd1ab", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10563205, "upload_time": "2019-08-19T12:55:41", "url": "https://files.pythonhosted.org/packages/cc/4e/d3db2c4f1dc6dd3df4be4ab7035de30858d387c3d520b9a07f8ca1674aff/axitom-0.1.2.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "5523d01c55e93acdae30bc6425e980cf", "sha256": "cbdfc9208896cc3a2d0c33b504240c8a9fae65363d69a962c21fbca257eb5f28" }, "downloads": -1, "filename": "axitom-0.1.3-py2-none-any.whl", "has_sig": false, "md5_digest": "5523d01c55e93acdae30bc6425e980cf", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 19022031, "upload_time": "2019-09-28T08:48:01", "url": "https://files.pythonhosted.org/packages/91/6c/6ea3d51b0d200e9fc3a0fa257e3af3c10f522314db69cc7c8e73cbdf88e4/axitom-0.1.3-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5957a2a5be5e6f238d0aa9aa596f939c", "sha256": "1bd9549d1e720f68fe414f2dd9105ad244589d3980f0f6da22b1f08f9cce9a6b" }, "downloads": -1, "filename": "axitom-0.1.3.tar.gz", "has_sig": false, "md5_digest": "5957a2a5be5e6f238d0aa9aa596f939c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19018033, "upload_time": "2019-09-28T08:48:09", "url": "https://files.pythonhosted.org/packages/8d/82/8ab261d228489880fd4f8a35deeba4377af7e8e6498f997459f184ec48ed/axitom-0.1.3.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "5523d01c55e93acdae30bc6425e980cf", "sha256": "cbdfc9208896cc3a2d0c33b504240c8a9fae65363d69a962c21fbca257eb5f28" }, "downloads": -1, "filename": "axitom-0.1.3-py2-none-any.whl", "has_sig": false, "md5_digest": "5523d01c55e93acdae30bc6425e980cf", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 19022031, "upload_time": "2019-09-28T08:48:01", "url": "https://files.pythonhosted.org/packages/91/6c/6ea3d51b0d200e9fc3a0fa257e3af3c10f522314db69cc7c8e73cbdf88e4/axitom-0.1.3-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5957a2a5be5e6f238d0aa9aa596f939c", "sha256": "1bd9549d1e720f68fe414f2dd9105ad244589d3980f0f6da22b1f08f9cce9a6b" }, "downloads": -1, "filename": "axitom-0.1.3.tar.gz", "has_sig": false, "md5_digest": "5957a2a5be5e6f238d0aa9aa596f939c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19018033, "upload_time": "2019-09-28T08:48:09", "url": "https://files.pythonhosted.org/packages/8d/82/8ab261d228489880fd4f8a35deeba4377af7e8e6498f997459f184ec48ed/axitom-0.1.3.tar.gz" } ] }