> ## 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.

# サイクラーデータの処理とアップロード

> 生のサイクラー出力を Ionworks 標準形式に変換し、Python SDK で時系列測定としてアップロードします。

生のサイクラー出力（Arbin、Maccor、Neware、Basytec、BioLogic など）を Ionworks 標準形式に変換し、測定としてアップロードします — すべて Python から行えます。

<Note>
  先にインストールと認証を行います: `pip install ionworks-api` を実行し、`IONWORKS_API_KEY`（および `IONWORKS_PROJECT_ID`）を設定します。[Python API クライアント](/ja/api-client) ページを参照してください。
</Note>

```python theme={null}
from ionworks import Ionworks
from ionworksdata import read

client = Ionworks()

# 1. 生ファイルを 2 つの標準化フレームに処理します:
#    - time_series: 記録された時間点ごとに 1 行（Time [s], Voltage [V],
#      Current [A], Step count, ...）
#    - steps: プロトコルステップごとに 1 行のサマリー
#      （ステップ/サイクル番号、容量、エネルギー、電圧の最小/最大, ...）
time_series, steps = read.time_series_and_steps("arbin_export.csv", reader="arbin")

# 2. セル階層を create-or-get します: 仕様 -> インスタンス。
cell_spec = client.cell_spec.create_or_get({"name": "LGM50"})
cell_instance = client.cell_instance.create_or_get(cell_spec.id, {"name": "SN-001"})

# 3. 時系列測定としてアップロードします（冪等・厳密バリデーション有効）。
measurement = client.cell_measurement.create_or_get(
    cell_instance.id,
    {
        "measurement": {"name": "cell_SN001_cycling"},
        "time_series": time_series,
        "steps": steps,
    },
    validate_strict=True,
)
print(measurement.id)
```

**ポイント**

* **`time_series` と `steps`。** `time_series` は生の信号トレースで、記録された時間点ごとに 1 行です。`steps` はコンパクトなステップ単位のサマリーで、プロトコルステップごとに 1 行、ステップ/サイクル番号と派生量（容量、エネルギー、電圧の極値）を含みます。これらは `read.time_series_and_steps` がパース時に計算します。多くの解析はこの steps を単位にグループ化・フィルタします。
* `ionworksdata.read` には主要なサイクラー用のリーダーがあります。`read.detect(path)` で自動選択も可能です。`read.time_series_and_steps` を推奨します — 両方のフレームを返し、処理パイプライン全体を 1 回の呼び出しで実行します。
* **電流の符号の規約:** Ionworks は**正の電流を放電**として扱います。サイクラーによって規約が異なるため、元データを確認し、必要ならアップロード前に符号を反転してください（`ionworksdata` の `set_positive_current_for_discharge` が利用できます）。
* `create_or_get` は冪等です — 再実行すると重複を作らず既存の spec/instance/measurement を返します。呼び出しが完了しただけでなく、オブジェクトが返ることが成功の証拠です。

## さらに詳しく

* [データの準備](/ja/data/preparing-data) と [サイクラーファイルの読み込み](/ja/data/reading)
* [測定のアップロード](/ja/data/uploading) と [生データ](/ja/data/raw-data)
* [標準データ形式](/ja/data/format)
