El paquete también se lanza en PYPI.
Para los lectores de Pypi, aquí, por favor.
Para mis scripts, imágenes y resultados de cálculo de datos experimentales y de procesamiento de datos (del nivel 1 al nivel 4), consulte el proyecto USTCPHYSEXPDATA. Los datos de mi experimento, los scripts de procesamiento de datos, las cifras y algunos resultados (desde el nivel de experimento I hasta IV), visite el proyecto USTCPHYSEXPDATA.
¿No quieres usar OriginLab o Excel? ¡Prueba Python!
El objetivo final es crear un conjunto de herramientas para procesar automáticamente datos experimentales de objetos grandes, dibujar imágenes, generar documentos imprimibles y enviar documentos a sistemas de impresión en línea; Se logra simplificar y automatización para las necesidades comunes de procesamiento de datos. Con solo unas pocas líneas de código simples, se pueden completar tareas comunes, como experimentos de objetos grandes, como dibujo, ajuste, cálculo de incertidumbre.
Todavía hay una gran brecha entre el ideal y la realidad. En la actualidad, solo se empaquetan la biblioteca de dibujo Matplotlib, el ajuste simple, la entrada de archivos y la generación DOCX para simplificar la mano de obra repetitiva.
Ahora solo envolví la biblioteca de trazado de matlotlib, implementé una regresión simple, entrada de archivo fácil y generación docx . Para simplificar las obras repetidas.
Blog relacionado: páginas en USTC Lug Pages en mi página de inicio
Instalar el paquete
Use el espejo de atún para acelerar. Las dependencias como Numpy y Matplotlib se instalarán automáticamente.
pip install -i https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple physicsexp
Prueba la instalación (opcional)
>>> from physicsexp.mainfunc import *
>>> from physicsexp.gendocx import *
>>>
Si no hay error, ¡entonces está listo! Si se produce un error, no dude en abrir un problema.
Ejecute el script de ejemplo (recomendado)
python3 ./physicsexp/example/plot.py
Verá gráficos aparecidos y guardados en .png, un gen.docx generado listo para imprimir, y los cálculos impresos a la salida, en el directorio ./physicsexp/example . También puede clonar USTCPHYSEXPDATA para probar algunos casos de la vida real. ¡Entonces puede modificar el código o escribir su propio código para procesar sus datos!
Es un ejemplo real de ingresar varias líneas de datos, trazar los datos y hacer regresión lineal, y generar un documento DOCX imprimible que contiene gráficos y analizar resultados.
Si realmente quiere saber, el experimento se trata de verificar la energía cinética relativa frente a la relación de momento del electrón (rayos beta) y medir la extracción de rayos beta por piezas de aluminio de espesor diferente.
Primero, coloque sus datos en data.txt , así:
# 位置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
Puede usar # para agregar algunas líneas de comentarios y e * para especificar el orden de magnitud, por lo tanto, poder escribir directamente los datos originales en papel sin conversión.
Entonces es hora de escribir Python
Encabezados e importaciones
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
from physicsexp . mainfunc import *
from physicsexp . gendocx import * Lea el archivo fácilmente con la función readoneline
fin = open ( './data.txt' , 'r' , encoding = 'utf-8' )
pos = readoneline ( fin )
N = readoneline ( fin )
Al_num = readoneline ( fin )
Cnt = readoneline ( fin )
fin . close ()Calcule e imprima algunos resultados. Este es Python, puedes hacer lo que quieras fácilmente. (Esta parte no está relacionada con la biblioteca, puede omitir esto)
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 )¡Ahora, trama!
Primer gráfico: tres curva en una figura. Usando simple_plot . Puedes usar látex en las etiquetas de la trama. El gráfico se guarda en 1.png . Use show=0 para trazar varias líneas en una figura.
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 = '相对论动能' ) Segundo gráfico, una curva simple, guardada en 2.png :
Len = 150
Cnt = Cnt / Len
simple_plot ( Al_num , Cnt , xlab = '铝片数' , ylab = '选区计数率(射线强度)' , title = '$ \ beta$射线强度随铝片数衰减曲线' , save = '2.png' ) Tercer gráfico, una curva con un ajuste lineal, usando simple_linear_plot , guardado en 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 )¡Ambos no ponen fotos en documentos usted mismo!
Con una sola línea de código, genere un documento DOCX imprimible con las tres imágenes anteriores y los resultados de ajuste.
gendocx ( 'gen.docx' , '1.png' , '2.png' , '3.png' , 'slope, intercept: %f %f' % ( slope , intercept ))Resultados
Producción:
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 generado:

No olvides cambiar mi nombre al tuyo.
Más tarde descubrí que usar el cuaderno de Jupyter es mucho mejor que codificar en Python Editor:

Y, Jupyterhub puede proporcionar acceso al cuaderno de Jupyter para un grupo de usuarios: el caso común cuando varias personas desean compartir su script de procesamiento de datos experimentales entre sí.
En ./jupyterhub es mi configuración que se usa para ejecutar Jupyterhub: Docker Spawner con una lucha compartida, autenticación ficticia. Literalmente, no hay control de seguridad o acceso, pero es aceptable para un grupo de personas confiables en un servidor privado.
¿Quieres saber cómo usar después de leer el ejemplo?
Puede:
Sin embargo, no tienen la intención de ejecutar directamente en su máquina y mágicamente le da una respuesta correcta sin ningún cambio, pero, si realmente desea ejecutarlos, tal vez un
git reseten este repositorio y sumergirse en la historia oscura es el último recurso.
Lea el código fuente usted mismo. Especialmente physicsexp/mainfunc.py y physicsexp/gendocx.py : con el ejemplo que cubre la mayoría de los casos de uso, solo necesita verificar la declaración de funciones y las opciones adicionales disponibles (hacen la vida más fácil).
O abrir un problema. Si también es un estudiante de USTC, comuníquese conmigo con QQ/correo electrónico. Los contactos están en mi sitio web.
Pero no se sienta frustrado si ninguno de estos funciona. El proyecto no tiene absolutamente ninguna advertencia.
¿Y el uso de estas herramientas puede aumentar su eficiencia? No lo sé, pero probablemente no puedo.
** Sin embargo, si estos pueden hacerte sentir mejor a pesar de pasar más tiempo, úsalo. **
Finalmente, piense dos veces antes de perder el tiempo en este proyecto, en cambio, disfrute de su vida, aprenda algo de física real y encuentre una amiga (de niño | niña).
Aquí.