From 4900ad296a7d6f84e3d947447607a8174bc459fe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micka=C3=ABl=20V=C3=A9ril?= Date: Thu, 12 Dec 2019 15:20:56 +0100 Subject: [PATCH] Treat commands in excitation --- tools/datafileBuilder.py | 2 +- tools/lib/data.py | 20 +++++++++++++------- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/tools/datafileBuilder.py b/tools/datafileBuilder.py index a5a588f8..449e355e 100755 --- a/tools/datafileBuilder.py +++ b/tools/datafileBuilder.py @@ -26,6 +26,6 @@ if DEBUG: datapath=datapath/"test" if not datapath.exists(): datapath.mkdir() -datalst=dataFileBase.readFromTable(dat,format=Format[args.format],default=dataType[args.defaultType]) +datalst=dataFileBase.readFromTable(dat,format=Format[args.format],default=dataType[args.defaultType],commands=commands) for data in datalst: data.toFile(datapath) \ No newline at end of file diff --git a/tools/lib/data.py b/tools/lib/data.py index 0219b26a..cbae2a93 100644 --- a/tools/lib/data.py +++ b/tools/lib/data.py @@ -1,4 +1,6 @@ from collections import OrderedDict +from TexSoup import TexSoup +from .LaTeX import newCommand from enum import IntEnum,auto,unique,IntFlag from .Format import Format import re @@ -34,11 +36,15 @@ class dataFileBase(object): pass @staticmethod - def convertState(StateTablelist,default=dataType.ABS,firstState=state(1,1,"A_1")): + def convertState(StateTablelist,default=dataType.ABS,firstState=state(1,1,"A_1"),commands=[]): tmplst=[] for TexState in StateTablelist: - lst=list(TexState.find("$").contents) - st=str(lst[0]) + math=TexState.find("$") + dec=math.contents + lst=list(math.contents) + mathsoup=TexSoup(str(lst[0])) + newCommand.runAll(mathsoup,commands) + st=str(mathsoup) m=re.match(r"^\^(?P\d)(?P[^\s\[(]*)\s*(?:\[(?:\\mathrm{)?(?P\w)(?:})\])?\s*\((?P[^\)]*)\)",st) seq=m.group("multiplicity","symm") spgrp=m.group("special") @@ -56,7 +62,7 @@ class dataFileBase(object): return lst @staticmethod - def readFromTable(table,format=Format.LINE,default=dataType.ABS ,firstState=state(1,1,"A_1")): + def readFromTable(table,format=Format.LINE,default=dataType.ABS ,firstState=state(1,1,"A_1"),commands=[]): datalist=list() switcher={ dataType.ABS:AbsDataFile, @@ -68,7 +74,7 @@ class dataFileBase(object): col=table[:,col] mymolecule=str(col[0]) mymethod=method(str(col[2]),str(col[1])) - finsts=dataFileBase.convertState(table[3:,0],firstState) + finsts=dataFileBase.convertState(table[3:,0],firstState,commands=commands) datacls=dict() for index,cell in enumerate(col[3:]): if str(cell)!="": @@ -100,7 +106,7 @@ class dataFileBase(object): col=table[:,col] mymolecule=str(table[first,0]) mymethod=method(str(col[1]),str(col[0])) - finsts=dataFileBase.convertState(table[first:last+1,1],default=default,firstState=firstState) + finsts=dataFileBase.convertState(table[first:last+1,1],default=default,firstState=firstState,commands=commands) for index,cell in enumerate(col[first:last+1]): if str(cell)!="": val= list(cell.contents)[0] @@ -130,7 +136,7 @@ class dataFileBase(object): datacls=dict() mymolecule=str(table[first,0]) mymethod=(method("TBE"),method("TBE-corr")) - finsts=dataFileBase.convertState(table[first:last+1,1],default=default,firstState=firstState) + finsts=dataFileBase.convertState(table[first:last+1,1],default=default,firstState=firstState,commands=commands) for index,row in enumerate(table[first:last+1,]): def toFloat(x): try: