def build_add_btn_clicked(self): date = pd.Timestamp(self.build_date.text()) sets = [] # Warmup sets if self.build_warmup.text() == '': # Auto-calculate warmup if no text present warmup = analysis.calc_warmup(self._build_tgt_e1rm, self._build_cur_lift) sets.extend(warmup) else: for set in self.build_warmup.text().split(','): parsed = analysis.parse_sets(set.strip(), self._build_tgt_e1rm) sets.extend(parsed) # Main/Drop sets if self.build_top_set.text() != '': top_set = analysis.parse_sets(self.build_top_set.text()) sets.extend(top_set) top_weight, top_reps, top_rpe = top_set[-1] top_e1rm = analysis.calc_e1RM(self._build_cur_lift, top_weight, top_reps, top_rpe) fatigue = self.build_fatigue.value() self._build_cur_workout = self.db.make_workout(self._build_cur_lift, sets, date) drop_sets = self.build_get_drop_sets(top_set[-1], top_e1rm, fatigue, date) self._build_cur_workout = pd.concat((self._build_cur_workout, drop_sets), ignore_index=True) # Perform housekeeping self.build_clear.setEnabled(True) self.build_data_changed.emit() self.build_accept.setEnabled(True) self._log_unsaved_changes = True
def add_set(self, date, lift, weight, reps, rpe=None, comments=None): date = pd.Timestamp(date) new_set = pd.DataFrame(dict(Lift=lift, Weight=weight, Reps=reps, RPE=rpe, Slot=self.get_slot(lift), Category=self.get_category(lift), e1RM=analysis.calc_e1RM(lift, weight, reps, rpe), Volume=weight*reps, Comments=comments), index=[date]) new_set.index.rename('Date', inplace=True) self.workout_log = self.workout_log.append(new_set)
def __fill_blank_e1rms(self): blank_e1RMs = self.workout_log.e1RM.isnull() data = self.workout_log.loc[blank_e1RMs, ['Lift', 'Weight', 'Reps', 'RPE']] e1RMs = [] for idx, row in data.iterrows(): e1RM = analysis.calc_e1RM(row.Lift, row.Weight, row.Reps, row.RPE) e1RMs.append(e1RM) self.workout_log.ix[blank_e1RMs, 'e1RM'] = e1RMs
def make_set(self, lift, weight, reps, date, rpe=None, comments=None): res = pd.Series(index=self.excel_format[self.wl_name]) try: if self.is_valid_lift(lift): res.Lift = lift else: raise ValueError('Lift "{}" is not a valid lift'.format(lift)) if date: res.Date = pd.Timestamp(date) res.Slot = self.get_slot(lift) res.Category = self.get_category(lift) res.Weight = int(weight) res.Reps = int(reps) if rpe: res.RPE = round(float(rpe) * 2.0) / 2.0 else: res.RPE = None res.e1RM = analysis.calc_e1RM(res.Lift, res.Weight, res.Reps, res.RPE) res.Volume = res.Weight * res.Reps res.Comments = comments except (ValueError, TypeError) as err: log_err(err, 'Invalid data provided for set:\n{}'.format((lift, weight, reps, rpe, comments))) return res