def ride_to_intervals(self, dic): return k(dic) @ (lambda ride: k(ride['RIDE']['INTERVALS']) @ partial( map, lambda interval: k(ride['RIDE']['SAMPLES']) @ partial( filter, lambda data: data['SECS'] >= interval['START'] and data['SECS'] < interval['STOP']) @ partial( map, lambda data: { 'SECS': data.get('SECS'), 'WATTS': data.get('WATTS'), 'HR': data.get('HR') }) @ list @ (lambda x: (interval['NAME'], x)) @ 'end') @ dict @ 'end' ) @ 'end'
def get_power_history(self): path = os.path.join(self.gc_folder_path, 'config/power.zones') with open(path, 'r') as fdesc: lines = fdesc.read().splitlines() return k(lines) \ @ partial(map,lambda x: x.split(':')) @ flatten \ @ partial(split_before, pred = lambda x: 'DEFAULTS' in x or '/' in x) \ @ list @ partial(select, lambda x: x[0]!='DEFAULTS') \ @ (lambda l: [{'dateTime': datetime.strptime(x[0],'%Y/%m/%d'), **( k(x[1:]) @ partial(map,lambda y: k(y.split('=')) @ partial(map, lambda i: i.strip()) @ tuple @ 'end' if '=' in y else y) @ dict @ 'end' ) } for x in l ]) @ 'end'
def get_sleep_info(self, base_date = None, end_date = None): list_dates = self.split_dates_in_Ns(base_date, end_date, 100) return k(list_dates) @ partial(map, lambda x: self.authd_client.time_series('sleep', base_date=x['base_date'], end_date=x['end_date'])['sleep']) \ @ itertools.chain.from_iterable @ list @ self._sleep_struct \ @ 'end'
def get_intraday_heartrate_info(self, base_date = 'today', end_date = '1d', detail_level = '1min'): if end_date == '1d': return self._intraday_heart_struct([ self.authd_client.intraday_time_series('activities/heart', base_date=base_date, detail_level = detail_level)]) else: list_dates = self.date_delimiter_to_range(base_date, end_date) return k(list_dates) @ partial(map, lambda date: self.get_intraday_heartrate_info(base_date = date, end_date = '1d', detail_level = detail_level))\ @ list @ \ (lambda lst: {list(x.keys())[0]: list(x.values())[0] for x in lst})\ @ 'end'
pep = gcApi.get_rides_by_date('2017-03-09', datestr_end = '2017-03-28') len(list(pep)) pup = gcApi.get_rides_with_note('sloten') pupu = list(pup) len(pupu) pupu[1]['RIDE']['STARTTIME'] dict([('jue', 1),('lol',2)]) gcApi.ride_to_intervals(pupu[0]) pipu = pdw.dictsOfDicts_to_dataframes(gcApi.ride_to_intervals(pupu[0])) pipu pipui = pipu.iloc[:,pipu.columns.get_level_values(0) == 'Lap 1 '].get('Lap 1 ').set_index('SECS').reindex(k(pipui.index) @ (lambda x: np.arange(x.min(),x.max()+1)) @ 'end', fill_value = 0) pipui.plot() .plot() pipu.iloc[:,pipu.columns.get_level_values(0) == 'Lap 1 '].plot() pipu.iloc[:,pipu.columns.get_level_values(0) == 'Lap 1 '] gcApi.get_power_history() # %% # ===========================================
def get_power_at_date(self, date): return k(self.get_power_history()) \ @ partial(filter, lambda x: x['dateTime'] < datetime.strptime(date,'%Y-%m-%d'))\ @ last @ 'end'