From 2e2080c2a1448fd4e121e8c9c1eda5d7f6c64f9b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micka=C3=ABl=20V=C3=A9ril?= Date: Wed, 8 Jul 2020 13:24:29 +0200 Subject: [PATCH] Fix undefined --- .../formats/default/doubleColumnHandler.py | 109 +++++++++--------- tools/lib/formats/default/doubleTBEHandler.py | 2 +- 2 files changed, 57 insertions(+), 54 deletions(-) diff --git a/tools/lib/formats/default/doubleColumnHandler.py b/tools/lib/formats/default/doubleColumnHandler.py index ce888c5a..f685ee51 100644 --- a/tools/lib/formats/default/doubleColumnHandler.py +++ b/tools/lib/formats/default/doubleColumnHandler.py @@ -1,63 +1,66 @@ from ..formatHandlerBase import formatHandlerBase from ..formatName import formatName -from ...data import dataFileBase,DataType,method,excitationValue,datafileSelector,AbsDataFile,getSubtablesRange +from ...data import dataFileBase,DataType,method,excitationValue,datafileSelector,AbsDataFile,getSubtablesRange,state from ...LaTeX import newCommand import re +from TexSoup import TexSoup +import numpy as np from ...utils import getValFromCell @formatName("doubleColumn") class doubleColumnHandler(formatHandlerBase): def readFromTable(self,table): - datacls=dict() - subtablesMol=getSubtablesRange(table) - for rangeMol in subtablesMol: - mymolecule=str(table[rangeMol[0],0]) - moltable=table[rangeMol,:] - subtablestrans=getSubtablesRange(moltable,firstindex=0,column=1,count=2) - for rangeTrans in subtablestrans: - mytrans=moltable[rangeTrans,:] - mytransdesc=mytrans[0:2,1] - for i in range(2): - try: - mathsoup=TexSoup(mytransdesc[i]) - except: - print(f"Error when parsing latex state: {str(mytransdesc[i])}") - exit(-1) - newCommand.runAll(mathsoup,commands) - mytransdesc[i]=str(mathsoup) - for colindex in range(3,np.size(table,1)): - col=mytrans[:,colindex] - mybasis=str(table[1,colindex]) - for index,cell in enumerate(col): - methodnameAT1=str(mytrans[index,2]) - PTString=r"($\%T_1$)" - HasT1=methodnameAT1.endswith(PTString) + datalist=list() + datacls=dict() + subtablesMol=getSubtablesRange(table) + for rangeMol in subtablesMol: + mymolecule=str(table[rangeMol[0],0]) + moltable=table[rangeMol,:] + subtablestrans=getSubtablesRange(moltable,firstindex=0,column=1,count=2) + for rangeTrans in subtablestrans: + mytrans=moltable[rangeTrans,:] + mytransdesc=mytrans[0:2,1] + for i in range(2): + try: + mathsoup=TexSoup(mytransdesc[i]) + except: + print(f"Error when parsing latex state: {str(mytransdesc[i])}") + exit(-1) + newCommand.runAll(mathsoup,self.commands) + mytransdesc[i]=str(mathsoup) + for colindex in range(3,np.size(table,1)): + col=mytrans[:,colindex] + mybasis=str(table[1,colindex]) + for index,cell in enumerate(col): + methodnameAT1=str(mytrans[index,2]) + PTString=r"($\%T_1$)" + HasT1=methodnameAT1.endswith(PTString) + if HasT1: + methodname=methodnameAT1[:-len(PTString)] + else: + methodname=str(methodnameAT1) + mymethod=method(methodname,mybasis) + strcell=str(cell) + if strcell!="": if HasT1: - methodname=methodnameAT1[:-len(PTString)] + m=re.match(r"^(?P[-+]?\d+\.?\d*)\s*(?:\((?P\d+\.?\d*)\\\%\))?",strcell) + val,unsafe=getValFromCell(TexSoup(m.group("value"))) + T1=m.group("T1") else: - methodname=str(methodnameAT1) - mymethod=method(methodname,mybasis) - strcell=str(cell) - if strcell!="": - if HasT1: - m=re.match(r"^(?P[-+]?\d+\.?\d*)\s*(?:\((?P\d+\.?\d*)\\\%\))?",strcell) - val,unsafe=getValFromCell(TexSoup(m.group("value"))) - T1=m.group("T1") - else: - m=re.match(r"^[-+]?\d+\.?\d*",strcell) - val,unsafe=getValFromCell(TexSoup(m.group(0))) - T1=None - if (mymolecule,mymethod.name,mymethod.basis) in datacls: - data=datacls[(mymolecule,mymethod.name,mymethod.basis)] - else: - data=AbsDataFile() - data.molecule=mymolecule - data.method=mymethod - datacls[(mymolecule,mymethod.name,mymethod.basis)]=data - infin=mytransdesc[0].split(r"\rightarrow") - for i,item in enumerate(infin): - m=re.match(r"^(?P\d)\\[,:;\s]\s*\^(?P\d)(?P\S*)",item.strip()) - infin[i]=state(m.group("number"),m.group("multiplicity"),m.group("sym")) - data.excitations.append(excitationValue(infin[0],infin[1],val,type=mytransdesc[1],isUnsafe=unsafe,T1=T1)) - for value in datacls.values(): - datalist.append(value) - return datalist \ No newline at end of file + m=re.match(r"^[-+]?\d+\.?\d*",strcell) + val,unsafe=getValFromCell(TexSoup(m.group(0))) + T1=None + if (mymolecule,mymethod.name,mymethod.basis) in datacls: + data=datacls[(mymolecule,mymethod.name,mymethod.basis)] + else: + data=AbsDataFile() + data.molecule=mymolecule + data.method=mymethod + datacls[(mymolecule,mymethod.name,mymethod.basis)]=data + infin=mytransdesc[0].split(r"\rightarrow") + for i,item in enumerate(infin): + m=re.match(r"^(?P\d)\\[,:;\s]\s*\^(?P\d)(?P\S*)",item.strip()) + infin[i]=state(m.group("number"),m.group("multiplicity"),m.group("sym")) + data.excitations.append(excitationValue(infin[0],infin[1],val,type=mytransdesc[1],isUnsafe=unsafe,T1=T1)) + for value in datacls.values(): + datalist.append(value) + return datalist \ No newline at end of file diff --git a/tools/lib/formats/default/doubleTBEHandler.py b/tools/lib/formats/default/doubleTBEHandler.py index 3dfd9855..c68896db 100644 --- a/tools/lib/formats/default/doubleTBEHandler.py +++ b/tools/lib/formats/default/doubleTBEHandler.py @@ -20,7 +20,7 @@ class doubleTBEHandler(formatHandlerBase): except: print(f"Error when parsing latex state: {str(mytransdesc[i])}") exit(-1) - newCommand.runAll(mathsoup,commands) + newCommand.runAll(mathsoup,self.commands) mytransdesc=str(mathsoup) infin=mytransdesc.split(r"\rightarrow") for i,item in enumerate(infin):