Skip to content

Spillage Explorer

Visualize and compare spin-orbit coupling (SOC) spillage data from JARVIS-DFT for identifying topological insulators and semimetals. Returns per-k-point spillage values, k-point coordinates, max spillage, and topological classification (spillage > 0.5 = non-trivial). Data parsed from JARVIS XML.

Open App


Overview

Data Source

JARVIS-DFT — SOC spillage from JARVIS XML (<spillage_k>, <max_spillage>, <spillage_kpoints> tags).

Endpoints

POST /spillage/search — Search materials

curl -X POST "https://atomgpt.org/spillage/search" \
  -H "Authorization: Bearer sk-XYZ" \
  -H "Content-Type: application/json" \
  -H "accept: application/json" \
  -d '{"formula": "Si"}'

Standard search fields: formula, jid, elements, element_mode (any/all/exact), bandgap_min, bandgap_max, spacegroup. Max 500 results.

Note

Pre-filtered to materials with spillage != 'na'.


GET /spillage/data/{jid} — Fetch per-k-point spillage values and topological classification.

curl "https://atomgpt.org/spillage/data/JVASP-1002" \
  -H "Authorization: Bearer sk-XYZ" \
  -H "accept: application/json"

Response:

{
  "jid": "JVASP-1002",
  "formula": "Si",
  "bandgap": 0.611,
  "max_spillage": 0.32,
  "spillage_k": [0.12, 0.15, 0.32, 0.08, ...],
  "kpoints": [[0.0, 0.0, 0.0], [0.1, 0.0, 0.0], ...],
  "k_indices": [0, 1, 2, 3, ...],
  "n_kpoints": 50,
  "n_above_threshold": 0,
  "topological_classification": "Topologically trivial (spillage <= 0.5)"
}

Spillage > 0.5 indicates topologically non-trivial band inversion. n_above_threshold counts k-points with spillage > 0.5. K-points parsed from semicolon-separated kx;ky;kz format.


Python Examples

import requests

response = requests.post(
    "https://atomgpt.org/spillage/search",
    headers={
        "Authorization": "Bearer sk-XYZ",
        "accept": "application/json",
        "Content-Type": "application/json",
    },
    json={"formula": "Si"},
)
data = response.json()
print(f"Found {data['total']} entries")
for m in data["results"][:5]:
    print(f"  {m['jid']}: {m.get('formula', m.get('bulk_formula', ''))}")
import requests

response = requests.get(
    "https://atomgpt.org/spillage/data/JVASP-1002",
    headers={"Authorization": "Bearer sk-XYZ"},
)
data = response.json()
print(f"{data['formula']}: {data['topological_classification']}")
print(f"  Max spillage: {data['max_spillage']}")
print(f"  K-points above 0.5: {data['n_above_threshold']}/{data['n_kpoints']}")

AGAPI Agent

from agapi.agents import AGAPIAgent
import os

agent = AGAPIAgent(api_key=os.environ.get("AGAPI_KEY"))
response = agent.query_sync("Show spillage explorer for Silicon")
print(response)

References