Replies: 1 comment
-
|
Using J values and ages calculated ourselves, we see a consistent shift in ages relative to Pychron of 0.0183%. |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
J value and age calculation issues
Theoretically, if you use a standard analysis (or group of analyses) to calculate a J value, and then use that J value to calculate an age, the calculated age should be equal to the assumed age of the standard.
Although slight differences may be seen due to rounding errors, and especially if there's a geometric or other model J calculation involved. Calculations using a simple inverse-variance weighted mean (or a single analysis) should yield exactly (or at least very close to) the assumed age.
In Pychron (commit hash: 24596b3), we are seeing differences of a few to several tens of thousands of years on FCs and GA1550. This is concerning, and we have been investigating the source of the difference.
Manual calculations
Cameron exported reduced data for FCs and GA1550 from multiple irradiation packages, using the
CSV Analyses Exportnode in Pipeline followed by a custom PyScript that supplements the output file with additional derived quantities, such as %40Ar*, K/Ca, and F values (40Ar*/39ArK). He then computed weighted mean F values in Excel for analyses from individual pits in an irradiation disk (for FCs and GA1550 from a few different packages), and then computed J values from those EWM F values. He also tried computing J values for individual runs followed by computing a weighted mean J value. In both cases, he got slightly different final J values than those computed by Pychron's Flux node for the exact same input runs. For example, using 14 runs of FCs Cameron gets 2.696516e-03 ± 3.367755e-06 while the Flux node in Pychron gets 2.696150e-3 ± 2.655357e-6; close, but not identical.If you then use those same 14 runs and plot an ideogram in Pychron (using Pychron's J), the weighted mean age is 28.192 ± 0.089 Ma; close to the assumed 28.201, but not exactly. In contrast, using his J value and the exported F values of these 14 runs, Cameron computed individual model ages for each run, then computed a weighted mean age that was exactly 28.201. Thus, the circular logic check closes as expected. There are other examples where the gap is even larger. For example, a different set of 18 FCs from a different package yields an ideogram with a weighted mean age of 28.089 ± 0.172 Ma using J from Pychron's Flux node, while using the exported F values and a J computed manually by Cameron yields a weighted mean age of 28.201 Ma as expected.
Calculations involving a single analysis (as a test case)
Since the manual calculations do not propagate error correlations (like Pychron does with the underlying
uncertaintieslibrary), and because weighted means use inverse variance as weights, it's possible that the incorrect uncertainties could affect the means. To test this, we used the exported F value for a single FCs analysis, assumed an age of 28.201 Ma, and calculated J manually. We then used that J to calculate an age for that FCs analysis, and got 28.201 as expected. Using Pychron's Flux node, got exactly the same J value to within 12 decimal places as the manual approach. But, entering that J into the Entry > Package editor, restarting Pychron, and then recalling the run, we do not get 28.201; we get 28.196. This seems to indicate that Pychron is doing something incorrect in both the weighted mean J calculations (even though J values for individual runs seem correct) and the age calculations for both individual runs and weighted means of pooled runs.Calculations using the F values in the Pychron export file
The data export function in Pychron exports interference-corrected isotope values, and with our custom supplement/export script we can have it dump F values (and uncertainties, including propagated error correlations) for each analysis. (We use the ArArAge objects Pychron instantiates for each run to access additional derived values, like F, and append columns to the export file produced by the CSV Analyses Export node.) We were able to use those F values to manually calculate a weighted mean F value and uncertainty (in Excel) that should be fully correct (though potentially lacking any error correlation effects since we are no longer using
uncertainties.ufloatobjects in Excel). We used that to manually calculate J and uncertainty (as above in Manual calculations section). We then applied that J to F values for the same standard analyses from a Pychron export file, and obtained a correct age of 28.201 Ma. We could then apply the same J to F values for relevant unknown samples from a Pychron export file, to obtain correct ages for those samples. Cameron is writing/modifying Pyscripts that will automate some of this and keep it inside of Pychron to take advantage ofufloatobjects and propagation with error correlations. In particular, he's writing a script that will do the J calculations given a selection of fluence monitor runs, and he has modified our custom supplement/export Pyscript to also do "manual" step-age calculations on a per-run basis. We may also make a Pyscript to compute weighted mean ages from a selection of runs in a similar fashion.Questions
Do others see this problem in calculating J and age values? We have previously seen small differences (presumably due to rounding errors), but never differences as large as this.
Thoughts on what might be going on here? Is there some difference in the way Pychron groups things? Calculates J and ages?
Disclaimers
Beta Was this translation helpful? Give feedback.
All reactions