ionworks-api Python クライアントで読み戻せます。このページではリソースの一覧とフィルタリング、完全な測定詳細の取得、ローカルキャッシング、Python 内でのプロット、エラー処理について説明します。
インストールと認証についてはPython API クライアントページを参照してください。アップロードについてはデータのアップロードを参照してください。
リソースの一覧
フィルタリングと並び替え
すべてのlist() メソッドはキーワード専用のフィルタパラメータを受け入れるため、すべてを取得してから Python でフィルタリングする代わりに、サーバー側で結果を絞り込めます。
フィルタパラメータ
フィルタパラメータは互いに自由に組み合わせられ、
limit/offset ページングパラメータとも組み合わせられます。返される PaginatedList の .total プロパティは、フィルタ適用後の総数を反映します。ページング
すべてのlist() 呼び出しは PaginatedList を返します。limit と offset パラメータでどのページを取得するか制御します。
返される
PaginatedList は通常の Python リストのように動作(反復、インデックス、長さチェック)し、さらに次のプロパティを公開します:
すべての結果を反復するには:
名前による測定の解決
測定とその親の人間可読な名前は分かっているが ID が分からない場合、spec → instance → measurement の階層を手作業でたどる代わりにclient.resolve_measurement() を使えます:
CellMeasurement を返します。次の場合に IonworksError を送出します:
status_code=404: いずれかの階層で一致が見つからなかった場合。status_code=409: 名前が親内で一意でない場合。この場合は ID で解決してください(例: Ionworks Studio のデータ可視化ページから)。
測定詳細
client.cell_measurement.detail() は完全な測定を取得し、測定タイプに基づいてレスポンスを適応させます。
- Time series
- Properties
- File
時系列データ、ステップ統計、サイクルメトリクスを返します:
Web アプリへのリンク
client.urls.measurement() を使用して、Ionworks Web アプリの測定詳細ページへのリンクを作成します。ノートブック、スクリプト、レポートからクリック可能なリンクを表示して、共同作業者が Ionworks Studio の測定に直接ジャンプできるようにする場合に便利です。
一般的なパターンは、測定を反復しながら各結果の隣にリンクをレンダリングすることです:
client.urls は、ルーティングされたすべてのリソース(study、simulation、parameterized model、pipeline、optimization、protocol、material、cell spec、cell instance)に対して同じヘルパーを公開しています。完全なリファレンスについては、Web アプリ URL ヘルパーを参照してください。
Navigator: キャッシュ付きの階層走査
Navigator は、spec → instance → measurement の階層を走査し、すべての list / fetch 呼び出しをメモリ上にメモ化するオプトインのヘルパーです。1 つのスクリプトやノートブック内で複数の spec、instance、measurement を反復処理し、同じ API 呼び出しの繰り返しを避けたいときに使います。
Navigator を使うべきケース:
- 1 つ以上のセル仕様上のすべての測定をループする解析スクリプトを書いている。
- 反復順序を決定論的にしたい — 一覧は
nameでソートされて返されます。 limitとoffsetを自分で管理せずに、ページングを自動で処理させたい。
client.cell_spec、client.cell_instance、client.cell_measurement) は引き続きメインの API です。Navigator はその上に乗る薄いレイヤーで、階層をキャッシュ済みの一貫したビューとして扱いたいときに使い、単発の読み取りや書き込みではサブクライアントを直接使ってください。
Navigator インスタンスごとに最大 1 回しか取得されません。nav.instances("CellA") を 2 回呼び出しても、2 回目の API 往復なしで同じリストが返されます。measurements、steps、time_series も同様です。
設定
単一の spec を参照する
KeyError を送出します — タイポの検出に便利です。
キャッシュの無効化
電池データはアップロード後は不変なので、唯一の陳腐化要因は「プラットフォームに新しい兄弟エンティティが現れた」場合だけです。セッションの途中で新しいデータがアップロードされる可能性がある長時間動作のノートブックでは、キャッシュの一部または全体を破棄できます:Navigator はインスタンスの生存期間中、メモリ上にキャッシュします。プロセスをまたいだ、あるいはセッションをまたいだ測定データのディスクキャッシュについては、下記の ローカルキャッシング を参照してください — 両レイヤーは組み合わせて利用できます。ローカルキャッシング
ionworks-api クライアントは測定データをディスクに自動的にキャッシュし、繰り返しの読み取りを高速化し不要な API 呼び出しを回避します。キャッシングはデフォルトで有効で、cell_measurement の steps、cycles、steps_and_cycles、time_series メソッドに適用されます。
client.cell_measurement.steps(measurement_id) のようなメソッドを呼び出すと、クライアントは API リクエストを行う前にローカルキャッシュディレクトリを確認します。キャッシュされたコピーが存在し有効期限内であれば、それを直接返します。それ以外の場合、クライアントは API から取得し、結果をキャッシュして返します。
キャッシュされたデータはデフォルトで ~/.ionworksdata_cache に Parquet ファイルとして保存され、1 時間で有効期限が切れます。
キャッシュをスキップする
すべてのデータ取得メソッドはuse_cache パラメータを受け入れます。False に設定すると、ローカルキャッシュからの読み取りも書き込みも行わずに新しい API 呼び出しを強制します:
キャッシュの設定
キャッシュ設定はグローバルです。変更は同じ Python プロセス内のその後のすべての API 呼び出しに影響します。
Python からのプロット
DataLoader には、測定データを matplotlib ベースで素早く可視化する plot_data() メソッドが含まれています。プロットは電圧と電流の時間変化を表示し、温度データが利用可能な場合は追加の温度サブプロットを表示します。
(Figure, Axes) タプルを返すため、プロットをさらにカスタマイズできます。プロットを即座に表示するには show=True を渡します:
plot_data() は時系列データがまだ取得されていない場合、サーバーから自動的に読み込みます。インライン時系列のサイズ制限
API 呼び出しに pandas または polars DataFrame を直接渡す場合(例: パイプライン設定の一部として)、クライアントはインライン時系列データに対して最大 1,000 行 を強制します。同じ上限は"file:..." と "folder:..." 参照にも適用されます — これらはローカルマシンから読み取られ、送信時にクライアントによって内容がインライン化されるためです。より大きなデータセットは最初に測定としてアップロードし、ID で参照する必要があります。
DataLoader 設定のエクスポート
データベース測定を参照するDataLoader があり、自己完結型の設定をエクスポートしたい場合(例: 同僚と共有するため)、to_local() でデータをインライン化します:
to_local() はすべての時系列とステップデータをサーバーから即座に取得します。非常に大きな測定では時間がかかることがあります。エラー処理
クライアントは一般的なエラーケースに対して例外を発生させます:- API 資格情報が欠落・無効
- API リクエストエラー(詳細付きで
IonworksErrorを発生) - 1,000 行を超えるインライン時系列(
IonworksErrorのサブクラスMeasurementValidationErrorを発生)
MeasurementValidationError の処理パターンは上記のインライン時系列のサイズ制限を参照してください。
API エラー形式
すべての API エラーは一貫した JSON 構造を返します:
一般的な HTTP ステータスコード:
完全な API リファレンス
完全な Python API リファレンスはionworks-api ドキュメントを参照してください。次のステップ
データの可視化
ブラウザ内のインタラクティブビューアでアップロードしたデータを探索します。
データのアップロード
仕様、インスタンス、測定のエンドツーエンドアップロードワークフロー。
測定
3 つの測定タイプの詳細。
シミュレーション API
Python API でシミュレーションとパイプラインを実行します。