update log pizza.py files to python 3
This commit is contained in:
@ -16,7 +16,7 @@ sys.path.append(path)
|
|||||||
from log import log
|
from log import log
|
||||||
|
|
||||||
if len(sys.argv) < 3:
|
if len(sys.argv) < 3:
|
||||||
raise StandardError, "Syntax: log2txt.py log.lammps data.txt X Y ..."
|
raise Exception("Syntax: log2txt.py log.lammps data.txt X Y ...")
|
||||||
|
|
||||||
logfile = sys.argv[1]
|
logfile = sys.argv[1]
|
||||||
datafile = sys.argv[2]
|
datafile = sys.argv[2]
|
||||||
|
|||||||
@ -15,7 +15,7 @@ from log import log
|
|||||||
from gnu import gnu
|
from gnu import gnu
|
||||||
|
|
||||||
if len(sys.argv) != 4:
|
if len(sys.argv) != 4:
|
||||||
raise StandardError, "Syntax: logplot.py log.lammps X Y"
|
raise Exception("Syntax: logplot.py log.lammps X Y")
|
||||||
|
|
||||||
logfile = sys.argv[1]
|
logfile = sys.argv[1]
|
||||||
xlabel = sys.argv[2]
|
xlabel = sys.argv[2]
|
||||||
|
|||||||
@ -64,7 +64,7 @@ class log:
|
|||||||
|
|
||||||
# --------------------------------------------------------------------
|
# --------------------------------------------------------------------
|
||||||
|
|
||||||
def __init__(self,*list):
|
def __init__(self,*arglist):
|
||||||
self.nvec = 0
|
self.nvec = 0
|
||||||
self.names = []
|
self.names = []
|
||||||
self.ptr = {}
|
self.ptr = {}
|
||||||
@ -72,18 +72,18 @@ class log:
|
|||||||
|
|
||||||
# flist = list of all log file names
|
# flist = list of all log file names
|
||||||
|
|
||||||
words = list[0].split()
|
words = arglist[0].split()
|
||||||
self.flist = []
|
self.flist = []
|
||||||
for word in words: self.flist += glob.glob(word)
|
for word in words: self.flist += glob.glob(word)
|
||||||
if len(self.flist) == 0 and len(list) == 1:
|
if len(self.flist) == 0 and len(arglist) == 1:
|
||||||
raise StandardError,"no log file specified"
|
raise Exception("no log file specified")
|
||||||
|
|
||||||
if len(list) == 1:
|
if len(arglist) == 1:
|
||||||
self.increment = 0
|
self.increment = 0
|
||||||
self.read_all()
|
self.read_all()
|
||||||
else:
|
else:
|
||||||
if len(self.flist) > 1:
|
if len(self.flist) > 1:
|
||||||
raise StandardError,"can only incrementally read one log file"
|
raise Exception("can only incrementally read one log file")
|
||||||
self.increment = 1
|
self.increment = 1
|
||||||
self.eof = 0
|
self.eof = 0
|
||||||
|
|
||||||
@ -92,24 +92,23 @@ class log:
|
|||||||
|
|
||||||
def read_all(self):
|
def read_all(self):
|
||||||
self.read_header(self.flist[0])
|
self.read_header(self.flist[0])
|
||||||
if self.nvec == 0: raise StandardError,"log file has no values"
|
if self.nvec == 0: raise Exception("log file has no values")
|
||||||
|
|
||||||
# read all files
|
# read all files
|
||||||
|
|
||||||
for file in self.flist: self.read_one(file)
|
for file in self.flist: self.read_one(file)
|
||||||
print
|
|
||||||
|
|
||||||
# sort entries by timestep, cull duplicates
|
# sort entries by timestep, cull duplicates
|
||||||
|
|
||||||
self.data.sort(self.compare)
|
self.data.sort(key=(lambda elem: elem[0]))
|
||||||
self.cull()
|
self.cull()
|
||||||
self.nlen = len(self.data)
|
self.nlen = len(self.data)
|
||||||
print "read %d log entries" % self.nlen
|
print("read %d log entries" % self.nlen)
|
||||||
|
|
||||||
# --------------------------------------------------------------------
|
# --------------------------------------------------------------------
|
||||||
|
|
||||||
def next(self):
|
def next(self):
|
||||||
if not self.increment: raise StandardError,"cannot read incrementally"
|
if not self.increment: raise Exception("cannot read incrementally")
|
||||||
|
|
||||||
if self.nvec == 0:
|
if self.nvec == 0:
|
||||||
try: open(self.flist[0],'r')
|
try: open(self.flist[0],'r')
|
||||||
@ -124,12 +123,12 @@ class log:
|
|||||||
|
|
||||||
def get(self,*keys):
|
def get(self,*keys):
|
||||||
if len(keys) == 0:
|
if len(keys) == 0:
|
||||||
raise StandardError, "no log vectors specified"
|
raise Exception( "no log vectors specified" )
|
||||||
|
|
||||||
map = []
|
colmap = []
|
||||||
for key in keys:
|
for key in keys:
|
||||||
if self.ptr.has_key(key):
|
if key in self.ptr:
|
||||||
map.append(self.ptr[key])
|
colmap.append(self.ptr[key])
|
||||||
else:
|
else:
|
||||||
count = 0
|
count = 0
|
||||||
for i in range(self.nvec):
|
for i in range(self.nvec):
|
||||||
@ -137,15 +136,15 @@ class log:
|
|||||||
count += 1
|
count += 1
|
||||||
index = i
|
index = i
|
||||||
if count == 1:
|
if count == 1:
|
||||||
map.append(index)
|
colmap.append(index)
|
||||||
else:
|
else:
|
||||||
raise StandardError, "unique log vector %s not found" % key
|
raise Exception( "unique log vector %s not found" % key)
|
||||||
|
|
||||||
vecs = []
|
vecs = []
|
||||||
for i in range(len(keys)):
|
for i in range(len(keys)):
|
||||||
vecs.append(self.nlen * [0])
|
vecs.append(self.nlen * [0])
|
||||||
for j in xrange(self.nlen):
|
for j in range(self.nlen):
|
||||||
vecs[i][j] = self.data[j][map[i]]
|
vecs[i][j] = self.data[j][colmap[i]]
|
||||||
|
|
||||||
if len(keys) == 1: return vecs[0]
|
if len(keys) == 1: return vecs[0]
|
||||||
else: return vecs
|
else: return vecs
|
||||||
@ -154,10 +153,10 @@ class log:
|
|||||||
|
|
||||||
def write(self,filename,*keys):
|
def write(self,filename,*keys):
|
||||||
if len(keys):
|
if len(keys):
|
||||||
map = []
|
colmap = []
|
||||||
for key in keys:
|
for key in keys:
|
||||||
if self.ptr.has_key(key):
|
if key in self.ptr:
|
||||||
map.append(self.ptr[key])
|
colmap.append(self.ptr[key])
|
||||||
else:
|
else:
|
||||||
count = 0
|
count = 0
|
||||||
for i in range(self.nvec):
|
for i in range(self.nvec):
|
||||||
@ -165,17 +164,18 @@ class log:
|
|||||||
count += 1
|
count += 1
|
||||||
index = i
|
index = i
|
||||||
if count == 1:
|
if count == 1:
|
||||||
map.append(index)
|
colmap.append(index)
|
||||||
else:
|
else:
|
||||||
raise StandardError, "unique log vector %s not found" % key
|
raise Exception( "unique log vector %s not found" % key)
|
||||||
else:
|
else:
|
||||||
map = range(self.nvec)
|
colmap = range(self.nvec)
|
||||||
|
|
||||||
f = open(filename,"w")
|
f = open(filename,"w")
|
||||||
for i in xrange(self.nlen):
|
# write data
|
||||||
for j in xrange(len(map)):
|
for i in range(self.nlen):
|
||||||
print >>f,self.data[i][map[j]],
|
for j in range(len(colmap)):
|
||||||
print >>f
|
print(self.data[i][colmap[j]],file=f,end=" "),
|
||||||
|
print("\n",file=f,end="")
|
||||||
f.close()
|
f.close()
|
||||||
|
|
||||||
# --------------------------------------------------------------------
|
# --------------------------------------------------------------------
|
||||||
@ -243,18 +243,18 @@ class log:
|
|||||||
|
|
||||||
# --------------------------------------------------------------------
|
# --------------------------------------------------------------------
|
||||||
|
|
||||||
def read_one(self,*list):
|
def read_one(self,*arglist):
|
||||||
|
|
||||||
# if 2nd arg exists set file ptr to that value
|
# if 2nd arg exists set file ptr io that value
|
||||||
# read entire (rest of) file into txt
|
# read entire (rest of) file into txt
|
||||||
|
|
||||||
file = list[0]
|
file = arglist[0]
|
||||||
if file[-3:] == ".gz":
|
if file[-3:] == ".gz":
|
||||||
f = popen("%s -c %s" % (PIZZA_GUNZIP,file),'rb')
|
f = popen("%s -c %s" % (PIZZA_GUNZIP,file),'rb')
|
||||||
else:
|
else:
|
||||||
f = open(file,'rb')
|
f = open(file,'rb')
|
||||||
|
|
||||||
if len(list) == 2: f.seek(list[1])
|
if len(arglist) == 2: f.seek(arglist[1])
|
||||||
txt = f.read()
|
txt = f.read()
|
||||||
if file[-3:] == ".gz": eof = 0
|
if file[-3:] == ".gz": eof = 0
|
||||||
else: eof = f.tell()
|
else: eof = f.tell()
|
||||||
@ -270,12 +270,12 @@ class log:
|
|||||||
# set start = position in file to start looking for next chunk
|
# set start = position in file to start looking for next chunk
|
||||||
# rewind eof if final entry is incomplete
|
# rewind eof if final entry is incomplete
|
||||||
|
|
||||||
s1 = txt.find(self.firststr,start)
|
s1 = txt.find(self.firststr.encode('utf-8'),start)
|
||||||
s2 = txt.find("Loop time of",start+1)
|
s2 = txt.find("Loop time of".encode('utf-8'),start+1)
|
||||||
|
|
||||||
if s1 >= 0 and s2 >= 0 and s1 < s2: # found s1,s2 with s1 before s2
|
if s1 >= 0 and s2 >= 0 and s1 < s2: # found s1,s2 with s1 before s2
|
||||||
if self.style == 2:
|
if self.style == 2:
|
||||||
s1 = txt.find("\n",s1) + 1
|
s1 = txt.find("\n".encode('utf-8'),s1) + 1
|
||||||
elif s1 >= 0 and s2 >= 0 and s2 < s1: # found s1,s2 with s2 before s1
|
elif s1 >= 0 and s2 >= 0 and s2 < s1: # found s1,s2 with s2 before s1
|
||||||
s1 = 0
|
s1 = 0
|
||||||
elif s1 == -1 and s2 >= 0: # found s2, but no s1
|
elif s1 == -1 and s2 >= 0: # found s2, but no s1
|
||||||
@ -284,25 +284,25 @@ class log:
|
|||||||
elif s1 >= 0 and s2 == -1: # found s1, but no s2
|
elif s1 >= 0 and s2 == -1: # found s1, but no s2
|
||||||
last = 1
|
last = 1
|
||||||
if self.style == 1:
|
if self.style == 1:
|
||||||
s2 = txt.rfind("\n--",s1) + 1
|
s2 = txt.rfind("\n--".encode('utf-8'),s1) + 1
|
||||||
else:
|
else:
|
||||||
s1 = txt.find("\n",s1) + 1
|
s1 = txt.find("\n".encode('utf-8'),s1) + 1
|
||||||
s2 = txt.rfind("\n",s1) + 1
|
s2 = txt.rfind("\n".encode('utf-8'),s1) + 1
|
||||||
eof -= len(txt) - s2
|
eof -= len(txt) - s2
|
||||||
elif s1 == -1 and s2 == -1: # found neither
|
elif s1 == -1 and s2 == -1: # found neither
|
||||||
# could be end-of-file section
|
# could be end-of-file section
|
||||||
# or entire read was one chunk
|
# or entire read was one chunk
|
||||||
|
|
||||||
if txt.find("Loop time of",start) == start: # end of file, so exit
|
if txt.find("Loop time of".encode('utf-8'),start) == start: # end of file, so exit
|
||||||
eof -= len(txt) - start # reset eof to "Loop"
|
eof -= len(txt) - start # reset eof to "Loop"
|
||||||
break
|
break
|
||||||
|
|
||||||
last = 1 # entire read is a chunk
|
last = 1 # entire read is a chunk
|
||||||
s1 = 0
|
s1 = 0
|
||||||
if self.style == 1:
|
if self.style == 1:
|
||||||
s2 = txt.rfind("\n--",s1) + 1
|
s2 = txt.rfind("\n--".encode('utf-8'),s1) + 1
|
||||||
else:
|
else:
|
||||||
s2 = txt.rfind("\n",s1) + 1
|
s2 = txt.rfind("\n".encode('utf-8'),s1) + 1
|
||||||
eof -= len(txt) - s2
|
eof -= len(txt) - s2
|
||||||
if s1 == s2: break
|
if s1 == s2: break
|
||||||
|
|
||||||
@ -313,24 +313,23 @@ class log:
|
|||||||
# parse each entry for numeric fields, append to data
|
# parse each entry for numeric fields, append to data
|
||||||
|
|
||||||
if self.style == 1:
|
if self.style == 1:
|
||||||
sections = chunk.split("\n--")
|
sections = chunk.split("\n--".encode('utf-8'))
|
||||||
pat1 = re.compile("Step\s*(\S*)\s")
|
pat1 = re.compile("Step\s*(\S*)\s")
|
||||||
pat2 = re.compile("=\s*(\S*)")
|
pat2 = re.compile("=\s*(\S*)")
|
||||||
for section in sections:
|
for section in sections:
|
||||||
word1 = [re.search(pat1,section).group(1)]
|
word1 = [re.search(pat1,section).group(1)]
|
||||||
word2 = re.findall(pat2,section)
|
word2 = re.findall(pat2,section)
|
||||||
words = word1 + word2
|
words = word1 + word2
|
||||||
self.data.append(map(float,words))
|
self.data.append(list(map(float,words)))
|
||||||
|
|
||||||
else:
|
else:
|
||||||
lines = chunk.split("\n")
|
lines = chunk.split("\n".encode('utf-8'))
|
||||||
for line in lines:
|
for line in lines:
|
||||||
words = line.split()
|
words = line.split()
|
||||||
self.data.append(map(float,words))
|
self.data.append(list(map(float,words)))
|
||||||
|
|
||||||
# print last timestep of chunk
|
# print last timestep of chunk
|
||||||
|
print(int(self.data[len(self.data)-1][0]),)
|
||||||
print int(self.data[len(self.data)-1][0]),
|
|
||||||
sys.stdout.flush()
|
sys.stdout.flush()
|
||||||
|
|
||||||
return eof
|
return eof
|
||||||
|
|||||||
Reference in New Issue
Block a user