2018-11-16 14:44:01 +00:00
|
|
|
#! /usr/bin/python
|
|
|
|
|
|
|
|
|
|
import sys, getopt, fileinput
|
2018-11-30 14:42:11 +00:00
|
|
|
import numpy as np
|
|
|
|
|
import matplotlib.pyplot as plt
|
2018-11-21 15:56:51 +00:00
|
|
|
options,files = getopt.getopt(sys.argv[1:], "V:vqm:D:o:", ["verbose="])
|
2018-11-16 14:44:01 +00:00
|
|
|
|
|
|
|
|
max_multiplicity = 10
|
|
|
|
|
max_dtime = 65535
|
|
|
|
|
verbose = 1
|
2018-11-30 14:42:11 +00:00
|
|
|
out = sys.stdout
|
2018-11-21 15:56:51 +00:00
|
|
|
|
2018-11-16 14:44:01 +00:00
|
|
|
# 0: errors
|
|
|
|
|
# 1: warnings
|
|
|
|
|
# 7: parsed items
|
|
|
|
|
# 8: valid input lines
|
|
|
|
|
# 9: all input
|
|
|
|
|
|
2018-11-21 15:56:51 +00:00
|
|
|
def logger(priority, message):
|
|
|
|
|
if priority <= verbose:
|
|
|
|
|
sys.stderr.write(message)
|
|
|
|
|
|
2018-11-16 14:44:01 +00:00
|
|
|
for o,v in options:
|
|
|
|
|
if o=="-V" or o=="--verbose":
|
|
|
|
|
verbose = int(v)
|
|
|
|
|
if o=="-v":
|
|
|
|
|
verbose += 1
|
|
|
|
|
if o=="-q":
|
|
|
|
|
verbose -= 1
|
|
|
|
|
if o=="-m":
|
|
|
|
|
max_multiplicity = int(v, 0)
|
|
|
|
|
if o=="-D":
|
|
|
|
|
max_dtime = int(v, 0)
|
|
|
|
|
if max_dtime<0:
|
|
|
|
|
raise ValueError("max_dtime must be positive %d" % max_dtime)
|
|
|
|
|
if max_dtime>0xffff:
|
2018-11-21 15:56:51 +00:00
|
|
|
logger(1, "max_dtime = 0xffff")
|
2018-11-16 14:44:01 +00:00
|
|
|
max_dtime = 0xffff
|
2018-11-21 15:56:51 +00:00
|
|
|
if o=="-o":
|
|
|
|
|
out = file(v, "w")
|
2018-11-16 14:44:01 +00:00
|
|
|
|
|
|
|
|
def analyse_burst(burst, Time, Pressure):
|
2018-12-03 16:22:58 +00:00
|
|
|
ll = [l for b,l in burst]
|
|
|
|
|
burst = [b for b,l in burst]
|
2018-11-16 14:44:01 +00:00
|
|
|
if not burst:
|
|
|
|
|
return
|
2018-11-21 15:56:51 +00:00
|
|
|
logger(4, "burst of length %d at %d\n" % (len(burst), Time))
|
2018-12-03 13:39:47 +00:00
|
|
|
#for i in range(1, len(burst)-1):
|
|
|
|
|
#for j in range(2, len(burst)+1-i):
|
|
|
|
|
#dti = sum(burst[i:i+j])
|
|
|
|
|
#if dti <= max_dtime:
|
|
|
|
|
#out.write("D %d %.1f %d %d\n" % (Time, Pressure, dti, j))
|
|
|
|
|
l = len(burst)
|
2018-12-03 16:22:58 +00:00
|
|
|
eburst = l*[max_dtime] + burst + l*[max_dtime]
|
2018-12-03 13:39:47 +00:00
|
|
|
for i in range(l):
|
2018-12-03 16:22:58 +00:00
|
|
|
dtis=[]
|
|
|
|
|
for j in range(1, min(max_multiplicity, l)):
|
|
|
|
|
dti = min([sum(eburst[i+l-k+1:i+l-k+1+j]) for k in range(j+1)])
|
|
|
|
|
dtis.append(dti)
|
2018-12-03 13:39:47 +00:00
|
|
|
if dti <= max_dtime:
|
2018-12-03 16:22:58 +00:00
|
|
|
out.write("DT %d %.1f %d %d\n" %(Time, Pressure, dti, j+1))
|
|
|
|
|
out.write(("EIDT "+" ".join(ll[i][1:])+len(dtis)*" %d"+"\n") % tuple(dtis))
|
|
|
|
|
|
2018-11-16 14:44:01 +00:00
|
|
|
burst = []
|
|
|
|
|
for line in fileinput.input(files):
|
2018-11-30 14:42:11 +00:00
|
|
|
logger(8 if line[0] in "HEP" else 9, line)
|
|
|
|
|
if line[:2]=="H ":
|
2018-11-16 14:44:01 +00:00
|
|
|
Time = float(line.split()[1])
|
2018-11-21 15:56:51 +00:00
|
|
|
logger(7, "Time: %d\n" % Time)
|
2018-11-30 14:42:11 +00:00
|
|
|
if line[:3]=="EI ":
|
2018-12-03 16:22:58 +00:00
|
|
|
ll = line.split()
|
|
|
|
|
dtime = int(ll[4])
|
|
|
|
|
if dtime>=max_dtime:
|
2018-11-16 14:44:01 +00:00
|
|
|
analyse_burst(burst, Time, 0.0)
|
|
|
|
|
burst = []
|
2018-12-03 16:22:58 +00:00
|
|
|
burst.append((dtime,ll))
|
|
|
|
|
|
2018-11-30 14:42:11 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
#plt.figure()
|
|
|
|
|
#plt.plot(hist(dti), mult)
|
|
|
|
|
#plt.show()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
""" np.savetxt("dti.txt", dti)
|
|
|
|
|
dti = np.loadtxt("dti.txt", unpack=True)
|
|
|
|
|
"""
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|