Skip to main content

XMIMSIM

XMIMSIM (the python package) is a front-end to XMI-MSIM, XRF open-source simulation software, for running in python.

Installation

MacOS

On mac, acquire XMIMSIM through homebrew. To install do not use the brewsci/science tap

brew tap tschoonj/tap
brew cask install tschoonj/tap/xmi-msim

Linux/Windows

Follow the instructions here.

Python

Install the python utility with

pip install xmimsim

Getting started

The examples folder contains the following example:

import xmimsim as xmi    

There is only one class currently in xmimsim, so one could just as easily use from xmimsim import model.

From there, the parameters can be defined as a dictionary:

parameters = {'n_photons_interval' : 1,'n_photons_line' : 100000,'n_interactions_trajectory' : 1,
       'reference_layer' : 2,'d_sample_source' : 100,'area_detector' : 0.5,
       'collimator_height' : 0,'collimator_diameter' : 0,'d_source_slit' : 100,
       'slit_size_x' : 0.001,'slit_size_y' : 0.001,'detector_type' : 'SiLi',
       'detector_live_time' : 1500,'detector_pulse_width' : 1e-05,'detector_nchannels' : 2048,
       'detector_gain' : 0.0182138,'detector_zero' : 0,'detector_fano' : 0.12,'detector_noise' : 0.1}

to be injected into the code. The model is initialized with:

xm = xmi.model()

from there the model, xm, can be added to, e.g.:

xm.set_parameters(**parameters)
xm.add_source(
    energy = 13.5,
    horizontal_intensity = '1e+012',
    vertical_intensity = '1e+009',
    gaussian=0.14)

All these classes return self, so one can actually do this all with one line, i.e. xm.set_parameters(**parameters).add_source(....)

The beampath layers are added:

xm.add_excitation_path_layer(atomic_numbers=[4], masses=[100], density=1.85, thickness=0.02)
xm.add_detector_path_layer(atomic_numbers=[4], masses=[100], density=1.85, thickness=0.0025)
xm.add_crystal_layer(atomic_numbers=[14], masses=[100], density=2.33, thickness=0.35)

Which behave like regular analyte layers:

xm.add_layer(symbols=['N','O','Ar'],masses=[70,29,1],density=.00122,thickness=3)
xm.add_layer(symbols=['As','Fe'],masses=[50,50],density=7.31,thickness=0.01)

Orientations are defined:

xm.sample_orientation(rthetaphi=[1,270+65,0])
xm.detector_orientation(rthetaphi=[1,135,0])
xm.detector_window(xyz=[0,5.6,0])

The filename is defined for this, although this is not strictly necessary:

xm.set_filename('xmsi_testfile')

And the calculation is run, discarding the massive xmso in favor of the csv file (default):

xm.calculate(M_lines=False, auger_cascade=True,radiative_cascade=False)

We can print out the number of photons from each of the following bands.

print(xm.count_photons(**{'k_a_Fe':[6.098,6.744],'k_b_Fe':[6.7801,7.340],'k_a_As':[10.196,10.890],'k_b_As':[11.472,11.999]}))    

xm.get_spectrum() also returns a plottable spectrum from the xmi file.

If you simply copy the blocks of code together into one file and run it it should give you an output.

Changelog

0.0.1

  • Initial Release

0.0.2

  • Fixed windows command, but it requires some changing of environment variables to make it run.
  • Fixed some header issues with the readme
  • Cleaned up example.py file

0.1.0

  • Fixing the windows problem broke *nix versions. Fixed.

0.1.1

  • Added default of no collimator or detector offset
  • Fixed a minor bug in the code (should not change any answers) with element arrays normalizations

0.1.2

  • Fixed Readme document type so PyPI handles it correctly

0.1.3

  • Allowed larger numbers of interaction counts (greater than 1) in get_spectrum() method

Contributing

Thanks to Tom Schoonjans for creating XMI-MSIM. Special thanks to the vapory package, which some of the inspiration for this code comes from (also a python interface for a third-party utility).

Report problems to my gmail: nsgeorgescu

NGeorgescu : https://github.com/NGeorgescu

Github : https://github.com/NGeorgescu/xmimsim.git

Release files for xmimsim 0.1.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for xmimsim 0.1.3
File Size Uploaded
xmimsim-0.1.3.tar.gz 13.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for xmimsim 0.1.3
File Interpreter ABI Platform
xmimsim-0.1.3-py3-none-any.whl Python 3 none any Details

Total release size: 25.8 kB

Release files / xmimsim-0.1.3.tar.gz

Download URL xmimsim-0.1.3.tar.gz
Size 13.0 kB
Tags Source
SHA-256 checksum
How to use checksums
4301a44fdbe69b41017b02ccfbe52fe2d67692855bb54fad852330050ac7d33b
BLAKE2b-256 checksum
How to use checksums
b459fb62f05a9c9b5eb757280b99f5ed5d3c31a3e6caa7dc5c2b2531ad9664f0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.32.2 CPython/3.7.4

Release files / xmimsim-0.1.3-py3-none-any.whl

Download URL xmimsim-0.1.3-py3-none-any.whl
Size 12.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
5548f8e2470f0bbc2743db0963f509a0ac03896f940d8b89fe4f7830fb12acd7
BLAKE2b-256 checksum
How to use checksums
3752dfbd249a1721e2aafb0bcba4ea1df1ee549a1ca44d3d22582cfc32919195
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.32.2 CPython/3.7.4

Release history Release notifications | RSS feed

This release

0.1.3 This release

2 release files

0.1.2

2 release files

0.1.1

1 release file

0.1.0

1 release file

0.0.2

1 release file

0.0.1

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page