Skip to main content

Quantitative X-Ray Fluorescence Analysis Support Library

Project description

Main development website: https://github.com/vasole/fisx

https://travis-ci.org/vasole/fisx.svg?branch=master https://ci.appveyor.com/api/projects/status/github/vasole/fisx?branch=master&svg=true

This software library implements formulas to calculate, given an experimental setup, the expected x-ray fluorescence intensities. The library accounts for secondary and tertiary excitation, K, L and M shell emission lines and de-excitation cascade effects. The basic implementation is written in C++ and a Python binding is provided.

Account for secondary excitation is made via the reference:

D.K.G. de Boer, X-Ray Spectrometry 19 (1990) 145-154

with the correction mentioned in:

D.K.G. de Boer et al, X-Ray Spectrometry 22 (1993) 33-28

Tertiary excitation is accounted for via an appproximation.

The accuracy of the corrections has been tested against experimental data and Monte Carlo simulations.

License

This code is relased under the MIT license as detailed in the LICENSE file.

Installation

To install the library for Python just use pip install fisx. If you want build the library for python use from the code source repository, just use one of the pip install . or the python setup.py install approaches. It is convenient (but not mandatory) to have cython >= 0.17 installed for it.

Testing

To run the tests after installation run:

python -m fisx.tests.testAll

Example

There is a web application using this library for calculating expected x-ray count rates.

This piece of Python code shows how the library can be used via its python binding.

from fisx import Elements
from fisx import Material
from fisx import Detector
from fisx import XRF

elementsInstance = Elements()
elementsInstance.initializeAsPyMca()
# After the slow initialization (to be made once), the rest is fairly fast.
xrf = XRF()
xrf.setBeam(16.0) # set incident beam as a single photon energy of 16 keV
xrf.setBeamFilters([["Al1", 2.72, 0.11, 1.0]]) # Incident beam filters
# Steel composition of Schoonjans et al, 2012 used to generate table I
steel = {"C":  0.0445,
         "N":  0.04,
         "Si": 0.5093,
         "P":  0.02,
         "S":  0.0175,
         "V":  0.05,
         "Cr":18.37,
         "Mn": 1.619,
         "Fe":64.314, # calculated by subtracting the sum of all other elements
         "Co": 0.109,
         "Ni":12.35,
         "Cu": 0.175,
         "As": 0.010670,
         "Mo": 2.26,
         "W":  0.11,
         "Pb": 0.001}
SRM_1155 = Material("SRM_1155", 1.0, 1.0)
SRM_1155.setComposition(steel)
elementsInstance.addMaterial(SRM_1155)
xrf.setSample([["SRM_1155", 1.0, 1.0]]) # Sample, density and thickness
xrf.setGeometry(45., 45.)               # Incident and fluorescent beam angles
detector = Detector("Si1", 2.33, 0.035) # Detector Material, density, thickness
detector.setActiveArea(0.50)            # Area and distance in consistent units
detector.setDistance(2.1)               # expected cm2 and cm.
xrf.setDetector(detector)
Air = Material("Air", 0.0012048, 1.0)
Air.setCompositionFromLists(["C1", "N1", "O1", "Ar1", "Kr1"],
                            [0.0012048, 0.75527, 0.23178, 0.012827, 3.2e-06])
elementsInstance.addMaterial(Air)
xrf.setAttenuators([["Air", 0.0012048, 5.0, 1.0],
                    ["Be1", 1.848, 0.002, 1.0]]) # Attenuators
fluo = xrf.getMultilayerFluorescence(["Cr K", "Fe K", "Ni K"],
                                     elementsInstance,
                                     secondary=2,
                                     useMassFractions=1)
print("Element   Peak          Energy       Rate      Secondary  Tertiary")
for key in fluo:
    for layer in fluo[key]:
        peakList = list(fluo[key][layer].keys())
        peakList.sort()
        for peak in peakList:
            # energy of the peak
            energy = fluo[key][layer][peak]["energy"]
            # expected measured rate
            rate = fluo[key][layer][peak]["rate"]
            # primary photons (no attenuation and no detector considered)
            primary = fluo[key][layer][peak]["primary"]
            # secondary photons (no attenuation and no detector considered)
            secondary = fluo[key][layer][peak]["secondary"]
            # tertiary photons (no attenuation and no detector considered)
            tertiary = fluo[key][layer][peak].get("tertiary", 0.0)
            # correction due to secondary excitation
            enhancement2 = (primary + secondary) / primary
            enhancement3 = (primary + secondary + tertiary) / primary
            print("%s   %s    %.4f     %.3g     %.5g    %.5g" % \
                               (key, peak + (13 - len(peak)) * " ", energy,
                               rate, enhancement2, enhancement3))

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

fisx-1.1.8.tar.gz (5.8 MB view details)

Uploaded Source

Built Distributions

fisx-1.1.8-cp38-cp38-win_amd64.whl (5.9 MB view details)

Uploaded CPython 3.8 Windows x86-64

fisx-1.1.8-cp38-cp38-macosx_10_9_x86_64.whl (6.0 MB view details)

Uploaded CPython 3.8 macOS 10.9+ x86-64

fisx-1.1.8-cp37-cp37m-win_amd64.whl (5.9 MB view details)

Uploaded CPython 3.7m Windows x86-64

fisx-1.1.8-cp37-cp37m-macosx_10_9_x86_64.whl (6.0 MB view details)

Uploaded CPython 3.7m macOS 10.9+ x86-64

fisx-1.1.8-cp36-cp36m-win_amd64.whl (6.0 MB view details)

Uploaded CPython 3.6m Windows x86-64

fisx-1.1.8-cp36-cp36m-macosx_10_9_x86_64.whl (6.0 MB view details)

Uploaded CPython 3.6m macOS 10.9+ x86-64

File details

Details for the file fisx-1.1.8.tar.gz.

File metadata

  • Download URL: fisx-1.1.8.tar.gz
  • Upload date:
  • Size: 5.8 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.43.0 CPython/3.8.2

File hashes

Hashes for fisx-1.1.8.tar.gz
Algorithm Hash digest
SHA256 15ff84bc47960628a0ed83e59ae22dfef019e96e93867f5b9120cf7fc7ac3aec
MD5 daf25a5e58cde861c0f3a645b07a5298
BLAKE2b-256 6d1bd6a918c3b251ee7fff288251a1b8fc3243f207aea16b048128d19ebb36b8

See more details on using hashes here.

File details

Details for the file fisx-1.1.8-cp38-cp38-win_amd64.whl.

File metadata

  • Download URL: fisx-1.1.8-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 5.9 MB
  • Tags: CPython 3.8, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.13.0 setuptools/40.2.0 requests-toolbelt/0.9.1 tqdm/4.32.2 CPython/3.6.4

File hashes

Hashes for fisx-1.1.8-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 7eb11713892698e774772856a73953cf94c553efb4c01fdd39b3d990a5b5d250
MD5 2f93736f86fd9022a0fbed2d56e55e49
BLAKE2b-256 4fb355fd4a61e18bd1574fd5b40f0296634eadd01565c2bc87f14e129d2b9065

See more details on using hashes here.

File details

Details for the file fisx-1.1.8-cp38-cp38-macosx_10_9_x86_64.whl.

File metadata

  • Download URL: fisx-1.1.8-cp38-cp38-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 6.0 MB
  • Tags: CPython 3.8, macOS 10.9+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.43.0 CPython/3.8.2

File hashes

Hashes for fisx-1.1.8-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 7ea186353cca519e8af3ac90f624d53d547548f423052ced5888f848d4401c13
MD5 05471659a31d2f0002f236a0c1b72936
BLAKE2b-256 2913836226a1e24a7115ce93f1f2aa1301b3d16655cd6fbebbf91117abcf6bf2

See more details on using hashes here.

File details

Details for the file fisx-1.1.8-cp37-cp37m-win_amd64.whl.

File metadata

  • Download URL: fisx-1.1.8-cp37-cp37m-win_amd64.whl
  • Upload date:
  • Size: 5.9 MB
  • Tags: CPython 3.7m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.13.0 setuptools/40.2.0 requests-toolbelt/0.9.1 tqdm/4.32.2 CPython/3.6.4

File hashes

Hashes for fisx-1.1.8-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 f9260abd9269c01eb1f1d075bb5922832db2e1e3799a5f0fec9887070d2bce70
MD5 ae811e7af51f7d45cfec5b5d9a4cb218
BLAKE2b-256 e72b17ac4e6b354faa5f5145b1373afce551634ec830d262543c5b6e1bfa673d

See more details on using hashes here.

File details

Details for the file fisx-1.1.8-cp37-cp37m-macosx_10_9_x86_64.whl.

File metadata

  • Download URL: fisx-1.1.8-cp37-cp37m-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 6.0 MB
  • Tags: CPython 3.7m, macOS 10.9+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.43.0 CPython/3.8.2

File hashes

Hashes for fisx-1.1.8-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 90ee533cec3711c9c34dbad12278707576428eb90ac18af34240c5e390eea95e
MD5 c9ff19f965477e4f2fec85fc37adcc77
BLAKE2b-256 b9033dc228681994faf5d8e24acccef6f0c895d931d3ca5b661a808dad8dd7a6

See more details on using hashes here.

File details

Details for the file fisx-1.1.8-cp36-cp36m-win_amd64.whl.

File metadata

  • Download URL: fisx-1.1.8-cp36-cp36m-win_amd64.whl
  • Upload date:
  • Size: 6.0 MB
  • Tags: CPython 3.6m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.13.0 setuptools/40.2.0 requests-toolbelt/0.9.1 tqdm/4.32.2 CPython/3.6.4

File hashes

Hashes for fisx-1.1.8-cp36-cp36m-win_amd64.whl
Algorithm Hash digest
SHA256 a23cc4cfe517a5eee4f71d68806f62b4b3cd348ee189359c1cc9b9f757e11794
MD5 e68c05f6f94630eb18e5c13c02b38299
BLAKE2b-256 010fb26065e1fc92db36636eb61d83ebb42e4e2a8a42d704283e24758a495bf9

See more details on using hashes here.

File details

Details for the file fisx-1.1.8-cp36-cp36m-macosx_10_9_x86_64.whl.

File metadata

  • Download URL: fisx-1.1.8-cp36-cp36m-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 6.0 MB
  • Tags: CPython 3.6m, macOS 10.9+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.43.0 CPython/3.8.2

File hashes

Hashes for fisx-1.1.8-cp36-cp36m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 ffbce2daeb848b3e486bde21cd2f76ac846076456e7cb372779e1c71fde35771
MD5 aa60e46c3870f6930eca2f7808ebccb4
BLAKE2b-256 d53f1c670466aeee9b73d1f70040061735aeaada6bedf8d5631a42fbca6fff50

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page