From c1279328436955e36fadc360cd705f09f691b3ba Mon Sep 17 00:00:00 2001
From: Fawzi Mohamed <fawzi.mohamed@fhi-berlin.mpg.de>
Date: Wed, 31 Jan 2018 15:48:30 +0100
Subject: [PATCH] fix orca program_name, program_basis_set_type

---
 parser/parser-orca/orca_parser.py | 33 +++++++++++++------------------
 1 file changed, 14 insertions(+), 19 deletions(-)

diff --git a/parser/parser-orca/orca_parser.py b/parser/parser-orca/orca_parser.py
index ef1f073..a6487df 100644
--- a/parser/parser-orca/orca_parser.py
+++ b/parser/parser-orca/orca_parser.py
@@ -249,21 +249,14 @@ class OrcaContext(object):
         tdm[:, 2] = z
         backend.addArrayValues("transition_dipole_moments", tdm)
 
-#    def onClose_x_orca_basis_set_info(self, backend, gIndex, value):
-#            x = value["x_orca_atom_labels"]
-#            y = value["x_orca_basis_set"]
-#            z = value["x_orca_basis_set_contracted"]
-#            basisSet = np.zeros((len(x),3), dtype=float)
-#            basisSet[:,0] = x
-#            basisSet[:,1] = y
-#            basisSet[:,2] = z
-#            backend.addArrayValue("program_basis_set_type", 'Gaussian' + basisSet)
-#
-#    def onClose_x_orca_program_name(self, backend, gIndex, value):
-#            x = 'ORCA'
-#            y = value["x_orca_program_version"]
-#            z = value["x_orca_program_compilation_date"]
-#            backend.addValue("program_name", x + y + z)
+    def onClose_section_run(self, backend, gIndex, value):
+        versionPieces = [value[x] for x in ["x_orca_program_version", "x_orca_program_svn", "x_orca_program_compilation_date", "x_orca_program_compilation_time"]]
+        version = []
+        for v in versionPieces:
+            if v:
+                version.append(v[0])
+        if version:
+            backend.addValue("program_version", " ".join(version))
 
 ##########################################################
 ############    [2] MAIN PARSER STARTS HERE   ############
@@ -290,13 +283,15 @@ def build_OrcaMainFileSimpleMatcher():
         startReStr = r"\s*\* O  R  C  A \*\s*",
         forwardMatch = True,
         sections = ["section_run"],
+        fixedStartValues = {"program_name": "ORCA", "program_basis_set_type": "Gaussians" },
         subMatchers = [
             SM(name = 'ProgramHeader',
-               startReStr = r"\s*\* O  R  C  A \*\s*",
+               startReStr = r"\s*\* O   ?R   ?C   ?A \*\s*",
                subMatchers = [
-                    SM(r"\s*Program Version\s*(?P<x_orca_program_version>[0-9a-zA-Z_.]*)"),
-                    SM(r" *\(\$Date\: *(?P<x_orca_program_compilation_date>[0-9/]+) at (?P<x_orca_program_compilation_time>[0-9:]+)")
-                    ]),
+                   SM(r"\s*Program Version\s*(?P<x_orca_program_version>[0-9a-zA-Z_.].*)"),
+                   SM(r"\s*\(SVN:\s*\$(?P<x_orca_program_svn>[^$]+)\$\)\s*"),
+                   SM(r"\s*\(\$Date\:\s*(?P<x_orca_program_compilation_date>[0-9a-zA-Z].+?)\s*\$\)")
+                   ]),
             buildSinglePointMatcher(),
             buildGeoOptMatcher(),
             buildMp2Matcher(),
-- 
GitLab