Python-SDK
Das SDK ist eine dünne Schicht über der Release-Struktur: Es löst Versionen auf, prüft Prüfsummen und liefert Episoden und Frames. Alles, was es tut, geht auch mit pyarrow und einem Video-Reader.
Installation
Der Client wird über einen privaten Index verteilt. Die Zugangsdaten für den Index werden zusammen mit dem Datensatzzugang vergeben — installierbar ist das Paket also nur für Lizenznehmer.
pip install curatrix --index-url https://pkg.curatrix.de/simpleAuthentifizierung
Das SDK liest CURATRIX_API_KEY aus der Umgebung. Schlüssel sind auf die von Ihnen gehaltenen Datensätze, Versionen und Lizenzstufen beschränkt; ein Schlüssel erweitert diesen Umfang nie.
export CURATRIX_API_KEY="ck_live_..."Datensatz öffnen und iterieren
from curatrix import Dataset
# Pin the version. Omitting it resolves to the newest licensed release,
# which makes a training run non-reproducible.
ds = Dataset.open("electrical-assembly", version="1.3.0")
print(ds.schema_version, ds.episode_count, ds.accepted_hours)
for episode in ds.episodes(outcome="failure", environment="workshop"):
frames = episode.frames(stream="head", fps=10) # lazy, decoded on demand
recovery = [s for s in episode.subtasks if s.label == "recover"]
if recovery:
print(episode.id, len(frames), recovery[0].start_s)Vorgeschlagene Splits verwenden
train = ds.split("train")
evaluation = ds.split("eval")
assert set(train.contributors).isdisjoint(evaluation.contributors)Ohne das SDK
Nichts in einem Release setzt unseren Client voraus. Die Tabellen sind Parquet, das Video ist MP4.
import pyarrow.parquet as pq
episodes = pq.read_table("episodes/episodes.parquet").to_pandas()
spans = pq.read_table("episodes/annotations.parquet").to_pandas()
failures = episodes[episodes.outcome == "failure"]
print(spans[spans.episode_id.isin(failures.episode_id)]
.groupby("label").size().sort_values(ascending=False))