Isotope¶
- class curie.Isotope(isotope)[source]¶
Retrieve isotopic structure and decay data
The Isotope class provides isotope specific nuclear data, such as masses, abundances, half-lives, decay data and fission yields. The main data souces are NuDat 2.0, ENDF/B-VII.0 and the nuclear wallet cards. Where conflicts were found preference was given to NuDat, then ENDF, then wallet cards.
- Parameters:
- isotopestr
Name of the isotope/isomer. For element El of mass AAA, and (optionally) isomeric state m# (where # is an integer starting with 1 for the first isomer) or g for ground state, the name must be formatted as either AAAELm# or El-AAAm# or EL-AAAm#. If the isomeric state isn’t specified, the ground state is assumed, and if just m is given, the first isomer is assumed.
Examples
>>> ip = ci.Isotope('115INm') >>> ip = ci.Isotope('Co-60') >>> ip = ci.Isotope('58NI') >>> print(ip.abundance) 68.077
>>> ip = ci.Isotope('135CEm') >>> print(ip.dc) 0.03465735902799726
>>> ip = ci.Isotope('235U') >>> print(ip.half_life('My')) 703.798767967
- Attributes:
- elementstr
Elemental symbol, e.g. Xe, Ar, Kr
- Aint
Mass number A of isotope
- isomerstr
Isomeric state, e.g. g, m1, m2
- namestr
Formatted isotope name
- E_levelfloat
Energy level of the state, in MeV
- J_pistr
Spin and partiy of the state
- Zint
Atomic number Z of the isotope
- Nint
Neutron number N of the isotope
- dcfloat
Isotope decay constant in units of 1/seconds
- stablebool
True if isotope is stable
- massfloat
Atomic mass of the isotope in amu
- abundancefloat
Natural abundance in percent.
- unc_abundancefloat
Uncertainty in natural abundance in percent.
- Deltafloat
Mass excess of the isotope in MeV
- decay_productsdict
Dictionary of decay products and their absolute branching ratios as {‘istp’:BR}
- TeXstr
LaTeX formatted isotope name
Methods
alphas
([I_lim, E_lim])Alpha-particles emitted by the decay of the isotope
beta_minus
([I_lim, Endpoint_lim])Electrons from beta-minus decay
beta_plus
([I_lim, Endpoint_lim])Positrons from beta-plus decay
decay_const
([units, unc])Decay constant of isotope
dose_rate
([activity, distance, units])Dose-rate from a point source of the isotope
electrons
([I_lim, E_lim, CE_only, Auger_only])Electrons (conversion and Auger) emitted by the decay of the isotope
gammas
([I_lim, E_lim, xrays, dE_511, istp_col])Gamma-rays emitted by the decay of the isotope
get_NFY
(E)Neutron induced fission yields
get_SFY
()Spontaneous fission yields
half_life
([units, unc])Half-life of isotope
Appropriate units for half-life
- alphas(I_lim=None, E_lim=None)[source]¶
Alpha-particles emitted by the decay of the isotope
Returns a DataFrame of alpha-particle energies, intensities and intensity-uncertainties based on an optional set of selection critieria.
- Parameters:
- I_limfloat or 2-tuple of floats, optional
Limits on the intensity of the alphas, in percent. If a single float is given, this is a lower bound, if a 2-tuple then (upper, lower) bounds.
- E_limfloat or 2-tuple of floats, optional
Limits on the energy of the alphas, in keV. If a single float is given, this is a lower bound, if a 2-tuple then (upper, lower) bounds.
- Returns:
- alphaspd.DataFrame
Tabular alpha emission data, with keys ‘energy’, ‘intensity’ and ‘unc_intensity’. Units of energy are in keV and units of intensity are in percent.
Examples
>>> ip = ci.Isotope('210PO') >>> print(ip.alphas(I_lim=1.0)) energy intensity unc_intensity 0 5304.33 100.0 5.0
- beta_minus(I_lim=None, Endpoint_lim=None)[source]¶
Electrons from beta-minus decay
Returns a DataFrame of beta-minus mean and enpoint energies, intensities and intensity-uncertainties based on an optional set of selection critieria.
- Parameters:
- I_limfloat or 2-tuple of floats, optional
Limits on the intensity of the beta-minus decay, in percent. If a single float is given, this is a lower bound, if a 2-tuple then (upper, lower) bounds.
- Endpoint_limfloat or 2-tuple of floats, optional
Limits on the endpoint energy of the beta-minus decay, in keV. If a single float is given, this is a lower bound, if a 2-tuple then (upper, lower) bounds.
- Returns:
- beta_minuspd.DataFrame
Tabular beta-minus data, with keywords ‘mean_energy’, ‘endpoint_energy’, ‘intensity’, ‘unc_intensity’. Units of energy are in keV and units of intensity are in percent.
Examples
>>> ip = ci.Isotope('35S') >>> print(ip.beta_minus()) mean_energy endpoint_energy intensity unc_intensity 0 48.758 167.33 100.0 5.0
- beta_plus(I_lim=None, Endpoint_lim=None)[source]¶
Positrons from beta-plus decay
Returns a DataFrame of beta-plus mean and enpoint energies, intensities and intensity-uncertainties based on an optional set of selection critieria.
- Parameters:
- I_limfloat or 2-tuple of floats, optional
Limits on the intensity of the beta-plus decay, in percent. If a single float is given, this is a lower bound, if a 2-tuple then (upper, lower) bounds.
- Endpoint_limfloat or 2-tuple of floats, optional
Limits on the endpoint energy of the beta-plus decay, in keV. If a single float is given, this is a lower bound, if a 2-tuple then (upper, lower) bounds.
- Returns:
- beta_pluspd.DataFrame
Tabular beta-plus data, with keywords ‘mean_energy’, ‘endpoint_energy’, ‘intensity’, ‘unc_intensity’. Units of energy are in keV and units of intensity are in percent.
Examples
>>> ip = ci.Isotope('18F') >>> print(ip.beta_plus()) mean_energy endpoint_energy intensity unc_intensity 0 249.8 633.5 96.73 0.04
- decay_const(units='s', unc=False)[source]¶
Decay constant of isotope
Returns isotope decay constant, in specified units, with or without uncertainty
- Parameters:
- unitsstr, optional
Units for which to return decay constant. Options are ns, us, ms, s, m, h, d, y, ky, My, Gy Actual value will be given in units of inverse time
- uncstr, optional
If True, uncertainty in decay constant (in specified units) will also be returned
- Returns:
- decay_constfloat or 2-tuple of floats
Decay constant in specified units, with uncertainty only if unc=True
Examples
>>> ip = ci.Isotope('221AT') >>> print(ip.decay_const()) 0.0050228056562314875 >>> print(ip.decay_const('m', True)) (0.3013683393738893, 0.026205942554251245)
- dose_rate(activity=1.0, distance=30.0, units='R/hr')[source]¶
Dose-rate from a point source of the isotope
Assuming a point source with no attenuation, this function calculates the dose-rate from each emitted particle type using a specified source activity and distance.
- Parameters:
- activityfloat, optional
Source activity in Bq. Default is 1.0
- distancefloat, optional
Source distance in cm. Default is 30.0
- unitsstr, optional
Desired units of dose rate. Format: dose/time where dose is one of R (Roentgen), Sv, Gy, with the Si prefixes u, m, k, and M supported, and time is in the same format described under the Isotope.half_life() function. E.g. mR/hr, uSv/m, kGy/y. Default is ‘R/hr’
- Returns:
- dose_ratedict
Dictionary of dose from each of the following particle type: ‘gamma’, ‘electron’, ‘beta_minus’, ‘beta_plus’, ‘alpha’, and ‘total’. Units are specified as an input.
Examples
>>> ip = ci.Isotope('Co-60') >>> print(ip.dose_rate(activity=3.7E10, units='R/hr')) # 1 Ci of Co-60 at 30 cm {'beta_plus': 0.0, 'alphas': 0.0, 'gammas': 52035.28424827692, 'electrons': 65.66251805557148, 'beta_minus': 5536.541902410433, 'total': 57637.488668742924}
- electrons(I_lim=None, E_lim=None, CE_only=False, Auger_only=False)[source]¶
Electrons (conversion and Auger) emitted by the decay of the isotope
Returns a DataFrame of electron energies, intensities and intensity-uncertainties based on an optional set of selection critieria.
- Parameters:
- I_limfloat or 2-tuple of floats, optional
Limits on the intensity of the electrons, in percent. If a single float is given, this is a lower bound, if a 2-tuple then (upper, lower) bounds.
- E_limfloat or 2-tuple of floats, optional
Limits on the energies of the electrons, in keV. If a single float is given, this is a lower bound, if a 2-tuple then (upper, lower) bounds.
- CE_onlybool
If True, only conversion electrons will be returned. Default False
- Auger_onlybool
If True, only Auger electrons will be returned. Default False.
- Returns:
- electronspd.DataFrame
Tabular electron data, with keywords ‘energy’, ‘intensity’, ‘unc_intensity’. Units of energy are in keV and units of intensity are in percent.
Examples
>>> ip = ci.Isotope('Pt-193m') >>> print(ip.electrons(I_lim=5.0, E_lim=(10.0, 130.0))) energy intensity unc_intensity 0 11.912 17.1 0.855 1 57.110 15.5 0.775 2 121.620 60.0 3.000
- gammas(I_lim=None, E_lim=None, xrays=False, dE_511=0.0, istp_col=False)[source]¶
Gamma-rays emitted by the decay of the isotope
Returns a DataFrame of gamma-ray energies, intensities and intensity-uncertainties based on an optional set of selection critieria.
- Parameters:
- I_limfloat or 2-tuple of floats, optional
Limits on the intensity of the gamma-rays, in percent. If a single float is given, this is a lower bound, if a 2-tuple then (upper, lower) bounds.
- E_limfloat or 2-tuple of floats, optional
Limits on the energy of the gamma-rays, in keV. If a single float is given, this is a lower bound, if a 2-tuple then (upper, lower) bounds.
- xraysbool, optional
If True, retrieved data will include x-rays. Default False.
- dE_511float, optional
Filter out gamma-rays that are within dE_511 keV of the annihilation peak. Default 0.0.
- Returns:
- gammaspd.DataFrame
Tabular gamma-ray data, with keys ‘energy’, ‘intensity’ and ‘unc_intensity’. Units of energy are in keV and units of intensity are in percent.
Examples
>>> ip = ci.Isotope('Co-60') >>> print(ip.gammas(I_lim=1.0)) energy intensity unc_intensity 0 1173.228 99.8500 0.0300 1 1332.492 99.9826 0.0006
>>> ip = ci.Isotope('64CU') >>> print(ip.gammas()) energy intensity unc_intensity 0 511.00 35.200 0.400 1 1345.77 0.475 0.011 >>> print(ip.gammas(xrays=True, dE_511=1.0)) energy intensity unc_intensity 0 0.850 0.489 0.024 1 7.461 4.740 0.240 2 7.478 9.300 0.400 3 8.265 1.120 0.050 4 8.265 0.580 0.030 5 1345.770 0.475 0.011
- get_NFY(E)[source]¶
Neutron induced fission yields
Returns the absolute neutron induced fission yields (independent) for a given nuclide, where available from ENDF.
- Parameters:
- Efloat
Incident neutron energy, in eV. Available energies are 0.0253, 5E5, 2E6 and 14E6.
- Returns:
- nfypd.DataFrame
Tabular neutron induced fission yields, with keys ‘daughter’, ‘yield’ and ‘unc_yield’
Examples
>>> ip = ci.Isotope('235U') >>> print(ip.get_NFY(E=0.0253))
- get_SFY()[source]¶
Spontaneous fission yields
Returns the absolute spontaneous fission yields (independent) for a given nuclide, where available from ENDF.
- Returns:
- sfypd.DataFrame
Tabular spontaneous fission yields, with keys ‘daughter’, ‘yield’ and ‘unc_yield’
Examples
>>> ip = ci.Isotope('238U') >>> print(ip.get_SFY())
- half_life(units='s', unc=False)[source]¶
Half-life of isotope
Returns isotope half-life, in specified units, with or without uncertainty.
- Parameters:
- unitsstr, optional
Units for which to return half-life. Options are ns, us, ms, s, m, h, d, y, ky, My, Gy
- uncbool, optional
If True, uncertainty in half life (in specified units) will also be returned
- Returns:
- half_lifefloat or 2-tuple of floats
Half-life in specified units, with uncertainty only if unc=True
Examples
>>> ip = ci.Isotope('67CU') >>> print(ip.half_life('d')) 2.57625 >>> print(ip.half_life('h', True)) (61.83, 0.12)
- optimum_units()[source]¶
Appropriate units for half-life
- Returns:
- unitsstr
Units that will represent half-life as a number greater than 1, but with as few digits as possible.
Examples
>>> ip = ci.Isotope('226RA') >>> print(ip.half_life()) 50492200000.0 >>> print(ip.optimum_units()) y >>> print(ip.half_life(ip.optimum_units())) 1600.00126752