精选案例 · Agent / 实践案例
张轩屹(xuanyizhang)— AI 辅助科研代码开发
这个案例围绕「张轩屹(xuanyizhang)— AI 辅助科研代码开发」记录了一条真实 AI 实践线索,正文重点集中在「相关 AI 工具」「利用大模型辅助 Swabian TimeTagger 上位机二次开发:面向 SPAD 标定的自动化采集与分析」,适合先按任务意图阅读再判断复用。
案例速读
README 标题「张轩屹(xuanyizhang)— AI 辅助科研代码开发」下已经出现运行/配置路径、脚本或接口线索、结果证据,正文重点集中在「相关 AI 工具」「利用大模型辅助 Swabian TimeTagger 上位机二次开发:面向 SPAD 标定的自动化采集与分析」,比纯概念介绍更适合进入精选阅读流。 这篇案例的阅读价值在于,它把真实任务、模型辅助过程和可迁移做法放在同一个上下文里,读者可以从 「张轩屹(xuanyizhang)— AI 辅助科研代码开发」、「相关 AI 工具」、「利用大模型辅助 Swabian TimeTagger 上位机二次开发:面向 SPAD 标定的自动化采集与分析」、「一、背景:从"采到数据"到"自动完成标定分析"」 进入正文。
- 建议重点看 可参考其中的运行与配置路径、包含可迁移的命令、脚本或接口线索、已有结果或观测证据可用于判断复用价值。结合 Agent / 实践案例 和「任务驱动用户、AI 实践者」这一受众定位,它更适合作为任务检索后的精读材料,而不是只看一句短摘要后快速跳过。
- 正文目录和原始材料仍然是判断依据;导读只帮助你更快定位阅读重点。
- 看点
- 张轩屹(xuanyizhang)— 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 并不是替代科研人员完成实验,而是帮助科研人员更快地把想法变成可运行、可验证、可复用的工具。