{"manifests":[{"schema_version":"1","cluster":"della","root":"/scratch/gpfs/ROSENGROUP/common/rootstock","maintainer":{"name":"Will Engler","email":"willengler@uchicago.edu"},"rootstock_version":"0.5.0","python_version":"3.12.12","last_updated":"2026-03-16T16:13:59.427608+00:00","environments":{"chgnet_env":{"status":"ready","built_at":"2026-03-16T16:13:58.992562+00:00","source_hash":"sha256:ee3d3997682c2b5fd44e2e602a917080ad8e29d8e107990636b77af24ecbb871","source":"# /// script\n# requires-python = \">=3.10\"\n# dependencies = [\n#     \"chgnet>=0.3.0\",\n#     \"ase>=3.22\",\n#     \"torch>=2.0\",\n# ]\n# ///\n\"\"\"\nCHGNet environment for Rootstock.\n\nThis environment provides access to CHGNet, a pretrained universal neural\nnetwork potential for charge-informed atomistic modeling.\n\"\"\"\n\n\ndef setup(model: str | None = None, device: str = \"cuda\"):\n    \"\"\"\n    Load a CHGNet calculator.\n\n    Args:\n        model: Optional path to a fine-tuned model. If None, uses the\n               default pre-trained CHGNet model.\n        device: PyTorch device string (e.g., \"cuda\", \"cuda:0\", \"cpu\")\n\n    Returns:\n        ASE-compatible calculator\n    \"\"\"\n    from chgnet.model import CHGNetCalculator\n\n    if model:\n        return CHGNetCalculator(model_path=model, use_device=device)\n    return CHGNetCalculator(use_device=device)\n","python_requires":">=3.10","dependencies":{"ase":"3.27.0","chgnet":"0.4.2","rootstock":"0.5.1","torch":"2.10.0"},"checkpoints":[]},"mace_env":{"status":"ready","built_at":"2026-03-16T16:13:59.115604+00:00","source_hash":"sha256:8f49eb565411b7d3f015383c4e5d52ca9770d4295d9cb2c51c10cfa8ab173e75","source":"# /// script\n# requires-python = \">=3.10\"\n# dependencies = [\n#     \"mace-torch>=0.3.0\",\n#     \"ase>=3.22\",\n#     \"torch>=2.4.0,<2.10\",\n# ]\n# ///\n\"\"\"\nMACE environment for Rootstock.\n\nThis environment provides access to MACE foundation models for\nmachine learning interatomic potentials.\n\nModels:\n    - \"small\", \"medium\", \"large\": Pre-trained MACE-MP-0 models\n    - Path to a .pt file: Custom fine-tuned model\n\"\"\"\n\n\ndef setup(model: str, device: str = \"cuda\"):\n    \"\"\"\n    Load a MACE calculator.\n\n    Args:\n        model: Model identifier. Can be:\n            - \"small\", \"medium\", \"large\" for MACE-MP-0 foundation models\n            - Path to a .pt file for custom models\n        device: PyTorch device string (e.g., \"cuda\", \"cuda:0\", \"cpu\")\n\n    Returns:\n        ASE-compatible calculator\n    \"\"\"\n    from mace.calculators import mace_mp\n\n    return mace_mp(model=model, device=device, default_dtype=\"float32\")\n","python_requires":">=3.10","dependencies":{"ase":"3.27.0","mace-torch":"0.3.15","rootstock":"0.5.1","torch":"2.9.1"},"checkpoints":[]},"tensornet_env":{"status":"ready","built_at":"2026-03-16T16:13:59.289290+00:00","source_hash":"sha256:df3e142f3a3199673fce02ff8683e1c6fd7343d9ca2cbc9655c6640a9cecef0f","source":"# /// script\n# requires-python = \">=3.12\"\n# dependencies = [\n#     \"torch>=2.4.0\",\n#     \"ase>=3.22\",\n#     \"matgl\",\n#     \"nvalchemi-toolkit-ops\",\n#     \"torch-geometric\",\n#     \"torch-scatter\",\n#     \"torch-sparse\",\n#     \"torch-cluster\",\n#     \"torch-spline-conv\",\n# ]\n#\n# [tool.uv]\n# find-links = [\"https://data.pyg.org/whl/torch-2.4.0+cu121.html\"]\n# ///\n\"\"\"\nTensorNet environment for Rootstock.\n\nThis environment provides access to TensorNet models via the MatGL library\nfrom the Materials Virtual Lab.\n\nModels:\n    - \"TensorNet-MatPES-PBE-v2025.1-PES\": MatPES PBE functional (default)\n    - Other MatGL models as available\n\"\"\"\n\n\ndef setup(model: str = \"TensorNet-MatPES-PBE-v2025.1-PES\", device: str = \"cuda\"):\n    \"\"\"\n    Load a TensorNet/MatGL calculator.\n\n    Args:\n        model: Model identifier (e.g., \"TensorNet-MatPES-PBE-v2025.1-PES\").\n               Passed directly to matgl.load_model().\n        device: PyTorch device string (currently MatGL handles device internally)\n\n    Returns:\n        ASE-compatible calculator\n    \"\"\"\n    import torch\n    torch.set_default_device(device)\n\n    import matgl\n    from matgl.ext.ase import PESCalculator\n\n    pot = matgl.load_model(model)\n    return PESCalculator(potential=pot)\n","python_requires":">=3.12","dependencies":{"ase":"3.27.0","matgl":"2.0.6","nvalchemi-toolkit-ops":"0.2.0","rootstock":"0.5.1","torch":"2.8.0","torch-cluster":"1.6.3+pt24cu121","torch-geometric":"2.7.0","torch-scatter":"2.1.2+pt24cu121","torch-sparse":"0.6.18+pt24cu121","torch-spline-conv":"1.2.2+pt24cu121"},"checkpoints":[]},"uma_env":{"status":"ready","built_at":"2026-03-16T16:13:59.427557+00:00","source_hash":"sha256:b8446f98c4c8ad7ff12f9bf39e5658bd45a989662cfa644bf48859bf7fd821c3","source":"# /// script\n# requires-python = \">=3.10,<3.11\"\n# dependencies = [\n#     \"torch>=2.4.0\",\n#     \"fairchem-core>=2.0.0\",\n#     \"ase>=3.22\",\n#     \"torch-geometric\",\n# ]\n#\n# [tool.uv]\n# find-links = [\"https://data.pyg.org/whl/torch-2.4.0+cu121.html\"]\n# ///\n\"\"\"\nUMA (Universal Atomistic Model) environment for Rootstock.\n\nThis environment provides access to Meta's UMA foundation model\nvia the FAIRChem library.\n\nModels:\n    - \"uma-s-1p1\": UMA small model (default)\n    - Other UMA variants as released by FAIRChem\n\"\"\"\n\n\ndef setup(model: str = \"uma-s-1p1\", device: str = \"cuda\"):\n    \"\"\"\n    Load a UMA calculator.\n\n    Args:\n        model: Model identifier (e.g., \"uma-s-1p1\"). Passed directly to\n               pretrained_mlip.get_predict_unit().\n        device: PyTorch device string (e.g., \"cuda\", \"cuda:0\", \"cpu\")\n\n    Returns:\n        ASE-compatible calculator\n    \"\"\"\n    from fairchem.core import FAIRChemCalculator, pretrained_mlip\n\n    predictor = pretrained_mlip.get_predict_unit(model, device=device)\n    return FAIRChemCalculator(predictor, task_name=\"omat\")\n","python_requires":">=3.10,<3.11","dependencies":{"ase":"3.27.0","fairchem-core":"2.14.0","rootstock":"0.5.1","torch":"2.8.0","torch-geometric":"2.7.0"},"checkpoints":[]}}},{"schema_version":3,"cluster":"perlmutter","root":"/global/cfs/cdirs/m4845/rootstock","maintainer":{"name":"Will Engler","email":"willengler@uchicago.edu"},"rootstock_version":"0.8.1.post1.dev0+2514d41","python_version":"3.11","last_updated":"2026-05-05T20:46:45.298598+00:00","environments":{"esen":{"status":"ready","built_at":"2026-05-05T20:06:17.144793+00:00","source_hash":"sha256:b6f257bd833b54c060d4f3ec703d972408f1cd92fd1374048299aa6b7fabe80f","source":"# /// script\n# requires-python = \">=3.10,<3.11\"\n# dependencies = [\n#     \"torch>=2.4.0\",\n#     \"fairchem-core>=2.0.0\",\n#     \"ase>=3.22\",\n#     \"torch-geometric\",\n# ]\n#\n# [tool.uv]\n# find-links = [\"https://data.pyg.org/whl/torch-2.4.0+cu121.html\"]\n# ///\n\"\"\"eSEN env — hosts FAIRChem eSEN single-task checkpoints.\n\nOMol checkpoints expect `charge` and `spin` in `atoms.info`.\n\"\"\"\n\nCHECKPOINTS = {\n    \"esen-md-direct-all-omol\":     \"esen-md-direct-all-omol\",\n    \"esen-sm-conserving-all-omol\": \"esen-sm-conserving-all-omol\",\n    \"esen-sm-direct-all-omol\":     \"esen-sm-direct-all-omol\",\n}\n\n\ndef setup(checkpoint: str, device: str = \"cuda\"):\n    from fairchem.core import FAIRChemCalculator, pretrained_mlip\n\n    predictor = pretrained_mlip.get_predict_unit(CHECKPOINTS[checkpoint], device=device)\n    return FAIRChemCalculator(predictor)\n\n","python_requires":">=3.10,<3.11","dependencies":{"ase":"3.28.0","fairchem-core":"2.14.0","rootstock":"0.8.1.post1.dev0+2514d41","torch":"2.8.0","torch-geometric":"2.7.0"},"checkpoints":{"esen-md-direct-all-omol":{"fetched_at":"2026-05-05T20:20:42.059140+00:00","verified_at":"2026-05-05T20:32:53.527969+00:00","verified_device":"cuda","last_error":null},"esen-sm-conserving-all-omol":{"fetched_at":"2026-05-05T20:21:07.811155+00:00","verified_at":"2026-05-05T20:33:58.655328+00:00","verified_device":"cuda","last_error":null},"esen-sm-direct-all-omol":{"fetched_at":"2026-05-05T20:21:20.271134+00:00","verified_at":"2026-05-05T20:34:55.214410+00:00","verified_device":"cuda","last_error":null}}},"esen_env":{"status":"ready","built_at":"2026-05-05T20:06:18.455308+00:00","source_hash":"sha256:79d02f167b4ddcdff145ad96f8ad3593e8df805f43c0d84ca6d7879a3d058489","source":"# /// script\n# requires-python = \">=3.10,<3.11\"\n# dependencies = [\n#     \"torch>=2.4.0\",\n#     \"fairchem-core>=2.0.0\",\n#     \"ase>=3.22\",\n#     \"torch-geometric\",\n# ]\n#\n# [tool.uv]\n# find-links = [\"https://data.pyg.org/whl/torch-2.4.0+cu121.html\"]\n# ///\n\"\"\"\neSEN environment for Rootstock.\n\nProvides access to FAIRChem's eSEN single-task checkpoints. Unlike UMA,\neSEN is single-task, so task_name is not passed to FAIRChemCalculator.\n\nAvailable checkpoints (from fairchem-core's pretrained_mlip registry):\n    OMol25:  esen-md-direct-all-omol (default), esen-sm-conserving-all-omol,\n             esen-sm-direct-all-omol\n    OC25:    esen-sm-conserving-all-oc25, esen-md-direct-all-oc25\n    ODAC25:  esen-sm-filtered-odac25, esen-sm-full-odac25\n\nOMol checkpoints expect `charge` and `spin` in `atoms.info`.\n\"\"\"\n\n\ndef setup(model: str = \"esen-md-direct-all-omol\", device: str = \"cuda\"):\n    \"\"\"\n    Load an eSEN calculator.\n\n    Args:\n        model: Checkpoint name from FAIRChem's pretrained_mlip registry\n               (e.g., \"esen-md-direct-all-omol\", \"esen-sm-conserving-all-oc25\").\n        device: PyTorch device string (e.g., \"cuda\", \"cuda:0\", \"cpu\").\n\n    Returns:\n        ASE-compatible FAIRChemCalculator.\n    \"\"\"\n    from fairchem.core import FAIRChemCalculator, pretrained_mlip\n\n    predictor = pretrained_mlip.get_predict_unit(model, device=device)\n    return FAIRChemCalculator(predictor)\n","python_requires":">=3.10,<3.11","dependencies":{"ase":"3.28.0","fairchem-core":"2.14.0","rootstock":"0.7.3","torch":"2.8.0","torch-geometric":"2.7.0"},"checkpoints":{}},"mace_env":{"status":"ready","built_at":"2026-05-05T20:06:19.083702+00:00","source_hash":"sha256:8f49eb565411b7d3f015383c4e5d52ca9770d4295d9cb2c51c10cfa8ab173e75","source":"# /// script\n# requires-python = \">=3.10\"\n# dependencies = [\n#     \"mace-torch>=0.3.0\",\n#     \"ase>=3.22\",\n#     \"torch>=2.4.0,<2.10\",\n# ]\n# ///\n\"\"\"\nMACE environment for Rootstock.\n\nThis environment provides access to MACE foundation models for\nmachine learning interatomic potentials.\n\nModels:\n    - \"small\", \"medium\", \"large\": Pre-trained MACE-MP-0 models\n    - Path to a .pt file: Custom fine-tuned model\n\"\"\"\n\n\ndef setup(model: str, device: str = \"cuda\"):\n    \"\"\"\n    Load a MACE calculator.\n\n    Args:\n        model: Model identifier. Can be:\n            - \"small\", \"medium\", \"large\" for MACE-MP-0 foundation models\n            - Path to a .pt file for custom models\n        device: PyTorch device string (e.g., \"cuda\", \"cuda:0\", \"cpu\")\n\n    Returns:\n        ASE-compatible calculator\n    \"\"\"\n    from mace.calculators import mace_mp\n\n    return mace_mp(model=model, device=device, default_dtype=\"float32\")\n","python_requires":">=3.10","dependencies":{"ase":"3.28.0","mace-torch":"0.3.15","rootstock":"0.7.3","torch":"2.9.1"},"checkpoints":{}},"orb_env":{"status":"ready","built_at":"2026-05-05T20:06:20.210537+00:00","source_hash":"sha256:41b51eb9c4f17aa30b968045681f81e828dc8ce1311f4b538732387cdfbbf78a","source":"# /// script\n# requires-python = \">=3.10\"\n# dependencies = [\n#     \"orb-models>=0.4.0\",\n#     \"ase>=3.22\",\n#     \"torch>=2.0\",\n# ]\n# ///\n\"\"\"\nOrb environment for Rootstock.\n\nProvides access to Orbital Materials' Orb universal potentials for periodic\nand molecular systems.\n\nModels:\n    - \"orb-v2\": Orb v2 universal potential (default)\n    - \"orb-v3-conservative-inf-omat\": Orb v3, conservative forces, infinity\n    - \"orb-v3-direct-inf-omat\": Orb v3, direct forces, infinity\n    See orb_models.pretrained for the full checkpoint list.\n\"\"\"\n\n\ndef setup(model: str = \"orb-v2\", device: str = \"cuda\"):\n    \"\"\"\n    Load an Orb calculator.\n\n    Args:\n        model: Checkpoint name passed to orb_models.pretrained.orb_pretrained().\n        device: PyTorch device string (e.g., \"cuda\", \"cpu\").\n\n    Returns:\n        ASE-compatible ORBCalculator.\n    \"\"\"\n    import torch\n    from orb_models.forcefield import pretrained\n    from orb_models.forcefield.calculator import ORBCalculator\n\n    # orb-models exposes one function per checkpoint, e.g. pretrained.orb_v2().\n    # Map \"orb-v2\" -> \"orb_v2\", \"orb-v3-conservative-inf-omat\" -> \"orb_v3_conservative_inf_omat\".\n    fn_name = model.replace(\"-\", \"_\")\n    load_fn = getattr(pretrained, fn_name)\n    orbff = load_fn(device=torch.device(device))\n    return ORBCalculator(orbff, device=torch.device(device))\n","python_requires":">=3.10","dependencies":{"ase":"3.28.0","orb-models":"0.5.5","rootstock":"0.8.0","torch":"2.11.0"},"checkpoints":{}},"tensornet_env":{"status":"ready","built_at":"2026-05-05T20:06:21.437511+00:00","source_hash":"sha256:b871cfcdb8aa0089cd053e85c8aff12bbf7d590afdb4df224d094eabe19d1973","source":"# /// script\n# requires-python = \">=3.11\"\n# dependencies = [\n#     \"torch>=2.4.0\",\n#     \"ase>=3.22\",\n#     \"huggingface_hub\",\n#     \"nvalchemi-toolkit-ops\",\n#     \"matgl\",\n#     \"pymatgen\",\n#     \"monty\",\n#     \"ruamel.yaml\",\n#     \"scipy\",\n#     \"torch-geometric\",\n#     \"torch-scatter\",\n#     \"torch-sparse\",\n#     \"torch-cluster\",\n#     \"torch-spline-conv\",\n# ]\n#\n# [tool.uv]\n# find-links = [\"https://data.pyg.org/whl/torch-2.4.0+cu121.html\"]\n#\n# [tool.uv.sources]\n# matgl = { git = \"https://github.com/materialsvirtuallab/matgl.git\" }\n# ///\n\"\"\"\nTensorNet environment for Rootstock.\n\nProvides access to TensorNet models via the MatGL library. Models are hosted\non HuggingFace under the materialyze org and loaded by passing the HF model\nID directly to matgl.load_model().\n\nModels:\n    - \"materialyze/TensorNet-PES-MatPES-PBE-2025.2\": PBE functional (default)\n    - \"materialyze/TensorNet-PES-MatPES-r2SCAN-2025.2\": r2SCAN functional\n    - \"materialyze/TensorNetDGL-PES-MatPES-PBE-2025.2\": DGL-backend variant\n\"\"\"\n\n\ndef setup(model: str = \"materialyze/TensorNet-PES-MatPES-PBE-2025.2\", device: str = \"cuda\"):\n    \"\"\"\n    Load a TensorNet/MatGL calculator.\n\n    Args:\n        model: HuggingFace model ID (e.g., \"materialyze/TensorNet-PES-MatPES-PBE-2025.2\").\n               Passed directly to matgl.load_model().\n        device: PyTorch device string (currently MatGL handles device internally)\n\n    Returns:\n        ASE-compatible calculator\n    \"\"\"\n    import torch\n    torch.set_default_device(device)\n\n    # matgl 1.0.0 imports ExpCellFilter from ase.constraints, but it moved to\n    # ase.filters in ASE 3.23. Patch it in before matgl imports.\n    import ase.constraints\n    if not hasattr(ase.constraints, \"ExpCellFilter\"):\n        from ase.filters import ExpCellFilter\n        ase.constraints.ExpCellFilter = ExpCellFilter\n\n    # DGL 2.x imports torchdata.datapipes at init, but torchdata>=0.7 removed\n    # datapipes. Stub the minimum needed so DGL imports cleanly. matgl only\n    # uses DGL for graph construction, not graphbolt.\n    import sys, types\n\n    # DGL 2.x graphbolt imports torchdata submodules removed in torchdata>=0.7.\n    # Stub the entire graphbolt subpackage before `import dgl` runs; DGL's\n    # __init__ will use our empty stub and skip the real graphbolt initialisation.\n    # matgl only uses DGL for graph construction — graphbolt is never called.\n    for _name in [\n        \"dgl.graphbolt\",\n        \"dgl.graphbolt.base\",\n        \"dgl.graphbolt.dataloader\",\n        \"dgl.graphbolt.feature_fetcher\",\n        \"dgl.graphbolt.minibatch_transformer\",\n    ]:\n        if _name not in sys.modules:\n            sys.modules[_name] = types.ModuleType(_name)\n\n    from huggingface_hub import snapshot_download\n\n    import matgl\n    from matgl.ext.ase import PESCalculator\n\n    # matgl 1.0.0 load_model only checks the GitHub manifest; HF models must\n    # be downloaded explicitly and passed as a local path.\n    local_path = snapshot_download(repo_id=model)\n    pot = matgl.load_model(local_path)\n    return PESCalculator(potential=pot)\n","python_requires":">=3.11","dependencies":{"ase":"3.28.0","huggingface-hub":"1.13.0","matgl":"2.2.1","monty":"2026.2.18","nvalchemi-toolkit-ops":"0.3.1","pymatgen":"2026.3.23","rootstock":"0.8.0","ruamel-yaml":"0.19.1","scipy":"1.17.1","torch":"2.11.0","torch-cluster":"1.6.3+pt24cu121","torch-geometric":"2.7.0","torch-scatter":"2.1.2+pt24cu121","torch-sparse":"0.6.18+pt24cu121","torch-spline-conv":"1.2.2+pt24cu121"},"checkpoints":{}},"uma_env":{"status":"ready","built_at":"2026-05-05T20:06:22.471819+00:00","source_hash":"sha256:5b590ecd27f397d6903840fc90e6efbbf644ef1d8cd553a0ece7250cf1fcb57d","source":"# /// script\n# requires-python = \">=3.10,<3.11\"\n# dependencies = [\n#     \"torch>=2.4.0\",\n#     \"fairchem-core>=2.0.0\",\n#     \"ase>=3.22\",\n#     \"torch-geometric\",\n# ]\n#\n# [tool.uv]\n# find-links = [\"https://data.pyg.org/whl/torch-2.4.0+cu121.html\"]\n# ///\n\"\"\"\nUMA (Universal Atomistic Model) environment for Rootstock.\n\nThis environment provides access to Meta's UMA foundation model\nvia the FAIRChem library.\n\nModels:\n    - \"uma-s-1p1\": UMA small model (default)\n    - Other UMA variants as released by FAIRChem\n\"\"\"\n\n\ndef setup(model: str = \"uma-s-1p1\", device: str = \"cuda\", task: str = \"omat\"):\n    \"\"\"\n    Load a UMA calculator.\n\n    Args:\n        model: Model identifier (e.g., \"uma-s-1p1\"). Passed directly to\n               pretrained_mlip.get_predict_unit().\n        device: PyTorch device string (e.g., \"cuda\", \"cuda:0\", \"cpu\")\n        task: Task head for the FAIRChem calculator. Common values: \"omat\"\n              (materials, the default), \"omol\" (molecules).\n\n    Returns:\n        ASE-compatible calculator\n    \"\"\"\n    from fairchem.core import FAIRChemCalculator, pretrained_mlip\n\n    predictor = pretrained_mlip.get_predict_unit(model, device=device)\n    return FAIRChemCalculator(predictor, task_name=task)\n","python_requires":">=3.10,<3.11","dependencies":{"ase":"3.28.0","fairchem-core":"2.14.0","rootstock":"0.7.3","torch":"2.8.0","torch-geometric":"2.7.0"},"checkpoints":{}},"mace":{"status":"ready","built_at":"2026-05-05T20:09:14.316764+00:00","source_hash":"sha256:b1ff54016790f6c9d3a03a59cbb37fc2529f6da3d7e5d320c0d8f468d3c67fe4","source":"# /// script\n# requires-python = \">=3.10\"\n# dependencies = [\n#     \"mace-torch>=0.3.0\",\n#     \"ase>=3.22\",\n#     \"torch>=2.4.0,<2.10\",\n# ]\n# ///\n\"\"\"MACE env — hosts MACE-MP-0 and MACE-OFF23 checkpoints.\n\nBoth ship in the same `mace-torch` package, so they share an environment.\nThe `off:` prefix on the upstream string in CHECKPOINTS routes to mace_off()\ninstead of mace_mp().\n\"\"\"\n\nCHECKPOINTS = {\n    \"mace-mp-0-small\":   \"small\",\n    \"mace-mp-0-medium\":  \"medium\",\n    \"mace-mp-0-large\":   \"large\",\n    \"mace-off23-small\":  \"off:small\",\n    \"mace-off23-medium\": \"off:medium\",\n    \"mace-off23-large\":  \"off:large\",\n}\n\n\ndef setup(checkpoint: str, device: str = \"cuda\"):\n    arg = CHECKPOINTS[checkpoint]\n    if arg.startswith(\"off:\"):\n        from mace.calculators import mace_off\n        return mace_off(model=arg[4:], device=device, default_dtype=\"float32\")\n    from mace.calculators import mace_mp\n    return mace_mp(model=arg, device=device, default_dtype=\"float32\")\n\n","python_requires":">=3.10","dependencies":{"ase":"3.28.0","mace-torch":"0.3.15","rootstock":"0.8.1.post1.dev0+2514d41","torch":"2.9.1"},"checkpoints":{"mace-mp-0-small":{"fetched_at":"2026-05-05T20:18:39.848738+00:00","verified_at":"2026-05-05T20:27:44.833679+00:00","verified_device":"cuda","last_error":null},"mace-mp-0-medium":{"fetched_at":"2026-05-05T20:19:14.080969+00:00","verified_at":"2026-05-05T20:28:31.058859+00:00","verified_device":"cuda","last_error":null},"mace-mp-0-large":{"fetched_at":"2026-05-05T20:19:22.191774+00:00","verified_at":"2026-05-05T20:29:07.888687+00:00","verified_device":"cuda","last_error":null},"mace-off23-small":{"fetched_at":"2026-05-05T20:19:30.436114+00:00","verified_at":"2026-05-05T20:29:44.721558+00:00","verified_device":"cuda","last_error":null},"mace-off23-medium":{"fetched_at":"2026-05-05T20:19:38.490688+00:00","verified_at":"2026-05-05T20:30:25.978099+00:00","verified_device":"cuda","last_error":null},"mace-off23-large":{"fetched_at":"2026-05-05T20:19:47.093712+00:00","verified_at":"2026-05-05T20:31:04.563941+00:00","verified_device":"cuda","last_error":null}}},"orb":{"status":"ready","built_at":"2026-05-05T20:11:23.239791+00:00","source_hash":"sha256:ef3e77f5a8ce3a20f74d17346b154d72e222a3992c514dd3992aad2e672db4df","source":"# /// script\n# requires-python = \">=3.10\"\n# dependencies = [\n#     \"orb-models>=0.4.0\",\n#     \"ase>=3.22\",\n#     \"torch>=2.0\",\n# ]\n# ///\n\"\"\"Orb env — hosts Orbital Materials' Orb universal potentials.\"\"\"\n\nCHECKPOINTS = {\n    \"orb-v2\": \"orb-v2\",\n}\n\n\ndef setup(checkpoint: str, device: str = \"cuda\"):\n    import torch\n    from orb_models.forcefield import pretrained\n    from orb_models.forcefield.calculator import ORBCalculator\n\n    # orb-models exposes one function per checkpoint, e.g. pretrained.orb_v2().\n    fn_name = CHECKPOINTS[checkpoint].replace(\"-\", \"_\")\n    load_fn = getattr(pretrained, fn_name)\n    orbff = load_fn(device=torch.device(device))\n    return ORBCalculator(orbff, device=torch.device(device))\n\n","python_requires":">=3.10","dependencies":{"ase":"3.28.0","orb-models":"0.5.5","rootstock":"0.8.1.post1.dev0+2514d41","torch":"2.11.0"},"checkpoints":{"orb-v2":{"fetched_at":"2026-05-05T20:22:12.576486+00:00","verified_at":"2026-05-05T20:46:38.977473+00:00","verified_device":"cuda","last_error":null}}},"tensornet":{"status":"ready","built_at":"2026-05-05T20:12:46.418309+00:00","source_hash":"sha256:acaab6bae12da9268c64289fc0d4d519cbe9b25c72883f950959b3c304068e69","source":"# /// script\n# requires-python = \">=3.11\"\n# dependencies = [\n#     \"torch>=2.4.0\",\n#     \"ase>=3.22\",\n#     \"huggingface_hub\",\n#     \"matgl\",\n#     \"nvalchemi-toolkit-ops\",\n#     \"pymatgen\",\n#     \"monty\",\n#     \"ruamel.yaml\",\n#     \"scipy\",\n#     \"torch-geometric\",\n#     \"torch-scatter\",\n#     \"torch-sparse\",\n#     \"torch-cluster\",\n#     \"torch-spline-conv\",\n# ]\n#\n# [tool.uv]\n# find-links = [\"https://data.pyg.org/whl/torch-2.4.0+cu121.html\"]\n#\n# [tool.uv.sources]\n# matgl = { git = \"https://github.com/materialsvirtuallab/matgl.git\" }\n# ///\n\"\"\"TensorNet env — hosts MatPES TensorNet checkpoints via MatGL.\"\"\"\n\nCHECKPOINTS = {\n    \"tensornet-matpes-pbe-2025-2\": \"materialyze/TensorNet-PES-MatPES-PBE-2025.2\",\n}\n\n\ndef setup(checkpoint: str, device: str = \"cuda\"):\n    import torch\n    torch.set_default_device(device)\n\n    # matgl 1.0.0 imports ExpCellFilter from ase.constraints, but it moved to\n    # ase.filters in ASE 3.23. Patch it in before matgl imports.\n    import ase.constraints\n    if not hasattr(ase.constraints, \"ExpCellFilter\"):\n        from ase.filters import ExpCellFilter\n        ase.constraints.ExpCellFilter = ExpCellFilter\n\n    # DGL 2.x graphbolt imports torchdata submodules removed in torchdata>=0.7.\n    # Stub the entire graphbolt subpackage before `import dgl` runs; DGL's\n    # __init__ will use our empty stub and skip the real graphbolt initialisation.\n    # matgl only uses DGL for graph construction — graphbolt is never called.\n    import sys, types\n    for _name in [\n        \"dgl.graphbolt\",\n        \"dgl.graphbolt.base\",\n        \"dgl.graphbolt.dataloader\",\n        \"dgl.graphbolt.feature_fetcher\",\n        \"dgl.graphbolt.minibatch_transformer\",\n    ]:\n        if _name not in sys.modules:\n            sys.modules[_name] = types.ModuleType(_name)\n\n    from huggingface_hub import snapshot_download\n\n    import matgl\n    from matgl.ext.ase import PESCalculator\n\n    # matgl 1.0.0 load_model only checks the GitHub manifest; HF models must\n    # be downloaded explicitly and passed as a local path.\n    local_path = snapshot_download(repo_id=CHECKPOINTS[checkpoint])\n    pot = matgl.load_model(local_path)\n    return PESCalculator(potential=pot)\n\n","python_requires":">=3.11","dependencies":{"ase":"3.28.0","huggingface-hub":"1.13.0","matgl":"3.0.1","monty":"2026.2.18","nvalchemi-toolkit-ops":"0.3.1","pymatgen":"2026.5.4","rootstock":"0.8.1.post1.dev0+2514d41","ruamel-yaml":"0.19.1","scipy":"1.17.1","torch":"2.11.0","torch-cluster":"1.6.3+pt24cu121","torch-geometric":"2.7.0","torch-scatter":"2.1.2+pt24cu121","torch-sparse":"0.6.18+pt24cu121","torch-spline-conv":"1.2.2+pt24cu121"},"checkpoints":{"tensornet-matpes-pbe-2025-2":{"fetched_at":"2026-05-05T20:23:26.015215+00:00","verified_at":"2026-05-05T20:39:57.902943+00:00","verified_device":"cuda","last_error":null}}},"uma":{"status":"ready","built_at":"2026-05-05T20:13:31.060795+00:00","source_hash":"sha256:22eb8afbb0d3309ad6ae3edeb02f18dfe574ab59ccae1326a8f99a9790957e74","source":"# /// script\n# requires-python = \">=3.10,<3.11\"\n# dependencies = [\n#     \"torch>=2.4.0\",\n#     \"fairchem-core>=2.0.0\",\n#     \"ase>=3.22\",\n#     \"torch-geometric\",\n# ]\n#\n# [tool.uv]\n# find-links = [\"https://data.pyg.org/whl/torch-2.4.0+cu121.html\"]\n# ///\n\"\"\"UMA env — hosts Meta's UMA foundation model via FAIRChem.\"\"\"\n\nCHECKPOINTS = {\n    \"uma-s-1p1\": \"uma-s-1p1\",\n}\n\n\ndef setup(checkpoint: str, device: str = \"cuda\", task: str = \"omat\"):\n    from fairchem.core import FAIRChemCalculator, pretrained_mlip\n\n    predictor = pretrained_mlip.get_predict_unit(CHECKPOINTS[checkpoint], device=device)\n    return FAIRChemCalculator(predictor, task_name=task)\n\n","python_requires":">=3.10,<3.11","dependencies":{"ase":"3.28.0","fairchem-core":"2.14.0","rootstock":"0.8.1.post1.dev0+2514d41","torch":"2.8.0","torch-geometric":"2.7.0"},"checkpoints":{"uma-s-1p1":{"fetched_at":"2026-05-05T20:24:18.359789+00:00","verified_at":"2026-05-05T20:41:47.163942+00:00","verified_device":"cuda","last_error":null}}}}},{"schema_version":3,"cluster":"sophia","root":"/lus/eagle/projects/Garden-Ai/rootstock","maintainer":{"name":"Hayden Holbrook","email":"hholbrook@uchicago.edu"},"rootstock_version":"0.9.0","python_version":"3.10.19","last_updated":"2026-05-07T00:07:01.515674+00:00","environments":{"ani_env":{"status":"ready","built_at":"2026-05-06T17:09:30.982005+00:00","source_hash":"sha256:4519d6f76936f874039d5a402b9a8470d2432736a839d84163af67ce1a20d3e7","source":"# /// script\n# requires-python = \">=3.10\"\n# dependencies = [\n#     \"torchani>=2.2\",\n#     \"ase>=3.22\",\n#     \"torch>=2.0\",\n# ]\n# ///\n\"\"\"\nANI-2x environment for Rootstock.\n\nANI-2x is a neural network potential for organic molecules containing\nH, C, N, O, F, S, Cl. It is not a universal potential — do not use it\nfor inorganic or periodic systems.\n\nModels:\n    - \"ANI2x\": ANI-2x ensemble (default, 8 networks)\n    - \"ANI1ccx\": ANI-1ccx, trained on CCSD(T)/CBS data (H, C, N, O only)\n    - \"ANI1x\": ANI-1x (H, C, N, O only)\n\"\"\"\n\nCHECKPOINTS = {\n    \"ani-2x\": \"ANI2x\",\n    \"ani-1ccx\": \"ANI1ccx\",\n    \"ani-1x\": \"ANI1x\",\n}\n\n\ndef setup(checkpoint: str, device: str = \"cuda\"):\n    \"\"\"\n    Load an ANI calculator.\n\n    Args:\n        checkpoint: Canonical checkpoint id, must be a key of CHECKPOINTS.\n        device: PyTorch device string (e.g., \"cuda\", \"cpu\").\n\n    Returns:\n        ASE-compatible calculator.\n    \"\"\"\n    import torchani\n\n    model_map = {\n        \"ANI2x\": torchani.models.ANI2x,\n        \"ANI1ccx\": torchani.models.ANI1ccx,\n        \"ANI1x\": torchani.models.ANI1x,\n    }\n    model = CHECKPOINTS[checkpoint]\n\n    return model_map[model](periodic_table_index=True).to(device).ase()\n","python_requires":">=3.10","dependencies":{"ase":"3.28.0","rootstock":"0.9.0","torch":"2.8.0","torchani":"2.7.9"},"checkpoints":{"ani-2x":{"fetched_at":"2026-05-06T20:37:55.159921+00:00","verified_at":"2026-05-06T23:12:19.049854+00:00","verified_device":"cuda","last_error":null},"ani-1ccx":{"fetched_at":"2026-05-06T20:38:00.847740+00:00","verified_at":"2026-05-06T23:12:31.269784+00:00","verified_device":"cuda","last_error":null},"ani-1x":{"fetched_at":"2026-05-06T20:38:06.095697+00:00","verified_at":"2026-05-06T23:12:37.980900+00:00","verified_device":"cuda","last_error":null}}},"chgnet_env":{"status":"ready","built_at":"2026-05-06T17:09:31.146735+00:00","source_hash":"sha256:ee3d3997682c2b5fd44e2e602a917080ad8e29d8e107990636b77af24ecbb871","source":"# /// script\n# requires-python = \">=3.10\"\n# dependencies = [\n#     \"chgnet>=0.3.0\",\n#     \"ase>=3.22\",\n#     \"torch>=2.0\",\n# ]\n# ///\n\"\"\"\nCHGNet environment for Rootstock.\n\nThis environment provides access to CHGNet, a pretrained universal neural\nnetwork potential for charge-informed atomistic modeling.\n\"\"\"\n\n\ndef setup(model: str | None = None, device: str = \"cuda\"):\n    \"\"\"\n    Load a CHGNet calculator.\n\n    Args:\n        model: Optional path to a fine-tuned model. If None, uses the\n               default pre-trained CHGNet model.\n        device: PyTorch device string (e.g., \"cuda\", \"cuda:0\", \"cpu\")\n\n    Returns:\n        ASE-compatible calculator\n    \"\"\"\n    from chgnet.model import CHGNetCalculator\n\n    if model:\n        return CHGNetCalculator(model_path=model, use_device=device)\n    return CHGNetCalculator(use_device=device)\n","python_requires":">=3.10","dependencies":{"ase":"3.28.0","chgnet":"0.4.2","rootstock":"0.7.3","torch":"2.11.0"},"checkpoints":{}},"esen_env":{"status":"ready","built_at":"2026-05-06T17:09:31.348294+00:00","source_hash":"sha256:79d02f167b4ddcdff145ad96f8ad3593e8df805f43c0d84ca6d7879a3d058489","source":"# /// script\n# requires-python = \">=3.10,<3.11\"\n# dependencies = [\n#     \"torch>=2.4.0\",\n#     \"fairchem-core>=2.0.0\",\n#     \"ase>=3.22\",\n#     \"torch-geometric\",\n# ]\n#\n# [tool.uv]\n# find-links = [\"https://data.pyg.org/whl/torch-2.4.0+cu121.html\"]\n# ///\n\"\"\"\neSEN environment for Rootstock.\n\nProvides access to FAIRChem's eSEN single-task checkpoints. Unlike UMA,\neSEN is single-task, so task_name is not passed to FAIRChemCalculator.\n\nAvailable checkpoints (from fairchem-core's pretrained_mlip registry):\n    OMol25:  esen-md-direct-all-omol (default), esen-sm-conserving-all-omol,\n             esen-sm-direct-all-omol\n    OC25:    esen-sm-conserving-all-oc25, esen-md-direct-all-oc25\n    ODAC25:  esen-sm-filtered-odac25, esen-sm-full-odac25\n\nOMol checkpoints expect `charge` and `spin` in `atoms.info`.\n\"\"\"\n\n\ndef setup(model: str = \"esen-md-direct-all-omol\", device: str = \"cuda\"):\n    \"\"\"\n    Load an eSEN calculator.\n\n    Args:\n        model: Checkpoint name from FAIRChem's pretrained_mlip registry\n               (e.g., \"esen-md-direct-all-omol\", \"esen-sm-conserving-all-oc25\").\n        device: PyTorch device string (e.g., \"cuda\", \"cuda:0\", \"cpu\").\n\n    Returns:\n        ASE-compatible FAIRChemCalculator.\n    \"\"\"\n    from fairchem.core import FAIRChemCalculator, pretrained_mlip\n\n    predictor = pretrained_mlip.get_predict_unit(model, device=device)\n    return FAIRChemCalculator(predictor)\n","python_requires":">=3.10,<3.11","dependencies":{"ase":"3.28.0","fairchem-core":"2.14.0","rootstock":"0.7.3","torch":"2.8.0","torch-geometric":"2.7.0"},"checkpoints":{}},"mace_env":{"status":"ready","built_at":"2026-05-06T17:09:31.451426+00:00","source_hash":"sha256:8f49eb565411b7d3f015383c4e5d52ca9770d4295d9cb2c51c10cfa8ab173e75","source":"# /// script\n# requires-python = \">=3.10\"\n# dependencies = [\n#     \"mace-torch>=0.3.0\",\n#     \"ase>=3.22\",\n#     \"torch>=2.4.0,<2.10\",\n# ]\n# ///\n\"\"\"\nMACE environment for Rootstock.\n\nThis environment provides access to MACE foundation models for\nmachine learning interatomic potentials.\n\nModels:\n    - \"small\", \"medium\", \"large\": Pre-trained MACE-MP-0 models\n    - Path to a .pt file: Custom fine-tuned model\n\"\"\"\n\n\ndef setup(model: str, device: str = \"cuda\"):\n    \"\"\"\n    Load a MACE calculator.\n\n    Args:\n        model: Model identifier. Can be:\n            - \"small\", \"medium\", \"large\" for MACE-MP-0 foundation models\n            - Path to a .pt file for custom models\n        device: PyTorch device string (e.g., \"cuda\", \"cuda:0\", \"cpu\")\n\n    Returns:\n        ASE-compatible calculator\n    \"\"\"\n    from mace.calculators import mace_mp\n\n    return mace_mp(model=model, device=device, default_dtype=\"float32\")\n","python_requires":">=3.10","dependencies":{"ase":"3.28.0","mace-torch":"0.3.15","rootstock":"0.7.3","torch":"2.9.1"},"checkpoints":{}},"mace_off23_env":{"status":"ready","built_at":"2026-05-06T17:09:31.562088+00:00","source_hash":"sha256:37d632e7045d40c8b9b7461e6c8e024c6c9f47699152adbf311ad05b58f11240","source":"# /// script\n# requires-python = \">=3.10\"\n# dependencies = [\n#     \"mace-torch>=0.3.0\",\n#     \"ase>=3.22\",\n#     \"torch>=2.4.0,<2.10\",\n# ]\n# ///\n\"\"\"\nMACE-OFF23 environment for Rootstock.\n\nMACE-OFF23 is a transferable force field for organic molecules, distinct from\nMACE-MP-0 (which targets inorganic materials). Use this env for molecular\ndynamics and geometry optimisation of drug-like and organic systems.\n\nModels:\n    - \"small\":  ~4M params, fastest\n    - \"medium\": ~10M params, balanced (default)\n    - \"large\":  ~28M params, most accurate\n\"\"\"\n\nCHECKPOINTS = {\n    \"mace-off23-small\": \"small\",\n    \"mace-off23-medium\": \"medium\",\n    \"mace-off23-large\": \"large\",\n}\n\n\ndef setup(checkpoint: str, device: str = \"cuda\"):\n    \"\"\"\n    Load a MACE-OFF23 calculator.\n\n    Args:\n        checkpoint: Canonical checkpoint id, must be a key of CHECKPOINTS.\n        device: PyTorch device string (e.g., \"cuda\", \"cpu\").\n\n    Returns:\n        ASE-compatible calculator.\n    \"\"\"\n    from mace.calculators import mace_off\n\n    return mace_off(model=CHECKPOINTS[checkpoint], device=device, default_dtype=\"float32\")\n","python_requires":">=3.10","dependencies":{"ase":"3.28.0","mace-torch":"0.3.15","rootstock":"0.9.0","torch":"2.9.1"},"checkpoints":{}},"mattersim_env":{"status":"ready","built_at":"2026-05-06T17:09:31.757546+00:00","source_hash":"sha256:9ae11a5002dfb4d43dbaf525377b9eca947d1fc3907aa5b964dee25e837bc026","source":"# /// script\n# requires-python = \">=3.10\"\n# dependencies = [\n#     \"mattersim>=1.1.0\",\n#     \"ase>=3.22\",\n#     \"torch>=2.0\",\n# ]\n# ///\n\"\"\"\nMatterSim environment for Rootstock.\n\nProvides access to Microsoft's MatterSim universal potential. MatterSim-v1\ncovers ~100 elements and supports periodic and non-periodic systems.\n\nModels:\n    - \"MatterSim-v1.0.0-5M\": 5M parameter model (faster, default)\n    - \"MatterSim-v1.0.0-1M\": 1M parameter model (smallest)\n\"\"\"\n\nCHECKPOINTS = {\n    \"mattersim-v1-0-0-5m\": \"MatterSim-v1.0.0-5M\",\n    \"mattersim-v1-0-0-1m\": \"MatterSim-v1.0.0-1M\",\n}\n\n\ndef setup(checkpoint: str, device: str = \"cuda\"):\n    \"\"\"\n    Load a MatterSim calculator.\n\n    Args:\n        checkpoint: Canonical checkpoint id, must be a key of CHECKPOINTS.\n        device: PyTorch device string (e.g., \"cuda\", \"cpu\").\n\n    Returns:\n        ASE-compatible calculator.\n    \"\"\"\n    from mattersim.forcefield import MatterSimCalculator\n\n    return MatterSimCalculator(load_path=CHECKPOINTS[checkpoint], device=device)\n","python_requires":">=3.10","dependencies":{"ase":"3.28.0","mattersim":"1.2.3","rootstock":"0.9.0","torch":"2.11.0"},"checkpoints":{"mattersim-v1-0-0-5m":{"fetched_at":"2026-05-06T20:42:31.806659+00:00","verified_at":null,"verified_device":null,"last_error":"verify: RuntimeError: Worker process died with code 1.\nstdout: b'\\x1b[32m2026-05-06 23:16:30.452\\x1b[0m | \\x1b[1mINFO    \\x1b[0m | \\x1b[36mmattersim.forcefield.potential\\x1b[0m:\\x1b[36mfrom_checkpoint\\x1b[0m:\\x1b[36m887\\x1b[0m - \\x1b[1mLoading the pre-trained mattersim-v1.0.0-5M.pth model\\x1b[0m\\n'\nstderr: b'/lus/eagle/projects/Garden-Ai/rootstock/envs/mattersim_env/lib/python3.10/site-packages/torch/__config__.py:9: UserWarning: CUDA initialization: The NVIDIA driver on your system is too old (found version 12040). Please update your GPU driver by downloading and installing a new version from the URL: http://www.nvidia.com/Download/index.aspx Alternatively, go to: https://pytorch.org to install a PyTorch version that has been compiled with your version of the CUDA driver. (Triggered internally at /pytorch/c10/cuda/CUDAFunctions.cpp:119.)\\n  return torch._C._show_config()\\nTraceback (most recent call last):\\n  File \"/var/tmp/pbs.153128.sophia-pbs-01.lab.alcf.anl.gov/rootstock_wrapper_1b5gbp9j.py\", line 10, in <module>\\n    run_worker(\\n  File \"/lus/eagle/projects/Garden-Ai/rootstock/envs/mattersim_env/lib/python3.10/site-packages/rootstock/worker.py\", line 273, in run_worker\\n    calculator = setup_fn(checkpoint, device, **setup_kwargs)\\n  File \"/lus/eagle/projects/Garden-Ai/rootstock/envs/mattersim_env/env_source.py\", line 39, in setup\\n    return MatterSimCalculator(load_path=CHECKPOINTS[checkpoint], device=device)\\n  File \"/lus/eagle/projects/Garden-Ai/rootstock/envs/mattersim_env/lib/python3.10/site-packages/mattersim/forcefield/potential.py\", line 1161, in __init__\\n    self.potential = Potential.from_checkpoint(device=device, **kwargs)\\n  File \"/lus/eagle/projects/Garden-Ai/rootstock/envs/mattersim_env/lib/python3.10/site-packages/mattersim/forcefield/potential.py\", line 892, in from_checkpoint\\n    checkpoint = torch.load(load_path, map_location=device)\\n  File \"/lus/eagle/projects/Garden-Ai/rootstock/envs/mattersim_env/lib/python3.10/site-packages/torch/serialization.py\", line 1570, in load\\n    return _load(\\n  File \"/lus/eagle/projects/Garden-Ai/rootstock/envs/mattersim_env/lib/python3.10/site-packages/torch/serialization.py\", line 2190, in _load\\n    result = unpickler.load()\\n  File \"/lus/eagle/projects/Garden-Ai/rootstock/envs/mattersim_env/lib/python3.10/site-packages/torch/_weights_only_unpickler.py\", line 541, in load\\n    self.append(self.persistent_load(pid))\\n  File \"/lus/eagle/projects/Garden-Ai/rootstock/envs/mattersim_env/lib/python3.10/site-packages/torch/serialization.py\", line 2154, in persistent_load\\n    typed_storage = load_tensor(\\n  File \"/lus/eagle/projects/Garden-Ai/rootstock/envs/mattersim_env/lib/python3.10/site-packages/torch/serialization.py\", line 2116, in load_tensor\\n    wrap_storage = restore_location(storage, location)\\n  File \"/lus/eagle/projects/Garden-Ai/rootstock/envs/mattersim_env/lib/python3.10/site-packages/torch/serialization.py\", line 1915, in restore_location\\n    return default_restore_location(storage, map_location)\\n  File \"/lus/eagle/projects/Garden-Ai/rootstock/envs/mattersim_env/lib/python3.10/site-packages/torch/serialization.py\", line 734, in default_restore_location\\n    result = fn(storage, location)\\n  File \"/lus/eagle/projects/Garden-Ai/rootstock/envs/mattersim_env/lib/python3.10/site-packages/torch/serialization.py\", line 667, in _deserialize\\n    device = _validate_device(location, backend_name)\\n  File \"/lus/eagle/projects/Garden-Ai/rootstock/envs/mattersim_env/lib/python3.10/site-packages/torch/serialization.py\", line 634, in _validate_device\\n    raise RuntimeError(\\nRuntimeError: Attempting to deserialize object on a CUDA device but torch.cuda.is_available() is False. If you are running on a CPU-only machine, please use torch.load with map_location=torch.device(\\'cpu\\') to map your storages to the CPU.\\n'"},"mattersim-v1-0-0-1m":{"fetched_at":"2026-05-06T20:42:40.850140+00:00","verified_at":null,"verified_device":null,"last_error":"verify: RuntimeError: Worker process died with code 1.\nstdout: b'\\x1b[32m2026-05-06 23:16:56.251\\x1b[0m | \\x1b[1mINFO    \\x1b[0m | \\x1b[36mmattersim.forcefield.potential\\x1b[0m:\\x1b[36mfrom_checkpoint\\x1b[0m:\\x1b[36m873\\x1b[0m - \\x1b[1mLoading the pre-trained mattersim-v1.0.0-1M.pth model\\x1b[0m\\n'\nstderr: b'/lus/eagle/projects/Garden-Ai/rootstock/envs/mattersim_env/lib/python3.10/site-packages/torch/__config__.py:9: UserWarning: CUDA initialization: The NVIDIA driver on your system is too old (found version 12040). Please update your GPU driver by downloading and installing a new version from the URL: http://www.nvidia.com/Download/index.aspx Alternatively, go to: https://pytorch.org to install a PyTorch version that has been compiled with your version of the CUDA driver. (Triggered internally at /pytorch/c10/cuda/CUDAFunctions.cpp:119.)\\n  return torch._C._show_config()\\nTraceback (most recent call last):\\n  File \"/var/tmp/pbs.153128.sophia-pbs-01.lab.alcf.anl.gov/rootstock_wrapper_1n_87sh1.py\", line 10, in <module>\\n    run_worker(\\n  File \"/lus/eagle/projects/Garden-Ai/rootstock/envs/mattersim_env/lib/python3.10/site-packages/rootstock/worker.py\", line 273, in run_worker\\n    calculator = setup_fn(checkpoint, device, **setup_kwargs)\\n  File \"/lus/eagle/projects/Garden-Ai/rootstock/envs/mattersim_env/env_source.py\", line 39, in setup\\n    return MatterSimCalculator(load_path=CHECKPOINTS[checkpoint], device=device)\\n  File \"/lus/eagle/projects/Garden-Ai/rootstock/envs/mattersim_env/lib/python3.10/site-packages/mattersim/forcefield/potential.py\", line 1161, in __init__\\n    self.potential = Potential.from_checkpoint(device=device, **kwargs)\\n  File \"/lus/eagle/projects/Garden-Ai/rootstock/envs/mattersim_env/lib/python3.10/site-packages/mattersim/forcefield/potential.py\", line 892, in from_checkpoint\\n    checkpoint = torch.load(load_path, map_location=device)\\n  File \"/lus/eagle/projects/Garden-Ai/rootstock/envs/mattersim_env/lib/python3.10/site-packages/torch/serialization.py\", line 1570, in load\\n    return _load(\\n  File \"/lus/eagle/projects/Garden-Ai/rootstock/envs/mattersim_env/lib/python3.10/site-packages/torch/serialization.py\", line 2190, in _load\\n    result = unpickler.load()\\n  File \"/lus/eagle/projects/Garden-Ai/rootstock/envs/mattersim_env/lib/python3.10/site-packages/torch/_weights_only_unpickler.py\", line 541, in load\\n    self.append(self.persistent_load(pid))\\n  File \"/lus/eagle/projects/Garden-Ai/rootstock/envs/mattersim_env/lib/python3.10/site-packages/torch/serialization.py\", line 2154, in persistent_load\\n    typed_storage = load_tensor(\\n  File \"/lus/eagle/projects/Garden-Ai/rootstock/envs/mattersim_env/lib/python3.10/site-packages/torch/serialization.py\", line 2116, in load_tensor\\n    wrap_storage = restore_location(storage, location)\\n  File \"/lus/eagle/projects/Garden-Ai/rootstock/envs/mattersim_env/lib/python3.10/site-packages/torch/serialization.py\", line 1915, in restore_location\\n    return default_restore_location(storage, map_location)\\n  File \"/lus/eagle/projects/Garden-Ai/rootstock/envs/mattersim_env/lib/python3.10/site-packages/torch/serialization.py\", line 734, in default_restore_location\\n    result = fn(storage, location)\\n  File \"/lus/eagle/projects/Garden-Ai/rootstock/envs/mattersim_env/lib/python3.10/site-packages/torch/serialization.py\", line 667, in _deserialize\\n    device = _validate_device(location, backend_name)\\n  File \"/lus/eagle/projects/Garden-Ai/rootstock/envs/mattersim_env/lib/python3.10/site-packages/torch/serialization.py\", line 634, in _validate_device\\n    raise RuntimeError(\\nRuntimeError: Attempting to deserialize object on a CUDA device but torch.cuda.is_available() is False. If you are running on a CPU-only machine, please use torch.load with map_location=torch.device(\\'cpu\\') to map your storages to the CPU.\\n'"}}},"nequip_env":{"status":"ready","built_at":"2026-05-06T17:09:31.882679+00:00","source_hash":"sha256:ef09e630a88045a5226e3c1b4eef548831b002cfc06692e5109a3820d223b9de","source":"# /// script\n# requires-python = \">=3.10\"\n# dependencies = [\n#     \"nequip>=0.6.0\",\n#     \"ase>=3.22\",\n#     \"torch>=2.0\",\n#     \"torch-geometric\",\n# ]\n#\n# [tool.uv]\n# find-links = [\"https://data.pyg.org/whl/torch-2.4.0+cu121.html\"]\n# ///\n\"\"\"\nNequIP environment for Rootstock.\n\nNequIP (Neural Equivariant Interatomic Potentials) is an E(3)-equivariant\nGNN potential. Models must be trained and deployed via `nequip-deploy`;\nthis env loads a deployed .pth model file.\n\nUsage: pass a path to a deployed NequIP model as `model`.\n\nNote: NequIP is system-specific (not universal). The checkpoint must match\nthe element set of your system.\n\"\"\"\n\nCHECKPOINTS = {\n    \"nequip-deployed-model\": \"deployed_nequip.pth\",\n}\n\n\ndef setup(checkpoint: str, device: str = \"cuda\"):\n    \"\"\"\n    Load a NequIP calculator from a deployed model file.\n\n    Args:\n        checkpoint: Canonical checkpoint id, must be a key of CHECKPOINTS.\n        device: PyTorch device string (e.g., \"cuda\", \"cpu\").\n\n    Returns:\n        ASE-compatible NequIPCalculator.\n    \"\"\"\n    from inspect import signature\n\n    try:\n        from nequip.integrations.ase import NequIPCalculator\n    except ImportError:\n        from nequip.ase import NequIPCalculator\n\n    if hasattr(NequIPCalculator, \"from_deployed_model\"):\n        load_model = NequIPCalculator.from_deployed_model\n    elif hasattr(NequIPCalculator, \"from_compiled_model\"):\n        load_model = NequIPCalculator.from_compiled_model\n    else:\n        raise AttributeError(\n            \"NequIPCalculator has neither from_deployed_model nor from_compiled_model\"\n        )\n\n    params = signature(load_model).parameters\n    kwargs = {\"device\": device} if \"device\" in params else {}\n    model = CHECKPOINTS[checkpoint]\n    for path_arg in (\"model_path\", \"file_name\", \"path\"):\n        if path_arg in params:\n            return load_model(**{path_arg: model}, **kwargs)\n    return load_model(model, **kwargs)\n","python_requires":">=3.10","dependencies":{"ase":"3.28.0","nequip":"0.17.1","rootstock":"0.9.0","torch":"2.11.0","torch-geometric":"2.7.0"},"checkpoints":{}},"orb_env":{"status":"ready","built_at":"2026-05-06T17:09:31.993043+00:00","source_hash":"sha256:c98c9c2fa8ac2237ff156c7d05e021a79370dbedfb8b08da69a988af39828082","source":"# /// script\n# requires-python = \">=3.10\"\n# dependencies = [\n#     \"orb-models>=0.4.0\",\n#     \"ase>=3.22\",\n#     \"torch>=2.0\",\n# ]\n# ///\n\"\"\"\nOrb environment for Rootstock.\n\nProvides access to Orbital Materials' Orb universal potentials for periodic\nand molecular systems.\n\nModels:\n    - \"orb-v2\": Orb v2 universal potential (default)\n    - \"orb-v3-conservative-inf-omat\": Orb v3, conservative forces, infinity\n    - \"orb-v3-direct-inf-omat\": Orb v3, direct forces, infinity\n    See orb_models.pretrained for the full checkpoint list.\n\"\"\"\n\nCHECKPOINTS = {\n    \"orb-v2\": \"orb-v2\",\n    \"orb-v3-conservative-inf-omat\": \"orb-v3-conservative-inf-omat\",\n    \"orb-v3-direct-inf-omat\": \"orb-v3-direct-inf-omat\",\n}\n\n\ndef setup(checkpoint: str, device: str = \"cuda\"):\n    \"\"\"\n    Load an Orb calculator.\n\n    Args:\n        checkpoint: Canonical checkpoint id, must be a key of CHECKPOINTS.\n        device: PyTorch device string (e.g., \"cuda\", \"cpu\").\n\n    Returns:\n        ASE-compatible ORBCalculator.\n    \"\"\"\n    import torch\n    from orb_models.forcefield import pretrained\n    from orb_models.forcefield.calculator import ORBCalculator\n\n    # orb-models exposes one function per checkpoint, e.g. pretrained.orb_v2().\n    # Map \"orb-v2\" -> \"orb_v2\", \"orb-v3-conservative-inf-omat\" -> \"orb_v3_conservative_inf_omat\".\n    fn_name = CHECKPOINTS[checkpoint].replace(\"-\", \"_\")\n    load_fn = getattr(pretrained, fn_name)\n    orbff = load_fn(device=torch.device(device))\n    return ORBCalculator(orbff, device=torch.device(device))\n","python_requires":">=3.10","dependencies":{"ase":"3.28.0","orb-models":"0.5.5","rootstock":"0.9.0","torch":"2.11.0"},"checkpoints":{"orb-v3-conservative-inf-omat":{"fetched_at":"2026-05-06T20:43:42.465812+00:00","verified_at":null,"verified_device":null,"last_error":"verify: RuntimeError: Worker process died with code 1.\nstdout: b''\nstderr: b'/lus/eagle/projects/Garden-Ai/rootstock/envs/orb_env/lib/python3.10/site-packages/google/api_core/_python_version_support.py:273: FutureWarning: You are using a Python version (3.10.19) which Google will stop supporting in new releases of google.api_core once it reaches its end of life (2026-10-04). Please upgrade to the latest Python version, or at least Python 3.11, to continue receiving updates for google.api_core past that date.\\n  warnings.warn(message, FutureWarning)\\nTraceback (most recent call last):\\n  File \"/var/tmp/pbs.153128.sophia-pbs-01.lab.alcf.anl.gov/rootstock_wrapper_2ctfa6t1.py\", line 10, in <module>\\n    run_worker(\\n  File \"/lus/eagle/projects/Garden-Ai/rootstock/envs/orb_env/lib/python3.10/site-packages/rootstock/worker.py\", line 273, in run_worker\\n    calculator = setup_fn(checkpoint, device, **setup_kwargs)\\n  File \"/lus/eagle/projects/Garden-Ai/rootstock/envs/orb_env/env_source.py\", line 48, in setup\\n    orbff = load_fn(device=torch.device(device))\\n  File \"/lus/eagle/projects/Garden-Ai/rootstock/envs/orb_env/lib/python3.10/site-packages/orb_models/forcefield/pretrained.py\", line 435, in orb_v3_conservative_inf_omat\\n    model = orb_v3_conservative_architecture(device=device, system_config=system_config)\\n  File \"/lus/eagle/projects/Garden-Ai/rootstock/envs/orb_env/lib/python3.10/site-packages/orb_models/forcefield/pretrained.py\", line 238, in orb_v3_conservative_architecture\\n    model.cuda(device)\\n  File \"/lus/eagle/projects/Garden-Ai/rootstock/envs/orb_env/lib/python3.10/site-packages/torch/nn/modules/module.py\", line 1097, in cuda\\n    return self._apply(lambda t: t.cuda(device))\\n  File \"/lus/eagle/projects/Garden-Ai/rootstock/envs/orb_env/lib/python3.10/site-packages/torch/nn/modules/module.py\", line 934, in _apply\\n    module._apply(fn)\\n  File \"/lus/eagle/projects/Garden-Ai/rootstock/envs/orb_env/lib/python3.10/site-packages/torch/nn/modules/module.py\", line 934, in _apply\\n    module._apply(fn)\\n  File \"/lus/eagle/projects/Garden-Ai/rootstock/envs/orb_env/lib/python3.10/site-packages/torch/nn/modules/module.py\", line 1035, in _apply\\n    self._buffers[key] = fn(buf)\\n  File \"/lus/eagle/projects/Garden-Ai/rootstock/envs/orb_env/lib/python3.10/site-packages/torch/nn/modules/module.py\", line 1097, in <lambda>\\n    return self._apply(lambda t: t.cuda(device))\\n  File \"/lus/eagle/projects/Garden-Ai/rootstock/envs/orb_env/lib/python3.10/site-packages/torch/cuda/__init__.py\", line 478, in _lazy_init\\n    torch._C._cuda_init()\\nRuntimeError: The NVIDIA driver on your system is too old (found version 12040). Please update your GPU driver by downloading and installing a new version from the URL: http://www.nvidia.com/Download/index.aspx Alternatively, go to: https://pytorch.org to install a PyTorch version that has been compiled with your version of the CUDA driver.\\n'"},"orb-v3-direct-inf-omat":{"fetched_at":"2026-05-06T20:43:53.057729+00:00","verified_at":null,"verified_device":null,"last_error":"verify: RuntimeError: Worker process died with code 1.\nstdout: b''\nstderr: b'/lus/eagle/projects/Garden-Ai/rootstock/envs/orb_env/lib/python3.10/site-packages/google/api_core/_python_version_support.py:273: FutureWarning: You are using a Python version (3.10.19) which Google will stop supporting in new releases of google.api_core once it reaches its end of life (2026-10-04). Please upgrade to the latest Python version, or at least Python 3.11, to continue receiving updates for google.api_core past that date.\\n  warnings.warn(message, FutureWarning)\\nTraceback (most recent call last):\\n  File \"/var/tmp/pbs.153128.sophia-pbs-01.lab.alcf.anl.gov/rootstock_wrapper_t3kj5qci.py\", line 10, in <module>\\n    run_worker(\\n  File \"/lus/eagle/projects/Garden-Ai/rootstock/envs/orb_env/lib/python3.10/site-packages/rootstock/worker.py\", line 273, in run_worker\\n    calculator = setup_fn(checkpoint, device, **setup_kwargs)\\n  File \"/lus/eagle/projects/Garden-Ai/rootstock/envs/orb_env/env_source.py\", line 48, in setup\\n    orbff = load_fn(device=torch.device(device))\\n  File \"/lus/eagle/projects/Garden-Ai/rootstock/envs/orb_env/lib/python3.10/site-packages/orb_models/forcefield/pretrained.py\", line 473, in orb_v3_direct_inf_omat\\n    model = orb_v3_direct_architecture(device=device, system_config=system_config)\\n  File \"/lus/eagle/projects/Garden-Ai/rootstock/envs/orb_env/lib/python3.10/site-packages/orb_models/forcefield/pretrained.py\", line 329, in orb_v3_direct_architecture\\n    model.cuda(device)\\n  File \"/lus/eagle/projects/Garden-Ai/rootstock/envs/orb_env/lib/python3.10/site-packages/torch/nn/modules/module.py\", line 1097, in cuda\\n    return self._apply(lambda t: t.cuda(device))\\n  File \"/lus/eagle/projects/Garden-Ai/rootstock/envs/orb_env/lib/python3.10/site-packages/torch/nn/modules/module.py\", line 934, in _apply\\n    module._apply(fn)\\n  File \"/lus/eagle/projects/Garden-Ai/rootstock/envs/orb_env/lib/python3.10/site-packages/torch/nn/modules/module.py\", line 934, in _apply\\n    module._apply(fn)\\n  File \"/lus/eagle/projects/Garden-Ai/rootstock/envs/orb_env/lib/python3.10/site-packages/torch/nn/modules/module.py\", line 934, in _apply\\n    module._apply(fn)\\n  [Previous line repeated 1 more time]\\n  File \"/lus/eagle/projects/Garden-Ai/rootstock/envs/orb_env/lib/python3.10/site-packages/torch/nn/modules/module.py\", line 1035, in _apply\\n    self._buffers[key] = fn(buf)\\n  File \"/lus/eagle/projects/Garden-Ai/rootstock/envs/orb_env/lib/python3.10/site-packages/torch/nn/modules/module.py\", line 1097, in <lambda>\\n    return self._apply(lambda t: t.cuda(device))\\n  File \"/lus/eagle/projects/Garden-Ai/rootstock/envs/orb_env/lib/python3.10/site-packages/torch/cuda/__init__.py\", line 478, in _lazy_init\\n    torch._C._cuda_init()\\nRuntimeError: The NVIDIA driver on your system is too old (found version 12040). Please update your GPU driver by downloading and installing a new version from the URL: http://www.nvidia.com/Download/index.aspx Alternatively, go to: https://pytorch.org to install a PyTorch version that has been compiled with your version of the CUDA driver.\\n'"}}},"painn_env":{"status":"ready","built_at":"2026-05-06T17:09:32.216714+00:00","source_hash":"sha256:aecf4c9f6d922d54590cc5f9417dbf3479fb6154576fa7e8f029e0cf67e31149","source":"# /// script\n# requires-python = \">=3.10,<3.11\"\n# dependencies = [\n#     \"torch>=2.4.0\",\n#     \"fairchem-core>=1.0.0,<2.0.0\",\n#     \"ase>=3.22\",\n#     \"torch-geometric\",\n#     \"torch-scatter\",\n#     \"torch-sparse\",\n#     \"torch-cluster\",\n# ]\n#\n# [tool.uv]\n# find-links = [\"https://data.pyg.org/whl/torch-2.4.0+cu121.html\"]\n# ///\n\"\"\"\nPaiNN environment for Rootstock.\n\nUses fairchem-core 1.x to access legacy OC20 PaiNN checkpoints via\nOCPCalculator. These checkpoints are optimized for catalysis systems\n(slabs + adsorbates).\n\nModels:\n    - \"PaiNN-S2EF-OC20-All\": default\n\"\"\"\n\nCHECKPOINTS = {\n    \"painn-s2ef-oc20-all\": \"PaiNN-S2EF-OC20-All\",\n}\n\n\ndef setup(checkpoint: str, device: str = \"cuda\"):\n    \"\"\"\n    Load a PaiNN OC20 calculator.\n\n    Args:\n        checkpoint: Canonical checkpoint id, must be a key of CHECKPOINTS.\n        device: PyTorch device string (e.g., \"cuda\", \"cpu\").\n\n    Returns:\n        ASE-compatible OCPCalculator.\n    \"\"\"\n    import os\n    from fairchem.core import OCPCalculator\n    from fairchem.core.models.model_registry import model_name_to_local_file\n\n    cache_dir = os.environ.get(\"XDG_CACHE_HOME\", os.path.expanduser(\"~/.cache\"))\n    local_path = model_name_to_local_file(CHECKPOINTS[checkpoint], local_cache=cache_dir)\n    return OCPCalculator(checkpoint_path=local_path, cpu=(device == \"cpu\"))\n","python_requires":">=3.10,<3.11","dependencies":{"ase":"3.28.0","fairchem-core":"1.10.0","rootstock":"0.9.0","torch":"2.4.1","torch-cluster":"1.6.3+pt24cu121","torch-geometric":"2.7.0","torch-scatter":"2.1.2+pt24cu121","torch-sparse":"0.6.18+pt24cu121"},"checkpoints":{"painn-s2ef-oc20-all":{"fetched_at":"2026-05-06T20:45:46.185041+00:00","verified_at":"2026-05-06T23:19:41.940333+00:00","verified_device":"cuda","last_error":null}}},"schnet_env":{"status":"ready","built_at":"2026-05-06T17:09:32.379603+00:00","source_hash":"sha256:33ddd37474320e13d20c8080996503ab0251f145b29a144e023ab588ab50c594","source":"# /// script\n# requires-python = \">=3.10,<3.11\"\n# dependencies = [\n#     \"torch>=2.4.0\",\n#     \"fairchem-core>=1.0.0,<2.0.0\",\n#     \"ase>=3.22\",\n#     \"torch-geometric\",\n#     \"torch-scatter\",\n#     \"torch-sparse\",\n#     \"torch-cluster\",\n# ]\n#\n# [tool.uv]\n# find-links = [\"https://data.pyg.org/whl/torch-2.4.0+cu121.html\"]\n# ///\n\"\"\"\nSchNet environment for Rootstock.\n\nUses fairchem-core 1.x to access legacy OC20 SchNet checkpoints via\nOCPCalculator. These checkpoints are optimized for catalysis systems\n(slabs + adsorbates).\n\nModels:\n    - \"SchNet-S2EF-OC20-All\": default\n    - \"SchNet-S2EF-OC20-20M\"\n    - \"SchNet-S2EF-OC20-2M\"\n    - \"SchNet-S2EF-OC20-200k\"\n\"\"\"\n\nCHECKPOINTS = {\n    \"schnet-s2ef-oc20-all\": \"SchNet-S2EF-OC20-All\",\n    \"schnet-s2ef-oc20-20m\": \"SchNet-S2EF-OC20-20M\",\n    \"schnet-s2ef-oc20-2m\": \"SchNet-S2EF-OC20-2M\",\n    \"schnet-s2ef-oc20-200k\": \"SchNet-S2EF-OC20-200k\",\n}\n\n\ndef setup(checkpoint: str, device: str = \"cuda\"):\n    \"\"\"\n    Load a SchNet OC20 calculator.\n\n    Args:\n        checkpoint: Canonical checkpoint id, must be a key of CHECKPOINTS.\n        device: PyTorch device string (e.g., \"cuda\", \"cpu\").\n\n    Returns:\n        ASE-compatible OCPCalculator.\n    \"\"\"\n    import os\n    from fairchem.core import OCPCalculator\n    from fairchem.core.models.model_registry import model_name_to_local_file\n\n    cache_dir = os.environ.get(\"XDG_CACHE_HOME\", os.path.expanduser(\"~/.cache\"))\n    local_path = model_name_to_local_file(CHECKPOINTS[checkpoint], local_cache=cache_dir)\n    return OCPCalculator(checkpoint_path=local_path, cpu=(device == \"cpu\"))\n","python_requires":">=3.10,<3.11","dependencies":{"ase":"3.28.0","fairchem-core":"1.10.0","rootstock":"0.9.0","torch":"2.4.1","torch-cluster":"1.6.3+pt24cu121","torch-geometric":"2.7.0","torch-scatter":"2.1.2+pt24cu121","torch-sparse":"0.6.18+pt24cu121"},"checkpoints":{"schnet-s2ef-oc20-all":{"fetched_at":"2026-05-06T20:46:09.835796+00:00","verified_at":"2026-05-06T23:20:32.220732+00:00","verified_device":"cuda","last_error":null},"schnet-s2ef-oc20-20m":{"fetched_at":"2026-05-06T20:46:20.387699+00:00","verified_at":"2026-05-06T23:20:44.042212+00:00","verified_device":"cuda","last_error":null},"schnet-s2ef-oc20-2m":{"fetched_at":"2026-05-06T20:46:30.659748+00:00","verified_at":"2026-05-06T23:20:55.502683+00:00","verified_device":"cuda","last_error":null},"schnet-s2ef-oc20-200k":{"fetched_at":"2026-05-06T20:46:40.790457+00:00","verified_at":null,"verified_device":null,"last_error":"verify: forces are all (near-)zero — model likely returned zeros"}}},"scn_env":{"status":"ready","built_at":"2026-05-06T17:09:32.566820+00:00","source_hash":"sha256:ef4cf654469a8a9b3552fa550ac7c9637d96c2868c65c73be5a101434cf20afc","source":"# /// script\n# requires-python = \">=3.10,<3.11\"\n# dependencies = [\n#     \"torch>=2.4.0\",\n#     \"fairchem-core>=1.0.0,<2.0.0\",\n#     \"ase>=3.22\",\n#     \"torch-geometric\",\n#     \"torch-scatter\",\n#     \"torch-sparse\",\n#     \"torch-cluster\",\n# ]\n#\n# [tool.uv]\n# find-links = [\"https://data.pyg.org/whl/torch-2.4.0+cu121.html\"]\n# ///\n\"\"\"\nSCN environment for Rootstock.\n\nUses fairchem-core 1.x to access legacy OC20 SCN checkpoints via\nOCPCalculator. These checkpoints are optimized for catalysis systems\n(slabs + adsorbates).\n\nModels:\n    - \"SCN-S2EF-OC20-All+MD\": default\n    - \"SCN-t4-b2-S2EF-OC20-2M\"\n    - \"SCN-S2EF-OC20-2M\"\n\"\"\"\n\nCHECKPOINTS = {\n    \"scn-s2ef-oc20-all-md\": \"SCN-S2EF-OC20-All+MD\",\n    \"scn-t4-b2-s2ef-oc20-2m\": \"SCN-t4-b2-S2EF-OC20-2M\",\n    \"scn-s2ef-oc20-2m\": \"SCN-S2EF-OC20-2M\",\n}\n\n\ndef setup(checkpoint: str, device: str = \"cuda\"):\n    \"\"\"\n    Load an SCN OC20 calculator.\n\n    Args:\n        checkpoint: Canonical checkpoint id, must be a key of CHECKPOINTS.\n        device: PyTorch device string (e.g., \"cuda\", \"cpu\").\n\n    Returns:\n        ASE-compatible OCPCalculator.\n    \"\"\"\n    import os\n    from fairchem.core import OCPCalculator\n    from fairchem.core.models.model_registry import model_name_to_local_file\n\n    cache_dir = os.environ.get(\"XDG_CACHE_HOME\", os.path.expanduser(\"~/.cache\"))\n    local_path = model_name_to_local_file(CHECKPOINTS[checkpoint], local_cache=cache_dir)\n    return OCPCalculator(checkpoint_path=local_path, cpu=(device == \"cpu\"))\n","python_requires":">=3.10,<3.11","dependencies":{"ase":"3.28.0","fairchem-core":"1.10.0","rootstock":"0.9.0","torch":"2.4.1","torch-cluster":"1.6.3+pt24cu121","torch-geometric":"2.7.0","torch-scatter":"2.1.2+pt24cu121","torch-sparse":"0.6.18+pt24cu121"},"checkpoints":{"scn-s2ef-oc20-all-md":{"fetched_at":"2026-05-06T20:47:22.647123+00:00","verified_at":"2026-05-06T23:22:03.416574+00:00","verified_device":"cuda","last_error":null},"scn-t4-b2-s2ef-oc20-2m":{"fetched_at":"2026-05-06T20:47:46.833377+00:00","verified_at":"2026-05-06T23:22:19.661081+00:00","verified_device":"cuda","last_error":null},"scn-s2ef-oc20-2m":{"fetched_at":"2026-05-06T20:48:10.134823+00:00","verified_at":"2026-05-06T23:22:34.760295+00:00","verified_device":"cuda","last_error":null}}},"sevennet_env":{"status":"ready","built_at":"2026-05-06T17:09:32.730078+00:00","source_hash":"sha256:f675cd3872ca742a6b18dff3f287aa5febae56464cf4c3dc5522524534938904","source":"# /// script\n# requires-python = \">=3.12\"\n# dependencies = [\n#   \"sevenn[queq12]>=0.12.1\",\n# ]\n# ///\n\ndef setup(model: str | None = None, device: str = \"cuda\"):\n    \"\"\"\n    Load a SevenNetCalculator\n    \"\"\"\n    from sevenn.calculator import SevenNetCalculator\n    if model is None:\n        model = \"7net-omat\"\n    calc = SevenNetCalculator(model=model, enable_queq=True, device=device)\n    return calc\n","python_requires":">=3.12","dependencies":{"rootstock":"0.7.0","sevenn":"0.12.1"},"checkpoints":{}},"tensornet_env":{"status":"ready","built_at":"2026-05-06T17:09:32.852413+00:00","source_hash":"sha256:72c9704dfc7f42866d253be8d1326e76ebe5c5eea151223a11ab6344d68e7831","source":"# /// script\n# requires-python = \">=3.11\"\n# dependencies = [\n#     \"torch>=2.4.0\",\n#     \"ase>=3.22\",\n#     \"huggingface_hub\",\n#     \"nvalchemi-toolkit-ops\",\n#     \"pymatgen\",\n#     \"monty\",\n#     \"ruamel.yaml\",\n#     \"scipy\",\n#     \"torch-geometric\",\n#     \"torch-scatter\",\n#     \"torch-sparse\",\n#     \"torch-cluster\",\n#     \"torch-spline-conv\",\n# ]\n#\n# [tool.uv]\n# find-links = [\"https://data.pyg.org/whl/torch-2.4.0+cu121.html\"]\n#\n# [tool.uv.sources]\n# matgl = { git = \"https://github.com/materialsvirtuallab/matgl.git\" }\n# ///\n\"\"\"\nTensorNet environment for Rootstock.\n\nProvides access to TensorNet models via the MatGL library. Models are hosted\non HuggingFace under the materialyze org and loaded by passing the HF model\nID directly to matgl.load_model().\n\nModels:\n    - \"materialyze/TensorNet-PES-MatPES-PBE-2025.2\": PBE functional (default)\n    - \"materialyze/TensorNet-PES-MatPES-r2SCAN-2025.2\": r2SCAN functional\n    - \"materialyze/TensorNetDGL-PES-MatPES-PBE-2025.2\": DGL-backend variant\n\"\"\"\n\nCHECKPOINTS = {\n    \"tensornet-matpes-pbe-2025-2\": \"materialyze/TensorNet-PES-MatPES-PBE-2025.2\",\n    \"tensornet-matpes-r2scan-2025-2\": \"materialyze/TensorNet-PES-MatPES-r2SCAN-2025.2\",\n    \"tensornet-dgl-matpes-pbe-2025-2\": \"materialyze/TensorNetDGL-PES-MatPES-PBE-2025.2\",\n}\n\n\ndef setup(checkpoint: str, device: str = \"cuda\"):\n    \"\"\"\n    Load a TensorNet/MatGL calculator.\n\n    Args:\n        checkpoint: Canonical checkpoint id, must be a key of CHECKPOINTS.\n        device: PyTorch device string (currently MatGL handles device internally)\n\n    Returns:\n        ASE-compatible calculator\n    \"\"\"\n    import torch\n    torch.set_default_device(device)\n\n    # matgl 1.0.0 imports ExpCellFilter from ase.constraints, but it moved to\n    # ase.filters in ASE 3.23. Patch it in before matgl imports.\n    import ase.constraints\n    if not hasattr(ase.constraints, \"ExpCellFilter\"):\n        from ase.filters import ExpCellFilter\n        ase.constraints.ExpCellFilter = ExpCellFilter\n\n    # DGL 2.x imports torchdata.datapipes at init, but torchdata>=0.7 removed\n    # datapipes. Stub the minimum needed so DGL imports cleanly. matgl only\n    # uses DGL for graph construction, not graphbolt.\n    import sys, types\n\n    # DGL 2.x graphbolt imports torchdata submodules removed in torchdata>=0.7.\n    # Stub the entire graphbolt subpackage before `import dgl` runs; DGL's\n    # __init__ will use our empty stub and skip the real graphbolt initialisation.\n    # matgl only uses DGL for graph construction — graphbolt is never called.\n    for _name in [\n        \"dgl.graphbolt\",\n        \"dgl.graphbolt.base\",\n        \"dgl.graphbolt.dataloader\",\n        \"dgl.graphbolt.feature_fetcher\",\n        \"dgl.graphbolt.minibatch_transformer\",\n    ]:\n        if _name not in sys.modules:\n            sys.modules[_name] = types.ModuleType(_name)\n\n    from huggingface_hub import snapshot_download\n\n    import matgl\n    from matgl.ext.ase import PESCalculator\n\n    # matgl 1.0.0 load_model only checks the GitHub manifest; HF models must\n    # be downloaded explicitly and passed as a local path.\n    local_path = snapshot_download(repo_id=CHECKPOINTS[checkpoint])\n    pot = matgl.load_model(local_path)\n    return PESCalculator(potential=pot)\n","python_requires":">=3.11","dependencies":{"ase":"3.28.0","huggingface-hub":"1.14.0","monty":"2026.2.18","nvalchemi-toolkit-ops":"0.3.1","pymatgen":"2026.5.4","rootstock":"0.9.0","ruamel-yaml":"0.19.1","scipy":"1.17.1","torch":"2.11.0","torch-cluster":"1.6.3+pt24cu121","torch-geometric":"2.7.0","torch-scatter":"2.1.2+pt24cu121","torch-sparse":"0.6.18+pt24cu121","torch-spline-conv":"1.2.2+pt24cu121"},"checkpoints":{"tensornet-matpes-r2scan-2025-2":{"fetched_at":null,"verified_at":null,"verified_device":null,"last_error":"download: ModuleNotFoundError: No module named 'matgl'"},"tensornet-dgl-matpes-pbe-2025-2":{"fetched_at":null,"verified_at":null,"verified_device":null,"last_error":"download: ModuleNotFoundError: No module named 'matgl'"}}},"uma_env":{"status":"ready","built_at":"2026-05-06T17:09:33.059207+00:00","source_hash":"sha256:0de95e3f1168ccac35e12f5cb0488166f6df4a314bb922efbecc881e31b04555","source":"# /// script\n# requires-python = \">=3.10,<3.11\"\n# dependencies = [\n#     \"torch>=2.4.0\",\n#     \"fairchem-core>=2.0.0\",\n#     \"ase>=3.22\",\n#     \"torch-geometric\",\n# ]\n#\n# [tool.uv]\n# find-links = [\"https://data.pyg.org/whl/torch-2.4.0+cu121.html\"]\n# ///\n\"\"\"\nUMA (Universal Atomistic Model) environment for Rootstock.\n\nThis environment provides access to Meta's UMA foundation model\nvia the FAIRChem library.\n\nModels:\n    - \"uma-s-1p1\": UMA small model (default)\n    - \"uma-m-1p1\": UMA medium model (more accurate, more memory intensive)\n\nTask:\n    This config defaults to the \"omat\" task for inorganic materials. For\n    catalysis, molecules, MOFs, or molecular crystals, copy this env and set\n    task_name to \"oc20\", \"omol\", \"odac\", or \"omc\" respectively.\n\"\"\"\n\nCHECKPOINTS = {\n    \"uma-s-1p1\": \"uma-s-1p1\",\n    \"uma-m-1p1\": \"uma-m-1p1\",\n}\n\n\ndef setup(checkpoint: str, device: str = \"cuda\"):\n    \"\"\"\n    Load a UMA calculator.\n\n    Args:\n        checkpoint: Canonical checkpoint id, must be a key of CHECKPOINTS.\n        device: PyTorch device string (e.g., \"cuda\", \"cuda:0\", \"cpu\")\n\n    Returns:\n        ASE-compatible calculator\n    \"\"\"\n    from fairchem.core import FAIRChemCalculator, pretrained_mlip\n\n    predictor = pretrained_mlip.get_predict_unit(CHECKPOINTS[checkpoint], device=device)\n    return FAIRChemCalculator(predictor, task_name=\"omat\")\n","python_requires":">=3.10,<3.11","dependencies":{"ase":"3.28.0","fairchem-core":"2.14.0","rootstock":"0.9.0","torch":"2.8.0","torch-geometric":"2.7.0"},"checkpoints":{"uma-m-1p1":{"fetched_at":"2026-05-06T21:15:34.012300+00:00","verified_at":"2026-05-07T00:06:25.036728+00:00","verified_device":"cuda","last_error":null}}},"dimenet_env":{"status":"ready","built_at":"2026-05-06T17:10:21.120670+00:00","source_hash":"sha256:43d892df9403195522a57ab5e8c9b2efce2e9784c3554902867d7b8c1066488e","source":"# /// script\n# requires-python = \">=3.10,<3.11\"\n# dependencies = [\n#     \"torch>=2.4.0\",\n#     \"fairchem-core>=1.0.0,<2.0.0\",\n#     \"ase>=3.22\",\n#     \"torch-geometric\",\n#     \"torch-scatter\",\n#     \"torch-sparse\",\n#     \"torch-cluster\",\n# ]\n#\n# [tool.uv]\n# find-links = [\"https://data.pyg.org/whl/torch-2.4.0+cu121.html\"]\n# ///\n\"\"\"\nDimeNet++ environment for Rootstock.\n\nUses fairchem-core 1.x to access legacy OC20 DimeNet++ checkpoints via\nOCPCalculator. These checkpoints are optimized for catalysis systems\n(slabs + adsorbates).\n\nModels:\n    - \"DimeNet++-S2EF-OC20-All\": default\n    - \"DimeNet++-S2EF-OC20-20M\"\n    - \"DimeNet++-S2EF-OC20-2M\"\n    - \"DimeNet++-S2EF-OC20-200k\"\n\"\"\"\n\nCHECKPOINTS = {\n    \"dimenet-plus-plus-s2ef-oc20-all\": \"DimeNet++-S2EF-OC20-All\",\n    \"dimenet-plus-plus-s2ef-oc20-20m\": \"DimeNet++-S2EF-OC20-20M\",\n    \"dimenet-plus-plus-s2ef-oc20-2m\": \"DimeNet++-S2EF-OC20-2M\",\n    \"dimenet-plus-plus-s2ef-oc20-200k\": \"DimeNet++-S2EF-OC20-200k\",\n}\n\n\ndef setup(checkpoint: str, device: str = \"cuda\"):\n    \"\"\"\n    Load a DimeNet++ OC20 calculator.\n\n    Args:\n        checkpoint: Canonical checkpoint id, must be a key of CHECKPOINTS.\n        device: PyTorch device string (e.g., \"cuda\", \"cpu\").\n\n    Returns:\n        ASE-compatible OCPCalculator.\n    \"\"\"\n    import os\n    from fairchem.core import OCPCalculator\n    from fairchem.core.models.model_registry import model_name_to_local_file\n\n    cache_dir = os.environ.get(\"XDG_CACHE_HOME\", os.path.expanduser(\"~/.cache\"))\n    local_path = model_name_to_local_file(CHECKPOINTS[checkpoint], local_cache=cache_dir)\n    return OCPCalculator(checkpoint_path=local_path, cpu=(device == \"cpu\"))\n","python_requires":">=3.10,<3.11","dependencies":{"ase":"3.28.0","fairchem-core":"1.10.0","rootstock":"0.9.0","torch":"2.4.1","torch-cluster":"1.6.3+pt24cu121","torch-geometric":"2.7.0","torch-scatter":"2.1.2+pt24cu121","torch-sparse":"0.6.18+pt24cu121"},"checkpoints":{"dimenet-plus-plus-s2ef-oc20-all":{"fetched_at":"2026-05-06T20:48:52.866736+00:00","verified_at":"2026-05-06T23:25:10.736506+00:00","verified_device":"cuda","last_error":null},"dimenet-plus-plus-s2ef-oc20-20m":{"fetched_at":"2026-05-06T20:49:19.529493+00:00","verified_at":"2026-05-06T23:27:17.168189+00:00","verified_device":"cuda","last_error":null},"dimenet-plus-plus-s2ef-oc20-2m":{"fetched_at":"2026-05-06T20:49:45.848149+00:00","verified_at":"2026-05-06T23:29:14.922741+00:00","verified_device":"cuda","last_error":null},"dimenet-plus-plus-s2ef-oc20-200k":{"fetched_at":"2026-05-06T20:50:12.156381+00:00","verified_at":"2026-05-06T23:31:24.615791+00:00","verified_device":"cuda","last_error":null}}},"equiformer_env":{"status":"ready","built_at":"2026-05-06T17:10:45.757408+00:00","source_hash":"sha256:8400e3742fb766020bbba69feed4de61d113b9a302b63bdf3ffed24807de5558","source":"# /// script\n# requires-python = \">=3.10,<3.11\"\n# dependencies = [\n#     \"torch>=2.4.0\",\n#     \"fairchem-core>=1.0.0,<2.0.0\",\n#     \"ase>=3.22\",\n#     \"torch-geometric\",\n#     \"torch-scatter\",\n#     \"torch-sparse\",\n#     \"torch-cluster\",\n# ]\n#\n# [tool.uv]\n# find-links = [\"https://data.pyg.org/whl/torch-2.4.0+cu121.html\"]\n# ///\n\"\"\"\nEquiformerV2 environment for Rootstock.\n\nUses fairchem-core 1.x to access legacy OC20 EquiformerV2 checkpoints via\nOCPCalculator. These checkpoints are optimized for catalysis systems\n(slabs + adsorbates).\n\nModels:\n    - \"EquiformerV2-153M-S2EF-OC20-All+MD\": default\n    - \"EquiformerV2-31M-S2EF-OC20-All+MD\"\n    - \"EquiformerV2-83M-S2EF-OC20-2M\"\n\"\"\"\n\nCHECKPOINTS = {\n    \"equiformer-v2-153m-s2ef-oc20-all-md\": \"EquiformerV2-153M-S2EF-OC20-All+MD\",\n    \"equiformer-v2-31m-s2ef-oc20-all-md\": \"EquiformerV2-31M-S2EF-OC20-All+MD\",\n    \"equiformer-v2-83m-s2ef-oc20-2m\": \"EquiformerV2-83M-S2EF-OC20-2M\",\n}\n\n\ndef setup(checkpoint: str, device: str = \"cuda\"):\n    \"\"\"\n    Load an EquiformerV2 OC20 calculator.\n\n    Args:\n        checkpoint: Canonical checkpoint id, must be a key of CHECKPOINTS.\n        device: PyTorch device string (e.g., \"cuda\", \"cpu\").\n\n    Returns:\n        ASE-compatible OCPCalculator.\n    \"\"\"\n    import os\n    from fairchem.core import OCPCalculator\n    from fairchem.core.models.model_registry import model_name_to_local_file\n\n    cache_dir = os.environ.get(\"XDG_CACHE_HOME\", os.path.expanduser(\"~/.cache\"))\n    local_path = model_name_to_local_file(CHECKPOINTS[checkpoint], local_cache=cache_dir)\n    return OCPCalculator(checkpoint_path=local_path, cpu=(device == \"cpu\"))\n","python_requires":">=3.10,<3.11","dependencies":{"ase":"3.28.0","fairchem-core":"1.10.0","rootstock":"0.9.0","torch":"2.4.1","torch-cluster":"1.6.3+pt24cu121","torch-geometric":"2.7.0","torch-scatter":"2.1.2+pt24cu121","torch-sparse":"0.6.18+pt24cu121"},"checkpoints":{"equiformer-v2-153m-s2ef-oc20-all-md":{"fetched_at":"2026-05-06T20:51:00.115595+00:00","verified_at":"2026-05-06T23:32:32.851710+00:00","verified_device":"cuda","last_error":null},"equiformer-v2-31m-s2ef-oc20-all-md":{"fetched_at":"2026-05-06T20:51:11.968695+00:00","verified_at":"2026-05-06T23:32:50.987767+00:00","verified_device":"cuda","last_error":null},"equiformer-v2-83m-s2ef-oc20-2m":{"fetched_at":"2026-05-06T20:51:35.044899+00:00","verified_at":"2026-05-06T23:33:15.847792+00:00","verified_device":"cuda","last_error":null}}},"escn_env":{"status":"ready","built_at":"2026-05-06T17:11:11.192186+00:00","source_hash":"sha256:3ab4edb97bb0536fe61f79e84262eebe56b25d83aab9e073663de1a3aadaecec","source":"# /// script\n# requires-python = \">=3.10,<3.11\"\n# dependencies = [\n#     \"torch>=2.4.0\",\n#     \"fairchem-core>=1.0.0,<2.0.0\",\n#     \"ase>=3.22\",\n#     \"torch-geometric\",\n#     \"torch-scatter\",\n#     \"torch-sparse\",\n#     \"torch-cluster\",\n# ]\n#\n# [tool.uv]\n# find-links = [\"https://data.pyg.org/whl/torch-2.4.0+cu121.html\"]\n# ///\n\"\"\"\neSCN environment for Rootstock.\n\nUses fairchem-core 1.x to access legacy OC20 eSCN checkpoints via\nOCPCalculator. These checkpoints are optimized for catalysis systems\n(slabs + adsorbates).\n\nModels:\n    - \"eSCN-L6-M2-Lay12-S2EF-OC20-All+MD\": default\n    - \"eSCN-L6-M3-Lay20-S2EF-OC20-All+MD\"\n    - \"eSCN-L6-M2-Lay12-S2EF-OC20-2M\"\n    - \"eSCN-L4-M2-Lay12-S2EF-OC20-2M\"\n\"\"\"\n\nCHECKPOINTS = {\n    \"escn-l6-m2-lay12-s2ef-oc20-all-md\": \"eSCN-L6-M2-Lay12-S2EF-OC20-All+MD\",\n    \"escn-l6-m3-lay20-s2ef-oc20-all-md\": \"eSCN-L6-M3-Lay20-S2EF-OC20-All+MD\",\n    \"escn-l6-m2-lay12-s2ef-oc20-2m\": \"eSCN-L6-M2-Lay12-S2EF-OC20-2M\",\n    \"escn-l4-m2-lay12-s2ef-oc20-2m\": \"eSCN-L4-M2-Lay12-S2EF-OC20-2M\",\n}\n\n\ndef setup(checkpoint: str, device: str = \"cuda\"):\n    \"\"\"\n    Load an eSCN OC20 calculator.\n\n    Args:\n        checkpoint: Canonical checkpoint id, must be a key of CHECKPOINTS.\n        device: PyTorch device string (e.g., \"cuda\", \"cpu\").\n\n    Returns:\n        ASE-compatible OCPCalculator.\n    \"\"\"\n    import os\n    from fairchem.core import OCPCalculator\n    from fairchem.core.models.model_registry import model_name_to_local_file\n\n    cache_dir = os.environ.get(\"XDG_CACHE_HOME\", os.path.expanduser(\"~/.cache\"))\n    local_path = model_name_to_local_file(CHECKPOINTS[checkpoint], local_cache=cache_dir)\n    return OCPCalculator(checkpoint_path=local_path, cpu=(device == \"cpu\"))\n","python_requires":">=3.10,<3.11","dependencies":{"ase":"3.28.0","fairchem-core":"1.10.0","rootstock":"0.9.0","torch":"2.4.1","torch-cluster":"1.6.3+pt24cu121","torch-geometric":"2.7.0","torch-scatter":"2.1.2+pt24cu121","torch-sparse":"0.6.18+pt24cu121"},"checkpoints":{"escn-l6-m2-lay12-s2ef-oc20-all-md":{"fetched_at":"2026-05-06T20:52:08.384778+00:00","verified_at":"2026-05-06T23:34:05.028060+00:00","verified_device":"cuda","last_error":null},"escn-l6-m3-lay20-s2ef-oc20-all-md":{"fetched_at":"2026-05-06T20:52:41.248865+00:00","verified_at":"2026-05-06T23:34:24.958540+00:00","verified_device":"cuda","last_error":null},"escn-l6-m2-lay12-s2ef-oc20-2m":{"fetched_at":"2026-05-06T20:52:56.965557+00:00","verified_at":"2026-05-06T23:34:40.244823+00:00","verified_device":"cuda","last_error":null},"escn-l4-m2-lay12-s2ef-oc20-2m":{"fetched_at":"2026-05-06T20:53:14.283723+00:00","verified_at":"2026-05-06T23:34:54.565450+00:00","verified_device":"cuda","last_error":null}}},"esen":{"status":"ready","built_at":"2026-05-06T17:11:30.876911+00:00","source_hash":"sha256:3208af6f8289274a57c50a0fde119743e6ac00c2dcf153eaa53cb49b248786fd","source":"# /// script\n# requires-python = \">=3.10,<3.11\"\n# dependencies = [\n#     \"torch>=2.4.0\",\n#     \"fairchem-core>=2.0.0\",\n#     \"ase>=3.22\",\n#     \"torch-geometric\",\n# ]\n#\n# [tool.uv]\n# find-links = [\"https://data.pyg.org/whl/torch-2.4.0+cu121.html\"]\n# ///\n\"\"\"eSEN env — hosts FAIRChem eSEN single-task checkpoints.\n\nOMol checkpoints expect `charge` and `spin` in `atoms.info`.\n\"\"\"\n\nCHECKPOINTS = {\n    \"esen-md-direct-all-omol\":     \"esen-md-direct-all-omol\",\n    \"esen-sm-conserving-all-omol\": \"esen-sm-conserving-all-omol\",\n    \"esen-sm-direct-all-omol\":     \"esen-sm-direct-all-omol\",\n}\n\n\ndef setup(checkpoint: str, device: str = \"cuda\"):\n    from fairchem.core import FAIRChemCalculator, pretrained_mlip\n\n    predictor = pretrained_mlip.get_predict_unit(CHECKPOINTS[checkpoint], device=device)\n    return FAIRChemCalculator(predictor)\n","python_requires":">=3.10,<3.11","dependencies":{"ase":"3.28.0","fairchem-core":"2.14.0","rootstock":"0.9.0","torch":"2.8.0","torch-geometric":"2.7.0"},"checkpoints":{"esen-md-direct-all-omol":{"fetched_at":"2026-05-06T20:54:14.336617+00:00","verified_at":"2026-05-06T23:36:04.911839+00:00","verified_device":"cuda","last_error":null},"esen-sm-conserving-all-omol":{"fetched_at":"2026-05-06T21:05:57.217231+00:00","verified_at":"2026-05-06T23:36:20.717029+00:00","verified_device":"cuda","last_error":null},"esen-sm-direct-all-omol":{"fetched_at":"2026-05-06T21:06:15.278844+00:00","verified_at":"2026-05-06T23:36:34.840165+00:00","verified_device":"cuda","last_error":null}}},"gemnet_env":{"status":"ready","built_at":"2026-05-06T17:11:56.034584+00:00","source_hash":"sha256:2abec97fa1876c5f12bff09a05f6e70e3f4bdf5808ef60753bfe481fde99038f","source":"# /// script\n# requires-python = \">=3.10,<3.11\"\n# dependencies = [\n#     \"torch>=2.4.0\",\n#     \"fairchem-core>=1.0.0,<2.0.0\",\n#     \"ase>=3.22\",\n#     \"torch-geometric\",\n#     \"torch-scatter\",\n#     \"torch-sparse\",\n#     \"torch-cluster\",\n# ]\n#\n# [tool.uv]\n# find-links = [\"https://data.pyg.org/whl/torch-2.4.0+cu121.html\"]\n# ///\n\"\"\"\nGemNet environment for Rootstock.\n\nUses fairchem-core 1.x to access legacy OC20 GemNet checkpoints via\nOCPCalculator. These checkpoints are optimized for catalysis systems\n(slabs + adsorbates), not general-purpose total-energy materials modeling.\n\nModels:\n    - \"GemNet-OC-Large-S2EF-OC20-All+MD\": GemNet-OC large, default\n    - \"GemNet-OC-S2EF-OC20-All+MD\": GemNet-OC All+MD\n    - \"GemNet-OC-S2EF-OC20-All\": GemNet-OC All\n    - \"GemNet-dT-S2EF-OC20-All\": GemNet-dT / GemNet-T All\n\"\"\"\n\nCHECKPOINTS = {\n    \"gemnet-oc-large-s2ef-oc20-all-md\": \"GemNet-OC-Large-S2EF-OC20-All+MD\",\n    \"gemnet-oc-s2ef-oc20-all-md\": \"GemNet-OC-S2EF-OC20-All+MD\",\n    \"gemnet-oc-s2ef-oc20-all\": \"GemNet-OC-S2EF-OC20-All\",\n    \"gemnet-dt-s2ef-oc20-all\": \"GemNet-dT-S2EF-OC20-All\",\n}\n\n\ndef setup(checkpoint: str, device: str = \"cuda\"):\n    \"\"\"\n    Load a GemNet OC20 calculator.\n\n    Args:\n        checkpoint: Canonical checkpoint id, must be a key of CHECKPOINTS.\n        device: PyTorch device string (e.g., \"cuda\", \"cpu\").\n\n    Returns:\n        ASE-compatible OCPCalculator.\n    \"\"\"\n    import os\n    from fairchem.core import OCPCalculator\n    from fairchem.core.models.model_registry import model_name_to_local_file\n\n    cache_dir = os.environ.get(\"XDG_CACHE_HOME\", os.path.expanduser(\"~/.cache\"))\n    local_path = model_name_to_local_file(CHECKPOINTS[checkpoint], local_cache=cache_dir)\n    return OCPCalculator(checkpoint_path=local_path, cpu=(device == \"cpu\"))\n","python_requires":">=3.10,<3.11","dependencies":{"ase":"3.28.0","fairchem-core":"1.10.0","rootstock":"0.9.0","torch":"2.4.1","torch-cluster":"1.6.3+pt24cu121","torch-geometric":"2.7.0","torch-scatter":"2.1.2+pt24cu121","torch-sparse":"0.6.18+pt24cu121"},"checkpoints":{"gemnet-oc-large-s2ef-oc20-all-md":{"fetched_at":"2026-05-06T21:08:03.174029+00:00","verified_at":null,"verified_device":null,"last_error":"verify: ConnectionResetError: [Errno 104] Connection reset by peer"},"gemnet-oc-s2ef-oc20-all-md":{"fetched_at":"2026-05-06T21:08:29.008009+00:00","verified_at":null,"verified_device":null,"last_error":"verify: ConnectionResetError: [Errno 104] Connection reset by peer"},"gemnet-oc-s2ef-oc20-all":{"fetched_at":"2026-05-06T21:08:58.730252+00:00","verified_at":null,"verified_device":null,"last_error":"verify: ConnectionResetError: [Errno 104] Connection reset by peer"},"gemnet-dt-s2ef-oc20-all":{"fetched_at":"2026-05-06T21:09:24.575645+00:00","verified_at":"2026-05-07T00:01:04.361765+00:00","verified_device":"cuda","last_error":null}}},"m3gnet_env":{"status":"ready","built_at":"2026-05-06T17:12:07.558627+00:00","source_hash":"sha256:5623538d4f16939343cbf544ca51ece7320d3dbd8fcce7345cd01fb78b1d2915","source":"# /// script\n# requires-python = \">=3.10\"\n# dependencies = [\n#     \"chgnet>=0.4.0\",\n#     \"ase>=3.22\",\n#     \"torch>=2.0\",\n# ]\n# ///\n\"\"\"\nM3GNet environment for Rootstock — redirected to CHGNet.\n\nM3GNet-MP-2021.2.8-PES (the universal inorganic PES) is no longer accessible\nvia any modern Python package:\n  - matgl 2.x (PyG backend) only has TensorNet on HuggingFace (materialyze)\n  - matgl 1.x (DGL backend) pointed to a GitHub URL that was removed\n  - The original m3gnet package is archived TensorFlow code\n  - materialyze HuggingFace has only M3GNet-Eform (formation energy, not PES)\n\nFor universal inorganic PES, use:\n  - tensornet_env.py: TensorNet-MatPES (same authors, newer, better)\n  - chgnet_env.py: CHGNet (charge-informed, strong on magnetic materials)\n  - orb_env.py: Orb v3 (universal, supports periodic systems)\n\nThis file loads CHGNet as the practical substitute for M3GNet-PES.\n\"\"\"\n\nCHECKPOINTS = {\n    \"m3gnet-mp-2021-2-8-pes\": \"chgnet-default\",\n}\n\n\ndef setup(checkpoint: str, device: str = \"cuda\"):\n    \"\"\"\n    Load CHGNet as a substitute for M3GNet-PES.\n\n    Args:\n        checkpoint: Canonical checkpoint id, must be a key of CHECKPOINTS.\n        device: PyTorch device string (e.g., \"cuda\", \"cpu\").\n\n    Returns:\n        ASE-compatible CHGNetCalculator.\n    \"\"\"\n    from chgnet.model import CHGNetCalculator\n\n    return CHGNetCalculator(use_device=device)\n","python_requires":">=3.10","dependencies":{"ase":"3.28.0","chgnet":"0.4.2","rootstock":"0.9.0","torch":"2.11.0"},"checkpoints":{"m3gnet-mp-2021-2-8-pes":{"fetched_at":"2026-05-06T21:16:25.937001+00:00","verified_at":null,"verified_device":null,"last_error":"verify: RuntimeError: Worker process died with code 1.\nstdout: b'CHGNet v0.3.0 initialized with 412,525 parameters\\n'\nstderr: b'Traceback (most recent call last):\\n  File \"/var/tmp/pbs.153128.sophia-pbs-01.lab.alcf.anl.gov/rootstock_wrapper_csk3sgzg.py\", line 10, in <module>\\n    run_worker(\\n  File \"/lus/eagle/projects/Garden-Ai/rootstock/envs/m3gnet_env/lib/python3.10/site-packages/rootstock/worker.py\", line 273, in run_worker\\n    calculator = setup_fn(checkpoint, device, **setup_kwargs)\\n  File \"/lus/eagle/projects/Garden-Ai/rootstock/envs/m3gnet_env/env_source.py\", line 45, in setup\\n    return CHGNetCalculator(use_device=device)\\n  File \"/lus/eagle/projects/Garden-Ai/rootstock/envs/m3gnet_env/lib/python3.10/site-packages/chgnet/model/dynamics.py\", line 102, in __init__\\n    self.model = CHGNet.load(verbose=False, use_device=self.device)\\n  File \"/lus/eagle/projects/Garden-Ai/rootstock/envs/m3gnet_env/lib/python3.10/site-packages/chgnet/model/model.py\", line 741, in load\\n    model = model.to(device)\\n  File \"/lus/eagle/projects/Garden-Ai/rootstock/envs/m3gnet_env/lib/python3.10/site-packages/torch/nn/modules/module.py\", line 1384, in to\\n    return self._apply(convert)\\n  File \"/lus/eagle/projects/Garden-Ai/rootstock/envs/m3gnet_env/lib/python3.10/site-packages/torch/nn/modules/module.py\", line 934, in _apply\\n    module._apply(fn)\\n  File \"/lus/eagle/projects/Garden-Ai/rootstock/envs/m3gnet_env/lib/python3.10/site-packages/torch/nn/modules/module.py\", line 934, in _apply\\n    module._apply(fn)\\n  File \"/lus/eagle/projects/Garden-Ai/rootstock/envs/m3gnet_env/lib/python3.10/site-packages/torch/nn/modules/module.py\", line 965, in _apply\\n    param_applied = fn(param)\\n  File \"/lus/eagle/projects/Garden-Ai/rootstock/envs/m3gnet_env/lib/python3.10/site-packages/torch/nn/modules/module.py\", line 1370, in convert\\n    return t.to(\\n  File \"/lus/eagle/projects/Garden-Ai/rootstock/envs/m3gnet_env/lib/python3.10/site-packages/torch/cuda/__init__.py\", line 478, in _lazy_init\\n    torch._C._cuda_init()\\nRuntimeError: The NVIDIA driver on your system is too old (found version 12040). Please update your GPU driver by downloading and installing a new version from the URL: http://www.nvidia.com/Download/index.aspx Alternatively, go to: https://pytorch.org to install a PyTorch version that has been compiled with your version of the CUDA driver.\\n'"}}},"mace":{"status":"ready","built_at":"2026-05-06T17:12:19.107766+00:00","source_hash":"sha256:5a22de20034a5c56e3c42bd2adfdc19ec69c75f3882ad5550c0388fd1c5ffba0","source":"# /// script\n# requires-python = \">=3.10\"\n# dependencies = [\n#     \"mace-torch>=0.3.0\",\n#     \"ase>=3.22\",\n#     \"torch>=2.4.0,<2.10\",\n# ]\n# ///\n\"\"\"MACE env — hosts MACE-MP-0 and MACE-OFF23 checkpoints.\n\nBoth ship in the same `mace-torch` package, so they share an environment.\nThe `off:` prefix on the upstream string in CHECKPOINTS routes to mace_off()\ninstead of mace_mp().\n\"\"\"\n\nCHECKPOINTS = {\n    \"mace-mp-0-small\":   \"small\",\n    \"mace-mp-0-medium\":  \"medium\",\n    \"mace-mp-0-large\":   \"large\",\n    \"mace-off23-small\":  \"off:small\",\n    \"mace-off23-medium\": \"off:medium\",\n    \"mace-off23-large\":  \"off:large\",\n}\n\n\ndef setup(checkpoint: str, device: str = \"cuda\"):\n    arg = CHECKPOINTS[checkpoint]\n    if arg.startswith(\"off:\"):\n        from mace.calculators import mace_off\n        return mace_off(model=arg[4:], device=device, default_dtype=\"float32\")\n    from mace.calculators import mace_mp\n    return mace_mp(model=arg, device=device, default_dtype=\"float32\")\n","python_requires":">=3.10","dependencies":{"ase":"3.28.0","mace-torch":"0.3.15","rootstock":"0.9.0","torch":"2.9.1"},"checkpoints":{"mace-mp-0-small":{"fetched_at":"2026-05-06T20:39:48.797312+00:00","verified_at":"2026-05-06T23:14:03.069677+00:00","verified_device":"cuda","last_error":null},"mace-mp-0-medium":{"fetched_at":"2026-05-06T20:39:56.628531+00:00","verified_at":"2026-05-06T23:14:19.147113+00:00","verified_device":"cuda","last_error":null},"mace-mp-0-large":{"fetched_at":"2026-05-06T20:40:05.433962+00:00","verified_at":"2026-05-06T23:14:30.297312+00:00","verified_device":"cuda","last_error":null},"mace-off23-small":{"fetched_at":"2026-05-06T20:40:13.987852+00:00","verified_at":"2026-05-06T23:14:40.557979+00:00","verified_device":"cuda","last_error":null},"mace-off23-medium":{"fetched_at":"2026-05-06T20:40:21.608427+00:00","verified_at":"2026-05-06T23:14:51.869421+00:00","verified_device":"cuda","last_error":null},"mace-off23-large":{"fetched_at":"2026-05-06T20:40:29.441902+00:00","verified_at":"2026-05-06T23:15:00.951911+00:00","verified_device":"cuda","last_error":null}}},"orb":{"status":"ready","built_at":"2026-05-06T17:13:58.800020+00:00","source_hash":"sha256:0cbfe1165a3adfa529fec8de062a0141950d0972f12cfacc5c82e9244949441e","source":"# /// script\n# requires-python = \">=3.10\"\n# dependencies = [\n#     \"orb-models>=0.4.0\",\n#     \"ase>=3.22\",\n#     \"torch>=2.0\",\n# ]\n# ///\n\"\"\"Orb env — hosts Orbital Materials' Orb universal potentials.\"\"\"\n\nCHECKPOINTS = {\n    \"orb-v2\": \"orb-v2\",\n}\n\n\ndef setup(checkpoint: str, device: str = \"cuda\"):\n    import torch\n    from orb_models.forcefield import pretrained\n    from orb_models.forcefield.calculator import ORBCalculator\n\n    # orb-models exposes one function per checkpoint, e.g. pretrained.orb_v2().\n    fn_name = CHECKPOINTS[checkpoint].replace(\"-\", \"_\")\n    load_fn = getattr(pretrained, fn_name)\n    orbff = load_fn(device=torch.device(device))\n    return ORBCalculator(orbff, device=torch.device(device))\n","python_requires":">=3.10","dependencies":{"ase":"3.28.0","orb-models":"0.5.5","rootstock":"0.9.0","torch":"2.11.0"},"checkpoints":{"orb-v2":{"fetched_at":"2026-05-06T20:43:23.118249+00:00","verified_at":null,"verified_device":null,"last_error":"verify: RuntimeError: Worker process died with code 1.\nstdout: b''\nstderr: b'/lus/eagle/projects/Garden-Ai/rootstock/envs/orb/lib/python3.10/site-packages/google/api_core/_python_version_support.py:273: FutureWarning: You are using a Python version (3.10.19) which Google will stop supporting in new releases of google.api_core once it reaches its end of life (2026-10-04). Please upgrade to the latest Python version, or at least Python 3.11, to continue receiving updates for google.api_core past that date.\\n  warnings.warn(message, FutureWarning)\\nTraceback (most recent call last):\\n  File \"/var/tmp/pbs.153128.sophia-pbs-01.lab.alcf.anl.gov/rootstock_wrapper_a2w5kwir.py\", line 10, in <module>\\n    run_worker(\\n  File \"/lus/eagle/projects/Garden-Ai/rootstock/envs/orb/lib/python3.10/site-packages/rootstock/worker.py\", line 273, in run_worker\\n    calculator = setup_fn(checkpoint, device, **setup_kwargs)\\n  File \"/lus/eagle/projects/Garden-Ai/rootstock/envs/orb/env_source.py\", line 24, in setup\\n    orbff = load_fn(device=torch.device(device))\\n  File \"/lus/eagle/projects/Garden-Ai/rootstock/envs/orb/lib/python3.10/site-packages/orb_models/forcefield/pretrained.py\", line 643, in orb_v2\\n    model = orb_v2_architecture(device=device, system_config=system_config)\\n  File \"/lus/eagle/projects/Garden-Ai/rootstock/envs/orb/lib/python3.10/site-packages/orb_models/forcefield/pretrained.py\", line 163, in orb_v2_architecture\\n    model.cuda(device)\\n  File \"/lus/eagle/projects/Garden-Ai/rootstock/envs/orb/lib/python3.10/site-packages/torch/nn/modules/module.py\", line 1097, in cuda\\n    return self._apply(lambda t: t.cuda(device))\\n  File \"/lus/eagle/projects/Garden-Ai/rootstock/envs/orb/lib/python3.10/site-packages/torch/nn/modules/module.py\", line 934, in _apply\\n    module._apply(fn)\\n  File \"/lus/eagle/projects/Garden-Ai/rootstock/envs/orb/lib/python3.10/site-packages/torch/nn/modules/module.py\", line 934, in _apply\\n    module._apply(fn)\\n  File \"/lus/eagle/projects/Garden-Ai/rootstock/envs/orb/lib/python3.10/site-packages/torch/nn/modules/module.py\", line 934, in _apply\\n    module._apply(fn)\\n  [Previous line repeated 1 more time]\\n  File \"/lus/eagle/projects/Garden-Ai/rootstock/envs/orb/lib/python3.10/site-packages/torch/nn/modules/module.py\", line 1035, in _apply\\n    self._buffers[key] = fn(buf)\\n  File \"/lus/eagle/projects/Garden-Ai/rootstock/envs/orb/lib/python3.10/site-packages/torch/nn/modules/module.py\", line 1097, in <lambda>\\n    return self._apply(lambda t: t.cuda(device))\\n  File \"/lus/eagle/projects/Garden-Ai/rootstock/envs/orb/lib/python3.10/site-packages/torch/cuda/__init__.py\", line 478, in _lazy_init\\n    torch._C._cuda_init()\\nRuntimeError: The NVIDIA driver on your system is too old (found version 12040). Please update your GPU driver by downloading and installing a new version from the URL: http://www.nvidia.com/Download/index.aspx Alternatively, go to: https://pytorch.org to install a PyTorch version that has been compiled with your version of the CUDA driver.\\n'"}}},"tensornet":{"status":"ready","built_at":"2026-05-06T17:16:08.508217+00:00","source_hash":"sha256:da087341cdaa0512c7e13e2edffa11c25e2b4815761f72b467127894d4ccdad3","source":"# /// script\n# requires-python = \">=3.11\"\n# dependencies = [\n#     \"torch>=2.4.0\",\n#     \"ase>=3.22\",\n#     \"huggingface_hub\",\n#     \"matgl\",\n#     \"nvalchemi-toolkit-ops\",\n#     \"pymatgen\",\n#     \"monty\",\n#     \"ruamel.yaml\",\n#     \"scipy\",\n#     \"torch-geometric\",\n#     \"torch-scatter\",\n#     \"torch-sparse\",\n#     \"torch-cluster\",\n#     \"torch-spline-conv\",\n# ]\n#\n# [tool.uv]\n# find-links = [\"https://data.pyg.org/whl/torch-2.4.0+cu121.html\"]\n#\n# [tool.uv.sources]\n# matgl = { git = \"https://github.com/materialsvirtuallab/matgl.git\" }\n# ///\n\"\"\"TensorNet env — hosts MatPES TensorNet checkpoints via MatGL.\"\"\"\n\nCHECKPOINTS = {\n    \"tensornet-matpes-pbe-2025-2\": \"materialyze/TensorNet-PES-MatPES-PBE-2025.2\",\n}\n\n\ndef setup(checkpoint: str, device: str = \"cuda\"):\n    import torch\n    torch.set_default_device(device)\n\n    # matgl 1.0.0 imports ExpCellFilter from ase.constraints, but it moved to\n    # ase.filters in ASE 3.23. Patch it in before matgl imports.\n    import ase.constraints\n    if not hasattr(ase.constraints, \"ExpCellFilter\"):\n        from ase.filters import ExpCellFilter\n        ase.constraints.ExpCellFilter = ExpCellFilter\n\n    # DGL 2.x graphbolt imports torchdata submodules removed in torchdata>=0.7.\n    # Stub the entire graphbolt subpackage before `import dgl` runs; DGL's\n    # __init__ will use our empty stub and skip the real graphbolt initialisation.\n    # matgl only uses DGL for graph construction — graphbolt is never called.\n    import sys, types\n    for _name in [\n        \"dgl.graphbolt\",\n        \"dgl.graphbolt.base\",\n        \"dgl.graphbolt.dataloader\",\n        \"dgl.graphbolt.feature_fetcher\",\n        \"dgl.graphbolt.minibatch_transformer\",\n    ]:\n        if _name not in sys.modules:\n            sys.modules[_name] = types.ModuleType(_name)\n\n    from huggingface_hub import snapshot_download\n\n    import matgl\n    from matgl.ext.ase import PESCalculator\n\n    # matgl 1.0.0 load_model only checks the GitHub manifest; HF models must\n    # be downloaded explicitly and passed as a local path.\n    local_path = snapshot_download(repo_id=CHECKPOINTS[checkpoint])\n    pot = matgl.load_model(local_path)\n    return PESCalculator(potential=pot)\n","python_requires":">=3.11","dependencies":{"ase":"3.28.0","huggingface-hub":"1.14.0","matgl":"3.0.1","monty":"2026.2.18","nvalchemi-toolkit-ops":"0.3.1","pymatgen":"2026.5.4","rootstock":"0.9.0","ruamel-yaml":"0.19.1","scipy":"1.17.1","torch":"2.11.0","torch-cluster":"1.6.3+pt24cu121","torch-geometric":"2.7.0","torch-scatter":"2.1.2+pt24cu121","torch-sparse":"0.6.18+pt24cu121","torch-spline-conv":"1.2.2+pt24cu121"},"checkpoints":{"tensornet-matpes-pbe-2025-2":{"fetched_at":"2026-05-06T21:12:12.465688+00:00","verified_at":null,"verified_device":null,"last_error":"verify: RuntimeError: Worker process died with code 1.\nstdout: b''\nstderr: b'/lus/eagle/projects/Garden-Ai/rootstock/envs/tensornet/lib/python3.11/site-packages/torch/__config__.py:9: UserWarning: CUDA initialization: The NVIDIA driver on your system is too old (found version 12040). Please update your GPU driver by downloading and installing a new version from the URL: http://www.nvidia.com/Download/index.aspx Alternatively, go to: https://pytorch.org to install a PyTorch version that has been compiled with your version of the CUDA driver. (Triggered internally at /pytorch/c10/cuda/CUDAFunctions.cpp:119.)\\n  return torch._C._show_config()\\n/lus/eagle/projects/Garden-Ai/rootstock/envs/tensornet/lib/python3.11/site-packages/torch_geometric/__init__.py:4: UserWarning: An issue occurred while importing \\'torch-scatter\\'. Disabling its usage. Stacktrace: Could not load this library: /lus/eagle/projects/Garden-Ai/rootstock/envs/tensornet/lib/python3.11/site-packages/torch_scatter/_version_cuda.so\\n  import torch_geometric.typing\\n/lus/eagle/projects/Garden-Ai/rootstock/envs/tensornet/lib/python3.11/site-packages/torch_geometric/__init__.py:4: UserWarning: An issue occurred while importing \\'torch-cluster\\'. Disabling its usage. Stacktrace: Could not load this library: /lus/eagle/projects/Garden-Ai/rootstock/envs/tensornet/lib/python3.11/site-packages/torch_cluster/_version_cuda.so\\n  import torch_geometric.typing\\n/lus/eagle/projects/Garden-Ai/rootstock/envs/tensornet/lib/python3.11/site-packages/torch_geometric/__init__.py:4: UserWarning: An issue occurred while importing \\'torch-spline-conv\\'. Disabling its usage. Stacktrace: Could not load this library: /lus/eagle/projects/Garden-Ai/rootstock/envs/tensornet/lib/python3.11/site-packages/torch_spline_conv/_version_cuda.so\\n  import torch_geometric.typing\\n/lus/eagle/projects/Garden-Ai/rootstock/envs/tensornet/lib/python3.11/site-packages/torch_geometric/__init__.py:4: UserWarning: An issue occurred while importing \\'torch-sparse\\'. Disabling its usage. Stacktrace: Could not load this library: /lus/eagle/projects/Garden-Ai/rootstock/envs/tensornet/lib/python3.11/site-packages/torch_sparse/_version_cuda.so\\n  import torch_geometric.typing\\nTraceback (most recent call last):\\n  File \"/var/tmp/pbs.153128.sophia-pbs-01.lab.alcf.anl.gov/rootstock_wrapper_xu99u8ls.py\", line 10, in <module>\\n    run_worker(\\n  File \"/lus/eagle/projects/Garden-Ai/rootstock/envs/tensornet/lib/python3.11/site-packages/rootstock/worker.py\", line 273, in run_worker\\n    calculator = setup_fn(checkpoint, device, **setup_kwargs)\\n                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\\n  File \"/lus/eagle/projects/Garden-Ai/rootstock/envs/tensornet/env_source.py\", line 62, in setup\\n    from matgl.ext.ase import PESCalculator\\n  File \"/lus/eagle/projects/Garden-Ai/rootstock/envs/tensornet/lib/python3.11/site-packages/matgl/ext/ase.py\", line 18, in <module>\\n    from ._ase_pyg import (  # type: ignore[assignment]\\n  File \"/lus/eagle/projects/Garden-Ai/rootstock/envs/tensornet/lib/python3.11/site-packages/matgl/ext/_ase_pyg.py\", line 38, in <module>\\n    from matgl.graph._converters_pyg import GraphConverter\\n  File \"/lus/eagle/projects/Garden-Ai/rootstock/envs/tensornet/lib/python3.11/site-packages/matgl/graph/_converters_pyg.py\", line 9, in <module>\\n    from torch_geometric.data import Data\\n  File \"/lus/eagle/projects/Garden-Ai/rootstock/envs/tensornet/lib/python3.11/site-packages/torch_geometric/__init__.py\", line 22, in <module>\\n    import torch_geometric.datasets\\n  File \"/lus/eagle/projects/Garden-Ai/rootstock/envs/tensornet/lib/python3.11/site-packages/torch_geometric/datasets/__init__.py\", line 18, in <module>\\n    from .qm9 import QM9\\n  File \"/lus/eagle/projects/Garden-Ai/rootstock/envs/tensornet/lib/python3.11/site-packages/torch_geometric/datasets/qm9.py\", line 22, in <module>\\n    conversion = torch.tensor([\\n                 ^^^^^^^^^^^^^^\\n  File \"/lus/eagle/projects/Garden-Ai/rootstock/envs/tensornet/lib/python3.11/site-packages/torch/utils/_device.py\", line 116, in __torch_function__\\n    return func(*args, **kwargs)\\n           ^^^^^^^^^^^^^^^^^^^^^\\n  File \"/lus/eagle/projects/Garden-Ai/rootstock/envs/tensornet/lib/python3.11/site-packages/torch/cuda/__init__.py\", line 478, in _lazy_init\\n    torch._C._cuda_init()\\nRuntimeError: The NVIDIA driver on your system is too old (found version 12040). Please update your GPU driver by downloading and installing a new version from the URL: http://www.nvidia.com/Download/index.aspx Alternatively, go to: https://pytorch.org to install a PyTorch version that has been compiled with your version of the CUDA driver.\\n'"}}},"uma":{"status":"ready","built_at":"2026-05-06T17:16:47.837914+00:00","source_hash":"sha256:8fb5eaff193ce405044c1c7811f2e19264aeb0bd8c63cfb591a32f575e3a67d2","source":"# /// script\n# requires-python = \">=3.10,<3.11\"\n# dependencies = [\n#     \"torch>=2.4.0\",\n#     \"fairchem-core>=2.0.0\",\n#     \"ase>=3.22\",\n#     \"torch-geometric\",\n# ]\n#\n# [tool.uv]\n# find-links = [\"https://data.pyg.org/whl/torch-2.4.0+cu121.html\"]\n# ///\n\"\"\"UMA env — hosts Meta's UMA foundation model via FAIRChem.\"\"\"\n\nCHECKPOINTS = {\n    \"uma-s-1p1\": \"uma-s-1p1\",\n}\n\n\ndef setup(checkpoint: str, device: str = \"cuda\", task: str = \"omat\"):\n    from fairchem.core import FAIRChemCalculator, pretrained_mlip\n\n    predictor = pretrained_mlip.get_predict_unit(CHECKPOINTS[checkpoint], device=device)\n    return FAIRChemCalculator(predictor, task_name=task)\n","python_requires":">=3.10,<3.11","dependencies":{"ase":"3.28.0","fairchem-core":"2.14.0","rootstock":"0.9.0","torch":"2.8.0","torch-geometric":"2.7.0"},"checkpoints":{"uma-s-1p1":{"fetched_at":"2026-05-06T21:14:11.695760+00:00","verified_at":"2026-05-07T00:04:44.227449+00:00","verified_device":"cuda","last_error":null}}}}}]}