Le package est également publié sur PYPI.
Pour les lecteurs de PYPI, ici s'il vous plaît.
Pour mes données expérimentales et mes scripts de traitement des données, les images et les résultats de calcul (du niveau 1 au niveau 4), veuillez vous référer au projet USTCPHYSEXPDATA. Mes données d'expérience, mes scripts de traitement des données, les chiffres et certains résultats (du niveau de l'expérience I à IV), veuillez visiter le projet USTCPHYSEXPDATA.
Vous ne voulez pas utiliser OriginLab ou Excel? Essayez Python!
L'objectif ultime est de créer un ensemble d'outils pour traiter automatiquement les données expérimentales de gros objets, dessiner des images, générer des documents imprimables et soumettre des documents aux systèmes d'impression en ligne; La simplification et l'automatisation sont obtenues pour les besoins communs de traitement des données. Avec seulement quelques lignes de code simples, des tâches courantes telles que les grandes expériences d'objets telles que le dessin, l'ajustement, le calcul de l'incertitude peuvent être terminées.
Il y a encore un grand écart entre l'idéal et la réalité. À l'heure actuelle, seule la bibliothèque de dessin Matplotlib, un ajustement simple, une entrée de fichier et une génération DOCX sont emballés pour simplifier le travail répétitif.
Maintenant, je n'enroula que la bibliothèque de traçage Matplotlib, implémenté une régression simple, une entrée de fichiers faciles et une génération docx . Pour simplifier les œuvres répétitives.
Blog connexe: Pages sur les pages de Lug USTC sur ma page d'accueil
Installer le package
Utilisez le miroir du thon pour accélérer. Des profondeurs comme Numpy et Matplotlib seront installées automatiquement.
pip install -i https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple physicsexp
Testez l'installation (facultative)
>>> from physicsexp.mainfunc import *
>>> from physicsexp.gendocx import *
>>>
Si aucune erreur, vous êtes prêt! Si une erreur se produit, n'hésitez pas à ouvrir un problème.
Exécutez l'exemple de script (recommandé)
python3 ./physicsexp/example/plot.py
Vous verrez des graphiques sortir et enregistrés sur .png, un gen.docx généré prêt à imprimer, et des calculs imprimés à la sortie, dans le répertoire ./physicsexp/example . Vous pouvez également cloner USTCPHYSEXPDATA pour essayer certains cas réels. Ensuite, vous pouvez modifier le code ou écrire votre propre code pour traiter vos données!
Il s'agit d'un exemple de cas réel de saisir plusieurs lignes de données, tracer les données et faire une régression linéaire, et générer un document DOCX imprimable contenant un tracé et analyser les résultats.
Si vous voulez vraiment le savoir, l'expérience consiste à vérifier l'énergie cinétique relative par rapport à la relation de momentum de l'électron (rayon bêta) et de mesurer l'extraction des rayons bêta par des morceaux d'aluminium différentes d'épaisseur.
Tout d'abord, mettez vos données dans data.txt , comme ceci:
# 位置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
Vous pouvez utiliser # pour ajouter quelques lignes de commentaires et e * pour spécifier l'ordre de grandeur - être ainsi en mesure d'écrire directement les données sur papier d'origine sans conversion.
Ensuite, il est temps d'écrire Python
En-têtes et importations
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
from physicsexp . mainfunc import *
from physicsexp . gendocx import * Lisez facilement le fichier avec la fonction readoneline
fin = open ( './data.txt' , 'r' , encoding = 'utf-8' )
pos = readoneline ( fin )
N = readoneline ( fin )
Al_num = readoneline ( fin )
Cnt = readoneline ( fin )
fin . close ()Calculez et imprimez certains résultats. C'est Python, vous pouvez faire ce que vous voulez facilement. (Cette partie n'est pas liée à la bibliothèque, vous pouvez sauter ceci)
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 )Maintenant, complot!
Premier graphique: trois courbes sur une seule figure. Utilisation de simple_plot . Vous pouvez utiliser le latex dans les étiquettes de tracé. Le graphique est enregistré sur 1.png . Utilisez show=0 pour tracer plusieurs lignes sur une seule figure.
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 = '相对论动能' ) Deuxième graphique, une courbe simple, enregistrée sur 2.png :
Len = 150
Cnt = Cnt / Len
simple_plot ( Al_num , Cnt , xlab = '铝片数' , ylab = '选区计数率(射线强度)' , title = '$ \ beta$射线强度随铝片数衰减曲线' , save = '2.png' ) Troisième graphique, une courbe avec un ajustement linéaire, en utilisant simple_linear_plot , enregistré sur 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 )Ne mettez pas les deux photos dans des documents vous-même!
Avec une seule ligne de code, générez un document DOCX imprimable avec les trois images ci-dessus et les résultats de l'ajustement.
gendocx ( 'gen.docx' , '1.png' , '2.png' , '3.png' , 'slope, intercept: %f %f' % ( slope , intercept ))Résultats
Sortir:
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 généré:

N'oubliez pas de changer mon nom par le vôtre.
Plus tard, j'ai découvert que l'utilisation du cahier Jupyter est bien mieux que le codage dans Python Editor:

Et, JupyterHub peut fournir un accès de cahier Jupyter pour un groupe d'utilisateurs: le cas commun lorsque plusieurs personnes souhaitent partager leur script de traitement de données d'expérience entre eux.
Dans ./JupyterHub est ma configuration utilisée pour exécuter JupyterHub: Docker Spawner avec une lutte partagée, une authentification factice. Littéralement pas de sécurité ou de contrôle d'accès mais acceptable pour un groupe de personnes fiables sur un serveur privé.
Tu veux savoir utiliser après avoir lu l'exemple?
Tu peux:
Cependant, ils ne sont pas destinés à exécuter directement sur votre machine et à vous donner par magie la bonne réponse sans aucun changement, mais, si vous voulez vraiment les exécuter, peut-être une
git resetsur ce référentiel et plonger dans l'histoire sombre est le dernier recours.
Lisez le code source vous-même. En particulier physicsexp/mainfunc.py et physicsexp/gendocx.py - Avec l'exemple couvrant la plupart des cas d'utilisation, il vous suffit de consulter la déclaration de la fonction et les options supplémentaires disponibles (elles facilitent la vie).
Ou ouvrez un problème. Si vous êtes également un étudiant de l'USTC, contactez-moi simplement avec QQ / Email. Les contacts sont sur mon site Web.
Mais ne soyez pas frustré si aucun de ces ne fonctionne. Le projet est disponible avec absolument aucun avertissement.
Et l'utilisation de ces outils peut-elle augmenter votre efficacité? Je ne sais pas, mais je ne peux probablement pas.
** Cependant, si cela peut vous faire vous sentir mieux malgré le fait de passer plus de temps, utilisez-le. **
Enfin, réfléchissez à deux fois avant de perdre du temps sur ce projet, profitez plutôt de votre vie, apprenez une vraie physique et trouvez un ami (garçon | fille).
Ici.