smx.zones.extraction#
Extract spectral zones from a DataFrame based on numeric column boundaries.
Functions#
|
Extract spectral zones from a DataFrame based on specified cuts. |
Module Contents#
- smx.zones.extraction.extract_spectral_zones(Xcal: pandas.DataFrame, cuts: List[Tuple | dict]) Dict[str, pandas.DataFrame][source]#
Extract spectral zones from a DataFrame based on specified cuts.
Parameters#
- Xcalpd.DataFrame
DataFrame with spectral data. Columns must be numeric (or convertible to numeric) values representing wavelengths / energies.
- cutslist of tuples/lists or dicts
Each item defines a spectral zone to extract.
(start, end)— zone boundaries; name defaults to"start-end"(name, start, end)— named zone(name, start, end, group)— named zone assigned to a group{'name': str, 'start': float, 'end': float}— dict form{'name': str, 'start': float, 'end': float, 'group': str}— dict form with grouping
When multiple cuts share the same
groupvalue their column subsets are concatenated into a single zone keyed by the group name. Cuts without a group are extracted individually under their own name, as before.
Returns#
- dict[str, pd.DataFrame]
Dictionary where keys are zone names (or group names) and values are DataFrames with the extracted spectral data (same row index as Xcal).
Examples#
>>> zones = extract_spectral_zones(X, [('Ca ka', 3.6, 3.7), ('Fe ka', 6.3, 6.5)]) >>> zones['Ca ka'].shape (n_samples, n_cols_in_Ca_ka_zone)
Group background regions into a single zone:
>>> cuts = [ ... ('background 1', 1.0, 101.0, 'background'), ... ('Feature 1', 101.0, 193.3), ... ('background 2', 193.3, 255.4, 'background'), ... ('Feature 2', 255.4, 341.6), ... ] >>> zones = extract_spectral_zones(X, cuts) >>> 'background' in zones # True — merged from background 1 & 2 True >>> 'background 1' in zones # False — individual cuts absorbed into group False