Пакет также выпущен на PYPI.
Для читателей из PYPI, пожалуйста.
Для моих экспериментальных сценариев обработки данных и результатов обработки данных, изображений и результатов расчета (от 1 до уровня 4), пожалуйста, см. Мои экспериментальные данные, сценарии обработки данных, рисунки и некоторые результаты (от уровня эксперимента I до IV), пожалуйста, посетите проект UstcphysexpData.
Не хотите использовать OriginLab или Excel? Попробуйте Python!
Конечная цель состоит в том, чтобы создать набор инструментов для автоматической обработки экспериментальных данных крупных объектов, рисования изображений, создания печатных документов и отправки документов в онлайн -системы печати; Упрощение и автоматизация достигается для общих потребностей обработки данных. Благодаря нескольким простым строкам кода, могут быть выполнены общие задачи, такие как крупные эксперименты с объектом, такие как рисунок, подгонка, расчет неопределенности.
Между идеалом и реальностью все еще есть большой разрыв. В настоящее время только библиотека чертежей Matplotlib, простой фитинг, ввод файлов и генерация DOCX упакованы для упрощения повторяющегося труда.
Теперь я обернула только библиотеку построения построения Matplotlib, реализованную простую регрессию, простой ввод файлов и генерацию 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, сгенерированный Gen.Docx, готовный к печати, и расчеты, напечатанные для вывода, в каталоге ./physicsexp/example . Вы также можете клонировать 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 )Теперь, сюжет!
Первый график: три кривая на одной фигуре. Использование simple_plot . Вы можете использовать латекс в лейблах сюжета. График сохранен до 1.png . Используйте show=0 чтобы построить несколько линий на одной фигуре.
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.png :
Len = 150
Cnt = Cnt / Len
simple_plot ( Al_num , Cnt , xlab = '铝片数' , ylab = '选区计数率(射线强度)' , title = '$ \ beta$射线强度随铝片数衰减曲线' , save = '2.png' ) Третий график, кривая с линейной соответствием, используя 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 )Не кладите картинки в документы самостоятельно!
С одной строкой кода сгенерируйте печатный документ 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 для группы пользователей: общий случай, когда несколько человек хотят поделиться своим скриптом обработки данных эксперимента.
В. Буквально нет безопасности или контроля доступа, но приемлемо для группы доверенных людей на частном сервере.
Хотите знать, как использовать после прочтения примера?
Ты можешь:
Тем не менее, они не предназначены для работы непосредственно на вашей машине и, волшебным образом, дают вам правильный ответ без каких -либо изменений, но, если вы действительно хотите запустить их, возможно,
git resetв этом репозитории и погружение в мрачную историю является последним средством.
Прочитайте исходный код самостоятельно. Особенно physicsexp/mainfunc.py и physicsexp/gendocx.py - с примером, охватывающим большинство вариантов использования, вам просто нужно проверить объявление функций и дополнительные доступные варианты (они облегчают жизнь).
Или открыть проблему. Если вы также являетесь студентом USTC, просто свяжитесь со мной с QQ/электронной почтой. Контакты на моем сайте.
Но не разочаровывайтесь, если ни один из них не работает. Проект поставляется абсолютно без предупреждения.
И может ли использовать эти инструменты повысить вашу эффективность? Я не знаю, но, вероятно, не могу.
** Однако, если они могут заставить вас чувствовать себя лучше, несмотря на то, что тратите больше времени, используйте его. **
Наконец, подумайте дважды, прежде чем тратить время на этот проект, вместо этого наслаждайтесь своей жизнью, изучите настоящую физику и найдите друга (мальчик | девочка).
Здесь.