radioactivedecay是用于放射性衰减计算的Python软件包。它支持放射性核素,亚稳态状态和分支衰变的衰减链。默认情况下,它使用来自ICRP出版物107的衰减数据,其中包含1252个放射性核素的97个元素,以及来自原子质量数据中心的原子质量数据。
该代码使用Numpy和Scipy线性代数例程在分析上求解放射性衰减方程。还采用Sympy例程的高数值精度计算模式。这为含有放射性核素的衰减链具有更准确的结果,而半衰期之间的数量级差异。
这是免费使用的开源软件。它是专为从放射性和教育使用的工程师,技术人员和研究人员而创建的。
radioactivedecay需要Python 3.8+。使用pip从Python软件包索引中安装radioactivedecay :
$ pip install radioactivedecay或来自Conda-Forge:
$ conda install -c conda-forge radioactivedecay如果命令尚未在环境中尚未存在,则任何一个命令都将尝试安装依赖项(matplotlib,networkx,numpy,pandas,scipy,scipy,setuptools&sympy)。
创建放射性核素的Inventory ,并如下:
>>> import radioactivedecay as rd
>>> Mo99_t0 = rd.Inventory({ ' Mo-99 ' : 2.0 }, ' Bq ' )
>>> Mo99_t1 = Mo99_t0.decay( 20.0 , ' h ' )
>>> Mo99_t1.activities( ' Bq ' )
{'Mo-99': 1.6207863893776937, 'Ru-99': 0.0,
'Tc-99': 9.05304236308454e-09, 'Tc-99m': 1.3719829376710406} 2.0 BQ的MO-99 Inventory腐烂了20小时,产生了放射性后代TC-99M和TC-99,以及稳定的核素RU-99。
我们提供了'h'作为decay()的论点,以指定衰减时间段的单位数小时。支持的时间单元包括'μs' , 'ms' , 's' , 'm' , 'h' , 'd' , 'y'等。请注意seconds( 's' )是默认值,如果不提供单位decay() 。
使用cumulative_decays()计算衰减时间段衰减的每个放射性核素的原子总数:
>>> Mo99_t0.cumulative_decays( 20.0 , ' h ' )
{'Mo-99': 129870.3165339939, 'Tc-99m': 71074.31925850797,
'Tc-99': 0.0002724635511147602}放射性核素可以在radioactivedecay中以四种等效方式指定:核素字符串的三种变体或规范ID。例如,以下是指定222 RN和192n IR的等效方法:
'Rn-222' , 'Rn222' , '222Rn' , 862220000 ,'Ir-192n' , 'Ir192n' , '192nIr' , 771920002 。库存可以通过提供活动( 'Bq' , 'Ci' , 'dpm' ...),质量( 'g' , 'kg' ...),mole( 'mol' , 'kmol' ...)单位或数量的nuclei( 'num' )到Inventory()构建体。使用Methods activities() , masses() , moles() , numbers() , activity_fractions() , mass_fractions()和mole_fractions()以不同格式获取库存内容:
>>> H3_t0 = rd.Inventory({ ' H-3 ' : 3.0 }, ' g ' )
>>> H3_t1 = H3_t0.decay( 12.32 , ' y ' )
>>> H3_t1.masses( ' g ' )
{'H-3': 1.5, 'He-3': 1.4999900734297729}
>>> H3_t1.mass_fractions()
{'H-3': 0.5000016544338455, 'He-3': 0.4999983455661545}
>>> C14_t0 = rd.Inventory({ ' C-14 ' : 3.2E24 }, ' num ' )
>>> C14_t1 = C14_t0.decay( 3000 , ' y ' )
>>> C14_t1.moles( ' mol ' )
{'C-14': 3.6894551567795797, 'N-14': 1.6242698581767292}
>>> C14_t1.mole_fractions()
{'C-14': 0.6943255713073281, 'N-14': 0.3056744286926719}使用plot()方法图表库存的衰减,随着时间的流逝:
>>> Mo99_t0.plot( 20 , ' d ' , yunits = ' Bq ' )该图显示了20天内MO-99的衰变,导致TC-99M的向内生长和痕量的TC-99。 RU-99的活性严格为零,因为它是衰减链末端的稳定核素。使用matplotlib绘制图形。
Nuclide类可用于获取单个放射性核素的衰减信息,例如RN-222:
>>> nuc = rd.Nuclide( ' Rn-222 ' )
>>> nuc.half_life( ' s ' )
330350.4
>>> nuc.half_life( ' readable ' )
'3.8235 d'
>>> nuc.progeny()
['Po-218']
>>> nuc.branching_fractions()
[1.0]
>>> nuc.decay_modes()
['α']
>>> nuc.Z # proton number
86
>>> nuc.A # nucleon number
222
>>> nuc.atomic_mass # atomic mass in g/mol
222.01757601699998有类似的库存方法来获取衰减数据:
>>> Mo99_t1.half_lives( ' readable ' )
{'Mo-99': '65.94 h', 'Ru-99': 'stable', 'Tc-99': '0.2111 My', 'Tc-99m': '6.015 h'}
>>> Mo99_t1.progeny()
{'Mo-99': ['Tc-99m', 'Tc-99'], 'Ru-99': [], 'Tc-99': ['Ru-99'], 'Tc-99m': ['Tc-99', 'Ru-99']}
>>> Mo99_t1.branching_fractions()
{'Mo-99': [0.8773, 0.1227], 'Ru-99': [], 'Tc-99': [1.0], 'Tc-99m': [0.99996, 3.7e-05]}
>>> Mo99_t1.decay_modes()
{'Mo-99': ['β-', 'β-'], 'Ru-99': [], 'Tc-99': ['β-'], 'Tc-99m': ['IT', 'β-']}Nuclide类包括用于绘制衰减链图的plot()方法:
>>> nuc = rd.Nuclide( ' Mo-99 ' )
>>> nuc.plot()这些图是使用NetworkX和Matplotlib绘制的。
radioactivedecay包括用于高数值精确计算的InventoryHP类。该类可以为包含长和短寿命放射性核素的链条提供更可靠的衰减计算结果:
>>> U238_t0 = rd.InventoryHP({ ' U-238 ' : 1.0 })
>>> U238_t1 = U238_t0.decay( 10.0 , ' d ' )
>>> U238_t1.activities()
{'At-218': 1.4511675857141352e-25,
'Bi-210': 1.8093327888942224e-26,
'Bi-214': 7.09819414496093e-22,
'Hg-206': 1.9873081129046843e-33,
'Pa-234': 0.00038581180879502017,
'Pa-234m': 0.24992285949158477,
'Pb-206': 0.0,
'Pb-210': 1.0508864357335218e-25,
'Pb-214': 7.163682655782086e-22,
'Po-210': 1.171277829871092e-28,
'Po-214': 7.096704966148592e-22,
'Po-218': 7.255923469955255e-22,
'Ra-226': 2.6127168262000313e-21,
'Rn-218': 1.4511671865210924e-28,
'Rn-222': 7.266530698712501e-22,
'Th-230': 8.690585458641225e-16,
'Th-234': 0.2499481473619856,
'Tl-206': 2.579902288672889e-32,
'Tl-210': 1.4897029111914831e-25,
'U-234': 1.0119788393651999e-08,
'U-238': 0.9999999999957525}radioactivedecay使用线性代数操作计算放射性衰减方程的分析解决方案。它实现了本文所述的方法:M amaku,pr pascholati&vr vanin,Comp。物理。通讯。 181,21-23(2010)。有关更多详细信息,请参见理论文档。
它使用Numpy和Scipy例程进行标准衰减计算(双精度的浮点操作),并用于任意数值精度计算。
默认情况下, radioactivedecay使用ICRP出版物107(2008)和原子质量数据中心(AMDC -AME2020和Nubase2020评估)的原子质量数据的衰减数据。
数据集回购包含用于创建可以通过radioactivedecay使用的衰减数据集的Jupyter笔记本,例如ICRP 107。
比较回购包含针对Pyne和放射学工具箱的一些radioactivedecay检查。
从基本目录运行:
$ python -m unittest discover radioactivedecay是根据MIT许可发布的开源软件。有关详细信息,请参见许可证文件。
radioactivedecay (ICRP-107)使用的默认衰减数据是版权2008 A. Endo和KF Eckerman,并在单独的许可下分发。默认的原子量数据来自AMDC(许可证)。
如果您发现此软件包对您的研究有用,请考虑引用《放射性访问杂志》上发表的radioactivedecay 》论文:
亚历克斯·马林斯(Alex Malins)和汤姆·莱梅恩(Thom Lemoine), 《放射性赛车:放射性衰减计算》的Python包装。开源软件杂志, 7 (71),3318(2022)。 doi:10.21105/joss.03318。
欢迎贡献者修复错误,添加新功能或提出功能请求。请在GitHub存储库中打开问题,拉请请求或新讨论线程。
请阅读贡献指南。