Interim Report

I have the first part of my new Python project (reading and analyzing data from my Garmin): it can now extract (or calculate) distance, time, moving time, maximum speed, average speed, average moving speed, maximum and average heart rates, time in each heart rate zone, and calories for the overall ride and each lap, as well as a linestring of the path taken, and starting points for each lap. For now I only store some of these in my database, but I may add them later — that’s a database task. Here is the output for a ride where I hit the “lap” button a lot:

Processing /home/don/Desktop/temp_stuff/zippy_towpath.fit

Overall Ride Stats:
Start Time: 2019-03-15 18:32:22
Distance: 25.48 mi
Elapsed Time: 2:01:10   Average Speed: 12.62 mph
Moving Time: 2:01:08   Moving Average Speed 12.62 mph
Maximum Speed: 28.62 mph
Avg Heart Rate: 143    Max Heart Rate: 160
Calories: 977
Time in zones: ['0:00:00', '0:02:29', '0:53:39', '1:02:17', '0:00:00']
Estimated MET calories (dirt road): 975
Estimated MET calories (generic MTB): 1429

Lap 1 Stats:
Start Time: 2019-03-15 18:32:22
Distance: 2.55 mi
Elapsed Time: 0:10:14   Average Speed: 14.96 mph
Moving Time: 0:10:13   Moving Average Speed 14.98 mph
Maximum Speed: 28.62 mph
Avg Heart Rate: 121    Max Heart Rate: 149
Calories: 78
Time in zones: ['0:00:00', '0:02:29', '0:03:09', '0:01:49', '0:00:00']
Estimated MET calories (dirt road): 82
Estimated MET calories (generic MTB): 120

Lap 2 Stats:
Start Time: 2019-03-15 18:42:36
Distance: 3.55 mi
Elapsed Time: 0:14:22   Average Speed: 14.84 mph
Moving Time: 0:14:22   Moving Average Speed 14.84 mph
Maximum Speed: 18.94 mph
Avg Heart Rate: 156    Max Heart Rate: 160
Calories: 160
Time in zones: ['0:00:00', '0:00:00', '0:00:00', '0:14:22', '0:00:00']
Estimated MET calories (dirt road): 116
Estimated MET calories (generic MTB): 169

Lap 3 Stats:
Start Time: 2019-03-15 18:56:58
Distance: 0.40 mi
Elapsed Time: 0:01:51   Average Speed: 13.05 mph
Moving Time: 0:01:51   Moving Average Speed 13.01 mph
Maximum Speed: 15.24 mph
Avg Heart Rate: 149    Max Heart Rate: 156
Calories: 19
Time in zones: ['0:00:00', '0:00:00', '0:00:00', '0:01:51', '0:00:00']
Estimated MET calories (dirt road): 15
Estimated MET calories (generic MTB): 22

Lap 4 Stats:
Start Time: 2019-03-15 18:58:49
Distance: 3.89 mi
Elapsed Time: 0:17:07   Average Speed: 13.65 mph
Moving Time: 0:17:07   Moving Average Speed 13.64 mph
Maximum Speed: 18.08 mph
Avg Heart Rate: 145    Max Heart Rate: 153
Calories: 172
Time in zones: ['0:00:00', '0:00:00', '0:03:21', '0:13:46', '0:00:00']
Estimated MET calories (dirt road): 138
Estimated MET calories (generic MTB): 202

Lap 5 Stats:
Start Time: 2019-03-15 19:15:56
Distance: 2.33 mi
Elapsed Time: 0:10:21   Average Speed: 13.50 mph
Moving Time: 0:10:21   Moving Average Speed 13.52 mph
Maximum Speed: 18.29 mph
Avg Heart Rate: 139    Max Heart Rate: 147
Calories: 83
Time in zones: ['0:00:00', '0:00:00', '0:08:44', '0:01:37', '0:00:00']
Estimated MET calories (dirt road): 83
Estimated MET calories (generic MTB): 122

Lap 6 Stats:
Start Time: 2019-03-15 19:26:17
Distance: 5.73 mi
Elapsed Time: 0:28:15   Average Speed: 12.17 mph
Moving Time: 0:28:16   Moving Average Speed 12.16 mph
Maximum Speed: 22.55 mph
Avg Heart Rate: 142    Max Heart Rate: 152
Calories: 196
Time in zones: ['0:00:00', '0:00:00', '0:19:47', '0:08:29', '0:00:00']
Estimated MET calories (dirt road): 227
Estimated MET calories (generic MTB): 333

Lap 7 Stats:
Start Time: 2019-03-15 19:54:33
Distance: 6.32 mi
Elapsed Time: 0:32:54   Average Speed: 11.53 mph
Moving Time: 0:32:55   Moving Average Speed 11.52 mph
Maximum Speed: 14.50 mph
Avg Heart Rate: 143    Max Heart Rate: 150
Calories: 230
Time in zones: ['0:00:00', '0:00:00', '0:16:08', '0:16:47', '0:00:00']
Estimated MET calories (dirt road): 265
Estimated MET calories (generic MTB): 388

Lap 8 Stats:
Start Time: 2019-03-15 20:27:28
Distance: 0.70 mi
Elapsed Time: 0:06:05   Average Speed: 6.94 mph
Moving Time: 0:06:03   Moving Average Speed 6.99 mph
Maximum Speed: 12.39 mph
Avg Heart Rate: 146    Max Heart Rate: 158
Calories: 39
Time in zones: ['0:00:00', '0:00:00', '0:02:30', '0:03:36', '0:00:00']
Estimated MET calories (dirt road): 49
Estimated MET calories (generic MTB): 71
Done

There’s a little room for improvement — rounding errors cause a few problems with moving vs total times in some laps, for instance — but this is what I’m looking for. My next question is: do I want this to be a standalone program, with its own GUI and everything, or do I want to build a web interface?