Code author: Lori A. Burns
Section author: Lori A. Burns
Function to access the molecule objects and reference energies of popular chemical databases.
Aliases : | db() |
---|---|
Returns: | (float) Mean absolute deviation of the database in kcal/mol |
Psi variables: |
|
Note
It is very easy to make a database from a collection of xyz files using the script psi4/lib/scripts/ixyz2database.pl. See Creating a Database for details.
Caution
Some features are not yet implemented. Buy a developer some coffee.
Note
To access a database that is not embedded in a PSI4 distribution, add the path to the directory containing the database to the environment variable PYTHONPATH.
Parameters: |
|
---|---|
Examples : |
>>> # [1] Two-stage SCF calculation on short, equilibrium, and long helium dimer
>>> db('scf','RGC10',cast_up='sto-3g',subset=['HeHe-0.85','HeHe-1.0','HeHe-1.5'], tabulate=['scf total energy','natom'])
>>> # [2] Counterpoise-corrected interaction energies for three complexes in S22
>>> # Error statistics computed wrt an old benchmark, S22A
>>> database('dfmp2','S22',cp=1,subset=[16,17,8],benchmark='S22A')
>>> # [3] SAPT0 on the neon dimer dissociation curve
>>> db('sapt0',subset='NeNe',cp=0,symm=0,db_name='RGC10')
>>> # [4] Optimize system 1 in database S22, producing tables of scf and mp2 energy
>>> db('mp2','S22',db_func=optimize,subset=[1], tabulate=['mp2 total energy','current energy'])
>>> # [5] CCSD on the smallest systems of HTBH, a hydrogen-transfer database
>>> database('ccsd','HTBH',subset='small', tabulate=['ccsd total energy', 'mp2 total energy'])
At the beginning of a database job is printed a listing of the individual system calculations which will be performed. The output snippet below is from the example job [1] above. It shows each reagent required for the subset of database reactions requested. Note that this is an un-counterpoise-corrected example, and the wrapper is smart enough to compute only once the monomer whose energy will be subtracted from each of the three dimers.
RGC1-HeHe-0.85-dimer
RGC1-He-mono-unCP
RGC1-HeHe-1.0-dimer
RGC1-HeHe-1.5-dimer
At the end of the job, the Requested Energy table is printed that gives the total energies for the requested model chemistry for each reagent and each reaction, as well as the stoichoimetric weights by which the reagent energies are transfromed into the reaction energy. In this case, the dimer is +1 and the monomer is -2, indicating the the interaction energy is computed from dimer less first monomer less second (identical) monomer. Error statistics are computed with respect to the reference energies stored in the database. One of these, the mean absolute deviation, is returned by the wrapper as an ordinary Python variable. (For databases without a stored reference energy, e.g., BASIC, large and meaningless numbers are printed for error.) The other two tables tabulate the PSI variables requested through keyword tabulate, in this case the total SCF energy and the number of atoms in each reagent.
==> Scf Total Energy <==
-----------------------------------------------------------------------------------
Reaction Reaction Value Reagent 1 Reagent 2
Value Wt Value Wt
-----------------------------------------------------------------------------------
RGC1-HeHe-0.85 0.00011520 -5.71020576 1 -2.85516048 -2
RGC1-HeHe-1.0 0.00000153 -5.71031943 1 -2.85516048 -2
RGC1-HeHe-1.5 -0.00000000 -5.71032096 1 -2.85516048 -2
-----------------------------------------------------------------------------------
==> Natom <==
-----------------------------------------------------------------------------------
Reaction Reaction Value Reagent 1 Reagent 2
Value Wt Value Wt
-----------------------------------------------------------------------------------
RGC1-HeHe-0.85 0.00000000 2.00000000 1 1.00000000 -2
RGC1-HeHe-1.0 0.00000000 2.00000000 1 1.00000000 -2
RGC1-HeHe-1.5 0.00000000 2.00000000 1 1.00000000 -2
-----------------------------------------------------------------------------------
==> Requested Energy <==
-----------------------------------------------------------------------------------
Reaction Reaction Energy Error Reagent 1 Reagent 2
Ref Calc [kcal/mol] [H] Wt [H] Wt
-----------------------------------------------------------------------------------
RGC1-HeHe-0.85 0.0376 0.0723 0.0347 -5.71020576 1 -2.85516048 -2
RGC1-HeHe-1.0 -0.0219 0.0010 0.0228 -5.71031943 1 -2.85516048 -2
RGC1-HeHe-1.5 -0.0029 -0.0000 0.0029 -5.71032096 1 -2.85516048 -2
-----------------------------------------------------------------------------------
Minimal Dev 0.0029
Maximal Dev 0.0347
Mean Signed Dev 0.0201
Mean Absolute Dev 0.0201
RMS Dev 0.0240
-----------------------------------------------------------------------------------
As well as being printed in the output file, database results from the tabulate option are available in the input file as ordinary Python dictionaries DB_RGT and DB_RXN, indexed firstly by reagent or reaction name and secondly by the requested PSI variable name. See the first paragraph of Creating a Database for the distinction between reagents and reactions. For example, an input file like the following requests a couple variables through tabulate and then makes use of the resulting data structures, here, only to print.
set basis 6-31g*
db('dfmp2','s22',subset='small',tabulate=['CURRENT ENERGY','DF-MP2 CORRELATION ENERGY'])
from pprint import pprint
print_stdout('\nDB_RGT')
pprint(DB_RGT)
print_stdout('\nDB_RXN')
pprint(DB_RXN)
print_stdout('\ndf-mp2 interaction energy of water dimer (S22-2)')
print_stdout(DB_RXN['S22-2']['CURRENT ENERGY'])
The output to the screen is as follows.
DB_RGT
{'S22-16-dimer': {'CURRENT ENERGY': -155.37373581838636,
'DF-MP2 CORRELATION ENERGY': -0.523870772178089},
'S22-16-monoA-unCP': {'CURRENT ENERGY': -78.29412053242164,
'DF-MP2 CORRELATION ENERGY': -0.2629759351596186},
'S22-16-monoB-unCP': {'CURRENT ENERGY': -77.07606823017188,
'DF-MP2 CORRELATION ENERGY': -0.2594122526144091},
'S22-2-dimer': {'CURRENT ENERGY': -152.40958884746667,
'DF-MP2 CORRELATION ENERGY': -0.3797598812113561},
'S22-2-monoA-unCP': {'CURRENT ENERGY': -76.19905879745446,
'DF-MP2 CORRELATION ENERGY': -0.1887118848315123},
'S22-2-monoB-unCP': {'CURRENT ENERGY': -76.19902978067739,
'DF-MP2 CORRELATION ENERGY': -0.18857384937354635},
'S22-8-dimer': {'CURRENT ENERGY': -80.67416758080654,
'DF-MP2 CORRELATION ENERGY': -0.2844102558783027},
'S22-8-monoA-unCP': {'CURRENT ENERGY': -40.336952636980364,
'DF-MP2 CORRELATION ENERGY': -0.14185962536715307},
'S22-8-monoB-unCP': {'CURRENT ENERGY': -40.336952636980506,
'DF-MP2 CORRELATION ENERGY': -0.14185962536715097}}
DB_RXN
{'S22-16': {'CURRENT ENERGY': -0.0035470557928363178,
'DF-MP2 CORRELATION ENERGY': -0.0014825844040612934},
'S22-2': {'CURRENT ENERGY': -0.011500269334817403,
'DF-MP2 CORRELATION ENERGY': -0.0024741470062974724},
'S22-8': {'CURRENT ENERGY': -0.0002623068456699684,
'DF-MP2 CORRELATION ENERGY': -0.0006910051439986686}}
df-mp2 interaction energy of water dimer (S22-2)
-0.0115002693348
Below are documented for particular databases the availibility of the generic database function options cp, rlxd, benchmark, and the string options for subset. The full reagent member list, which can also be used in conjunction with subset, is not included here for consideration of space and may be found in the database file. The database Python files are very readable and should be consulted for more particular questions.