jinko-task-export-to-matlab について
jinko-task-export-to-matlabは、モデルの一致性を確認する研究者向けに、Jinkōの結果とMATLAB/SimBiologyのシミュレーションを比較する手順を案内します。エクスポートマニフェスト、明示的な出力選択、単位処理により再現可能な比較を支援します。
主な機能
- 01Jinkōのワークブックと設定のエクスポート・検証
- 02保存済みSimBiologyプロジェクトの再利用
- 03指定した時系列の選択と求解
- 04エクスポート設定によるMATLABシミュレーション
- 05誤差、単位、曲線下面積の比較
- 06Markdown、JSON、CSVレポートの作成
活用シーン
- 01Jinkōと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接続と、metadata.requires_sdkの範囲を満たす 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 ツールがあれば、サーバーは利用可能です。その確認結果を伝え、MATLAB の調査、実行、結果取得に MCP を使用してください。
- 完全な機能確認で適切な MATLAB MCP 操作が見つからなかった場合に限り、ローカルの MATLAB CLI を使用してください。MCP を介さずに実行したことがユーザーに分かるよう、簡潔に記録してください。
- 検出結果が曖昧なまま先に進まないでください。実行方法を選ぶ前に解決してください。このゲートにより、見えない、または遅延読み込みされる MCP サーバーを迂回することを防ぎます。
出力ではなく、モデルから始める
- MATLAB MCP 機能の確認ゲートを完了してください。サーバーが利用可能な場合は使用し、ユーザーの指示なしにインストールや再設定を行わないでください。
- CM の短縮 ID(Jinkō CM のリンクで十分です。ID を抽出してください)だけを尋ねてください。比較する出力を尋ねる前にエクスポートしてください。
/tmp/jinko-to-matlab/<cm-sid>/のような専用の実行ディレクトリを作成し、そこでヘルパーのexportコマンドを呼び出してください。安全にバンドルを展開し、ワークブックが正確に1つと、それに対応するSimulationSettings_<model_name>.yamlがあることを確認して、設定を検証し、コンテンツハッシュを含むparity-manifest.jsonを書き込みます。
アクセス、エクスポート、マニフェスト検証に成功した後、再度確認を求めないでください。
生成されたワークブックと設定ファイルのパスを簡潔に伝えてください。
ヘルパーは既存のマニフェストと結果ファイルをデフォルトで保持します。意図的に再実行するために
--overwrite を使う前に、既存の成果物を確認してください。
インポート済みプロジェクトを再利用する
Model Builder の操作を依頼する前に、マニフェストの reuse.workbook_unchanged を確認してください。
- 検出可能な保存済み
.sbprojがあり、ワークブックに変更がなければ、それを再利用してください。 比較のたびに、現在エクスポートした設定を適用してください。設定のみの更新であれば、再インポートは不要です。 - 保存済みプロジェクトがない場合、ワークブックが変更されている場合、または候補プロジェクトが複数見つかった場合は、簡潔な質問を1つしてください。プロジェクトに変更がある、または見つからない場合は、空の Model Builder モデルを作成し、デフォルトの
unnamedコンパートメントを削除してから、Home → Model → Import Model Components from Excel を使用するようユーザーに案内してください。プロジェクトは実行ディレクトリに保存してもらってください。このプレースホルダーを削除することで、余分なコンパートメントがインポートしたモデルに持ち込まれるのを防げます。これは必須となる唯一の手動手順です。SimBiology には SBML/プロジェクトのインポート機能が文書化されていますが、Excel コンポーネントをインポートする API はありません。 - 提供された
.sbprojを上書きしないでください。MATLAB に読み込み、現在の比較に限って、すべての設定や用量の変更をメモリ上で行ってください。
単一の比較対象を提示する
ヘルパーのlist-seriesコマンドを使って、時間に依存する静的 ID を取得します。それらを選択可能な出力として表示し、ユーザーに1~10個を選ぶよう求めます。このリストにTimeを含めたり、上限の数に含めたりしないでください。コンポーネントを暗黙に選択、改名、置換してはいけません。
ユーザーが出力を選択したら、ヘルパーのsolveコマンドを呼び出します。このコマンドは、正確な Jinkō ペイロード['Time', *selected_ids]を送信します。Timeでは大文字と小文字が区別され、要求しない限り返されません。 エクスポートのparity-manifest.jsonをコマンドに渡し、要求したすべての系列とTimeが応答に含まれていることを必須とします。ヘルパーは Jinkō が返す秒をエクスポートされたTimeUnitsに変換し、matlab_output_timesに書き込みます。これらの値を MATLAB のOutputTimesとして使用し、均一なグリッドを導出したり、設定の異なる MATLAB モデルに Jinkō の生の秒を渡したりしてはいけません。
エクスポートされた設定で 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、無限大は、一致ではなく比較入力の失敗として扱います。
- 要求する出力の選択数は1~10個にしてください。
Timeは内部で必須です。 - Jinkō モデル、その求解オプション、またはソースプロジェクトを編集してはいけません。
- MATLAB MCP がない場合は、現在のプロジェクトに必要な最小限のコマンドを提示し、ヘルパーに必要な MATLAB 結果 JSON のみを求めます。新たに永続的なユーザーワークフローを作成してはいけません。