1. 科研计算工作流现状梳理与自动化边界判定

把“一条龙”拆成可判定的步骤

面对“数据预处理 → 仿真 → 后处理 → 绘图”这类多步骤科研计算任务,第一步不是写脚本,而是把当前人工操作如实画出来,再对每个环节做自动化边界判定。判定的核心不是“能不能写代码”,而是三个问题:输入是否确定、规则是否稳定、出错后能否自动识别。三者都满足的环节适合自动化;依赖经验判断、需要看中间结果才能决定下一步的环节,必须保留人工介入点。

下面以一个典型的分子动力学/有限元类任务为例:原始构型或网格数据需要清洗与格式转换,随后提交仿真计算,再对输出做后处理统计,最后绘制图表。图中用颜色区分三类环节:绿色为可直接自动化,橙色为“自动执行 + 人工确认”的半自动环节,红色为必须人工判断的环节。

多步骤科研计算任务:人工操作流程与自动化边界 可自动化 半自动(需确认) 人工判断 ① 数据预处理 原始数据导入 格式/单位统一 异常值/缺失判定 剔除 or 插补?看物理意义 清洗与格式转换 输出标准输入文件 ② 仿真计算 参数与收敛设置 步长/阈值需经验确认 提交计算作业 命令行/调度器执行 收敛性/合理性检查 残差曲线、能量守恒 ③ 后处理 提取输出数据 日志/结果文件解析 统计与指标计算 均值/误差/收敛量 结果可信性判断 是否需重算/调参 ④ 绘图与归档 批量绘图 统一坐标/样式 图注与结论标注 需人工撰写 结果归档 版本/参数记录 结果不可信 → 调参重算 自动化边界判定三问 1. 输入是否确定? 文件路径、格式、参数固定 2. 规则是否稳定? 不依赖每次人工经验调整 3. 错误能否自动识别? 有明确阈值/日志可判失败 基线工作流清单要点 · 每步输入/输出文件 · 执行命令与参数 · 人工判断点与判据 · 失败信号与回退动作

如何做边界判定:三个判据落到具体环节

把上图中的每个方框逐一对三问打分,就能得到“可自动化 / 半自动 / 人工判断”的结论。以本例为例:

环节输入确定规则稳定错误可自动识别判定
原始数据导入与格式统一是是是(格式校验)可自动化
异常值/缺失值处理部分否(看物理意义)否人工判断
清洗与格式转换是是是可自动化
参数与收敛设置部分否(依赖经验)部分半自动
提交计算作业是是是(退出码)可自动化
收敛性/合理性检查否否部分(残差阈值)人工判断
提取输出数据是是是可自动化
统计与指标计算是是是可自动化
结果可信性判断否否否人工判断
批量绘图是是是可自动化
图注与结论标注否否否人工判断
结果归档是是是可自动化
判定原则:只要“规则是否稳定”为否,就不应把该环节完全自动化,最多做成“脚本执行 + 人工确认”的半自动形式。半自动环节的脚本应把关键中间量打印到日志,供人工快速核对,而不是直接吞掉。

形成基线工作流清单

把上表整理成可执行的清单,作为后续案例的基线。清单需要记录每一步的输入、输出、执行方式、人工判断点和失败信号,这样后续封装脚本或编排依赖时才有明确依据。

步骤编号 | 环节名称           | 输入文件/参数              | 输出文件            | 执行方式     | 人工判断点           | 失败信号
S1       | 原始数据导入       | raw/*.dat, 单位配置         | work/clean_in.dat   | 脚本自动     | 无                   | 格式校验失败
S2       | 异常值处理         | work/clean_in.dat           | work/clean_out.dat  | 人工+脚本    | 剔除或插补的物理依据 | 异常比例>5%
S3       | 仿真参数设置       | work/clean_out.dat, 参数模板 | work/sim.inp        | 人工确认     | 步长/阈值是否合理    | 参数越界
S4       | 提交计算           | work/sim.inp                | work/sim.out, log   | 脚本自动     | 无                   | 退出码非0
S5       | 收敛性检查         | work/sim.out, log           | 检查记录            | 人工判断     | 残差曲线是否收敛     | 残差未降/能量漂移
S6       | 后处理统计         | work/sim.out                | work/metrics.csv    | 脚本自动     | 无                   | 字段缺失
S7       | 结果可信性判断     | work/metrics.csv            | 判断结论            | 人工判断     | 是否需调参重算       | 指标偏离预期
S8       | 批量绘图           | work/metrics.csv            | fig/*.png           | 脚本自动     | 无                   | 绘图报错
S9       | 图注与结论         | fig/*.png                   | 报告草稿            | 人工撰写     | 结论表述             | 无
S10      | 归档               | 全部输出                    | archive/版本目录    | 脚本自动     | 无                   | 归档校验失败

判定结果如何验证

基线清单完成后,用一次真实(或教学示例)运行做走查:对每个“可自动化”环节,确认其输入输出文件确实存在且格式稳定;对每个“人工判断”环节,确认其判据可以写成一句话,例如“残差在最后 100 步内下降小于 1 个数量级则视为未收敛”。如果某个环节的判据写不出来,说明它还不具备进入自动化流程的条件,应继续保留为人工环节,而不是勉强脚本化。

走查通过后,这份清单就是后续工作的基线:哪些步骤可以封装成单条命令、哪些步骤之间存在文件依赖、哪些判断点需要在流程中插入人工确认,都已经在清单中明确。后续的脚本封装与依赖编排都应以此清单为输入,而不是重新凭印象梳理。