SCGO: Simple Cluster Global Optimization
SCGO finds low-energy atomic structures with global optimization. It uses Basin Hopping, Genetic Algorithms, NEB transition-state search, and machine learning potentials (MACE, UMA, UPET) through ASE and TorchSim.
A cluster (also called the core when molecules are present) is the metal nanoparticle whose shape you are searching. An adsorbate is a small molecule or fragment (for example OH or CO) attached to the cluster or the surface. A slab is a periodic surface the cluster or adsorbate sits on. You can also search the top layers of the slab itself, with the bottom layers held still.
Six system types combine these pieces: gas_cluster, surface_cluster, gas_cluster_adsorbate, surface_cluster_adsorbate, surface, and surface_adsorbate.
Documentation: Read the Docs
Install
Exactly one MLIP extra per environment:
pip install "scgo[mace]" # or [uma] / [upet]
UPET note: After pip install "scgo[upet]", manually install vesin==0.6.0:
pip install 'vesin==0.6.0' --force-reinstall --no-deps
Python 3.12+, SQLite JSON1. Details: installation guide.
Quick start
from scgo import run_go
from scgo.param_presets import get_testing_params
results = run_go(
["Pt"] * 4,
params=get_testing_params(),
seed=42,
system_type="gas_cluster",
)
results is a list of (energy, Atoms) unique minima (energy-sorted).
Algorithms: SCGO auto-selects based on system size:
- ≤2 mobile atoms (
gas_clusteronly): Simple relaxation - 3 atoms, no adsorbate: Basin Hopping
- 3+ atoms with adsorbate: Genetic Algorithm
- ≥4 atoms: Genetic Algorithm
Workflows
| Goal | Entry point |
|---|---|
| Single composition GO | run_go |
| Multi-composition GO | run_go_campaign |
| TS from existing minima | run_ts_search |
| GO then TS | run_go_ts |
| Multi-composition TS / GO+TS | run_ts_campaign / run_go_ts_campaign |
system_type is always a run argument (never inside go_params /
optimizer_params slots). Surfaces prefer surface_config= as a run
argument; a top-level surface_config in go_params / ts_params is
enough when the run argument is omitted (both must agree when set).
Adsorbates need adsorbates=.
Output: run_go writes {path_key}_searches/ with datetime-tagged run_*/ subdirectories. GO+TS creates sibling {path_key}_ts_results/. The path_key combines nanoparticle formula, adsorbate fragments, and surface name (for example Pt5, Pt5_OH_OH_graphite). See quickstart.
Examples
examples/ holds MACE + TorchSim smoke scripts for all six system types. See examples/README.md for details.
Development
pip install -e ".[mace,dev]" # or [uma,dev] / [upet,dev]
pre-commit install
pytest tests/ -m "not slow and not integration and not requires_cuda and not requires_upet and not requires_uma"
Long MLIP sweeps: benchmark/.
MIT License. See LICENSE.
Metadata
Release files for scgo 0.9.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| scgo-0.9.1.tar.gz | 862.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| scgo-0.9.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 1.9 MB
Release files / scgo-0.9.1.tar.gz
| Download URL | scgo-0.9.1.tar.gz |
|---|---|
| Size | 862.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
0038e64aa898c869e2496a19b42d1f2fc42166385c0a2c9193c3a0aee40ae9b7
|
|
BLAKE2b-256 checksum How to use checksums |
df1e9869d8ca65079b712e49182ca5dff3f399795c664ffd4a1caa89b659c5d6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 1, 2026.
Transparency logRelease files / scgo-0.9.1-py3-none-any.whl
| Download URL | scgo-0.9.1-py3-none-any.whl |
|---|---|
| Size | 1.0 MB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
39df2eec38454e6fdbe1d972defbc5e94ea24cb52fc6bd7baa213c3f7f69b00a
|
|
BLAKE2b-256 checksum How to use checksums |
447107b2d9756717767f7b0592256547ce9ca69607417d6a0ef48ded91d5dbcf
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 1, 2026.
Transparency log