Isotopes
Isotope
- class apav.core.isotopic.Isotope(ion, number, mass, abundance)[source]
A single isotope
This class defines a single isotopic species, defined by composition, charge, mass, and absolute abundance. These values must be provided manually, see IsotopeSeries for calculating isotope distributions (which uses this class in its calculations). This class may be used for defining custom/modified isotopes for IsotopeSeries.
>>> carbon_12 = Isotope(Ion("C", 1), 12, 6, 98.93)
- Parameters:
ion (
Ion
) – Ion compositionnumber (
int
) – atomic numbermass (
Number
) – atomic massabundance (
Number
) – absolute isotopic abundance
- property abundance: Number
Get the absolute abundance of the isotope
- property charge: int
Get the cumulative charge of the isotope
- property ion: Ion
Get the
Ion
(Composition and charge)
- property mass: Number
Get the atomic mass of the isotope
- property number: int
Get the atomic number of the isotope
IsotopeSeries
- class apav.core.isotopic.IsotopeSeries(*args, isotopes=None, threshold=0.01)[source]
Compute isotopic distributions
This class computes isotopic distributions of arbitrary elemental or molecular compositions. The only physical requirement is that the charge is not 0.
This computation can be constructed by providing either the Ion instance directly, or by providing a string of the composition and an integer of the charge. i.e.:
>>> ion1 = IsotopeSeries(Ion("GdCuO2", 3)) >>> ion2 = IsotopeSeries("GdCuO2", 3) >>> ion1 == ion2
These are equivalent. Complex compositions can sometimes produce very large number of isotopologues with very small abundances that are quite below the detectability of most atom probe experiments. As a result the computation is thresholded to only display isotopologues above this threshold. As a result, the sum of the absolute abundances from
>>> IsotopeSeries.isotopes
is not guaranteed to be unity. If this is important, the threshold can be set to 0 to get all isotopologues, or consider working with relative abundances instead.
This computation works for both elemental and molecular ions, i.e.
>>> IsotopeSeries("CuO2", 2) >>> IsotopeSeries("Cu", 3)
Are both valid signatures.
- The calculation used is derived from the following work:
Margrave, J. L., & Polansky, R. B. (1962). Relative abundance calculations for isotopic molecular species. Journal of Chemical Education, 39(7), 335–337. https://doi.org/10.1021/ed039p335
- Parameters:
*args –
Either Ion type, or composition (str) and charge (int)
isotopes (
Optional
[List
[Isotope
]]) – “None” to calculate, otherwise must be provided explicitly
- property abundances: ndarray
Get an array of the abundances of each isotope
- property charge: int
Get the cumulative charge of the ion
- property ion: Ion
Get the
Ion
(Composition and charge)
- property masses: ndarray
Get an array of the mass/charge ratios of each isotope
- property threshold: Number
Get the threshold used for computing the isotopes