diff --git a/tools/lib/Format.py b/tools/lib/Format.py index e76c1bb4..4763e8e5 100644 --- a/tools/lib/Format.py +++ b/tools/lib/Format.py @@ -3,4 +3,6 @@ from enum import IntEnum,auto,unique class Format(IntEnum): LINE=auto() COLUMN=auto() - TBE=auto() \ No newline at end of file + DOUBLECOLUMN=auto() + TBE=auto() + DOUBLETBE=auto() \ No newline at end of file diff --git a/tools/lib/data.py b/tools/lib/data.py index eb1a17f9..7151d6fc 100644 --- a/tools/lib/data.py +++ b/tools/lib/data.py @@ -136,6 +136,43 @@ class dataFileBase(object): for value in datacls.values(): datalist.append(value) return datalist + elif format==Format.DOUBLECOLUMN: + subtablesindex=getSubtableIndex(table) + for first, last in subtablesindex: + mymolecule=table[first,0] + mytrans=table[first:first+1,1] + for i,mystr in enumerate(mytrans)): + mystr=mytrans[i] + try: + mathsoup=TexSoup(mystr) + except: + print(f"Error when parsing latex state: {mystr}") + exit(-1) + newCommand.runAll(mathsoup,commands) + mytrans[i]=str(mathsoup) + for col in range(3,np.size(table,1)): + col=table[:,col] + mybasis=col[2] + for index,cell in enumerate(col[first:last+1]): + mymethod=method(str(table[index,2],mybasis)) + if str(cell)!="": + m=re.match(r"(?P[-+]?\d*\.?\d+)\s*\((?:(?P\d*\.?\d+)\%)|(?P\d*\.?\d+)\)") + val,unsafe=getValFromCell(m.group("value")) + T1=m.group("T1") + finst=finsts[index] + if (mymolecule,mymethod) in datacls: + data=datacls[(mymolecule,mymethod)] + else: + data=AbsDataFile() + data.molecule=mymolecule + data.method=mymethod + infin=mytrans.split("\rightarrow") + for i,item in enumerate(infin): + m=re.match(r"^(?P\d)\\[,:;\s]\s*\^(?P\d)(?P\S*)",item) + infin[i]=state(m.group("number"),m.group("multiplicity"),m.group("sym")) + data.excitations.append(excitationValue(infin[0],infin[0],val,type=mytrans[1],isUnsafe=unsafe,T1=T1)) + for value in datacls.values(): + datalist.append(value) elif format==Format.TBE: subtablesindex=getSubtableIndex(table) for first, last in subtablesindex: