CRL simulator
Project description
### bnlcrl
Simulator of the compound refractive lenses (CRL).
Learn more at https://github.com/mrakitin/bnlcrl.
Documentation: http://bnlcrl.readthedocs.org/en/latest/
| Travis CI | ReadTheDocs | Codecov |
|:--:|:--:|:--:|
| [![Build Status](https://travis-ci.org/mrakitin/bnlcrl.svg?branch=master)](https://travis-ci.org/mrakitin/bnlcrl) | [![Documentation Status](https://readthedocs.org/projects/bnlcrl/badge/?version=latest)](http://bnlcrl.readthedocs.io/en/latest/?badge=latest) | [![codecov](https://codecov.io/gh/mrakitin/bnlcrl/branch/master/graph/badge.svg)](https://codecov.io/gh/mrakitin/bnlcrl) |
----
The code is written in Python, tested to be working under Linux and Windows with Python 2.7/3.5. There is no required NumPy dependency, but it still can be used for operations with matrices, etc. (see the `Usage` section below).
Determine Delta/Attenuation length:
-
To create a `.dat` file with the refractive index decrement or the attenuation length, use the following commands respectively:
```bash
bnlcrl simulate find-delta --characteristic delta -f Al -o Al_delta.dat 30
```
```bash
bnlcrl simulate find-delta --characteristic atten -f Al -o Al_atten.dat 30
```
Usage:
-
```
$ bnlcrl simulate find-delta -h
usage: bnlcrl simulate find-delta [-h] [--calc-delta]
[--characteristic {transmission,atten,delta}]
[-d DATA_FILE] [--e-max E_MAX]
[--e-min E_MIN] [--e-step E_STEP]
[-f FORMULA] [-n N_POINTS] [-o OUTFILE]
[--plot] [--precise] [--save]
[--save-output] [--show-plot] [-t THICKNESS]
[-u] [-v]
energy
Determine the Index of Refraction (delta).
The index of refraction can be defined by three different methods/approaches:
1) Get delta for the closest energy from the saved *.dat files (see ``bnlcrl/package_data/dat/``).
2) Get delta from http://henke.lbl.gov/optical_constants/getdb2.html.
3) Calculate delta analytically (requires ``periodictable`` package installed).
Args:
calc_delta (bool): a flag to calculate delta analytically.
characteristic (str): characteristic to be extracted (``atten`` - attenuation length, ``delta`` - index of refraction, ``transmission`` - filter transmission).
data_file (str): a *.dat data file in ``bnlcrl/package_data/dat/`` directory with delta values for the material of the CRL (e.g., Be).
e_max (float): the highest available energy [eV].
e_min (float): the lowest available energy [eV].
e_step (float): energy step size used for saving data to a file [eV].
energy (float): photon energy [eV].
formula (str): material's formula of the interest.
n_points (int): number of points to get from the server.
outfile (str): optional output file.
plot (bool): a flag to plot the obtained data.
precise (bool): a flag to find delta within the energy interval +/- 1 eV from the specified energy.
save (bool): a flag to save the obtained data.
save_output (bool): a flag to save the output dictionary in JSON format.
show_plot (bool): a flag to show the show the plot.
thickness (float): thickness of the material.
use_numpy (bool): a flag to use NumPy.
verbose (bool): a flag to print output to console.
Returns:
dict: dictionary with the result.
positional arguments:
energy -
optional arguments:
-h, --help show this help message and exit
--calc-delta False
--characteristic {transmission,atten,delta}
'delta'
-d DATA_FILE, --data-file DATA_FILE
''
--e-max E_MAX 30000.0
--e-min E_MIN 30.0
--e-step E_STEP 10.0
-f FORMULA, --formula FORMULA
'Be'
-n N_POINTS, --n-points N_POINTS
500
-o OUTFILE, --outfile OUTFILE
''
--plot False
--precise False
--save False
--save-output False
--show-plot False
-t THICKNESS, --thickness THICKNESS
0.1
-u, --use-numpy False
-v, --verbose False
```
Examples of execution:
-
```bash
$ bnlcrl simulate simulate-crl -p 6.52 -v --output-format json 2 4 6 7 8 21500
{
"d": 0.0012016728926447229,
"d_ideal": -0.06613035908221399,
"f": 1.0480597834969956,
"p0": 6.52,
"p1": 1.2487983271073553,
"p1_ideal": 1.3161303590822135
}
```
```bash
$ bnlcrl simulate simulate-crl -p 6.52 -v --output-format csv 2 4 6 7 8 21500
"d","d_ideal","f","p0","p1","p1_ideal"
0.00120167289264,-0.0661303590822,1.0480597835,6.52,1.24879832711,1.31613035908
```
```bash
$ bnlcrl simulate simulate-crl -p 6.52 -v --output-format txt 2 4 6 7 8 21500
d: 0.00120167289264, d_ideal: -0.0661303590822, f: 1.0480597835, p0: 6.52, p1: 1.24879832711, p1_ideal: 1.31613035908
```
```
$ bnlcrl simulate simulate-crl -p 6.52 21500 -v
"d","d_ideal","f","p0","p1","p1_ideal"
0,0,0,6.52,0,0
```
This library is used on the SMI beamline at NSLS-II:
![transfocator](docs/transfocator.png)
![attenuation filters](docs/attenuation_filters.png)
#### License
License: http://www.apache.org/licenses/LICENSE-2.0.html
Copyright (c) 2016 mrakitin (BNL). All Rights Reserved.
Simulator of the compound refractive lenses (CRL).
Learn more at https://github.com/mrakitin/bnlcrl.
Documentation: http://bnlcrl.readthedocs.org/en/latest/
| Travis CI | ReadTheDocs | Codecov |
|:--:|:--:|:--:|
| [![Build Status](https://travis-ci.org/mrakitin/bnlcrl.svg?branch=master)](https://travis-ci.org/mrakitin/bnlcrl) | [![Documentation Status](https://readthedocs.org/projects/bnlcrl/badge/?version=latest)](http://bnlcrl.readthedocs.io/en/latest/?badge=latest) | [![codecov](https://codecov.io/gh/mrakitin/bnlcrl/branch/master/graph/badge.svg)](https://codecov.io/gh/mrakitin/bnlcrl) |
----
The code is written in Python, tested to be working under Linux and Windows with Python 2.7/3.5. There is no required NumPy dependency, but it still can be used for operations with matrices, etc. (see the `Usage` section below).
Determine Delta/Attenuation length:
-
To create a `.dat` file with the refractive index decrement or the attenuation length, use the following commands respectively:
```bash
bnlcrl simulate find-delta --characteristic delta -f Al -o Al_delta.dat 30
```
```bash
bnlcrl simulate find-delta --characteristic atten -f Al -o Al_atten.dat 30
```
Usage:
-
```
$ bnlcrl simulate find-delta -h
usage: bnlcrl simulate find-delta [-h] [--calc-delta]
[--characteristic {transmission,atten,delta}]
[-d DATA_FILE] [--e-max E_MAX]
[--e-min E_MIN] [--e-step E_STEP]
[-f FORMULA] [-n N_POINTS] [-o OUTFILE]
[--plot] [--precise] [--save]
[--save-output] [--show-plot] [-t THICKNESS]
[-u] [-v]
energy
Determine the Index of Refraction (delta).
The index of refraction can be defined by three different methods/approaches:
1) Get delta for the closest energy from the saved *.dat files (see ``bnlcrl/package_data/dat/``).
2) Get delta from http://henke.lbl.gov/optical_constants/getdb2.html.
3) Calculate delta analytically (requires ``periodictable`` package installed).
Args:
calc_delta (bool): a flag to calculate delta analytically.
characteristic (str): characteristic to be extracted (``atten`` - attenuation length, ``delta`` - index of refraction, ``transmission`` - filter transmission).
data_file (str): a *.dat data file in ``bnlcrl/package_data/dat/`` directory with delta values for the material of the CRL (e.g., Be).
e_max (float): the highest available energy [eV].
e_min (float): the lowest available energy [eV].
e_step (float): energy step size used for saving data to a file [eV].
energy (float): photon energy [eV].
formula (str): material's formula of the interest.
n_points (int): number of points to get from the server.
outfile (str): optional output file.
plot (bool): a flag to plot the obtained data.
precise (bool): a flag to find delta within the energy interval +/- 1 eV from the specified energy.
save (bool): a flag to save the obtained data.
save_output (bool): a flag to save the output dictionary in JSON format.
show_plot (bool): a flag to show the show the plot.
thickness (float): thickness of the material.
use_numpy (bool): a flag to use NumPy.
verbose (bool): a flag to print output to console.
Returns:
dict: dictionary with the result.
positional arguments:
energy -
optional arguments:
-h, --help show this help message and exit
--calc-delta False
--characteristic {transmission,atten,delta}
'delta'
-d DATA_FILE, --data-file DATA_FILE
''
--e-max E_MAX 30000.0
--e-min E_MIN 30.0
--e-step E_STEP 10.0
-f FORMULA, --formula FORMULA
'Be'
-n N_POINTS, --n-points N_POINTS
500
-o OUTFILE, --outfile OUTFILE
''
--plot False
--precise False
--save False
--save-output False
--show-plot False
-t THICKNESS, --thickness THICKNESS
0.1
-u, --use-numpy False
-v, --verbose False
```
Examples of execution:
-
```bash
$ bnlcrl simulate simulate-crl -p 6.52 -v --output-format json 2 4 6 7 8 21500
{
"d": 0.0012016728926447229,
"d_ideal": -0.06613035908221399,
"f": 1.0480597834969956,
"p0": 6.52,
"p1": 1.2487983271073553,
"p1_ideal": 1.3161303590822135
}
```
```bash
$ bnlcrl simulate simulate-crl -p 6.52 -v --output-format csv 2 4 6 7 8 21500
"d","d_ideal","f","p0","p1","p1_ideal"
0.00120167289264,-0.0661303590822,1.0480597835,6.52,1.24879832711,1.31613035908
```
```bash
$ bnlcrl simulate simulate-crl -p 6.52 -v --output-format txt 2 4 6 7 8 21500
d: 0.00120167289264, d_ideal: -0.0661303590822, f: 1.0480597835, p0: 6.52, p1: 1.24879832711, p1_ideal: 1.31613035908
```
```
$ bnlcrl simulate simulate-crl -p 6.52 21500 -v
"d","d_ideal","f","p0","p1","p1_ideal"
0,0,0,6.52,0,0
```
This library is used on the SMI beamline at NSLS-II:
![transfocator](docs/transfocator.png)
![attenuation filters](docs/attenuation_filters.png)
#### License
License: http://www.apache.org/licenses/LICENSE-2.0.html
Copyright (c) 2016 mrakitin (BNL). All Rights Reserved.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
bnlcrl-20180115.183948.zip
(7.3 MB
view details)
File details
Details for the file bnlcrl-20180115.183948.zip
.
File metadata
- Download URL: bnlcrl-20180115.183948.zip
- Upload date:
- Size: 7.3 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 29b34f287f33100d94b73e09a4cb5e844c418afa2b7820233464ee84a6741f01 |
|
MD5 | e0e84ac0c6cdb33e229c732dfa89eb65 |
|
BLAKE2b-256 | 0fa875d1a1d8d03d04eee80b358b5ac7047b2bcdaa05029b875a748ea07c1d18 |