Skip to main content
June 1, 2026
Ionworks ソルバーがデフォルトとして IDAKLU を置き換え、失敗したパイプラインと最適化の構造化されたエラー詳細、Wasserstein の重み付けモードと MSMRFullCell の dQ/dU 出力

Ionworks ソルバー

新しい IonworksSolverionworkspipeline.Simulation 内のデフォルト ソルバーになった。これは pybamm.IDAKLUSolver のドロップイン代替であり、DAE の 構造的特性(求積、線形定数 / 線形可変、ブロック定数 / ブロック可変)を検出し、 構造が許す場合は厳密な解析解で代替し、解析不可能なモデルでは IDAKLU に フォールバックする。CasADi の CodeGenerator による実行時の C コード生成と Numba-JIT 積分カーネルにより、解析パスでのステップごとのコストが削減される。 区分的補間は smoothing=0 も受け付けるようになり、ハードなステップ関数を直接 モデル化できる。

失敗したパイプラインと最適化の構造化されたエラー詳細

パイプライン要素と最適化の失敗が、例外タイプと Sentry ディープリンクを伴う 構造化された error_detail を保持するようになった。2 つの新しいジョブエラー コード CONFIGURATION_ERRORSOLVER_ERROR が、ユーザーが修正可能な設定 ミスとソルバー側の失敗を区別する。パイプラインパッケージ内では、FuzzyDict / ParameterStore が裸の KeyError の代わりに新しい ParameterNotFoundError を 発生させ、ConfigurationError が無効な設定と実行時エラーを区別するため、 分類器が正しいコードを付与する。Studio では、失敗した最適化が View in Sentry ボタン(スーパー管理者のみ)を表示し、キャプチャされたイベントを直接開くように なった。例外メッセージ自体はシリアライズ前に取り除かれるため、ユーザーに見える 診断情報は安全に共有できる。

Wasserstein の重み付き点群モードと MSMRFullCell の dQ/dU 出力

iws.costs.Wasserstein / iwp.costs.Wasserstein がオプションの position_variableweight_variable フィールドを獲得した。両方が設定された 場合、コストは目的関数ごとに 2 つの重み付き点群を比較する 1 つの Wasserstein-1 距離を計算する。これは、Voltage [V] のピーク位置誤差をサンプルごとではなく |dQ/dV| の重みで測定すべきフルセル MSMR フィットで有用である。MSMRFullCellobjective variables に列挙された場合に Differential capacity [Ah/V] を 出力するようになり、これは Full voltage [V] / Full capacity [A.h] から導出され、 データの電圧グリッドに補間される。

パイプラインのドキュメントがスキーマ優先の Docs セクションへ移動

実行可能な「実際にどう動かすか」というパイプラインの内容が、Guide から Documentation タブ配下の新しいスキーマ優先の Pipelines セクションへ移動した。 すべてのコードサンプルは ionworks-schema + ionworks-api を使うよう書き直された。 Guide には理論(方程式、パラメータ表、直感)が残り、既存の「Pipelines」グループは Parameterization に改名された。日本語タブも新しいセクションを反映している。
修正
  • 既存の測定値からのプロジェクトスコープの ECM フィッティングが 422 を返さなく なった。フロントエンドは、測定値ごとの SOC 変更以降バックエンドが期待してきた ネストされた {measurements: [{id, initial_soc?}], ecm_options: {...}} ペイ ロードを送信するようになり、選択された各測定値の隣に測定値ごとの初期 SOC 入力を表示する。
改善
  • client.simulation.protocol(...)design_parameters をフラットな辞書として 再び受け付けるようになった。プロトコルテンプレートフローの導入時に誤って削除 されていた単一シミュレーションの便宜機能である。design_parametersdesign_parameters_doe の両方を与えた場合、または複数のシミュレーションに展開 される DOE を与えた場合は、追加の実行を黙って課金する代わりに明示的に例外を 発生させるようになった。
  • 大きな埋め込みドライブサイクル表を持つ BioLogic .mps プロトコル(例: YAML の ブロックスカラーとしてインライン化された約 96k 行の Urban Profile トレース)が、 /protocols/parse-to-template でエッジプロキシのタイムアウトを起こさなくなった。 変更後の YAML が低速な PyYAML パスで再解析されなくなった。
  • iws.direct_entries.DirectEntrypybamm.ParameterValues を直接受け付ける ようになった。呼び出し可能な値(濃度依存・温度依存の補間関数)は ParameterValues.to_json() によって自動的にシンボル JSON にシリアライズされ、 パイプライン内の DirectEntry.from_schema パスがそれらを pybamm シンボルに 逆シリアライズして戻すため、ローカルと API の消費パスが同じ挙動になる。
修正
  • ionworkspipeline.* 配下の子モジュールロガー(例: ionworkspipeline.data_fits.*)が set_logging_level によって管理される ようになった。従来パッケージロガーは親ではなく兄弟だったため、サブモジュールの レコードがそれを通り越して伝播していた。
改善
  • client.simple_pipeline.create(...)PipelineOptions(例: live_progress_updates=False)を受け付けるようになった。ワーカーは既にジョブ パラメータの pipeline_options を尊重していたが、これによりリクエストモデル、 サービス層、SDK クライアントが一貫してつながった。
修正
  • 送信される JSON ペイロードが、リクエストボディに datetime カラムを持つ pandas DataFrame を含む場合に TypeError を発生させなくなった。pd.Timestampisoformat() でシリアライズされ、pd.NaTnull になる。
修正
  • BioLogic .mps パーサーが、lim*_seq が内部のサブサイクルポインタ ≤ Ns+1 を格納する lfp_gr_cccv.mps のようなプロトコルでハングしなくなった。 前方ジャンプ(seq > Ns+1)のみが goto を発行し、後方または等しい値は通常の ステップ終了として扱われる。
改善
  • Ionworks スキルが gemini extensions install ~/ionworks-skills によって Gemini CLI 拡張機能としてインストールできるようになった。GEMINI.md コンテキスト ファイルが、すべての 8 つのスキルをセッションごとの受動的コンテキストとして 読み込む。Coding agents のドキュメントページが、Codex と Claude Code に加えて Gemini CLI、Cursor、GitHub Copilot のインストール経路をカバーするよう更新された。
  • 新しいハーフセル MSMR テンプレート(assets/half_cell_msmr_template.py)と、 parameterize スキルの discover_half_cell.pyinspect_half_cell_data.pyvalidate_half_cell_fit.py ヘルパー。リファレンスページはこのテンプレートを 必須とし、すべてのハーフセル OCP フィットが同じ正規の事前分布、マルチスタート、 Xj 法を使うよう、discover → inspect → scaffold → dry-run → submit → validate のワークフローを定めている。
修正
  • process-data スキルが、プラットフォームの実際の電流符号規約 (positive = discharge)を文書化し、バリデーターと set_positive_current_for_discharge 変換に合致させ、二重反転の罠を明示する ようになった。
May 25, 2026
より厳格な測定データ検証、より広範な UCP-to-cycler 変換、Wasserstein コスト関数

より強力な測定データの検証と処理

新しい厳格モードチェック capacity_energy_from_current_power は、報告された Discharge/Charge capacity [A.h] および …energy [W.h] の各列を、Current [A]Power [W] のステップごとの台形積分と比較し、行単位の不一致(デフォルト許容 誤差 10%)を検出する。これにより、後で打ち消し合うようなステップ途中の一時的な 誤差も見逃さない。報告された充放電列が入れ替わっている場合(ハーフセルのエクス ポートでよく見られる)には、fix_swapped_charge_discharge_columns がラベルを検出 して修正する。電流符号規約のチェックは、各ステップの投票を行数ではなく実際に通過 した電荷(∫|I| dt)で重み付けするようになった。これにより、ほぼゼロ電流の長い電圧 ホールドが本来の放電パルスを上回って誤った CURRENT_SIGN_REVERSED を発生させる ことがなくなった。小電流のコインセルおよびハーフセルのデータがエンドツーエンドで処理できるように なった。レストステップ検出はトレースのピーク電流に応じてしきい値をスケールし (サブ mA の電流がすべてレストとして分類されることがなくなった)、自動反転リトライ は再計算の前に古い容量・エネルギー列を破棄し、呼び出し側が指定した Step count ラベルが符号補正後も保持される。新しい汎用 parquet リーダーは CSV リーダーと同じ エイリアスベースの列検出を使用し、folder: データ参照は time_series.parquet / steps.parquet も受け付けるようになった(両方が存在する場合は CSV より優先される)。

より広範で検証付きの UCP-to-cycler 変換

UCP-to-Arbin および UCP-to-Maccor の各コンバーターは、より多くの終了条件とステップ タイプ(可変 / ループ / 複合終了、温度終了、Maccor の一時停止ステップ)を扱える ようになり、再パースに失敗するファイルを出力する代わりに、ターゲットの cycler が 本質的に表現できない機能に対して明確なエラーを事前に発生させるようになった。

Wasserstein 距離コスト関数

iwp.costs.Wasserstein は、1-Wasserstein 距離(earth mover’s distance)をデータ フィッティングのコストとして追加し、モデル出力とデータを点ごとではなく分布として 比較する。パイプラインとスキーマの両パッケージで利用できる。
改善
  • プロトコルリストの読み込みが劇的に高速化した。実験テンプレートのリスト エンドポイントは、重い JSONB 列をデフォルトで省略するようになり(22 テンプレートで 約 7.5 KB 対 7.7 MB)、呼び出し側は ?include= 経由で protocol_configparameters_schema などのフィールドをオプトインできる。
  • 失敗したパイプラインをパイプライン詳細ページから再送信できるようになった。同 ページには、失敗した各要素へのディープリンクを持つエラーバナーが表示され、個々の 要素にはインラインのエラーアラートが表示される。
  • 材料物性データセットのプロットに、単位付きの常時表示の縦型凡例が付き、プロットの 右側に配置されるようになった。
修正
  • プロジェクトデータページで測定値を ID でフィルタリングするとリストが絞り込まれる ようになった。以前は id クエリパラメータが黙って破棄され、すべての測定値が返って いた。
  • 材料データセットのアップロードで、CSV に名前のない先頭列があっても列インデックスが ずれなくなり、名前のない列を黙ってスキップする代わりに、すべての列に名前があること を要求するようになった(明確なエラー付き)。
  • プロジェクトメンバーシップ管理、アクティブな組織の切り替え、パラメータ化モデルの 削除が、データベースへの直接書き込みではなくバックエンド API を経由するようになり、 行レベルセキュリティの下で一貫した動作をするようになった。
改善
  • client.auth_check()client.whoami() は、設定された API キーがどのユーザーと 組織に解決されるかを検証するようになり、新しい GET /auth/health エンドポイントに 支えられている。誤った組織(403)エラーのデバッグや、どのキーが有効かの確認に役立つ。
改善
  • SubRout ステップを含む Maccor プロトコルが UCP YAML のラウンドトリップを生き残る ようになった。解決されたサブルーチンステップは名前空間化されて YAML に書き戻され、 サブルーチン内の goto ターゲットはシミュレーション時に解決される。これにより、 パース後シミュレーションのフローで発生していた Subroutine '<name>' not found エラーが修正された。
改善
  • 新しい validate-data スキルが、測定データの検証と列修正のワークフローをエージェ ントに案内する。
  • Codex プラグインマニフェストが追加され、Ionworks スキルパッケージが Claude Code と 並んで Codex にもインストールされるようになった。
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 が書き込まれる前に、 サイクラーファミリー間でのカラムの黙った削除を捕捉できる。
May 11, 2026
カスタム PyBaMM モデルと Li-S 対応、ECM 容量の共最適化、Python SDK のデフォルトプロジェクト、構造化された検証イシュー

リチウム硫黄化学を持つカスタム 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_knotsnum_knots_r0knot_scheduleclamp_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.errorslist[ValidationIssue] になった。これは 安定した IssueCode(StrEnum)、severity、人間が読める message、JSON ネイティブの payload を持つ凍結データクラスである。下流のコードは、メッセージ 文字列を grep する代わりに e.has_code(IssueCode.CURRENT_SIGN_REVERSED) で チェックの同一性によって分岐できる。ionworksdata の自動修正パスは新しいコードを キーにするようになった。IssueCodeValidationIssue はトップレベルの ionworks パッケージから再エクスポートされる。
改善
  • 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」を一瞬表示しなくなった。
改善
  • ionworks-schema が、パイプラインに既にあった ConstraintPenaltyCMAESOptionsPSOOptionsDEOptionsLatinHypercubeUniform の スキーマクラスを獲得し、加えて目的関数、データフィット、パラメータ推定器、 正則化器、分布サンプラーにわたる約 40 個のパイロット対象クラスに Field(description=...) の充実が施された。新しい Sphinx ドキュメントの骨格が サブモジュールごとにリファレンスページを自動生成し、各スキーマクラスを intersphinx 経由で対応する ionworkspipeline ページにクロスリンクする。
修正
  • EmptySolutionAttributeError(不正なパラメータの組み合わせで SUNDIALS が IC で諦めた際に発生する)が、データフィット全体をクラッシュさせる代わりに、 既存のフィット失敗ペナルティパスにルーティングされるようになった。クラウド フィットは生き続け、問題のあるサンプルには巨大なコストが付くだけになる。
改善
  • 新しい client.urls.measurement(measurement_id, project_id) ヘルパーが、 測定値のウェブアプリディープリンクを返すようになり、呼び出し側が frontend/src/routes/paths.ts に対して URL を手作りする必要がなくなった。
改善
  • manage-projects/models/upload-custom のマルチパートワークフローと、 Model / ParameterizedModel の区別を文書化するようになった。
  • upload-data およびその他の検証対応スキルを、エラー文字列の部分一致の 代わりに新しい IssueCode / ValidationIssue API と e.has_code(...) パターンを参照するよう更新した。
May 4, 2026
最適化実験の完全なエディター、Arbin リーダー、Maccor 対応範囲、UCP 入力スキーマ、ベースラインマイグレーションのスカッシュ

最適化実験の完全なエディター

最適化実験が、アプリの他の部分と同じプロトコルエディターを使うようになった。 素朴なテキストフィールドが、YAML 構文ハイライト、ダークモード対応、フロントエンド の事前検証、テンプレート選択とステップ調整のための完全なプロトコルビルダー ダイアログを備えた CodeMirror ベースのエディターに置き換えられた。 新しいプロトコルは “Constant Current Charge” テンプレートをあらかじめ読み込む ため、ユーザーは動作する出発点を得られる。

設計最適化の反復的メトリクス

設計最適化が CyclewiseMetricStepwiseMetric のラッパーを エンドツーエンドでサポートするようになった。最適化フォームでは、解析済みの 実験から駆動される境界付き入力フィールドで特定のサイクルやステップのメトリクスを ターゲットにでき、パイプライン変数を PyBaMM 変数と混在させられ、ラップされた メトリクスを保存/読み込みでラウンドトリップできる。基盤となる UCP→PyBaMM パーサーも、繰り返しブロックがフラットに展開されてしまう長年のバグを修正した。 これはサイクル単位メトリクスの solution.cycles インデックスを壊していた。 2 つの新しいテンプレートが同梱される。簡略化された Charge 最適化と、複合 システムモデルである。

Arbin サイクラー対応

ionworksdata がネイティブの Arbin エクスポート(CSV、XLSX、およびバイナリの .res 形式)を読み取るようになった。.res リーダーは mdb-export を使って 基盤の Access データベースからデータを抽出し(Python の MDB ライブラリは不要)、 インターリーブされたマルチセッション記録に対応するため行を DateTime で ソートし、絶対開始時刻を Global_Table.Start_DateTime から読み取る。自動検出が ファイルヘッダーから適切なリーダーを選択し、arbin res も明示的なリーダー名 として公開される。

Maccor プロトコル対応範囲

Maccor のパーサーとシミュレーターが、従来は解析時やシミュレーション中に失敗して いた、いくつかの実世界のプロトコル機能を扱えるようになった。これには制限ごとの 安全 goto、Chg/Dis Func CCCV ステップタイプ、堅牢な VAR setvar 処理が含まれる。 Maccor の ionworksdata リーダーも、一部のファームウェアバージョンで使われる コンパクトな短縮形のカラムヘッダーセットへの対応を獲得した。これは従来 ColumnNotFoundError: "Time [s]" でクラッシュし、容量/エネルギーのカラムを 黙って削除していた。

機械検証可能な UCP 入力スキーマ

ディスカバリーエンドポイント /discovery/schemas/protocol が、パーサー自身の 列挙型から生成された JSON Schema を公開するようになった。これは解析後のメモリ上の 形ではなく、実際の YAML 記述形式({Charge: {...}} のような単一キーの辞書)に 一致する。パリティテストが 17 個の正常フィクスチャと 6 個の異常フィクスチャを スキーマとパーサーの両方を通してラウンドトリップさせるため、両者がドリフトする ことはない。レガシーな kind: 形式を POST /protocols/validate に送信すると、 正規の YAML 例を指し示す有用なエラーが返るようになり、discover-apirun-simulations スキルは jsonschema.validate(...) によるローカルの事前検証を 示している。
改善
  • 組織 ID が、組織配下にあるすべての行(結合テーブルを含む)に非正規化される ようになり、RLS チェックとリソース横断クエリが簡素化された。
  • スカッシュされたベースラインマイグレーションが、約 100 個の過去のマイグレーション を単一の冪等ファイルに集約した。内部環境での順不同のフィーチャーブランチ デプロイを扱う CI/CD の修復ステップも備える。
  • Ionworks Agent タブが、Ionworks Agentic Toolkit を指す静的な手順ページに置き換えられた。アプリ内の pydantic-ai チャットエージェント は削除され、SKILL.md ベースのワークフローに置き換わった。
  • 新しいセル仕様がデフォルト容量を事前入力しなくなり、ユーザーは最初から実際の セル容量を入力するようになった。
修正
  • ストレージ権限が組織レベルで適用されるようになり、同じ組織のメンバーが互いの 測定ファイルを期待通り読み取れるようになった。
  • created_by_email が、セル仕様・セルインスタンス・セル測定の各レスポンスで、 getlist の両エンドポイントにわたって一貫して設定されるようになった。
  • シミュレーション使用量が組織レベルで集計されるようになり(バックエンドが既に 適用している組織レベルの使用量制限に合致する)、専用の GET /organizations/current/usage エンドポイントから取得されるようになった。
改善
  • コスト/目的関数レイヤーを、焦点を絞ったモジュール(アキュムレーター、誤差 メトリクス、ノーマライザー、NaN ポリシー)に再構成し、スカラー化、正規化の デフォルト、部分解の扱いに関するいくつかの正しさの修正を行った。
  • FunctionParameters が目的関数およびデータフィットの設定内で正しく シリアライズされるようになり、関数値パラメータを持つ設定が JSON を通して ラウンドトリップするようになった。
修正
  • ハーフセル ECM が、プロットとメトリクス用にアノードおよびカソードの電位変数 (Anode potential [V]Cathode potential [V])を公開するようになった。
  • get_cycle_metrics が出力で Cycle count カラム名を Cycle number に 改名せずそのまま維持するようになり、データパイプライン全体で使われている 入力規約に合致するようになった。
改善
  • validate_measurement_dataCellMeasurement.createCellMeasurement.create_or_getskip_checks パラメータを受け付けるようになり、呼び出し側は厳格モードを 全面的に無効化する代わりに、単一の厳格バリデーター(例: time_gaps)を緩める ことができる。未知のチェック名は ValueError を発生させ、正規のセットは ionworks.validators.STRICT_CHECK_NAMES として公開される。 validate_strict=True が推奨デフォルトになった。
改善
  • CSV、XLSX、ネイティブの .res エクスポートをカバーする新しい Arbin リーダー (上記のハイライトを参照)。
  • Maccor リーダーが、一部のサイクラーファームウェアバージョンで使われる コンパクトな短縮形のカラムヘッダーセットを受け付けるようになった。
改善
  • Landesfeind フィットのワークスルー例を含む、新しい電解質パラメータ化ページ。
  • 最適化実験エディター、反復的メトリクス、簡略化された Charge テンプレート、 複合システムモデルが文書化された。
  • カスタム変数リファレンスが、ハーフセル ECM におけるアノード/カソード電位の 公開を文書化するようになった(英語と日本語)。
  • Maccor のネイティブ CCCV ステップタイプが文書化された(英語と日本語)。
  • Arbin がサポート対象サイクラーの表に掲載された。
  • データフィッティングガイドの説明の拡充を含め、ドキュメントサイト全体に SEO メタデータ(キーワード、OG タグ、引き締めた説明)を追加した。
改善
  • ミラーリングされる各パッケージ(ionworksdataionworks-schemaionworks-apiiwutilionworkspipelineskills)が、Keep-a-Changelog 形式のパッケージごとの CHANGELOG.md を同梱するようになった。これはリリース ワークフローの一部として作成・検証される。
  • discover-apirun-simulations スキルを、新しい UCP 入力 JSON Schema を 参照しローカルの事前検証を示すよう更新した。
  • upload-data スキルを、validate_strict=True を推奨し新しい skip_checks パラメータを文書化するよう更新した。
April 27, 2026
プロジェクトスコープの ECM フィッティング、PyBaMM v26.4.0 対応、SDK スキルプラグイン、厳格なアップロードバリデーター

プロジェクトスコープの ECM フィッティング

等価回路モデルのフィッティングがプロジェクト内で直接利用できるようになった。プロジェクトのいずれかのセルにすでに紐づいている測定値を選ぶ(または新しい CSV をアップロードする)と、トレースをプレビューし、フィットを実行し、その結果をワンクリックで新しいモデルとしてプロジェクトに保存できる。新しいフローでは多段ステッパーが積み重ねカードに置き換えられ、モデル対データのプロット、エラープロット、フィッティング進捗インジケーター、OCV トグルヘルパーが追加され、フィット完了時に結果へ自動スクロールする。スタンドアロンの ECM デモは未認証ユーザー向けに引き続き利用できる。

PyBaMM v26.4.0 対応

パイプラインとプロトコルシミュレーターを PyBaMM v26.4.0 向けに更新した。本リリースでは、従来のゼロ電流ステップに代わる専用の Rest ステップクラスが導入され、MSMR の電極容量パラメータが短いキー(例: Q_n_1Q_p_1)から記述的な文字列(例: “Negative electrode host site occupancy capacity (1) [A.h]“)に改名された。既存の実験と MSMR パラメータセットは、新リリースでも引き続き正しく解析される。

Claude Code プラグインとしての SDK スキル

Ionworks Python SDK に、インストール可能な Claude Code スキルのセットが同梱されるようになった。対象は api-discovery、cell-data、data-upload、simulations、pipelines、projects-and-studies である。各スキルは関連するサブクライアント、メソッドシグネチャ、create-or-get パターンを文書化しており、AI アシスタントが現在の API サーフェスに対して SDK を操作できるようにする。/plugin marketplace add ionworks/ionworks-skills/plugin install ionworks でインストールすると、任意の Ionworks プロジェクトでスラッシュコマンドと SessionStart フックが利用できる。

Python API の厳格なアップロードバリデーター

CellMeasurementClient.createcreate_or_get が、Studio にデータを送信する前にオプションのクライアント側バリデーターを実行するようになり、処理上のバグが分かりにくいアップロード結果ではなくローカルエラーとして表面化するようになった。連続する行の間隔が 5 時間を超えるかどうかを調べる厳格な時間ギャップチェックがデフォルトで実行される。voltage_window を渡すと電圧連続性チェックが有効になり(不正な partition_by による時系列順の乱れを検出する)、rated_capacity を渡すと連続する同方向のフルステップチェックに加え、容量が定格の 5 倍を超えるステップに対するソフト警告が有効になる。
改善
  • 測定チャートのコントロールがコンパクトなヘッダーサマリーに折りたたまれるようになった。軸ごとの変数セレクターでは、統一された 2 列レイアウトで系列を動的に追加・削除できるようになった。
修正
  • 実験タイプタブが異なるスタディ間を切り替えた際に、スタディの可視化が空の状態に崩れなくなった。前のタブが存在しない場合、フィルターは All にリセットされる。
  • 古い Supabase セッションを持つユーザーが、リダイレクトで立ち往生する代わりに、OTP の auth/continue ページからサインアウトして復帰できるようになった。
  • 空のセルページが正しい組織レベルの権限チェックを使うようになり、セルを作成できるユーザーに紛らわしい「プロジェクト管理者に連絡してください」というメッセージが表示されなくなった。
  • パイプライン要素の詳細ビューが Data FitValidation の設定に対して短時間に重複したフェッチを発生させなくなった。大きな job_config はストレージから直接読み込まれてキャッシュされる。
改善
  • Simulation(IDAKLU ソルバー)で関数コンパイルがデフォルトで有効になり、同じモデルを共有する繰り返し実行が高速化された。
  • submesh_typesspatial_methodsSimulationObjective.to_config を通して正しくシリアライズされるようになり、simulation_kwargs にメッシュジェネレーターや空間メソッドを持つ CycleAgeing などの目的関数の JSON ラウンドトリップが修正された。
修正
  • 時間単調性の検証エラーメッセージが、隣接する正しい 2 つの値を報告するようになった(従来の off-by-one では実際の違反の直前の値が表示されていた)。
修正
  • 符号規約の検出が、低電流のパルスデータセットをすべて休止と誤分類しなくなった。休止しきい値が電流の 95 パーセンタイルを基準に相対的にスケールするようになり、小振幅データでも違反を検出できる。
April 20, 2026
Python SDK のリソースクライアント、検証の初期条件、容量計算の修正

Python SDK のリソースクライアント

Python SDK に、Studio リソースをプログラムから管理するための型付きサブクライアントが追加された。Ionworks クライアントから、プロジェクト、モデル、パラメータ化モデル、スタディ、プロトコル、最適化を直接作成・一覧取得・取得・更新・削除できるようになった。たとえば client.project.list()client.model.get(id)client.study.create(...) などである。Python API ドキュメントには各サブクライアントの使用例を解説する新しい「リソースの管理」セクションが追加され、Projects・Models・Studies のバックエンド URL パスはフラット化されて、組織が URL で必須だったものから認証トークンによって解決されるようになった。

検証の初期条件と UX の改善

検証では、シミュレーションの初期化方法を選択できるようになった。測定値からの自動検出、カスタム開始電圧、カスタム充電状態のいずれかである。Report タブの各検証行は確認ダイアログとともに個別に削除でき、同じ初期電圧を共有する 2 つの測定値が互いのドライブサイクルを上書きしてしまう重複除去のバグも修正された。検証エラープロットも、読みやすさ向上のためグリッド線とともに描画されるようになった。

多電極セルの容量計算の修正

ElectrodeCapacity が、並列接続された電極数について非正規の PyBaMM パラメータ名を読み取っていたため、ユーザーが正しいキーを設定した場合に c_max が N 倍に過大計算されていた。本修正ですべてのルックアップが PyBaMM の正規パラメータ名に揃えられ、多電極セルが正しくパラメータ化されるようになった。
改善
  • 単一の実験タイプのシミュレーションを持つスタディは、そのタイプを自動選択するようになり、可視化ビューにすぐにアクセスできるようになった。
  • 失敗した変数評価ジョブは、無限に回転し続ける代わりに、Retry ボタン付きのエラー状態を表示するようになった。
  • スタディ一覧エンドポイントが itemscounttotal を含むページネーション結果を返すようになった。
  • ページネーション対応のパラメータ化モデル一覧エンドポイントを追加した。
修正
  • 数千の短いステップを持つ時系列測定値(例: 約 1500 ステップの HPPC パルスプロトコル)を描画する際のクラッシュを修正した。ダッシュボードでこれらの測定値を読み込めるようになった。
  • 結合されたカスタム変数が解決に失敗した際に黙って削除され、「Temperature [degC]」などの便利な変数がシミュレーション出力から失われることがあった問題を修正した。
  • 422 エラーを防ぐため、モデル一覧のフォールバックページサイズをバックエンドの 100 行上限にキャップした。
改善
  • PyBaMM を 26.3.1 に更新した。カスタムモデルの base_class が、ワーカー環境にインストールされていないパッケージを参照している場合、警告とともに pybamm.BaseModel にフォールバックするようになった。
  • OCP 目的関数(OCPHalfCellElectrodeBalancingHalfCellElectrodeBalancing)を _run パターンを使うようにリファクタリングし、raise_on_failure をサポートし、Validation パイプラインで正しく動作するようにした。
修正
  • DataFit が裸の目的関数を {ClassName: objective} で自動ラップするようになり、ラップされていない単一の目的関数で送信されたパイプラインがシリアライズに失敗しなくなった。
改善
  • Models・Studies・Optimizations・Projects・Protocols・ParameterizedModels の型付きサブクライアントを追加し、リソース管理における生の HTTP リクエストを置き換えた。
  • SDK エンドポイントがパスに organization_id を含めなくなった。組織は認証トークンから解決される。
  • シミュレーションのポーリングがエラーを握りつぶさず即座に伝播するようになり、サーバー計算の is_terminal / is_failed フィールドを持つ型付き JobResponse オブジェクトを使うようになった。
修正
  • シミュレーションジョブのポーリングエンドポイントを修正した(存在しない /simulations/jobs/{id} ルートにアクセスしていた)。
修正
  • ECM バリデーターの符号検出バグを修正した。対称的な電流プロファイル(充電 / 放電 / 充電で同じ正味電荷量に戻る)が、ゼロでない SOC 範囲を持つにもかかわらず誤って却下されていた。
April 13, 2026
非同期最適化、スタディ検証レポート、セルデータのフィルタリング

非同期の最適化評価

オプティマイザが、ローカルおよび分散ワークロードの両方で非同期評価をサポートするようになった。新しい ProcessPoolAsyncEvaluator はローカルの永続的なマルチプロセスワーカーで評価を実行し、既存の ActorPoolEvaluator は Ray による分散評価のための submit/wait-next API を備えるようになった。定常状態の 非同期モードは、世代の境界を待たずにすべてのワーカーを飽和状態に保ち、新しい収束基準(忍耐カウンターと 集団多様性のガードを含む)が早期停止を防止する。

スタディ検証レポート

スタディに、シミュレーション結果を実験測定と比較するための検証ワークフローが追加された。新しい Report タブは シミュレーション値と実測値のオーバーレイプロットを定量的な誤差指標(RMSE、MAE)とともに表示し、Data タブでは どの測定をどのシミュレーションと対応付けるかを管理できる。詳細はこちら →

セルデータのフィルタリングと並べ替え

すべてのセル一覧エンドポイント(仕様、インスタンス、測定)が、名前、作成者のメールアドレス、日付範囲、 並べ替え方向を含むフィルタおよび並べ替えパラメータを受け付けるようになった。Python SDK は各 list() メソッドで対応するキーワード引数を公開し、フロントエンドの測定テーブルはサーバーサイドのフィルタリングを 使用する。
改善
  • パイプラインおよびセル測定のテーブルが、サーバーサイドのソートをサポートするようになった。
  • 初回のユーザー情報リクエストが失敗した際に、自動再試行を備えたエラー画面を追加した。
  • フロントエンドから SNES オプティマイザのオプションを削除した。
修正
  • dangerouslySetInnerHTML を介して信頼できない文字列を描画していた、通知ドロワーおよびジョブ進捗表示の XSS シンクを削除した。
  • Redux サンクのエラー処理を、一貫して extractApiError を使用するよう正規化した。
  • データベースにファイル名をキャッシュすることで、ファイル測定エンドポイントから低速な bucket.list() 呼び出しを排除し、レスポンス時間を約 10 秒から 100 ミリ秒未満へ短縮した。
改善
  • すべてのコード、テスト、ドキュメントにわたって Pints オプティマイザを AskTellOptimizer に改名した。
  • CMA-ES、XNES、Nelder-Mead 向けの専用アルゴリズムテストスイートを追加した。
  • CMA-ES および XNES の分布平均評価を追加し、評価された平均が最良サンプルを上回る場合にそれを優先する ようにした。
修正
  • 不安定な決定論的設計最適化テストを修正した。
改善
  • CellSpecificationClient.list()CellInstanceClient.list()CellMeasurementClient.list() に フィルタおよび並べ替えのキーワード引数を追加した。
  • download_files(filenames=) が一覧取得のラウンドトリップをスキップするようになり、単一ファイル取得用の 新しい get_file() メソッドを追加した。
改善
  • Biologic ファイル向けに温度列の認識を追加した。
April 6, 2026
測定タイプ、パフォーマンス改善、総時間による終止、パラメータ化モデルの機能強化

非時系列データ向けの測定タイプ

セル測定が 3 つの値を持つ measurement_type フィールドをサポートするようになった。time_series (デフォルト)、チェックポイント測定などのキー・バリューのメタデータ向けの properties、そして画像・PDF・ numpy 配列などの任意のファイル向けの file である。各タイプには独自の作成および取得フローがあり、 一覧エンドポイントはタイプでフィルタリングできる。詳細はこちら →

パフォーマンス改善

パイプラインの作成が大幅に高速化した。大きなジョブ構成は、データベースへインラインで書き込むのではなく オブジェクトストレージへオフロードされる。バックエンド全体も非同期 Supabase クライアントへ移行され、 同時負荷下でのスループットが向上した。モデル、パラメータ化モデル、スタディ、最適化がサーバーサイドの ページネーションとフィルタリングを使用するようになり、コレクション全体をメモリに読み込む必要がなくなった。

総時間による終止条件

プロトコルステップが、組み込みの終止条件として total_time を使用できるようになった。これにより、 ステップ時間だけでなく、経過した実験の総時間が指定の継続時間に達した時点でステップを終了できる。詳細はこちら →

パラメータ化モデルの改善

パラメータ化モデルの詳細ビューが、従来の複数ページ構成に代わり、タブ付きの単一ページに統合された。 モデルは全構成を含む zip アーカイブとしてダウンロードできるようになり、温度依存のスタディ向けに設計最適化の 目的関数で初期温度が解析されるようになった。詳細はこちら →
改善
  • セル仕様の一覧が、カードではなくソート可能なデータテーブルとして表示されるようになった。
  • すべてのプロトコルステップがスキップされてシミュレーションがデータを生成しない場合に、UI に警告を表示 するようにした。
  • 変数評価器からハードコードされた便宜変数を削除し、変数評価の UX を改善した。
  • すべての更新エンドポイントを PUT から、部分更新ボディを伴う PATCH セマンティクスへ移行した。
  • すべての重複リソースエラーを、構造化されたエラー詳細を伴う HTTP 409 を返すよう標準化した。
  • よりシンプルで高速なファイルアクセスのために、署名付き URL のダウンロードを HTTP 307 リダイレクトに 置き換えた。
  • より一貫した API 表面のために、セル測定の複合レスポンス形状をフラット化した。
  • 設計最適化がデフォルトで差分進化アルゴリズムを使用するようになった。
修正
  • 最適化の削除が誤った API エンドポイントへアクセスする問題を修正した。
  • 最適化のクローンが差し戻されたリクエストボディを送信する問題を修正した。
  • 最適化一覧ページが冗長な API リクエストを送信する問題を修正した。
改善
  • 温度依存の最適化スタディ向けに、DesignObjective で初期温度を解析するようにした。
修正
  • Transform.to_dict がフィット済みパラメータの辞書に base_name エントリを漏らす問題を修正した。
  • 変換済みパラメータを確認する際に FunctionForExport を正しくアンラップするよう検証を修正した。
  • 初期 SOC が EIS 周波数領域シミュレーションに渡されない問題を修正した。
改善
  • UCP から PyBaMM への変換器で、入力パラメータを含む算術式のサポートを追加した (例:1000 / input["Total cells"] が正しいシンボリック式を生成するようになった)。
修正
  • EIS 周波数領域シミュレーションで初期 SOC が適用されない問題を修正した。
改善
  • 測定ファイルのアクセスにおいて、署名付き URL のダウンロードを直接の HTTP 307 リダイレクトに置き換えた。
  • よりシンプルなデータアクセスのために、セル測定のレスポンス形状をフラット化した。
  • 非時系列データ向けに、測定モデルへ measurement_type フィールドを追加した。
  • すべての更新メソッドを PUT から PATCH へ移行した。
  • サーバーサイドのページネーションにより、多数のシミュレーションを持つスタディおよびパラメータ化モデルの 読み込みを改善した。
改善
  • より高速でポータブルなキャッシュのために、pickle ベースのローカルキャッシュを Parquet 形式に置き換えた。
  • Neware CSV ファイル向けに Latin-1 エンコーディングのサポートを追加した。
March 30, 2026
ECM パラメータ化、抵抗スケーリング、カスタム変数、BaSyTec リーダー

ECM パラメータ化

新しい ECM パラメータ化ページでは、サイクリングデータをアップロードし、ライブの回路図とともに 0〜5 個の RC ペアを 選択して、OCV や R0 を含むフィット済みパラメータを表示できる。結果は CSV としてダウンロードできる。詳細はこちら →

プロトコルシミュレーションでの抵抗の調整

プロトコルシミュレータが、より高速で堅牢なサイクラープロトコルシミュレーションのために、SPM ではなく 等価回路モデル(ECM)を使用するようになった。ECM パラメータセットはサポートされる 6 種類すべての化学組成で 利用可能であり、UI の新しい抵抗スケーリングパラメータにより、シミュレーション実行前にセル全体の抵抗を 調整できる。詳細はこちら →

モデルのカスタム変数

電極電位や異なる単位での温度といったカスタム派生量を、モデル構成に保存される PyBaMM 式としてモデル上で 定義できるようになった。これらのカスタム変数はシミュレーション時に評価されて結果データに含まれるため、 設計スイープ全体でアプリケーション固有の指標を容易に追跡できる。詳細はこちら →

BaSyTec バッテリーサイクラーリーダー

データ処理ライブラリが BaSyTec の CSV エクスポート(CTS、X50 シリーズ)をサポートするようになった。 リーダーはヘッダーのシグネチャによって BaSyTec ファイルを自動検出し、HH:MM:SS.sss 形式のタイムスタンプ (24 時間を超える値を含む)を解析し、正しい電流符号の規約を適用し、付随する _meta.txt ファイルから 開始時刻を抽出する。詳細はこちら →
改善
  • ダッシュボードヘッダーにテーマ切り替えを備えたダークモードを追加した。
  • 最適化テンプレートを組織スコープからプロジェクトスコープへ移し、プロジェクトレベルの管理ページを設けた。
  • 最適化の作成時に最適化名を任意とした。
  • セル仕様・インスタンス・測定の一覧エンドポイントにページネーションを追加した。
  • ドライブサイクルシミュレーションの結果プロットに OCV トレースを追加した。
  • シミュレーション、測定取り込み、フロントエンド描画の全体にわたって EIS の列名を Z_Re [Ohm] / Z_Im [Ohm] に統一した。
  • 実験テンプレートの指標を、コード文字列の評価からシリアライズ可能な ionworkspipeline の指標構成へ 移行した。
  • 非推奨の slug および additional_data 列をセルモデルから完全に削除した。
修正
  • 検証中に datafit プロセッサが未解決の db: 参照を受け取る問題を修正した。
  • self.param 属性の欠落による LumpedSPMR モデルのクラッシュを修正した。
  • 実行間で datafit のセットアップ構成が変更される問題を修正した。
改善
  • 最大濃度値を必要とせずに、最大化学量論からリチウムインベントリを計算するサポートを追加した。
  • モデルおよび実験のシリアライズに PyBaMM ネイティブの to_config/from_config を採用し、独自の パーサロジックを削除した。
  • 合成指標の単項演算として abs を追加した。
修正
  • ECM で熱モデルが誤った発熱変数を使用していた問題を修正した。
  • 電極バランシング方向のパラメータ名における末尾の空白を修正した。
  • FunctionParameter ノード内のサブパラメータを検出するよう検証を修正した。
  • サンプラー構成を扱うようパーサを修正し、スキーマ同期テストを拡充した。
  • pandas/polars/DataLoader の互換性の問題を修正した。
改善
  • EIS インピーダンス列を SI 単位と標準符号規約とともに Z_Re [Ohm] / Z_Im [Ohm] に統一した。
修正
  • CCCV の解決が、プロトコル内のすべてのサブステップに一貫して適用されるよう修正した。
改善
  • セル測定のローカルデータキャッシュを追加し、繰り返しのダウンロードを削減した。
  • セル一覧メソッドにページネーションサポート(limit/offset)を追加し、.total 属性を持つ PaginatedList を返すようにした。
  • 非推奨の slug および additional_data フィールドをセルモデルから完全に削除した。
  • 測定の電流データに対する符号検出アルゴリズムを改善した。
改善
  • MPR 以外のエクスポート向けに BioLogic のプレーン CSV リーダーを追加した。
  • インピーダンス成分が欠落している場合に、Z_ModZ_Phase から Z_ReZ_Im を自動的に 導出する機能を追加した。
  • パッケージ間で再利用できるよう、セルデータのキャッシュロジックを ionworks-api に移した。
修正
  • 明示的にマッピングされた列に対して自動検出をスキップするよう CSV リーダーを修正した。
  • データ可視化ユーティリティのプロットのバグを修正した。