Source code for dispel.providers.digital_artefacts.io.generic

"""Generic parsing functionality for digital artefacts (DA) records."""

from typing import Dict

import pandas as pd

from dispel.data.core import Evaluation
from dispel.data.devices import Device, IOSPlatform, Screen
from dispel.data.epochs import Epoch, EpochDefinition


[docs] def parse_device(record: Dict) -> Device: """Parse the device information. Parameters ---------- record The dictionary containing the metadata about the Device Returns ------- Device The representation of the device """ screen = Screen( width_dp_pt=record["device"]["screen_width_pt"], height_dp_pt=record["device"]["screen_height_pt"], width_pixels=1, height_pixels=1, ) # Derive correct platform if there are more possibilities than iOS. assert record["device"]["os"] == "iOS" return Device( platform=IOSPlatform(), model=record["device"]["platform"], screen=screen, app_build_number=record["app"]["app_build_number"], app_version_number=record["app"]["app_version_number"], )
[docs] def parse_evaluation_epoch(record: Dict) -> Epoch: """Extract the global epoch of the assessment. Parameters ---------- record The DA record containing the session information. Returns ------- Epoch The epoch object of for the evaluation of the reading. """ start = pd.Timestamp(record["session"]["start_utc"]) end = start + pd.Timedelta(record["session"]["duration"], unit="ms") return Epoch(start, end)
[docs] def parse_evaluation(record: Dict) -> Evaluation: """Parse the evaluation information of the session. Parameters ---------- record The DA record containing the session information. Returns ------- Evaluation The evaluation representation of the session """ id_ = record["session"]["test_id"] epoch = parse_evaluation_epoch(record) return Evaluation( start=epoch.start, end=epoch.end, definition=EpochDefinition(id_=id_), uuid=record["session"]["session_id"], user_id=record["session"]["subject_id"], finished=True, )