パッケージはPypiでもリリースされています。
Pypiの読者のために、こちらをお願いします。
私の実験データおよびデータ処理スクリプト、写真、および計算結果(レベル1からレベル4まで)については、USTCPHYSEXPDATAプロジェクトを参照してください。私の実験データ、データ処理スクリプト、図、およびいくつかの結果(実験レベルIからIVまで)は、USTCPHYSEXPDATAプロジェクトにアクセスしてください。
OriginLabやExcelを使用したくないですか? Pythonを試してみてください!
究極の目標は、大規模なオブジェクトの実験データを自動的に処理し、画像を描画し、印刷可能なドキュメントの生成、オンライン印刷システムへのドキュメントの送信のためのツールのセットを構築することです。一般的なデータ処理ニーズのために、単純化と自動化が実現されます。コードのほんの数行で、描画、フィッティング、不確実性の計算などの大規模なオブジェクト実験などの一般的なタスクを完了することができます。
理想と現実の間にはまだ大きなギャップがあります。現在、Matplotlib描画ライブラリ、シンプルなフィッティング、ファイル入力、およびDOCX生成のみがパッケージ化され、繰り返し労働を簡素化しています。
今、私はライブラリをラップし、ライブラリをプロットし、簡単な回帰、簡単なファイル入力、およびdocx生成を実装しました。繰り返し作業を簡素化する。
関連ブログ:私のホームページのUSTCラグページのページ
パッケージをインストールします
マグロミラーを使用して加速します。 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に保存され、生成され./physicsexp/example gen.docxの印刷準備ができていることがわかります。また、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 )さて、プロット!
最初のグラフ:1つの図に3つの曲線。 simple_plotを使用します。プロットラベルでLaTexを使用できます。グラフは1.pngに保存されます。 show=0を使用して、1つの図に複数の行をプロットします。
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番目のグラフ、 2.pngに保存された単純な曲線:
Len = 150
Cnt = Cnt / Len
simple_plot ( Al_num , Cnt , xlab = '铝片数' , ylab = '选区计数率(射线强度)' , title = '$ \ beta$射线强度随铝片数衰减曲线' , save = '2.png' ) 3番目のグラフ、 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 )自分でドキュメントに写真を入れないでください!
単一のコードを使用して、上記の3つの写真とFITの結果を含む印刷可能な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エディターでコーディングよりもはるかに優れていることがわかりました。

また、Jupyterhubは、ユーザーのグループにJupyterノートブックアクセスを提供できます。いくつかの人が実験データ処理スクリプトを互いに共有したい場合の一般的なケースです。
In ./jupyterhubは、JupyterHub:Docker Spawnerを共有した闘争、ダミー認証を実行するために使用されている私の構成です。文字通りセキュリティやアクセス制御はありませんが、プライベートサーバー上の信頼できる人々のグループには受け入れられます。
例を読んだ後に使用する方法を知りたいですか?
あなたはできる:
しかし、それらはあなたのマシンで直接実行し、変化なしに魔法のように正しい答えを与えることを意図していませんが、本当にそれらを実行したい場合は、このリポジトリで
git reset、暗い歴史に飛び込むことが最後の手段です。
ソースコードを自分で読んでください。特にphysicsexp/mainfunc.pyおよびphysicsexp/gendocx.pyほとんどのユースケースをカバーする例がある場合、関数宣言と追加のオプションをチェックアウトするだけです(ライフを簡単にします)。
または問題を開きます。あなたもUSTCの学生である場合は、QQ/電子メールで私に連絡してください。連絡先は私のウェブサイトにあります。
しかし、これらのどれも機能しない場合でも、イライラしないでください。このプロジェクトには、まったく警告がありません。
そして、これらのツールを使用すると効率を高めることができますか?わかりませんが、おそらくできません。
**ただし、これらがより多くの時間を費やしているにもかかわらず、気分が良くなる場合は、使用してください。 **
最後に、このプロジェクトで時間を無駄にする前によく考えて、代わりにあなたの人生を楽しみ、いくつかの本当の物理学を学び、(少年|女の子)友人を見つけてください。
ここ。