Paket ini juga dirilis di PYPI.
Untuk pembaca dari PYPI, di sini.
Untuk data eksperimental saya dan skrip pemrosesan data, gambar, dan hasil perhitungan (dari level 1 ke level 4), silakan merujuk ke proyek USTCPHYSEXPData. Data percobaan saya, skrip pemrosesan data, angka, dan beberapa hasil (dari tingkat percobaan I hingga IV), silakan kunjungi proyek USTCPHYSEXPData.
Tidak ingin menggunakan OriginLab atau Excel? Coba Python!
Tujuan utamanya adalah untuk membangun seperangkat alat untuk secara otomatis memproses data eksperimental objek besar, menggambar gambar, menghasilkan dokumen yang dapat dicetak, dan mengirimkan dokumen ke sistem pencetakan online; Menyederhanakan dan otomatisasi dicapai untuk kebutuhan pemrosesan data umum. Dengan hanya beberapa baris kode sederhana, tugas umum seperti eksperimen objek besar seperti menggambar, pemasangan, perhitungan ketidakpastian dapat diselesaikan.
Masih ada kesenjangan besar antara ideal dan kenyataan. Saat ini, hanya perpustakaan gambar matplotlib, pemasangan sederhana, input file, dan pembuatan DOCX yang dikemas untuk menyederhanakan tenaga kerja berulang.
Sekarang saya hanya membungkus perpustakaan plot matplotlib, menerapkan regresi sederhana, input file yang mudah, dan pembuatan docx . Untuk menyederhanakan karya yang berulang.
Blog Terkait: Halaman di USTC Lug Pages di beranda saya
Instal paket
Gunakan cermin tuna untuk mempercepat. Depenceency seperti Numpy dan Matplotlib akan diinstal secara otomatis.
pip install -i https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple physicsexp
Uji instalasi (opsional)
>>> from physicsexp.mainfunc import *
>>> from physicsexp.gendocx import *
>>>
Jika tidak ada kesalahan maka Anda siap! Jika kesalahan terjadi, jangan ragu untuk membuka masalah.
Jalankan contoh skrip (disarankan)
python3 ./physicsexp/example/plot.py
Anda akan melihat grafik muncul dan disimpan ke .png, gen.docx yang dihasilkan siap untuk dicetak, dan perhitungan yang dicetak ke output, di direktori ./physicsexp/example . Anda juga dapat mengkloning USTCPHYSEXPData untuk mencoba beberapa kasus kehidupan nyata. Kemudian Anda dapat memodifikasi kode atau menulis kode Anda sendiri untuk memproses data Anda!
Ini adalah contoh nyata dari input beberapa baris data, memplot data dan melakukan regresi linier, dan menghasilkan dokumen DOCX yang dapat dicetak yang berisi plot dan menganalisis hasil.
Jika Anda benar-benar ingin tahu, percobaan ini adalah tentang memverifikasi energi kinetik relatif vs hubungan momentum elektron (beta-ray) dan mengukur ekstraksi-ray beta dengan potongan aluminium dengan ketebalan yang berbeda.
Pertama, masukkan data Anda di data.txt , seperti ini:
# 位置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
Anda dapat menggunakan # untuk menambahkan beberapa baris komentar, dan e * untuk menentukan urutan besarnya-sehingga dapat secara langsung menuliskan data on-paper asli tanpa konversi.
Maka saatnya untuk menulis ular sanca
Header & impor
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
from physicsexp . mainfunc import *
from physicsexp . gendocx import * Baca file dengan mudah dengan fungsi readoneline
fin = open ( './data.txt' , 'r' , encoding = 'utf-8' )
pos = readoneline ( fin )
N = readoneline ( fin )
Al_num = readoneline ( fin )
Cnt = readoneline ( fin )
fin . close ()Hitung dan cetak beberapa hasil. Ini Python, Anda dapat melakukan apa pun yang Anda suka dengan mudah. (Bagian ini tidak terkait dengan perpustakaan, Anda dapat melewatkan ini)
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 )Sekarang, plot!
Grafik pertama: tiga kurva dalam satu gambar. Menggunakan simple_plot . Anda dapat menggunakan lateks dalam label plot. Grafik disimpan ke 1.png . Gunakan show=0 untuk memplot beberapa baris pada satu gambar.
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 = '相对论动能' ) Grafik kedua, kurva sederhana, disimpan ke 2.png :
Len = 150
Cnt = Cnt / Len
simple_plot ( Al_num , Cnt , xlab = '铝片数' , ylab = '选区计数率(射线强度)' , title = '$ \ beta$射线强度随铝片数衰减曲线' , save = '2.png' ) Grafik ketiga, kurva dengan kecocokan linier, menggunakan simple_linear_plot , disimpan ke 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 )Jangan berdua menempatkan gambar di dokumen sendiri!
Dengan satu baris kode, hasilkan dokumen DOCX yang dapat dicetak dengan tiga gambar di atas dan hasil FIT.
gendocx ( 'gen.docx' , '1.png' , '2.png' , '3.png' , 'slope, intercept: %f %f' % ( slope , intercept ))Hasil
Keluaran:
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 yang dihasilkan:

Jangan lupa mengubah nama saya menjadi Anda.
Kemudian saya menemukan bahwa menggunakan jupyter notebook jauh lebih baik daripada pengkodean di python editor:

Dan, JupyterHub dapat memberikan akses notebook Jupyter untuk sekelompok pengguna: kasus umum ketika beberapa orang ingin berbagi skrip pemrosesan data eksperimen mereka satu sama lain.
Dalam ./jupyterhub adalah konfigurasi saya yang digunakan untuk menjalankan JupyterHub: Docker Spawner dengan perjuangan bersama, otentikasi dummy. Secara harfiah tidak ada keamanan atau kontrol akses tetapi dapat diterima untuk sekelompok orang yang dapat dipercaya di server pribadi.
Ingin tahu cara menggunakan setelah membaca contohnya?
Anda bisa:
Namun, mereka tidak dimaksudkan untuk berjalan langsung di mesin Anda dan secara ajaib memberi Anda jawaban yang benar tanpa perubahan, tetapi, jika Anda benar -benar ingin menjalankannya, mungkin
git resetpada repositori ini dan menyelam ke dalam sejarah gelap adalah pilihan terakhir.
Baca kode sumber sendiri. Terutama physicsexp/mainfunc.py dan physicsexp/gendocx.py - dengan contoh yang mencakup sebagian besar kasus penggunaan, Anda hanya perlu memeriksa deklarasi fungsi dan opsi tambahan yang tersedia (mereka membuat hidup lebih mudah).
Atau buka masalah. Jika Anda juga seorang siswa USTC, cukup hubungi saya dengan QQ/Email. Kontak ada di situs web saya.
Tapi jangan frustrasi jika tidak ada yang berhasil. Proyek ini datang tanpa peringatan sama sekali.
Dan dapat menggunakan alat ini meningkatkan efisiensi Anda? Saya tidak tahu, tapi mungkin tidak bisa.
** Namun, jika ini dapat membuat Anda merasa lebih baik meskipun menghabiskan lebih banyak waktu, gunakan. **
Akhirnya, pikirkan dua kali sebelum membuang -buang waktu pada proyek ini, sebagai gantinya, nikmati hidup Anda, pelajari beberapa fisika nyata, dan temukan teman (laki -laki | perempuan).
Di Sini.