แพ็คเกจยังวางจำหน่ายใน PYPI
สำหรับผู้อ่านจาก PYPI โปรดที่นี่
สำหรับข้อมูลการทดลองและสคริปต์การประมวลผลข้อมูลรูปภาพและผลการคำนวณ (จากระดับ 1 ถึงระดับ 4) โปรดดูโครงการ USTCPHYSEXPDATA ข้อมูลการทดลองของฉันสคริปต์การประมวลผลข้อมูลตัวเลขและผลลัพธ์บางอย่าง (จากระดับการทดลองที่ 1 ถึง IV) กรุณาเยี่ยมชมโครงการ USTCPHYSEXPDATA
ไม่ต้องการใช้ Originlab หรือ Excel? ลอง Python!
เป้าหมายสูงสุดคือการสร้างชุดเครื่องมือสำหรับการประมวลผลข้อมูลการทดลองวัตถุขนาดใหญ่โดยอัตโนมัติการวาดภาพสร้างเอกสารที่พิมพ์ได้และส่งเอกสารไปยังระบบการพิมพ์ออนไลน์ การทำให้เข้าใจง่ายและระบบอัตโนมัติสามารถทำได้สำหรับความต้องการการประมวลผลข้อมูลทั่วไป ด้วยรหัสง่าย ๆ เพียงไม่กี่บรรทัดงานทั่วไปเช่นการทดลองวัตถุขนาดใหญ่เช่นการวาดการปรับการคำนวณความไม่แน่นอนสามารถเสร็จสิ้นได้
ยังคงมีช่องว่างขนาดใหญ่ระหว่างอุดมคติและความเป็นจริง ในปัจจุบันมีเพียงไลบรารีการวาด Matplotlib, การติดตั้งแบบง่าย, การป้อนข้อมูลไฟล์และการสร้าง DOCX เท่านั้นที่บรรจุเพื่อลดความซับซ้อนของแรงงานซ้ำ ๆ
ตอนนี้ฉันห่อไลบรารีการพล็อต Matplotlib เท่านั้น, ใช้การถดถอยอย่างง่าย, อินพุตไฟล์ง่ายและการสร้าง docx เพื่อลดความซับซ้อนของการทำงานที่ซ้ำซ้อน
บล็อกที่เกี่ยวข้อง: หน้าบนหน้าดึง USTC ในหน้าแรกของฉัน
ติดตั้งแพ็คเกจ
ใช้กระจกทูน่าเพื่อเร่งความเร็ว Depenceencies เช่น numpy และ matplotlib จะถูกติดตั้งโดยอัตโนมัติ
pip install -i https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple physicsexp
ทดสอบการติดตั้ง (ไม่บังคับ)
>>> from physicsexp.mainfunc import *
>>> from physicsexp.gendocx import *
>>>
ถ้าไม่มีข้อผิดพลาดคุณก็พร้อมแล้ว! หากเกิดข้อผิดพลาดโปรดเปิดปัญหา
เรียกใช้สคริปต์ตัวอย่าง (แนะนำ)
python3 ./physicsexp/example/plot.py
คุณจะเห็นกราฟโผล่ออกมาและบันทึกไปยัง. png, Gen.docx ที่สร้างขึ้นพร้อมพิมพ์และการคำนวณที่พิมพ์ไปยังเอาต์พุตในไดเรกทอรี ./physicsexp/example example นอกจากนี้คุณยังสามารถโคลน USTCPHYSEXPDATA เพื่อลองกรณีชีวิตจริง จากนั้นคุณสามารถแก้ไขรหัสหรือเขียนโค้ดของคุณเองเพื่อประมวลผลข้อมูลของคุณ!
มันเป็นตัวอย่างกรณีจริงของอินพุตหลายบรรทัดของข้อมูลพล็อตข้อมูลและทำการถดถอยเชิงเส้นและสร้างเอกสาร DOCX ที่พิมพ์ได้ซึ่งมีพล็อตและวิเคราะห์ผลลัพธ์
หากคุณต้องการทราบการทดลองเกี่ยวกับการตรวจสอบพลังงานจลน์สัมพัทธ์กับความสัมพันธ์โมเมนตัมของอิเล็กตรอน (เบต้าเรย์) และการวัดการสกัดเบต้าเรย์โดยชิ้นส่วนอลูมิเนียมที่มีความหนาแตกต่างกัน
ก่อนอื่นใส่ข้อมูลของคุณใน data.txt เช่นนี้:
# 位置x
e -2
23. 24.2 25.5 26.5 27.7 29. 30.5 31.8
# 峰位N
245.77 291.79 336.40 378.52 417.94 456.14 510.12 544.95
# 铝片数量M
0 1 2 3 4 5
# 选区计数N
43901 34258 28725 23670 19386 16866
คุณสามารถใช้ # เพื่อเพิ่มความคิดเห็นบางบรรทัดและ e * เพื่อระบุลำดับของขนาด-ดังนั้นสามารถเขียนข้อมูลบนกระดาษต้นฉบับได้โดยตรงโดยไม่ต้องแปลง
แล้วถึงเวลาเขียน Python
ส่วนหัวและการนำเข้า
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
from physicsexp . mainfunc import *
from physicsexp . gendocx import * อ่านไฟล์ได้อย่างง่ายดายด้วยฟังก์ชั่น readoneline
fin = open ( './data.txt' , 'r' , encoding = 'utf-8' )
pos = readoneline ( fin )
N = readoneline ( fin )
Al_num = readoneline ( fin )
Cnt = readoneline ( fin )
fin . close ()คำนวณและพิมพ์ผลลัพธ์บางอย่าง นี่คือ Python คุณสามารถทำอะไรก็ได้ที่คุณชอบได้อย่างง่ายดาย (ส่วนนี้ไม่เกี่ยวข้องกับห้องสมุดคุณสามารถข้ามสิ่งนี้ได้)
a = 2.373e-3
b = - .0161
dEk = .20
c0 = 299792458.
MeV = 1e6 * electron
Emeasure = a * N + b + dEk
x0 = .10
R = ( pos - x0 ) / 2
B = 640.01e-4
Momentum = 300 * B * R
Eclassic = (( Momentum * MeV ) ** 2 / ( 2 * me * c0 ** 2 )) / MeV
Erela = np . array ([ math . sqrt (( i * MeV ) ** 2 + ( me * c0 ** 2 ) ** 2 ) - me * c0 ** 2 for i in Momentum ]) / MeV
print ( 'pos t ' , pos )
print ( 'R t ' , R * 100 )
print ( 'pc t ' , Momentum )
print ( 'N t ' , N )
print ( 'Eclas t ' , Eclassic )
print ( 'Erela t ' , Erela )
print ( 'Emes t ' , Emeasure )ตอนนี้พล็อต!
กราฟแรก: สามเส้นโค้งในรูปเดียว ใช้ simple_plot คุณสามารถใช้ Latex ในฉลากพล็อต กราฟถูกบันทึกไว้ที่ 1.png ใช้ show=0 เพื่อพล็อตหลายบรรทัดในรูปเดียว
simple_plot ( Momentum , Emeasure , show = 0 , issetrange = 0 , dot = '+' , lab = '测量动能' )
simple_plot ( Momentum , Eclassic , show = 0 , issetrange = 0 , dot = '*' , lab = '经典动能' )
simple_plot ( Momentum , Erela , dot = 'o' , save = '1.png' , issetrange = 0 , xlab = '$pc/MeV$' , ylab = '$E/MeV$' , title = '电子动能随动量变化曲线' , lab = '相对论动能' ) กราฟที่สองเส้นโค้งง่าย ๆ บันทึกไว้ที่ 2.png :
Len = 150
Cnt = Cnt / Len
simple_plot ( Al_num , Cnt , xlab = '铝片数' , ylab = '选区计数率(射线强度)' , title = '$ \ beta$射线强度随铝片数衰减曲线' , save = '2.png' ) กราฟที่สามเส้นโค้งที่มีพอดีเชิงเส้นโดยใช้ simple_linear_plot บันทึกไว้ที่ 3.png :
CntLn = np . log ( Cnt )
d = 50
Al_Real = Al_num * d
slope , intercept = simple_linear_plot ( Al_Real , CntLn , xlab = '质量厚度$g/cm^{-2}$' , ylab = '选区计数率对数(射线强度)' , title = '半对数曲线曲线' , save = '3.png' )
print ( - slope )
print ( math . log ( 1e4 ) / ( - slope ))
print (( math . log ( Cnt [ 0 ]) - 4 * math . log ( 10 ) - intercept ) / slope )อย่าใส่ภาพในเอกสารด้วยตัวเอง!
ด้วยรหัสบรรทัดเดียวสร้างเอกสาร DOCX ที่พิมพ์ได้ด้วยรูปภาพสามภาพด้านบนและผลลัพธ์ที่เหมาะสม
gendocx ( 'gen.docx' , '1.png' , '2.png' , '3.png' , 'slope, intercept: %f %f' % ( slope , intercept ))ผลลัพธ์
เอาท์พุท:
pos [0.23 0.242 0.255 0.265 0.277 0.29 0.305 0.318]
R [ 6.5 7.1 7.75 8.25 8.85 9.5 10.25 10.9 ]
pc [1.2480195 1.3632213 1.48802325 1.58402475 1.69922655 1.8240285
1.96803075 2.0928327 ]
N [245.77 291.79 336.4 378.52 417.94 456.14 510.12 544.95]
Eclas [1.52375616 1.81804848 2.16616816 2.45469003 2.82471934 3.25488743
3.78910372 4.28491053]
Erela [0.83752628 0.94478965 1.0622588 1.15334615 1.26333503 1.3831891
1.52222218 1.64324566]
Emes [0.76711221 0.87631767 0.9821772 1.08212796 1.17567162 1.26632022
1.39441476 1.47706635]
0.0038199159787357996
2411.136900195471
2402.45428200782
Docx ที่สร้างขึ้น:

อย่าลืมเปลี่ยนชื่อเป็นของคุณ
หลังจากนั้นฉันพบว่าการใช้สมุดบันทึก Jupyter นั้นดีกว่าการเข้ารหัสใน Python Editor:

และ JupyterHub สามารถให้การเข้าถึงสมุดบันทึก Jupyter สำหรับกลุ่มผู้ใช้: กรณีทั่วไปเมื่อหลายคนต้องการแบ่งปันสคริปต์การประมวลผลข้อมูลการทดสอบซึ่งกันและกัน
ใน ./JupyterHub เป็นค่ากำหนดของฉันที่ใช้ในการเรียกใช้ JupyterHub: Docker Spawner ด้วยการต่อสู้ที่ใช้ร่วมกันการพิสูจน์ตัวตนแบบจำลอง ไม่มีการควบคุมความปลอดภัยหรือการควบคุมการเข้าถึง แต่เป็นที่ยอมรับสำหรับกลุ่มคนที่เชื่อถือได้บนเซิร์ฟเวอร์ส่วนตัว
อยากรู้วิธีใช้หลังจากอ่านตัวอย่าง?
คุณสามารถ:
อย่างไรก็ตามพวกเขาไม่ได้ตั้งใจที่จะทำงานโดยตรงบนเครื่องของคุณและให้คำตอบที่ถูกต้องอย่างน่าอัศจรรย์โดยไม่มีการเปลี่ยนแปลงใด ๆ แต่ถ้าคุณต้องการเรียกใช้พวกเขาจริงๆบางที
git resetในที่เก็บนี้และดำน้ำในประวัติศาสตร์มืดเป็นทางเลือกสุดท้าย
อ่านซอร์สโค้ดด้วยตัวคุณเอง โดยเฉพาะอย่างยิ่ง physicsexp/mainfunc.py และ physicsexp/gendocx.py - ด้วยตัวอย่างที่ครอบคลุมกรณีการใช้งานส่วนใหญ่คุณเพียงแค่ต้องตรวจสอบการประกาศฟังก์ชั่นและตัวเลือกพิเศษที่มีอยู่ (ทำให้ชีวิตง่ายขึ้น)
หรือเปิดปัญหา หากคุณเป็นนักเรียน USTC เพียงแค่ติดต่อฉันด้วย QQ/อีเมล ผู้ติดต่ออยู่ในเว็บไซต์ของฉัน
แต่อย่าหงุดหงิดถ้าไม่มีงานเหล่านี้ โครงการมาพร้อมกับการเตือนอย่างแน่นอน
และการใช้เครื่องมือเหล่านี้ช่วยเพิ่มประสิทธิภาพของคุณได้หรือไม่? ฉันไม่รู้ แต่อาจจะทำไม่ได้
** อย่างไรก็ตามหากสิ่งเหล่านี้สามารถทำให้คุณรู้สึกดีขึ้นแม้จะใช้เวลามากขึ้นให้ใช้มัน -
ในที่สุดคิดสองครั้งก่อนที่จะเสียเวลาในโครงการนี้แทนสนุกกับชีวิตเรียนรู้ฟิสิกส์จริงและค้นหาเพื่อน (เด็กผู้ชาย | เด็กผู้หญิง)
ที่นี่.