radioactivedecay ist ein Python -Paket für radioaktive Decay -Berechnungen. Es unterstützt Zerfallsketten von Radionukliden, metastabilen Zuständen und Verzweigungsabfällen. Standardmäßig wird die Zerfalldaten aus der ICRP -Veröffentlichung 107 verwendet, die 1252 Radionuklide von 97 Elementen und Atommassendaten aus dem Atommassendatenzentrum enthält.
Der Code löst die analytisch analytischen Differentialgleichungen für radioaktive Abklingern und scipy lineare Algebra -Routinen. Es gibt auch einen hohen numerischen Präzisionsberechnungsmodus, der Sympy -Routinen verwendet. Dies liefert genauere Ergebnisse für Zerfallsketten, die Radionuklide mit Größenunterschieden zwischen den Halbwertszeiten enthalten.
Dies ist frei zu bedienende Open-Source-Software. Es wurde für Ingenieure, Techniker und Forscher geschaffen, die mit Radioaktivität und für Bildungsnutzung arbeiten.
radioactivedecay benötigt Python 3.8+. Installieren Sie radioactivedecay aus dem Python -Paket -Index mit pip :
$ pip install radioactivedecayoder von Conda-forge:
$ conda install -c conda-forge radioactivedecayIn beiden Fällen wird versucht, die Abhängigkeiten (Matplotlib, Networkx, Numpy, Pandas, Scipy, Setuptools & Sympy) zu installieren, wenn sie nicht bereits in der Umgebung vorhanden sind.
Erstellen Sie ein Inventory von Radionukliden und verfallen Sie wie folgt:
>>> 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} Ein Inventory von 2,0 bq MO-99 wurde 20 Stunden lang verfallen, was die radioaktive Nachkommenschaft TC-99M und TC-99 und den stabilen Nuklid-RU-99 erzeugte.
Wir lieferten 'h' als Argument zum decay() um die Verfallzeit zu festlegen. Zu den unterstützten Zeiteinheiten gehören 'μs' , 'ms' , 's' , 'm' , 'h' , 'd' , 'y' usw. Hinweis Sekunden ( 's' ) ist der Standard, wenn kein Einheit zu decay() geliefert wird.
Verwenden Sie cumulative_decays() um die Gesamtzahl der Atome jedes Radionuklids zu berechnen, die über den Zerfallszeitraum zerfallen:
>>> Mo99_t0.cumulative_decays( 20.0 , ' h ' )
{'Mo-99': 129870.3165339939, 'Tc-99m': 71074.31925850797,
'Tc-99': 0.0002724635511147602} Radionuklide können auf vier äquivalente Weise in radioactivedecay spezifiziert werden: drei Variationen von Nuklidketten oder durch kanonische IDs. Beispielsweise sind die folgenden äquivalenten Möglichkeiten zur Angabe von 222 RN und 192N IR:
'Rn-222' , 'Rn222' , '222Rn' , 862220000 ,,'Ir-192n' , 'Ir192n' , '192nIr' , 771920002 . Inventare können durch die Versorgung von Aktivitäten ( 'Bq' , 'Ci' , 'dpm' ...), Mass ( 'g' , 'kg' ...), Mol ( 'mol' , 'kmol' ...) Einheiten oder Zahlen von Kernen ( 'num' ) zum Inventory() -Bestruktur. Verwenden Sie die Methodenaktivitäten activities() , masses() , moles() , numbers() , activity_fractions() , mass_fractions() und mole_fractions() um den Inhalt des Inventars in verschiedenen Formaten zu erhalten:
>>> 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} Verwenden Sie die plot() -Methode, um den Zerfall eines Inventars im Laufe der Zeit zu grafisch:
>>> Mo99_t0.plot( 20 , ' d ' , yunits = ' Bq ' )Die Grafik zeigt den Zerfall von MO-99 über 20 Tage, was zum Einwachsen von TC-99M und einer Spurenmenge von TC-99 führt. Die Aktivität von RU-99 ist streng Null, da es sich um den stabilen Nuklid am Ende der Zerfallskette handelt. Diagramme werden mit Matplotlib gezeichnet.
Die Nuclide kann verwendet werden, um Zerfallsinformationen für einzelne Radionuklide, z. B. für RN-222, zu erhalten:
>>> 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.01757601699998Es gibt ähnliche Bestandsmethoden zum Abholen von Zerfallsdaten:
>>> 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', 'β-']} Die Nuclide enthält eine plot() -Methode zum Zeichnen von Zerfallskettendiagrammen:
>>> nuc = rd.Nuclide( ' Mo-99 ' )
>>> nuc.plot()Diese Diagramme werden unter Verwendung von NetworkX und Matplotlib gezeichnet.
radioactivedecay enthält eine InventoryHP -Klasse für hohe numerische Präzisionsberechnungen. Diese Klasse kann zuverlässigere Zerfallsberechnungsergebnisse für Ketten liefern, die lang und kurzlebige Radionuklide enthalten:
>>> 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 berechnet eine analytische Lösung für die Differentialgleichungen für radioaktive Zerfallsunterschiede unter Verwendung linearer Algebra -Operationen. Es implementiert die in diesem Artikel beschriebene Methode: m Amaku, PR Pascholati & VR Vanin, Comp. Phys. Comm. 181, 21-23 (2010). Weitere Informationen finden Sie in der Theorie docPage.
Es verwendet Numpy- und Scipy-Routinen für Standard-Zerfall-Berechnungen (Doppelprezisions-Gleitkomma-Operationen) und Sympy für willkürliche numerische Präzisionsberechnungen.
Standardmäßig verwendet radioactivedecay Decay -Daten aus der ICRP -Publikation 107 (2008) und Atommassendaten aus dem Atommassendatenzentrum (AMDC - AME2020 und NUBase2020 Evaluations).
Das Datasets Repo enthält JUPYTER -Notizbücher zum Erstellen von Abklingendatensätzen, die von radioactivedecay , z. B. ICRP 107, verwendet werden können.
Das Vergleiche -Repo enthält einige Überprüfungen von radioactivedecay gegen Pyne und Radiological Toolbox.
Aus dem Basisverzeichnislauf:
$ python -m unittest discover radioactivedecay ist Open -Source -Software, die unter der MIT -Lizenz veröffentlicht wurde. Weitere Informationen finden Sie unter Lizenzdatei.
Die von radioactivedecay (ICRP-107) verwendeten Standardabfalldaten sind Copyright 2008 A. Endo und KF Eckerman und verteilt unter einer separaten Lizenz. Die Standard -Atommassendaten stammen von AMDC (Lizenz).
Wenn Sie dieses Paket für Ihre Forschung nützlich finden, erwägen Sie bitte das Papier in radioactivedecay veröffentlicht im Journal of Open Source Software:
Alex Malins & Thom Lemoine, radioActiveCay: Ein Python -Paket für radioaktive Zerfallberechnungen . Journal of Open Source Software, 7 (71), 3318 (2022). Doi: 10.21105/joss.03318.
Mitwirkenden sind herzlich eingeladen, Fehler zu beheben, neue Funktionen hinzuzufügen oder Feature -Anfragen zu erstellen. Bitte öffnen Sie eine Ausgabe, eine Anfrage oder einen neuen Diskussionsthread im GitHub -Repository.
Bitte lesen Sie die Beitragsrichtlinien.