Compare commits

...

2 commits

Author SHA1 Message Date
Nicolas Rohrbeck
3a9ffadb86 supports iter protocol, returns nothing 2025-06-27 21:52:34 +02:00
Nicolas Rohrbeck
2415ecedcc added verbose 2025-06-27 21:52:08 +02:00
2 changed files with 54 additions and 5 deletions

View file

@ -1,15 +1,17 @@
#! /usr/bin/python3 #! /usr/bin/python3
from seth_classes import Banana from seth_classes import ReadSeth
import argparse import argparse
import numpy as np import numpy as np
import pandas as pd import pandas as pd
parser = argparse.ArgumentParser(prog='bananas.py') parser = argparse.ArgumentParser(prog='bananas.py')
parser.add_argument('filepath') parser.add_argument('filepath')
parser.add_argument( '-v', '--verbose', action='store_true')
args = parser.parse_args() args = parser.parse_args()
fp = args.filepath fp = args.filepath
v = args.verbose
def make_hist(dataframe, binsize = 100): def make_hist(dataframe, binsize = 100):
mask_slice0 = dataframe['sl'] == '0' mask_slice0 = dataframe['sl'] == '0'
@ -19,6 +21,6 @@ def make_hist(dataframe, binsize = 100):
print(slice0) print(slice0)
test = Banana() test = ReadSeth(fp, v)
make_hist(test.read_from_file(fp)) for event in test:
print(event)

View file

@ -4,7 +4,7 @@ import numpy as np
import pandas as pd import pandas as pd
class Banana(): class Banana:
def read_from_file(self, filepath): def read_from_file(self, filepath):
d={'clock':[], 'sl':[], 'channel':[], 'dtime':[], 'lost':[], 'a':[], 'b':[], 'phase':[], 'banana':[], 'pha':[]} # slice (sl) is called det in ahepamfile.c d={'clock':[], 'sl':[], 'channel':[], 'dtime':[], 'lost':[], 'a':[], 'b':[], 'phase':[], 'banana':[], 'pha':[]} # slice (sl) is called det in ahepamfile.c
@ -17,3 +17,50 @@ class Banana():
d[keys[i]].append(contents[i+1]) d[keys[i]].append(contents[i+1])
return pd.DataFrame(d) return pd.DataFrame(d)
class ReadSeth:
def __init__(self, filename, verbose = False):
self.verbose = verbose
self.filename = filename
self.file = open(filename, 'r')
self.partial=[]
self.complete=[]
def __iter__(self):
return self
def __next__(self):
e = self.read_more()
while not self.complete:
if not self.partial:
raise StopIteration
e = self.complete[0]
self.complete[0:1]=[]
return e
time_old=100
def read_more(self):
time_window = 5
l = self.file.readline()
if self.verbose:
print(l, l[0])
if l[0] == ' E':
line = [float(num) for num in l.split(r'\s+')[1:]]
print(line)
if not self.partial or line[0] + time_window <= self.partial[0][0]:
self.partial.append(line)
self.read_more()
self.complete.append(self.partial)
self.partial = []
class SethEvent:
def __init__(self):
self.eventlines = []
def append_line(self, line: list):
self.eventlines.append(line)