Skip to content
Snippets Groups Projects
Commit 17670b9d authored by Tommy Olofsson's avatar Tommy Olofsson
Browse files

Allow mixed registrations and data in CSV tool.

parent 9c7a9e2e
Branches
Tags
No related merge requests found
......@@ -5,11 +5,11 @@ import labcomm
class Reader(object):
def __init__(self, file):
self.file = open(file)
def __init__(self, _file):
self._file = open(_file)
def read(self, count):
data = self.file.read(count)
data = self._file.read(count)
if len(data) == 0:
raise EOFError()
return data
......@@ -70,37 +70,41 @@ def dump_labels(current, _type):
def main():
if len(sys.argv) != 2:
sys.exit("Give input file as argument\n")
d = labcomm.Decoder(Reader(sys.argv[1]))
seen = {}
current = {}
_type = {}
# Do one pass through the file to find all registrations.
while True:
try:
(o, t) = d.decode()
except EOFError:
break
if o == None:
# Type declaration
o, t = d.decode()
if o is None:
seen[t.name] = 0
_type[t.name] = t
else:
current[t.name] = o
if len(current) == len(_type):
# We have got one sample of each
except EOFError:
break
dump_labels(current, _type)
n = 0
while o != None:
if seen[t.name] > n:
n = seen[t.name]
dump(current, _type)
current[t.name] = o
seen[t.name] += 1
# Do another pass to extract the data.
current = {}
d = labcomm.Decoder(Reader(sys.argv[1]))
while True:
try:
(o, t) = d.decode()
o, t = d.decode()
if o is not None:
current[t.name] = o
if len(current) == len(_type):
# Assume that samples arrive at different rates.
# Trigger on everything once we have a value for
# each column.
dump(current, _type)
except EOFError:
break
dump(current, _type)
if __name__ == "__main__":
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment