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.0

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.0
File Size Uploaded
scgo-0.9.0.tar.gz 862.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for scgo 0.9.0
File Interpreter ABI Platform
scgo-0.9.0-py3-none-any.whl Python 3 none any Details

Total release size: 1.9 MB

Release files / scgo-0.9.0.tar.gz

Download URL scgo-0.9.0.tar.gz
Size 862.8 kB
Tags Source
SHA-256 checksum
How to use checksums
57212116bb7042e052e757d56a591714ddc19ba66765fd9ef37e44aced6246db
BLAKE2b-256 checksum
How to use checksums
0c3031af3c72663fc70a144eadfc1c60e5fd308f5c4c2dbbd78969c29b4b852d
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 Sep 30, 2026.

Transparency log

Release files / scgo-0.9.0-py3-none-any.whl

Download URL scgo-0.9.0-py3-none-any.whl
Size 1.0 MB
Tags Python 3
SHA-256 checksum
How to use checksums
2cde8c8164bd641dee9a94476c5fc5923a065fac4d5475ae8a7d96b50c4e061c
BLAKE2b-256 checksum
How to use checksums
6e73a70e6d215168fba4bef896d5813b96f183ebd7c7248e07a5efbe926077fe
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 Sep 30, 2026.

Transparency log

Release history Release notifications | RSS feed

0.9.1

2 release files

This release

0.9.0 This release

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