elphick.mass_composition.utils.interp.mass_preserving_interp
- elphick.mass_composition.utils.interp.mass_preserving_interp(df_intervals, interval_edges, include_original_edges=True, precision=None, mass_wet='mass_wet', mass_dry='mass_dry')[source]
Interpolate with zero mass loss using pchip
The pchip interpolation cannot be used via the xr.Dataset.interp method directly due to an error. This interpolates data_vars independently for a single dimension (coord) at a time.
The function will: - convert from relative composition (%) to absolute (mass) - convert the index from interval to a float representing the right edge of the interval - cumsum to provide monotonic increasing data - interpolate with a pchip spline to preserve mass - diff to recover the original fractional data - reconstruct the interval index from the right edges - convert from absolute to relative composition
- Parameters:
df_intervals (
DataFrame
) – A pd.DataFrame with a single interval index, with mass, composition context.interval_edges (
Union
[Iterable
,int
]) – The values of the new grid (interval edges). If an int, will up-sample by that factor, for example the value of 10 will automatically define edges that create 10 x the resolution (up-sampled).include_original_edges (
bool
) – If True include the original index edges in the resultprecision (
Optional
[int
]) – Number of decimal places to round the index (edge) values.mass_wet (
str
) – The wet mass column, not optional. Consider solve_mass_moisture prior to this call if needed.mass_dry (
str
) – The dry mass column, not optional. Consider solve_mass_moisture prior to this call if needed.
- Return type:
DataFrame
Returns: