isotopylog.fit_SE15¶
-
isotopylog.fit_SE15(he, p0=[-7.0, -9.0, 0.0992], mp=None, z=6)¶ Fits D evolution data using the paired diffusion model of Stolper and Eiler (2015). The function solves for both k1 and k_dif_single as well as the slope of the pair concentration with respect to temperature, by solving a modified version of SE15 Eq. 9-10. Note that mp is defined in Stolper and Eiler (2015) Eq. 17.
Parameters: - he (isotopylog.HeatingExperiment) – ipl.HeatingExperiment instance containing the D data to be modeled.
- p0 (array-like) –
Array of paramter guess to initialize the fitting algorithm, in the order [ln(k1), ln(k_dif_single), mp], where
mpis the slope of the relationship:ln([p]_eq/[p]_random) = mp/Tas defined in Eq. 17 of Stolper and Eiler (2015). Defaults to
[-7, -9, 0.0992]. - mp (None or float) – If
None, mp is fitted as an unkonwn parameter. If a float value is inputted, then mp is not fitted and the inputted value is assumed to be true and is used for all calculations. - z (int) – The mineral lattice coordination number to use for calculating the concentration of pairs. Defaults to 6 following Stolper and Eiler (2015).
Returns: - params (np.ndarray) – Array of resulting parameter values, in the order [ln(k1), ln(k_dif_single), mp].
- params_cov (np.ndarray) – Covariance matrix associated with the resulting parameter values, of
shape [3 x 3]. The +/- 1 sigma uncertainty for each parameter can be
calculated as
np.sqrt(np.diag(params_cov)) - rmse (float) – Root Mean Square Error (in D47 permil units) of the model fit. Includes model fit to all data points.
- npt (int) – Number of data points included in the model solution.
Notes
This function uses the average of all experimental d13C and d18O values when calculating stochastic statistics. If d13C and d18O values change considerably throughout the course of an experiment, this could cause slight inconsistencies in results.
This function uses the average of SE15 Eq. 13a and Eq. 13b when calculating pair concentrations. According to SE15, the relative difference between these equations is ~1-2 percent, so this should be an arbitrary choice.
Results are bounded such that k values are non-negative and mp >= 0. Calculations depend on stochastic ‘pair’ concentrations, which are a function of the chosen isotope parameters and thus might be sensitive to this choice. See Daëron et al. (2016) and the
calc_Randcalc_dfunctions for details.See also
isotopylog.fit_Hea14()- Method for fitting heating experiment data using the transient defect/ equilibrium model of Henkes et al. (2014). ‘Hea14’ can be considered an updated version of the present method.
isotopylog.fit_HH21()- Method for fitting heating experiment data using the distributed activation energy model of Hemingway and Henkes (2021).
isotopylog.fit_PH12()- Method for fitting heating experiment data using the pseudo first- order method of Passey and Henkes (2012). Called to determine linear region.
kDistribution.invert_experiment()- Method for generating a kDistribution instance from experimental data.
Examples
Basic implementation, assuming a ipl.HeatingExperiment instance he exists:
#import modules import isotopylog as ipl #assume some a priori guess at p0; results may be sensitive to choice # of p0 as described in SE15 p0 = [-7., -9., 0.1] #assume he is a HeatingExperiment instance results = ipl.fit_SE15(he, p0 = p0)
Same as above, but now constraining mp to be equal to the SE15 value:
results = ipl.fit_SE15(he, p0 = p0, mp = 0.0992)
References
[1] Stolper and Eiler (2015) Am. J. Sci., 315, 363–411.
[2] Daëron et al. (2016) Chem. Geol., 442, 83–96.