│ head.py(实验数据处理程序万能头)
│ main.py(主程序)
│ modulelist.py(模块清单)
│ requirements.txt(需要预先安装的包)
│ SourceHanSansSC-Regular.otf(作图字体文件)
│
├─api(API代码)
│ calc.py(数据处理API)
│ insert.py(公式插入API)
│ transformer.py(表达式转换)
│ MML2OMML.XSL(转Word对象)
│
├─module(存放各实验的数据处理程序)
│
├─static
│ ├─experiment(存放各实验的静态文件)
│ ├─layui(网页框架)
│ ├─pdf.js(来自Mozilla,用于PDF文件在线预览)
│ └─uncertainty(不确定度概观及常用表格页面资源)
│
├─templates(前端代码)
│ 404.html(错误页面)
│ experiment.html(具体实验处理页面)
│ index.html(网站首页)
│ uncertainty.html(不确定度概观及常用表格页面)
│ viewer.html(PDF文件在线预览页面)
│
└─usrdata(存放程序运行时产生的文件)- chardet
- Flask
- latex2mathml
- lxml
- matplotlib
- numpy
- openpyxl
- pandas
- python-docx
- scipy
- sympy
- uncertainties
- xlrd
- 编写数据处理程序,置于 module 文件夹内。
- 将实验指导pdf(原讲义即可)、示例数据csv(示例数据主要体现格式,而数据不必正确合理)与png(生成png文件的的方法:在Excel中全选复制,在QQ聊天框或Windows画图软件中粘贴,然后另存为;若数据过多,请使用省略号,参考 exp23d)置于 static/experiment/expID/ 目录下,文件名必须与数据处理程序中的
name()函数返回值一致。 - 修改模块清单 modulelist.py 。
- 修改前端代码 templates/index.html。
- 本地启动 main.py 测试运行。
(注:已统一写了前端及前后端衔接部分,故不必对每个实验编写网页)
- 建议使用 Python 3.9.6
- 文件名:expID.py,如 exp1.py(若一个实验有多个小实验,则在ID后加a/b/...,如 exp1a.py)
- 函数
name返回实验名称handle处理数据并生成文档
- 变量名规范:由多个单词组成时,请使用下划线_(如 tight_layout),而不是大写(如 tightLayout,TightLayout)。
- 代码运行顺序:计算→作图→在Word中插入结果,不要一边计算一边在Word中插入结果。
- 单个数据相关的计算(如
pi,sqrt,log)使用math库函数,一组数据相关的计算(如mean,max,min)优先考虑成员函数(如data.max()),其次是numpy函数。 - 使用之前未曾使用过的库/函数(如 scipy.signal.savgol_filter),必须说明其功能。
- 提交的代码不应有多余的输出。
- 作图及线性拟合(参考 exp5.py)
- 面向绘图对象作图(
fig, ax = plt.subplots())。 - 设置副刻度为主刻度的一半,但保持主刻度为默认。
- 刻度朝内(已在 main.py 中统一设置)。
- 若一张图只有一组点线,则点使用红色(
color='r'),线使用蓝色(color='b'),且线覆盖在点的上面;若一张图有多组点线,则同一组点线的颜色应当相同,并依次使用蓝(b)、红(r)、绿(g)、紫(m)、橙(orange)、青(c)。 - 点的类型使用实心圆(
"o"),若一张图有多组点线,则依次使用实心圆(o)、正方形(s)、上三角(^)、菱形(D)、下三角(v)、星号(*)。 - 线条粗细使用
linewidth=1.5,点的大小使用markersize=3,可视数据量、数据组数适当调整,但应保持统一性。 - 绘制双y轴图参考 exp15c.py。
- 只有一组点线的图,一般不显示图例。
- 图像字体使用 SourceHanSansSC-Regular.otf。
- 轴标签和标题支持 Latex。
- 面向绘图对象作图(
- 不确定度计算及线性回归参见 数据处理API指南。
- 非线性拟合一般可通过坐标变换转换为线性拟合,若无法转换,则使用
scipy.optimize.curve_fit(参考 exp15c.py) - 关于文档
- 组织策划&前端&前后端衔接程序&公式插入API&数据处理程序示例&开发文档编写&代码审查:孙旭磊
- 数据处理API:孙旭磊、张学涵、周旭冉、尹冠霖
- 技术与安全支持:赵奕
- 各实验对应的数据处理程序:
ID 实验 分类 开发 0 通用工具 通用 孙旭磊 1 重力加速度的测量 力热 秦沁 2 表面张力 力热 赵奕 3 黏滞系数 力热 孙旭磊 4 质量和密度的测量 力热 鲍政廷 5 钢丝杨氏模量 力热 孙旭磊 6 切变模量 力热 鲍政廷 7 固体比热 力热 张学涵 8 匀加速运动 力热 孙旭磊 9 声速测量 力热 张学涵 10 磁力摆 力热 … 11 半导体温度计 电磁 张学涵 12 示波器的使用 电磁 鲍政廷 13 整流滤波 电磁 赵奕 14 直流电源特性 电磁 张学涵 15 硅光电池 电磁 √ 16 RGB配色 电磁 秦沁 17 数字体温计 电磁 鲍政廷 18 分光计 光学 赵奕 19 干涉法测微小量 光学 赵奕 20 透镜参数测量 光学 孙旭磊 21 显微镜使用 光学 鲍政廷 22 衍射实验 光学 鲍政廷 23 光电效应 近代 张学涵 24 密立根油滴 近代 秦沁 25 生活中的物理实验 生活 秦沁
- 在 https://git.ustc.edu.cn/ 上进行代码管理
- git命令行
- 首次使用
git config --global http.sslVerify falsegit config --global user.name "名字"git config --global user.email "邮箱@mail.ustc.edu.cn"(全局配置)git clone https://git.ustc.edu.cn/sxl/dawu(在待git文件夹内执行) - pull(每次修改代码前执行,拉取最新代码)
git pull --tags origin master - push(上传自己的代码)
git add *(添加修改过的文件至缓存区)git commit -m "说明"(将更改添加到git库里)git push origin master:master(将本地修改保存到云端)
- 首次使用
- vscode:左侧有图形化界面的 git 资源管理器
- git命令行
- 学习参考
- Python 3 教程:https://www.runoob.com/python3/python3-tutorial.html
- NumPy 教程:https://www.runoob.com/numpy/numpy-tutorial.html
- Matplotlib 教程:https://www.runoob.com/matplotlib/matplotlib-tutorial.html
- Pandas 教程:https://www.runoob.com/pandas/pandas-tutorial.html
- python-docx 参考手册:https://python-docx.readthedocs.io/en/latest/
- 网页端输入和显示。
- 手写表格数字识别:把手写的实验数据转换成 Excel(csv)文件。
- PDF在线预览(目前在部分手机浏览器上无法预览)。