radioactivedecayは、放射性減衰計算のためのPythonパッケージです。放射性核種、メタスト可能な状態、枝分かれした減衰の減衰チェーンをサポートします。デフォルトでは、ICRP Publication 107からの減衰データを使用します。これには、97の要素の1252の放射性核種と、原子質量データセンターの原子質量データが含まれています。
このコードは、NumpyおよびScipy Linear Algebraルーチンを使用して、放射性減衰差微分方程式を分析的に解決します。また、Sympyルーチンを使用する高度精度計算モードもあります。これにより、半減期の間に数桁の違いを持つ放射性核種を含む減衰チェーンのより正確な結果が得られます。
これは無料のオープンソースソフトウェアです。これは、放射能と協力するエンジニア、技術者、研究者のために作成され、教育的に使用されました。
radioactivedecayにはPython 3.8+が必要です。 pipを使用して、Pythonパッケージインデックスからradioactivedecayをインストールします。
$ pip install radioactivedecayまたはコンダフェッジから:
$ conda install -c conda-forge radioactivedecayいずれかのコマンドは、環境にまだ存在していない場合は、依存関係(Matplotlib、networkx、numpy、pandas、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を生成しました。
減衰期間が時間の単位を指定するためにdecay()への引数として'h'を提供しました。サポートされている時間単位には'μs' 、 'ms' 、 's' 、 'm' 、 'h' 、 'd' 's' 'y'などがありますdecay()
cumulative_decays()を使用して、減衰期間にわたって減衰する各放射性核種の総数を計算します。
>>> Mo99_t0.cumulative_decays( 20.0 , ' h ' )
{'Mo-99': 129870.3165339939, 'Tc-99m': 71074.31925850797,
'Tc-99': 0.0002724635511147602}放射性核種は、 radioactivedecayの4つの等価方法で指定できます。3つのバリエーションの核種弦または標準IDによって。たとえば、以下は222 RNと192N IRを指定する同等の方法です。
'Rn-222' 、 'Rn222' 、 '222Rn' 、 862220000 、'Ir-192n' 、 'Ir192n' 、 '192nIr' 、 771920002 。インベントリは、アクティビティ( 'Bq' 、 'Ci' 、 'dpm' ...)、MASS( 'g' 、 'kg' ...)、mole( 'mol' 、 'kmol' ...)ユニット、または核( 'num' )の数をInventory()コンストラクターに供給することで作成できます。メソッド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。 Phys。 comm。 181、21-23(2010)。詳細については、理論ドキュメントを参照してください。
標準の減衰計算(二重精度の浮動小数点操作)には、numpyおよびscipyルーチンを使用し、任意の数値精度計算にはSympyを使用します。
デフォルトでは、 radioactivedecayは、ICRP Publication 107(2008)の減衰データとAtomic Mass Data Center(AMDC -AME2020およびNubase2020評価)の原子質量データを使用します。
DataSets Repoには、 radioactivedecay (ICRP 107)が使用できる減衰データセットを作成するためのJupyterノートブックが含まれています。
比較リポジトリには、PyneおよびRadiological Toolboxに対するradioactivedecayのいくつかのチェックが含まれています。
ベースディレクトリの実行から:
$ python -m unittest discover radioactivedecayは、MITライセンスの下でリリースされたオープンソースソフトウェアです。詳細については、ライセンスファイルを参照してください。
radioactivedecay (ICRP-107)が使用するデフォルトの減衰データは、著作権2008 A. EndoおよびKF Eckermanであり、別のライセンスの下で配布されます。デフォルトの原子質量データは、AMDC(ライセンス)からのものです。
このパッケージがあなたの研究に役立つと思う場合は、Journal of Open Sourceソフトウェアに掲載されているradioactivedecayの論文を引用することを検討してください。
Alex Malins&Thom Lemoine、 Radioactivedecay:放射性減衰計算のためのPythonパッケージ。 Journal of Open Source Software、 7 (71)、3318(2022)。 doi:10.21105/joss.03318。
貢献者は、バグを修正したり、新機能を追加したり、機能を要求したりします。 githubリポジトリで問題を開きたり、リクエストをプルリクエストまたは新しいディスカッションスレッドを開いたりしてください。
貢献ガイドラインをお読みください。