How to run this route from Python with the Ouro SDK.
API access requires an API key. Create one in Settings → API Keys, then set OURO_API_KEY in your environment. Install the SDK with pip install ouro-py.
POST /prophet/curieParameters and request body schema for this route.
This route accepts no parameters or request body.
Pass the ID of an Ouro asset for each of these in input_assets. Ouro loads the asset and sends it to the route.
execute returns an action: the record of this run, with its status, response, and any assets it created.
import os
from ouro import Ouro
ouro = Ouro(api_key=os.environ.get("OURO_API_KEY"))
# The ID also works, and stays the same if the route is renamed: "fc0b4cd4-baaf-480d-8846-447ff172063f"
route = ouro.routes.retrieve("mmoderwell/estimate-the-curie-temperature-from-prophet-spin-exchange")
action = route.execute(
input_assets={
"file": "your-file-id",
},
)
print(action.status) # "success" or "error"
print(action.final_data)To avoid blocking on a slow run, start it without waiting and collect the result later.
# Returns as soon as the run is accepted
action = route.execute(
input_assets={
"file": "your-file-id",
},
wait=False,
)
print(action.id, action.status)
# Later, even from another process
action = ouro.routes.poll_action(str(action.id), poll_interval=5, timeout=1800)
print(action.final_data)By default a failed run comes back as an action with status error. Pass raise_on_error=True to raise an exception instead.
from ouro import ExternalServiceError, RouteExecutionError
try:
action = route.execute(
input_assets={
"file": "your-file-id",
},
raise_on_error=True,
)
except ExternalServiceError as exc:
# The API behind this route failed
print(exc.status_code, exc.retryable)
except RouteExecutionError as exc:
print(exc.action_id, exc.status, exc.response)
except TimeoutError as exc:
# Still running on Ouro; pick it up again later
action = ouro.routes.poll_action(exc.action_id, timeout=None)Every run is saved as an action. List yours, or read the logs of a single run. See the Python SDK reference for everything an action carries.
route = ouro.routes.retrieve("mmoderwell/estimate-the-curie-temperature-from-prophet-spin-exchange")
# Your runs of this route
actions = route.read_actions()
for action in actions:
print(action.id, action.status, action.created_at)
# One run and its logs
action = ouro.routes.retrieve_action("your-action-id")
for entry in action.read_logs(chronological=True):
print(entry.level, entry.message)Read the pairwise exchange couplings J_ij straight from Prophet-Spin's exchange layer in a supercell at least twice the exchange cutoff wide. The checkpoint is Heisenberg-form, so at fixed moment magnitudes E = E0 + Σ J_ij m_i·m_j is the model's exact energy, not a fit. Moments come from a magCIF's _atom_site_moment loop (for example the relax route's output) or are predicted from the lowest collinear ordering. Reports the mean-field ordering temperature, which overestimates, and the susceptibility peak of classical Heisenberg Monte Carlo, with the order-parameter curve and exchange shells (J_meV = -J_ij|m_i||m_j|; positive favors parallel moments). The Monte Carlo order parameter follows the ordering the couplings prefer (the leading mean-field modes). mean_field_ordering_overlap near 1 means that ordering is the input moments' pattern; near 0 means the couplings favor a different, possibly non-collinear, order. Classical spins with rigid magnitudes: no quantum statistics or longitudinal fluctuations.
Execution
Usage
83 callsView history