Ionworks ソルバー
新しいIonworksSolver が ionworkspipeline.Simulation 内のデフォルト
ソルバーになった。これは pybamm.IDAKLUSolver のドロップイン代替であり、DAE の
構造的特性(求積、線形定数 / 線形可変、ブロック定数 / ブロック可変)を検出し、
構造が許す場合は厳密な解析解で代替し、解析不可能なモデルでは IDAKLU に
フォールバックする。CasADi の CodeGenerator による実行時の C コード生成と
Numba-JIT 積分カーネルにより、解析パスでのステップごとのコストが削減される。
区分的補間は smoothing=0 も受け付けるようになり、ハードなステップ関数を直接
モデル化できる。失敗したパイプラインと最適化の構造化されたエラー詳細
パイプライン要素と最適化の失敗が、例外タイプと Sentry ディープリンクを伴う 構造化されたerror_detail を保持するようになった。2 つの新しいジョブエラー
コード CONFIGURATION_ERROR と SOLVER_ERROR が、ユーザーが修正可能な設定
ミスとソルバー側の失敗を区別する。パイプラインパッケージ内では、FuzzyDict /
ParameterStore が裸の KeyError の代わりに新しい ParameterNotFoundError を
発生させ、ConfigurationError が無効な設定と実行時エラーを区別するため、
分類器が正しいコードを付与する。Studio では、失敗した最適化が View in Sentry
ボタン(スーパー管理者のみ)を表示し、キャプチャされたイベントを直接開くように
なった。例外メッセージ自体はシリアライズ前に取り除かれるため、ユーザーに見える
診断情報は安全に共有できる。Wasserstein の重み付き点群モードと MSMRFullCell の dQ/dU 出力
iws.costs.Wasserstein / iwp.costs.Wasserstein がオプションの
position_variable と weight_variable フィールドを獲得した。両方が設定された
場合、コストは目的関数ごとに 2 つの重み付き点群を比較する 1 つの Wasserstein-1
距離を計算する。これは、Voltage [V] のピーク位置誤差をサンプルごとではなく
|dQ/dV| の重みで測定すべきフルセル MSMR フィットで有用である。MSMRFullCell も
objective variables に列挙された場合に Differential capacity [Ah/V] を
出力するようになり、これは Full voltage [V] / Full capacity [A.h] から導出され、
データの電圧グリッドに補間される。パイプラインのドキュメントがスキーマ優先の Docs セクションへ移動
実行可能な「実際にどう動かすか」というパイプラインの内容が、Guide から Documentation タブ配下の新しいスキーマ優先の Pipelines セクションへ移動した。 すべてのコードサンプルはionworks-schema + ionworks-api を使うよう書き直された。
Guide には理論(方程式、パラメータ表、直感)が残り、既存の「Pipelines」グループは
Parameterization に改名された。日本語タブも新しいセクションを反映している。Studio
Studio
- 既存の測定値からのプロジェクトスコープの ECM フィッティングが 422 を返さなく
なった。フロントエンドは、測定値ごとの SOC 変更以降バックエンドが期待してきた
ネストされた
{measurements: [{id, initial_soc?}], ecm_options: {...}}ペイ ロードを送信するようになり、選択された各測定値の隣に測定値ごとの初期 SOC 入力を表示する。
Pipeline
Pipeline
client.simulation.protocol(...)がdesign_parametersをフラットな辞書として 再び受け付けるようになった。プロトコルテンプレートフローの導入時に誤って削除 されていた単一シミュレーションの便宜機能である。design_parametersとdesign_parameters_doeの両方を与えた場合、または複数のシミュレーションに展開 される DOE を与えた場合は、追加の実行を黙って課金する代わりに明示的に例外を 発生させるようになった。- 大きな埋め込みドライブサイクル表を持つ BioLogic
.mpsプロトコル(例: YAML の ブロックスカラーとしてインライン化された約 96k 行の Urban Profile トレース)が、/protocols/parse-to-templateでエッジプロキシのタイムアウトを起こさなくなった。 変更後の YAML が低速な PyYAML パスで再解析されなくなった。 iws.direct_entries.DirectEntryがpybamm.ParameterValuesを直接受け付ける ようになった。呼び出し可能な値(濃度依存・温度依存の補間関数)はParameterValues.to_json()によって自動的にシンボル JSON にシリアライズされ、 パイプライン内のDirectEntry.from_schemaパスがそれらを pybamm シンボルに 逆シリアライズして戻すため、ローカルと API の消費パスが同じ挙動になる。
ionworkspipeline.*配下の子モジュールロガー(例:ionworkspipeline.data_fits.*)がset_logging_levelによって管理される ようになった。従来パッケージロガーは親ではなく兄弟だったため、サブモジュールの レコードがそれを通り越して伝播していた。
Python API
Python API
client.simple_pipeline.create(...)がPipelineOptions(例:live_progress_updates=False)を受け付けるようになった。ワーカーは既にジョブ パラメータのpipeline_optionsを尊重していたが、これによりリクエストモデル、 サービス層、SDK クライアントが一貫してつながった。
- 送信される JSON ペイロードが、リクエストボディに datetime カラムを持つ pandas
DataFrame を含む場合に
TypeErrorを発生させなくなった。pd.Timestampはisoformat()でシリアライズされ、pd.NaTはnullになる。
Protocol Simulator
Protocol Simulator
- BioLogic
.mpsパーサーが、lim*_seqが内部のサブサイクルポインタ≤ Ns+1を格納するlfp_gr_cccv.mpsのようなプロトコルでハングしなくなった。 前方ジャンプ(seq > Ns+1)のみが goto を発行し、後方または等しい値は通常の ステップ終了として扱われる。
Skills
Skills
- 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.py、inspect_half_cell_data.py、validate_half_cell_fit.pyヘルパー。リファレンスページはこのテンプレートを 必須とし、すべてのハーフセル OCP フィットが同じ正規の事前分布、マルチスタート、 Xj 法を使うよう、discover → inspect → scaffold → dry-run → submit → validate のワークフローを定めている。
- process-data スキルが、プラットフォームの実際の電流符号規約
(
positive = discharge)を文書化し、バリデーターとset_positive_current_for_discharge変換に合致させ、二重反転の罠を明示する ようになった。
より強力な測定データの検証と処理
新しい厳格モードチェック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)をデータ
フィッティングのコストとして追加し、モデル出力とデータを点ごとではなく分布として
比較する。パイプラインとスキーマの両パッケージで利用できる。Studio
Studio
- プロトコルリストの読み込みが劇的に高速化した。実験テンプレートのリスト
エンドポイントは、重い JSONB 列をデフォルトで省略するようになり(22 テンプレートで
約 7.5 KB 対 7.7 MB)、呼び出し側は
?include=経由でprotocol_config、parameters_schemaなどのフィールドをオプトインできる。 - 失敗したパイプラインをパイプライン詳細ページから再送信できるようになった。同 ページには、失敗した各要素へのディープリンクを持つエラーバナーが表示され、個々の 要素にはインラインのエラーアラートが表示される。
- 材料物性データセットのプロットに、単位付きの常時表示の縦型凡例が付き、プロットの 右側に配置されるようになった。
- プロジェクトデータページで測定値を ID でフィルタリングするとリストが絞り込まれる
ようになった。以前は
idクエリパラメータが黙って破棄され、すべての測定値が返って いた。 - 材料データセットのアップロードで、CSV に名前のない先頭列があっても列インデックスが ずれなくなり、名前のない列を黙ってスキップする代わりに、すべての列に名前があること を要求するようになった(明確なエラー付き)。
- プロジェクトメンバーシップ管理、アクティブな組織の切り替え、パラメータ化モデルの 削除が、データベースへの直接書き込みではなくバックエンド API を経由するようになり、 行レベルセキュリティの下で一貫した動作をするようになった。
Python API
Python API
client.auth_check()とclient.whoami()は、設定された API キーがどのユーザーと 組織に解決されるかを検証するようになり、新しいGET /auth/healthエンドポイントに 支えられている。誤った組織(403)エラーのデバッグや、どのキーが有効かの確認に役立つ。
Protocol Simulator
Protocol Simulator
SubRoutステップを含む Maccor プロトコルが UCP YAML のラウンドトリップを生き残る ようになった。解決されたサブルーチンステップは名前空間化されて YAML に書き戻され、 サブルーチン内のgotoターゲットはシミュレーション時に解決される。これにより、 パース後シミュレーションのフローで発生していたSubroutine '<name>' not foundエラーが修正された。
Skills
Skills
- 新しい
validate-dataスキルが、測定データの検証と列修正のワークフローをエージェ ントに案内する。 - Codex プラグインマニフェストが追加され、Ionworks スキルパッケージが Claude Code と 並んで Codex にもインストールされるようになった。
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 が書き込まれる前に、 サイクラーファミリー間でのカラムの黙った削除を捕捉できる。
リチウム硫黄化学を持つカスタム 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(...)パターンを参照するよう更新した。
最適化実験の完全なエディター
最適化実験が、アプリの他の部分と同じプロトコルエディターを使うようになった。 素朴なテキストフィールドが、YAML 構文ハイライト、ダークモード対応、フロントエンド の事前検証、テンプレート選択とステップ調整のための完全なプロトコルビルダー ダイアログを備えた CodeMirror ベースのエディターに置き換えられた。 新しいプロトコルは “Constant Current Charge” テンプレートをあらかじめ読み込む ため、ユーザーは動作する出発点を得られる。設計最適化の反復的メトリクス
設計最適化がCyclewiseMetric と StepwiseMetric のラッパーを
エンドツーエンドでサポートするようになった。最適化フォームでは、解析済みの
実験から駆動される境界付き入力フィールドで特定のサイクルやステップのメトリクスを
ターゲットにでき、パイプライン変数を 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-api と
run-simulations スキルは jsonschema.validate(...) によるローカルの事前検証を
示している。Studio
Studio
- 組織 ID が、組織配下にあるすべての行(結合テーブルを含む)に非正規化される ようになり、RLS チェックとリソース横断クエリが簡素化された。
- スカッシュされたベースラインマイグレーションが、約 100 個の過去のマイグレーション を単一の冪等ファイルに集約した。内部環境での順不同のフィーチャーブランチ デプロイを扱う CI/CD の修復ステップも備える。
- Ionworks Agent タブが、Ionworks Agentic Toolkit を指す静的な手順ページに置き換えられた。アプリ内の pydantic-ai チャットエージェント は削除され、SKILL.md ベースのワークフローに置き換わった。
- 新しいセル仕様がデフォルト容量を事前入力しなくなり、ユーザーは最初から実際の セル容量を入力するようになった。
- ストレージ権限が組織レベルで適用されるようになり、同じ組織のメンバーが互いの 測定ファイルを期待通り読み取れるようになった。
created_by_emailが、セル仕様・セルインスタンス・セル測定の各レスポンスで、getとlistの両エンドポイントにわたって一貫して設定されるようになった。- シミュレーション使用量が組織レベルで集計されるようになり(バックエンドが既に
適用している組織レベルの使用量制限に合致する)、専用の
GET /organizations/current/usageエンドポイントから取得されるようになった。
Pipeline
Pipeline
- コスト/目的関数レイヤーを、焦点を絞ったモジュール(アキュムレーター、誤差 メトリクス、ノーマライザー、NaN ポリシー)に再構成し、スカラー化、正規化の デフォルト、部分解の扱いに関するいくつかの正しさの修正を行った。
FunctionParametersが目的関数およびデータフィットの設定内で正しく シリアライズされるようになり、関数値パラメータを持つ設定が JSON を通して ラウンドトリップするようになった。
- ハーフセル ECM が、プロットとメトリクス用にアノードおよびカソードの電位変数
(
Anode potential [V]、Cathode potential [V])を公開するようになった。 get_cycle_metricsが出力でCycle countカラム名をCycle numberに 改名せずそのまま維持するようになり、データパイプライン全体で使われている 入力規約に合致するようになった。
Python API
Python API
validate_measurement_data、CellMeasurement.create、CellMeasurement.create_or_getがskip_checksパラメータを受け付けるようになり、呼び出し側は厳格モードを 全面的に無効化する代わりに、単一の厳格バリデーター(例:time_gaps)を緩める ことができる。未知のチェック名はValueErrorを発生させ、正規のセットはionworks.validators.STRICT_CHECK_NAMESとして公開される。validate_strict=Trueが推奨デフォルトになった。
Data Processing
Data Processing
- CSV、XLSX、ネイティブの
.resエクスポートをカバーする新しい Arbin リーダー (上記のハイライトを参照)。 - Maccor リーダーが、一部のサイクラーファームウェアバージョンで使われる コンパクトな短縮形のカラムヘッダーセットを受け付けるようになった。
Documentation
Documentation
- Landesfeind フィットのワークスルー例を含む、新しい電解質パラメータ化ページ。
- 最適化実験エディター、反復的メトリクス、簡略化された Charge テンプレート、 複合システムモデルが文書化された。
- カスタム変数リファレンスが、ハーフセル ECM におけるアノード/カソード電位の 公開を文書化するようになった(英語と日本語)。
- Maccor のネイティブ
CCCVステップタイプが文書化された(英語と日本語)。 - Arbin がサポート対象サイクラーの表に掲載された。
- データフィッティングガイドの説明の拡充を含め、ドキュメントサイト全体に SEO メタデータ(キーワード、OG タグ、引き締めた説明)を追加した。
Skills
Skills
- ミラーリングされる各パッケージ(
ionworksdata、ionworks-schema、ionworks-api、iwutil、ionworkspipeline、skills)が、Keep-a-Changelog 形式のパッケージごとのCHANGELOG.mdを同梱するようになった。これはリリース ワークフローの一部として作成・検証される。 discover-apiとrun-simulationsスキルを、新しい UCP 入力 JSON Schema を 参照しローカルの事前検証を示すよう更新した。upload-dataスキルを、validate_strict=Trueを推奨し新しいskip_checksパラメータを文書化するよう更新した。
プロジェクトスコープの ECM フィッティング
等価回路モデルのフィッティングがプロジェクト内で直接利用できるようになった。プロジェクトのいずれかのセルにすでに紐づいている測定値を選ぶ(または新しい CSV をアップロードする)と、トレースをプレビューし、フィットを実行し、その結果をワンクリックで新しいモデルとしてプロジェクトに保存できる。新しいフローでは多段ステッパーが積み重ねカードに置き換えられ、モデル対データのプロット、エラープロット、フィッティング進捗インジケーター、OCV トグルヘルパーが追加され、フィット完了時に結果へ自動スクロールする。スタンドアロンの ECM デモは未認証ユーザー向けに引き続き利用できる。PyBaMM v26.4.0 対応
パイプラインとプロトコルシミュレーターを PyBaMM v26.4.0 向けに更新した。本リリースでは、従来のゼロ電流ステップに代わる専用のRest ステップクラスが導入され、MSMR の電極容量パラメータが短いキー(例: Q_n_1、Q_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.create と create_or_get が、Studio にデータを送信する前にオプションのクライアント側バリデーターを実行するようになり、処理上のバグが分かりにくいアップロード結果ではなくローカルエラーとして表面化するようになった。連続する行の間隔が 5 時間を超えるかどうかを調べる厳格な時間ギャップチェックがデフォルトで実行される。voltage_window を渡すと電圧連続性チェックが有効になり(不正な partition_by による時系列順の乱れを検出する)、rated_capacity を渡すと連続する同方向のフルステップチェックに加え、容量が定格の 5 倍を超えるステップに対するソフト警告が有効になる。Studio
Studio
- 測定チャートのコントロールがコンパクトなヘッダーサマリーに折りたたまれるようになった。軸ごとの変数セレクターでは、統一された 2 列レイアウトで系列を動的に追加・削除できるようになった。
- 実験タイプタブが異なるスタディ間を切り替えた際に、スタディの可視化が空の状態に崩れなくなった。前のタブが存在しない場合、フィルターは All にリセットされる。
- 古い Supabase セッションを持つユーザーが、リダイレクトで立ち往生する代わりに、OTP の
auth/continueページからサインアウトして復帰できるようになった。 - 空のセルページが正しい組織レベルの権限チェックを使うようになり、セルを作成できるユーザーに紛らわしい「プロジェクト管理者に連絡してください」というメッセージが表示されなくなった。
- パイプライン要素の詳細ビューが
Data FitとValidationの設定に対して短時間に重複したフェッチを発生させなくなった。大きなjob_configはストレージから直接読み込まれてキャッシュされる。
Pipeline
Pipeline
Simulation(IDAKLU ソルバー)で関数コンパイルがデフォルトで有効になり、同じモデルを共有する繰り返し実行が高速化された。submesh_typesとspatial_methodsがSimulationObjective.to_configを通して正しくシリアライズされるようになり、simulation_kwargsにメッシュジェネレーターや空間メソッドを持つCycleAgeingなどの目的関数の JSON ラウンドトリップが修正された。
Python API
Python API
- 時間単調性の検証エラーメッセージが、隣接する正しい 2 つの値を報告するようになった(従来の off-by-one では実際の違反の直前の値が表示されていた)。
Data Processing
Data Processing
- 符号規約の検出が、低電流のパルスデータセットをすべて休止と誤分類しなくなった。休止しきい値が電流の 95 パーセンタイルを基準に相対的にスケールするようになり、小振幅データでも違反を検出できる。
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 の正規パラメータ名に揃えられ、多電極セルが正しくパラメータ化されるようになった。Studio
Studio
- 単一の実験タイプのシミュレーションを持つスタディは、そのタイプを自動選択するようになり、可視化ビューにすぐにアクセスできるようになった。
- 失敗した変数評価ジョブは、無限に回転し続ける代わりに、Retry ボタン付きのエラー状態を表示するようになった。
- スタディ一覧エンドポイントが
items・count・totalを含むページネーション結果を返すようになった。 - ページネーション対応のパラメータ化モデル一覧エンドポイントを追加した。
- 数千の短いステップを持つ時系列測定値(例: 約 1500 ステップの HPPC パルスプロトコル)を描画する際のクラッシュを修正した。ダッシュボードでこれらの測定値を読み込めるようになった。
- 結合されたカスタム変数が解決に失敗した際に黙って削除され、「Temperature [degC]」などの便利な変数がシミュレーション出力から失われることがあった問題を修正した。
- 422 エラーを防ぐため、モデル一覧のフォールバックページサイズをバックエンドの 100 行上限にキャップした。
Pipeline
Pipeline
- PyBaMM を 26.3.1 に更新した。カスタムモデルの
base_classが、ワーカー環境にインストールされていないパッケージを参照している場合、警告とともにpybamm.BaseModelにフォールバックするようになった。 - OCP 目的関数(
OCPHalfCell、ElectrodeBalancingHalfCell、ElectrodeBalancing)を_runパターンを使うようにリファクタリングし、raise_on_failureをサポートし、Validation パイプラインで正しく動作するようにした。
DataFitが裸の目的関数を{ClassName: objective}で自動ラップするようになり、ラップされていない単一の目的関数で送信されたパイプラインがシリアライズに失敗しなくなった。
Python API
Python API
- Models・Studies・Optimizations・Projects・Protocols・ParameterizedModels の型付きサブクライアントを追加し、リソース管理における生の HTTP リクエストを置き換えた。
- SDK エンドポイントがパスに
organization_idを含めなくなった。組織は認証トークンから解決される。 - シミュレーションのポーリングがエラーを握りつぶさず即座に伝播するようになり、サーバー計算の
is_terminal/is_failedフィールドを持つ型付きJobResponseオブジェクトを使うようになった。
- シミュレーションジョブのポーリングエンドポイントを修正した(存在しない
/simulations/jobs/{id}ルートにアクセスしていた)。
Data Processing
Data Processing
- ECM バリデーターの符号検出バグを修正した。対称的な電流プロファイル(充電 / 放電 / 充電で同じ正味電荷量に戻る)が、ゼロでない SOC 範囲を持つにもかかわらず誤って却下されていた。
非同期の最適化評価
オプティマイザが、ローカルおよび分散ワークロードの両方で非同期評価をサポートするようになった。新しいProcessPoolAsyncEvaluator はローカルの永続的なマルチプロセスワーカーで評価を実行し、既存の
ActorPoolEvaluator は Ray による分散評価のための submit/wait-next API を備えるようになった。定常状態の
非同期モードは、世代の境界を待たずにすべてのワーカーを飽和状態に保ち、新しい収束基準(忍耐カウンターと
集団多様性のガードを含む)が早期停止を防止する。スタディ検証レポート
スタディに、シミュレーション結果を実験測定と比較するための検証ワークフローが追加された。新しい Report タブは シミュレーション値と実測値のオーバーレイプロットを定量的な誤差指標(RMSE、MAE)とともに表示し、Data タブでは どの測定をどのシミュレーションと対応付けるかを管理できる。詳細はこちら →セルデータのフィルタリングと並べ替え
すべてのセル一覧エンドポイント(仕様、インスタンス、測定)が、名前、作成者のメールアドレス、日付範囲、 並べ替え方向を含むフィルタおよび並べ替えパラメータを受け付けるようになった。Python SDK は各list()
メソッドで対応するキーワード引数を公開し、フロントエンドの測定テーブルはサーバーサイドのフィルタリングを
使用する。Studio
Studio
- パイプラインおよびセル測定のテーブルが、サーバーサイドのソートをサポートするようになった。
- 初回のユーザー情報リクエストが失敗した際に、自動再試行を備えたエラー画面を追加した。
- フロントエンドから SNES オプティマイザのオプションを削除した。
dangerouslySetInnerHTMLを介して信頼できない文字列を描画していた、通知ドロワーおよびジョブ進捗表示の XSS シンクを削除した。- Redux サンクのエラー処理を、一貫して
extractApiErrorを使用するよう正規化した。 - データベースにファイル名をキャッシュすることで、ファイル測定エンドポイントから低速な
bucket.list()呼び出しを排除し、レスポンス時間を約 10 秒から 100 ミリ秒未満へ短縮した。
Pipeline
Pipeline
- すべてのコード、テスト、ドキュメントにわたって Pints オプティマイザを
AskTellOptimizerに改名した。 - CMA-ES、XNES、Nelder-Mead 向けの専用アルゴリズムテストスイートを追加した。
- CMA-ES および XNES の分布平均評価を追加し、評価された平均が最良サンプルを上回る場合にそれを優先する ようにした。
- 不安定な決定論的設計最適化テストを修正した。
Python API
Python API
CellSpecificationClient.list()、CellInstanceClient.list()、CellMeasurementClient.list()に フィルタおよび並べ替えのキーワード引数を追加した。download_files(filenames=)が一覧取得のラウンドトリップをスキップするようになり、単一ファイル取得用の 新しいget_file()メソッドを追加した。
Data Processing
Data Processing
- Biologic ファイル向けに温度列の認識を追加した。
非時系列データ向けの測定タイプ
セル測定が 3 つの値を持つmeasurement_type フィールドをサポートするようになった。time_series
(デフォルト)、チェックポイント測定などのキー・バリューのメタデータ向けの properties、そして画像・PDF・
numpy 配列などの任意のファイル向けの file である。各タイプには独自の作成および取得フローがあり、
一覧エンドポイントはタイプでフィルタリングできる。詳細はこちら →パフォーマンス改善
パイプラインの作成が大幅に高速化した。大きなジョブ構成は、データベースへインラインで書き込むのではなく オブジェクトストレージへオフロードされる。バックエンド全体も非同期 Supabase クライアントへ移行され、 同時負荷下でのスループットが向上した。モデル、パラメータ化モデル、スタディ、最適化がサーバーサイドの ページネーションとフィルタリングを使用するようになり、コレクション全体をメモリに読み込む必要がなくなった。総時間による終止条件
プロトコルステップが、組み込みの終止条件としてtotal_time を使用できるようになった。これにより、
ステップ時間だけでなく、経過した実験の総時間が指定の継続時間に達した時点でステップを終了できる。詳細はこちら →パラメータ化モデルの改善
パラメータ化モデルの詳細ビューが、従来の複数ページ構成に代わり、タブ付きの単一ページに統合された。 モデルは全構成を含む zip アーカイブとしてダウンロードできるようになり、温度依存のスタディ向けに設計最適化の 目的関数で初期温度が解析されるようになった。詳細はこちら →Studio
Studio
- セル仕様の一覧が、カードではなくソート可能なデータテーブルとして表示されるようになった。
- すべてのプロトコルステップがスキップされてシミュレーションがデータを生成しない場合に、UI に警告を表示 するようにした。
- 変数評価器からハードコードされた便宜変数を削除し、変数評価の UX を改善した。
- すべての更新エンドポイントを PUT から、部分更新ボディを伴う PATCH セマンティクスへ移行した。
- すべての重複リソースエラーを、構造化されたエラー詳細を伴う HTTP 409 を返すよう標準化した。
- よりシンプルで高速なファイルアクセスのために、署名付き URL のダウンロードを HTTP 307 リダイレクトに 置き換えた。
- より一貫した API 表面のために、セル測定の複合レスポンス形状をフラット化した。
- 設計最適化がデフォルトで差分進化アルゴリズムを使用するようになった。
- 最適化の削除が誤った API エンドポイントへアクセスする問題を修正した。
- 最適化のクローンが差し戻されたリクエストボディを送信する問題を修正した。
- 最適化一覧ページが冗長な API リクエストを送信する問題を修正した。
Pipeline
Pipeline
- 温度依存の最適化スタディ向けに、
DesignObjectiveで初期温度を解析するようにした。
Transform.to_dictがフィット済みパラメータの辞書にbase_nameエントリを漏らす問題を修正した。- 変換済みパラメータを確認する際に
FunctionForExportを正しくアンラップするよう検証を修正した。 - 初期 SOC が EIS 周波数領域シミュレーションに渡されない問題を修正した。
Protocol Simulator
Protocol Simulator
- UCP から PyBaMM への変換器で、入力パラメータを含む算術式のサポートを追加した
(例:
1000 / input["Total cells"]が正しいシンボリック式を生成するようになった)。
- EIS 周波数領域シミュレーションで初期 SOC が適用されない問題を修正した。
Python API
Python API
- 測定ファイルのアクセスにおいて、署名付き URL のダウンロードを直接の HTTP 307 リダイレクトに置き換えた。
- よりシンプルなデータアクセスのために、セル測定のレスポンス形状をフラット化した。
- 非時系列データ向けに、測定モデルへ
measurement_typeフィールドを追加した。 - すべての更新メソッドを PUT から PATCH へ移行した。
- サーバーサイドのページネーションにより、多数のシミュレーションを持つスタディおよびパラメータ化モデルの 読み込みを改善した。
Data Processing
Data Processing
- より高速でポータブルなキャッシュのために、pickle ベースのローカルキャッシュを Parquet 形式に置き換えた。
- Neware CSV ファイル向けに Latin-1 エンコーディングのサポートを追加した。
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 ファイルから
開始時刻を抽出する。詳細はこちら →Studio
Studio
- ダッシュボードヘッダーにテーマ切り替えを備えたダークモードを追加した。
- 最適化テンプレートを組織スコープからプロジェクトスコープへ移し、プロジェクトレベルの管理ページを設けた。
- 最適化の作成時に最適化名を任意とした。
- セル仕様・インスタンス・測定の一覧エンドポイントにページネーションを追加した。
- ドライブサイクルシミュレーションの結果プロットに OCV トレースを追加した。
- シミュレーション、測定取り込み、フロントエンド描画の全体にわたって EIS の列名を
Z_Re [Ohm]/Z_Im [Ohm]に統一した。 - 実験テンプレートの指標を、コード文字列の評価からシリアライズ可能な ionworkspipeline の指標構成へ 移行した。
- 非推奨の
slugおよびadditional_data列をセルモデルから完全に削除した。
- 検証中に datafit プロセッサが未解決の
db:参照を受け取る問題を修正した。 self.param属性の欠落によるLumpedSPMRモデルのクラッシュを修正した。- 実行間で datafit のセットアップ構成が変更される問題を修正した。
Pipeline
Pipeline
- 最大濃度値を必要とせずに、最大化学量論からリチウムインベントリを計算するサポートを追加した。
- モデルおよび実験のシリアライズに PyBaMM ネイティブの
to_config/from_configを採用し、独自の パーサロジックを削除した。 - 合成指標の単項演算として
absを追加した。
- ECM で熱モデルが誤った発熱変数を使用していた問題を修正した。
- 電極バランシング方向のパラメータ名における末尾の空白を修正した。
FunctionParameterノード内のサブパラメータを検出するよう検証を修正した。- サンプラー構成を扱うようパーサを修正し、スキーマ同期テストを拡充した。
- pandas/polars/DataLoader の互換性の問題を修正した。
Protocol Simulator
Protocol Simulator
- EIS インピーダンス列を SI 単位と標準符号規約とともに
Z_Re [Ohm]/Z_Im [Ohm]に統一した。
- CCCV の解決が、プロトコル内のすべてのサブステップに一貫して適用されるよう修正した。
Python API
Python API
- セル測定のローカルデータキャッシュを追加し、繰り返しのダウンロードを削減した。
- セル一覧メソッドにページネーションサポート(
limit/offset)を追加し、.total属性を持つPaginatedListを返すようにした。 - 非推奨の
slugおよびadditional_dataフィールドをセルモデルから完全に削除した。 - 測定の電流データに対する符号検出アルゴリズムを改善した。
Data Processing
Data Processing
- MPR 以外のエクスポート向けに BioLogic のプレーン CSV リーダーを追加した。
- インピーダンス成分が欠落している場合に、
Z_ModとZ_PhaseからZ_ReとZ_Imを自動的に 導出する機能を追加した。 - パッケージ間で再利用できるよう、セルデータのキャッシュロジックを
ionworks-apiに移した。
- 明示的にマッピングされた列に対して自動検出をスキップするよう CSV リーダーを修正した。
- データ可視化ユーティリティのプロットのバグを修正した。