Using JAX, we created a fully differentiable Hückel model where all parameters are optimized with respect to some reference data.
We implemented various atom-atom interaction functions.
-
constant (
--beta c
) -
exponential (
--beta exp
) -
linear (
--beta linear
) -
absolute exponential (
--beta exp_abs
) -
absolute linear (
--beta linear_abs
) -
absolute exponential with no gradient for
(
--beta exp_abs_freezeR
) -
absolute linear with no gradient for
(
--beta linear_abs_freezeR
)
python main.py *args
--N
, number of training data points--l
, integer (for random number startjax.random.PRNGKey(l)
)--lr
, initial learning rate--batch_size
, batch size--job
, type of job (options['opt','pred','pred_def']
)opt
-> trainingpred
-> prediction of test setpred_def
-> prediction using default parameters (from literature)
--obs
, objective to optimize, options[homo_lumo,pol]
--beta
, beta function (['c','linear','exp','linear_abs','exp_freezeR','exp_abs_freezeR','linear_freezeR','linear_abs_freezeR']
)
python main.py --N 101 --obs pol --lr 2E-2 --l 0 --batch_size 32 --job opt --beta c -Wdecay h_x h_xy
python main.py --N 50 --job pred --beta exp_abs
The data set is a subset of GDB-13, all molecules encompass cyclic
Total data:
- training: 100,000 (file name:
/huxel/data/data_gdb13_training.npy
) - test: 40,000 (file name:
/huxel/data/data_gdb13_test.npy
)
HOMO-LUMO gap
Reference data was computed at the TDA-SCS-PBEPP86/def2-SVP level of theory using Orca (version 5.0.1).
Polarizability
Reference data for molecular polarizabilities were computed using dftd4 (version 3.4.0) via the default methodology, summing atomic polarizabilities.