API Reference
Client API
High-level user API for querying element properties
This module provides a convenient, user-friendly interface to query, compare, and visualise atomic / electron / photon properties from the EPICS (EEDL / EPDL / EADL) datasets.
Usage
>>> from pyepics.client import EPICSClient
>>> client = EPICSClient("data/endf")
>>> props = client.get_properties("Fe")
>>> props["Z"]
26
>>> df = client.compare(["Fe", "Cu", "Au"], properties=["Z", "binding_energies"])
- class pyepics.client.ElementProperties(z, symbol, name, *, electron=None, photon=None, atomic=None)[source]
Container for all properties of a single element.
This object behaves like a dictionary but also provides attribute access for convenience.
- Parameters:
z (int)
symbol (str)
name (str)
electron (EEDLDataset | None)
photon (EPDLDataset | None)
atomic (EADLDataset | None)
- electron
Parsed EEDL data (if available).
- Type:
EEDLDataset or None
- photon
Parsed EPDL data (if available).
- Type:
EPDLDataset or None
- atomic
Parsed EADL data (if available).
- Type:
EADLDataset or None
- __init__(z, symbol, name, *, electron=None, photon=None, atomic=None)[source]
Initialise an ElementProperties container.
- Parameters:
z (int)
symbol (str)
name (str)
electron (EEDLDataset | None)
photon (EPDLDataset | None)
atomic (EADLDataset | None)
- Return type:
None
- class pyepics.client.EPICSClient(data_dir='data/endf')[source]
High-level interface for querying EPICS element data.
- Parameters:
data_dir (str or Path) – Root directory containing
eedl/,epdl/,eadl/sub-folders with ENDF files. Defaults to"data/endf"relative to the current working directory.
Examples
>>> client = EPICSClient("data/endf") >>> fe = client.get_element("Fe") >>> fe.Z 26 >>> fe.binding_energies {'K': 7112.0, 'L1': 844.6, ...}
- get_element(element, *, libraries=('EEDL', 'EPDL', 'EADL'))[source]
Retrieve all available data for an element.
- Parameters:
- Returns:
Container with parsed datasets and derived properties.
- Return type:
- Raises:
ValidationError – If element cannot be resolved.
Examples
>>> client = EPICSClient("data/endf") >>> fe = client.get_element("Fe") >>> fe.symbol 'Fe'
- get_properties(element, *, libraries=('EEDL', 'EPDL', 'EADL'))[source]
Return a flat summary dictionary for an element.
This is a convenience wrapper around
get_element()that returns a plaindictrather than anElementPropertiesobject.
- compare(elements, *, properties=None, libraries=('EEDL', 'EPDL', 'EADL'))[source]
Compare properties across multiple elements.
- Parameters:
- Returns:
One dict per element. If
pandasis available, callcompare_df()instead for a DataFrame.- Return type:
Examples
>>> client = EPICSClient("data/endf") >>> rows = client.compare(["H", "He", "Li"]) >>> [r["symbol"] for r in rows] ['H', 'He', 'Li']
- compare_df(elements, *, properties=None, libraries=('EEDL', 'EPDL', 'EADL'))[source]
Compare elements and return a pandas DataFrame.
Requires
pandasto be installed.- Parameters:
- Returns:
One row per element, columns are property names.
- Return type:
pandas.DataFrame
- Raises:
ImportError – If
pandasis not installed.
- binding_energy_table(elements)[source]
Build a binding-energy table (requires pandas).
- Parameters:
- Returns:
Rows = elements, columns = subshell labels. Missing subshells are
NaN.- Return type:
pandas.DataFrame
- Raises:
ImportError – If
pandasis not installed.
Plotting
Optional plotting helpers for PyEPICS
All functions in this module require matplotlib. The core library
works without it — these are convenience wrappers for quick
visualisation.
Usage
>>> from pyepics.plotting import plot_cross_sections, plot_binding_energies
>>> plot_cross_sections(client, "Fe", labels=["xs_tot", "xs_el"])
- pyepics.plotting.plot_cross_sections(client, element, *, labels=None, library='EEDL', logx=True, logy=True, title=None, ax=None, show=True)[source]
Plot cross sections for a single element.
- Parameters:
client (EPICSClient) – Initialised client instance.
labels (sequence of str or None, optional) – Cross-section labels to plot. Defaults to all available.
library (str) –
"EEDL"or"EPDL".logx (bool) – Use logarithmic axes.
logy (bool) – Use logarithmic axes.
title (str or None) – Plot title. Auto-generated if
None.ax (matplotlib.axes.Axes or None) – Existing axes to draw on. Creates a new figure if
None.show (bool) – Call
plt.show()at the end.
- Returns:
The axes object.
- Return type:
matplotlib.axes.Axes
- pyepics.plotting.compare_cross_sections(client, elements, label, *, library='EEDL', logx=True, logy=True, title=None, ax=None, show=True)[source]
Compare a single cross-section type across multiple elements.
- Parameters:
client (EPICSClient) – Initialised client instance.
label (str) – Cross-section label (e.g.
"xs_tot").library (str) –
"EEDL"or"EPDL".logx (bool) – Use logarithmic axes.
logy (bool) – Use logarithmic axes.
title (str or None) – Plot title.
ax (matplotlib.axes.Axes or None) – Existing axes.
show (bool) – Call
plt.show().
- Return type:
matplotlib.axes.Axes
- pyepics.plotting.plot_binding_energies(client, elements, *, subshell=None, title=None, ax=None, show=True)[source]
Plot binding energies vs. atomic number.
- Parameters:
client (EPICSClient) – Initialised client instance.
subshell (str or None) – If given, plot only this subshell (e.g.
"K"). Otherwise, plot all subshells with connected lines.title (str or None) – Plot title.
ax (matplotlib.axes.Axes or None) – Existing axes.
show (bool) – Call
plt.show().
- Return type:
matplotlib.axes.Axes
- pyepics.plotting.plot_shell_binding_energies(client, element, *, title=None, ax=None, show=True)[source]
Bar chart of binding energies by subshell for a single element.
- Parameters:
client (EPICSClient) – Initialised client instance.
title (str or None) – Plot title.
ax (matplotlib.axes.Axes or None) – Existing axes.
show (bool) – Call
plt.show().
- Return type:
matplotlib.axes.Axes
Readers
EEDL (Evaluated Electron Data Library) reader
Parses ENDF-format EEDL files and returns a strongly-typed
EEDLDataset instance. All low-level
parsing is delegated to pyepics.utils.parsing; validation is
handled by pyepics.utils.validation.
Supported ENDF sections
MF=23 — Electron cross sections (total, elastic, bremsstrahlung, excitation, ionisation per subshell).
MF=26 — Angular and energy distributions (large-angle elastic angular distributions, bremsstrahlung spectra, excitation average energy loss, subshell energy spectra).
File Format Assumptions
The file follows ENDF-6 fixed-width format (80 chars/line).
The
endfPython package is used to parse MF=23 and most of MF=26.MF=26 / MT=525 (large-angle elastic angular distribution) is parsed manually via
pyepics.utils.parsing.parse_mf26_mt525()because theendflibrary does not handle it reliably.
References
ENDF-6 Formats Manual (ENDF-102, BNL-90365-2009 Rev. 2).
LLNL Nuclear Data — EPICS 2025, https://nuclear.llnl.gov/EPICS/
- class pyepics.readers.eedl.EEDLReader[source]
Reader for EEDL (Evaluated Electron Data Library) ENDF files
Extracts electron interaction cross sections (MF=23) and angular / energy distributions (MF=26) from a single-element ENDF file generated by the LLNL EPICS 2025 pipeline.
The reader produces an
EEDLDatasetdataclass that can be passed directly to the HDF5 converter.Notes
The ENDF file is opened using
endf.Material(path), which reads the entire file into memory. For very large files this may require significant RAM; however, individual EEDL element files are typically < 10 MB so this is not a practical concern.Examples
>>> reader = EEDLReader() >>> dataset = reader.read("eedl/EEDL.ZA026000.endf") >>> dataset.Z 26 >>> "xs_tot" in dataset.cross_sections True
- read(path, *, validate=True)[source]
Parse an EEDL ENDF file and return a typed dataset model
- Parameters:
- Returns:
Fully populated dataset model.
- Return type:
- Raises:
FileFormatError – If the file does not exist, cannot be opened by the
endflibrary, or has an unrecognised filename pattern.ParseError – If any ENDF section is malformed.
ValidationError – If validate is
Trueand any cross-section array fails monotonicity or non-negativity checks.
EPDL (Evaluated Photon Data Library) reader
Parses ENDF-format EPDL files and returns a strongly-typed
EPDLDataset instance.
Supported ENDF sections
MF=23 — Photon cross sections (total, coherent, incoherent, pair production, photoelectric, subshell photoelectric).
MF=27 — Form factors and scattering functions (coherent form factor, incoherent scattering function, anomalous scattering factors).
File Format Assumptions
Standard ENDF-6 fixed-width format (80 chars/line).
Parsed entirely via the
endfPython package.
References
ENDF-6 Formats Manual (ENDF-102, BNL-90365-2009 Rev. 2).
LLNL Nuclear Data — EPICS 2025, https://nuclear.llnl.gov/EPICS/
- class pyepics.readers.epdl.EPDLReader[source]
Reader for EPDL (Evaluated Photon Data Library) ENDF files
Extracts photon interaction cross sections (MF=23) and form factors (MF=27) from a single-element ENDF file generated by the LLNL EPICS 2025 pipeline.
Notes
All parsing is done via
endf.Material. Thesigmaattribute of each section’sTabulated1Dobject is read for both MF=23 and MF=27 data.Examples
>>> reader = EPDLReader() >>> dataset = reader.read("epdl/EPDL.ZA026000.endf") >>> dataset.Z 26 >>> "xs_tot" in dataset.cross_sections True
- read(path, *, validate=True)[source]
Parse an EPDL ENDF file and return a typed dataset model
- Parameters:
- Returns:
Fully populated photon dataset model.
- Return type:
- Raises:
FileFormatError – If the file is missing or cannot be parsed.
ParseError – If any ENDF section is malformed.
ValidationError – If validation is enabled and fails.
EADL (Evaluated Atomic Data Library) reader
Parses ENDF-format EADL files and returns a strongly-typed
EADLDataset instance containing atomic
relaxation data (binding energies, transition probabilities, fluorescence
yields, and Auger yields).
Supported ENDF sections
MF=28, MT=533 — Atomic relaxation data (transition arrays per subshell, including radiative and non-radiative channels).
File Format Assumptions
Standard ENDF-6 fixed-width format.
The
endfPython package handles the MF=28 section, exposing asubshellslist of dicts with keysSUBI,EBI,ELN,NTR, andtransitions(each withSUBJ,SUBK,ETR,FTR).
References
ENDF-6 Formats Manual (ENDF-102, BNL-90365-2009 Rev. 2), §28.
LLNL Nuclear Data — EPICS 2025, https://nuclear.llnl.gov/EPICS/
- class pyepics.readers.eadl.EADLReader[source]
Reader for EADL (Evaluated Atomic Data Library) ENDF files
Extracts atomic relaxation data from MF=28 / MT=533. Each subshell entry includes the binding energy, electron count, and a list of transitions (radiative X-ray emission and non-radiative Auger / Coster-Kronig).
Notes
A radiative transition has
SUBK == 0in the ENDF record; a non-radiative transition hasSUBK > 0. This convention is preserved in theSubshellTransitionmodel.Examples
>>> reader = EADLReader() >>> dataset = reader.read("eadl/EADL.ZA026000.endf") >>> dataset.Z 26 >>> "K" in dataset.subshells True
- read(path, *, validate=True)[source]
Parse an EADL ENDF file and return a typed dataset model
- Parameters:
- Returns:
Fully populated atomic relaxation dataset model.
- Return type:
- Raises:
FileFormatError – If the file is missing or cannot be parsed.
ParseError – If the ENDF content is malformed.
ValidationError – If validate is
Trueand the atomic number is out of range.
Models
Typed dataclass models for EPICS parsed datasets
Every model is a frozen-safe dataclass carrying scalar metadata and
NumPy arrays. Models are the sole output of the reader layer and the
sole input accepted by the converter layer, enforcing strict separation
of concerns.
Hierarchy
CrossSectionRecord — energy / xs pair with optional interpolation info
DistributionRecord — flat (inc_energy, value, probability) triple
FormFactorRecord — x / y pair (momentum transfer / form factor)
SubshellTransition — single radiative or Auger transition
SubshellRelaxation — one subshell's relaxation data
EEDLDataset — full electron (EEDL) parsed output
EPDLDataset — full photon (EPDL) parsed output
EADLDataset — full atomic (EADL) parsed output
Units
Energies are in eV unless explicitly noted otherwise.
Cross sections are in barns (ENDF convention).
Momentum-transfer values are in 1/Å (inverse ångström).
Probabilities are dimensionless fractions summing to ≈ 1 per subshell.
- class pyepics.models.records.CrossSectionRecord(label, energy, cross_section, breakpoints=None, interpolation=None)[source]
A single cross-section table (energy vs. σ)
- Parameters:
label (str) – Short mnemonic name (e.g.
"xs_tot","xs_K").energy (numpy.ndarray) – Incident-energy grid, shape
(N,), units eV. Must be monotonically non-decreasing.cross_section (numpy.ndarray) – Cross-section values, shape
(N,), units barns. Must be non-negative.breakpoints (numpy.ndarray | None) – ENDF TAB1 interpolation-region breakpoints, or
None.interpolation (numpy.ndarray | None) – ENDF TAB1 interpolation law codes, or
None.
- class pyepics.models.records.DistributionRecord(label, inc_energy, value, probability)[source]
A flat ENDF distribution (incident energy → outgoing value / PDF)
The three arrays are aligned element-wise: for each index k,
inc_energy[k]is the incident energy,value[k]is the outgoing quantity (cosine μ or secondary energy E’), andprobability[k]is the probability density.- Parameters:
label (str) – Short mnemonic name (e.g.
"ang_lge","spec_K").inc_energy (numpy.ndarray) – Incident energies, shape
(M,), units eV.value (numpy.ndarray) – Outgoing quantity, shape
(M,).probability (numpy.ndarray) – Probability-density values, shape
(M,).
- class pyepics.models.records.AverageEnergyLoss(label, energy, avg_loss)[source]
Average energy loss vs. incident energy
- Parameters:
label (str) – Short mnemonic name (e.g.
"loss_exc").energy (numpy.ndarray) – Incident-energy grid, shape
(N,), units eV.avg_loss (numpy.ndarray) – Average energy loss per collision, shape
(N,), units eV.
- class pyepics.models.records.FormFactorRecord(label, x, y, breakpoints=None, interpolation=None)[source]
A form-factor or scattering-function table
- Parameters:
label (str) – Short mnemonic (e.g.
"ff_coherent","sf_incoherent").x (numpy.ndarray) – Independent variable — momentum transfer (1/Å) or energy (eV).
y (numpy.ndarray) – Form factor or scattering function values, same shape as x.
breakpoints (numpy.ndarray | None) – ENDF TAB1 interpolation-region breakpoints.
interpolation (numpy.ndarray | None) – ENDF TAB1 interpolation law codes.
- class pyepics.models.records.SubshellTransition(origin_designator, origin_label, secondary_designator, secondary_label, energy_eV, probability, is_radiative)[source]
A single atomic-relaxation transition
- Parameters:
origin_designator (int) – EADL subshell designator of the originating electron.
origin_label (str) – Human-readable label (e.g.
"L1").secondary_designator (int) – Designator for the subshell that fills the vacancy. Zero (0) indicates a radiative (X-ray) transition.
secondary_label (str) –
"radiative"when secondary_designator is 0, else the subshell label (e.g."M2").energy_eV (float) – Transition energy (eV).
probability (float) – Fractional probability of this transition occurring.
is_radiative (bool) –
Truefor X-ray emission,Falsefor Auger / Coster-Kronig.
- class pyepics.models.records.SubshellRelaxation(designator, name, binding_energy_eV, n_electrons, transitions=<factory>)[source]
Relaxation data for a single atomic subshell
- Parameters:
designator (int) – EADL numeric subshell designator (1 = K, 2 = L1, …).
name (str) – Standard label (e.g.
"K","L1").binding_energy_eV (float) – Binding energy of the subshell (eV).
n_electrons (float) – Number of electrons in the neutral atom.
transitions (list[SubshellTransition]) – All radiative and non-radiative transitions from this subshell.
- class pyepics.models.records.EEDLDataset(Z, symbol, atomic_weight_ratio, ZA, cross_sections=<factory>, distributions=<factory>, average_energy_losses=<factory>, bremsstrahlung_spectra=None)[source]
Complete parsed output of an EEDL (Evaluated Electron Data Library) file
Instances are returned by
EEDLReader.read()and consumed byconvert_dataset_to_hdf5().- Parameters:
Z (int) – Atomic number.
symbol (str) – Element symbol (e.g.
"Fe").atomic_weight_ratio (float) – AWR from the ENDF material header.
ZA (float) – ZA identifier (Z × 1000 + A).
cross_sections (dict[str, CrossSectionRecord]) – Keyed by abbreviation (e.g.
"xs_tot","xs_K").distributions (dict[str, DistributionRecord]) – Keyed by abbreviation (e.g.
"ang_lge","spec_K").average_energy_losses (dict[str, AverageEnergyLoss]) – Keyed by abbreviation (e.g.
"loss_exc","loss_brem_spec").bremsstrahlung_spectra (DistributionRecord | None) – Bremsstrahlung photon energy spectrum, if present.
- class pyepics.models.records.EPDLDataset(Z, symbol, atomic_weight_ratio, ZA, cross_sections=<factory>, form_factors=<factory>)[source]
Complete parsed output of an EPDL (Evaluated Photon Data Library) file
Instances are returned by
EPDLReader.read()and consumed byconvert_dataset_to_hdf5().- Parameters:
Z (int) – Atomic number.
symbol (str) – Element symbol.
atomic_weight_ratio (float) – AWR from the ENDF material header.
ZA (float) – ZA identifier.
cross_sections (dict[str, CrossSectionRecord]) – Photon cross sections keyed by abbreviation.
form_factors (dict[str, FormFactorRecord]) – Form factors / scattering functions keyed by abbreviation.
- class pyepics.models.records.EADLDataset(Z, symbol, atomic_weight_ratio, ZA, n_subshells=0, subshells=<factory>)[source]
Complete parsed output of an EADL (Evaluated Atomic Data Library) file
Instances are returned by
EADLReader.read()and consumed byconvert_dataset_to_hdf5().- Parameters:
Z (int) – Atomic number.
symbol (str) – Element symbol.
atomic_weight_ratio (float) – AWR from the ENDF material header.
ZA (float) – ZA identifier.
n_subshells (int) – Number of subshells for which relaxation data is given.
subshells (dict[str, SubshellRelaxation]) – Relaxation data keyed by subshell label (e.g.
"K").
Converters
HDF5 converter for EPICS parsed datasets
Writes deterministic, self-documenting HDF5 files from the typed dataclass models returned by the reader layer.
HDF5 Layout
All three dataset types share a common metadata block and then branch into library-specific groups:
/metadata/
Z int64 — atomic number
symbol string — element symbol
ZA float64 — ZA identifier (Z × 1000 + A)
AWR float64 — atomic weight ratio
/EEDL/
Z_{ZZZ}/
total/
energy float64[] units: eV
cross_section float64[] units: barns
elastic_scatter/
total/ ...
large_angle/ ...
ionization/
total/ ...
subshells/
K/ ...
bremsstrahlung/ ...
excitation/ ...
/EPDL/
Z_{ZZZ}/
total/ ...
coherent_scattering/ ...
incoherent_scattering/ ...
photoelectric/ ...
pair_production/ ...
form_factors/ ...
/EADL/
Z_{ZZZ}/
subshells/
K/
binding_energy_eV float64
n_electrons float64
radiative/ ...
non_radiative/ ...
Physical units are stored as HDF5 dataset attributes
(ds.attrs["units"] = "eV"). Element-level metadata (Z, AWR, etc.)
are stored as group attributes on the Z_{ZZZ} group.
References
HDF5 best practices, The HDF Group.
ENDF-6 Formats Manual (ENDF-102).
- pyepics.converters.hdf5.convert_dataset_to_hdf5(dataset_type, source_path, output_path, *, validate=True, overwrite=False)[source]
Read an ENDF source file and write a structured HDF5 file
This is the main convenience function of the converter layer. It instantiates the appropriate reader, parses the source file, and writes the result to an HDF5 file with a deterministic, self-documenting group layout.
- Parameters:
dataset_type (
"EEDL"|"EADL"|"EPDL") – Which EPICS library the source file belongs to.source_path (Path | str) – Path to the ENDF source file.
output_path (Path | str) – Path for the output HDF5 file. Parent directories are created automatically.
validate (bool, optional) – Run post-parse validation. Default
True.overwrite (bool, optional) – If
True, overwrite an existing HDF5 file. IfFalse(default), raiseConversionErrorwhen the output file already exists.
- Raises:
ConversionError – If overwrite is
Falseand output_path exists, or if any HDF5 write operation fails.FileFormatError – If the source file cannot be opened.
ParseError – If the source file content is malformed.
ValidationError – If validation is enabled and fails.
ValueError – If dataset_type is not one of the supported types.
- Return type:
None
Examples
>>> convert_dataset_to_hdf5( ... "EEDL", ... "data/endf/eedl/EEDL.ZA026000.endf", ... "output/Fe.h5", ... overwrite=True, ... )
- pyepics.converters.hdf5.create_raw_hdf5(dataset_type, source_path, output_path, *, validate=True, overwrite=False)[source]
Parse an ENDF file and write a raw HDF5 file
Raw files preserve the original energy grids, breakpoints, and interpolation info exactly as they appear in the ENDF evaluation. They are suitable for external users who want full-fidelity data.
- Parameters:
dataset_type (
"EEDL"|"EADL"|"EPDL") – Which EPICS library.source_path (Path | str) – Path to the ENDF source file.
output_path (Path | str) – Path for the output HDF5 file.
validate (bool, optional) – Post-parse validation. Default
True.overwrite (bool, optional) – Overwrite existing file. Default
False.
- Return type:
None
Examples
>>> create_raw_hdf5("EEDL", "data/endf/eedl/EEDL.ZA026000.endf", "data/raw/electron/Fe.h5")
- pyepics.converters.hdf5.create_mcdc_hdf5(dataset_type, source_path, output_path, *, validate=True, overwrite=False)[source]
Parse an ENDF file and write an MCDC-format HDF5 file
MCDC files have cross sections interpolated onto a common energy grid, compressed distribution tables, and analytically computed small-angle scattering. They are optimised for transport codes.
- Parameters:
dataset_type (
"EEDL"|"EADL"|"EPDL") – Which EPICS library.source_path (Path | str) – Path to the ENDF source file.
output_path (Path | str) – Path for the output HDF5 file.
validate (bool, optional) – Post-parse validation. Default
True.overwrite (bool, optional) – Overwrite existing file. Default
False.
- Return type:
None
Examples
>>> create_mcdc_hdf5("EEDL", "data/endf/eedl/EEDL.ZA026000.endf", "data/mcdc/electron/Fe.h5")
- pyepics.converters.hdf5.create_combined_mcdc_hdf5(Z, output_path, *, eedl_path=None, epdl_path=None, eadl_path=None, validate=True, overwrite=False)[source]
Create a single MCDC HDF5 file containing electron, photon, and atomic data.
Each element gets one file (e.g.
Fe.h5) with up to three top-level groups:electron_reactions,photon_reactions, andatomic_relaxation.- Parameters:
Z (int) – Atomic number (used for logging only; actual Z comes from the parsed data).
output_path (Path | str) – Path for the combined output HDF5 file.
eedl_path (Path | str | None) – Path to the EEDL ENDF source file (electron).
epdl_path (Path | str | None) – Path to the EPDL ENDF source file (photon).
eadl_path (Path | str | None) – Path to the EADL ENDF source file (atomic relaxation).
validate (bool, optional) – Post-parse validation. Default
True.overwrite (bool, optional) – Overwrite existing file. Default
False.
- Return type:
None
Examples
>>> create_combined_mcdc_hdf5( ... 26, "data/mcdc/Fe.h5", ... eedl_path="data/endf/eedl/EEDL.ZA026000.endf", ... epdl_path="data/endf/epdl/EPDL.ZA026000.endf", ... eadl_path="data/endf/eadl/EADL.ZA026000.endf", ... )
Raw HDF5 writer for EPICS parsed datasets
Writes a “raw” HDF5 file that preserves every piece of information from the ENDF source file: original energy grids, breakpoints, interpolation law codes, and distribution tables. No resampling or merging is done.
These files are intended for external users who need the full fidelity of the ENDF evaluation — users can inspect, re-interpolate, or convert the data with their own tools.
Output Directories
data/raw/electron/— EEDL (electron) raw filesdata/raw/photon/— EPDL (photon) raw filesdata/raw/atomic/— EADL (atomic) raw files
HDF5 Layout — EEDL
/metadata/
Z, symbol, ZA, AWR
/total_xs/cross_section/
energy, cross_section, breakpoints, interpolation
/elastic_scatter/
cross_section/total/ ...
cross_section/large_angle/ ...
distributions/large_angle/
inc_energy, mu, probability
y_inc_energy, y_yield
/bremsstrahlung/
cross_section/ ...
distributions/
inc_energy, out_energy, probability
loss_inc_energy, avg_loss
/excitation/
cross_section/ ...
distributions/
loss_inc_energy, avg_loss
/ionization/
cross_section/total/ ...
cross_section/{shell}/ ...
distributions/{shell}/
inc_energy, out_energy, probability
y_inc_energy, y_yield
binding_energy
- pyepics.converters.raw_hdf5.write_raw_eedl(h5f, dataset)[source]
Write a raw EEDL dataset preserving all original data
- Parameters:
h5f (h5py.File) – Open HDF5 file handle (write mode).
dataset (EEDLDataset) – Parsed EEDL dataset.
- Return type:
None
- pyepics.converters.raw_hdf5.write_raw_epdl(h5f, dataset)[source]
Write a raw EPDL dataset preserving all original data
- Parameters:
h5f (h5py.File) – Open HDF5 file handle (write mode).
dataset (EPDLDataset) – Parsed EPDL dataset.
- Return type:
None
- pyepics.converters.raw_hdf5.write_raw_eadl(h5f, dataset)[source]
Write a raw EADL dataset preserving all original data
- Parameters:
h5f (h5py.File) – Open HDF5 file handle (write mode).
dataset (EADLDataset) – Parsed EADL dataset.
- Return type:
None
MCDC-format HDF5 writer for EPICS datasets
Writes HDF5 files optimised for the MC/DC (Monte Carlo / Dynamic Code) transport code. These differ from the “raw” format in several ways:
All cross sections are interpolated onto a common energy grid.
Angular distributions are converted to (energy_grid, energy_offset, value, PDF) compressed tables via
build_pdf().Small-angle elastic scattering cosine PDFs are analytically computed from screened Rutherford via
small_angle_scattering_cosine().Atomic relaxation transitions are split into radiative / non-radiative groups with pre-computed fluorescence and Auger yields.
Important
This file is intentionally kept separate from the raw HDF5 writer so that the MCDC data layout can be changed frequently without affecting the raw-data pipeline. If the transport code changes its expected input format, edit this file only.
Output Directories
data/mcdc/electron/— EEDL (electron)data/mcdc/photon/— EPDL (photon)data/mcdc/atomic/— EADL (atomic)
See also
pyepics.converters.raw_hdf5raw (full-fidelity) writer
pyepics.converters.hdf5high-level convenience API
- pyepics.converters.mcdc_hdf5.write_mcdc_eedl(h5f, dataset)[source]
Write an MCDC-format EEDL HDF5 file
All cross sections are resampled onto the total-xs energy grid. Angular distributions are compressed into (grid, offset, value, PDF) tables. Small-angle elastic scattering cosine PDFs are computed analytically from screened Rutherford theory.
- Parameters:
h5f (h5py.File) – Open HDF5 file handle (write mode).
dataset (EEDLDataset) – Parsed EEDL dataset.
- Return type:
None
- pyepics.converters.mcdc_hdf5.write_mcdc_epdl(h5f, dataset)[source]
Write an MCDC-format EPDL HDF5 file
All cross sections are resampled onto the total-xs energy grid. Form factors are stored as-is (no interpolation needed).
- Parameters:
h5f (h5py.File) – Open HDF5 file handle (write mode).
dataset (EPDLDataset) – Parsed EPDL dataset.
- Return type:
None
- pyepics.converters.mcdc_hdf5.write_mcdc_eadl(h5f, dataset)[source]
Write an MCDC-format EADL HDF5 file
Splits transitions into radiative / non-radiative groups with pre-computed fluorescence and Auger yields.
- Parameters:
h5f (h5py.File) – Open HDF5 file handle (write mode).
dataset (EADLDataset) – Parsed EADL dataset.
- Return type:
None
- pyepics.converters.mcdc_hdf5.write_mcdc_combined(h5f, *, eedl=None, epdl=None, eadl=None)[source]
Write a combined MCDC HDF5 file with electron, photon, and atomic data.
Produces a single file per element containing up to three top-level groups (
electron_reactions,photon_reactions,atomic_relaxation) plus shared metadata.- Parameters:
h5f (h5py.File) – Open HDF5 file handle (write mode).
eedl (EEDLDataset or None) – Parsed EEDL dataset (electron).
epdl (EPDLDataset or None) – Parsed EPDL dataset (photon).
eadl (EADLDataset or None) – Parsed EADL dataset (atomic relaxation).
- Raises:
ValueError – If no dataset is provided.
- Return type:
None
Download
EPICS dataset downloader
Downloads EEDL, EPDL, and EADL ENDF files from the LLNL Nuclear Data website (EPICS 2025).
Data Sources
EEDL:
https://nuclear.llnl.gov/EPICS/ENDF2025/EEDL.ELEMENTS/EPDL:
https://nuclear.llnl.gov/EPICS/ENDF2025/EPDL.ELEMENTS/EADL:
https://nuclear.llnl.gov/EPICS/ENDF2025/EADL.ELEMENTS/
Examples
>>> from pyepics.io.download import download_library, download_all
>>> download_library("eedl") # downloads to ./data/endf/eedl/
>>> download_all(out_dir="data/endf") # downloads all three
- pyepics.io.download.LIBRARY_URLS: dict[str, dict[str, str]] = {'eadl': {'description': 'Evaluated Atomic Data Library', 'prefix': 'EADL', 'url': 'https://nuclear.llnl.gov/EPICS/ENDF2025/EADL.ELEMENTS/getza.htm'}, 'eedl': {'description': 'Evaluated Electron Data Library', 'prefix': 'EEDL', 'url': 'https://nuclear.llnl.gov/EPICS/ENDF2025/EEDL.ELEMENTS/getza.htm'}, 'epdl': {'description': 'Evaluated Photon Data Library', 'prefix': 'EPDL', 'url': 'https://nuclear.llnl.gov/EPICS/ENDF2025/EPDL.ELEMENTS/getza.htm'}}
Download URLs and metadata for each EPICS library.
- pyepics.io.download.download_library(library_name, out_dir=None)[source]
Download a specific EPICS library from the LLNL website
Fetches the LLNL index page for the requested library, discovers all element ENDF files, and downloads each one to out_dir.
- Parameters:
library_name (
"eedl"|"epdl"|"eadl") – Which library to download.out_dir (Path | str | None, optional) – Output directory. Defaults to
"./{library_name}".
- Returns:
Path to the directory containing the downloaded files.
- Return type:
Path
- Raises:
DownloadError – If network requests fail or the HTML cannot be parsed.
ValueError – If library_name is not one of the supported values.
Exceptions
Custom exception hierarchy for the PyEPICS package
All exceptions raised by PyEPICS inherit from PyEPICSError, making it
possible to catch every library-specific error with a single except clause
while still allowing fine-grained handling when needed.
Exception Hierarchy
PyEPICSError
├── ParseError # Malformed file content
├── ValidationError # Failed format or range checks
├── FileFormatError # Wrong file type or header
├── ConversionError # HDF5 write failures
└── DownloadError # Network errors (future)
- exception pyepics.exceptions.PyEPICSError[source]
Base exception for all PyEPICS errors
Every exception raised by PyEPICS is a subclass of this type. Catching
PyEPICSErrortherefore catches any library-specific failure while still allowing standard Python exceptions (KeyError,TypeError, etc.) to propagate normally.
- exception pyepics.exceptions.ParseError[source]
Raised when an ENDF-format file contains malformed or unparseable content
This includes unexpected column widths, non-numeric data in numeric fields, truncated records, or any deviation from the ENDF-6 fixed-width format that prevents successful extraction of physical data.
- Parameters:
message (str) – Human-readable description of the parse failure, including the file path and approximate line number when available.
- exception pyepics.exceptions.ValidationError[source]
Raised when parsed data fails post-parse validation checks
Validation checks include energy monotonicity, non-negative cross sections, probability normalization, and physically meaningful atomic-number ranges. A
ValidationErrormeans the file was parseable but the resulting data violates expected constraints.- Parameters:
message (str) – Description of the failed check, including the field name, expected constraint, and actual value.
- exception pyepics.exceptions.FileFormatError[source]
Raised when a file does not match the expected EPICS/ENDF format
This is raised before full parsing begins—for example when the filename pattern does not match
ZA{ZZZ}000or when the file cannot be opened with theendflibrary.- Parameters:
message (str) – Description of the format mismatch, including the expected pattern and actual file characteristics.
- exception pyepics.exceptions.ConversionError[source]
Raised when HDF5 conversion fails
This covers any error during HDF5 file creation: permission denied, disk full, incompatible dataset shapes, or a missing prerequisite dataset that should have been written in an earlier step.
- Parameters:
message (str) – Description of the conversion failure and the target HDF5 path.
- exception pyepics.exceptions.DownloadError[source]
Raised when dataset download from LLNL fails
Reserved for future use by the
io.downloadmodule. Covers HTTP errors, connection timeouts, and checksum mismatches.- Parameters:
message (str) – Description of the network failure, including the URL attempted.
Constants
Physical constants and data-mapping tables used across PyEPICS
All constants are sourced from NIST CODATA 2018 [constants-1]. Mapping
dictionaries use (MF, MT) integer tuples as keys so that look-ups
from ENDF section identifiers are O(1).
References
NIST, “The 2018 CODATA Recommended Values of the Fundamental Physical Constants”, https://physics.nist.gov/cuu/pdf/wallet_2018.pdf
- pyepics.utils.constants.FINE_STRUCTURE: float = 0.0072973525693
Fine-structure constant α (dimensionless).
- pyepics.utils.constants.ELECTRON_MASS: float = 0.51099895069
Electron rest-mass energy m_e c² (MeV).
- pyepics.utils.constants.PLANCK_CONSTANT: float = 6.62607015e-34
Planck constant h (J·s, exact by SI definition).
- pyepics.utils.constants.SPEED_OF_LIGHT: float = 299792458.0
Speed of light in vacuum c (m/s, exact by SI definition).
- pyepics.utils.constants.ELECTRON_CHARGE: float = 1.602176634e-19
Elementary charge e (C, exact by SI definition).
- pyepics.utils.constants.ELECTRON_SUBSHELL_LABELS: dict[int, str] = {534: 'K', 535: 'L1', 536: 'L2', 537: 'L3', 538: 'M1', 539: 'M2', 540: 'M3', 541: 'M4', 542: 'M5', 543: 'N1', 544: 'N2', 545: 'N3', 546: 'N4', 547: 'N5', 548: 'N6', 549: 'N7', 550: 'O1', 551: 'O2', 552: 'O3', 553: 'O4', 554: 'O5', 555: 'O6', 556: 'O7', 557: 'O8', 558: 'O9', 559: 'P1', 560: 'P2', 561: 'P3', 562: 'P4', 563: 'P5', 564: 'P6', 565: 'P7', 566: 'P8', 567: 'P9', 568: 'P10', 569: 'P11', 570: 'Q1', 571: 'Q2', 572: 'Q3'}
Mapping from ENDF MT number to subshell label string.
Used to identify specific electron-ionisation or photoelectric subshell cross-section sections. MT 534 corresponds to the K shell, 535–537 to L sub-shells, and so on through the Q shell.
- pyepics.utils.constants.SUBSHELL_LABELS = {534: 'K', 535: 'L1', 536: 'L2', 537: 'L3', 538: 'M1', 539: 'M2', 540: 'M3', 541: 'M4', 542: 'M5', 543: 'N1', 544: 'N2', 545: 'N3', 546: 'N4', 547: 'N5', 548: 'N6', 549: 'N7', 550: 'O1', 551: 'O2', 552: 'O3', 553: 'O4', 554: 'O5', 555: 'O6', 556: 'O7', 557: 'O8', 558: 'O9', 559: 'P1', 560: 'P2', 561: 'P3', 562: 'P4', 563: 'P5', 564: 'P6', 565: 'P7', 566: 'P8', 567: 'P9', 568: 'P10', 569: 'P11', 570: 'Q1', 571: 'Q2', 572: 'Q3'}
Backward-compatible alias for
ELECTRON_SUBSHELL_LABELS.
- pyepics.utils.constants.SUBSHELL_DESIGNATORS: dict[int, str] = {1: 'K', 2: 'L1', 3: 'L2', 4: 'L3', 5: 'M1', 6: 'M2', 7: 'M3', 8: 'M4', 9: 'M5', 10: 'N1', 11: 'N2', 12: 'N3', 13: 'N4', 14: 'N5', 15: 'N6', 16: 'N7', 17: 'O1', 18: 'O2', 19: 'O3', 20: 'O4', 21: 'O5', 22: 'O6', 23: 'O7', 24: 'O8', 25: 'O9', 26: 'P1', 27: 'P2', 28: 'P3', 29: 'P4', 30: 'P5', 31: 'P6', 32: 'P7', 33: 'P8', 34: 'P9', 35: 'P10', 36: 'P11', 37: 'Q1', 38: 'Q2', 39: 'Q3'}
Mapping from EADL subshell-designator index to orbital label.
Index 1 = K (1s½), 2 = L1 (2s½), …, 39 = Q3 (7p³⁄₂).
- pyepics.utils.constants.SUBSHELL_DESIGNATORS_INV: dict[str, int] = {'K': 1, 'L1': 2, 'L2': 3, 'L3': 4, 'M1': 5, 'M2': 6, 'M3': 7, 'M4': 8, 'M5': 9, 'N1': 10, 'N2': 11, 'N3': 12, 'N4': 13, 'N5': 14, 'N6': 15, 'N7': 16, 'O1': 17, 'O2': 18, 'O3': 19, 'O4': 20, 'O5': 21, 'O6': 22, 'O7': 23, 'O8': 24, 'O9': 25, 'P1': 26, 'P10': 35, 'P11': 36, 'P2': 27, 'P3': 28, 'P4': 29, 'P5': 30, 'P6': 31, 'P7': 32, 'P8': 33, 'P9': 34, 'Q1': 37, 'Q2': 38, 'Q3': 39}
subshell label → EADL designator index.
- Type:
Reverse mapping
- pyepics.utils.constants.ELECTRON_MF_MT: dict[tuple[int, int], str] = {(1, 451): 'General Information / Directory', (23, 501): 'Total Electron Cross Sections', (23, 522): 'Ionization (sum of subshells)', (23, 525): 'Large Angle Elastic Scattering Cross Section', (23, 526): 'Elastic Scatter (Total) Cross Sections', (23, 527): 'Bremsstrahlung Cross Sections', (23, 528): 'Excitation Cross Sections', (23, 534): 'K (1S1/2) Electroionization Subshell Cross Sections', (23, 535): 'L1 (2s1/2) Electroionization Subshell Cross Sections', (23, 536): 'L2 (2p1/2) Electroionization Subshell Cross Sections', (23, 537): 'L3 (2p3/2) Electroionization Subshell Cross Sections', (23, 538): 'M1 (3s1/2) Electroionization Subshell Cross Sections', (23, 539): 'M2 (3p1/2) Electroionization Subshell Cross Sections', (23, 540): 'M3 (3p3/2) Electroionization Subshell Cross Sections', (23, 541): 'M4 (3d3/2) Electroionization Subshell Cross Sections', (23, 542): 'M5 (3d5/2) Electroionization Subshell Cross Sections', (23, 543): 'N1 (4s1/2) Electroionization Subshell Cross Sections', (23, 544): 'N2 (4p1/2) Electroionization Subshell Cross Sections', (23, 545): 'N3 (4p3/2) Electroionization Subshell Cross Sections', (23, 546): 'N4 (4d3/2) Electroionization Subshell Cross Sections', (23, 547): 'N5 (4d5/2) Electroionization Subshell Cross Sections', (23, 548): 'N6 (4f5/2) Electroionization Subshell Cross Sections', (23, 549): 'N7 (4f7/2) Electroionization Subshell Cross Sections', (23, 550): 'O1 (5s1/2) Electroionization Subshell Cross Sections', (23, 551): 'O2 (5p1/2) Electroionization Subshell Cross Sections', (23, 552): 'O3 (5p3/2) Electroionization Subshell Cross Sections', (23, 553): 'O4 (5d3/2) Electroionization Subshell Cross Sections', (23, 554): 'O5 (5d5/2) Electroionization Subshell Cross Sections', (23, 555): 'O6 (5f5/2) Electroionization Subshell Cross Sections', (23, 556): 'O7 (5f7/2) Electroionization Subshell Cross Sections', (23, 557): 'O8 (5g7/2) Electroionization Subshell Cross Sections', (23, 558): 'O9 (5g9/2) Electroionization Subshell Cross Sections', (23, 559): 'P1 (6s1/2) Electroionization Subshell Cross Sections', (23, 560): 'P2 (6p1/2) Electroionization Subshell Cross Sections', (23, 561): 'P3 (6p3/2) Electroionization Subshell Cross Sections', (23, 562): 'P4 (6d3/2) Electroionization Subshell Cross Sections', (23, 563): 'P5 (6d5/2) Electroionization Subshell Cross Sections', (23, 564): 'P6 (6f5/2) Electroionization Subshell Cross Sections', (23, 565): 'P7 (6f7/2) Electroionization Subshell Cross Sections', (23, 566): 'P8 (6g7/2) Electroionization Subshell Cross Sections', (23, 567): 'P9 (6g9/2) Electroionization Subshell Cross Sections', (23, 568): 'P10 (6h7/2) Electroionization Subshell Cross Sections', (23, 569): 'P11 (6h9/2) Electroionization Subshell Cross Sections', (23, 570): 'Q1 (7s1/2) Electroionization Subshell Cross Sections', (23, 571): 'Q2 (7p1/2) Electroionization Subshell Cross Sections', (23, 572): 'Q3 (7p3/2) Electroionization Subshell Cross Sections', (26, 525): 'Large Angle Elastic Angular Distributions', (26, 527): 'Bremsstrahlung Photon Energy Spectra and Electron Average Energy Loss', (26, 528): 'Excitation Electron Average Energy Loss', (26, 534): 'K (1S1/2) Electroionization Subshell Energy Spectra', (26, 535): 'L1 (2s1/2) Electroionization Subshell Energy Spectra', (26, 536): 'L2 (2p1/2) Electroionization Subshell Energy Spectra', (26, 537): 'L3 (2p3/2) Electroionization Subshell Energy Spectra', (26, 538): 'M1 (3s1/2) Electroionization Subshell Energy Spectra', (26, 539): 'M2 (3p1/2) Electroionization Subshell Energy Spectra', (26, 540): 'M3 (3p3/2) Electroionization Subshell Energy Spectra', (26, 541): 'M4 (3d3/2) Electroionization Subshell Energy Spectra', (26, 542): 'M5 (3d5/2) Electroionization Subshell Energy Spectra', (26, 543): 'N1 (4s1/2) Electroionization Subshell Energy Spectra', (26, 544): 'N2 (4p1/2) Electroionization Subshell Energy Spectra', (26, 545): 'N3 (4p3/2) Electroionization Subshell Energy Spectra', (26, 546): 'N4 (4d3/2) Electroionization Subshell Energy Spectra', (26, 547): 'N5 (4d5/2) Electroionization Subshell Energy Spectra', (26, 548): 'N6 (4f5/2) Electroionization Subshell Energy Spectra', (26, 549): 'N7 (4f7/2) Electroionization Subshell Energy Spectra', (26, 550): 'O1 (5s1/2) Electroionization Subshell Energy Spectra', (26, 551): 'O2 (5p1/2) Electroionization Subshell Energy Spectra', (26, 552): 'O3 (5p3/2) Electroionization Subshell Energy Spectra', (26, 553): 'O4 (5d3/2) Electroionization Subshell Energy Spectra', (26, 554): 'O5 (5d5/2) Electroionization Subshell Energy Spectra', (26, 555): 'O6 (5f5/2) Electroionization Subshell Energy Spectra', (26, 556): 'O7 (5f7/2) Electroionization Subshell Energy Spectra', (26, 557): 'O8 (5g7/2) Electroionization Subshell Energy Spectra', (26, 558): 'O9 (5g9/2) Electroionization Subshell Energy Spectra', (26, 559): 'P1 (6s1/2) Electroionization Subshell Energy Spectra', (26, 560): 'P2 (6p1/2) Electroionization Subshell Energy Spectra', (26, 561): 'P3 (6p3/2) Electroionization Subshell Energy Spectra', (26, 562): 'P4 (6d3/2) Electroionization Subshell Energy Spectra', (26, 563): 'P5 (6d5/2) Electroionization Subshell Energy Spectra', (26, 564): 'P6 (6f5/2) Electroionization Subshell Energy Spectra', (26, 565): 'P7 (6f7/2) Electroionization Subshell Energy Spectra', (26, 566): 'P8 (6g7/2) Electroionization Subshell Energy Spectra', (26, 567): 'P9 (6g9/2) Electroionization Subshell Energy Spectra', (26, 568): 'P10 (6h7/2) Electroionization Subshell Energy Spectra', (26, 569): 'P11 (6h9/2) Electroionization Subshell Energy Spectra', (26, 570): 'Q1 (7s1/2) Electroionization Subshell Energy Spectra', (26, 571): 'Q2 (7p1/2) Electroionization Subshell Energy Spectra', (26, 572): 'Q3 (7p3/2) Electroionization Subshell Energy Spectra'}
Human-readable descriptions for every EEDL (MF, MT) section pair.
- pyepics.utils.constants.MF_MT = {(1, 451): 'General Information / Directory', (23, 501): 'Total Electron Cross Sections', (23, 522): 'Ionization (sum of subshells)', (23, 525): 'Large Angle Elastic Scattering Cross Section', (23, 526): 'Elastic Scatter (Total) Cross Sections', (23, 527): 'Bremsstrahlung Cross Sections', (23, 528): 'Excitation Cross Sections', (23, 534): 'K (1S1/2) Electroionization Subshell Cross Sections', (23, 535): 'L1 (2s1/2) Electroionization Subshell Cross Sections', (23, 536): 'L2 (2p1/2) Electroionization Subshell Cross Sections', (23, 537): 'L3 (2p3/2) Electroionization Subshell Cross Sections', (23, 538): 'M1 (3s1/2) Electroionization Subshell Cross Sections', (23, 539): 'M2 (3p1/2) Electroionization Subshell Cross Sections', (23, 540): 'M3 (3p3/2) Electroionization Subshell Cross Sections', (23, 541): 'M4 (3d3/2) Electroionization Subshell Cross Sections', (23, 542): 'M5 (3d5/2) Electroionization Subshell Cross Sections', (23, 543): 'N1 (4s1/2) Electroionization Subshell Cross Sections', (23, 544): 'N2 (4p1/2) Electroionization Subshell Cross Sections', (23, 545): 'N3 (4p3/2) Electroionization Subshell Cross Sections', (23, 546): 'N4 (4d3/2) Electroionization Subshell Cross Sections', (23, 547): 'N5 (4d5/2) Electroionization Subshell Cross Sections', (23, 548): 'N6 (4f5/2) Electroionization Subshell Cross Sections', (23, 549): 'N7 (4f7/2) Electroionization Subshell Cross Sections', (23, 550): 'O1 (5s1/2) Electroionization Subshell Cross Sections', (23, 551): 'O2 (5p1/2) Electroionization Subshell Cross Sections', (23, 552): 'O3 (5p3/2) Electroionization Subshell Cross Sections', (23, 553): 'O4 (5d3/2) Electroionization Subshell Cross Sections', (23, 554): 'O5 (5d5/2) Electroionization Subshell Cross Sections', (23, 555): 'O6 (5f5/2) Electroionization Subshell Cross Sections', (23, 556): 'O7 (5f7/2) Electroionization Subshell Cross Sections', (23, 557): 'O8 (5g7/2) Electroionization Subshell Cross Sections', (23, 558): 'O9 (5g9/2) Electroionization Subshell Cross Sections', (23, 559): 'P1 (6s1/2) Electroionization Subshell Cross Sections', (23, 560): 'P2 (6p1/2) Electroionization Subshell Cross Sections', (23, 561): 'P3 (6p3/2) Electroionization Subshell Cross Sections', (23, 562): 'P4 (6d3/2) Electroionization Subshell Cross Sections', (23, 563): 'P5 (6d5/2) Electroionization Subshell Cross Sections', (23, 564): 'P6 (6f5/2) Electroionization Subshell Cross Sections', (23, 565): 'P7 (6f7/2) Electroionization Subshell Cross Sections', (23, 566): 'P8 (6g7/2) Electroionization Subshell Cross Sections', (23, 567): 'P9 (6g9/2) Electroionization Subshell Cross Sections', (23, 568): 'P10 (6h7/2) Electroionization Subshell Cross Sections', (23, 569): 'P11 (6h9/2) Electroionization Subshell Cross Sections', (23, 570): 'Q1 (7s1/2) Electroionization Subshell Cross Sections', (23, 571): 'Q2 (7p1/2) Electroionization Subshell Cross Sections', (23, 572): 'Q3 (7p3/2) Electroionization Subshell Cross Sections', (26, 525): 'Large Angle Elastic Angular Distributions', (26, 527): 'Bremsstrahlung Photon Energy Spectra and Electron Average Energy Loss', (26, 528): 'Excitation Electron Average Energy Loss', (26, 534): 'K (1S1/2) Electroionization Subshell Energy Spectra', (26, 535): 'L1 (2s1/2) Electroionization Subshell Energy Spectra', (26, 536): 'L2 (2p1/2) Electroionization Subshell Energy Spectra', (26, 537): 'L3 (2p3/2) Electroionization Subshell Energy Spectra', (26, 538): 'M1 (3s1/2) Electroionization Subshell Energy Spectra', (26, 539): 'M2 (3p1/2) Electroionization Subshell Energy Spectra', (26, 540): 'M3 (3p3/2) Electroionization Subshell Energy Spectra', (26, 541): 'M4 (3d3/2) Electroionization Subshell Energy Spectra', (26, 542): 'M5 (3d5/2) Electroionization Subshell Energy Spectra', (26, 543): 'N1 (4s1/2) Electroionization Subshell Energy Spectra', (26, 544): 'N2 (4p1/2) Electroionization Subshell Energy Spectra', (26, 545): 'N3 (4p3/2) Electroionization Subshell Energy Spectra', (26, 546): 'N4 (4d3/2) Electroionization Subshell Energy Spectra', (26, 547): 'N5 (4d5/2) Electroionization Subshell Energy Spectra', (26, 548): 'N6 (4f5/2) Electroionization Subshell Energy Spectra', (26, 549): 'N7 (4f7/2) Electroionization Subshell Energy Spectra', (26, 550): 'O1 (5s1/2) Electroionization Subshell Energy Spectra', (26, 551): 'O2 (5p1/2) Electroionization Subshell Energy Spectra', (26, 552): 'O3 (5p3/2) Electroionization Subshell Energy Spectra', (26, 553): 'O4 (5d3/2) Electroionization Subshell Energy Spectra', (26, 554): 'O5 (5d5/2) Electroionization Subshell Energy Spectra', (26, 555): 'O6 (5f5/2) Electroionization Subshell Energy Spectra', (26, 556): 'O7 (5f7/2) Electroionization Subshell Energy Spectra', (26, 557): 'O8 (5g7/2) Electroionization Subshell Energy Spectra', (26, 558): 'O9 (5g9/2) Electroionization Subshell Energy Spectra', (26, 559): 'P1 (6s1/2) Electroionization Subshell Energy Spectra', (26, 560): 'P2 (6p1/2) Electroionization Subshell Energy Spectra', (26, 561): 'P3 (6p3/2) Electroionization Subshell Energy Spectra', (26, 562): 'P4 (6d3/2) Electroionization Subshell Energy Spectra', (26, 563): 'P5 (6d5/2) Electroionization Subshell Energy Spectra', (26, 564): 'P6 (6f5/2) Electroionization Subshell Energy Spectra', (26, 565): 'P7 (6f7/2) Electroionization Subshell Energy Spectra', (26, 566): 'P8 (6g7/2) Electroionization Subshell Energy Spectra', (26, 567): 'P9 (6g9/2) Electroionization Subshell Energy Spectra', (26, 568): 'P10 (6h7/2) Electroionization Subshell Energy Spectra', (26, 569): 'P11 (6h9/2) Electroionization Subshell Energy Spectra', (26, 570): 'Q1 (7s1/2) Electroionization Subshell Energy Spectra', (26, 571): 'Q2 (7p1/2) Electroionization Subshell Energy Spectra', (26, 572): 'Q3 (7p3/2) Electroionization Subshell Energy Spectra'}
Backward-compatible alias for
ELECTRON_MF_MT.
- pyepics.utils.constants.ELECTRON_SECTIONS_ABBREVS: dict[tuple[int, int], str] = {(1, 451): 'general_info', (23, 501): 'xs_tot', (23, 522): 'xs_ion', (23, 525): 'xs_lge', (23, 526): 'xs_el', (23, 527): 'xs_brem', (23, 528): 'xs_exc', (23, 534): 'xs_K', (23, 535): 'xs_L1', (23, 536): 'xs_L2', (23, 537): 'xs_L3', (23, 538): 'xs_M1', (23, 539): 'xs_M2', (23, 540): 'xs_M3', (23, 541): 'xs_M4', (23, 542): 'xs_M5', (23, 543): 'xs_N1', (23, 544): 'xs_N2', (23, 545): 'xs_N3', (23, 546): 'xs_N4', (23, 547): 'xs_N5', (23, 548): 'xs_N6', (23, 549): 'xs_N7', (23, 550): 'xs_O1', (23, 551): 'xs_O2', (23, 552): 'xs_O3', (23, 553): 'xs_O4', (23, 554): 'xs_O5', (23, 555): 'xs_O6', (23, 556): 'xs_O7', (23, 557): 'xs_O8', (23, 558): 'xs_O9', (23, 559): 'xs_P1', (23, 560): 'xs_P2', (23, 561): 'xs_P3', (23, 562): 'xs_P4', (23, 563): 'xs_P5', (23, 564): 'xs_P6', (23, 565): 'xs_P7', (23, 566): 'xs_P8', (23, 567): 'xs_P9', (23, 568): 'xs_P10', (23, 569): 'xs_P11', (23, 570): 'xs_Q1', (23, 571): 'xs_Q2', (23, 572): 'xs_Q3', (26, 525): 'ang_lge', (26, 527): 'loss_brem_spec', (26, 528): 'loss_exc', (26, 534): 'spec_K', (26, 535): 'spec_L1', (26, 536): 'spec_L2', (26, 537): 'spec_L3', (26, 538): 'spec_M1', (26, 539): 'spec_M2', (26, 540): 'spec_M3', (26, 541): 'spec_M4', (26, 542): 'spec_M5', (26, 543): 'spec_N1', (26, 544): 'spec_N2', (26, 545): 'spec_N3', (26, 546): 'spec_N4', (26, 547): 'spec_N5', (26, 548): 'spec_N6', (26, 549): 'spec_N7', (26, 550): 'spec_O1', (26, 551): 'spec_O2', (26, 552): 'spec_O3', (26, 553): 'spec_O4', (26, 554): 'spec_O5', (26, 555): 'spec_O6', (26, 556): 'spec_O7', (26, 557): 'spec_O8', (26, 558): 'spec_O9', (26, 559): 'spec_P1', (26, 560): 'spec_P2', (26, 561): 'spec_P3', (26, 562): 'spec_P4', (26, 563): 'spec_P5', (26, 564): 'spec_P6', (26, 565): 'spec_P7', (26, 566): 'spec_P8', (26, 567): 'spec_P9', (26, 568): 'spec_P10', (26, 569): 'spec_P11', (26, 570): 'spec_Q1', (26, 571): 'spec_Q2', (26, 572): 'spec_Q3'}
Short mnemonic abbreviations for each EEDL (MF, MT) section.
- pyepics.utils.constants.SECTIONS_ABBREVS = {(1, 451): 'general_info', (23, 501): 'xs_tot', (23, 522): 'xs_ion', (23, 525): 'xs_lge', (23, 526): 'xs_el', (23, 527): 'xs_brem', (23, 528): 'xs_exc', (23, 534): 'xs_K', (23, 535): 'xs_L1', (23, 536): 'xs_L2', (23, 537): 'xs_L3', (23, 538): 'xs_M1', (23, 539): 'xs_M2', (23, 540): 'xs_M3', (23, 541): 'xs_M4', (23, 542): 'xs_M5', (23, 543): 'xs_N1', (23, 544): 'xs_N2', (23, 545): 'xs_N3', (23, 546): 'xs_N4', (23, 547): 'xs_N5', (23, 548): 'xs_N6', (23, 549): 'xs_N7', (23, 550): 'xs_O1', (23, 551): 'xs_O2', (23, 552): 'xs_O3', (23, 553): 'xs_O4', (23, 554): 'xs_O5', (23, 555): 'xs_O6', (23, 556): 'xs_O7', (23, 557): 'xs_O8', (23, 558): 'xs_O9', (23, 559): 'xs_P1', (23, 560): 'xs_P2', (23, 561): 'xs_P3', (23, 562): 'xs_P4', (23, 563): 'xs_P5', (23, 564): 'xs_P6', (23, 565): 'xs_P7', (23, 566): 'xs_P8', (23, 567): 'xs_P9', (23, 568): 'xs_P10', (23, 569): 'xs_P11', (23, 570): 'xs_Q1', (23, 571): 'xs_Q2', (23, 572): 'xs_Q3', (26, 525): 'ang_lge', (26, 527): 'loss_brem_spec', (26, 528): 'loss_exc', (26, 534): 'spec_K', (26, 535): 'spec_L1', (26, 536): 'spec_L2', (26, 537): 'spec_L3', (26, 538): 'spec_M1', (26, 539): 'spec_M2', (26, 540): 'spec_M3', (26, 541): 'spec_M4', (26, 542): 'spec_M5', (26, 543): 'spec_N1', (26, 544): 'spec_N2', (26, 545): 'spec_N3', (26, 546): 'spec_N4', (26, 547): 'spec_N5', (26, 548): 'spec_N6', (26, 549): 'spec_N7', (26, 550): 'spec_O1', (26, 551): 'spec_O2', (26, 552): 'spec_O3', (26, 553): 'spec_O4', (26, 554): 'spec_O5', (26, 555): 'spec_O6', (26, 556): 'spec_O7', (26, 557): 'spec_O8', (26, 558): 'spec_O9', (26, 559): 'spec_P1', (26, 560): 'spec_P2', (26, 561): 'spec_P3', (26, 562): 'spec_P4', (26, 563): 'spec_P5', (26, 564): 'spec_P6', (26, 565): 'spec_P7', (26, 566): 'spec_P8', (26, 567): 'spec_P9', (26, 568): 'spec_P10', (26, 569): 'spec_P11', (26, 570): 'spec_Q1', (26, 571): 'spec_Q2', (26, 572): 'spec_Q3'}
Backward-compatible alias for
ELECTRON_SECTIONS_ABBREVS.