Source code for qcdb.modelchems

from __future__ import absolute_import
from __future__ import print_function
try:
    from collections import OrderedDict
except ImportError:
    from .oldpymodules import OrderedDict

# thinking now that QCEssential should have one doi and dictionary of
# citations. that way the doi contains the record of the definition of the
# QCEssential but several publications (each with their own doi-s) can be
# associated with the Essential (e.g., original theoretical definition,
# current implementation, expanded atom range, reparameterization)

# links to GitHub Psi4 files accepted as doi for the present

[docs]class Citation(object): """Class to hold reference to a single published scientific work """ def __init__(self, doi, fullname=None, dsdbid=None, comment=None): """ """ self.doi = doi.lower() self.fullname = fullname self.dsdbid = dsdbid self.comment = comment def __str__(self): text = '' text += """ ==> Citation <==\n\n""" text += """ DOI: %s\n""" % (self.doi) text += """ PDF database id: %s\n""" % (self.dsdbid) text += """ Formal Name: %s\n""" % (self.fullname) text += """ Comment: %s\n""" % (self.comment) text += """\n""" return text
[docs]class QCEssential(object): """Class to link literature and external representation of some aspect of quantum chemistry (basis set, method, etc.) with a shorthand and indexed representation of same. """ def __init__(self, name, fullname=None, latex=None, citations=None, doi=None, comment=None): """ """ self.name = name.lower() self.fullname = fullname if fullname is not None and latex is None: self.latex = fullname else: self.latex = latex # OrderedDict of roles as keys and qcdb.Citation as values if citations is None: self.citations = OrderedDict() else: self.citations = citations self.doi = doi self.comment = comment def __str__(self): text = '' text += """ ==> %s QCEssential <==\n\n""" % (self.name) text += """ Formal name: %s\n""" % (self.fullname) text += """ LaTeX representation: %s\n""" % (self.latex) text += """ DOI: %s\n""" % (self.doi) text += """ Literature citations:\n""" for rol, cit in self.citations.iteritems(): text += """ %17s: %s\n""" (rol, cit.doi) text += """ Comment: %s\n""" % (self.comment) text += """\n""" return text
[docs]class Publication(QCEssential): """Specialization of :py:class:`QCEssential` for computational chemistry publications, presumably containing many quantum chemistry results. """ def __init__(self, name, fullname=None, latex=None, dsdbid=None, doi=None, comment=None, owner=None): primary = Citation(doi=doi, fullname=fullname, dsdbid=dsdbid) cits = OrderedDict() cits['primary'] = primary QCEssential.__init__(self, name=name, fullname=primary.fullname, latex=latex, citations=cits, doi=primary.doi, comment=comment) self.name = name.lower() self.owner = owner.upper() def __str__(self): text = '' text += """ ==> %s Publication <==\n\n""" % (self.name) text += """ Formal name: %s\n""" % (self.fullname) text += """ LaTeX representation: %s\n""" % (self.latex) text += """ Owner: %s\n""" % (self.owner) text += """ DOI: %s\n""" % (self.doi) text += """ Literature citations:\n""" for rol, cit in self.citations.iteritems(): text += """ %-17s %s\n""" % (rol, cit.doi) text += """ Comment: %s\n""" % (self.comment) text += """\n""" return text
[docs]class BasisSet(QCEssential): """Specialization of :py:class:`QCEssential` for basis sets. """ def __init__(self, name, fullname=None, latex=None, citations=None, doi=None, comment=None, zeta=None, build=None): QCEssential.__init__(self, name, fullname, latex, citations, doi, comment) self.name = name.lower() self.zeta = zeta self.build = [[self.name]] if build is None else build def __str__(self): text = '' text += """ ==> %s BasisSet Treatment <==\n\n""" % (self.name) text += """ Formal name: %s\n""" % (self.fullname) text += """ LaTeX representation: %s\n""" % (self.latex) text += """ Zeta: %s\n""" % (self.zeta) text += """ CBS build: %s\n""" % (self.build) text += """ DOI: %s\n""" % (self.doi) text += """ Literature citations:\n""" for rol, cit in self.citations.iteritems(): text += """ %17s: %s\n""" (rol, cit.doi) text += """ Comment: %s\n""" % (self.comment) text += """\n""" return text
[docs]class Method(QCEssential): """Specialization of :py:class:`QCEssential` for quantum chemical methods. """ def __init__(self, name, fullname=None, latex=None, citations=None, doi=None, comment=None): QCEssential.__init__(self, name, fullname, latex, citations, doi, comment) self.name = name.upper() def __str__(self): text = '' text += """ ==> %s Method <==\n\n""" % (self.name) text += """ Formal name: %s\n""" % (self.fullname) text += """ LaTeX representation: %s\n""" % (self.latex) text += """ DOI: %s\n""" % (self.doi) text += """ Literature citations:\n""" for rol, cit in self.citations.iteritems(): text += """ %17s: %s\n""" (rol, cit.doi) text += """ Comment: %s\n""" % (self.comment) text += """\n""" return text
[docs]class Error(QCEssential): """Specialization of :py:class:`QCEssential` for measures of error. """ def __init__(self, name, fullname=None, latex=None, citations=None, doi=None, comment=None): QCEssential.__init__(self, name, fullname, latex, citations, doi, comment) self.name = name.lower() def __str__(self): text = '' text += """ ==> %s Error Measure <==\n\n""" % (self.name) text += """ Formal name: %s\n""" % (self.fullname) text += """ LaTeX representation: %s\n""" % (self.latex) text += """ DOI: %s\n""" % (self.doi) text += """ Literature citations:\n""" for rol, cit in self.citations.iteritems(): text += """ %17s: %s\n""" (rol, cit.doi) text += """ Comment: %s\n""" % (self.comment) text += """\n""" return text
#class Option(QCEssential): # """Specialization of :py:class:`QCEssential` for computation variation. # # """ # def __init__(self, name, fullname=None, latex=None, citations=None, doi=None, comment=None): # QCEssential.__init__(self, name, fullname, latex, citations, doi, comment) # self.name = name #.lower() # # def __str__(self): # text = '' # text += """ ==> %s Computation Mode <==\n\n""" % (self.name) # text += """ Formal name: %s\n""" % (self.fullname) # text += """ LaTeX representation: %s\n""" % (self.latex) # text += """ DOI: %s\n""" % (self.doi) # text += """ Literature citations:\n""" # for rol, cit in self.citations.iteritems(): # text += """ %17s: %s\n""" (rol, cit.doi) # text += """ Comment: %s\n""" % (self.comment) # text += """\n""" # return text _tlist = [ Publication('dhdft', doi='', dsdbid='', owner='CAC', fullname=""), Publication('dft', doi='10.1063/1.3545971', dsdbid='Burns:2011:084107', owner='LAB', fullname="""Density-Functional Approaches to Noncovalent Interactions: A Comparison of Dispersion Corrections (DFT-D), Exchange-Hole Dipole Moment (XDM) Theory, and Specialized Functions. L. A. Burns, A. Vazquez-Mayagoitia, B. G. Sumpter, and C. D. Sherrill, J. Chem. Phys. 134(8), 084107/1-25 (2011)"""), Publication('saptone', doi='10.1063/1.4867135', dsdbid='Parker:2014:094106', owner='LAB', fullname="""Levels of Symmetry Adapted Perturbation Theory (SAPT). I. Efficiency and Performance for Interaction Energies. T. M. Parker, L. A. Burns, R. M. Parrish, A. G. Ryno, and C. D. Sherrill, J. Chem. Phys. 140(9), 094106/1-16 (2014)"""), Publication('pt2', doi='10.1063/1.4903765', dsdbid='Burns:2014:234111', owner='LAB', fullname="""Appointing Silver and Bronze Standards for Noncovalent Interactions: A Comparison of Spin-Component-Scaled (SCS), Explicitly Correlated (F12), and Specialized Wavefunction Approaches. L. A. Burns, M. S. Marshall, and C. D. Sherrill, J. Chem. Phys. 141(23), 234111/1-21 (2014)"""), Publication('s22b', doi='10.1063/1.3659142', dsdbid='Marshall:2011:194102', owner='LAB', fullname="""Basis Set Convergence of the Coupled-Cluster Correction, delta_MP2^CCSD(T): Best Practices for Benchmarking Noncovalent Interactions and the Attendant Revision of the S22, NBC10, HBC6, and HSG Databases. M. S. Marshall, L. A. Burns, and C. D. Sherrill, J. Chem. Phys. 135(19), 194102/1-10 (2011)"""), Publication('dilabio', doi='10.1021/ct400149j', dsdbid='Burns:2014:49', owner='LAB', fullname="""Comparing Counterpoise-Corrected, Uncorrected, and Averaged Binding Energies for Benchmarking Noncovalent Interactions. L. A. Burns, M. S. Marshall, and C. D. Sherrill, J. Chem. Theory Comput. 10(1), 49-57 (2014)"""), Publication('achc', doi='10.1021/acs.jctc.5b00588', dsdbid='', owner='TMP', fullname="""Assessment of Empirical Models versus High-Accuracy Ab Initio Methods for Nucleobase Stacking: Evaluating the Importance of Charge Penetration"""), Publication('pt2uncp', doi='', dsdbid='', owner='LAB', fullname=''), Publication('dfit', doi='', dsdbid='', owner='DGAS', fullname=''), Publication('merz3', doi='', dsdbid='', owner='LAB', fullname=''), Publication('bfdbmm', doi='', dsdbid='', owner='LAB', fullname=''), Publication('saptmisc', doi='', dsdbid='', owner='', fullname=''), Publication('bfdbdft', doi='', dsdbid='', owner='', fullname=''), Publication('silver', doi='', dsdbid='', owner='', fullname=''), Publication('anon', doi='', dsdbid='', owner='', fullname=''), Publication('f12dilabio', doi='', dsdbid='', owner='', fullname=''), ] pubs = {} for item in _tlist: pubs[item.name] = item _tlist = [ BasisSet('dz', fullname='cc-pVDZ'), BasisSet('jadz', fullname='jun-cc-pVDZ'), BasisSet('hadz', fullname='heavy-aug-cc-pVDZ'), BasisSet('adz', fullname='aug-cc-pVDZ'), BasisSet('addz', fullname='aug-cc-pV(D+d)Z'), BasisSet('tz', fullname='cc-pVTZ'), BasisSet('matz', fullname='may-cc-pVTZ'), BasisSet('jatz', fullname='jun-cc-pVTZ'), BasisSet('hatz', fullname='heavy-aug-cc-pVTZ'), BasisSet('atz', fullname='aug-cc-pVTZ'), BasisSet('qz', fullname='cc-pVQZ'), BasisSet('aaqz', fullname='apr-cc-pVQZ'), BasisSet('maqz', fullname='may-cc-pVQZ'), BasisSet('jaqz', fullname='jun-cc-pVQZ'), BasisSet('haqz', fullname='heavy-aug-cc-pVQZ'), BasisSet('aqz', fullname='aug-cc-pVQZ'), BasisSet('a5z', fullname='aug-cc-pV5Z'), BasisSet('dtz', fullname='cc-pVDTZ', build=[None, ['tz', 'dtz']]), BasisSet('jadtz', fullname='jun-cc-pVDTZ', build=[None, ['jatz', 'jadtz']]), BasisSet('hadtz', fullname='heavy-aug-cc-pVDTZ', build=[None, ['hatz', 'hadtz']]), BasisSet('adtz', fullname='aug-cc-pVDTZ', build=[['adtz'], ['atz', 'adtz']]), BasisSet('tqz', fullname='cc-pVTQZ', build=[None, ['qz', 'tqz']]), BasisSet('matqz', fullname='may-cc-pVTQZ', build=[None, ['maqz', 'matqz']]), BasisSet('jatqz', fullname='jun-cc-pVTQZ', build=[None, ['jaqz', 'jatqz']]), BasisSet('hatqz', fullname='heavy-aug-cc-pVTQZ', build=[None, ['haqz', 'hatqz']]), BasisSet('atqz', fullname='aug-cc-pVTQZ', build=[['atqz'], ['aqz', 'atqz']]), BasisSet('aq5z', fullname='aug-cc-pVQ5Z', build=[['aq5z'], ['a5z', 'aq5z']]), BasisSet('a6z', fullname='aug-cc-pV6Z'), BasisSet('a56z', fullname='aug-cc-pV56Z', build=[['a56z'], ['a6z', 'a56z']]), BasisSet('atzdz', fullname='[aTZ; D:DZ]', latex="""[aTZ; $\delta$:DZ]""", build=[None, None, ['atz', 'atz', 'dz']]), BasisSet('adtzdz', fullname='[aDTZ; D:DZ]', latex="""[aDTZ; $\delta$:DZ]""", build=[None, None, ['atz', 'adtz', 'dz']]), BasisSet('atqzdz', fullname='[aTQZ; D:DZ]', latex="""[aTQZ; $\delta$:DZ]""", build=[None, None, ['aqz', 'atqz', 'dz']]), BasisSet('atzjadz', fullname='[aTZ; D:jaDZ]', latex="""[aTZ; $\delta$:jaDZ]""", build=[None, None, ['atz', 'atz', 'jadz']]), BasisSet('adtzjadz', fullname='[aDTZ; D:jaDZ]', latex="""[aDTZ; $\delta$:jaDZ]""", build=[None, None, ['atz', 'adtz', 'jadz']]), BasisSet('atqzjadz', fullname='[aTQZ; D:jaDZ]', latex="""[aTQZ; $\delta$:jaDZ]""", build=[None, None, ['aqz', 'atqz', 'jadz']]), BasisSet('atzhadz', fullname='[aTZ; D:haDZ]', latex="""[aTZ; $\delta$:haDZ]""", build=[None, None, ['atz', 'atz', 'hadz']]), BasisSet('adtzhadz', fullname='[aDTZ; D:haDZ]', latex="""[aDTZ; $\delta$:haDZ]""", build=[None, None, ['atz', 'adtz', 'hadz']]), BasisSet('atqzhadz', fullname='[aTQZ; D:haDZ]', latex="""[aTQZ; $\delta$:haDZ]""", build=[None, None, ['aqz', 'atqz', 'hadz']]), BasisSet('atzadz', fullname='[aTZ; D:aDZ]', latex="""[aTZ; $\delta$:aDZ]""", build=[None, None, ['atz', 'atz', 'adz']]), BasisSet('adtzadz', fullname='[aDTZ; D:aDZ]', latex="""[aDTZ; $\delta$:aDZ]""", build=[None, None, ['atz', 'adtz', 'adz']]), BasisSet('atqzadz', fullname='[aTQZ; D:aDZ]', latex="""[aTQZ; $\delta$:aDZ]""", build=[None, None, ['aqz', 'atqz', 'adz']]), BasisSet('aq5zadz', fullname='[aQ5Z; D:aDZ]', latex="""[aQ5Z; $\delta$:aDZ]""", build=[None, None, ['a5z', 'aq5z', 'adz']]), BasisSet('atzdtz', fullname='[aTZ; D:DTZ]', latex="""[aTZ; $\delta$:DTZ]""", build=[None, None, ['atz', 'atz', 'dtz']]), BasisSet('atqzdtz', fullname='[aTQZ; D:DTZ]', latex="""[aTQZ; $\delta$:DTZ]""", build=[None, None, ['aqz', 'atqz', 'dtz']]), BasisSet('atzjadtz', fullname='[aTZ; D:jaDTZ]', latex="""[aTZ; $\delta$:jaDTZ]""", build=[None, None, ['atz', 'atz', 'jadtz']]), BasisSet('atqzjadtz', fullname='[aTQZ; D:jaDTZ]', latex="""[aTQZ; $\delta$:jaDTZ]""", build=[None, None, ['aqz', 'atqz', 'jadtz']]), BasisSet('atzhadtz', fullname='[aTZ; D:haDTZ]', latex="""[aTZ; $\delta$:haDTZ]""", build=[None, None, ['atz', 'atz', 'hadtz']]), BasisSet('atqzhadtz', fullname='[aTQZ; D:haDTZ]', latex="""[aTQZ; $\delta$:haDTZ]""", build=[None, None, ['aqz', 'atqz', 'hadtz']]), BasisSet('atzadtz', fullname='[aTZ; D:aDTZ]', latex="""[aTZ; $\delta$:aDTZ]""", build=[None, None, ['atz', 'atz', 'adtz']]), BasisSet('atqzadtz', fullname='[aTQZ; D:aDTZ]', latex="""[aTQZ; $\delta$:aDTZ]""", build=[None, None, ['aqz', 'atqz', 'adtz']]), BasisSet('aq5zadtz', fullname='[aQ5Z; D:aDTZ]', latex="""[aQ5Z; $\delta$:aDTZ]""", build=[None, None, ['a5z', 'aq5z', 'adtz']]), BasisSet('atqztz', fullname='[aTQZ; D:TZ]', latex="""[aTQZ; $\delta$:TZ]""", build=[None, None, ['aqz', 'atqz', 'tz']]), BasisSet('atqzjatz', fullname='[aTQZ; D:jaTZ]', latex="""[aTQZ; $\delta$:jaTZ]""", build=[None, None, ['aqz', 'atqz', 'jatz']]), BasisSet('atqzmatz', fullname='[aTQZ; D:maTZ]', latex="""[aTQZ; $\delta$:maTZ]""", build=[None, None, ['aqz', 'atqz', 'matz']]), BasisSet('atqzhatz', fullname='[aTQZ; D:haTZ]', latex="""[aTQZ; $\delta$:haTZ]""", build=[None, None, ['aqz', 'atqz', 'hatz']]), BasisSet('atqzatz', fullname='[aTQZ; D:aTZ]', latex="""[aTQZ; $\delta$:aTZ]""", build=[None, None, ['aqz', 'atqz', 'atz']]), BasisSet('aq5zatz', fullname='[aQ5Z; D:aTZ]', latex="""[aQ5Z; $\delta$:aTZ]""", build=[None, None, ['a5z', 'aq5z', 'atz']]), BasisSet('aq5zhatz', fullname='[aQ5Z; D:haTZ]', latex="""[aQ5Z; $\delta$:haTZ]""", build=[None, None, ['a5z', 'aq5z', 'hatz']]), BasisSet('haq5zatz', fullname='[haQ5Z; D:aTZ]', latex="""[haQ5Z; $\delta$:aTZ]""", build=[None, None, ['ha5z', 'haq5z', 'atz']]), BasisSet('aq5zaqz', fullname='[aQ5Z; D:aQZ]', latex="""[aQ5Z; $\delta$:aQZ]""", build=[None, None, ['a5z', 'aq5z', 'aqz']]), BasisSet('tqz631gs025',fullname='[TQZ; D:631G*(0.25)', latex="""[TQZ; $\delta$:631gs025]""", build=[None, None, ['qz', 'tqz', '631gs025']]), BasisSet('dzf12', fullname='cc-pVDZ-F12'), BasisSet('tzf12', fullname='cc-pVTZ-F12'), BasisSet('qzf12', fullname='cc-pVQZ-F12'), BasisSet('5zf12', fullname='cc-pV5Z-F12'), BasisSet('dtzf12', fullname='cc-pVDTZ-F12', build=[['dtzf12'], ['tzf12', 'dtzf12']]), BasisSet('tqzf12', fullname='cc-pVTQZ-F12', build=[['tqzf12'], ['qzf12', 'tqzf12']]), BasisSet('q5zf12', fullname='cc-pVQ5Z-F12', build=[['q5zf12'], ['5zf12', 'q5zf12']]), BasisSet('hill1_adtz', build=[['hillcc_adtz'], ['atz', 'hillcc_adtz']]), # TODO should have None or non-xtpl first element? BasisSet('hill1_atqz', build=[['hillcc_atqz'], ['aqz', 'hillcc_atqz']]), BasisSet('hill1_aq5z', build=[['hillcc_aq5z'], ['a5z', 'hillcc_aq5z']]), BasisSet('hill1_dtzf12', build=[['hillcc_dtzf12'], ['tzf12', 'hillcc_dtzf12']]), BasisSet('hill1_tqzf12', build=[['hillcc_tqzf12'], ['qzf12', 'hillcc_tqzf12']]), BasisSet('hill2_dtzf12', build=[None, None, ['tzf12', 'hillcc_dtzf12', 'hillt_dtzf12']]), BasisSet('hill2_tqzf12', build=[None, None, ['qzf12', 'hillcc_tqzf12', 'hillt_tqzf12']]), BasisSet('hill2_adtz', build=[None, None, ['atz', 'hillcc_adtz', 'hillt_adtz']]), BasisSet('hill2_atqz', build=[None, None, ['aqz', 'hillcc_atqz', 'hillt_atqz']]), BasisSet('hill2_aq5z', build=[None, None, ['a5z', 'hillcc_aq5z', 'hillt_aq5z']]), BasisSet('dadz', fullname='double-aug-cc-pVDZ'), BasisSet('datz', fullname='double-aug-cc-pVTZ'), BasisSet('631pgs', fullname='6-31+G(d)'), BasisSet('6311pg_3df_2p_', fullname='6-311+G(3df,2p)'), BasisSet('6311ppg_3df_2p_', fullname='6-311++G(3df,2p)'), BasisSet('631gs025', fullname='6-31G*(0.25)'), BasisSet('def2qzvp', fullname='def2-QZVP'), BasisSet('na', fullname='no applicable basis'), ] bases = {} for item in _tlist: bases[item.name] = item # Key name must be [A-Z], [0-9], and _, being either all upper or all lowercase according to Essential # fullname can be anything on the keyboard, no ascii codes # latex can contain escape codes for LaTeX _tlist = [ Method('SAPT0', fullname='SAPT0'), Method('SAPT0S', fullname='sSAPT0', latex=r"""$\textit{s}$SAPT0"""), #latex="""\\textit{s}SAPT0"""), Method('SAPTSCS', fullname='SCS-SAPT0'), Method('SAPTDFT', fullname='DFT-SAPT'), Method('SAPT2', fullname='SAPT2'), Method('SAPT2P', fullname='SAPT2+'), Method('SAPT3', fullname='SAPT2+(3)'), Method('SAPT3F', fullname='SAPT2+3'), Method('SAPT2PC', fullname='SAPT2+(CCD)'), Method('SAPT3C', fullname='SAPT2+(3)(CCD)'), Method('SAPT3FC', fullname='SAPT2+3(CCD)'), Method('SAPT2PM', fullname='SAPT2+dMP2', latex="""SAPT2+$\delta$MP2"""), Method('SAPT3M', fullname='SAPT2+(3)dMP2', latex="""SAPT2+(3)$\delta$MP2"""), Method('SAPT3FM', fullname='SAPT2+3dMP2', latex="""SAPT2+3$\delta$MP2"""), Method('SAPT2PCM', fullname='SAPT2+(CCD)dMP2', latex="""SAPT2+(CCD)$\delta$MP2"""), Method('SAPT3CM', fullname='SAPT2+(3)(CCD)dMP2', latex="""SAPT2+(3)(CCD)$\delta$MP2"""), Method('SAPT3FCM', fullname='SAPT2+3(CCD)dMP2', latex="""SAPT2+3(CCD)$\delta$MP2"""), Method('SAPT2LCM', fullname='MP2(CCD)', comment="""Identical to SAPT2+(CCD)dMP2"""), Method('HF', fullname='HF'), Method('MP2', fullname='MP2'), Method('SCSMP2', fullname='SCS-MP2'), Method('SCSNMP2', fullname='SCS(N)-MP2'), Method('SCSMIMP2', fullname='SCS(MI)-MP2'), Method('DWMP2', fullname='DW-MP2'), Method('MP2C', fullname='MP2C'), Method('MP3', fullname='MP3'), Method('MP25', fullname='MP2.5'), Method('CCSD', fullname='CCSD'), Method('SCSCCSD', fullname='SCS-CCSD'), Method('SCSMICCSD', fullname='SCS(MI)-CCSD'), Method('CCSDT', fullname='CCSD(T)'), Method('HFCABS', fullname='HF-CABS'), Method('MP2F12', fullname='MP2-F12'), Method('SCSMP2F12', fullname='SCS-MP2-F12'), Method('SCSNMP2F12', fullname='SCS(N)-MP2-F12'), Method('SCSMIMP2F12', fullname='SCS(MI)-MP2-F12'), Method('DWMP2F12', fullname='DW-MP2-F12'), Method('MP2CF12', fullname='MP2C-F12'), Method('CCSDAF12', fullname='CCSD-F12a'), Method('CCSDBF12', fullname='CCSD-F12b'), Method('CCSDCF12', fullname='CCSD-F12c'), Method('SCSCCSDAF12', fullname='SCS-CCSD-F12a'), Method('SCSCCSDBF12', fullname='SCS-CCSD-F12b'), Method('SCSCCSDCF12', fullname='SCS-CCSD-F12c'), Method('SCMICCSDAF12', fullname='SCS(MI)-CCSD-F12a'), Method('SCMICCSDBF12', fullname='SCS(MI)-CCSD-F12b'), Method('SCMICCSDCF12', fullname='SCS(MI)-CCSD-F12c'), Method('CCSDTABAVGF12', fullname='AVG-CCSD(T**)-F12'), Method('CCSDTAF12', fullname='CCSD(T**)-F12a'), Method('CCSDTBF12', fullname='CCSD(T**)-F12b'), Method('CCSDTCF12', fullname='CCSD(T**)-F12c'), Method('DWCCSDTF12', fullname='DW-CCSD(T**)-F12'), # build=lambda: ['DW-CCSD(T**)-F12 TOTAL ENERGY'], # ['HF-CABS TOTAL ENERGY', 'DW-CCSD(T**)-F12 CORRELATION ENERGY'], # ['HF-CABS TOTAL ENERGY', 'MP2-F12 CORRELATION ENERGY', 'DW-CCSD(T**)-F12 CC CORRECTION ENERGY'], # ['HF-CABS TOTAL ENERGY', 'MP2-F12 CORRELATION ENERGY', 'DW-CCSD-F12 CC CORRECTION ENERGY', 'DW-(T**)-F12 CORRECTION ENERGY']) Method('B97', fullname='B97'), Method('B97D2', fullname='B97-D2'), Method('B97D3', fullname='B97-D3'), Method('B97D3BJ', fullname='B97-D3(BJ)'), Method('B97D3M', fullname='B97-D3M'), Method('B97D3MBJ', fullname='B97-D3M(BJ)'), Method('B3LYP', fullname='B3LYP'), Method('B3LYPD2', fullname='B3LYP-D2'), Method('B3LYPD3', fullname='B3LYP-D3'), Method('B3LYPD3BJ', fullname='B3LYP-D3(BJ)'), Method('B3LYPXDM', fullname='B3LYP-XDM'), Method('B3LYPD3M', fullname='B3LYP-D3M'), Method('B3LYPD3MBJ', fullname='B3LYP-D3M(BJ)'), Method('B2PLYP', fullname='B2PLYP'), Method('B2PLYPD2', fullname='B2PLYP-D2'), Method('B2PLYPD3', fullname='B2PLYP-D3'), Method('B2PLYPD3BJ', fullname='B2PLYP-D3(BJ)'), Method('B2PLYPD3M', fullname='B2PLYP-D3M'), Method('B2PLYPD3MBJ', fullname='B2PLYP-D3M(BJ)'), Method('M052X', fullname='M05-2X'), Method('M052XD3', fullname='M05-2X-D3'), Method('M062X', fullname='M06-2X'), Method('M062XD3', fullname='M06-2X-D3'), Method('M08HX', fullname='M08-HX'), Method('M08SO', fullname='M08-SO'), Method('M11', fullname='M11'), Method('M11L', fullname='M11L'), Method('XYG3', fullname='XYG3'), Method('DLDFD', fullname='dlDF+D'), Method('DSDPBEP86', fullname='DSD-PBEP86'), # this a real thing? Method('DSDPBEP86D2OPT', fullname='DSD-PBEP86-D2opt'), # email version of DSD Method('DSDPBEP86D2', fullname='DSD-PBEP86-D2'), Method('DSDPBEP86D3', fullname='DSD-PBEP86-D3'), Method('DSDPBEP86D3BJ', fullname='DSD-PBEP86-D3(BJ)'), Method('VV10', fullname='VV10'), Method('LCVV10', fullname='LC-VV10'), Method('WB97XD', fullname='wB97X-D', latex="""$\omega$B97X-D"""), Method('WB97X2', fullname='wB97X-2', latex="""$\omega$B97X-2"""), Method('WB97XV', fullname='wB97X-V', latex="""$\omega$B97X-V"""), Method('PBE', fullname='PBE'), Method('PBED2', fullname='PBE-D2'), Method('PBED3', fullname='PBE-D3'), Method('PBED3BJ', fullname='PBE-D3(BJ)'), Method('PBED3M', fullname='PBE-D3M'), Method('PBED3MBJ', fullname='PBE-D3M(BJ)'), Method('PBE0', fullname='PBE0'), Method('PBE0D2', fullname='PBE0-D2'), Method('PBE0D3', fullname='PBE0-D3'), Method('PBE0D3BJ', fullname='PBE0-D3(BJ)'), Method('PBE0D3M', fullname='PBE0-D3M'), Method('PBE0D3MBJ', fullname='PBE0-D3M(BJ)'), Method('PBE02', fullname='PBE0-2'), Method('WPBE', fullname='wPBE', latex="""$\omega$PBE"""), Method('WPBED3', fullname='wPBE-D3', latex="""$\omega$PBE-D3"""), Method('WPBED3BJ', fullname='wPBE-D3(BJ)', latex="""$\omega$PBE-D3(BJ)"""), Method('WPBED3M', fullname='wPBE-D3M', latex="""$\omega$PBE-D3M"""), Method('WPBED3MBJ', fullname='wPBE-D3M(BJ)', latex="""$\omega$PBE-D3M(BJ)"""), Method('CCSDTNSAF12', fullname='CCSD(T)-F12a'), Method('CCSDTNSBF12', fullname='CCSD(T)-F12b'), Method('CCSDTNSCF12', fullname='CCSD(T)-F12c'), Method('B970', fullname='B970'), Method('B970D2', fullname='B970-D2'), Method('BP86', fullname='BP86'), Method('BP86D2', fullname='BP86-D2'), Method('BP86D3', fullname='BP86-D3'), Method('BP86D3BJ', fullname='BP86-D3(BJ)'), Method('BP86D3M', fullname='BP86-D3M'), Method('BP86D3MBJ', fullname='BP86-D3M(BJ)'), Method('BLYP', fullname='BLYP'), Method('BLYPD2', fullname='BLYP-D2'), Method('BLYPD3', fullname='BLYP-D3'), Method('BLYPD3BJ', fullname='BLYP-D3(BJ)'), Method('BLYPD3M', fullname='BLYP-D3M'), Method('BLYPD3MBJ', fullname='BLYP-D3M(BJ)'), Method('CCSDTQ', fullname='CCSDT(Q)'), Method('CCSDFULLT', fullname='CCSDT'), Method('CCSDTSAF12', fullname='CCSD(T*)-F12a'), Method('CCSDTSBF12', fullname='CCSD(T*)-F12b'), Method('CCSDTSCF12', fullname='CCSD(T*)-F12c'), Method('DWCCSDTNSF12', fullname='DW-CCSD(T)-F12'), Method('DWCCSDTSF12', fullname='DW-CCSD(T*)-F12'), Method('DELTQ', fullname='d(TQ)', latex="""$\delta$(TQ)"""), # TODO kill this once non-IE impl in reap-DB Method('DEL2T', fullname='d(T)', latex="""$\delta$(T)"""), # TODO kill this once non-IE impl in reap-DB Method('AM1', fullname='AM1'), Method('GAFF', fullname='GAFF'), Method('PM6DH2', fullname='PM6-DH2'), Method('CHARMM', fullname='CHARMM'), Method('PM3', fullname='PM3'), Method('PM6', fullname='PM6'), Method('PDDG', fullname='PDDG'), Method('FF03', fullname='FF03'), Method('FF03A', fullname='FF03A'), Method('FF99SB', fullname='FF99SB'), Method('FF99SBA', fullname='FF99SBA'), Method('AM1FS1', fullname='AM1FS1'), Method('EFP', fullname='EFP'), ] methods = {} for item in _tlist: methods[item.name] = item _tlist = [ Error('pexe', fullname='pexE'), Error('nexe', fullname='nexE'), Error('maxe', fullname='maxE'), Error('mine', fullname='minE'), Error('me', fullname='ME'), Error('mae', fullname='MAE'), Error('rmse', fullname='rmsE'), Error('stde', fullname='stdE'), Error('pexpe', fullname='pexPE'), Error('nexpe', fullname='nexPE'), Error('maxpe', fullname='maxPE'), Error('minpe', fullname='minPE'), Error('mpe', fullname='MPE'), Error('mape', fullname='MAPE', latex=r"""MA$\%$E"""), #latex="""MA\%E"""), Error('rmspe', fullname='rmsPE'), Error('stdpe', fullname='stdPE'), Error('pexpbe', fullname='pexPBE'), Error('nexpbe', fullname='nexPBE'), Error('maxpbe', fullname='maxPBE'), Error('minpbe', fullname='minPBE'), Error('mpbe', fullname='MPBE'), Error('mapbe', fullname='MAPBE', latex=r"""MA$\%$BE"""), #latex="""MA\%BE"""), Error('rmspbe', fullname='rmsPBE'), Error('stdpbe', fullname='stdPBE'), ] errors = {} for item in _tlist: errors[item.name] = item #_tlist = [ # Option('CP', fullname='CP'), # Option('unCP', fullname='unCP'), #] #options = {item.name: item for item in _tlist}