> ## Documentation Index
> Fetch the complete documentation index at: https://docs.ionworks.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 2026 07 13

<Update label="July 13, 2026" description="Python API での EIS アップロード検証、そしてパイプライン詳細ページと ECM フィットの高速化">
  ## EIS アップロード検証

  `cell_measurement.create(...)` が、測定辞書上で `data_type="eis"` の
  ヒントを受け付けるようになった。設定すると、
  `validate_measurement_data` は構造カラムチェック（常に有効で、
  `Frequency [Hz]`、`Z_Re [Ohm]`、`Z_Im [Ohm]` を必須とする）と、
  strict モード限定で個別にスキップ可能な 2 つのヒューリスティック
  チェックを実行する。`eis_zim_sign` は容量性帯域が主に正である
  スペクトル — すなわち生の `Im(Z)` の符号が反転している場合 —
  に対して `Z_Im = -Z_Im` という修正ヒントとともにフラグを立てる。
  `eis_impedance_magnitude` は、`min(Z_Re)` を容量から導出した
  推定値の周りの広い 100× 帯域と比較することで、桁単位の
  単位エラーを捕捉する — データ取得は行わず、供給された
  `rated_capacity` に対する健全性チェックのみを行う。両者とも
  桁単位の問題（1000× の単位エラー、完全に反転した符号）に
  対してのみ発火するため、妥当なスペクトルには決して手を
  加えない。BioLogic リーダーは、生の虚部を `Z_Im [Ohm]` として
  （容量性の弧全体で負として）直接格納するようになり、検証器の
  規約と一致するようになった。

  ## より高速なパイプライン詳細ページと ECM フィット

  パイプライン詳細ページの読み込みが目に見えて高速になった:
  大きな要素ごとのデータは、事前ではなく展開時に遅延読み込みされる
  ようになり、5 秒ごとのポーリング間隔で発生していた遅い
  クライアント側の再計算が最適化されて排除された。別途、
  パイプライン ECM フィットも、フィット品質を完全に保持しつつ、
  いくつかの内部フィット戦略の改善によりより高速かつ正確に
  なった。

  <AccordionGroup>
    <Accordion title="Studio">
      **改善**

      * プロトコル詳細ページに、そのプロトコルを使用するすべての
        シミュレーションをリストする **Simulations** セクションが
        表示されるようになった。パラメータ化モデルのシミュレーション
        リストで利用できるのと同じ一括アクション（スタディへの追加、
        再実行、削除）が使える。
      * パイプラインの**一括キャンセル**が瞬時になった。UI は
        楽観的更新で即座に切り替わり、遅いジョブ終了作業は
        バックグラウンドで実行されるようにオフロードされる。単一の
        一括キャンセルエンドポイントが、フロントエンドが以前行って
        いたパイプラインごとのループを置き換える。
      * Cycle Filter が、利用可能なサイクル数を超える `First N`、
        `Last N`、`Range` の値をクランプするようになった: 利用可能な
        すべてのサイクルを返し、中立的なテキストで
        `Showing all N cycles` と表示する。明示的な単一サイクルの
        タイプミス（例: 100 サイクルの測定に対する `0,50,200`）は
        引き続きエラーになるが、以前の何千もの数字の壁のような
        メッセージではなく、短く実用的なメッセージを表示する。
      * **Compute hours** が、シミュレーション時間と並ぶ第一級の使用量
        ディメンションになった。各組織の契約により駆動される。
        アカウントドロワーは設定された使用量タイプごとにメーターを
        1 つレンダリングし、直近の既知のメーター数のサイズに設定された
        プレースホルダーカードで統合ローディングシグナルでゲートされる
        ため、リストが読み込み時に一時的にゼロに崩れることは
        なくなった。

      **修正**

      * 通常の Admin（スーパー管理者ではない）として組織を削除すると、
        正しく **403 Forbidden** を返すようになった。以前は削除は
        静かにブロックされていたが、エンドポイントは 204 を返していた
        ため、組織はデータベースに残ったまま偽の成功を示していた。
      * 電流符号規約のドキュメントが、バックエンドフィールドの説明、
        API discovery エンドポイント、およびデータアップロードのドキュメント
        全体で修正された: **正 = 放電、負 = 充電**（プラットフォームの
        実際のデータと検証器と一致）。正当に異なる外部サイクラー規約
        （例: BioLogic / Arbin のネイティブは 正 = 充電）の説明は
        変更されていない。
    </Accordion>

    <Accordion title="Pipeline">
      **改善**

      * **DE** と **PSO** オプティマイザのデフォルト集団サイズが 40 に
        キャップされるようになった。明示的な `population_size` 値は
        引き続きキャップをバイパスする。自動スケーリングされる
        デフォルトのみが変更され、それもキャップを超える場合のみである。

      **修正**

      * ローカルパイプライン実行が、これまで乖離していた 3 か所で
        サーバーの動作と一致するようになった。`data` キーのみを持つ
        OCP interpolant 入力が、メタデータ欠落として拒否されなくなった。
        スキーマ提供の変換（`Log10`、`Log`、`Inverse`、…）が静かに
        ドロップされなくなった。そして、それらのドロップの下流症状と
        して発火していた無意味なマルチスタートガード
        （`Multiple multistarts are being used, but all initial guesses are identical`）
        が、結果として消えた。
    </Accordion>

    <Accordion title="Python API">
      **改善**

      * 新しい `ionworks-mcp` パッケージ — Ionworks 公開 API を
        Claude Desktop や Claude Code のような MCP クライアントに
        公開する軽量な読み取り専用 MCP（Model Context Protocol）
        サーバー。`ionworks-api` Python SDK 上の薄いラッパーであり
        （認証、リトライ、キャッシュ、ページネーションを継承）、
        機能検出、セル階層（spec、instance、時系列・ステップ・
        サイクル付き測定）、そしてマテリアルおよびマテリアル
        プロパティデータセットにまたがる 15 のツールを備える。
        同じ `IONWORKS_API_KEY` 環境変数を使用し、時系列呼び出しが
        制限のないペイロードをダンプすることがないよう、DataFrame を
        返すツールに対して行のウィンドウ処理を必須化する
        （デフォルト 500 行、最大 5000、`offset` ページング、
        オプションの `columns` プロジェクション）。書き込みや変更は
        一切行わない。
      * `GET /organizations/current/usage` が公開になり、上限を
        伴うディメンションごとの使用量（`simulation`、`compute`）を
        返すようになったため、SDK クライアントは管理者トークンなしで
        自身のクォータを読み取れるようになった。
    </Accordion>

    <Accordion title="Data Processing">
      **改善**

      * 明示的な `sheets` オプションのない Neware **BTSDA** `.xlsx`
        ファイルが、時系列が実際に存在する `record` シートを
        自動選択するようになった — メタデータのみを含む最初のシートに
        デフォルト設定して `Timestamp` 欠落エラーで失敗する代わりに。
        以前の「`sheets={type: 'name', value: 'record'}` を渡す必要が
        あります」という落とし穴は自動化された。`record` シートが
        ないファイルは引き続き最初のシートのデフォルトにフォールバック
        する。

      **修正**

      * Maccor リーダーが **`Cycle C`** — 累積サイクルカウンタ、
        真のサイクル番号 — を `Cycle from cycler` にマッピングする
        ようになった。以前は `Cycle P` — プログラム／ループカウンタで、
        多くの場合 `0` であり、プロシージャ内でリセットされうる —
        にマッピングしていたため、両方のカラムを含むファイルは
        サイクル番号として無意味なゼロを報告していた。
    </Accordion>

    <Accordion title="Protocol Simulator">
      **修正**

      * サブスケジュール（`SubSchedule` ステップ）を参照する Arbin
        スケジュールが、`Duplicate step name found: 'End Test'` で
        パースに失敗しなくなった。予約された `End Test` 終端は
        重複名チェックから除外される — 各サブスケジュールは自身の
        コピーを保持するため、任意のスコープからの
        `goto: "End Test"` はシミュレーション時にも解決する。
        真に名前が衝突するブロック（例: 2 つのスコープに現れる
        ユーザー定義の `Loop_X`）は、これまでどおりエラーになる。
    </Accordion>
  </AccordionGroup>
</Update>
