radioactivedecay เป็นแพ็คเกจ Python สำหรับการคำนวณการสลายตัวของกัมมันตภาพรังสี รองรับโซ่การสลายตัวของนิวเคลียร์กัมมันตรังสีรัฐที่แพร่กระจายได้และการสลายตัวของการแตกแขนง โดยค่าเริ่มต้นจะใช้ข้อมูลการสลายตัวจากสิ่งพิมพ์ ICRP 107 ซึ่งมีกัมมันตภาพรังสี 1252 องค์ประกอบ 97 องค์ประกอบและข้อมูลมวลอะตอมจากศูนย์ข้อมูลมวลอะตอม
รหัสแก้สมการเชิงอนุพันธ์การสลายตัวของกัมมันตภาพรังสีวิเคราะห์โดยใช้ NumPy และ SCIPY เชิงเส้นเชิงเส้น นอกจากนี้ยังมีโหมดการคำนวณความแม่นยำเชิงตัวเลขสูงโดยใช้กิจวัตรประจำวัน สิ่งนี้ให้ผลลัพธ์ที่แม่นยำยิ่งขึ้นสำหรับโซ่การสลายตัวที่มีนิวไคลด์กัมมันตรังสีที่มีคำสั่งของความแตกต่างของขนาดระหว่างครึ่งชีวิต
นี่คือซอฟต์แวร์โอเพนซอร์สฟรีที่ใช้งานได้ฟรี มันถูกสร้างขึ้นสำหรับวิศวกรช่างเทคนิคและนักวิจัยที่ทำงานกับกัมมันตภาพรังสีและเพื่อการศึกษา
radioactivedecay ต้องใช้ Python 3.8+ ติดตั้ง radioactivedecay จากดัชนีแพ็คเกจ Python โดยใช้ pip :
$ pip install radioactivedecayหรือจาก Conda-Forge:
$ 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} Inventory 2.0 BQ ของ MO-99 ถูกสลายตัวเป็นเวลา 20 ชั่วโมงผลิตลูกหลานกัมมันตรังสี TC-99M และ TC-99 และ Nuclide RU-99 ที่มีเสถียรภาพ
เราจัดหา 'h' เป็นอาร์กิวเมนต์ที่จะ decay() เพื่อระบุช่วงเวลาการสลายตัวมีหน่วยชั่วโมง หน่วยเวลาที่รองรับ ได้แก่ 'μs' , 'ms' , 's' , 'm' , 'h' , 'd' , 'y' ฯลฯ หมายเหตุวินาที ( 's' ) เป็นค่าเริ่มต้นหากไม่มีหน่วยที่จะ decay()
ใช้ cumulative_decays() เพื่อคำนวณจำนวนทั้งหมดของอะตอมของแต่ละกัมมันตภาพรังสีที่สลายตัวในช่วงเวลาการสลายตัว:
>>> Mo99_t0.cumulative_decays( 20.0 , ' h ' )
{'Mo-99': 129870.3165339939, 'Tc-99m': 71074.31925850797,
'Tc-99': 0.0002724635511147602} Radionuclides สามารถระบุได้ในสี่วิธีที่เทียบเท่าใน radioactivedecay : สามรูปแบบของสตริงนิวไคลด์หรือโดย ID ที่เป็นที่ยอมรับ ตัวอย่างเช่นต่อไปนี้เป็นวิธีที่เทียบเท่าในการระบุ 222 RN และ 192N IR:
'Rn-222' , 'Rn222' , '222Rn' , 862220000 ,'Ir-192n' , 'Ir192n' , '192nIr' , 771920002 สินค้าคงเหลือสามารถสร้างขึ้นได้โดยการจัดหากิจกรรม ( 'Bq' , 'Ci' , 'dpm' ... ), มวล ( 'g' , 'kg' ... ), โมล ( '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 ' )กราฟแสดงการสลายตัวของ MO-99 ในช่วง 20 วันซึ่งนำไปสู่การเข้าสู่ 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 Publication 107 (2008) และข้อมูลมวลอะตอมจากศูนย์ข้อมูลมวลอะตอม (AMDC - AME2020 และ NUBASE2020 การประเมินผล)
ชุดข้อมูล repo มีสมุดบันทึก Jupyter สำหรับการสร้างชุดข้อมูลการสลายตัวที่สามารถใช้งานได้โดย radioactivedecay เช่น ICRP 107
การเปรียบเทียบ repo มีการตรวจสอบบางส่วนของ radioactivedecay กับ Pyne และกล่องเครื่องมือรังสี
จากไดเรกทอรีพื้นฐานรัน:
$ python -m unittest discover radioactivedecay เป็นซอฟต์แวร์โอเพ่นซอร์สที่เปิดตัวภายใต้ใบอนุญาต MIT ดูไฟล์ใบอนุญาตสำหรับรายละเอียด
ข้อมูลการสลายตัวเริ่มต้นที่ใช้โดย radioactivedecay (ICRP-107) คือลิขสิทธิ์ 2008 A. Endo และ KF Eckerman และแจกจ่ายภายใต้ใบอนุญาตแยกต่างหาก ข้อมูลมวลอะตอมเริ่มต้นมาจาก AMDC (ใบอนุญาต)
หากคุณพบว่าแพ็คเกจนี้มีประโยชน์สำหรับการวิจัยของคุณโปรดพิจารณาอ้างถึงบทความเกี่ยวกับ radioactivedecay ที่เผยแพร่ในวารสารซอฟต์แวร์โอเพ่นซอร์ส:
Alex Malins & Thom Lemoine, RadioActiedingecay: แพ็คเกจ Python สำหรับการคำนวณการสลายตัวของกัมมันตภาพรังสี วารสารซอฟต์แวร์โอเพ่นซอร์ส, 7 (71), 3318 (2022) ดอย: 10.21105/joss.03318
ผู้ร่วมให้ข้อมูลสามารถแก้ไขข้อบกพร่องเพิ่มคุณสมบัติใหม่หรือส่งคำขอคุณสมบัติ กรุณาเปิดปัญหาดึงคำขอหรือกระทู้การอภิปรายใหม่ที่พื้นที่เก็บข้อมูล GitHub
โปรดอ่านแนวทางการบริจาค