My company uses a legacy file format for Electromiography data, which is no longer in production. However, there is some interest in maintaining retro-compatibility, so I am
To start, why not scan the files for all valid zip streams (it's good enough for small files and to figure out the format):
import zlib
from glob import glob
def zipstreams(filename):
"""Return all zip streams and their positions in file."""
with open(filename, 'rb') as fh:
data = fh.read()
i = 0
while i < len(data):
try:
zo = zlib.decompressobj()
yield i, zo.decompress(data[i:])
i += len(data[i:]) - len(zo.unused_data)
except zlib.error:
i += 1
for filename in glob('*.mio'):
print(filename)
for i, data in zipstreams(filename):
print (i, len(data))
Looks like the data streams contain little-endian double precision floating point data:
import numpy
from matplotlib import pyplot
for filename in glob('*.mio'):
for i, data in zipstreams(filename):
if data:
a = numpy.fromstring(data, '