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
- Return type
Number
- property charge: int
Get the cumulative charge of the isotope
- Return type
int
- property ion: Ion
Get the
Ion
(Composition and charge)- Return type
Ion
- property mass: Number
Get the atomic mass of the isotope
- Return type
Number
- property number: int
Get the atomic number of the isotope
- Return type
int
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
- Return type
ndarray
- property charge: int
Get the cumulative charge of the ion
- Return type
int
- property ion: Ion
Get the
Ion
(Composition and charge)- Return type
Ion
- property masses: ndarray
Get an array of the mass/charge ratios of each isotope
- Return type
ndarray
- property threshold: Number
Get the threshold used for computing the isotopes
- Return type
Number