コード例 #1
0
 def test_parse_fit_gc_trainer(self):
     # Trainer .fit activity exported from Garmin Connect site
     df, meta = ZwiftTraining.parse_fit_file(
         'tcx_gpx_fit_files/4944741403.fit')
     self.verify_fit2(meta)
     self.assertAlmostEqual(df['duration'].iloc[-1],
                            pd.Timedelta('00:36:51').total_seconds(),
                            delta=3 * 60)
     self.assertAlmostEqual(df['mov_duration'].iloc[-1],
                            pd.Timedelta('00:36:46').total_seconds(),
                            delta=1 * 60)
     self.assertAlmostEqual(df['distance'].iloc[-1], 14.8, delta=0.2)
コード例 #2
0
 def test_parse_fit_zwift(self):
     # The same activity as above, but with .fit file exported directly from Zwift
     df, meta = ZwiftTraining.parse_fit_file(
         'tcx_gpx_fit_files/2020-06-27-06-38-50.fit')
     self.verify_fit1(meta)
     self.assertAlmostEqual(df['duration'].iloc[-1],
                            pd.Timedelta('2:09:53').total_seconds(),
                            delta=2 * 60)
     self.assertAlmostEqual(df['mov_duration'].iloc[-1],
                            pd.Timedelta('2:01:06').total_seconds(),
                            delta=2 * 60)
     self.assertAlmostEqual(df['distance'].iloc[-1], 54.94, delta=1)
コード例 #3
0
    def test_parse_fit_strava(self):
        # https://www.strava.com/activities/3676214123
        # This is a Zwift fit file, but exported through Strava
        df, meta = ZwiftTraining.parse_fit_file(
            'tcx_gpx_fit_files/3925200538.fit')
        self.verify_fit1(meta)

        self.assertAlmostEqual(df['duration'].iloc[-1],
                               pd.Timedelta('2:09:53').total_seconds(),
                               delta=2 * 60)
        self.assertAlmostEqual(df['mov_duration'].iloc[-1],
                               pd.Timedelta('2:01:06').total_seconds(),
                               delta=2 * 60)
        self.assertAlmostEqual(df['distance'].iloc[-1], 54.94, delta=1)
コード例 #4
0
 def test_parse_fit_trainer_with_gps(self):
     # We're training on trainer but left the GPS on! Any distance calculation based on GPS
     # will be ruined.
     # https://www.strava.com/activities/1746273899/overview
     df, meta = ZwiftTraining.parse_fit_file(
         'tcx_gpx_fit_files/1873571076.fit')
     self.assertEqual(meta['sport'], 'cycling')
     self.assertAlmostEqual(meta['distance'], 14, delta=1)
     self.assertAlmostEqual(meta['duration'].total_seconds(),
                            pd.Timedelta('0:37:50 ').total_seconds(),
                            delta=1 * 60)
     self.assertAlmostEqual(meta['mov_duration'].total_seconds(),
                            pd.Timedelta('0:35:37').total_seconds(),
                            delta=1 * 60)
     self.assertAlmostEqual(meta['elevation'], 3, delta=27)  # <-- !
     self.assertAlmostEqual(meta['speed_avg'], 23.6, delta=0.5)
     self.assertAlmostEqual(meta['speed_max'], 37.8, delta=6)  # <-- !
     self.assertAlmostEqual(meta['power_avg'], 107, delta=1)
     self.assertAlmostEqual(meta['power_max'], 167, delta=10)
     self.assertAlmostEqual(meta['cadence_avg'], 82, delta=1.5)
     self.assertAlmostEqual(meta['cadence_max'], 132, delta=20)  # <-- !
     self.assertAlmostEqual(meta['temp_avg'], 27, delta=0.5)
     self.assertAlmostEqual(meta['temp_max'], 27, delta=0.5)
コード例 #5
0
 def test_parse_fit_bromo100k(self):
     # Older .fit file from Strava
     # https://www.strava.com/activities/120989151
     df, meta = ZwiftTraining.parse_fit_file(
         'tcx_gpx_fit_files/132442327.fit')
     self.assertEqual(meta['sport'], 'cycling')
     self.assertAlmostEqual(meta['distance'], 109.89, delta=2)
     self.assertAlmostEqual(meta['duration'].total_seconds(),
                            pd.Timedelta('8:13:36 ').total_seconds(),
                            delta=1 * 60)
     self.assertAlmostEqual(meta['mov_duration'].total_seconds(),
                            pd.Timedelta('6:15:09').total_seconds(),
                            delta=10 * 60)
     self.assertAlmostEqual(meta['elevation'], 1932, delta=225)  # <-- !!
     self.assertAlmostEqual(meta['speed_avg'], 17.6, delta=0.5)
     self.assertAlmostEqual(meta['speed_max'], 44.6, delta=0.5)
     self.assertAlmostEqual(meta['hr_avg'], 143, delta=1)
     self.assertAlmostEqual(meta['hr_max'], 173, delta=1)
     self.assertAlmostEqual(meta['power_avg'], 117, delta=1)
     self.assertAlmostEqual(meta['power_max'], 428, delta=10)
     self.assertAlmostEqual(meta['cadence_avg'], 74, delta=1.5)
     self.assertAlmostEqual(meta['cadence_max'], 210, delta=20)  # <-- !
     self.assertAlmostEqual(meta['temp_avg'], 25, delta=0.5)
     self.assertAlmostEqual(meta['temp_max'], 37, delta=0.5)