リチウム硫黄化学を持つカスタム PyBaMM モデル
/models/upload-custom エンドポイントが chemistry フィールドを受け付ける
ようになり(デフォルトは lithium_ion)、Li-S モデルは実行時に化学を考慮した
初期状態のシムと、より厳しい IDAKLU 許容誤差を得る。manage-projects SDK スキルは
アップロードワークフロー全体を文書化している。pybamm.Serialise().save_custom_model(filename=...)
→ マルチパートアップロード → client.model.get(id) が is_custom_model: true を
返す、という流れであり、serialise_custom_model() が返す辞書を直接
json.dumps しようとすると誰もが遭遇する EventType-not-JSON-serializable の
落とし穴も含まれている。ECM フィット: 容量の共最適化とセグメントごとの初期 SoC
プロジェクトスコープの ECM フィットに対する、相互に関連するいくつかの改善。ocv_soc_curve(およびオプションの bounds_capacity)を与えると、Q を単一の
シードに固定する代わりに、外側の最小二乗ループで RC の beta ノットと共に
セル容量 Q を共最適化できる。25 °C のレートテストトレースでは、フィットされた
容量がすべてのノットスケジュールにわたってクーロンカウンティングの真値の
0.9 % 以内に収まるようになった。initial_soc がリスト(測定値ごとに 1 エントリ)
を受け付けるようになり、複数測定のフィットがギャップをまたいでクーロンを積分する
代わりに、各セグメント境界で SoC をリセットする。省略した場合、新しい自動シード
ルーチンが V[s] = OCV(soc0) − I[s]·R0(soc0) の求根によって各セグメントの
soc0 を精緻化する。num_knots、num_knots_r0、knot_schedule、
clamp_max_ratio が /fit-from-measurements と /fit-from-file の第一級
パラメータになった。境界クランプのデフォルトも max_ratio=1.0 から 10.0 に
緩められた。これは R0 を潰し、レートテストの順方向シミュレーションで pybamm
IDAKLU の CONV_FAIL を引き起こしていた。Python SDK のデフォルトプロジェクト
Ionworks クライアントが、構築時に project_id= 引数または新しい
IONWORKS_PROJECT_ID 環境変数からデフォルトの project_id を解決するように
なり、呼び出し側が毎回 project_id を引き回す必要がなくなった。従来の
PROJECT_ID 環境変数も引き続き動作するが、DeprecationWarning を発する。
すべての client.study.* メソッドは(リソース ID の後に)オプションのキーワード
として project_id を取り、デフォルトはクライアントの値となる。パイプラインと
最適化はこれをペイロードに自動注入する。構造化された測定検証イシュー
MeasurementValidationError.errors が list[ValidationIssue] になった。これは
安定した IssueCode(StrEnum)、severity、人間が読める message、JSON
ネイティブの payload を持つ凍結データクラスである。下流のコードは、メッセージ
文字列を grep する代わりに e.has_code(IssueCode.CURRENT_SIGN_REVERSED) で
チェックの同一性によって分岐できる。ionworksdata の自動修正パスは新しいコードを
キーにするようになった。IssueCode と ValidationIssue はトップレベルの
ionworks パッケージから再エクスポートされる。Studio
Studio
改善
organization_idが約 15 個のテーブルでNOT NULLになり、すべての RLS ポリシーがそれを直接読み取るよう書き換えられ(has_permission_via_*関数 チェーンを置き換える)、複合(project_id, organization_id)外部キーが プロジェクトスコープのテーブルでの組織ドリフトを防ぐようになった。- シミュレーションボードの CRUD が、
organization_idをサーバー側で解決する 適切なバックエンド API/projects/{project_id}/studies/{study_id}/simulation_boardsに移行された。これにより、より厳格な RLS によって直接の Supabase 挿入が黙って 拒否されていた stage 上の空白の Visualization タブが修正された。 - 最適化の Performance Detail および Performance Summary タブが、埋もれていた
validation_warning/validation_not_supportedイシューをタブの上のトップ レベルのアラートとして表面化するようになった。まれに発生する「空だが有効」な ケースには、タブ内に情報「データなし」アラートを表示する。 - Visualization タブの防御的 UX: ボードが利用できない場合でも Data/Visualization トグルは表示され続け、ユーザーを空白ページに閉じ込める代わりに Data への 切り替えを促す警告アラートを表示する。
- 単一シミュレーション結果ページが、新規ナビゲーションでデータ読み込み前に 「Simulation not found」を一瞬表示しなくなった。
Pipeline
Pipeline
改善
ionworks-schemaが、パイプラインに既にあったConstraint、Penalty、CMAESOptions、PSOOptions、DEOptions、LatinHypercube、Uniformの スキーマクラスを獲得し、加えて目的関数、データフィット、パラメータ推定器、 正則化器、分布サンプラーにわたる約 40 個のパイロット対象クラスにField(description=...)の充実が施された。新しい Sphinx ドキュメントの骨格が サブモジュールごとにリファレンスページを自動生成し、各スキーマクラスを intersphinx 経由で対応するionworkspipelineページにクロスリンクする。
EmptySolutionのAttributeError(不正なパラメータの組み合わせで SUNDIALS が IC で諦めた際に発生する)が、データフィット全体をクラッシュさせる代わりに、 既存のフィット失敗ペナルティパスにルーティングされるようになった。クラウド フィットは生き続け、問題のあるサンプルには巨大なコストが付くだけになる。
Python API
Python API
改善
- 新しい
client.urls.measurement(measurement_id, project_id)ヘルパーが、 測定値のウェブアプリディープリンクを返すようになり、呼び出し側がfrontend/src/routes/paths.tsに対して URL を手作りする必要がなくなった。
Skills
Skills
改善
manage-projectsが/models/upload-customのマルチパートワークフローと、 Model / ParameterizedModel の区別を文書化するようになった。upload-dataおよびその他の検証対応スキルを、エラー文字列の部分一致の 代わりに新しいIssueCode/ValidationIssueAPI とe.has_code(...)パターンを参照するよう更新した。