关于 jinko-task-export-to-matlab
jinko-task-export-to-matlab 指导将 Jinkō 模型结果与 MATLAB/SimBiology 仿真进行对照,面向需要验证模型一致性的科研人员。它用导出清单、明确的输出选择和单位处理来支持可复现比较。
主要功能
- 01导出并校验 Jinkō 工作簿与设置
- 02复用已保存的 SimBiology 项目
- 03选择并求解指定时间序列
- 04按导出设置运行 MATLAB 仿真
- 05比较误差、单位与曲线下面积
- 06生成 Markdown、JSON 和 CSV 报告
适用场景
- 01检查 Jinkō 与 MATLAB 模型结果的一致性
- 02比较选定输出及其单位
- 03分析事件时间点造成的差异
- 04保存可复核的模型比较产物
MCP 相关
运行 MATLAB 前要求检查完整工具注册表;若发现 MATLAB MCP 工具,则通过它检查、执行并获取结果。只有未发现合适工具时才使用本地 MATLAB CLI。
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ novainsilico/ jinko-skills --skill jinko-task-export-to-matlab安装后在 Claude Code 中输入/jinko-task-export-to-matlab确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
agents/openai.yamlevals/evals.jsonscripts/jinko_matlab_parity.py详细介绍
Jinkō 到 MATLAB / SimBiology
**前置条件:**此技能需要已初始化的
jinko-sdk连接,并且 SDK 满足其metadata.requires_sdk范围。运行jinko-sdk-setup技能(../jinko-sdk-setup/SKILL.md),并仅在检查通过后继续。会话代码只能兑换一次,因此请在启动此技能自己的 SDK 进程前再次调用get_session_code。如果找不到该技能,请从novainsilico/jinko-skills安装。
引导工作流,但确定性的文件处理和比较计算请使用 scripts/jinko_matlab_parity.py。此辅助脚本是实现细节:不要将其介绍为用户必须学习的 CLI,也不要要求用户复现其命令。这样可以避免重复编写临时代码,并为科学结果保留上下文。
MATLAB MCP 能力检查关卡
启动 MATLAB、运行 MATLAB 代码,或声称 MATLAB/SimBiology MCP 服务不可用之前,请明确检查完整的可调用工具注册表,确认其中是否包含 MATLAB 或 SimBiology 能力。检查可延迟发现的工具;不要仅凭初始工具摘要推断 MCP 不存在。在提供 ALL_TOOLS 的环境中,请查询其中的 matlab 或 simbiology;否则,请使用平台的工具发现机制。
- 可调用的 MATLAB 求值或脚本执行 MCP 工具表示该服务可用。说明这一发现,并使用该 MCP 检查、执行 MATLAB 操作及获取结果。
- 只有在完整能力检查未发现合适的 MATLAB MCP 操作后,才能使用本地 MATLAB CLI。简要记录此回退方式,以便用户区分 MCP 支持的运行和本地运行。
- 如果发现结果含糊不清,请勿继续:先查明情况,再选择执行路径。此关卡可防止绕过不可见或延迟加载的 MCP 服务。
从模型入手,而非输出
- 完成 MATLAB MCP 能力检查关卡。若服务可用,请使用它;未经用户指示,不要安装或重新配置服务。
- 只询问 CM 短 ID(提供 Jinkō CM 链接也可以;请提取其中的 ID)。先导出,再询问要比较哪些输出。
- 创建专用运行目录,例如
/tmp/jinko-to-matlab/<cm-sid>/,并在该目录中调用辅助脚本的export命令。它会安全地提取压缩包,要求其中恰好包含一个工作簿及与之匹配的SimulationSettings_<model_name>.yaml,验证设置,并写入带内容哈希的parity-manifest.json。
成功访问、导出或验证清单后,不要再次要求确认。简要告知生成的工作簿和设置文件路径。
默认情况下,辅助脚本会保留现有清单和结果文件。若要有意重新运行,请先检查现有文件,再使用 --overwrite。
复用已导入的项目
在请求任何 Model Builder 操作前,先读取清单中的 reuse.workbook_unchanged。
- 如果存在可发现的已保存
.sbproj,且工作簿未更改,请复用该项目。每次比较都应用当前导出的设置;仅更新设置无需重新导入。 - 如果不存在已保存项目、工作簿已更改,或发现多个候选项目,请提出一个简洁的问题。对于项目已更改或缺失的情况,请指引用户新建一个空白 Model Builder 模型,删除其默认的
unnamedcompartment,然后使用 Home → Model → Import Model Components from Excel。请用户将项目保存在运行目录中。删除该占位项可避免将额外的 compartment 一并带入导入的模型。这是唯一必须的手动步骤:SimBiology 有文档说明的 SBML/项目导入方式,但没有 Excel 组件导入 API。 - 绝不要覆盖提供的
.sbproj。将其载入 MATLAB,并仅在内存中为当前比较修改配置和剂量。
提供单一比较选项
使用辅助工具的 list-series 命令获取静态时间依赖 ID。
将它们显示为符合条件的输出,并请用户选择一到十个。不要将
Time 包含在该列表中,也不要将其计入数量限制。不要静默选择、
重命名或替换组件。
用户选择输出后,调用辅助工具的 solve 命令。它会发送
准确的 Jinkō 负载 ['Time', *selected_ids];Time 区分大小写,且除非请求,否则不会返回。 将导出的 parity-manifest.json 传递给
该命令,并要求响应中包含每个请求的序列和 Time。辅助工具
会将 Jinkō 返回的秒转换为导出的 TimeUnits,并写入
matlab_output_times;将这些值用作 MATLAB 的 OutputTimes,绝不要推导出均匀网格,也不要将原始 Jinkō 秒数传递给配置不同的 MATLAB 模型。
使用导出的配置运行 MATLAB
加载已保存的项目,解析请求的模型(仅当项目包含多个模型时才询问),并使用其活动配置集。应用清单中的:
当能力检查发现 MATLAB MCP 服务时,请在现有 MATLAB 会话中使用该 MCP 执行这些操作。不要用本地 CLI 运行替代它。
configset.CompileOptions.DefaultSpeciesDimension = settings.CompileOptions.DefaultSpeciesDimension;
configset.CompileOptions.DimensionalAnalysis = settings.CompileOptions.DimensionalAnalysis;
configset.CompileOptions.UnitConversion = settings.CompileOptions.UnitConversion;
configset.SolverOptions.AbsoluteTolerance = settings.SolverOptions.AbsoluteTolerance;
configset.SolverOptions.RelativeTolerance = settings.SolverOptions.RelativeTolerance;
configset.SolverType = settings.SolverType;
configset.TimeUnits = settings.TimeUnits;
configset.StopTime = settings.StopTime;
configset.SolverOptions.OutputTimes = matlabOutputTimes;
仿真前,检查模型剂量。如果有任何剂量未激活,请告知用户其名称,并询问是否要在本次内存中的奇偶校验运行中激活它们、保留其已保存状态,或停止。不要持久化此选择。运行 sbiosimulate,仅收集所选序列及其单位,并写入精简的 MATLAB 结果 JSON:
{
"dose_decision": "activate inactive doses for this run",
"time": { "unit": "second", "values": [0, 3600] },
"series": [{ "id": "Tumor", "unit": "mole", "values": [1, 2] }]
}
time.unit 必须反映 MATLAB 输出时间单位;每个序列 ID 必须与所选 Jinkō ID 完全一致。组件缺失或单位转换不受支持属于映射失败,不能以猜测代替。
比较并报告
使用 Jinkō 和 MATLAB JSON 文件调用辅助工具的 compare 命令。该命令:
- 使用阿伏伽德罗常数转换兼容的
mole/substance_count值; - 在对齐前转换常见时间单位;
- 对逐点匹配保留每个重复 Jinkō 时间戳处的最终值(事件后的状态),随后在唯一递增的时间点上积分;
- 使用
abs <= 1e-8 + 1e-6 * abs(jinko)作为诊断指标,报告逐点最大绝对/相对误差和不匹配数量; - 计算 Jinkō 和 MATLAB 的梯形积分 AUC,并将相对 AUC 误差超过 1% 标记为
WARN。如果参考 AUC 为零,则报告绝对 AUC 误差,并将 AUC 状态设为N/A;如果任何所选序列的参考 AUC 为零,则总体状态也为N/A,绝不能无条件报告PASS。
将 comparison.md 作为精简结果表呈现。以 AUC 状态作为主要结果;说明逐点不匹配可能反映求解器/事件时间差异。保留 comparison.json 和 comparison.csv 作为运行产物,其中包括单位、转换、所选输出和重复时间处理策略。
故障处理
- 如果缺少设置、输出 ID 或时间对齐信息,请停止并指出具体的前置条件。不要使用推断值继续。
- 要求单位明确且兼容,时间序列值为有限数值。缺少单位、NaN 或无穷大都意味着比较输入失败,而非一致。
- 将选择限制为一到十个请求输出。内部必须包含
Time。 - 不要编辑 Jinkō 模型、其求解选项或源项目。
- 如果没有 MATLAB MCP,请提供适用于当前项目的最少命令,并且仅请求辅助工具所需的 MATLAB 结果 JSON;不要创建新的持久化用户工作流。