isotopylog.fit_PH12

isotopylog.fit_PH12(he, logy=True, p0=[-10.0, 0.5], thresh=1e-10)

Fits D evolution data using the first-order model approximation of Passey and Henkes (2012). The function uses curvature in t vs. ln(G) space to extract the linear region and only fits this region.

Parameters:
  • he (isotopylog.HeatingExperiment) – ipl.HeatingExperiment instance containing the D data to be modeled.
  • logy (Boolean) – Tells the function whether or not to calculate fits using the natural logarithm of reaction progress as the y axis. If True, results should be in closer alignment with PH12 and Hea14 literature values.
  • p0 (array-like) – Array of paramter guess to initialize the fitting algorithm, in the order [ln(k), intercept]. Defaults to [-7, 0.5].
  • thresh (float) – Curvature threshold to use for extracting the linear region. All points after the first point that drops below this threshold are considered to be in the linear region. Defaults to 1e-6.
Returns:

  • params (np.ndarray) – Array of resulting parameter values, in the order [ln(k), intercept].
  • params_cov (np.ndarray) – Covariance matrix associated with the resulting parameter values, of shape [2 x 2]. 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. Only includes data points that are deemed to be in the linear region.
  • npt (int) – Number of data points deemed to be in the linear region.

Raises:

ValueError – If the curvature in t vs. ln(G) space never drops below the inputted thresh value.

Notes

Results are bounded such that k and intercept are non-negative; intercept value in params is the intercept in G vs. t space. All calculations are done in G space and thus only depend on relative changes in D47.

If logy = True, note that fits are subject to high uncertainty when approaching equilibrium, so ensure that HeatingExperiment data are culled.

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_SE15()
Method for fitting heatinge experiment data using the paird diffusion model of Stolper and Eiler (2015).
isotopylog.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 he is a HeatingExperiment instance
results = ipl.fit_PH12(he, thresh = 1e-6)

References

[1] Passey and Henkes (2012) Earth Planet. Sci. Lett., 351, 223–236.