メインコンテンツへスキップ
ionworks-api Python パッケージを使うと、シミュレーションを実行してパラメータ化パイプラインをプログラムから送信できます。インストールと認証については、Python API クライアントページを参照してください。

シミュレーションの実行

client.simulation を使ってシミュレーションを実行します。シミュレーションにはパラメータ化モデルUCP 形式のプロトコルが必要です。

単一シミュレーション

実験パラメータと設計パラメータも渡せます:
design_parametersprotocol() における単一シミュレーション用の便宜的なフィールドです。パラメータのオーバーライドをフラットな dict[str, float] で渡すと、クライアントが内部で 1 行の離散 DOE に変換してから送信します。完全な DOE スキーマを書かずに、単一の実行で 1 つ以上の設計パラメータを変えたい場合に使用してください。
protocol() では design_parametersdesign_parameters_doe は排他的であり、DOE を渡す場合はちょうど 1 つのシミュレーションに展開される必要があります。両方を同時に渡したり、複数のシミュレーションに展開される DOE を渡したりすると ValueError が発生します。複数シミュレーションのスイープには、代わりに protocol_batch を使用してください。

結果を待機する

wait_for_completion を使ってシミュレーションの完了までポーリングします。このメソッドは、タイムアウトを待たずに失敗・キャンセルされたジョブを即座に検出します。
シミュレーションが失敗したときに例外を発生させる代わりに結果の dict を取得するには、raise_on_failure=False を設定します:

実験計画法 (DOE) によるバッチシミュレーション

protocol_batch を使ってパラメータスイープにわたる複数のシミュレーションを実行します:
サポートされる DOE 行タイプ: サンプリング戦略: grid(すべての組み合わせ)、randomlatin_hypercube

シミュレーションデータの取得

get_result は、3 つのフィールドを持つ型付きの SimulationResult データクラスを返します。 time_seriessteps はデフォルトで polars DataFrame として返されます。pandas DataFrame を受け取りたい場合は、セッション開始時に set_dataframe_backend("pandas") を一度呼び出してください。
time_seriesDischarge capacity [A.h]Charge capacity [A.h] は、ステップ境界ごとに 0 にリセットされます。time_seriessteps を結合する場合は "Step count" を使用してください。連続した累積容量のトレースが必要な場合は、ステップごとの最終値を累積してください。

パイプラインの実行

パイプラインは、バッテリーモデルパラメータ化のためのデータフィッティング、計算、検証のステップを組み合わせます。client.pipeline を使ってパイプラインを送信・管理します。
パイプラインには project_id が必要です。デフォルトプロジェクトを設定するには、IONWORKS_PROJECT_ID 環境変数を設定するか、Ionworks(...)project_id= を渡してください。あるいはパイプライン設定に明示的に project_id を含めてください。非推奨の PROJECT_ID 環境変数も依然としてフォールバックとして受け入れられます。

パイプラインの送信

パイプラインの要素は辞書である必要があります(リストではありません)。各キーは要素名で、値はその設定です。
構築時のバリデーションと IDE の補完が得られる、型付きの iws.Pipeline ビルダー の利用を推奨します。ここで示した設定と 同じ内容にシリアライズされます。生の辞書(上記)も受け付けられます。

パイプラインの完了を待機する

パイプライン結果の取得

パイプライン内のデータ参照

パイプライン設定でデータソースを参照するには、これらのプレフィックスを使用します:
パイプライン設定内のインライン DataFrame には 1,000 行の制限があります。より大きなデータセットはまず測定としてアップロードし、db:measurement-id で参照してください。
folder: スキームは time_series ファイルと steps ファイルを含むディレクトリを想定しています。.parquet.csv の両方がサポートされ、両方が存在する場合は parquet が優先されます。例えば、time_series.parquetsteps.parquet(または .csv)を含むフォルダは正しく読み込まれます。

PyBaMM モデルのサポート

パイプライン設定は PyBaMM モデルオブジェクトを直接受け入れます。クライアントは送信前に自動的にシリアライズします:

シンプルパイプラインの実行

単一のデータフィットまたは単一の検証ステップを含むパイプラインには、client.pipeline の代わりに client.simple_pipeline を使用します。シンプルパイプラインは、軽量なファイア・アンド・フォーゲットの代替手段です。1 つの設定を送信すると、サーバーはそれをエンドツーエンドで単一のジョブとして実行し、フラットな parameter_values 結果を返します。

シンプルパイプラインの使いどころ

シンプルパイプラインには project_id が必要です。デフォルトプロジェクトを設定するには、IONWORKS_PROJECT_ID 環境変数を設定するか、Ionworks(...)project_id= を渡してください。あるいは各呼び出しで project_id= を明示的に渡してください。

シンプルパイプラインの送信

構築時のバリデーションと IDE の補完が得られる、型付きの iws.SimplePipeline 形式 の利用を推奨します (例: cost=iws.costs.RMSE())。ここで示した設定と同じ内容にシリアライズされます。
elements 辞書は最大 1 つの data_fitarray_data_fit、または validation 要素を含むことができます。entry 要素のようなヘルパーエントリは許可され、フィットの前に評価されます。

実行オプション

createoptions 辞書を渡すことで、送信したパイプラインの実行時の挙動を制御できます。オプションは送信メタデータであり、サーバーがジョブをどのように実行するかに影響しますが、パイプライン設定の一部としては保存されません。
options(および project_idnamedescription)は設定辞書に直接埋め込むこともできます。create は送信前にこれらを設定から取り出します。create に明示的に渡された引数は、設定内の値より優先されます。

完了を待機する

wait_for_completion は、パイプラインが終端ステータス(completedfailed、または canceled)に達するまでポーリングし、最終レコードを返します。
検証実行の場合、結果には parameter_values と並んで summary_stats ブロックも含まれます。 timeout 以内にパイプラインが完了しない場合は TimeoutError が発生します。failed で終了し、raise_on_failure=True(デフォルト)の場合、サーバー側のエラーメッセージを含む IonworksError が発生します。

一覧、フィルタリング、ソート

listitemscounttotal を含むページ分割されたレスポンスを返します。文字列フィルタは、完全な値または ilike.%foo%(大文字小文字を区別しない部分一致)や in.(completed,failed)(集合のいずれかに一致)のような演算子プレフィックス付きの式を受け入れます。

更新、キャンセル、削除

エラー処理

スタディの管理

client.study を使ってスタディを作成、一覧、更新、削除します。スタディはプロジェクトにスコープされます。 すべての client.study.* メソッドは project_id を任意のキーワード引数として受け入れます。省略すると、クライアントに設定されたデフォルトプロジェクト(または IONWORKS_PROJECT_ID から解決されたもの)を使用します。呼び出しごとにオーバーライドするには、project_id= を明示的に渡してください。

スタディの一覧

サポートされるフィルター: namename_exactorder_byorder

スタディの取得

スタディの作成

スタディの更新

シミュレーションと測定の割り当て

スタディの削除

プロトコルの管理

UCP プロトコルを検証するには client.protocol を使用します。

プロトコルの検証

入力参照の検索

プロトコル文字列内の input[...] プレースホルダーを検索します。実験パラメータフォームの構築に便利です。

UCP からベンダープロトコルファイルへの変換

client.protocol.convert を使って、UCP YAML プロトコルを商用サイクラーで使用されるネイティブファイル形式に変換します。これは商用プロトコルのアップロードフローの逆です。Ionworks で設計されたプロトコルから始め、ハードウェアで実行できるファイルを生成します。 サポートされるターゲット: maccorarbinnewarebiologic_bttestnovonix
ConvertResult は以下を公開します:
  • primary_bytes — プライマリプロトコルファイルの生のバイト。
  • text(encoding="utf-8")primary_bytes を文字列にデコードします。
  • save(dir) — すべての出力ファイル(プライマリと任意のサイドカー)を dir に書き込み、書き込んだパスのリストを返します。
ドライブサイクルステップを含む Maccor プロトコルは、プライマリの .000 ファイルに加えて 1 つ以上の .MWF 波形ファイルを生成します。すべてのサイドカーがプライマリプロトコルの隣に配置されるよう、result.save(dir) を使用してください。primary_bytes のみを処理すると波形ファイルが失われ、プロトコルはサイクラー上で実行できなくなります。
一部の UCP 機能はすべての形式間で明確にマッピングされますが、各ベンダーには独自の構文と制限があります(商用プロトコル間の違いを参照)。UCP 構造がターゲット形式で表現できない場合、変換はサポートされていないステップを記述するエラーを返します。実際のサイクラーで実行する前に、商用プロトコルフローで再アップロードして出力を検証してください。
どのリソースの ID も、Ionworks Studio Web アプリから確認できます。リソースの詳細ページに移動すると、URL に ID が表示されます。

次のステップ

シミュレーション

Ionworks Studio でのシミュレーションの実行について学びます。

プロトコルリファレンス

Universal Cycler Protocol 形式の完全なリファレンスです。

データのアップロード

Python API でセルデータをアップロード・管理します。

Build API

モデルとパラメータ化モデルを一覧・取得します。