3. Isotopes & Decay Chains

Curie provides access to isotopic masses and decay data, which is a collection from the NNDC’s Nudat2, the wallet cards, the atomic mass evaluation, and ENDF (for decay branching ratios and some half-lives). This is provided by the Isotope class. For a complete list of methods and attributes, see the Curie API.

Examples:

ip = ci.Isotope('115INm')
ip = ci.Isotope('Cu-67')
print(ip.dose_rate(units='mR/h'))
ip = ci.Isotope('58NI')
print(ip.abundance)

ip = ci.Isotope('135CEm')
print(ip.dc)
ip = ci.Isotope('235U')
print(ip.get_NFY(E=0.0253))

ip = ci.Isotope('221AT')
print(ip.decay_const())
print(ip.decay_const('m', True))

ip = ci.Isotope('226RA')
print(ip.half_life())
print(ip.optimum_units())
print(ip.half_life(ip.optimum_units()))

ip = ci.Isotope('Co-60')
print(ip.gammas(I_lim=1.0))

ip = ci.Isotope('64CU')
print(ip.gammas())
print(ip.gammas(xrays=True, dE_511=1.0))

ip = ci.Isotope('Pt-193m')
print(ip.electrons(I_lim=5.0, E_lim=(10.0, 130.0)))

ip = ci.Isotope('35S')
print(ip.beta_minus())

ip = ci.Isotope('18F')
print(ip.beta_plus())

ip = ci.Isotope('210PO')
print(ip.alphas(I_lim=1.0))

ip = ci.Isotope('Co-60')
print(ip.dose_rate(activity=3.7E10, units='R/hr'))

Curie also has a general-purpose implementation of the Batemann equations for a radioactive decay chain. The DecayChain class can calculate the activity of any isotope in a decay chain for a specified initial activity, or production rate. The decay chain is a collection of all isotopes originating from a “parent” radionuclide. The class is also capable of fitting a production rate or initial activity to a set of observed decays, or retrieving these from gamma-ray spectra.

Examples:

dc = ci.DecayChain('Ra-225', R=[[1.0, 1.0], [0.5, 1.5], [2.0, 6]], units='d')
print(dc.R_avg)
print(dc.isotopes)
dc.plot()

sp = ci.Spectrum('eu_calib_7cm.Spe')
sp.isotopes = ['152EU']
sp.saveas('test_spec.json')

dc = ci.DecayChain('152EU', A0=3.7E3, units='h')
dc.get_counts([sp], EoB='01/01/2016 08:39:08')
dc.get_counts(['eu_calib_7cm.Spe'], EoB='01/01/2016 08:39:08', peak_data='test_spec.json')

print(dc.decays('152EU', t_start=1, t_stop=2))
print(dc.decays('152EU', t_start=50, t_stop=50.1, units='y'))
print(dc.activity('152EU', time=0))
print(dc.activity('152EU', time=13.537, units='y'))
print(dc.fit_A0())
dc.plot()

dc = ci.DecayChain('152EU', R=[[3E5, 36.0]], units='d')
dc.get_counts(['eu_calib_7cm.Spe'], EoB='01/01/2016 08:39:08', peak_data='test_spec.json')
dc.get_counts([sp], EoB='01/01/2016 08:39:08')
dc.fit_R()
print(dc.fit_R())
print(dc.R_avg)
print(dc.isotopes)
dc.plot()

dc = ci.DecayChain('99MO', A0=350E6, units='d')
dc.plot()