Skip to main content

SCGO: Simple Cluster Global Optimization

Python PyPI License: MIT

SCGO Logo

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_cluster only): 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)

Source distribution for scgo 0.9.1
File Size Uploaded
scgo-0.9.1.tar.gz 862.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for scgo 0.9.1
File Interpreter ABI Platform
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 log

Release 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

Release history Release notifications | RSS feed

This release

0.9.1 This release

2 release files

0.9.0

2 release files

0.8.0

2 release files

0.7.0

2 release files

0.6.5

2 release files

0.6.4

2 release files

0.6.3

2 release files

0.6.2

2 release files

0.6.1

2 release files

0.6.0

2 release files

0.5.2

2 release files

0.5.1

2 release files

0.4.0

2 release files

0.2.0

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page