from matplotlib import pyplot as plt
import pprint
import numpy as np

"""
Explanation: Soubory se záznamem z holteru
Užitečný se jeví zejména formát WFDB (.hea/.dat), který obsahuje záznam 3 svodů ECG.
End of explanation
"""


import scipy.io
mat = scipy.io.loadmat('_.mat')

pprint.pprint(mat)

beatpos = mat['beatpos']
len(beatpos[0])


len(mat['PEVENT'][0])

len(mat['beats'][0])

plt.plot(beatpos[0])

plt.plot(mat['PEVENT'][0])

"""
Explanation: Formát .mat
Formát pro práci v Matlabu. V souboru s příponou .mat se nachází metadata o pořízeném záznamu - Datum, čas, název. Nejsou zde obsaženy žádné záznamy s průběhem ECG. Položka PEVENT obsahuje 7 čísel s neznámým významem.
End of explanation
"""


import wfdb
fn = "_"
from wfdb import processing
sig, fields = wfdb.rdsamp(fn, channels=None, sampto=None)
# sig, fields = wfdb.rdsamp(fn, channels=None, sampto=5500)
fields

sig

# remove noisy signal at the beginning
sig = sig[300:]
# cut 5 seconds
sig = sig[:5000]

time = np.array(range(len(sig)))*1/fields['fs']
plt.plot(time, sig)
plt.legend(fields['sig_name'])
plt.ylabel(fields['units'][0])
plt.xlabel('s')
plt.savefig("ekg.png")

"""
Explanation: Soubory Physiobank WFDB (.hea/.dat)
Formát obsahuje záznamy ECG. Testovací soubor obsahuje záznamy ze 3 svodů. Načítáme prvních 5 sekund, aby bylo na obrázku něco vidět. Předpokládám, že 'fs' znamená frekvenci měření.
https://archive.physionet.org/physiotools/wfdb.shtml
https://github.com/MIT-LCP/wfdb-python
Instalace balíky pro python
shell
pip install wfdb
Vizualizace prvních 5 sekund
End of explanation
"""


sig, fields = wfdb.rdsamp(fn, channels=None, sampto=10000)
fields['sig'] = sig
tm = fields['base_time']
dt = fields['base_date']
fields['base_time'] = [tm.hour, tm.minute, tm.second]
fields['base_date'] = [dt.year, dt.month, dt.day]
scipy.io.savemat(fn + 'wfdb_export.mat',fields)

# Kontrola uložení znovu-načtením
scipy.io.loadmat(fn + 'wfdb_export.mat')

"""
Explanation: Matlab export
End of explanation
"""


