diff --git a/pymule/vegas.py b/pymule/vegas.py index e30f677b6bec26c4e4384fef11c0279700cbf1f6..c6fd3785c98f0d31b01e476c793a1f5c70fbe118 100644 --- a/pymule/vegas.py +++ b/pymule/vegas.py @@ -1,4 +1,5 @@ import struct +import re def read_record(fp, typ): @@ -17,3 +18,29 @@ def read_record(fp, typ): return body[0] else: return body + + +def guess_version(fp, inttype='i'): + fp.seek(0) + magic = fp.read(17).replace('\00', '') + if magic == '\t McMule \t': + version = read_record(fp, 'c').strip() + vers, intiness = re.match("v(\\d+)([NL])", version).groups() + + return int(vers), {'N': 'i', 'L': 'q'}[intiness] + + # Test v1 vs. v2 + intsize = struct.calcsize(inttype) + fp.seek(6893 + 3*intsize) + nrq, nrbins = read_record(fp, inttype) + fp.seek(6925 + 5*intsize + 22*nrq + 16*nrbins*nrq) + try: + time = read_record(fp, 'd') + fp.seek(0) + return 2, inttype + except KeyError: + fp.seek(0) + return 1, inttype + except struct.error: + fp.seek(0) + return 1, inttype