Implementation of a set of interatomic potentials in the design space of equivariant message passing. (very badly said).
To install the dependencies on cpu run following line,
sbatch ./scripts/setup_env.shFor cuda depdencies, edit the second line of the file from "CUDA"=cpu to the prefered version of cuda (eg. cu102).
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 \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 layersTo 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 layersTo 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 layersTo 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 layersTo 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 layersTo 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" \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" \Ilyes Batatia: [email protected]
Gregor Simm: