Pipeline Elements
基本となる構成要素はパイプライン要素です。任意のパイプライン要素は(空でもよい)パラメータ値の集合を受け取り、別のパラメータ値の集合を返します。各要素を順に呼び出すことで、完全なパラメータ集合が得られます。 パイプライン要素には 5 種類あります。ここに挙げたパイプライン要素の種類および組み込みの計算は網羅的ではありません。詳細は API リファレンス を参照してください。
- パラメータ辞書から入力パラメータを取得
- 計算を実行
- 後続の要素から利用可能な出力パラメータを返す
パイプラインをプログラムから組み立てて送信する方法については、Documentation タブの Pipelines → Overview を参照してください。
Naming conventions
Clear Naming
Use descriptive parameter names with units:
"Electrode capacity [A.h]" not "cap"Unit Consistency
Be explicit about unit conversions; use SI units internally
Built-in Calculations
Geometry & Capacity
Electrode geometry, mass, capacity, cyclable lithium, and microstructure
Thermal Properties
Heat capacity, Arrhenius temperature dependence, and thermal modeling
Piecewise Interpolants
Smooth piecewise functions for SOC and temperature-dependent parameters
パイプライン失敗への対処
パイプライン要素は順番に実行されます。ある要素が失敗すると、パイプラインはエラーを報告し、後続の要素は停止します。原因は要素にerror_code として記録されます。
失敗したパイプラインの再投入
最初に失敗した要素のerror_code が SUBMISSION_FAILED の場合、パイプラインを再投入できます。再投入はその要素をリセットし、パイプラインが停止した箇所から実行を再開します — 完了済みの要素は再実行されません。
- Studio
- REST API
パイプライン詳細ページを開きます。先頭の失敗が投入エラーの場合、ページ上部の失敗要素のアラートに Resubmit ボタンが表示されます。これをクリックすると、パイプラインをその場で再試行できます。
Data Fitting
パイプラインの抽象化は、データフィッティング — モデル予測を実験データと比較することで未知パラメータを推定する処理 — も支えます。DataFit 要素はパイプラインを最適化ループでラップします。
- 最適化器がパラメータ値を提案する
- パイプラインがその値でモデルを実行する
- 目的関数が予測とデータの一致度を評価する
- ベストフィットのパラメータが得られるまで繰り返す
Data Fitting (theory)
Cost functions, identifiability, regularization, and other theory.
Data Fitting (how-to)
Configure and submit data fits with
ionworks-schema + ionworks-api.パイプラインのエラー
パイプライン要素が失敗すると、Studio はその要素を Failed 状態で表示し、エラーメッセージと機械可読な エラーコード を併せて示します。パイプライン一覧でステータスチップにカーソルを合わせるとコードが表示され、失敗した要素を展開すると完全なメッセージを確認できます。 同じフィールドは、失敗したジョブやパイプライン要素の API レスポンスでも返されます:エラーコード
error_code フィールドを使うと、エラー文字列を解析することなく失敗の種類に応じて分岐できます:
Python で設定エラーをキャッチする
ionworkspipeline パッケージは ParameterNotFoundError を公開しているため、トレースバックやメッセージ文字列を調べることなく、パラメータの欠落による失敗をキャッチできます。KeyError を継承しているため、既存の except KeyError ハンドラもそのまま動作します。
ParameterNotFoundError は KeyError を継承しており、独自の属性は持ちません。メッセージは str(err) または err.args[0] で取得でき、pybamm のパラメータ参照が生成する完全なテキスト(例: "'Negative electrode loading [A.h.cm-2]' not found. Best matches are [...]")が格納されます。欠落しているキー名と近い候補が示されるため、診断 UI の構築やパラメータセットの自動修正を行う際に便利です。
パイプライン/データフィットのパース時に投げられるもう 1 つの設定エラー UserConfigurationError は、パッケージのルートには再エクスポートされていません — ルートで公開されているのは ParameterNotFoundError のみです。直接キャッチする必要がある場合はサブモジュールからインポートしてください: from ionworkspipeline.exceptions import UserConfigurationError。これは ValueError を継承しているため、except ValueError ハンドラでもキャッチできます。
プロトコルエンジン側の失敗については、ionworks_ucp が ProtocolConfigurationError を投げます。これは UCP プロトコルが記述どおりにシミュレーションできない場合 — 例えば、名前で参照したドライブサイクルが供給されていない、goto ターゲットが解決できない、終了条件の文字列がパースできない、初期 SOC が [0, 100] を外れている、SetVar 式が未初期化の変数を参照しているなど — に発生します。この例外は ValueError を継承しているため、既存の except ValueError ハンドラはそのまま動作します。ProtocolConfigurationError を直接キャッチすれば、ユーザー側で修正可能なプロトコルの問題と、内部のソルバーバグを区別できます。
ProtocolConfigurationError を INTERNAL_ERROR ではなく CONFIGURATION_ERROR コードにルーティングし、そのメッセージをそのままユーザーに表示します。ローカルでキャッチするのと同じ例外が、API 経由で確認する失敗したパイプライン要素にも反映されます。