ionworks-api Python パッケージは、最適化をプログラムから実行・管理するためのサブクライアントを提供します。インストールと認証についてはPython API クライアントページを参照してください。
最適化の実行
from ionworks import Ionworks
# Reads IONWORKS_API_KEY and IONWORKS_PROJECT_ID from the environment.
# project_id is auto-injected into payloads that don't specify it.
client = Ionworks()
optimization = client.optimization.run({
"name": "Electrode thickness optimization",
"parameterized_model_id": "your-parameterized-model-id",
"protocol_experiment": {
"protocol": "...",
"name": "1C Discharge",
},
"design_parameters": {
"Positive electrode thickness [m]": {
"bounds": [50e-6, 100e-6],
},
},
"objectives": {
"Discharge capacity [A.h]": {"type": "maximize"},
},
})
print(f"Optimization ID: {optimization.id}")
print(f"Job ID: {optimization.job_id}")
完了を待機する
result = client.optimization.wait_for_completion(
"your-optimization-id",
timeout=600, # seconds (default: 600)
poll_interval=3, # seconds between polls (default: 3)
verbose=True, # print status updates (default: True)
)
最適化が失敗したときに例外を発生させる代わりに結果の dict を取得するには、raise_on_failure=False を設定します。
最適化の一覧
# List optimizations in the default project
# (set IONWORKS_PROJECT_ID or pass project_id= to Ionworks(...))
optimizations = client.optimization.list()
# Override the project for a single call
optimizations = client.optimization.list(project_id="other-project-id")
# Paginate results
optimizations = client.optimization.list(limit=10, offset=0)
project_id を省略すると、client.optimization.run と .list は Ionworks クライアントに設定されたデフォルトプロジェクトを使用します。
最適化の取得
最適化レコードとその関連ジョブステータスを返します。
result = client.optimization.get("your-optimization-id")
print(result["optimization"])
print(result["job"])
最適化の更新
optimization = client.optimization.update("your-optimization-id", {
"name": "Electrode optimization v2",
"description": "Updated bounds",
})
最適化のキャンセル
result = client.optimization.cancel("your-optimization-id")
どのリソースの ID も、Ionworks Studio Web アプリから確認できます。リソースの詳細ページに移動すると、URL に ID が表示されます。