May 18, 2026
Studio での材料プロパティ、設計最適化のためのネイティブ UCP シミュレーション、SimplePipeline ワークフロー、グローバルな /search エンドポイント
Studio での材料プロパティ
プロジェクトサイドバーに新しい Materials セクションが追加され、プロジェクト 内で材料を作成し、それぞれに測定済みのプロパティデータセット(CSV / parquet)を 添付できるようになった。アップロード、プロット、編集、再処理、置換、削除がすべて 配線済みで、複合(project_id, organization_id) 外部キーを持つ新しい
material_property_datasets テーブルと専用の Supabase バケットに支えられている。
Python SDK は読み取り専用の client.material および
client.material_property_dataset サブクライアントを獲得し、list、get、
get_units、get_data(polars.DataFrame を返す)を備える。REST サーフェスは
署名付き URL のダウンロード、オンザフライのダウンサンプリング、x 範囲フィルタを
サポートする。新しいドキュメントページが UI ワークフローと REST エンドポイントを
解説している。設計最適化のためのネイティブ UCP シミュレーション
DesignObjective に backend="ucp" オプション(IONWORKS_SIMULATION_BACKEND
環境変数でも選択可能)が追加され、UCP プロトコルを pybamm.Experiment に変換する
代わりに、最適化ループ内でネイティブに実行するようになった。これにより、変換で
失われていた UCP の機能(動的ループ、条件分岐、goto、set_variable、サブルー
チン)が保持され、反復ごとのパーサーオーバーヘッドも回避される。UCP バックエンドは
まだ周波数領域のステップをサポートしていないため、設計最適化では EIS ステップが
前段で拒否されるようになった(フロントエンドのフォームとバックエンドの双方で
明確なエラーを表示する)。EIS には引き続きスタンドアロンシミュレーションが経路と
なる。SimplePipeline ワークフロー
高コストな要素を最大 1 つ(1 つのデータフィット、または 1 つの検証)だけ含む 設定のための、新しい軽量パイプラインバリアント。設定全体が子ジョブにファンアウト する代わりに、バッチキュー上の単一の Ray ジョブとしてエンドツーエンドで実行される。/simple_pipelines 配下の CRUD エンドポイント(POST は 202 を返す。LIST は
フィルタと Supabase の演算子構文をサポートする。名前 / 説明には PATCH。キャンセル
と削除)に加え、create、get、list、update、cancel、delete、
wait_for_completion を備えた client.simple_pipeline SDK サブクライアントを
提供する。大きな検証出力は DB レコードではなくメタデータストレージに書き込まれ、
単一ジョブ内の分散評価は DataFit.setup() の新しい _on_setup_complete フックを
通じて配線されている。グローバル検索 API
新しいGET /search エンドポイントが、認証された組織内のプロジェクト、スタディ、
シミュレーション、モデル、パラメータ化モデル、最適化、最適化テンプレート、実験
テンプレート、パイプライン、セル仕様、材料にわたってプレフィックス全文検索 +
部分文字列検索を実行する。テーブルごとの Postgres tsvector カラム + GIN
インデックスに支えられ、すべてのエンティティクエリは asyncio.gather 経由で
並列にファンアウトされる。Studio にはまだフロントエンドの検索バーはない。新しい
ドキュメントページがこれを明示しているので、探し回らずに済む。Studio
Studio
改善
- 最適化テーブル: 既存の一括キャンセルアクションの隣に一括 Delete が復活した。
optimization:deleteでゲートされ、正しく複数形化する確認ダイアログと行ごとの エラートーストを備える。 - プロトコルシミュレータ: 「Configure Plot」の隣の Download CSV ボタンが、 ズームにかかわらず、各時点に合わせて展開されたステップレベルのカラム (サイクル数、ステップ番号、プロトコル変数)を含む全時系列をエクスポートする。
- 時系列測定プロット:
+ボタンで同じ単位を共有する複数の変数をいずれかの Y 軸にオーバーレイできる。単位でフィルタされたドロップダウン、系列ごとに 異なるカラーサイクル、削除用の個別の×を備え、異なる単位の主変数を選択すると 互換性のない追加分がクリアされる。 - ECM モデルが
Anode potential [V]、Cathode potential [V]とそれらの開回路 対応物を公開するようになり、BioLogic の三電極 EWE / ECE 制御限界をシミュレー ションから再現できるようになった。新しいLFP/Li metalハーフセル化学が パラメータライブラリとセル構成 UI に追加された。 - ホバーツールチップが
createBasePlotLayoutを介して Plotly と Highcharts 全体で小数点以下 3 桁に標準化され、新しいフロントエンドの慣習として文書化された。 - EIS の Nyquist プロットが、接続線なしのマーカーのみの散布図として描画される ようになり、マーカーがやや大きくなった。
- セル仕様のカスケード削除が、
bucket.remove()呼び出しごとに最大 1000 個の ストレージパスをバッチ化し、測定値ごとのフォルダ削除をSemaphore(16)で 並列化する。測定値リストの取得にはasyncio.gatherを用いるため、1 つの一時的な DB 障害が他のクリーンアップを中断させないようになった。 - Supabase ストレージのダウンロードが、一時的な 5xx エラーを指数バックオフで リトライするようになった(3 回試行、0.5 秒 → 4 秒、ジッタ付き)。storage3 が 非 JSON の 502 レスポンスボディでクラッシュしていたジョブ失敗を修正する。
GET /jobs/{job_id}/metadataルートが、ジョブのmetadata.json.gzブロブの パース済みの内容を返すようになり、レガシーの/pipelines/validations/{job_id}/resultエンドポイントでは到達できなかった 大きな検証ペイロード(validation_results、validation_plot_config)への 経路を Python SDK に提供する。- シミュレーションの送信が二段階パターン
(
/protocols/parse-to-template→/simulations/with-template/batch)に 統一された。冗長な/simulations/protocol、/simulations/protocol/batch、 単一の/simulations/with-template、/standalone-cycler/simulateの各 エンドポイントを削除し、一時的なcycler_protocol_resultsテーブルを廃止した。
- シミュレーションの重複排除: simulation_options の一意性キーから
cycler_protocol_record_id(パースセッションごとに変化する)を削除した。 これにより「シミュレーションは既に存在する」経路が実際にトリガーされ、重複行の 蓄積が止まる。 - 測定値の詳細:
Cycle number→Cycle countのカラム名変更後、Cycles タブが 再び表示され、サイクルフィルタスライダーの範囲も正しくなった。 propertiesまたはfileタイプの測定値が、空の時系列タブを描画する代わりに、 詳細パネルまたは SDK を指し示す情報アラートを表示するようになった。
Pipeline
Pipeline
改善
-
ionworks-schemaが、パイプライン全体にわたるパーサー入力の唯一の検証境界に なった。スキーマ対応物を持つすべてのパイプラインクラス(約 40 クラス)がfrom_schema(schema)クラスメソッドを獲得した。パーサーはiws.X.model_validate(config)を呼び出し、from_schema経由でランタイム オブジェクトを構築する。自動生成されていたConfigMixin.config_schema()は 廃止され、SDK はionworks-schemaに直接依存するようになったため、PipelineClient.create()はiws.Pipeline | dictを受け付ける。 -
すべての scipy ラッパーにわたってユーザー向けの最適化キーワード引数を標準化した。
max_iterationsがmaxiter/max_nfev/iters/niterを置き換え、population_sizeがScipyDifferentialEvolutionのpopsizeを置き換える。 旧名はDeprecationWarningを発しつつ引き続き動作する。DataFit.max_iterationsとFunctionTimeout.max_iterationsも同じ名前に 揃えられた。 -
ionworks_ucp.SolverErrorがBaseObjective._acceptable_errorsに登録された。 これにより、差分進化中の一時的な UCP ソルバー障害が、最適化を停止させる代わりに 有限ペナルティの経路に落ちるようになった。プロトコルおよび構成のエラーは 引き続きValueError/RuntimeErrorであり、静的なバグは依然として表面化する。 修正 -
pybamm.ExperimentのperiodとtemperatureがSerialise.serialise_experimentを介してラウンドトリップするようになった (修正はpybamm 26.4.3で出荷済み)。ExperimentStepConfigSchemaとExperimentConfigSchemaは新しいフィールドセット(ステップごとのperiod、temperature、tags、description、direction、start_time、skip_ok、 実験レベルのperiod、temperature、termination)を受け付ける。durationは"287 seconds"のような人間が読める文字列も受け付ける。従来の_apply_dropped_fieldsの回避策は削除された。 -
SimplePipeline ジョブがプロセス内で
DataFitを実行し、独自の Ray 接続を 確立するようになった(子ジョブランナーと_connect_to_ray_with_retryを共有) ため、分散評価が実際に発火する。Ray 接続が失敗した場合は評価器フックがスキップ され、DataFit はプロセス内の経路にフォールバックする。レガシーの要素タイプ ラベル("Data Fit"、"Direct Entry"、"datafit")は、入口でワイヤー ディスクリミネータに正規化されるようになった。
Python API
Python API
改善
- 新しい SimplePipeline ワークフローのための
client.simple_pipelineサブクライアント。 client.protocol.convert(protocol, target)が、primary_bytes、text()、save(dir)ヘルパーを持つConvertResultを返す。UCP YAML プロトコルを ネイティブのベンダーファイル(Maccor、Arbin、Neware、BioLogic BT-Test、または Novonix)にエクスポートする。Maccor は主ファイルと並んでドライブサイクルの MWF アセットも返す。client.job.get_metadata(job_id)が、ジョブのmetadata.json.gzのパース済み の内容を返し、レガシーの結果エンドポイントでは到達できなかった大きな検証 ペイロードへのアクセスを SDK に提供する。
Protocol Simulator
Protocol Simulator
改善
- BioLogic
.mpsパーサー: User Profile(ドライブサイクル)ステップが、埋め込まれた Urban Profile Table から、または.mpsに埋め込みテーブルがない場合はadditional_content経由で供給される兄弟.txtファイルから抽出されるように なった。UCP/PyBaMM では正が放電を表すように、取り込み時に電流の符号が反転される。 - Arbin パーサーが、後方 goto パターンからループを推論する代わりに、生の goto を
保持したままステップリストをフラットに保つよう書き直された。
dynamic_experimentは既にフラットな名前空間で goto を解決し、max_backward_jumpsで後方ジャンプをガードする。同じターゲットへの兄弟後方 goto、ループをまたぐ goto の解決、F_EIS_10%_capacity_changeのような数字を 含む数式ラベルを修正する。Pause ステップは UCP の第一級補助Pauseステップを 発行する。 - より多くの Arbin / Maccor ステップタイプを認識するようになった。
Arbin
Internal Resistance→UserWarning付きのRest、av_t/pv_chan_test_time/pv_chan_cv_stage_currentを対応する UCP タイプにマッピング、括弧付きのMV_UD[n]を正規化、先頭が負の電流式をDischargeに分類。MaccorUser Def CYCLE <op> Nを、ランタイムのCYCLEエイリアスに対する UCPVariableEndに変換する。 - 長いプロトコルでのステップごとのオーバーヘッドが大幅に削減された。モデルに
Temperature [degC]がない場合、ステップごとのルックアップは pybamm の O(N²) の「もしかして…?」difflib検索を完全にスキップする(ステップあたり 約 41 ms)。プロトコルに微分終了、set_variable、変数駆動の goto ターゲットが 含まれない場合、ステップごとの全トレース評価がスキップされ、_create_minimal_step_dfがTime [s]のみを持つ単一行フレームを発行する。 - 真の pybamm ソルバー障害に対して新しい
ionworks_ucp.SolverError例外が 送出される。プロトコルおよび構成のエラーは元のValueError/RuntimeErrorタイプを維持し、ステップのコンテキストを得るだけである。
- ~28 行の前文に加えて
Type\tMode\tValue\t…ヘッダー行を含む実際の Maccor.MWFエクスポートがパースされるようになった。read_waveformがヘッダー センチネルをスキャンし、それを含めてそこまでをスキップしてから、残りをpd.read_csvに渡す。データ行のみを含むファイルは引き続き変更なくパースされる。
Skills
Skills
改善
- 新しい
run-simple-pipelinesスキルが、SimplePipeline クライアントを エンドツーエンドで解説する。 process-data:protocolは電気化学的な結果に影響する試験条件(温度、C レート、 SoC、DoD、圧力)を保持し、一方test_setupは結果に影響しない物理的な手配 (サイクラーモデル、オペレーター、ラボ、チャンネル)を保持することを明確化した。test_setupは測定値にのみ存在し、セルインスタンスには存在しない。process-data: ステップカラムを伴うset_step_countが、曖昧さのない デフォルトになった。これはnp.sign(np.diff(...))をキーにするため、GITT や サブステップ付き RPT による減少 / 繰り返しのステップ ID も、単調なものと同じ ように機能する。set_cumulative_step_number(method="current sign")は、ステップ カラムがまったく存在しない場合のフォールバックとして位置づけ直された。ステップ 遷移で重複するTime [s]行を発行するサイクラーへの注意書きを追加した。process-data: 必須のヘッダー監査ステップが 8 つのルール(すべてのファイルを 走査、コホート × カラムセットでグループ化、Standard / Auxiliary / Drop に分類、 リーダー出力を差分、補助カラムを保持、複数熱電対チャンネルを分離したまま維持、 コホートごとに単位 / 符号を確認、温度欠落を所見として表面化)と必須の確認 レポート形式を成文化した。これにより、標準化された parquet が書き込まれる前に、 サイクラーファミリー間でのカラムの黙った削除を捕捉できる。