Skip to content

Python: shape factories

spectrafit_core.compose exposes 36 shape-factory functions used to build a fit graph declaratively (via compose(...)) or directly. They are importable from the top-level package (from spectrafit_core import gaussian) or from spectrafit_core.compose, but are intentionally excluded from __all__ so that from spectrafit_core import * stays narrow to the core API. See the model formula reference for the mathematical definition of each shape.

Peak shapes

spectrafit_core.compose.gaussian(id, *, dataset_index=None, **params)

Build a Gaussian peak node.

\[ A \exp\left(-\frac{1}{2}\left(\frac{x-c}{\sigma}\right)^2\right) \]

Required params: amplitude (or a), center (or c), sigma (or s). Bound suffixes (a_min=, sigma_max=, …) propagate to the underlying Parameter.

Parameters:

Name Type Description Default
id str

Unique node identifier within the graph.

required
dataset_index int | None

Forwarded to ModelNodeSpec.dataset_index; None (default) marks a global node contributing to every dataset, or an integer scopes the node to that dataset.

None
**params ParamKwarg

Required keyword values for amplitude, center, sigma. Each name also accepts a <param>_min / _max / _vary / _expr / _scale suffix to populate that Parameter field (e.g. amplitude_min=0.0); the a/c/s shorthand described in the module docstring applies wherever amplitude/center/sigma appear above.

{}

Returns:

Type Description
ModelNodeSpec

A validated ModelNodeSpec for this node.

Raises:

Type Description
TypeError

If a required parameter has no value, or a kwarg does not map to a canonical parameter name (or accepted shorthand/suffix).

spectrafit_core.compose.lorentzian(id, *, dataset_index=None, **params)

Build a Lorentzian peak node.

\[ \frac{A}{1 + \left(\frac{x-c}{\sigma}\right)^2} \]

Parameters:

Name Type Description Default
id str

Unique node identifier within the graph.

required
dataset_index int | None

Forwarded to ModelNodeSpec.dataset_index; None (default) marks a global node contributing to every dataset, or an integer scopes the node to that dataset.

None
**params ParamKwarg

Required keyword values for amplitude, center, sigma. Each name also accepts a <param>_min / _max / _vary / _expr / _scale suffix to populate that Parameter field (e.g. amplitude_min=0.0); the a/c/s shorthand described in the module docstring applies wherever amplitude/center/sigma appear above.

{}

Returns:

Type Description
ModelNodeSpec

A validated ModelNodeSpec for this node.

Raises:

Type Description
TypeError

If a required parameter has no value, or a kwarg does not map to a canonical parameter name (or accepted shorthand/suffix).

spectrafit_core.compose.voigt(id, *, dataset_index=None, **params)

Build a Voigt (pseudo-Voigt alias) node.

Required params: amplitude, center, sigma, fraction.

Parameters:

Name Type Description Default
id str

Unique node identifier within the graph.

required
dataset_index int | None

Forwarded to ModelNodeSpec.dataset_index; None (default) marks a global node contributing to every dataset, or an integer scopes the node to that dataset.

None
**params ParamKwarg

Required keyword values for amplitude, center, sigma, fraction. Each name also accepts a <param>_min / _max / _vary / _expr / _scale suffix to populate that Parameter field (e.g. amplitude_min=0.0); the a/c/s shorthand described in the module docstring applies wherever amplitude/center/sigma appear above.

{}

Returns:

Type Description
ModelNodeSpec

A validated ModelNodeSpec for this node.

Raises:

Type Description
TypeError

If a required parameter has no value, or a kwarg does not map to a canonical parameter name (or accepted shorthand/suffix).

spectrafit_core.compose.true_voigt(id, *, dataset_index=None, **params)

Build a true Voigt (Faddeeva) node.

Combines a Gaussian \(\sigma\) with a Lorentzian \(\gamma\).

Parameters:

Name Type Description Default
id str

Unique node identifier within the graph.

required
dataset_index int | None

Forwarded to ModelNodeSpec.dataset_index; None (default) marks a global node contributing to every dataset, or an integer scopes the node to that dataset.

None
**params ParamKwarg

Required keyword values for amplitude, center, sigma, gamma. Each name also accepts a <param>_min / _max / _vary / _expr / _scale suffix to populate that Parameter field (e.g. amplitude_min=0.0); the a/c/s shorthand described in the module docstring applies wherever amplitude/center/sigma appear above.

{}

Returns:

Type Description
ModelNodeSpec

A validated ModelNodeSpec for this node.

Raises:

Type Description
TypeError

If a required parameter has no value, or a kwarg does not map to a canonical parameter name (or accepted shorthand/suffix).

spectrafit_core.compose.pseudo_voigt(id, *, dataset_index=None, **params)

Build a pseudo-Voigt node.

\[ \eta \cdot L + (1-\eta) \cdot G, \quad \eta = \text{fraction} \]

Parameters:

Name Type Description Default
id str

Unique node identifier within the graph.

required
dataset_index int | None

Forwarded to ModelNodeSpec.dataset_index; None (default) marks a global node contributing to every dataset, or an integer scopes the node to that dataset.

None
**params ParamKwarg

Required keyword values for amplitude, center, sigma, fraction. Each name also accepts a <param>_min / _max / _vary / _expr / _scale suffix to populate that Parameter field (e.g. amplitude_min=0.0); the a/c/s shorthand described in the module docstring applies wherever amplitude/center/sigma appear above.

{}

Returns:

Type Description
ModelNodeSpec

A validated ModelNodeSpec for this node.

Raises:

Type Description
TypeError

If a required parameter has no value, or a kwarg does not map to a canonical parameter name (or accepted shorthand/suffix).

spectrafit_core.compose.pearson7(id, *, dataset_index=None, **params)

Build a Pearson VII node (shape exponent m).

Parameters:

Name Type Description Default
id str

Unique node identifier within the graph.

required
dataset_index int | None

Forwarded to ModelNodeSpec.dataset_index; None (default) marks a global node contributing to every dataset, or an integer scopes the node to that dataset.

None
**params ParamKwarg

Required keyword values for amplitude, center, sigma, m. Each name also accepts a <param>_min / _max / _vary / _expr / _scale suffix to populate that Parameter field (e.g. amplitude_min=0.0); the a/c/s shorthand described in the module docstring applies wherever amplitude/center/sigma appear above.

{}

Returns:

Type Description
ModelNodeSpec

A validated ModelNodeSpec for this node.

Raises:

Type Description
TypeError

If a required parameter has no value, or a kwarg does not map to a canonical parameter name (or accepted shorthand/suffix).

spectrafit_core.compose.split_pearson7(id, *, dataset_index=None, **params)

Build a split Pearson VII node (split width + exponent each side).

Parameters:

Name Type Description Default
id str

Unique node identifier within the graph.

required
dataset_index int | None

Forwarded to ModelNodeSpec.dataset_index; None (default) marks a global node contributing to every dataset, or an integer scopes the node to that dataset.

None
**params ParamKwarg

Required keyword values for amplitude, center, sigma_l, sigma_r, m_l, m_r. Each name also accepts a <param>_min / _max / _vary / _expr / _scale suffix to populate that Parameter field (e.g. amplitude_min=0.0); the a/c/s shorthand described in the module docstring applies wherever amplitude/center/sigma appear above.

{}

Returns:

Type Description
ModelNodeSpec

A validated ModelNodeSpec for this node.

Raises:

Type Description
TypeError

If a required parameter has no value, or a kwarg does not map to a canonical parameter name (or accepted shorthand/suffix).

spectrafit_core.compose.moffat(id, *, dataset_index=None, **params)

Build a Moffat node.

\[ \frac{A}{\left(\left(\frac{x-c}{\sigma}\right)^2+1\right)^\beta} \]

Parameters:

Name Type Description Default
id str

Unique node identifier within the graph.

required
dataset_index int | None

Forwarded to ModelNodeSpec.dataset_index; None (default) marks a global node contributing to every dataset, or an integer scopes the node to that dataset.

None
**params ParamKwarg

Required keyword values for amplitude, center, sigma, beta. Each name also accepts a <param>_min / _max / _vary / _expr / _scale suffix to populate that Parameter field (e.g. amplitude_min=0.0); the a/c/s shorthand described in the module docstring applies wherever amplitude/center/sigma appear above.

{}

Returns:

Type Description
ModelNodeSpec

A validated ModelNodeSpec for this node.

Raises:

Type Description
TypeError

If a required parameter has no value, or a kwarg does not map to a canonical parameter name (or accepted shorthand/suffix).

spectrafit_core.compose.students_t(id, *, dataset_index=None, **params)

Build a Student's-t node (degrees-of-freedom nu).

Parameters:

Name Type Description Default
id str

Unique node identifier within the graph.

required
dataset_index int | None

Forwarded to ModelNodeSpec.dataset_index; None (default) marks a global node contributing to every dataset, or an integer scopes the node to that dataset.

None
**params ParamKwarg

Required keyword values for amplitude, center, sigma, nu. Each name also accepts a <param>_min / _max / _vary / _expr / _scale suffix to populate that Parameter field (e.g. amplitude_min=0.0); the a/c/s shorthand described in the module docstring applies wherever amplitude/center/sigma appear above.

{}

Returns:

Type Description
ModelNodeSpec

A validated ModelNodeSpec for this node.

Raises:

Type Description
TypeError

If a required parameter has no value, or a kwarg does not map to a canonical parameter name (or accepted shorthand/suffix).

spectrafit_core.compose.fano(id, *, dataset_index=None, **params)

Build a Fano resonance node.

\[ A \frac{(q+\epsilon)^2}{1+\epsilon^2}, \quad \epsilon = \frac{x-c}{\gamma} \]

Parameters:

Name Type Description Default
id str

Unique node identifier within the graph.

required
dataset_index int | None

Forwarded to ModelNodeSpec.dataset_index; None (default) marks a global node contributing to every dataset, or an integer scopes the node to that dataset.

None
**params ParamKwarg

Required keyword values for amplitude, center, gamma, q. Each name also accepts a <param>_min / _max / _vary / _expr / _scale suffix to populate that Parameter field (e.g. amplitude_min=0.0); the a/c/s shorthand described in the module docstring applies wherever amplitude/center/sigma appear above.

{}

Returns:

Type Description
ModelNodeSpec

A validated ModelNodeSpec for this node.

Raises:

Type Description
TypeError

If a required parameter has no value, or a kwarg does not map to a canonical parameter name (or accepted shorthand/suffix).

spectrafit_core.compose.breit_wigner(id, *, dataset_index=None, **params)

Build a Breit-Wigner-Fano node.

Parameters:

Name Type Description Default
id str

Unique node identifier within the graph.

required
dataset_index int | None

Forwarded to ModelNodeSpec.dataset_index; None (default) marks a global node contributing to every dataset, or an integer scopes the node to that dataset.

None
**params ParamKwarg

Required keyword values for amplitude, center, sigma, q. Each name also accepts a <param>_min / _max / _vary / _expr / _scale suffix to populate that Parameter field (e.g. amplitude_min=0.0); the a/c/s shorthand described in the module docstring applies wherever amplitude/center/sigma appear above.

{}

Returns:

Type Description
ModelNodeSpec

A validated ModelNodeSpec for this node.

Raises:

Type Description
TypeError

If a required parameter has no value, or a kwarg does not map to a canonical parameter name (or accepted shorthand/suffix).

spectrafit_core.compose.skewed_gaussian(id, *, dataset_index=None, **params)

Build a skewed Gaussian node (\(\gamma\) = skew).

Parameters:

Name Type Description Default
id str

Unique node identifier within the graph.

required
dataset_index int | None

Forwarded to ModelNodeSpec.dataset_index; None (default) marks a global node contributing to every dataset, or an integer scopes the node to that dataset.

None
**params ParamKwarg

Required keyword values for amplitude, center, sigma, gamma. Each name also accepts a <param>_min / _max / _vary / _expr / _scale suffix to populate that Parameter field (e.g. amplitude_min=0.0); the a/c/s shorthand described in the module docstring applies wherever amplitude/center/sigma appear above.

{}

Returns:

Type Description
ModelNodeSpec

A validated ModelNodeSpec for this node.

Raises:

Type Description
TypeError

If a required parameter has no value, or a kwarg does not map to a canonical parameter name (or accepted shorthand/suffix).

spectrafit_core.compose.split_gaussian(id, *, dataset_index=None, **params)

Build a split-\(\sigma\) asymmetric Gaussian node (sigma_l, sigma_r).

Parameters:

Name Type Description Default
id str

Unique node identifier within the graph.

required
dataset_index int | None

Forwarded to ModelNodeSpec.dataset_index; None (default) marks a global node contributing to every dataset, or an integer scopes the node to that dataset.

None
**params ParamKwarg

Required keyword values for amplitude, center, sigma_l, sigma_r. Each name also accepts a <param>_min / _max / _vary / _expr / _scale suffix to populate that Parameter field (e.g. amplitude_min=0.0); the a/c/s shorthand described in the module docstring applies wherever amplitude/center/sigma appear above.

{}

Returns:

Type Description
ModelNodeSpec

A validated ModelNodeSpec for this node.

Raises:

Type Description
TypeError

If a required parameter has no value, or a kwarg does not map to a canonical parameter name (or accepted shorthand/suffix).

spectrafit_core.compose.exp_gaussian(id, *, dataset_index=None, **params)

Build an exponentially-modified Gaussian (EMG) node.

Parameters:

Name Type Description Default
id str

Unique node identifier within the graph.

required
dataset_index int | None

Forwarded to ModelNodeSpec.dataset_index; None (default) marks a global node contributing to every dataset, or an integer scopes the node to that dataset.

None
**params ParamKwarg

Required keyword values for amplitude, center, sigma, gamma. Each name also accepts a <param>_min / _max / _vary / _expr / _scale suffix to populate that Parameter field (e.g. amplitude_min=0.0); the a/c/s shorthand described in the module docstring applies wherever amplitude/center/sigma appear above.

{}

Returns:

Type Description
ModelNodeSpec

A validated ModelNodeSpec for this node.

Raises:

Type Description
TypeError

If a required parameter has no value, or a kwarg does not map to a canonical parameter name (or accepted shorthand/suffix).

spectrafit_core.compose.doniach_sunjic(id, *, dataset_index=None, **params)

Build a Doniach–Šunjić node (\(\gamma\) = asymmetry).

Parameters:

Name Type Description Default
id str

Unique node identifier within the graph.

required
dataset_index int | None

Forwarded to ModelNodeSpec.dataset_index; None (default) marks a global node contributing to every dataset, or an integer scopes the node to that dataset.

None
**params ParamKwarg

Required keyword values for amplitude, center, sigma, gamma. Each name also accepts a <param>_min / _max / _vary / _expr / _scale suffix to populate that Parameter field (e.g. amplitude_min=0.0); the a/c/s shorthand described in the module docstring applies wherever amplitude/center/sigma appear above.

{}

Returns:

Type Description
ModelNodeSpec

A validated ModelNodeSpec for this node.

Raises:

Type Description
TypeError

If a required parameter has no value, or a kwarg does not map to a canonical parameter name (or accepted shorthand/suffix).

spectrafit_core.compose.asym_ir(id, *, dataset_index=None, **params)

Build an asymmetric IR band node (sigmoid asymmetry k).

Parameters:

Name Type Description Default
id str

Unique node identifier within the graph.

required
dataset_index int | None

Forwarded to ModelNodeSpec.dataset_index; None (default) marks a global node contributing to every dataset, or an integer scopes the node to that dataset.

None
**params ParamKwarg

Required keyword values for amplitude, center, sigma, k. Each name also accepts a <param>_min / _max / _vary / _expr / _scale suffix to populate that Parameter field (e.g. amplitude_min=0.0); the a/c/s shorthand described in the module docstring applies wherever amplitude/center/sigma appear above.

{}

Returns:

Type Description
ModelNodeSpec

A validated ModelNodeSpec for this node.

Raises:

Type Description
TypeError

If a required parameter has no value, or a kwarg does not map to a canonical parameter name (or accepted shorthand/suffix).

spectrafit_core.compose.gaussian2d(id, *, dataset_index=None, **params)

Build a 2-D Gaussian node.

Required params: amplitude, center_x, center_y, sigma_x, sigma_y.

Parameters:

Name Type Description Default
id str

Unique node identifier within the graph.

required
dataset_index int | None

Forwarded to ModelNodeSpec.dataset_index; None (default) marks a global node contributing to every dataset, or an integer scopes the node to that dataset.

None
**params ParamKwarg

Required keyword values for amplitude, center_x, center_y, sigma_x, sigma_y. Each name also accepts a <param>_min / _max / _vary / _expr / _scale suffix to populate that Parameter field (e.g. amplitude_min=0.0); the a/c/s shorthand described in the module docstring applies wherever amplitude/center/sigma appear above.

{}

Returns:

Type Description
ModelNodeSpec

A validated ModelNodeSpec for this node.

Raises:

Type Description
TypeError

If a required parameter has no value, or a kwarg does not map to a canonical parameter name (or accepted shorthand/suffix).

Baselines and steps

spectrafit_core.compose.constant(id, *, dataset_index=None, **params)

Build a constant background node.

Required param: c (the constant value). Note c here is the canonical param name, not a shorthand for center.

Parameters:

Name Type Description Default
id str

Unique node identifier within the graph.

required
dataset_index int | None

Forwarded to ModelNodeSpec.dataset_index; None (default) marks a global node contributing to every dataset, or an integer scopes the node to that dataset.

None
**params ParamKwarg

Required keyword values for c. Each name also accepts a <param>_min / _max / _vary / _expr / _scale suffix to populate that Parameter field (e.g. c_min=0.0).

{}

Returns:

Type Description
ModelNodeSpec

A validated ModelNodeSpec for this node.

Raises:

Type Description
TypeError

If a required parameter has no value, or a kwarg does not map to a canonical parameter name (or accepted shorthand/suffix).

spectrafit_core.compose.linear(id, *, dataset_index=None, **params)

Build a linear background node.

\[ \text{slope} \cdot x + \text{intercept} \]

Parameters:

Name Type Description Default
id str

Unique node identifier within the graph.

required
dataset_index int | None

Forwarded to ModelNodeSpec.dataset_index; None (default) marks a global node contributing to every dataset, or an integer scopes the node to that dataset.

None
**params ParamKwarg

Required keyword values for slope, intercept. Each name also accepts a <param>_min / _max / _vary / _expr / _scale suffix to populate that Parameter field (e.g. slope_min=0.0).

{}

Returns:

Type Description
ModelNodeSpec

A validated ModelNodeSpec for this node.

Raises:

Type Description
TypeError

If a required parameter has no value, or a kwarg does not map to a canonical parameter name (or accepted shorthand/suffix).

spectrafit_core.compose.quadratic(id, *, dataset_index=None, **params)

Build a quadratic bowl node.

\[ A (x-c)^2 + \text{offset} \]

Parameters:

Name Type Description Default
id str

Unique node identifier within the graph.

required
dataset_index int | None

Forwarded to ModelNodeSpec.dataset_index; None (default) marks a global node contributing to every dataset, or an integer scopes the node to that dataset.

None
**params ParamKwarg

Required keyword values for amplitude, center, offset. Each name also accepts a <param>_min / _max / _vary / _expr / _scale suffix to populate that Parameter field (e.g. amplitude_min=0.0); the a/c/s shorthand described in the module docstring applies wherever amplitude/center/sigma appear above.

{}

Returns:

Type Description
ModelNodeSpec

A validated ModelNodeSpec for this node.

Raises:

Type Description
TypeError

If a required parameter has no value, or a kwarg does not map to a canonical parameter name (or accepted shorthand/suffix).

spectrafit_core.compose.arctan_step(id, *, dataset_index=None, **params)

Build an arctan edge node.

\[ A \left(\frac{1}{2} + \frac{1}{\pi} \arctan\left(\frac{x-c}{\sigma}\right)\right) \]

Parameters:

Name Type Description Default
id str

Unique node identifier within the graph.

required
dataset_index int | None

Forwarded to ModelNodeSpec.dataset_index; None (default) marks a global node contributing to every dataset, or an integer scopes the node to that dataset.

None
**params ParamKwarg

Required keyword values for amplitude, center, sigma. Each name also accepts a <param>_min / _max / _vary / _expr / _scale suffix to populate that Parameter field (e.g. amplitude_min=0.0); the a/c/s shorthand described in the module docstring applies wherever amplitude/center/sigma appear above.

{}

Returns:

Type Description
ModelNodeSpec

A validated ModelNodeSpec for this node.

Raises:

Type Description
TypeError

If a required parameter has no value, or a kwarg does not map to a canonical parameter name (or accepted shorthand/suffix).

spectrafit_core.compose.tanh_step(id, *, dataset_index=None, **params)

Build a tanh edge node.

\[ \frac{A}{2} \left(1 + \tanh\left(\frac{x-c}{\sigma}\right)\right) \]

Parameters:

Name Type Description Default
id str

Unique node identifier within the graph.

required
dataset_index int | None

Forwarded to ModelNodeSpec.dataset_index; None (default) marks a global node contributing to every dataset, or an integer scopes the node to that dataset.

None
**params ParamKwarg

Required keyword values for amplitude, center, sigma. Each name also accepts a <param>_min / _max / _vary / _expr / _scale suffix to populate that Parameter field (e.g. amplitude_min=0.0); the a/c/s shorthand described in the module docstring applies wherever amplitude/center/sigma appear above.

{}

Returns:

Type Description
ModelNodeSpec

A validated ModelNodeSpec for this node.

Raises:

Type Description
TypeError

If a required parameter has no value, or a kwarg does not map to a canonical parameter name (or accepted shorthand/suffix).

spectrafit_core.compose.erfc_step(id, *, dataset_index=None, **params)

Build an erfc edge node.

\[ \frac{A}{2} \operatorname{erfc}\left(\frac{x-c}{\sigma\sqrt{2}}\right) \]

Parameters:

Name Type Description Default
id str

Unique node identifier within the graph.

required
dataset_index int | None

Forwarded to ModelNodeSpec.dataset_index; None (default) marks a global node contributing to every dataset, or an integer scopes the node to that dataset.

None
**params ParamKwarg

Required keyword values for amplitude, center, sigma. Each name also accepts a <param>_min / _max / _vary / _expr / _scale suffix to populate that Parameter field (e.g. amplitude_min=0.0); the a/c/s shorthand described in the module docstring applies wherever amplitude/center/sigma appear above.

{}

Returns:

Type Description
ModelNodeSpec

A validated ModelNodeSpec for this node.

Raises:

Type Description
TypeError

If a required parameter has no value, or a kwarg does not map to a canonical parameter name (or accepted shorthand/suffix).

Kinetics and dispersion

spectrafit_core.compose.double_exponential(id, *, dataset_index=None, **params)

Build a bi-exponential decay node.

\[ A_1 \exp(-\lambda_1 x) + A_2 \exp(-\lambda_2 x) \]

Parameters:

Name Type Description Default
id str

Unique node identifier within the graph.

required
dataset_index int | None

Forwarded to ModelNodeSpec.dataset_index; None (default) marks a global node contributing to every dataset, or an integer scopes the node to that dataset.

None
**params ParamKwarg

Required keyword values for A1, lam1, A2, lam2. Each name also accepts a <param>_min / _max / _vary / _expr / _scale suffix to populate that Parameter field (e.g. A1_min=0.0).

{}

Returns:

Type Description
ModelNodeSpec

A validated ModelNodeSpec for this node.

Raises:

Type Description
TypeError

If a required parameter has no value, or a kwarg does not map to a canonical parameter name (or accepted shorthand/suffix).

spectrafit_core.compose.kww(id, *, dataset_index=None, **params)

Build a KWW stretched-exponential node.

\[ A \exp\left(-(x/\tau)^\beta\right) \]

Parameters:

Name Type Description Default
id str

Unique node identifier within the graph.

required
dataset_index int | None

Forwarded to ModelNodeSpec.dataset_index; None (default) marks a global node contributing to every dataset, or an integer scopes the node to that dataset.

None
**params ParamKwarg

Required keyword values for amplitude, tau, beta. Each name also accepts a <param>_min / _max / _vary / _expr / _scale suffix to populate that Parameter field (e.g. amplitude_min=0.0); the a/c/s shorthand described in the module docstring applies wherever amplitude/center/sigma appear above.

{}

Returns:

Type Description
ModelNodeSpec

A validated ModelNodeSpec for this node.

Raises:

Type Description
TypeError

If a required parameter has no value, or a kwarg does not map to a canonical parameter name (or accepted shorthand/suffix).

spectrafit_core.compose.log_normal(id, *, dataset_index=None, **params)

Build a log-normal peak node.

\[ A \exp\left(-\frac{(\ln(x/c))^2}{2\sigma^2}\right) \]

Parameters:

Name Type Description Default
id str

Unique node identifier within the graph.

required
dataset_index int | None

Forwarded to ModelNodeSpec.dataset_index; None (default) marks a global node contributing to every dataset, or an integer scopes the node to that dataset.

None
**params ParamKwarg

Required keyword values for amplitude, center, sigma. Each name also accepts a <param>_min / _max / _vary / _expr / _scale suffix to populate that Parameter field (e.g. amplitude_min=0.0); the a/c/s shorthand described in the module docstring applies wherever amplitude/center/sigma appear above.

{}

Returns:

Type Description
ModelNodeSpec

A validated ModelNodeSpec for this node.

Raises:

Type Description
TypeError

If a required parameter has no value, or a kwarg does not map to a canonical parameter name (or accepted shorthand/suffix).

spectrafit_core.compose.harmonic_ir(id, *, dataset_index=None, **params)

Build a harmonic-oscillator IR band node.

Parameters:

Name Type Description Default
id str

Unique node identifier within the graph.

required
dataset_index int | None

Forwarded to ModelNodeSpec.dataset_index; None (default) marks a global node contributing to every dataset, or an integer scopes the node to that dataset.

None
**params ParamKwarg

Required keyword values for amplitude, center, sigma. Each name also accepts a <param>_min / _max / _vary / _expr / _scale suffix to populate that Parameter field (e.g. amplitude_min=0.0); the a/c/s shorthand described in the module docstring applies wherever amplitude/center/sigma appear above.

{}

Returns:

Type Description
ModelNodeSpec

A validated ModelNodeSpec for this node.

Raises:

Type Description
TypeError

If a required parameter has no value, or a kwarg does not map to a canonical parameter name (or accepted shorthand/suffix).

spectrafit_core.compose.tauc(id, *, dataset_index=None, **params)

Build a Tauc band-gap edge node (e_gap, exponent).

Parameters:

Name Type Description Default
id str

Unique node identifier within the graph.

required
dataset_index int | None

Forwarded to ModelNodeSpec.dataset_index; None (default) marks a global node contributing to every dataset, or an integer scopes the node to that dataset.

None
**params ParamKwarg

Required keyword values for amplitude, e_gap, exponent. Each name also accepts a <param>_min / _max / _vary / _expr / _scale suffix to populate that Parameter field (e.g. amplitude_min=0.0); the a/c/s shorthand described in the module docstring applies wherever amplitude/center/sigma appear above.

{}

Returns:

Type Description
ModelNodeSpec

A validated ModelNodeSpec for this node.

Raises:

Type Description
TypeError

If a required parameter has no value, or a kwarg does not map to a canonical parameter name (or accepted shorthand/suffix).

spectrafit_core.compose.cauchy_dispersion(id, *, dataset_index=None, **params)

Build a Cauchy dispersion node.

\[ a + \frac{b}{x^2} + \frac{c}{x^4} \]

Note a, b, c here are the canonical Cauchy coefficients, not the a/c shorthand (the shorthand only applies to models that carry amplitude/center/sigma).

Parameters:

Name Type Description Default
id str

Unique node identifier within the graph.

required
dataset_index int | None

Forwarded to ModelNodeSpec.dataset_index; None (default) marks a global node contributing to every dataset, or an integer scopes the node to that dataset.

None
**params ParamKwarg

Required keyword values for a, b, c. Each name also accepts a <param>_min / _max / _vary / _expr / _scale suffix to populate that Parameter field (e.g. a_min=0.0).

{}

Returns:

Type Description
ModelNodeSpec

A validated ModelNodeSpec for this node.

Raises:

Type Description
TypeError

If a required parameter has no value, or a kwarg does not map to a canonical parameter name (or accepted shorthand/suffix).

Saturation and rational models

spectrafit_core.compose.saturating_exponential(id, *, dataset_index=None, **params)

Build a saturating-exponential node (BoxBOD).

\[ \text{amplitude} \left(1 - \exp(-\text{rate} \cdot x)\right) \]

Parameters:

Name Type Description Default
id str

Unique node identifier within the graph.

required
dataset_index int | None

Forwarded to ModelNodeSpec.dataset_index; None (default) marks a global node contributing to every dataset, or an integer scopes the node to that dataset.

None
**params ParamKwarg

Required keyword values for amplitude, rate. Each name also accepts a <param>_min / _max / _vary / _expr / _scale suffix to populate that Parameter field (e.g. amplitude_min=0.0); the a/c/s shorthand described in the module docstring applies wherever amplitude/center/sigma appear above.

{}

Returns:

Type Description
ModelNodeSpec

A validated ModelNodeSpec for this node.

Raises:

Type Description
TypeError

If a required parameter has no value, or a kwarg does not map to a canonical parameter name (or accepted shorthand/suffix).

spectrafit_core.compose.power_saturation(id, *, dataset_index=None, **params)

Build a power-saturation node (Misra1b).

\[ \text{amplitude} \left(1 - \left(1 + \frac{\text{rate} \cdot x}{2}\right)^{-2}\right) \]

Parameters:

Name Type Description Default
id str

Unique node identifier within the graph.

required
dataset_index int | None

Forwarded to ModelNodeSpec.dataset_index; None (default) marks a global node contributing to every dataset, or an integer scopes the node to that dataset.

None
**params ParamKwarg

Required keyword values for amplitude, rate. Each name also accepts a <param>_min / _max / _vary / _expr / _scale suffix to populate that Parameter field (e.g. amplitude_min=0.0); the a/c/s shorthand described in the module docstring applies wherever amplitude/center/sigma appear above.

{}

Returns:

Type Description
ModelNodeSpec

A validated ModelNodeSpec for this node.

Raises:

Type Description
TypeError

If a required parameter has no value, or a kwarg does not map to a canonical parameter name (or accepted shorthand/suffix).

spectrafit_core.compose.power_law_offset(id, *, dataset_index=None, **params)

Build a power-law-with-offset node (amplitude, offset, shape).

Parameters:

Name Type Description Default
id str

Unique node identifier within the graph.

required
dataset_index int | None

Forwarded to ModelNodeSpec.dataset_index; None (default) marks a global node contributing to every dataset, or an integer scopes the node to that dataset.

None
**params ParamKwarg

Required keyword values for amplitude, offset, shape. Each name also accepts a <param>_min / _max / _vary / _expr / _scale suffix to populate that Parameter field (e.g. amplitude_min=0.0); the a/c/s shorthand described in the module docstring applies wherever amplitude/center/sigma appear above.

{}

Returns:

Type Description
ModelNodeSpec

A validated ModelNodeSpec for this node.

Raises:

Type Description
TypeError

If a required parameter has no value, or a kwarg does not map to a canonical parameter name (or accepted shorthand/suffix).

spectrafit_core.compose.mgh09_rational(id, *, dataset_index=None, **params)

Build an MGH09 rational node.

Parameters are amplitude, num_lin, den_lin, and den_const.

Parameters:

Name Type Description Default
id str

Unique node identifier within the graph.

required
dataset_index int | None

Forwarded to ModelNodeSpec.dataset_index; None (default) marks a global node contributing to every dataset, or an integer scopes the node to that dataset.

None
**params ParamKwarg

Required keyword values for amplitude, num_lin, den_lin, den_const. Each name also accepts a <param>_min / _max / _vary / _expr / _scale suffix to populate that Parameter field (e.g. amplitude_min=0.0); the a/c/s shorthand described in the module docstring applies wherever amplitude/center/sigma appear above.

{}

Returns:

Type Description
ModelNodeSpec

A validated ModelNodeSpec for this node.

Raises:

Type Description
TypeError

If a required parameter has no value, or a kwarg does not map to a canonical parameter name (or accepted shorthand/suffix).

spectrafit_core.compose.rational_cubic(id, *, dataset_index=None, **params)

Build a rational cubic node (a0-a3 over b1-b3).

\[ \frac{a_0 + a_1 x + a_2 x^2 + a_3 x^3}{1 + b_1 x + b_2 x^2 + b_3 x^3} \]

A lower-order rational is this node with the unused coefficients held fixed at zero, so a quadratic/quadratic model fixes a3 and b3.

Parameters:

Name Type Description Default
id str

Unique node identifier within the graph.

required
dataset_index int | None

Forwarded to ModelNodeSpec.dataset_index; None (default) marks a global node contributing to every dataset, or an integer scopes the node to that dataset.

None
**params ParamKwarg

Required keyword values for a0, a1, a2, a3, b1, b2, b3. Each name also accepts a <param>_min / _max / _vary / _expr / _scale suffix to populate that Parameter field (e.g. a0_min=0.0).

{}

Returns:

Type Description
ModelNodeSpec

A validated ModelNodeSpec for this node.

Raises:

Type Description
TypeError

If a required parameter has no value, or a kwarg does not map to a canonical parameter name (or accepted shorthand/suffix).

spectrafit_core.compose.generalised_logistic(id, *, dataset_index=None, **params)

Build a generalised-logistic node.

\[ \frac{\text{amplitude}}{\left(1 + \exp(\text{shift} - \text{rate} \cdot x)\right) ^{1/\text{shape}}} \]

Holding shape fixed at 1 gives the plain logistic.

Parameters:

Name Type Description Default
id str

Unique node identifier within the graph.

required
dataset_index int | None

Forwarded to ModelNodeSpec.dataset_index; None (default) marks a global node contributing to every dataset, or an integer scopes the node to that dataset.

None
**params ParamKwarg

Required keyword values for amplitude, shift, rate, shape. Each name also accepts a <param>_min / _max / _vary / _expr / _scale suffix to populate that Parameter field (e.g. amplitude_min=0.0); the a/c/s shorthand described in the module docstring applies wherever amplitude/center/sigma appear above.

{}

Returns:

Type Description
ModelNodeSpec

A validated ModelNodeSpec for this node.

Raises:

Type Description
TypeError

If a required parameter has no value, or a kwarg does not map to a canonical parameter name (or accepted shorthand/suffix).

spectrafit_core.compose.exp_over_linear(id, *, dataset_index=None, **params)

Build an exponential-over-line node (rate, lin_const, lin_slope).

\[ \frac{\exp(-\text{rate} \cdot x)}{\text{lin\_const} + \text{lin\_slope} \cdot x} \]

Parameters:

Name Type Description Default
id str

Unique node identifier within the graph.

required
dataset_index int | None

Forwarded to ModelNodeSpec.dataset_index; None (default) marks a global node contributing to every dataset, or an integer scopes the node to that dataset.

None
**params ParamKwarg

Required keyword values for rate, lin_const, lin_slope. Each name also accepts a <param>_min / _max / _vary / _expr / _scale suffix to populate that Parameter field (e.g. rate_min=0.0).

{}

Returns:

Type Description
ModelNodeSpec

A validated ModelNodeSpec for this node.

Raises:

Type Description
TypeError

If a required parameter has no value, or a kwarg does not map to a canonical parameter name (or accepted shorthand/suffix).