Active Learning Workflows#
Two distinct mechanisms share the name “active learning” in Enerzyme documentation.
Decision guide#
Enerzyme internal dataset AL — All candidates already in one labeled dataset; resample via
withheldpartitionEnerzymette-driven loop — New geometries from MD/PLUMED; QM on fragments
Enerzyme internal dataset AL#
Single command:
enerzyme train -c active_learning_train.yaml -o al_out/
Key settings:
Trainer.committee_size> 1Trainer.active_learning_params.active: truedata_source: withheldpicking_method:max_Fa_norm_std,mean_Fa_std, orrandompicking_paramserror bounds filter trivial or divergent samplesSplitterwith smalltrainingand largewithheld
Picking references:
Chem. Inf. Model. 2024, 64, 6377-6387
Comput. Phys. Commun. 2020, 253, 107206
Does not run simulate, extract, or annotate.
Enerzymette-driven external loop#
Managed by:
enerzymette enerzyme_active_learning \
-p parent_model_dir \
-sc config/simulate.yaml \
-ec config/extract.yaml \
-ac config/annotate.yaml \
-tc config/train.yaml \
-n <iterations> -np <presim_steps> \
-cp <calc_patch> -pp <plumed_plugin> \
-rp <reference.pdb> -ts <template.sdf>
Additional flags: --initial-scan, -nis, --initial-structures-config, -ix, -mc, -cl, --reset_parameters, -rm. See Active Learning for Neural Network Potentials for descriptions.
Per-iteration stages#
MD —
FFxx_md/(simulation.yaml,plumed.traj.xyz,plumed.traj.pkl)Prediction — uncertainty on trajectory frames
Extraction —
FFxx_extraction/FFxx_fragments.sdfAnnotation — QM on fragments →
fragments.pklTraining — merge data,
pretrain_pathfrom previous model, newsuffixModel —
FFxx/checkpoints for next round
Structure pool#
The launcher rotates starting geometries through structure_pool.json and structure_pool/*.xyz. Pool initialization:
Default —
System.structure_filefrom-sctemplate-ix— custom initial XYZ--initial-scan—initial_scan/local_minima/after chainedplumed_scan--initial-structures-config— one entry per system from a manifest YAML
Multi-system manifest entries require name, reference_pdb, and simulation_config per system; optional reference_sdf and reference_xyz. Topology is written to topology/<name>/. Multi-system mode excludes --initial-scan, -rp, -ts, -ix, and proton_transfer in templates.
Task folder template#
task_root/
|-- al.sh
|-- cluster.xyz
|-- cluster.mol
|-- structure_pool.json
|-- structure_pool/
|-- config/
| |-- simulate.yaml # sampling policy; paths filled per round
| |-- extract.yaml # data_path null in template
| |-- annotate.yaml # Supplier.path empty in template
| `-- train.yaml # architecture; paths/suffix filled per round
|-- FF02-0 -> parent_pretrained_model
|-- FF02-0_md/
|-- FF02-0_prediction/
|-- FF02-0_extraction/
|-- FF02-0_fragments/
|-- FF02-0_training/
`-- FF02-1/
Template rewrite rules#
simulate.yaml—System.structure_file→FFxx_md/initial_structure.xyzextract.yaml—Datahub.data_path→ trajectory pickle;reference_mol_path→ per-systemtopology/<name>/cluster.molin multi-system modeannotate.yaml—Supplier.path→ fragment SDFtrain.yaml—pretrain_path,suffix, dataset paths, UDDBmay update from validation error
Initial scans#
Integrated —
--initial-scanonenerzymette enerzyme_active_learningpopulatesstructure_pool/before iteration 0Standalone —
enerzymette enerzyme_scanin separatescan-*folders for manual exploration or input preparation
Failure recovery#
Archive
config.yamland checkpoints each iterationResume training with
Trainer.resume: 2inside a round if needed;-clsets this automatically on later AL iterationsEnerzymette
-rmrestraint mode and structure-pool state files support resuming mid-campaign
See also Active Learning for Neural Network Potentials for a tutorial-style walkthrough and Enerzymette Integration.