/
yadis
/
ParserOhioT1DM
Обзор
Документация
Войти
/
yadis
/
ParserOhioT1DM
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
main
python/parser/T1DmPatientDatasetParser.py
172 строки
6 KB
NazarDev
add python part
29 июл 2026, 21:43
29 июл 2026, 21:43
6cf9d30
Код
Авторство
О чём код?
from models.events.BasalEvent import BasalEvent from models.events.BasisGenericEvent import BasisGenericEvent from models.events.BasisSleepEvent import BasisSleepEvent from models.events.BolusEvent import BolusEvent from models.events.ExerciseEvent import ExerciseEvent from models.events.FingerStickEvent import FingerStickEvent from models.events.GlucoseEvent import GlucoseEvent from models.events.IllnessEvent import IllnessEvent from models.events.MealEvent import MealEvent from models.events.SimpleEvent import SimpleEvent from models.events.SleepEvent import SleepEvent from models.events.TempBasalEvent import TempBasalEvent from models.events.WorkEvent import WorkEvent from models.T1DmPatientDataset import T1DmPatientDataset class T1DmPatientDatasetParser: @staticmethod def _parse_glucose(item): return GlucoseEvent(TimestampTicks=item[0], ValueMgDl=float(item[1]), ValueMmol=float(item[2])) @staticmethod def _parse_fingerstick(item): return FingerStickEvent(TimestampTicks=item[0], ValueMgDl=float(item[1]), ValueMmol=float(item[2])) @staticmethod def _parse_basal(item): return BasalEvent(TimestampTicks=item[0], Value=float(item[1])) @staticmethod def _parse_temp_basal(item): return TempBasalEvent(BeginTicks=item[0], EndTicks=item[1], Value=float(item[2])) @staticmethod def _parse_bolus(item): return BolusEvent( BeginTicks=item[0], EndTicks=item[1], Dose=float(item[2]), Type=str(item[3]), BwzCarbInput=float(item[4]) ) @staticmethod def _parse_meal(item): return MealEvent(TimestampTicks=item[0], Carbs=float(item[1]), Type=str(item[2])) @staticmethod def _parse_sleep(item): return SleepEvent(BeginTicks=item[0], EndTicks=item[1], Quality=item[2]) @staticmethod def _parse_work(item): return WorkEvent(BeginTicks=item[0], EndTicks=item[1], Intensity=item[2]) @staticmethod def _parse_simple(item): return SimpleEvent(TimestampTicks=item[0]) @staticmethod def _parse_illness(item): return IllnessEvent(BeginTicks=item[0], EndTicks=item[1], Description=str(item[2])) @staticmethod def _parse_exercise(item): return ExerciseEvent( TimestampTicks=item[0], DurationMinutes=item[1], Intensity=item[2], Type=str(item[3]) ) @staticmethod def _parse_basis_generic(item): return BasisGenericEvent(TimestampTicks=item[0], Value=float(item[1])) @staticmethod def _parse_basis_sleep(item): return BasisSleepEvent( BeginTicks=item[0], EndTicks=item[1], Quality=item[2], Type=str(item[3]) ) #with open(mpk_path, "rb") as f: #raw_data = msgpack.unpack(f, raw=False) #dataset = T1DmPatientDatasetParser.parse(raw_data) @staticmethod def parse(raw_data): dataset = T1DmPatientDataset() if len(raw_data) != 18 and len(raw_data) != 19: raise Exception(f"raw_data length is {len(raw_data)}, expected 18 or 19") if raw_data[0]: dataset.GlucoseLevel = \ [T1DmPatientDatasetParser._parse_glucose(item) for item in raw_data[0]] if raw_data[1]: dataset.FingerSticks = \ [T1DmPatientDatasetParser._parse_fingerstick(item) for item in raw_data[1]] if raw_data[2]: dataset.BasalRates = \ [T1DmPatientDatasetParser._parse_basal(item) for item in raw_data[2]] if raw_data[3]: dataset.TempBasals = \ [T1DmPatientDatasetParser._parse_temp_basal(item) for item in raw_data[3]] if raw_data[4]: dataset.Boluses = \ [T1DmPatientDatasetParser._parse_bolus(item) for item in raw_data[4]] if raw_data[5]: dataset.Meals = \ [T1DmPatientDatasetParser._parse_meal(item) for item in raw_data[5]] if raw_data[6]: dataset.SleepIntervals = \ [T1DmPatientDatasetParser._parse_sleep(item) for item in raw_data[6]] if raw_data[7]: dataset.WorkIntervals = \ [T1DmPatientDatasetParser._parse_work(item) for item in raw_data[7]] if raw_data[8]: dataset.Stressors = \ [T1DmPatientDatasetParser._parse_simple(item) for item in raw_data[8]] if raw_data[9]: dataset.HypoEvents = \ [T1DmPatientDatasetParser._parse_simple(item) for item in raw_data[9]] if raw_data[10]: dataset.Illnesses = \ [T1DmPatientDatasetParser._parse_illness(item) for item in raw_data[10]] if raw_data[11]: dataset.ExerciseIntervals = \ [T1DmPatientDatasetParser._parse_exercise(item) for item in raw_data[11]] if raw_data[12]: dataset.BasisHeartRate = \ [T1DmPatientDatasetParser._parse_basis_generic(item) for item in raw_data[12]] if raw_data[13]: dataset.BasisGsr = \ [T1DmPatientDatasetParser._parse_basis_generic(item) for item in raw_data[13]] if raw_data[14]: dataset.BasisSkinTemperature = \ [T1DmPatientDatasetParser._parse_basis_generic(item) for item in raw_data[14]] if raw_data[15]: dataset.BasisAirTemperature = \ [T1DmPatientDatasetParser._parse_basis_generic(item) for item in raw_data[15]] if raw_data[16]: dataset.BasisSteps = \ [T1DmPatientDatasetParser._parse_basis_generic(item) for item in raw_data[16]] if raw_data[17]: dataset.BasisSleepIntervals = \ [T1DmPatientDatasetParser._parse_basis_sleep(item) for item in raw_data[17]] if len(raw_data) > 18 and raw_data[18]: dataset.BasisAcceleration = \ [T1DmPatientDatasetParser._parse_basis_generic(item) for item in raw_data[18]] return dataset