O pacote também é lançado no Pypi.
Para leitores de Pypi, aqui, por favor.
Para meus resultados experimentais de dados e processamento de dados, imagens e resultados de cálculo (do nível 1 ao nível 4), consulte o projeto USTCPHYSEXPDATA. Meus dados do experimento, scripts de processamento de dados, figuras e alguns resultados (do nível do experimento I a IV), visite o projeto ustcphysexpdata.
Não quer usar o OriginLab ou o Excel? Experimente Python!
O objetivo final é criar um conjunto de ferramentas para processar automaticamente grandes dados experimentais de objetos, desenhar imagens, gerar documentos imprimíveis e enviar documentos para sistemas de impressão on -line; Simplificação e automação são alcançadas para necessidades comuns de processamento de dados. Com apenas algumas linhas simples de código, tarefas comuns, como grandes experimentos de objetos, como desenho, ajuste e cálculo da incerteza, podem ser concluídos.
Ainda existe uma grande lacuna entre o ideal e a realidade. Atualmente, apenas a biblioteca de desenho MatPlotlib, o encaixe simples, a entrada de arquivos e a geração DOCX são embalados para simplificar o trabalho repetitivo.
Agora, enrolei apenas a biblioteca de plotagem do Matplotlib, implementei regressão simples, entrada de arquivo fácil e geração docx . Para simplificar trabalhos repetidos.
Blog relacionado: páginas de páginas de lugo da UTC na minha página inicial
Instale o pacote
Use espelho de atum para acelerar. Decencences como Numpy e Matplotlib serão instalados automaticamente.
pip install -i https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple physicsexp
Teste a instalação (opcional)
>>> from physicsexp.mainfunc import *
>>> from physicsexp.gendocx import *
>>>
Se não houver erro, então você estará pronto! Se ocorrer erro, sinta -se à vontade para abrir um problema.
Execute o script de exemplo (recomendado)
python3 ./physicsexp/example/plot.py
Você verá os gráficos aparecendo e salvados para .png, um gen.docx gerado pronto para imprimir e cálculos impressos para saída, no diretório ./physicsexp/example . Você também pode clonar ustcphysexpdata para experimentar alguns casos da vida real. Em seguida, você pode modificar o código ou escrever seu próprio código para processar seus dados!
É um exemplo real de entrada de várias linhas de dados, plotar os dados e regressão linear e gerar um documento DOCX imprimível contendo plotagem e analisar resultados.
Se você realmente quer saber, o experimento é verificar a relação cinética relativa versus a relação de momento do elétron (raio beta) e medir a extração de raios beta por pedaços de alumínio de diferentes espessuras.
Primeiro, coloque seus dados em data.txt , como este:
# 位置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
Você pode usar # para adicionar algumas linhas de comentários e e * para especificar a ordem de magnitude-assim, poder anotar diretamente os dados originais no papel sem conversão.
Então é hora de escrever python
Cabeçalhos e importações
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
from physicsexp . mainfunc import *
from physicsexp . gendocx import * Leia o arquivo facilmente com a função 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 alguns resultados. Isso é python, você pode fazer o que quiser facilmente. (Esta parte não está relacionada à biblioteca, você pode pular isso)
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 )Agora, enredo!
Primeiro gráfico: três curvas em uma figura. Usando simple_plot . Você pode usar o látex em etiquetas da plotagem. O gráfico é salvo para 1.png . Use show=0 para plotar várias linhas em uma 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, uma curva simples, salva para 2.png :
Len = 150
Cnt = Cnt / Len
simple_plot ( Al_num , Cnt , xlab = '铝片数' , ylab = '选区计数率(射线强度)' , title = '$ \ beta$射线强度随铝片数衰减曲线' , save = '2.png' ) Terceiro gráfico, uma curva com um ajuste linear, usando simple_linear_plot , salvo em 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 )Não coloque fotos em documentos!
Com uma única linha de código, gerar um documento DOCX imprimível com as três imagens acima e os resultados do ajuste.
gendocx ( 'gen.docx' , '1.png' , '2.png' , '3.png' , 'slope, intercept: %f %f' % ( slope , intercept ))Resultados
Saída:
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 gerado:

Não se esqueça de mudar meu nome para o seu.
Mais tarde, descobri que o uso do Jupyter Notebook é muito melhor do que codificar no editor Python:

E o JupyterHub pode fornecer acesso ao notebook Jupyter para um grupo de usuários: o caso comum quando várias pessoas desejam compartilhar seu script de processamento de dados experimentais.
Em ./JupyterHub está minha configuração sendo usada para executar JupyterHub: Docker Spawner com uma luta compartilhada, autenticação fictícia. Literalmente, não há controle de segurança ou controle de acesso, mas aceitável para um grupo de pessoas confiáveis em um servidor privado.
Quer saber como usar depois de ler o exemplo?
Você pode:
No entanto, eles não têm a intenção de correr diretamente em sua máquina e magicamente fornecem uma resposta correta sem nenhuma alteração, mas, se você realmente deseja executá -las, talvez uma
git resetneste repositório e mergulhe na história das trevas seja o último recurso.
Leia o código -fonte você mesmo. Especialmente physicsexp/mainfunc.py e physicsexp/gendocx.py - Com o exemplo cobrindo a maioria dos casos de uso, basta verificar a declaração de função e as opções disponíveis extras (elas facilitam a vida).
Ou abrir um problema. Se você também é um aluno da UTC, entre em contato comigo com QQ/email. Os contatos estão no meu site.
Mas não fique frustrado se nada disso funciona. O projeto vem com absolutamente nenhum aviso.
E o uso dessas ferramentas pode aumentar sua eficiência? Eu não sei, mas provavelmente não posso.
** No entanto, se isso puder fazer você se sentir melhor, apesar de gastar mais tempo, use -o. **
Finalmente, pense duas vezes antes de perder tempo neste projeto; em vez disso, aproveite sua vida, aprenda alguma física real e encontre um amigo (menino | menina).
Aqui.