10
0
mirror of https://github.com/LCPQ/QUESTDB_website.git synced 2024-11-03 20:53:59 +01:00

Fix missing

This commit is contained in:
Mickaël Véril 2019-12-03 15:24:29 +01:00
parent abed4bfeaa
commit 4448d8d9db
5 changed files with 65 additions and 32 deletions

View File

@ -24,7 +24,7 @@
\newcommand{\DAVPZ}{d-\emph{aug}-cc-pV5Z} \newcommand{\DAVPZ}{d-\emph{aug}-cc-pV5Z}
\newcommand{\PopleDZ}{6-31+G(d)} \newcommand{\PopleDZ}{6-31+G(d)}
\begin{table}{llcccccc} \begin{tabular}{llcccccc}
& & & & TBE(FC)& \multicolumn{3}{c}{Corrected TBE} \\ & & & & TBE(FC)& \multicolumn{3}{c}{Corrected TBE} \\
& State & $f$ & \%$T_1$ & AVTZ & Method & Corr. & Value \\ & State & $f$ & \%$T_1$ & AVTZ & Method & Corr. & Value \\
Acetaldehyde &$^1A''(\mathrm{V};n \rightarrow \pis)$ & 0.000 &91.3& 4.31 & {\exCI}/AVTZ & AVQZ &4.31 \\ Acetaldehyde &$^1A''(\mathrm{V};n \rightarrow \pis)$ & 0.000 &91.3& 4.31 & {\exCI}/AVTZ & AVQZ &4.31 \\
@ -99,7 +99,7 @@
&$^1A' (\Ryd;n \rightarrow 3s)$ &0.001 &88.6 &6.77$^a$ & & &6.81 \\ &$^1A' (\Ryd;n \rightarrow 3s)$ &0.001 &88.6 &6.77$^a$ & & &6.81 \\
&$^1A' (\mathrm{V};\pi \rightarrow \pis)$ &0.251 &89.3 &7.63 &{\exCI}/AVTZ & AVQZ &7.64 \\ &$^1A' (\mathrm{V};\pi \rightarrow \pis)$ &0.251 &89.3 &7.63 &{\exCI}/AVTZ & AVQZ &7.64 \\
&$^1A' (\Ryd;n \rightarrow 3p)$ &0.111 &89.6 &7.38$^b$ &{\CCSDT}/AVTZ& AVQZ &7.41 \\ &$^1A' (\Ryd;n \rightarrow 3p)$ &0.111 &89.6 &7.38$^b$ &{\CCSDT}/AVTZ& AVQZ &7.41 \\
&$^3A'' (\mathrm{V};n \rightarrow \pis)$ & &97.7 &5.38$^c$ &{\exCI}/AVDZ& AVQZ &5.37 \\%X-EX &$^3A'' (\mathrm{V};n \rightarrow \pis)$ & &97.7 &5.38$^c$ &{\exCI}/AVDZ& AVQZ &5.37 \\
&$^3A' (\mathrm{V};\pi \rightarrow \pis)$ & &98.2 &5.81$^c$ & & &5.81 \\ &$^3A' (\mathrm{V};\pi \rightarrow \pis)$ & &98.2 &5.81$^c$ & & &5.81 \\
Hydrogen chloride & $^1\Pi (\mathrm{CT})$ &0.056 &94.3 &7.84 & {\exCI}/AVQZ &dAV5Z &7.86 \\ Hydrogen chloride & $^1\Pi (\mathrm{CT})$ &0.056 &94.3 &7.84 & {\exCI}/AVQZ &dAV5Z &7.86 \\
Hydrogen sulfide &$^1A_2 (\Ryd;n \rightarrow 4p)$ & &94.6 &6.18 & {\exCI}/AVQZ &dAV5Z &6.10 \\ Hydrogen sulfide &$^1A_2 (\Ryd;n \rightarrow 4p)$ & &94.6 &6.18 & {\exCI}/AVQZ &dAV5Z &6.10 \\
@ -120,7 +120,7 @@
&$^1A' (\mathrm{V};n,n \rightarrow \pis,\pis)$ &0.000 &2.5 &4.72 & {\exCI}/AVTZ & AVQZ & 4.69 \\ &$^1A' (\mathrm{V};n,n \rightarrow \pis,\pis)$ &0.000 &2.5 &4.72 & {\exCI}/AVTZ & AVQZ & 4.69 \\
&$^1A' (\Ryd;n \rightarrow 3s/3p)$ &0.006 &90.8 &6.40$^a$ &{\exCI}/AVDZ & AVQZ &6.42 \\ &$^1A' (\Ryd;n \rightarrow 3s/3p)$ &0.006 &90.8 &6.40$^a$ &{\exCI}/AVDZ & AVQZ &6.42 \\
&$^3A'' (\mathrm{V};n \rightarrow \pis)$ & &98.4 &1.16 & & &1.16 \\ &$^3A'' (\mathrm{V};n \rightarrow \pis)$ & &98.4 &1.16 & & &1.16 \\
&$^3A' (\mathrm{V};\pi \rightarrow \pis)$ & &98.9 &5.60 & & &5.61 <EFBFBD>\\ &$^3A' (\mathrm{V};\pi \rightarrow \pis)$ & &98.9 &5.60 & & &5.61 \\
&$^1A'' [\mathrm{F}] (\mathrm{V};n \rightarrow \pis)$ & &92.7&1.67$^a$ &{\exCI}/AVDZ & AVQZ &1.66 \\ &$^1A'' [\mathrm{F}] (\mathrm{V};n \rightarrow \pis)$ & &92.7&1.67$^a$ &{\exCI}/AVDZ & AVQZ &1.66 \\
Streptocyanine-C1&$^1B_2 (\mathrm{V};\pi \rightarrow \pis)$ & 0.347 &88.7&7.13$^a$ & {\exCI}/AVDZ & AVQZ &7.12 \\ Streptocyanine-C1&$^1B_2 (\mathrm{V};\pi \rightarrow \pis)$ & 0.347 &88.7&7.13$^a$ & {\exCI}/AVDZ & AVQZ &7.12 \\
& $^3B_2 (\mathrm{V};\pi \rightarrow \pis)$ & &98.3 &5.52 & {\exCI}/AVTZ & AVQZ &5.52 \\ & $^3B_2 (\mathrm{V};\pi \rightarrow \pis)$ & &98.3 &5.52 & {\exCI}/AVTZ & AVQZ &5.52 \\
@ -137,4 +137,4 @@
& $^3B_1 (\Ryd; n \rightarrow 3s)$ & &98.1 &7.25 & & &7.33 \\ & $^3B_1 (\Ryd; n \rightarrow 3s)$ & &98.1 &7.25 & & &7.33 \\
& $^3A_2 (\Ryd; n \rightarrow 3p)$ & &98.0 &9.24 & & &9.30 \\ & $^3A_2 (\Ryd; n \rightarrow 3p)$ & &98.0 &9.24 & & &9.30 \\
& $^3A_1 (\Ryd; n \rightarrow 3s)$ & &98.2 &9.54 & & &9.59 \\ & $^3A_1 (\Ryd; n \rightarrow 3s)$ & &98.2 &9.54 & & &9.59 \\
\end{tabular} \end{tabular}

View File

@ -78,7 +78,7 @@ class DOI {
} }
class excitationBase { class excitationBase {
constructor(initial, final, type, T1=null) { constructor(initial, final, type=null, T1=null) {
this.initial = initial; this.initial = initial;
this.final = final this.final = final
if (type !== null) { if (type !== null) {

View File

@ -5,15 +5,15 @@ from enum import IntEnum,auto,unique
import numpy as np import numpy as np
from pathlib import Path from pathlib import Path
from lib import LaTeX from lib import LaTeX
from lib.Orientation import Orientation from lib.Format import Format
from TexSoup import TexSoup from TexSoup import TexSoup
from lib.data import dataFileBase,dataType from lib.data import dataFileBase,dataType
import argparse import argparse
DEBUG=False DEBUG=True
parser = argparse.ArgumentParser() parser = argparse.ArgumentParser()
parser.add_argument('--file', type=argparse.FileType('r')) parser.add_argument('--file', type=argparse.FileType('r'))
parser.add_argument('--defaultType', type=str, choices=[t.name for t in list(dataType)]) parser.add_argument('--defaultType', type=str, choices=[t.name for t in list(dataType)])
parser.add_argument('--MoleculeOrentation',type=str, choices=[t.name for t in list(Orientation)],default=Orientation.LINE.name) parser.add_argument('--format',type=str, choices=[t.name for t in list(Format)],default=Format.LINE.name)
args = parser.parse_args() args = parser.parse_args()
print(args) print(args)
lines=args.file.readlines() lines=args.file.readlines()
@ -26,6 +26,6 @@ if DEBUG:
datapath=datapath/"test" datapath=datapath/"test"
if not datapath.exists(): if not datapath.exists():
datapath.mkdir() datapath.mkdir()
datalst=dataFileBase.readFromTable(dat,orientation=Orientation[args.MoleculeOrentation],default=dataType[args.defaultType]) datalst=dataFileBase.readFromTable(dat,format=Format[args.format],default=dataType[args.defaultType])
for data in datalst: for data in datalst:
data.toFile(datapath) data.toFile(datapath)

View File

@ -1,5 +1,6 @@
from enum import IntEnum,auto,unique from enum import IntEnum,auto,unique
@unique @unique
class Orientation(IntEnum): class Format(IntEnum):
LINE=auto() LINE=auto()
COLUMN=auto() COLUMN=auto()
TBE=auto()

View File

@ -1,6 +1,6 @@
from collections import OrderedDict from collections import OrderedDict
from enum import IntEnum,auto,unique,IntFlag from enum import IntEnum,auto,unique,IntFlag
from .Orientation import Orientation from .Format import Format
import re import re
import numpy as np import numpy as np
@ -53,18 +53,18 @@ class dataFileBase(object):
for index,item in enumerate(tmplst): for index,item in enumerate(tmplst):
unformfirststate=(str(firstState.multiplicity),firstState.symetry) unformfirststate=(str(firstState.multiplicity),firstState.symetry)
count=([unformfirststate]+tmplst[:index+1]).count(item) count=([unformfirststate]+tmplst[:index+1]).count(item)
lst.append((state(count,int(item[0]),item[1]),item[2])) lst.append((state(count,int(item[0]),item[1]),item[2],item[3]))
return lst return lst
@staticmethod @staticmethod
def readFromTable(table,orientation=Orientation.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")):
datalist=list() datalist=list()
switcher={ switcher={
dataType.ABS:AbsDataFile, dataType.ABS:AbsDataFile,
dataType.FLUO:FluoDataFile, dataType.FLUO:FluoDataFile,
dataType.ZPE:ZPEDataFile dataType.ZPE:ZPEDataFile
} }
if orientation==Orientation.LINE: if format==Format.LINE:
for col in range(1,np.size(table,1)): for col in range(1,np.size(table,1)):
col=table[:,col] col=table[:,col]
mymolecule=str(col[0]) mymolecule=str(col[0])
@ -84,11 +84,11 @@ class dataFileBase(object):
data=cl() data=cl()
data.molecule=mymolecule data.molecule=mymolecule
data.method=mymethod data.method=mymethod
data.excitations.append(excitationValue(firstState,finst[0],val)) data.excitations.append(excitationValue(firstState,finst[0],val,type=finst[2]))
for value in datacls.values(): for value in datacls.values():
datalist.append(value) datalist.append(value)
return datalist return datalist
else: elif format==Format.COLUMN:
subtablesindex=list() subtablesindex=list()
firstindex=2 firstindex=2
for i in range(3,np.size(table,0)): for i in range(3,np.size(table,0)):
@ -96,11 +96,6 @@ class dataFileBase(object):
subtablesindex.append((firstindex,i-1)) subtablesindex.append((firstindex,i-1))
firstindex=i firstindex=i
for first, last in subtablesindex: for first, last in subtablesindex:
for col in range(2,np.size(table,1)):
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)
for col in range(2,np.size(table,1)): for col in range(2,np.size(table,1)):
datacls=dict() datacls=dict()
col=table[:,col] col=table[:,col]
@ -121,10 +116,41 @@ class dataFileBase(object):
data.molecule=mymolecule data.molecule=mymolecule
data.method=mymethod data.method=mymethod
datacls[dt]=data datacls[dt]=data
data.excitations.append(excitationValue(firstState,finst[0],val)) data.excitations.append(excitationValue(firstState,finst[0],val,type=finst[2]))
for value in datacls.values(): for value in datacls.values():
datalist.append(value) datalist.append(value)
return datalist return datalist
elif format==Format.TBE:
subtablesindex=list()
firstindex=2
for i in range(2,np.size(table,0)):
if str(table[i,0])!="":
subtablesindex.append((firstindex,i-1))
firstindex=i
for first, last in subtablesindex:
mymolecule=str(table[first,0])
mymethod="TBE"
finsts=dataFileBase.convertState(table[first:last+1,1],default=default,firstState=firstState)
for row in table[first,last+1]:
OscilatorForces=float(str(cell.contents)[2])
T1 = float(str(list(cell.contents)[3]))
val = float(str(list(cell.contents)[4]))
corr = float(str(list(cell.contents[7])))
finst=finsts[index]
dt=finst[1]
if dt in datacls:
data = datacls[dt]
else:
cl=switcher[dt]
data=cl()
data.molecule=mymolecule
data.method=mymethod
datacls[dt]=data
data.excitations.append(excitationValue(firstState,finst[0],val,type=finst[2],T1=T1,corrected=corr))
for value in datacls.values():
datalist.append(value)
return datalist
def getMetadata(self): def getMetadata(self):
dic=OrderedDict() dic=OrderedDict()
dic["Molecule"]=self.molecule dic["Molecule"]=self.molecule
@ -145,11 +171,11 @@ class dataFileBase(object):
if value is not None: if value is not None:
f.write("# {:9s}: {}\n".format(key,value)) f.write("# {:9s}: {}\n".format(key,value))
f.write(""" f.write("""
# Initial state Final state Energies (eV) Oscilator forces # Initial state Final state Transition Energies (eV) %T1 Oscilator forces
####################### ####################### ################# ################### ####################### ####################### ################ ################# ####### ###################
# Number Spin Symm Number Spin Symm E_{:5s} Corr \n""".format(self.GetFileType().name.lower())) # Number Spin Symm Number Spin Symm type E_{:5s} Corr %T1 f \n""".format(self.GetFileType().name.lower()))
for ex in self.excitations: for ex in self.excitations:
mystr=" {:8s}{:7s}{:10s}{:8s}{:6s}{:13s}{:8s}{:8s}{}\n".format(str(ex.initial.number),str(ex.initial.multiplicity),ex.initial.symetry,str(ex.final.number),str(ex.final.multiplicity),ex.final.symetry,str(ex.value) if ex.value is not None else "_",str(ex.corrected) if ex.corrected is not None else "_",str(ex.OscilatorForces) if ex.OscilatorForces is not None else "_") mystr=" {:8s}{:7s}{:10s}{:8s}{:6s}{:13s}{:16s}{:8s}{:10s}{:15s}{}\n".format(str(ex.initial.number),str(ex.initial.multiplicity),ex.initial.symetry,str(ex.final.number),str(ex.final.multiplicity),ex.final.symetry,str(ex.type) if ex.type is not None else "_",str(ex.value) if ex.value is not None else "_",str(ex.corrected) if ex.corrected is not None else "_",str(ex.T1) if ex.T1 is not None else "_", str(ex.oscilatorForces) if ex.oscilatorForces is not None else "_")
f.write(mystr) f.write(mystr)
class method: class method:
def __init__(self,name, *args): def __init__(self,name, *args):
@ -233,13 +259,19 @@ class ZPEDataFile(twoStateDataFileBase):
return dataType.ZPE return dataType.ZPE
class excitationBase: class excitationBase:
def __init__(self,initial, final): def __init__(self,initial, final, **kwargs):
self.initial = initial self.initial = initial
self.final = final self.final = final
self.type = kwargs["type"] if "type" in kwargs else None
self.T1 = kwargs["T1"] if "T1" in kwargs else None
class excitationValue(excitationBase): class excitationValue(excitationBase):
def __init__(self,initial, final, value,*args): def __init__(self,initial, final, value,**kwarg):
super(excitationValue,self).__init__(initial, final) supkwarg=kwarg.copy()
for item in ["forces","corrected"]:
if item in supkwarg:
supkwarg.pop(item)
super(excitationValue,self).__init__(initial, final,**supkwarg)
self.value = value self.value = value
self.Corrcorrectedection=args[0] if len(args)>0 else None self.corrected=kwarg["corrected"] if "corrected" in kwarg else None
self.OscilatorForces=args[1] if len(args)>1 else None self.oscilatorForces=kwarg["forces"] if "forces" in kwarg else None