メインコンテンツへスキップ
データをアップロードしたら、ionworks-api Python クライアントで読み戻せます。このページではリソースの一覧とフィルタリング、完全な測定詳細の取得、ローカルキャッシング、Python 内でのプロット、エラー処理について説明します。 インストールと認証についてはPython API クライアントページを参照してください。アップロードについてはデータのアップロードを参照してください。
どのセル仕様、インスタンス、測定の ID も、Ionworks Studio のデータ可視化ページから確認できます。ID は URL と詳細パネルに表示されます。

リソースの一覧

フィルタリングと並び替え

すべての list() メソッドはキーワード専用のフィルタパラメータを受け入れるため、すべてを取得してから Python でフィルタリングする代わりに、サーバー側で結果を絞り込めます。
フィルタは 3 つのリソースタイプすべてで同じように動作し、1 回の呼び出しでページングや並び替えと組み合わせられます:
セル測定では測定開始時刻に対する追加の日付フィルタがサポートされます:

フィルタパラメータ

フィルタパラメータは互いに自由に組み合わせられ、limit/offset ページングパラメータとも組み合わせられます。返される PaginatedList.total プロパティは、フィルタ適用後の総数を反映します。

ページング

すべての list() 呼び出しは PaginatedList を返します。limitoffset パラメータでどのページを取得するか制御します。
返される PaginatedList は通常の Python リストのように動作(反復、インデックス、長さチェック)し、さらに次のプロパティを公開します: すべての結果を反復するには:

名前による測定の解決

測定とその親の人間可読な名前は分かっているが ID が分からない場合、spec → instance → measurement の階層を手作業でたどる代わりに client.resolve_measurement() を使えます:
このメソッドは各階層をサーバー側で名前完全一致でフィルタし、該当する CellMeasurement を返します。次の場合に IonworksError を送出します:
  • status_code=404: いずれかの階層で一致が見つからなかった場合。
  • status_code=409: 名前が親内で一意でない場合。この場合は ID で解決してください(例: Ionworks Studio のデータ可視化ページから)。

測定詳細

client.cell_measurement.detail() は完全な測定を取得し、測定タイプに基づいてレスポンスを適応させます。
時系列データ、ステップ統計、サイクルメトリクスを返します:

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 は、spec → instance → measurement の階層を走査し、すべての list / fetch 呼び出しをメモリ上にメモ化するオプトインのヘルパーです。1 つのスクリプトやノートブック内で複数の spec、instance、measurement を反復処理し、同じ API 呼び出しの繰り返しを避けたいときに使います。 Navigator を使うべきケース:
  • 1 つ以上のセル仕様上のすべての測定をループする解析スクリプトを書いている。
  • 反復順序を決定論的にしたい — 一覧は name でソートされて返されます。
  • limitoffset を自分で管理せずに、ページングを自動で処理させたい。
基礎となるサブクライアント (client.cell_specclient.cell_instanceclient.cell_measurement) は引き続きメインの API です。Navigator はその上に乗る薄いレイヤーで、階層をキャッシュ済みの一貫したビューとして扱いたいときに使い、単発の読み取りや書き込みではサブクライアントを直接使ってください。
各エンティティは Navigator インスタンスごとに最大 1 回しか取得されません。nav.instances("CellA") を 2 回呼び出しても、2 回目の API 往復なしで同じリストが返されます。measurementsstepstime_series も同様です。

設定

単一の spec を参照する

名前が一致しない場合、利用可能な spec 名のリストとともに KeyError を送出します — タイポの検出に便利です。

キャッシュの無効化

電池データはアップロード後は不変なので、唯一の陳腐化要因は「プラットフォームに新しい兄弟エンティティが現れた」場合だけです。セッションの途中で新しいデータがアップロードされる可能性がある長時間動作のノートブックでは、キャッシュの一部または全体を破棄できます:
無効化は下方向にカスケードします: spec を破棄するとその instance と measurement も破棄され、instance を破棄するとその measurement も破棄されます。
Navigator はインスタンスの生存期間中、メモリ上にキャッシュします。プロセスをまたいだ、あるいはセッションをまたいだ測定データのディスクキャッシュについては、下記の ローカルキャッシング を参照してください — 両レイヤーは組み合わせて利用できます。

ローカルキャッシング

ionworks-api クライアントは測定データをディスクに自動的にキャッシュし、繰り返しの読み取りを高速化し不要な API 呼び出しを回避します。キャッシングはデフォルトで有効で、cell_measurementstepscyclessteps_and_cyclestime_series メソッドに適用されます。 client.cell_measurement.steps(measurement_id) のようなメソッドを呼び出すと、クライアントは API リクエストを行う前にローカルキャッシュディレクトリを確認します。キャッシュされたコピーが存在し有効期限内であれば、それを直接返します。それ以外の場合、クライアントは API から取得し、結果をキャッシュして返します。 キャッシュされたデータはデフォルトで ~/.ionworksdata_cache に Parquet ファイルとして保存され、1 時間で有効期限が切れます。

キャッシュをスキップする

すべてのデータ取得メソッドは use_cache パラメータを受け入れます。False に設定すると、ローカルキャッシュからの読み取りも書き込みも行わずに新しい API 呼び出しを強制します:

キャッシュの設定

キャッシュ設定はグローバルです。変更は同じ Python プロセス内のその後のすべての API 呼び出しに影響します。

Python からのプロット

DataLoader には、測定データを matplotlib ベースで素早く可視化する plot_data() メソッドが含まれています。プロットは電圧と電流の時間変化を表示し、温度データが利用可能な場合は追加の温度サブプロットを表示します。
メソッドは matplotlib の (Figure, Axes) タプルを返すため、プロットをさらにカスタマイズできます。プロットを即座に表示するには show=True を渡します:
plot_data() は時系列データがまだ取得されていない場合、サーバーから自動的に読み込みます。
ブラウザ内のインタラクティブなビューア(フィルタ、ステップオーバーレイ、SQL 付き)についてはデータの可視化を参照してください。

インライン時系列のサイズ制限

API 呼び出しに pandas または polars DataFrame を直接渡す場合(例: パイプライン設定の一部として)、クライアントはインライン時系列データに対して最大 1,000 行 を強制します。同じ上限は "file:...""folder:..." 参照にも適用されます — これらはローカルマシンから読み取られ、送信時にクライアントによって内容がインライン化されるためです。より大きなデータセットは最初に測定としてアップロードし、ID で参照する必要があります。
大きなデータセットを扱うには、まずアップロードして 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 でシミュレーションとパイプラインを実行します。