radioactivedecay adalah paket Python untuk perhitungan peluruhan radioaktif. Ini mendukung rantai peluruhan radionuklida, keadaan metastabil dan peluruhan percabangan. Secara default menggunakan data peluruhan dari publikasi ICRP 107, yang berisi 1252 radionuklida dari 97 elemen, dan data massa atom dari pusat data massa atom.
Kode ini memecahkan persamaan diferensial peluruhan radioaktif secara analitik menggunakan rutinitas aljabar linier numpy dan scipy. Ada juga mode perhitungan presisi numerik tinggi yang menggunakan rutinitas simpy. Ini memberikan hasil yang lebih akurat untuk rantai peluruhan yang mengandung radionuklida dengan urutan perbedaan besarnya antara waktu paruh.
Ini adalah perangkat lunak open source gratis. Itu dibuat untuk para insinyur, teknisi, dan peneliti yang bekerja dengan radioaktivitas, dan untuk penggunaan pendidikan.
radioactivedecay membutuhkan Python 3.8+. Instal radioactivedecay dari indeks paket Python menggunakan pip :
$ pip install radioactivedecayatau dari conda-forge:
$ conda install -c conda-forge radioactivedecayPerintah mana pun akan mencoba menginstal dependensi (Matplotlib, NetworkX, Numpy, Panda, Scipy, Setuptools & Sympy) jika belum ada di lingkungan.
Buat Inventory Radionuklida dan Membusuk sebagai berikut:
>>> 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} Inventory 2,0 BQ MO-99 membusuk selama 20 jam, menghasilkan progeni radioaktif TC-99M dan TC-99, dan nuklida RU-99 yang stabil.
Kami memasok 'h' sebagai argumen untuk decay() untuk menentukan periode waktu peluruhan memiliki unit jam. Unit waktu yang didukung termasuk 'μs' , 'ms' , 's' , 'm' , 'h' , 'd' , 'y' dll. Catatan detik ( 's' ) adalah default jika tidak ada unit yang disuplai untuk decay() .
Gunakan cumulative_decays() untuk menghitung jumlah total atom dari setiap radionuklida yang membusuk selama periode waktu peluruhan:
>>> Mo99_t0.cumulative_decays( 20.0 , ' h ' )
{'Mo-99': 129870.3165339939, 'Tc-99m': 71074.31925850797,
'Tc-99': 0.0002724635511147602} Radionuklida dapat ditentukan dalam empat cara yang setara dalam radioactivedecay : tiga variasi string nuklida atau dengan ID kanonik. Misalnya, berikut ini adalah cara yang setara untuk menentukan 222 RN dan 192N IR:
'Rn-222' , 'Rn222' , '222Rn' , 862220000 ,'Ir-192n' , 'Ir192n' , '192nIr' , 771920002 . Inventaris dapat dibuat dengan memasok aktivitas ( 'Bq' , 'Ci' , 'dpm' ...), massa ( 'g' , 'kg' ...), mol ( 'mol' , 'kmol' ...) unit, atau jumlah inti ( 'num' ) ke konstruktor Inventory() . Gunakan metode activities() , masses() , moles() , numbers() , activity_fractions() , mass_fractions() dan mole_fractions() untuk mendapatkan isi inventaris dalam format yang berbeda:
>>> 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} Gunakan metode plot() untuk membuat grafik pembusukan inventaris dari waktu ke waktu:
>>> Mo99_t0.plot( 20 , ' d ' , yunits = ' Bq ' )Grafik menunjukkan pembusukan MO-99 selama 20 hari, yang mengarah ke pertumbuhan TC-99M dan jumlah jejak TC-99. Aktivitas RU-99 benar-benar nol karena merupakan nuklida yang stabil di ujung rantai peluruhan. Grafik digambar menggunakan matplotlib.
Kelas Nuclide dapat digunakan untuk mengambil informasi peluruhan untuk radionuklida individu, misalnya untuk 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.01757601699998Ada metode inventaris yang serupa untuk mengambil data peluruhan:
>>> 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', 'β-']} Kelas Nuclide mencakup metode plot() untuk menggambar diagram rantai peluruhan:
>>> nuc = rd.Nuclide( ' Mo-99 ' )
>>> nuc.plot()Diagram ini ditarik menggunakan NetworkX dan Matplotlib.
radioactivedecay mencakup kelas InventoryHP untuk perhitungan presisi numerik tinggi. Kelas ini dapat memberikan hasil perhitungan peluruhan yang lebih andal untuk rantai yang mengandung radionuklida berumur panjang dan pendek:
>>> 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 menghitung solusi analitik dengan persamaan diferensial peluruhan radioaktif menggunakan operasi aljabar linier. Ini mengimplementasikan metode yang dijelaskan dalam makalah ini: M Amaku, PR Pascholati & VR Vanin, comp. Phys. Comm. 181, 21-23 (2010). Lihat teori docpage untuk lebih jelasnya.
Ini menggunakan rutinitas numpy dan scipy untuk perhitungan pembusukan standar (operasi floating-point presisi ganda), dan sympy untuk perhitungan presisi numerik yang sewenang-wenang.
Secara default radioactivedecay menggunakan data peluruhan dari publikasi ICRP 107 (2008) dan data massa atom dari pusat data massa atom (AMDC - AME2020 dan evaluasi Nubase2020).
Repo dataset berisi jupyter notebook untuk membuat kumpulan data peluruhan yang dapat digunakan oleh radioactivedecay , misalnya ICRP 107.
Perbandingan repo berisi beberapa pemeriksaan radioactivedecay terhadap Pyne dan kotak alat radiologis.
Dari Direktori Dasar Run:
$ python -m unittest discover radioactivedecay adalah perangkat lunak open source yang dirilis di bawah lisensi MIT. Lihat file lisensi untuk detailnya.
Data peluruhan default yang digunakan oleh radioactivedecay (ICRP-107) adalah Hak Cipta 2008 A. Endo dan KF Eckerman dan didistribusikan di bawah lisensi terpisah. Data massa atom default berasal dari AMDC (lisensi).
Jika Anda menemukan paket ini berguna untuk penelitian Anda, harap pertimbangkan mengutip makalah di radioactivedecay yang diterbitkan dalam Journal of Open Source Software:
Alex Malins & Thom Lemoine, RadioactiveDecay: Paket Python untuk perhitungan peluruhan radioaktif . Jurnal Perangkat Lunak Open Source, 7 (71), 3318 (2022). Doi: 10.21105/joss.03318.
Kontributor dipersilakan untuk memperbaiki bug, menambahkan fitur baru atau membuat permintaan fitur. Harap buka masalah, tarik permintaan, atau utas diskusi baru di Github Repository.
Harap baca pedoman kontribusi.