Page MenuHomec4science

extract.py
No OneTemporary

File Metadata

Created
Fri, Oct 18, 14:37

extract.py

#!/usr/bin/env python
import sys
import string
import types
from numpy import *
#####################################################
def read_ascii(file,columns=None,lines=None,dtype=float,skipheader=False,cchar='#'):
#####################################################
"""[X,Y,Z] = READ('FILE',[1,4,13],lines=[10,1000])
Read columns 1,4 and 13 from 'FILE' from line 10 to 1000
into array X,Y and Z
file is either fd or name file
"""
def RemoveComments(l):
if l[0]==cchar:
return None
else:
return l
def toNumList(l):
return map(dtype,l)
if type(file) != types.FileType:
f = open(file,'r')
else:
f = file
# read header while there is one
while 1:
fpos = f.tell()
header = f.readline()
if header[0] != cchar:
f.seek(fpos)
header = None
break
else:
if skipheader:
header = None
else:
# create dict from header
header = string.strip(header[2:])
elts = string.split(header)
break
'''
# read header if there is one
header = f.readline()
if header[0] != cchar:
f.seek(0)
header = None
else:
if skipheader:
header = None
else:
# create dict from header
header = string.strip(header[2:])
elts = string.split(header)
'''
# now, read the file content
lines = f.readlines()
# remove trailing
lines = map(string.strip, lines)
# remove comments
#lines = map(RemoveComments, lines)
# split
lines = map(string.split, lines)
# convert into float
lines = map(toNumList, lines)
# convert into array
lines = array(map(array, lines))
# transpose
lines = transpose(lines)
if header != None:
iobs = {}
i = 0
for elt in elts:
iobs[elt]=i
i = i + 1
vals = {}
for key in iobs.keys():
vals[key] = lines[iobs[key]]
return vals
# return
if columns == None:
return lines
else:
return lines.take(axis=0,indices=columns)
#################################################
#
#################################################
nsteps = 146
files = sys.argv[1:]
n = len(files)
ns = zeros(n)
ss = zeros(n)
tt = zeros(n)
print
print "%5s %15s %15s %15s"%("Ncpu","PhysTime","TimeForNsteps","#StepsPerTime")
print 56*"-"
for i,file in enumerate(files):
vals = read_ascii(file)
# Step Time nCPUs CPU_Total
Ncpus = vals['nCPUs'][0]
Time = vals['Time'][nsteps]
TimeForNsteps = vals['CPU_Total'][nsteps]
StepsPerTime = float(nsteps)/TimeForNsteps
print "%5d %15g %15g %15g"%(Ncpus,Time,TimeForNsteps/3600.,StepsPerTime)
ns[i]=Ncpus
ss[i]=StepsPerTime
tt[i]=TimeForNsteps
print
print "Total hours %6.3f"%(sum(tt)/3600.)
'''
import Ptools as pt
pt.plot(ns,ss)
pt.scatter(ns,ss)
pt.xlabel('Number of cores')
pt.ylabel('Steps per unit of CPU time')
pt.show()
'''

Event Timeline