From 05a92dd0b469a96df1edcbe27780c1cb1627cb1e Mon Sep 17 00:00:00 2001 From: Ray Slakinski Date: Tue, 14 Sep 2010 11:04:39 -0400 Subject: [PATCH] first commit --- README.md | 0 pyedf.py | 36 ++++++++++++++++++++++++++++++++++++ 2 files changed, 36 insertions(+) create mode 100644 README.md create mode 100644 pyedf.py diff --git a/README.md b/README.md new file mode 100644 index 0000000..e69de29 diff --git a/pyedf.py b/pyedf.py new file mode 100644 index 0000000..a4931d9 --- /dev/null +++ b/pyedf.py @@ -0,0 +1,36 @@ +import re + +def read_edf_file(filename): + f = open(filename, 'r') + data = f.read() + f.close() + header = {} + header['version'] = data[0:7].strip() # 8 + header['patient_id'] = data[7:88].strip() # 80 + header['rec_id'] = data[88:168].strip() # 80 + header['startdate'] = data[168:176].strip() # 8 + header['starttime'] = data[176:184].strip() # 8 + header['header_bytes'] = int(data[184:192].strip()) # 8 + header['num_items'] = int(data[236:244].strip()) + header['data_duration'] = float(data[244:252].strip()) + header['num_signals'] = int(data[252:256].strip()) + # more data 256 chars down. in header, but ignoring for now + print header + records = [] + records_a = records.append + rec_pos = 512 + rec_size = 36 + # skip first rec + rec_pos += rec_size + print rec_pos + for i in range(header['num_items']-1): + record = {} + record_split = data[rec_pos:rec_pos+rec_size].split('\x14') + matches = re.findall(r'([\d]+)', record_split[2]) + record['type'] = record_split[3].strip() + record['time'] = {'start': int(matches[0]), 'durration': int(matches[1])} + records_a(record) + rec_pos += rec_size + return {'header': header, 'records': records} +data = read_edf_file('20100912_230640_EVE.edf') +print data \ No newline at end of file