Giter Club home page Giter Club logo

kylechampley / xrayphysics Goto Github PK

View Code? Open in Web Editor NEW
16.0 3.0 2.0 2.27 MB

C/C++ library and Python bindings for x-ray cross sections, x-ray source spectra modeling, multi-material beam hardening correction, and dual energy decomposition algorithms

Home Page: https://xrayphysics.readthedocs.io

License: MIT License

CMake 0.02% Shell 0.01% Batchfile 0.01% Python 0.90% C++ 99.01% C 0.05% Makefile 0.01%
beamhardening bremsstrahlung cross-sections spectra x-ray-physics x-ray-simulation computed-tomography leap tomography dect

xrayphysics's Introduction

XrayPhysics

This is a C/C++ library (Linux, Windows, Mac) with Python bindings with the following capabilities:

  1. x-ray cross sections (energies from 1 keV to 20 MeV and elements 1-100) specified by chemical formula or element/compound mass fractions
  2. incoherent and coherent x-ray scattering angle distributions specified by chemical formula or element/compound mass fractions
  3. x-ray source spectra modeling (for any source voltage and take-off angle, and the following anode types: Cu, Mo, W, Au)
  4. one- and two-material beam hardening correction algorithms (theoretically exact and polynomial-based)
  5. Calculation of the LLNL-defined effective atomic number; For more information see here
  6. dual energy decomposition algorithms (and SIRZ if used in conjuction with LEAP)

There are very few dependencies and we don't use any specialized data structures, making it very easy to incorporate with other software packages. The cross section tables are hard-coded into C++ arrays, so queries of the database are instant.

The x-ray source models are at least as accurate as TASMICS and much more flexible.

The x-ray source models are at least as accurate as TASMICS and much more flexible. The cross section tables are based on EPDL97.

Installation and Usage

Documentation is available here

Installation and usage information is posted on the wiki page

Designed to be used in conjuction with (but is not required) LEAP

Author

Kyle Champley ([email protected])

License

XrayPhysics is distributed under the terms of the MIT license. All new contributions must be made under this license. See LICENSE in this directory for the terms of the license. See LICENSE for more details.
SPDX-License-Identifier: MIT

Please cite our work by referencing this github page and the following papers:

SIRZ
Champley, Kyle M., Stephen G. Azevedo, Isaac M. Seetho, Steven M. Glenn, Larry D. McMichael, Jerel A. Smith, Jeffrey S. Kallman, William D. Brown, and Harry E. Martz. "Method to extract system-independent material properties from dual-energy X-ray CT." IEEE Transactions on Nuclear Science 66, no. 3 (2019): 674-686.

BHC
Kyle Champley and Timo Bremer. ”Efficient and Accurate Correction of Beam Hardening Artifacts.”, 3rd International Congress on Image Formation in X-ray CT, 2014.

xrayphysics's People

Contributors

kylechampley avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

xrayphysics's Issues

Question about the take-off angle

The Toshiba E7869X X-ray tube manual stated that the anode angle was 12 degrees. Does this anode angle refer to the take-off angle mentioned in this repository?

Possible typo in demo

`#########################################################################################

Example 4: Effective Energy Through a Material of Variable Thickness

#########################################################################################
thicknesses = np.array(range(26))/10.0
e_effs = thicknesses.copy()
for n in range(thicknesses.size):
e_effs[n] = physics.effectiveEnergy('H2O', 1.0, thicknesses[n], s_total, Es)
if whichPlot == 4:
plt.plot(thicknesses, e_effs, 'k-')
plt.title('Effective Energy (keV)')
plt.xlabel('thickness (cm)')
plt.ylabel('LAC (cm^-1)')
plt.show()`

The label 'LAC (cm^-1)' on the y-axis in this context appears to be a mistake. Given the code, the y-axis should represent the effective energy in keV, not the Linear Attenuation Coefficient (LAC). The physics.effectiveEnergy function is calculating the effective energy of the X-ray beam after passing through a material of a certain thickness, not the LAC.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.