Skip to main content
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 サブクライアントを獲得し、listgetget_unitsget_datapolars.DataFrame を返す)を備える。REST サーフェスは 署名付き URL のダウンロード、オンザフライのダウンサンプリング、x 範囲フィルタを サポートする。新しいドキュメントページが UI ワークフローと REST エンドポイントを 解説している。

設計最適化のためのネイティブ UCP シミュレーション

DesignObjectivebackend="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。キャンセル と削除)に加え、creategetlistupdatecanceldeletewait_for_completion を備えた client.simple_pipeline SDK サブクライアントを 提供する。大きな検証出力は DB レコードではなくメタデータストレージに書き込まれ、 単一ジョブ内の分散評価は DataFit.setup() の新しい _on_setup_complete フックを 通じて配線されている。

グローバル検索 API

新しい GET /search エンドポイントが、認証された組織内のプロジェクト、スタディ、 シミュレーション、モデル、パラメータ化モデル、最適化、最適化テンプレート、実験 テンプレート、パイプライン、セル仕様、材料にわたってプレフィックス全文検索 + 部分文字列検索を実行する。テーブルごとの Postgres tsvector カラム + GIN インデックスに支えられ、すべてのエンティティクエリは asyncio.gather 経由で 並列にファンアウトされる。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_resultsvalidation_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 numberCycle count のカラム名変更後、Cycles タブが 再び表示され、サイクルフィルタスライダーの範囲も正しくなった。
  • properties または file タイプの測定値が、空の時系列タブを描画する代わりに、 詳細パネルまたは SDK を指し示す情報アラートを表示するようになった。
改善
  • 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_iterationsmaxiter / max_nfev / iters / niter を置き換え、 population_sizeScipyDifferentialEvolutionpopsize を置き換える。 旧名は DeprecationWarning を発しつつ引き続き動作する。 DataFit.max_iterationsFunctionTimeout.max_iterations も同じ名前に 揃えられた。
  • ionworks_ucp.SolverErrorBaseObjective._acceptable_errors に登録された。 これにより、差分進化中の一時的な UCP ソルバー障害が、最適化を停止させる代わりに 有限ペナルティの経路に落ちるようになった。プロトコルおよび構成のエラーは 引き続き ValueError / RuntimeError であり、静的なバグは依然として表面化する。 修正
  • pybamm.ExperimentperiodtemperatureSerialise.serialise_experiment を介してラウンドトリップするようになった (修正は pybamm 26.4.3 で出荷済み)。ExperimentStepConfigSchemaExperimentConfigSchema は新しいフィールドセット(ステップごとの periodtemperaturetagsdescriptiondirectionstart_timeskip_ok、 実験レベルの periodtemperaturetermination)を受け付ける。 duration"287 seconds" のような人間が読める文字列も受け付ける。従来の _apply_dropped_fields の回避策は削除された。
  • SimplePipeline ジョブがプロセス内で DataFit を実行し、独自の Ray 接続を 確立するようになった(子ジョブランナーと _connect_to_ray_with_retry を共有) ため、分散評価が実際に発火する。Ray 接続が失敗した場合は評価器フックがスキップ され、DataFit はプロセス内の経路にフォールバックする。レガシーの要素タイプ ラベル("Data Fit""Direct Entry""datafit")は、入口でワイヤー ディスクリミネータに正規化されるようになった。
改善
  • 新しい SimplePipeline ワークフローのための client.simple_pipeline サブクライアント。
  • client.protocol.convert(protocol, target) が、primary_bytestext()save(dir) ヘルパーを持つ ConvertResult を返す。UCP YAML プロトコルを ネイティブのベンダーファイル(Maccor、Arbin、Neware、BioLogic BT-Test、または Novonix)にエクスポートする。Maccor は主ファイルと並んでドライブサイクルの MWF アセットも返す。
  • client.job.get_metadata(job_id) が、ジョブの metadata.json.gz のパース済み の内容を返し、レガシーの結果エンドポイントでは到達できなかった大きな検証 ペイロードへのアクセスを SDK に提供する。
改善
  • 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 ResistanceUserWarning 付きの Restav_t / pv_chan_test_time / pv_chan_cv_stage_current を対応する UCP タイプにマッピング、括弧付きの MV_UD[n] を正規化、先頭が負の電流式を Discharge に分類。Maccor User Def CYCLE <op> N を、ランタイムの CYCLE エイリアスに対する UCP VariableEnd に変換する。
  • 長いプロトコルでのステップごとのオーバーヘッドが大幅に削減された。モデルに Temperature [degC] がない場合、ステップごとのルックアップは pybamm の O(N²) の「もしかして…?」difflib 検索を完全にスキップする(ステップあたり 約 41 ms)。プロトコルに微分終了、set_variable、変数駆動の goto ターゲットが 含まれない場合、ステップごとの全トレース評価がスキップされ、 _create_minimal_step_dfTime [s] のみを持つ単一行フレームを発行する。
  • 真の pybamm ソルバー障害に対して新しい ionworks_ucp.SolverError 例外が 送出される。プロトコルおよび構成のエラーは元の ValueError / RuntimeError タイプを維持し、ステップのコンテキストを得るだけである。
修正
  • ~28 行の前文に加えて Type\tMode\tValue\t… ヘッダー行を含む実際の Maccor .MWF エクスポートがパースされるようになった。read_waveform がヘッダー センチネルをスキャンし、それを含めてそこまでをスキップしてから、残りを pd.read_csv に渡す。データ行のみを含むファイルは引き続き変更なくパースされる。
改善
  • 新しい 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 が書き込まれる前に、 サイクラーファミリー間でのカラムの黙った削除を捕捉できる。