QM Annotation#
enerzyme annotate drives batch quantum chemistry on structures from a Supplier and writes labeled pickles for training. Entry: enerzyme/annotate.py.
Command#
enerzyme annotate -c annotate.yaml -o labeled/ -t tmp/ -s 0 -e -1
-t— scratch directory for QM jobs-s,-e— slice supplier records (0-based start, exclusive end;-1= all)
Configuration#
Supplier:
path: fragments.sdf
QMDriver:
engine: TeraChem
bs: 6-31gs
xc: b3lyp
pcm: cosmo
dftd: d3
pcm_radii_file: /path/to/pcm_radii
epsilon: 10
keep_molden: false
keep_output: false
clean_tmp: true
pickle_name: fragments.pkl
dump_single_run: false
n_processes: 8
Suppliers#
Implemented in enerzyme/data/supplier.py:
SDFSupplier— SDF with formal charges (RDKit)PickleSupplier— pre-built datapoint lists
annotate.py currently wires TeraChem only (enerzyme/qm/qm_driver.py). Other engines (ORCA, PySCF, Psi4) may exist as stubs — verify before use.
QMDriver options#
n_processes— parallel QM submissionsdump_single_run— cache per-structure outputskeep_output/keep_molden— retain QC logsclean_tmp— remove scratch after success
Output schema#
Labeled pickle fields should map to Datahub the same way as raw training data (coord → Ra, grad → Fa with negative_gradient, etc.).
Merging into training#
Run annotate on extracted fragments
Merge
fragments.pklintotraining_set.pkl/validation_set.pklUpdate
Datahub.datasetspaths in the nexttrain.yaml
Environment#
terachemonPATHwith valid licensePCM radius file when using
pcm: cosmoor similarRDKit for SDF parsing