Skip to main content

Participant SDK for the EPIC — ELIOS Predictive Intelligence Challenge platform.

Project description

EPIC Participant SDK

epic-elios-client is the participant SDK for the EPIC — ELIOS Predictive Intelligence Challenge platform. It helps students and competitors authenticate, browse contests, collect live observations, submit predictions, and inspect results.

Installation

pip install epic-elios-client

Install with notebook extras for the Jupyter quickstart:

pip install "epic-elios-client[notebook]"

Contest format

Every EPIC contest uses a two-phase structure:

  1. Observation phase (start_dateend_of_observation): the simulation runs and you receive live sensor readings via WebSocket. Use this window to collect data and train your model.
  2. Evaluation phase (end_of_observationend_of_observation + prediction_horizon_seconds): the simulation continues but the stream closes. The ground truth for this window is hidden.
  3. Submission window (evaluation phase ends → end_date): submit a forecast covering every step of the evaluation window.

The number of steps to forecast is:

eval_steps = round(prediction_horizon_seconds × sampling_rate_hz)

Each sensor needs exactly eval_steps predicted values.

Minimal usage

import asyncio
from epic_client import EPICClient

async def main():
    client = EPICClient("https://epic.elioslab.net")
    client.login("student1", "correct-password")

    contests = client.list_contests(status="ACTIVE")
    contest_id = contests[0]["contest_id"]
    task = contests[0]["tasks"][0]           # {"eval_steps": 200, ...}
    eval_steps = task["configuration"]["eval_steps"]

    # Collect observations during the observation phase.
    observations = await client.collect(contest_id, duration_seconds=30)

    # Build a forecast once the submission window opens.
    # Predict eval_steps values for every sensor you want to score.
    sensors = list(observations[-1]["sensors"].keys())
    forecast = {sensor: [0.0] * eval_steps for sensor in sensors}

    submission = client.submit(
        contest_id=contest_id,
        task_id="forecasting",
        payload={"forecast": forecast},
    )
    print(submission)

asyncio.run(main())

API reference

EPICClient(server_url)

Method Description
login(username, password) Authenticate and store the bearer token.
list_contests(status=None) Return contests, optionally filtered by status ("ACTIVE", "CLOSED", …).
register(contest_id) Register for a contest (idempotent).
collect(contest_id, duration_seconds, csv_path=None) Stream observations for up to duration_seconds and return them as a list. Optionally save to CSV. Stops automatically when the observation phase ends.
stream(contest_id) Async generator that yields one observation dict per sensor tick. Stops at the end of the observation phase.
submit(contest_id, task_id, payload) Submit a forecast. payload must be {"forecast": {"sensor_id": [v1, v2, …], …}} with exactly eval_steps values per sensor.
get_scores(contest_id) Return all your submissions with their scores.
get_leaderboard(contest_id) Return the current leaderboard.

Observation dict

{
    "sequence_id": 42,
    "timestamp":   "2027-01-10T09:00:04.200Z",
    "sensors":     {"position": 0.134, "velocity": -0.021},
}

Quickstart notebook

Download and run the quickstart notebook for a step-by-step walkthrough.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

epic_elios_client-1.0.4.tar.gz (7.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

epic_elios_client-1.0.4-py3-none-any.whl (5.4 kB view details)

Uploaded Python 3

File details

Details for the file epic_elios_client-1.0.4.tar.gz.

File metadata

  • Download URL: epic_elios_client-1.0.4.tar.gz
  • Upload date:
  • Size: 7.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for epic_elios_client-1.0.4.tar.gz
Algorithm Hash digest
SHA256 80baf0ed0f3892e14d450960aa2827fa23ab8faf7f5107612e60ffafb89bb38b
MD5 0d6b4956d69651cf5e1ddf8c32ee2bd5
BLAKE2b-256 3e411f4ad2476b2664ebcc3791a524095fcebd43f0c511a7c2d5ed9b2841ef57

See more details on using hashes here.

Provenance

The following attestation bundles were made for epic_elios_client-1.0.4.tar.gz:

Publisher: publish-client.yml on Elios-Lab/epic

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file epic_elios_client-1.0.4-py3-none-any.whl.

File metadata

File hashes

Hashes for epic_elios_client-1.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 761f13787886b047f75665e049186831bc4d9d3fd17a3722a244586af912f403
MD5 2fe4ad89c68bcf4bc92b07d7d48b0914
BLAKE2b-256 be66ee3dfa65d97dc996d690211630a23d2833b44de73916cd35015a8d697a31

See more details on using hashes here.

Provenance

The following attestation bundles were made for epic_elios_client-1.0.4-py3-none-any.whl:

Publisher: publish-client.yml on Elios-Lab/epic

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page