From 3d51c6f61e2c8b8eaa026dd613c23e9524c9e9ea Mon Sep 17 00:00:00 2001
From: temok-mx <temok.mx@gmail.com>
Date: Wed, 29 Apr 2020 18:03:14 +0200
Subject: [PATCH] Imported fixes 1-11 @ nomad-lab/parser-gaussian#4 from
 @nomad-fair into @nomad-fair-metainfo

---
 gaussianparser/parser_gaussian.py | 68 +++++++++++++++++++++++++++++--
 1 file changed, 65 insertions(+), 3 deletions(-)

diff --git a/gaussianparser/parser_gaussian.py b/gaussianparser/parser_gaussian.py
index e1c6362..11701ba 100644
--- a/gaussianparser/parser_gaussian.py
+++ b/gaussianparser/parser_gaussian.py
@@ -840,6 +840,7 @@ class GaussianParserContext(object):
               'XA':         [{'name': 'LDA_X_EMPIRICAL'}],
               'VWN':        [{'name': 'LDA_C_VWN'}],
               'VWN3':       [{'name': 'LDA_C_VWN_3'}],
+              'SVWN':       [{'name': 'LDA_X'}, {'name': 'LDA_C_VWN'}],
               'LSDA':       [{'name': 'LDA_X'}, {'name': 'LDA_C_VWN'}],
               'B':          [{'name': 'GGA_X_B88'}],
               'BLYP':       [{'name': 'GGA_C_LYP'}, {'name': 'GGA_X_B88'}],
@@ -893,9 +894,22 @@ class GaussianParserContext(object):
               'BHANDHLYP':  [{'name': 'HYB_GGA_XC_BHANDHLYP'}],
               'APF':        [{'name': 'HYB_GGA_XC_APF'}],
               'APFD':       [{'name': 'HYB_GGA_XC_APFD'}],
+              'HF' :        [{'name': 'HF_HF_X'}],
               'RHF':        [{'name': 'HF_RHF_X'}],
               'UHF':        [{'name': 'HF_UHF_X'}],
               'ROHF':       [{'name': 'HF_ROHF_X'}],
+              'CC':         [{'name': 'HF_CCD'}],
+              'QCID':       [{'name': 'HF_CCD'}],
+              'CCD':        [{'name': 'HF_CCD'}],
+              'CCSD':       [{'name': 'HF_CCSD'}],
+              'CCSD(T)':    [{'name': 'HF_CCSD(T)'}],
+              'CCSD-T':     [{'name': 'HF_CCSD(T)'}],
+              'CI':         [{'name': 'HF_CI'}],
+              'CID':        [{'name': 'HF_CID'}],
+              'CISD':       [{'name': 'HF_CISD'}],
+              'QCISD':      [{'name': 'HF_QCISD'}],
+              'QCISD(T)':   [{'name': 'HF_QCISD(T)'}],
+              'QCISD(TQ)':  [{'name': 'HF_QCISD(TQ)'}],
               'OHSE2PBE':   [{'name': 'HYB_GGA_XC_HSE03'}],
               'HSEH1PBE':   [{'name': 'HYB_GGA_XC_HSE06'}],
               'OHSE1PBE':   [{'name': 'HYB_GGA_XC_HSEOLD'}],
@@ -907,6 +921,29 @@ class GaussianParserContext(object):
               'M062X':      [{'name': 'HYB_MGGA_X_M06_2X'}, {'name': 'MGGA_C_M06_2X'}],
               'M06HF':      [{'name': 'HYB_MGGA_X_M06_HF'}, {'name': 'MGGA_C_M06_HF'}],
               'M11':        [{'name': 'HYB_MGGA_X_M11'}, {'name': 'MGGA_C_M11'}],
+              'MP2':        [{'name': 'HF_MP2'}],
+              'MP3':        [{'name': 'HF_MP3'}],
+              'MP4':        [{'name': 'HF_MP4'}],
+              'MP4(DQ)':    [{'name': 'HF_MP4(DQ)'}],
+              'MP4(SDQ)':   [{'name': 'HF_MP4(SDQ)'}],
+              'MP4(SDTQ)':  [{'name': 'HF_MP4SDTQ'}],
+              'MP5':        [{'name': 'HF_MP5'}],
+              'AM1':        [{'name': 'HYB_AM1'}],
+              'PM3':        [{'name': 'HYB_PM3'}],
+              'PM3MM':      [{'name': 'HYB_PM3MM'}],
+              'PM3D3':      [{'name': 'HYB_PM3D3'}],
+              'PM6':        [{'name': 'HYB_PM6'}],
+              'PM7':        [{'name': 'HYB_PM7'}],
+              'PM7R6':      [{'name': 'HYB_PM7R6'}],
+              'PM7MOPAC':   [{'name': 'HYB_PM7MOPAC'}],
+              'CBS-4':      [{'name': 'HYB_CBS-4'}],
+              'CBS-4M':     [{'name': 'HYB_CBS-4M'}],
+              'CBS-4O':     [{'name': 'HYB_CBS-4O'}],
+              'CBS-APNO':   [{'name': 'HYB_CBS-APNO'}],
+              'CBS-Q':      [{'name': 'HYB_CBS-Q'}],
+              'CBS-QB3':    [{'name': 'HYB_CBS-QB3'}],
+              'CBS-QB3O':   [{'name': 'HYB_CBS-QB3O'}],
+              'ROCBS-QB3':  [{'name': 'HYB_ROCBS-QB3'}],
               'SOGGA11X':   [{'name': 'HYB_GGA_X_SOGGA11_X'}, {'name': 'HYB_GGA_X_SOGGA11_X'}],
               'MN12SX':     [{'name': 'HYB_MGGA_X_MN12_SX'}, {'name': 'MGGA_C_MN12_SX'}],
               'N12SX':      [{'name': 'HYB_GGA_X_N12_SX'}, {'name': 'GGA_C_N12_SX'}],
@@ -922,6 +959,15 @@ class GaussianParserContext(object):
               'MPW2PLYPD':  [{'name': 'HYB_MPW2PLYPD'}],
               'B2PLYPD3':   [{'name': 'HYB_B2PLYPD3'}],
               'MPW2PLYPD3': [{'name': 'HYB_MPW2PLYPD3'}],
+              'G1':         [{'name': 'HYB_G1'}],
+              'G2':         [{'name': 'HYB_G2'}],
+              'G2MP2':      [{'name': 'HYB_G2MP2'}],
+              'G3':         [{'name': 'HYB_G3'}],
+              'G3B3':       [{'name': 'HYB_G3B3'}],
+              'G3MP2':      [{'name': 'HYB_G3MP2'}],
+              'G3MP2B3':    [{'name': 'HYB_G3MP2B3'}],
+              'G4':         [{'name': 'HYB_G4'}],
+              'G4MP2':      [{'name': 'HYB_G4MP2'}],
               'LC-':        [{'name': 'GGA_X_ITYH_LONG_RANGE'}],
              }
 
@@ -934,6 +980,9 @@ class GaussianParserContext(object):
               'PM3MM':     [{'name': 'PM3MM'}],
               'PM3D3':     [{'name': 'PM3D3'}],
               'PM6':       [{'name': 'PM6'}],
+              'PM7':       [{'name': 'PM7'}],
+              'PM7R6':     [{'name': 'PM7R6'}],
+              'PM7MOPAC':  [{'name': 'PM7MOPAC'}],
               'PDDG':      [{'name': 'PDDG'}],
               'CNDO':      [{'name': 'CNDO'}],
               'INDO':      [{'name': 'INDO'}],
@@ -949,16 +998,20 @@ class GaussianParserContext(object):
               'ROHF':      [{'name': 'ROHF'}],
               'GVB':       [{'name': 'GVB'}],
               'DFT':       [{'name': 'DFT'}],
+              'CI':        [{'name': 'CI'}],
               'CID':       [{'name': 'CID'}],
               'CISD':      [{'name': 'CISD'}],
               'CIS':       [{'name': 'CIS'}],
               'BD':        [{'name': 'BD'}],
               'BD(T)':     [{'name': 'BD(T)'}],
+              'CC':        [{'name': 'CCD'}],
+              'QCID':      [{'name': 'CCD'}],
               'CCD':       [{'name': 'CCD'}],
               'CCSD':      [{'name': 'CCSD'}],
               'EOMCCSD':   [{'name': 'EOMCCSD'}],
               'QCISD':     [{'name': 'QCISD'}],
               'CCSD(T)':   [{'name': 'CCSD(T)'}],
+              'CCSD-T':    [{'name': 'CCSD(T)'}],
               'QCISD(T)':  [{'name': 'QCISD(T)'}],
               'QCISD(TQ)': [{'name': 'QCISD(TQ)'}],
               'MP2':       [{'name': 'MP2'}],
@@ -982,13 +1035,16 @@ class GaussianParserContext(object):
               'G3MP2B3':   [{'name': 'G3MP2B3'}],
               'G4':        [{'name': 'G4'}],
               'G4MP2':     [{'name': 'G4MP2'}],
-              'CBSEXTRAP':   [{'name': 'CBSExtrapolate'}],
-              'CBSEXTRAPOLATE':   [{'name': 'CBSExtrapolate'}],
+              'CBS-4':     [{'name': 'CBS-4'}],
               'CBS-4M':    [{'name': 'CBS-4M'}],
               'CBS-4O':    [{'name': 'CBS-4O'}],
+              'CBS-APNO':  [{'name': 'CBS-APNO'}],
+              'CBS-Q':     [{'name': 'CBS-Q'}],
               'CBS-QB3':   [{'name': 'CBS-QB3'}],
               'CBS-QB3O':  [{'name': 'CBS-QB3O'}],
-              'CBS-APNO':  [{'name': 'CBS-APNO'}],
+              'CBSEXTRAP':   [{'name': 'CBSExtrapolate'}],
+              'CBSEXTRAPOLATE':   [{'name': 'CBSExtrapolate'}],
+              'ROCBS-QB3': [{'name': 'ROCBS-QB3'}],
               'W1U':       [{'name': 'W1U'}],
               'W1BD':      [{'name': 'W1BD'}],
               'W1RO':      [{'name': 'W1RO'}],
@@ -1088,6 +1144,7 @@ class GaussianParserContext(object):
                method1 = method1.upper()
                for x in method1.split():
                   method2 = str(x)
+                  method2 = method2.split('=')[0]  # remove options, if present
                   if method2 != 'RHF' and method2 != 'UHF' and method2 != 'ROHF' and method2 != 'UFF':
                      if (method2[0] == 'R' and method2[0:2] != 'RO') or method2[0] == 'U':
                         methodprefix = method2[0]
@@ -1209,9 +1266,14 @@ class GaussianParserContext(object):
                        pass
           else:
                method1 = settings.split()
+               method1 = settings.upper()
+               method1 = method1.replace("['#p ","").replace("['#P ","").replace("['#","").replace("']","")
+               method1 = method1.split()
+
                for x in method1:
                   method2 = str(x)
                   method2 = method2.upper()
+                  method2 = method2.split('=')[0]  # remove options, if present
                   if method2 != 'RHF' and method2 != 'UHF' and method2 != 'ROHF' and method2 != 'UFF':
                     if (method2[0] == 'R' and method2[0:2] != 'RO') or method2[0] == 'U':
                       methodprefix = method2[0]
-- 
GitLab