Configuration

Automacs clearly divides experiment parameters from settings required to run the code. The scientific parameters are placed in experiment files and are designed to be portable. Software locations, hardware settings, and the precise configuration of your copy of automacs are set in two places: one is specific to GROMACS, and the other configures automacs.

GROMACS

Automacs needs to find GROMACS exeuctables at the terminal in order to run your simulations. If you install a single copy of GROMACS for all users, than the default configuration will suffice, but either way, automacs will look for a gromacs configuration file in one of two locations.

Running make prep for the first time causes automacs to check for the configuration. If it can’t find one, it throws an error and asks you to run the configure script. If you run make gromacs_config home, it will write the example configuration file to a hidden file in your home directory at ~/.automacs.py. You can override the global configuration with a local one, written to ./gromacs_config.py, by running make gromacs_config local, or by copying the file to the automacs root directory yourself. We recommend setting up a global configuration for a particular system, and using the local copies to customize particular simulations that might require more or less computing power.

These configuration files consist of a single dictionary called machine_configuration with keys that should correspond to a portion of the hostname. Any key that uniquely matches the hostname provides the configuration for the simulation (otherwise the LOCAL key provides the default configuration). The following example includes an entry for a popular supercomputer in Texas called stampede.

machine_configuration = {
  #---the "LOCAL" machine is default, protected
  'LOCAL':dict(
    gpu_flag = 'auto',
    ),
  'stampede':dict(
    gmx_series = 5,
    #---refer to a string that contains the PBS header flags
    cluster_header = stampede_header,
    ppn = 16,
    walltime = "24:00",
    nnodes = 1,
    #---many systems use the "_mpi" suffix on the executables
    suffix = '',
    #---many systems will only run GROMACS binaries through mpi
    mdrun_command = '$(echo "ibrun -n NPROCS -o 0 mdrun_mpi")',
    allocation = 'ALLOCATION_CODE_HERE',
    submit_command = 'sbatch',
    ),
  }

Users can customize the number of processors per node (ppn), the number of nodes (nnodes), allocation codes, and even the batch submission command so that these jobs can run properly on many different machines. These parameters are packaged into a cluster-continue.sh file within each step directory when users run make cluster on their supercomputing platform. The default configuration provided by make gromacs_config local provides a few useful examples. Users can submit cluster-continue.sh directly to the queue to continue the jobs. The extend and until parameters in the machine configuration are used to set the number of additional or total picoseconds to run for, otherwise the jobs will consume all of the available walltime and gently stop just before it’s up.

Since each cluster typically has its own PBS header format, users can place these in text files (e.g. stampede_header above). Automacs will automatically replaced any capitalized text in these headers with the value corresponding to keys in the machine_configuration dictionary. For example, the nnodes = 1 setting causes NNODES in the stampede_header to be replaced with the number 1. This replacement strategy makes it easy to choose a specific configuration for new jobs, or to set the default configuration on a machine using make gromacs_config home once without having to bother with it when you create new simulations.

Versions

Many systems have multiple copies of GROMACS which can be loaded or unloaded using environment modules. To load a certain module, you can add them to a string or list in the module key in the machine_configuration. You can also add module commands to the cluster header scripts described above.

Automacs

Automacs can use a number of different extension modules which can be easily shared with other users by packaging them in git repositories. Most users will opt to automatically clone several extensions at once using the setup procedure described below. Individual extensions can also be directly added to a copy of automacs using a simple command which manipulates the local config.py file. This file describes all of paths that automacs uses, so that you are free to store your codes wherever you like. Extensions must be added from git repositories using the make set utility, which writes config.py.

make set module ~/path/to/extension.git local/path/to/extension
make set module source="https://github.com/username/extension" spot="inputs/path/to/extension"

The spot argument is unconstrained; you can store the codes anywhere within the root directory. We prefer to put minor extensions in the inputs folder, and major extensions directly in the root directory. The config.py file will change as you add modules and interface functions. A local copy of your config.py is rendered here, as part of the live documentation of this copy of automacs.

Setup

At the top of the documentation we recommend that users run the make setup command. Running e.g. make setup all will pull all of the standard modules from their internet sources (typically github, however private repositories are also allowed as long as you use ssh aliases).

Cloning the proteins code repository (part of the protein and all collections) will give you access to the protein experiment listed under make prep along with a few other experiments. We recommend using this as an example to get familiar with the automacs framework. Running make go protein reset after the setup will run a simulation of the villin headpiece. The starting structure is set in the pdb_source key in the protein experiment file. All of the experiment files can be viewed in this documentation by reading the experiments subsections of the components list.

Config file

This script clones a copy of automacs, and generates an initial copy of config.py with the bare minimum settings. It then uses make set to add extension modules, and to point the code to two command-line interface modules found in amx/cli.py and inputs/docs/docs.py using make set commands. The latter is responsible for compiling this documentation and is written to take advantage of the makefile interface.

Starting simulations often requires starting configurations such as a protein crystal structure or the initial configuration for a polymer or bilayer. These files tend to be large, and should not be packaged alongside code. You can always place them in their own extension module.

Paths

The config.py file describes the rules for finding experiments. Since many extensions may provide many different standalone experiments and test sets, you may have a large list of experiments. Rather than requiring that each experiment has its own file, you can organize multiple experiments into one experiment file. Automacs finds these files according to the inputs item in config.py. This can be a single string with a path to your experiments file, or a list of paths. Any path can contain wildcards. For the most flexibility, you can also set inputs to '@regex^.*?_expts\\.py$', where everything after @regex is a regular expression for matching any file in the automacs subtree. In this example, we require all experiment files to be named e.g. my_experiment_group_expts.py.

Interfaces

Another item in the config.py dictionary is called commands. It provides explicit paths to python scripts containing command-line interface functions described in the interface section.

Bulky inputs

Starting simulations often requires starting configurations such as a protein crystal structure or the initial configuration for a polymer or bilayer. These files tend to be large, and should not be packaged alongside code. You can always place them in their own extension module.

“Live” Docs

This documentation uses the modules list config.py to include the automatic documentation of any extension modules alongside this walkthrough. These are listed in the components section below. Some extensions may only include starting structures or raw data, in which case they will be blank. This scheme ensures that adding codes to your copy of automacs will make it easy to read the accompanying documentation. Each copy of the documentation also serves as a “live” snapshot of the available codes.