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

optimum_units()

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