Learn how to interact with this route using the Ouro SDK or REST API.
API access requires an API key. Create one in Settings → API Keys, then set OURO_API_KEY in your environment.
Parameters and request body schema for this route.
autonon_spincollinearCollinear spin treatment. auto (default): use collinear spin (ABACUS nspin=2) when the structure contains magnetic elements (Fe, Co, Ni, Mn, Cr, or rare earths), otherwise non-spin (nspin=1). non_spin: force closed-shell (nspin=1). collinear: force spin-polarized DFT with seeded moments (nspin=2). For magnetic materials, leave auto so geometry and properties share the magnetic ground state.
Range: 30 to 150
Plane wave cutoff energy in Ry
SCF convergence threshold in Ha
Range: 0.05 to 1
K-point spacing in 1/Å
Range: 20 to 500
Maximum number of SCF iterations
SZDZPTZDPLCAO basis size: SZ (fastest), DZP (balanced), TZDP (most accurate)
Range: 1 to 500
Maximum ionic / cell-relax steps. After the first SCF, ABACUS stops without moving atoms if force and stress are already below threshold. If the cap is hit, the latest geometry is still returned with converged=false.
Range: to 50
Cell convergence: maximum stress-tensor component in kbar. Volume and shape stop updating once all components are below this.
Range: to 1
Ionic convergence: maximum atomic force in eV/Å. ABACUS LCAO recommendation is 0.04.
PBEPBEsolLDASCANXC functional
Range: to 1
Energy range for smearing in Ry
fixedgaussgaussianmpmp2mvcoldfdOccupation and smearing method: fixed (non-conductors only), gauss/gaussian, mp (metals), mp2 (metals), mv/cold, fd (Fermi-Dirac)
Get route metadata including name, visibility, description, and endpoint details. You can retrieve by route ID or identifier.
import os
from ouro import Ouro
# Set OURO_API_KEY in your environment or replace os.environ.get("OURO_API_KEY")
ouro = Ouro(api_key=os.environ.get("OURO_API_KEY"))
# Option 1: Retrieve by route ID
route_id = "d180f520-fc88-48b7-9eca-3d123f5cf680"
route = ouro.routes.retrieve(route_id)
# Option 2: Retrieve by route identifier (username/route-name)
route_identifier = "mmoderwell/dft-structure-relaxation"
route = ouro.routes.retrieve(route_identifier)
print(route.name, route.visibility)
print(route.metadata)Execute the route endpoint with request body, query parameters, path parameters, or asset IDs.
# Retrieve the route
route = ouro.routes.retrieve("mmoderwell/dft-structure-relaxation")
# Execute the route
action = route.execute(
body={
'nspin': 'auto',
'ecutwfc': 50,
'scf_thr': 0.0001,
'kspacing': 0.3,
'scf_nmax': 120,
'basis_size': 'DZP',
'relax_nmax': 50,
'stress_thr': 0.5,
'force_thr_ev': 0.04,
'dft_functional': 'PBE',
'smearing_sigma': 0.05,
'smearing_method': 'gauss'
},
assets={
'file': 'your-file-id'
},
)
print(action.final_data)Get the request and response history for this route. Actions are especially useful for long-running routes where you can poll the status and retrieve the response when ready.
# Retrieve the route
route = ouro.routes.retrieve("mmoderwell/dft-structure-relaxation")
# Read all actions (request/response history) for this route
actions = route.read_actions()
print(actions)
# Actions are especially useful for long-running routes
# You can poll the status and retrieve the response when ready
for action in actions:
print(f"Action ID: {action['id']}")
print(f"Status: {action['status']}")
print(f"Response: {action.get('response_data')}")Learn how to interact with this route using the Ouro SDK or REST API.
API access requires an API key. Create one in Settings → API Keys, then set OURO_API_KEY in your environment.
Parameters and request body schema for this route.
autonon_spincollinearCollinear spin treatment. auto (default): use collinear spin (ABACUS nspin=2) when the structure contains magnetic elements (Fe, Co, Ni, Mn, Cr, or rare earths), otherwise non-spin (nspin=1). non_spin: force closed-shell (nspin=1). collinear: force spin-polarized DFT with seeded moments (nspin=2). For magnetic materials, leave auto so geometry and properties share the magnetic ground state.
Range: 30 to 150
Plane wave cutoff energy in Ry
SCF convergence threshold in Ha
Range: 0.05 to 1
K-point spacing in 1/Å
Range: 20 to 500
Maximum number of SCF iterations
SZDZPTZDPLCAO basis size: SZ (fastest), DZP (balanced), TZDP (most accurate)
Range: 1 to 500
Maximum ionic / cell-relax steps. After the first SCF, ABACUS stops without moving atoms if force and stress are already below threshold. If the cap is hit, the latest geometry is still returned with converged=false.
Range: to 50
Cell convergence: maximum stress-tensor component in kbar. Volume and shape stop updating once all components are below this.
Range: to 1
Ionic convergence: maximum atomic force in eV/Å. ABACUS LCAO recommendation is 0.04.
PBEPBEsolLDASCANXC functional
Range: to 1
Energy range for smearing in Ry
fixedgaussgaussianmpmp2mvcoldfdOccupation and smearing method: fixed (non-conductors only), gauss/gaussian, mp (metals), mp2 (metals), mv/cold, fd (Fermi-Dirac)
Get route metadata including name, visibility, description, and endpoint details. You can retrieve by route ID or identifier.
import os
from ouro import Ouro
# Set OURO_API_KEY in your environment or replace os.environ.get("OURO_API_KEY")
ouro = Ouro(api_key=os.environ.get("OURO_API_KEY"))
# Option 1: Retrieve by route ID
route_id = "d180f520-fc88-48b7-9eca-3d123f5cf680"
route = ouro.routes.retrieve(route_id)
# Option 2: Retrieve by route identifier (username/route-name)
route_identifier = "mmoderwell/dft-structure-relaxation"
route = ouro.routes.retrieve(route_identifier)
print(route.name, route.visibility)
print(route.metadata)Execute the route endpoint with request body, query parameters, path parameters, or asset IDs.
# Retrieve the route
route = ouro.routes.retrieve("mmoderwell/dft-structure-relaxation")
# Execute the route
action = route.execute(
body={
'nspin': 'auto',
'ecutwfc': 50,
'scf_thr': 0.0001,
'kspacing': 0.3,
'scf_nmax': 120,
'basis_size': 'DZP',
'relax_nmax': 50,
'stress_thr': 0.5,
'force_thr_ev': 0.04,
'dft_functional': 'PBE',
'smearing_sigma': 0.05,
'smearing_method': 'gauss'
},
assets={
'file': 'your-file-id'
},
)
print(action.final_data)Get the request and response history for this route. Actions are especially useful for long-running routes where you can poll the status and retrieve the response when ready.
# Retrieve the route
route = ouro.routes.retrieve("mmoderwell/dft-structure-relaxation")
# Read all actions (request/response history) for this route
actions = route.read_actions()
print(actions)
# Actions are especially useful for long-running routes
# You can poll the status and retrieve the response when ready
for action in actions:
print(f"Action ID: {action['id']}")
print(f"Status: {action['status']}")
print(f"Response: {action.get('response_data')}")Variable-cell DFT relaxation with ABACUS (ions + cell). Evaluates energy, forces, and stress after the first SCF and only takes ionic steps when thresholds are exceeded. Returns a relaxed CIF plus convergence diagnostics. Spin defaults to auto (collinear for magnetic elements) so the geometry matches the magnetic ground state used by MAE and magnetization density. Pass the relaxed CIF into downstream property routes.
Variable-cell DFT relaxation with ABACUS (ions + cell). Evaluates energy, forces, and stress after the first SCF and only takes ionic steps when thresholds are exceeded. Returns a relaxed CIF plus convergence diagnostics. Spin defaults to auto (collinear for magnetic elements) so the geometry matches the magnetic ground state used by MAE and magnetization density. Pass the relaxed CIF into downstream property routes.
Execution
Usage
12 callsView historyExecution
Usage
12 callsView history