Exemple #1
0
    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
Exemple #2
0
 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)
Exemple #3
0
    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
Exemple #4
0
 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