Source code for oncvideo.utils

"""Utility functions also exported by the user"""
import os
import pandas as pd
from onc.onc import ONC

[docs]def onc(token = None): """ Create an ONC class object Create an ONC class object, but try to use environment variables to get the API token. The token must stored under 'ONC_API_TOKEN'. Parameters ---------- token : str ONC API token Returns ------- onc.ONC ONC class object """ token = token if token else os.getenv('ONC_API_TOKEN') if token is None: raise ValueError("No API credentials were provided!") return ONC(token)
[docs]def name_to_timestamp(filename): """ Get timestamp from a filename Parameters ---------- filename : str A filename that follows the ONC convention (deviceCode_timestampUTC.ext). Returns ------- pandas.Timestamp The timestamp object corresponding to the filename. The object also has attributes 'dc' (deviceCode) and 'ext' (file extension) for convenience. """ r0_split = filename.split('_') r1_split = r0_split[-1].split('.') if '-' in r1_split[1]: r1_split[1], bitrate = r1_split[1].split('-') ext = f"-{bitrate}.{r1_split[2]}" else: ext = f".{r1_split[2]}" r1 = f'{r1_split[0]}.{r1_split[1]}' r1 = pd.to_datetime(r1, format='%Y%m%dT%H%M%S.%fZ', utc=True) r1.dc = '_'.join(r0_split[:-1]) r1.ext = ext return r1
[docs]def name_to_timestamp_dc(filenames): """ Get timestamps and deviceCode from filenames Wrapper for name_to_timestamp to return deviceCode and timestamp from a pandas Series. Parameters ---------- filenames : pandas.Series A str series with filenames that follow the ONC convention (deviceCode_timestampUTC.ext). Returns ------- pandas.DataFrame A DataFrame with timestamps and deviceCodes """ def _name_to_timestamp_dc_helper(filename): x = name_to_timestamp(filename) return x, x.dc tmp = filenames.apply(_name_to_timestamp_dc_helper).to_list() return pd.DataFrame(tmp, columns=['timestamp', 'deviceCode'], index=filenames.index)