diff --git a/mcc-flow/merge_records.py b/mcc-flow/merge_records.py new file mode 100644 index 0000000000000000000000000000000000000000..ce09ebfbda6125d2588c2746cf0fcc1faca3ae6a --- /dev/null +++ b/mcc-flow/merge_records.py @@ -0,0 +1,47 @@ +from datetime import datetime +from pathlib import Path +from struct import unpack + +import numpy as np + + +def process_packet(file): + # header + date_, time_, flow, hr, spo2, vbat_eeg, vbat_arm = unpack('>II10sBHHH', file.read(25)) + date_ = str(date_) + time_ = str(time_) + flow = int.from_bytes(flow, 'big') + date_ = datetime.fromisoformat(f'{date_[:4]}-{date_[4:6]}-{date_[6:]}T{time_[:2]}:{time_[2:4]}:{time_[4:]}') + spo2 /= 10. + print(date_, flow, hr, spo2, vbat_eeg, vbat_arm) + + # eeg + eeg = unpack('i' * 4 * 250, file.read(4 * 4 * 250)) + eeg = np.array(eeg) + eeg = eeg.reshape((250, 4)).T + print(eeg, eeg.shape) + eeg_giro = unpack('h' * 3 * 50, file.read(2 * 3 * 50)) + + +def read_dat_file(file): + no_packets = unpack('>I', file.read(4))[0] + process_packet(file) + + +# def process_data(byte_data): +# n_packets = unpack('>i', byte_data.pop(4))[0] +# print(n_packets) + + +def read_data(path): + path = Path(path) + files = path.rglob('*.dat') + for file in files: + with open(file, 'rb') as f: + read_dat_file(f) + exit(12) + + +if __name__ == '__main__': + path = r'D:\Users\Csabi\dev\MCC Flow\database' + read_data(path)