Layer Stack#
Enerzyme builds models as ordered layers rather than monolithic classes. The architecture name selects a Core; pre- and post-core layers handle geometry, embeddings, physics, and output reductions.
Registered layers#
From enerzyme/models/layers/:
- Geometry
DistanceLayer,RangeSeparationLayer,RadiusGraphLayer- Radial basis
GaussianSmearing,ExponentialGaussianRBFLayer,ExponentialBernsteinRBFLayer,BesselRBFLayer,BernsteinRBFLayer,SincRBFLayer- Embeddings
RandomAtomEmbedding,NuclearEmbedding,ElectronicEmbedding,ScalarDenseEmbedding,GatherAtomEmbedding- Core
Architecture-specific message passing (
Corewitharchitecturein Modelhub)- Physics / post-processing
AtomicAffine,ChargeConservation,ElectrostaticEnergy,AtomicCharge2Dipole,GrimmeD3Energy,GrimmeD4Energy,ZBLRepulsionEnergy- Output
EnergyReduce,Force,ShallowEnsembleReduce
Typical charge-aware stack#
layers:
- name: RangeSeparation
- name: ExponentialBernsteinRBF
- name: NuclearEmbedding
- name: ElectronicEmbedding
params:
attribute: charge
- name: Core
params:
num_modules: 6
shallow_ensemble_size: 10
- name: AtomicAffine
- name: ChargeConservation
- name: ElectrostaticEnergy
params:
flavor: SpookyNet
dielectric_constant: 10.0
- name: AtomicCharge2Dipole
- name: EnergyReduce
- name: ShallowEnsembleReduce
params:
var: [E]
train_only: true
- name: Force
- name: ShallowEnsembleReduce
params:
var: [E, Fa]
eval_only: true
Layer ordering matters#
Build geometric features (range separation, RBFs)
Embed atoms and optional scalar features
Message passing (
Core)Normalize atomic outputs (
AtomicAffine)Enforce physics (charge conservation, electrostatics, dispersion)
Reduce to molecular properties (
EnergyReduce)Optional ensemble statistics
Analytic forces via autograd (
Force)
Monitoring energy terms#
Optional Trainer.Monitor lists terms such as E_ele (electrostatic), E_disp (D3/D4), E_zbl for debugging layer contributions during training.