Fit templates
A template is a YAML file with one or more regions. It is validated before any fitting happens, so a typo fails with a precise message instead of a strange fit.
name: Te3d # used in reports and file names
version: "1"
description: Tellurium 3d: telluride / Te0 and Te(IV) oxide doublets.
source: Moulder et al. 1992; NIST SRD 20 # where the numbers come from, in words
references: [moulder1992, nist_srd20] # bibliography keys (elements/data/bibliography.yaml)
regions:
- label: Te 3d # matched against spectrum labels ("Te 3d", "Te3d")
element: Te
orbital: 3d
window: [568.0, 592.0] # binding-energy range that is fitted (eV)
background: shirley # shirley | tougaard | linear | active_shirley | none
background_params: {} # e.g. {fit_B: true} for tougaard, {n_avg: 7} for shirley
lineshape: pseudo_voigt # default for components: pseudo_voigt | gl_product | voigt |
# gaussian | lorentzian | doniach_sunjic | exp_tail
default_shape:
eta: {value: 0.3, min: 0.1, max: 0.7} # shape parameters shared by default
fwhm_tolerance: 0.15 # optional: every width within ±15 % of the first component's
rsf_line: Te 3d5/2 # line whose (whole-doublet) sensitivity factor is used
components:
- name: Te-M
chemical_state: telluride / metallic Te
provenance: {source: bahl1978, method: literature} # see docs/constraints.md
center: {value: 572.8, min: 571.8, max: 573.6}
fwhm: {value: 1.0, min: 0.6, max: 1.6}
area: {min: 0} # initial area is guessed from the data
doublet:
splitting: 10.39 # minor line at center + splitting
ratio: 0.6667 # minor / major area
splitting_vary: false # optionally free within ±splitting_tolerance
share_fwhm: true
- name: Te(IV)
enabled: true # disabled components are kept but not fitted
center: {expr: "{Te-M.center} + 3.3"} # tie to another component
fwhm: {expr: "{Te-M.fwhm} * 1.25"}
doublet: {splitting: 10.39, ratio: 0.6667}
Parameters
Each of center, fwhm, area and the shape parameters takes value, min, max,
vary and expr. An expr uses lmfit syntax, where {Component.param} refers to another
component's parameter. Expressions are resolved after all components are created, so forward
references work.
Lineshapes and their shape parameters
| lineshape | parameters | notes |
|---|---|---|
pseudo_voigt |
eta |
sum form, eta = Lorentzian fraction |
gl_product |
m |
product GL(m); true FWHM equals fwhm for every m |
voigt |
— | true Voigt via the Faddeeva function |
doniach_sunjic |
asymmetry, fwhm_g |
metals; Gaussian-broadened; area over ±25 FWHM |
exp_tail |
eta, tail_scale, tail_mix |
pseudo-Voigt with an exponential high-BE tail |
Getting a starting template
xpsflow propose data/sample.vms "sample/Se 3d" --out templates/Se3d_mine.yaml
This proposes components from the detected peaks and assigns them to literature chemical states
that are plausible for the elements found on the sample. Edit it, then run with
xpsflow run data/ --template templates/Se3d_mine.yaml.
Provenance
Every component may carry provenance: {source, method, note}. source is a bibliography key;
method is one of literature, instrument, user, data or default. Components without a
block inherit the region's provenance, then the template's first reference. Components xpsflow
proposes itself are marked data. The report prints the full table; see docs/constraints.md.
Reproducibility
Every run writes the exact regions it used, after model selection, to templates/ next to the
report, so the analysis can be repeated or reviewed without the original session.