Skip to main content

GLOMOS

GLobal Optimization of MOlecular Systems — a genetic algorithm for the global optimization of atomic clusters and molecules, built on top of AEGON.

GLOMOS orchestrates the genetic algorithm (initial population, crossover, mutation, fitness-proportional selection, structural deduplication, stop criteria) and delegates every energy evaluation and local optimization to AEGON's calculator registry. GLOMOS itself never talks to a quantum chemistry code or a potential directly — it only calls aegon.calculators.build(calc_type, **kwargs), so any calculator AEGON supports is automatically available to the genetic algorithm.


Table of Contents


Features

  • Three search driversheuristic_kick.py (staged local-opt + discrimination, no evolutionary operators), heuristic_ga.py (roulette-wheel GA over clusters/crystals), heuristic_ga_rotamers.py (GA over dihedral angles for conformer search).
  • Calculator-agnostic — every driver dispatches through AEGON's registry: LJ, Sutton-Chen, TiO2, EMT, ANI, Gaussian, ORCA, MOPAC, GULP, VASP, selected by a single calculator key.
  • Unit-consistent — one units key (eV/atomic/kcal) fixes energy and force together across every calculator.
  • Plain-text input filesINPUT_GLOMOS_<CALCULATOR>_<ALGORITHM>_<SYSTEM>.txt (GEGA/KICK/RTMR), same convention as solids/examples.

Installation

pip install glomos

Requires Python >= 3.10. GLOMOS depends on AEGON with the [ani] extra (installs torch/torchani for the ANI calculator); no separate installation step is needed.


Dependencies

Package Role
aegon [ani] Structure generation, GA operators, unit conversion, and the calculator registry (LJ, SC, TiO2, EMT, ANI, Gaussian, ORCA, MOPAC, GULP, VASP)

All other dependencies (ASE, NumPy, SciPy, Numba, Pydantic, PyYAML, joblib, torch, torchani) come transitively through aegon[ani].


The INPUT file

GLOMOS reads a plain-text input file with a composition block and key-value parameters (parsed by aegon.libstdio.read_main_input):

---COMPOSITION---
H  4
O  2
---COMPOSITION---

#EVOLUTIVE PARAMETERS:
nof_initpop             4    #Initial Population
nof_matings             2    #Number of matings
nof_mutants             2    #Number of mutants

#ENERGY UNITS: eV | atomic (Eh) | kcal (kcal/mol)
units                   kcal   #sets energy AND force units together

#DISCRIMINATION PARAMETERS:
tol_similarity          0.96
tol_energy              0.10
cutoff_energy           10.0
cutoff_population       10

#STOP CRITERION:
nof_generations         10
nof_repeats             3
nof_stagnant            5

#THEORY LEVEL:
calculator              GAUSSIAN
nof_processes           4

#OUTPUT FILE:
initial_file            initial.xyz
output_file             summary.xyz

Calculator-specific keys (metal_symbol for SC, ani_model for ANI, vasp_potcar/vasp_latsp for VASP, the ---GAUSSIAN---/---ORCA---/ ---MOPAC---/---GULP---/---VASP--- route blocks) apply only to the calculator selected. Binary paths and scratch folders come from AEGON's site configuration (python -m aegon.config show), not from this file.


Supported calculators

calculator Backend Native units KICK GEGA RTMR Notes
LJ aegon.libcalc_lj eV Generic Lennard-Jones, no external binary
SC aegon.libcalc_sc eV Sutton-Chen; requires metal_symbol
TIO2 aegon.libcalc_tio2 eV Buckingham + Coulomb + LJ for TiO2
EMT aegon.libcalc_emt eV ASE Effective Medium Theory; Al, Ni, Cu, Pd, Ag, Pt, Au
ANI aegon.libcalc_ani kcal/mol Machine-learned potential (ANI1x/ANI1ccx/ANI2x); requires aegon[ani]
GAUSSIAN Gaussian 16 kcal/mol External binary
ORCA ORCA kcal/mol External binary
MOPAC MOPAC kcal/mol External binary
GULP GULP eV External binary; periodic and cluster-in-vacuum-box
VASP VASP kcal/mol External binary; periodic, requires POTCAR

RTMR is limited to ANI/GAUSSIAN/ORCA/MOPAC — the rest have no organic-molecule parameterization or are otherwise not the tool for a conformer search.


Stochastic kick search

heuristic_kick.py: a population goes through number_of_stages local-opt + discrimination passes, no crossover/mutation. Template-driven engines (Gaussian, ORCA, MOPAC, GULP, VASP) take one input block per stage (---GULP1---/---GULP2---, ---INCAR1---/---KPOINTS1--- for VASP), so stages can run at different levels of theory.

from glomos.heuristic_kick import stochastic_kick

population = stochastic_kick('INPUT_GLOMOS_LJ_KICK_Mo8.txt')

Examples: x_run_glomos_{lj,sc,tio2,emt}_kick_{mo8,cu8,tio2,au8}.py, ..._gulp_kick_cu8.py, ..._{ani,orca,gaussian,vasp}_kick_h2o.py (seeded from the matching GEGA run's summary.xyz), ..._mopac_kick_si5o6.py (MNDO, self-generated population — see Genetic algorithm search), and ..._gaussian_kick_b10.py (multi-stage boron refinement).


Genetic algorithm search

heuristic_ga.py: roulette-wheel crossover/mutation, energy-cutoff + USR deduplication, stop on max generations / repeated isomers / stagnant cycles.

from glomos.heuristic_ga import genetic_algorithm

population = genetic_algorithm('INPUT_GLOMOS_GAUSSIAN_GEGA_H2O.txt')
for mol in population[:5]:
    print(mol.info['i'], mol.info['e'], mol.info['c'])

Population is written to output_file after every generation. Examples: x_run_glomos_{lj,sc,tio2,emt}_gega_{mo8,cu8,tio2,au8}.py, ..._gulp_gega_cu8.py, ..._{ani,orca,gaussian,vasp}_gega_h2o.py, ..._mopac_gega_si5o10.py (MNDO).

Running several searches in sequence

from glomos.heuristic_ga import genetic_algorithm

genetic_algorithm('INPUT_GLOMOS_LJ_GEGA_Mo8.txt')
genetic_algorithm('INPUT_GLOMOS_SC_GEGA_Cu8.txt')
genetic_algorithm('INPUT_GLOMOS_GAUSSIAN_GEGA_H2O.txt')

Rotamer / conformer search

heuristic_ga_rotamers.py: a GA over dihedral angles of a single molecule. Rotatable bonds are identified from the molecular graph of a rotamer_seed XYZ file; no COMPOSITION block.

from glomos.heuristic_ga_rotamers import conformational

population = conformational('INPUT_ROTAMERS.txt')

calculator is ANI (ani_model selects ANI1x/ANI1ccx/ANI2x), MOPAC, GAUSSIAN, or ORCA.

  • examples/INPUT_GLOMOS_MOPAC_RTMR_C8H9NO2.txt / ..._ANI_RTMR_C8H9NO2.txt — paracetamol, ANI1ccx.
  • examples/INPUT_GLOMOS_GAUSSIAN_RTMR_C2H6O.txt / ..._ORCA_RTMR_C2H6O.txt — ethanol, PBE0/Def2SVP.

Citation

If you use GLOMOS in your research, please cite the associated manuscript (in preparation), and the AEGON backend it builds on:

López-Castro C., Ortiz-Chi F., Merino G. An Efficient Growth Pattern Algorithm (GrowPAL) for Cluster Structure Prediction. J. Chem. Theory Comput. 2024, 20, 4939–4948.


Authors

  • Aileen Garcia Cano — Facultad de Ingeniería, Universidad Autónoma de Yucatán, Mérida, México
  • Gabriel Merino — Departamento de Física Aplicada, Cinvestav-IPN, Mérida, México
  • Filiberto Ortiz-Chi — Secihti-Departamento de Física Aplicada, Cinvestav-IPN, Mérida, México

License

See LICENSE.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

glomos-0.3.0.tar.gz (20.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

glomos-0.3.0-py3-none-any.whl (19.1 kB view details)

Uploaded Python 3

File details

Details for the file glomos-0.3.0.tar.gz.

File metadata

  • Download URL: glomos-0.3.0.tar.gz
  • Upload date:
  • Size: 20.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.0

File hashes

Hashes for glomos-0.3.0.tar.gz
Algorithm Hash digest
SHA256 d42b6f238fb60219e27fdd0a72cbc4f5282ab24e18bfa5da1a37f21744317937
MD5 5b9e550ca1dde692a8d24ac27145e8f9
BLAKE2b-256 e165cdd72c5e8d80ef748b61b3839739f99aecd44c2b45be750f3df19b4d8828

See more details on using hashes here.

File details

Details for the file glomos-0.3.0-py3-none-any.whl.

File metadata

  • Download URL: glomos-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 19.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.0

File hashes

Hashes for glomos-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 44aec22754924184e3f53baaf156d02968ec32e1cc4bcc8d7dac8ec95aad8686
MD5 5b57c9d67ae950ac9f1984b205ca3a6a
BLAKE2b-256 e17e22172b7abd09776802d07b5387a080056cebb0459ff18915350b65594906

See more details on using hashes here.

Release history Release notifications | RSS feed

0.3.5

2 files

0.3.4

2 files

0.3.3

2 files

0.3.2

2 files

0.3.1

2 files

This release

0.3.0 This release

2 files

0.2.2

2 files

0.2.1

2 files

0.2.0

2 files

0.1.9

2 files

0.1.8

2 files

0.1.7

2 files

0.1.6

2 files

0.1.5

2 files

0.1.4

2 files

0.1.3

2 files

0.1.2

2 files

0.1.1

2 files

0.1.0

2 files

0.0.9

2 files

0.0.8

2 files

0.0.7

2 files

0.0.6

2 files

0.0.5

2 files

0.0.4

2 files

0.0.3

2 files

0.0.2

2 files

0.0.1

2 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