Skip to content
/ botnet Public

Code for the paper titled "The Design Space of E(3)-Equivariant Atom-Centered Interatomic Potentials".

Notifications You must be signed in to change notification settings

gncs/botnet

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

BOTNet

Implementation of a set of interatomic potentials in the design space of equivariant message passing. (very badly said).

Installation

To install the dependencies on cpu run following line,

sbatch ./scripts/setup_env.sh

For cuda depdencies, edit the second line of the file from "CUDA"=cpu to the prefered version of cuda (eg. cu102).

Experiments

All the experiments of the paper can be reproduced from the command line using the parser script. We first give a detail example on how to train a scale shifted BOTNet on 3BPA configurations at 300K :

# Run command
python3 ./botnet-main/scripts/run_train.py \
    --dataset="3bpa" \    #Select the dataset (choices 3bpa, acac, ethanol, iso17, md17)
    --subset="train_300K" \   #Select the training file {subset}.xyz
    --seed=2 \  
    --model="scale_shift_non_linear" \ #Select the type of model to use
    --device=cuda \
    --max_num_epochs=3000 \
    --patience=256 \  #Number of increasing loss before stopping training
    --name="Botnet_3BPA" \ 
    --energy_weight=27.0 \ #Weight of the energy in the loss (recommanded equal to the average number of atoms in the training set)
    --forces_weight=729.0 \ #Weight of the forces in the loss (recommanded to the square of the number of atoms in the training set).
    --hidden_irreps='80x0o + 80x0e + 80x1o + 80x1e + 80x2o + 80x2e + 80x3o + 80x3e' \ #The irreducible representations of hidden features in the network
    --batch_size=5 \
    --interaction_first="AgnosticNonlinearInteractionBlock" \ #The type of interaction to use at the first layer
    --interaction="AgnosticResidualNonlinearInteractionBlock" \ #The type of interaction to use for all the subsequent layers
    --ema \ # Enables the exponential moving average
    --ema_decay=0.99 \ # Exponential moving average decay rate
    --scaling='rms_forces_scaling' \ #Type of normalization to apply
    --weight_decay=0.0 \ #Weight decay, recommanded to keep at 0
    --restart_latest \

BOTNet Scale Shifted

To run Agnostic Scale Shifted BOTNet (meaning no chemical dependency in the radial basis) select,

    --model="scale_shift_non_linear" #Select the type of model to use
    --interaction_first="AgnosticNonlinearInteractionBlock" \ #The type of interaction to use at the first layer
    --interaction="AgnosticResidualNonlinearInteractionBlock" \ #The type of interaction to use for all the subsequent layers

To run Element Dependent Scale Shifted BOTNet (meaning chemical dependency in the radial basis) select,

    --model="scale_shift_non_linear" #Select the type of model to use
    --interaction_first="AgnosticNonlinearInteractionBlock" \ #The type of interaction to use at the first layer
    --interaction="ResidualElementDependentInteractionBlock" \ #The type of interaction to use for all the subsequent layers

To run Fully Residual Element Dependent Scale Shifted BOTNet (meaning chemical dependency in the radial basis and residual even at the first layer) select,

    --model="scale_shift_non_linear" #Select the type of model to use
    --interaction_first="ResidualElementDependentInteractionBlock" \ #The type of interaction to use at the first layer
    --interaction="ResidualElementDependentInteractionBlock" \ #The type of interaction to use for all the subsequent layers

BOTNet E0

To run Agnostic BOTNet (meaning no chemical dependency in the radial basis and residual even at the first layer) select,

    --model="body_ordered_non_linear" #Select the type of model to use
    --interaction_first="AgnosticNonlinearInteractionBlock" \ #The type of interaction to use at the first layer
    --interaction="AgnosticResidualNonlinearInteractionBlock" \ #The type of interaction to use for all the subsequent layers

To run Element Depedent BOTNet (meaning chemical dependency in the radial basis and residual even at the first layer) select,

    --model="body_ordered_non_linear" #Select the type of model to use
    --interaction_first="AgnosticNonlinearInteractionBlock" \ #The type of interaction to use at the first layer
    --interaction="ResidualElementDependentInteractionBlock" \ #The type of interaction to use for all the subsequent layers

NequIP

To run NequIP select,

    --model="scale_shift_non_linear_single_readout" #Select the type of model to use
    --interaction_first="NequIPInteractionBlock" \ #The type of interaction to use at the first layer
    --interaction="NequIPInteractionBlock" \ #The type of interaction to use for all the subsequent layers
    --gate="None" \

NequIP Linear

To run NequIP Linear (meaning no non linearities except in the radial basis) select,

    --model="scale_shift_non_linear_single_readout" #Select the type of model to use
    --interaction_first="AgnosticResidualNonlinearInteractionBlock" \ #The type of interaction to use at the first layer
    --interaction="AgnosticResidualNonlinearInteractionBlock" \ #The type of interaction to use for all the subsequent layers
    --gate="None" \

Figures

Contacts

Ilyes Batatia: [email protected]

Gregor Simm:

About

Code for the paper titled "The Design Space of E(3)-Equivariant Atom-Centered Interatomic Potentials".

Resources

Stars

Watchers

Forks