Welcome to the Otago Research Genetic Algorithm for Nanoclusters, Including Structural Methods and Similatity (Organisms) documentation!
Section author: Geoffrey Weal <geoffrey.weal@gmail.com>
Section author: Dr. Anna Garden <anna.garden@otago.ac.nz>
Group page: https://blogs.otago.ac.nz/annagarden/
Page to cite with work from: Development of a Structural Comparison Method to Promote Exploration of the Potential Energy Surface in the Global Optimisation of Nanoclusters, Geoffrey R. Weal, Samantha M. McIntyre, and Anna L. Garden, J. Chem. Inf. Model., 2021, 61 (4), 1732-1744 DOI: 10.1021/acs.jcim.0c01128.
What is this Documentation about?
This documentation is designed to guide the user to use the Otago Research Genetic Algorithm for Nanoclusters, Including Structural Methods and Similatity (Organisms) program.
What is Organisms
The Otago Research Genetic Algorithm for Nanoclusters, Including Structural Methods and Similarity (Organisms) program is designed to perform a genetic algorithm global optimisation for nanoclusters. It has been designed with inspiration from the Birmingham Cluster Genetic Algorithm and the Birmingham Parallel Genetic Algorithm from the Roy Johnston Group
(see J. B. A. Davis, A. Shayeghi, S. L. Horswell, R. L. Johnston, Nanoscale, 2015,7, 14032
(https://doi.org/10.1039/C5NR03774C or link to Davis pdf here)
and
R. L. Johnston, Dalton Trans., 2003, 4193–4207
(https://doi.org/10.1039/B305686D or link to Johnston pdf here).
This algorithm is designed to explore the potential energy surface of a cluster system, using the genetic algorithm, and to local the putative globally lowest energetic cluster. It was designed for obtaining low energy structures of clusters that could be catalytically interesting. The algorithm was designed by Dr Anna Garden and the Garden group at the University of Otago, Dunedin, New Zealand. See for more information about what the group does at blogs.otago.ac.nz/annagarden. The Github page for this program can be found at github.com/GardenGroupUO/Organisms.
The genetic algorithm uses the ideas of Darwin’s theory of evolution to locate the global minimum.
This implementation of the genetic algorithm includes various predation, fitness and epoch operators. Also included is the SCM-based predation operator and a ‘’structure + energy’’ fitness operator.
The SCM-based predation operator compares the structures of clusters together and excludes clusters from the population that are too similar to each other.
The ‘’structure + energy’’ fitness operator is designed to include a portion of structural diversity into the fitness value as well as energy. The goal of this fitness operator is to guide the genetic algorithm around to unexplored areas of a cluster’s potential energy surface.
With the use of Atomic Simulation Environment, this algorithm has been designed so that you can record all the clusters you make, or just the important ones such as the lowest energy clusters that you make
Try Organisms before you Clone/Pip/Conda (on Binder/Jupter Notebooks)!
If you are new to the Organisms program, it is recommended try it out by running Organisms live on our interactive Jupyter+Binder page before you download it. On Jupyter+Binder, you can play around with the Organisms program on the web. You do not need to install anything to try Organisms out on Jupyter+Binder.
Click the Binder button below to try Organisms out on the web! (The Binder page may load quickly or may take 1 or 2 minutes to load)
Installation
It is recommended to read the installation page before using the Organisms program. See Installation: Setting Up the Organisms Program and Pre-Requisites Packages for more information. Note that you can install Organisms through pip3
and conda
.
Table of Contents
- How the Otago Research Genetic Algorithm for Nanoclusters, Including Structural Methods and Similatity (Organisms) Program Works
- Installation: Setting Up the Organisms Program and Pre-Requisites Packages
- How To Use The Organisms Program
- Run.py - Running the Genetic Algorithm
- Files Made During the Genetic Algorithm
- Examples of Running the Organisms Program with Run.py
- RunMinimisation.py - Writing a Local Minimisation Function for the Genetic Algorithm
- MakeTrials.py - Creating Multiple, Repeated Genetic Algorithm Trials
- Safely Finishing the Genetic Algorithm Midway through the Algorithm
- Restarting the Genetic Algorithm
- Common Issues of the Genetic Algorithm and Ways to Solve Them
- Randomly generated clusters all explode when creating the initial population
- My cluster does not locally minimise properly of there is an error with ASAP
- I have tried to run my genetic algorithm, but it won’t run because it says that a file called
ga_running.lock
exists in the genetic algorithms directory - The ase database website is not formatted correct/format is hard to use
- I am having issues that some jobs are not submitted to slurm every so often when running
Run_mass_submitSL_slurm.py
and it is having to resubmit jobs - I found that when the fitness operator gave a
ZeroDivisionError
error when trying to obtain theCNA_fitness_contribution
or the energy fitness value ofrho_i
- I can not run programs from
Subsidiary_Programs
,Postprocessing_Programs
, orHelpful_Programs
, get the error when I run a program/usr/bin/env: python3: No such file or directory
- Helpful Programs to Create and Run the Genetic Algorithm
- What to make sure is done before running any of these scripts.
get_newly_initilised_population.py
- Creating an initial population of randomly generated clustersRun_submitSL_slurm.py
- How to execute all the Run.py files for all Trial folders in slurmRun_mass_submitSL_slurm.py
- How to execute all Trials using the JobArray Slurm Job Submission Schememake_finish_files.py
- How to safely exit a genetic algorithm that not completed all generationsremove_finish_files.py
- Removing allfinish
files from many directoriesremove_lock_files.py
- Removing allga_running.lock
files from many directories
- Helpful Programs for Gathering data and Post-processing Data
- What to make sure is done before running any of these scripts.
Did_Complete.py
- Have all your genetic algorithm trials completed?Did_Find_LES.py
- Did all your genetic algorithm trials find the global minimum?GetLESOfAllTrials.py
- Get information of generations and number of minimisations performedPostprocessing_Database.py
andPostprocessing_Many_Databases_Together.py
- For breaking a large database into smaller chunksPostprocessing_Many_Databases_Together.py
- For compiling all databases from all your trials together and breaking them up into smaller chunks if neededdatabase_viewer.py
- Viewing GA databases with ASE database website viewer with metadatamake_energy_vs_similarity_results.py
- For analysing the genetic algorithm under-the-hoodremove_blank_arrayJobs.py
- For removing blankarrayJob
output and error files outside ofTrials
foldersremove_overall_arrayJobs.py
- For removing allarrayJob
output and error files outside ofTrials
folderstar_trials_collectively.py
- Tar allTrials
folders (and other files and folders)untar_trials_collectively.py
- Untar allTrials
folders (and other files and folders)
- Information about using the make_energy_vs_similarity_results.py script
- Other Helpful Programs for Gathering data and Post-processing Data
- Initialising a New Population
- Using Predation Operators with the Genetic Algorithm
- Using Fitness Operators with the Genetic Algorithm
- The Structural Comparison Method (SCM)
- Using the Memory Operator
- Using Epoch Methods
- Recording Clusters From The Genetic Algorithm
- Using Databases with the Genetic Algorithm
- Adding Surfaces
- The Genetic Algorithm Python Files
- Index
- Python Module Index