精选案例 · 科研阅读与计算 / Agent 自动化
张轩屹(xuanyizhang)— AI 辅助科研代码开发
该案例详述了如何借助 ChatGPT 和 Claude Code 等大模型,在 Swabian TimeTagger 厂商接口基础上进行 Python 二次开发:从常规 histogram 采集扩展到 SPAD 标定指标(PDE、DCR、APP)的自动计算,并将实验参数与分析结果写入文件名和表头,最终实现批量后处理自动画图。…
案例速读
该案例内容详实、结构清晰,从科研痛点出发完整展示了如何利用大模型辅助完成仪器二次开发的全流程。作者不仅给出了具体的实现步骤(模块拆解、增量修改、公式转函数、文件命名、批量画图),还总结了可复用的方法论和注意事项(提示词越具体越好、人负责物理 AI 负责工程等),对同类科研自动化场景有很高的参考价值。 建议从 「张轩屹(xuanyizhang)— AI 辅助科研代码开发」、「相关 AI 工具」、「利用大模型辅助 Swabian TimeTagger 上位机二次开发:面向 SPAD 标定的自动化采集与分析」、「一、背景:从"采到数据"到"自动完成标定分析"」 进入正文,先确认真实任务和模型辅助过程。
- 重点看 自然语言需求 → 模块拆解的方法论(如初始化模块、采集模块、计算模块、元数据模块等)、在厂商示例代码基础上增量修改的提示词模板(保留原有功能、说明新增功能、输入输出约束)、将实验公式转化为程序函数的示例(calculate_dcr, calculate_pde, calculate_app)。结合 科研阅读与计算 / Agent 自动化 / Python 代码开发 / AI 辅助编程 和「光电/量子科研人员、仪器二次开发工程师、AI 辅助编程实践者」,它更适合作为任务检索后的精读材料。
- 正文目录和原始材料仍然是判断依据;导读只帮助你更快定位阅读重点。
- 首读入口
- 相关 AI 工具
- 读者
- 光电/量子科研人员、仪器二次开发工程师、AI 辅助编程实践者
- 复用
- 自然语言需求 → 模块拆解的方法论(如初始化模块、采集模块、计算模块、元数据模块等)
- 结构
- 9 个目录入口
原文内容
张轩屹(xuanyizhang)— AI 辅助科研代码开发
相关 AI 工具
- ChatGPT — 需求梳理、代码生成、逻辑检查
- Claude Code — 代码重构、模块拆分、单位换算检查
利用大模型辅助 Swabian TimeTagger 上位机二次开发:面向 SPAD 标定的自动化采集与分析
一、背景:从"采到数据"到"自动完成标定分析"
我的研究方向涉及近红外二区荧光共聚焦、FLIM,以及 InGaAs SPAD 单光子探测器。在实验过程中,我经常需要使用 Swabian TimeTagger 进行单光子时间标记采集,例如采集 photon arrival time、生成 histogram,并基于这些数据对 SPAD 探测器进行性能标定。
一开始,厂商提供的 TimeTagger 接口和示例程序可以完成比较基础的功能,例如:
- 连接和初始化 TimeTagger;
- 采集 TDC 原始数据;
- 实时生成和显示 histogram;
- 保存基础实验数据。
但是在实际科研工作中,仅仅完成数据采集是不够的。对于 SPAD 标定来说,我更关心的是探测器在不同实验条件下的关键性能指标,例如:
- PDE(Photon Detection Efficiency,光子探测效率)
- DCR(Dark Count Rate,暗计数率)
- APP(Afterpulsing Probability,后脉冲概率)
- 不同偏压、温度、光功率、门宽等条件下的指标变化
- 多组实验之间的自动画图、对比和筛选
如果完全依靠人工处理,每次实验后都需要手动打开数据文件、读取实验参数、计算指标、整理表格、修改文件名,再进行画图对比。这个过程不仅重复,而且容易出错。尤其是在一组 SPAD 标定实验中,往往会产生大量 TDC 原始数据文件,人工追踪非常困难。
因此,我希望在 Swabian TimeTagger 原有上位机功能的基础上进行二次开发:不仅实现常规 histogram 的采集和显示,还能在采集过程中自动完成 SPAD 标定指标分析,并把分析好的结果写入 TDC 原始数据的表头和文件名中。
二、AI 工具:将大模型作为科研代码开发助手
我使用 AI 的方式不是简单地让它"一次性写完整程序",而是把整个上位机二次开发过程拆解成多个具体任务:
- 理解 Swabian TimeTagger 厂商接口
- 设计上位机程序整体结构
- 编写和修改 Python 采集代码
- 实现 histogram 的实时采集和显示
- 增加 SPAD 标定指标的自动分析模块
- 将 PDE、DCR、APP 等结果写入数据文件表头
- 将实验参数和分析结果写入文件名
- 编写批量后处理脚本,自动读取文件名并画图
- 检查代码中的单位换算、边界条件和逻辑错误
AI 最有价值的地方不是替我凭空创造一个软件,而是作为一个随时可以讨论的代码助手,帮助我把实验需求转化成清晰的程序结构和可执行代码。
三、使用方式:从自然语言需求到可运行程序
1. 先让 AI 帮助梳理需求和程序结构
用自然语言向 AI 描述实验需求,AI 会帮助拆解成多个模块:
- TimeTagger 初始化模块
- histogram 采集模块
- 实时显示模块
- 原始数据保存模块
- SPAD 指标计算模块
- metadata 管理模块
- 文件名和表头生成模块
- 批量后处理和画图模块
这种拆解对我很有帮助。科研代码往往一开始只是一个临时脚本,但如果没有提前设计结构,后期会变得很难维护。
2. 让 AI 辅助修改已有代码,而不是完全重写
把厂商接口的示例代码、已有的 Python 代码、报错信息或想增加的功能发给 AI,让它在现有代码基础上修改。提示词包含:
- 当前代码已经实现了什么
- 哪些功能不能被破坏
- 我要新增什么功能
- 输入参数有哪些
- 输出结果要保存到哪里
- 需要特别注意哪些实验细节
3. 把 SPAD 标定指标转化为程序逻辑
让 AI 帮忙把实验公式和程序接口对应起来,例如设计 PDE、DCR、APP 的计算函数:
calculate_dcr(dark_count, integration_time)
calculate_pde(photon_count, dark_count, optical_power, wavelength, integration_time)
calculate_app(afterpulse_count, main_peak_count)
build_filename(metadata)
write_header(file, metadata)
这样上位机程序不再只是一个"数据记录器",而是逐渐变成了和实验流程结合起来的自动标定工具。
4. 自动写入文件名和表头,提高数据可追溯性
在 AI 辅助下,对文件命名和表头信息进行了规范化。文件名格式:
date_bias_temperature_power_dcr_pde_app
例如:2026-05-18_bias5.0V_temp-30C_power10nW_DCR1200cps_PDE18.5_APP0.8
同时在 TDC 原始数据文件表头中写入完整 metadata(Device、Bias voltage、Temperature、Optical power、Wavelength、Integration time、DCR、PDE、APP 等)。
5. 批量读取文件名并自动画图
利用 AI 辅助编写 Python 后处理脚本,批量读取文件夹中的数据文件,从文件名或表头解析出 PDE、DCR、APP 等指标,自动生成:
- PDE vs bias voltage
- DCR vs bias voltage
- APP vs bias voltage
- PDE-DCR trade-off 图
- 不同温度条件下的对比图
四、成果与收获
- 保留了常规 histogram 采集和显示功能:保证程序没有脱离原有仪器接口
- 增加了面向 SPAD 标定的自动分析功能:采集过程中自动分析 PDE、DCR、APP 等指标
- 提高了数据可追溯性:实验参数和分析结果写入文件名和数据表头
- 实现了批量自动画图和对比:从"采集—人工整理—手动画图"变成"采集—自动分析—自动画图"
- 提高了代码开发效率:重复性代码(文件名解析、metadata 写入、批量读取、自动画图、单位检查、异常值处理)在 AI 辅助下更快完成
五、心得与建议
- 不要只让 AI “写完整程序”,而要让它帮助拆解问题 — 先描述具体场景再让 AI 拆解模块
- 提示词越具体,代码越接近可用 — 告诉 AI 当前代码实现了什么、不能破坏什么、要新增什么
- AI 生成的代码必须自己验证 — 单位换算、采集时间、count rate 计算、histogram bin 设置等必须人工确认
- 人负责物理,AI 负责工程实现 — 我判断实验需求和物理意义,AI 帮助实现工程代码
- 从小功能开始逐步迭代 — histogram 采集 → 实时显示 → DCR → PDE → APP → 文件名/header → 批量画图
六、总结
我依靠大模型,在厂商仪器接口的基础上,实现了从常规 histogram 采集和显示,到 SPAD 标定指标自动分析,再到数据文件自动命名、表头写入和批量画图的完整流程。AI 并不是替代科研人员完成实验,而是帮助科研人员更快地把想法变成可运行、可验证、可复用的工具。