Skip to content

Commit

Permalink
Fixed up inconsistent tab/space indenting
Browse files Browse the repository at this point in the history
  • Loading branch information
noizwaves committed May 29, 2016
1 parent aa435e0 commit ea9f84f
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 28 deletions.
41 changes: 21 additions & 20 deletions tcxparser.py
Expand Up @@ -5,19 +5,20 @@

namespace = 'http://www.garmin.com/xmlschemas/TrainingCenterDatabase/v2'


class TCXParser:

def __init__(self, tcx_file):
tree = objectify.parse(tcx_file)
self.root = tree.getroot()
self.activity = self.root.Activities.Activity

def hr_values(self):
return [int(x.text) for x in self.root.xpath('//ns:HeartRateBpm/ns:Value', namespaces={'ns': namespace})]

def altitude_points(self):
return [float(x.text) for x in self.root.xpath('//ns:AltitudeMeters', namespaces={'ns': namespace})]

@property
def latitude(self):
return self.activity.Lap.Track.Trackpoint.Position.LatitudeDegrees.pyval
Expand Down Expand Up @@ -50,65 +51,65 @@ def duration(self):
@property
def calories(self):
return sum(lap.Calories for lap in self.activity.Lap)

@property
def hr_avg(self):
"""Average heart rate of the workout"""
hr_data = self.hr_values()
return sum(hr_data)/len(hr_data)

@property
def hr_max(self):
"""Minimum heart rate of the workout"""
return max(self.hr_values())

@property
def hr_min(self):
"""Minimum heart rate of the workout"""
return min(self.hr_values())

@property
def pace(self):
"""Average pace (mm:ss/km for the workout"""
secs_per_km = self.duration/(self.distance/1000)
return time.strftime('%M:%S', time.gmtime(secs_per_km))

@property
def altitude_avg(self):
"""Average altitude for the workout"""
altitude_data = self.altitude_points()
return sum(altitude_data)/len(altitude_data)

@property
def altitude_max(self):
"""Max altitude for the workout"""
altitude_data = self.altitude_points()
return max(altitude_data)

@property
def altitude_min(self):
"""Min altitude for the workout"""
altitude_data = self.altitude_points()
return min(altitude_data)

@property
def ascent(self):
"""Returns ascent of workout in meters"""
total_ascent = 0.0
altitude_data = self.altitude_points()
for i in range(len(altitude_data) - 1):
diff = altitude_data[i+1] - altitude_data[i]
if diff > 0.0:
total_ascent += diff
diff = altitude_data[i+1] - altitude_data[i]
if diff > 0.0:
total_ascent += diff
return total_ascent
@property

@property
def descent(self):
"""Returns descent of workout in meters"""
total_descent = 0.0
total_descent = 0.0
altitude_data = self.altitude_points()
for i in range(len(altitude_data) - 1):
diff = altitude_data[i+1] - altitude_data[i]
if diff < 0.0:
total_descent += abs(diff)
return total_descent
diff = altitude_data[i+1] - altitude_data[i]
if diff < 0.0:
total_descent += abs(diff)
return total_descent
16 changes: 8 additions & 8 deletions test_tcxparser.py
Expand Up @@ -31,7 +31,7 @@ def test_duration_is_correct(self):

def test_calories_is_correct(self):
self.assertEquals(self.tcx.calories, 379)

def test_hr_max(self):
self.assertEquals(self.tcx.hr_max, 189)

Expand All @@ -40,24 +40,24 @@ def test_hr_min(self):

def test_hr_avg(self):
self.assertEquals(self.tcx.hr_avg, 156)

def test_pace(self):
self.assertEquals(self.tcx.pace, '07:05')

def test_altitude_avg_is_correct(self):
self.assertAlmostEqual(self.tcx.altitude_avg, 172.020056184)

def test_altitude_max_is_correct(self):
self.assertAlmostEqual(self.tcx.altitude_max, 215.95324707)

def test_altitude_min_is_correct(self):
self.assertAlmostEqual(self.tcx.altitude_min, 157.793579102)

def test_ascent_is_correct(self):
self.assertAlmostEqual(self.tcx.ascent, 153.80981445)

def test_descent_is_correct(self):
self.assertAlmostEqual(self.tcx.descent, 166.307128903)

if __name__ == '__main__':
unittest.main()

0 comments on commit ea9f84f

Please sign in to comment.