Source code for flirt.reader.holter

from datetime import datetime

import pandas as pd
from ishneholterlib import Holter

__all__ = [
    'get_starttime_from_holter',
    'read_holter_ibi_file_into_df',
]


[docs]def get_starttime_from_holter(holter_path: str) -> datetime: """ Reads the start time of a holter file Parameters ---------- holter_path : str path to the holter file Returns ------- datetime the start datetime of the Holter file """ holter = Holter(holter_path) return datetime.combine(holter.record_date, holter.start_time)
[docs]def read_holter_ibi_file_into_df(start_time: datetime, ibi_file: str) -> pd.DataFrame: """ Reads a Holter IBI file (from Lifecard CF) into a pandas DataFrame Parameters ---------- start_time : datetime starttime of the file (should be retrieved from Holter file) ibi_file : str path to the IBI file Returns ------- pd.DataFrame DataFrame containing the IBIs """ ibi = pd.read_csv(ibi_file, skiprows=1, names=['ibi', 'type'], delim_whitespace=True) ibi.index = pd.to_datetime((ibi['ibi'] * 1000 + start_time.timestamp() * 1000).map(int), utc=True, unit='ms') ibi.index = ibi.index.tz_convert(tz=start_time.tzinfo) ibi.drop(ibi[ibi['type'] != 'N'].index, inplace=True) ibi['ibi_diff'] = ((ibi['ibi'] - ibi['ibi'].shift(1)) * 1000) ibi.dropna(subset=['ibi_diff'], inplace=True) ibi['ibi'] = ibi['ibi_diff'].map(int) ibi.drop(columns=['ibi_diff', 'type'], inplace=True) ibi.index.name = 'datetime' return ibi