Skip to content

Commit

Permalink
fitbit sense data fix
Browse files Browse the repository at this point in the history
  • Loading branch information
M7-Soliman committed Feb 18, 2024
1 parent fa563e9 commit 143abe0
Show file tree
Hide file tree
Showing 3 changed files with 105 additions and 9 deletions.
14 changes: 7 additions & 7 deletions tests/devices/fitbit/test_fitbit_sense.py
Original file line number Diff line number Diff line change
Expand Up @@ -76,31 +76,31 @@ def helper_test(device, start_synthetic, end_synthetic, real):
},
)
minutesAsleep = []
for datapoint in sleep:
for datapoint in sleep[0]["sleep"]:
minutesAsleep.append(datapoint["minutesAsleep"])
assert len(minutesAsleep) >= 1, "Number of sleep data points should be at least 1"
assert (
sum(minutesAsleep) / len(minutesAsleep) < 800
), f"Average minutes asleep should be less than 800 but was {sum(minutesAsleep) / len(minutesAsleep)}"

steps_arr = []
for datapoint in steps:
for datapoint in steps[0]["activities-steps"]:
steps_arr.append(datapoint["value"])
assert len(steps_arr) >= 1, "Number of steps data points should be at least 1"
assert (
sum(steps_arr) / len(steps_arr) < 20000
), f"Average steps should be less than 20000 but was {sum(steps_arr) / len(steps_arr)}"

light = []
for datapoint in minutesLightlyActive:
for datapoint in minutesLightlyActive[0]["activities-minutesLightlyActive"]:
light.append(datapoint["value"])
assert (
datapoint["value"] < 1440
), f"Value should be less than 1440 but was {datapoint['value']}"
assert len(light) >= 1, "Number of light activity data points should be at least 1"

fair = []
for datapoint in minutesFairlyActive:
for datapoint in minutesFairlyActive[0]["activities-minutesFairlyActive"]:
fair.append(datapoint["value"])
assert (
datapoint["value"] < 1440
Expand All @@ -110,7 +110,7 @@ def helper_test(device, start_synthetic, end_synthetic, real):
), "Number of fairly active minutes data points should be at least 1"

very = []
for datapoint in minutesVeryActive:
for datapoint in minutesVeryActive[0]["activities-minutesVeryActive"]:
very.append(datapoint["value"])
assert (
datapoint["value"] < 1440
Expand All @@ -120,7 +120,7 @@ def helper_test(device, start_synthetic, end_synthetic, real):
), "Number of very active minutes data points should be at least 1"

sedentary = []
for datapoint in minutesSedentary:
for datapoint in minutesSedentary[0]["activities-minutesSedentary"]:
sedentary.append(datapoint["value"])
assert (
datapoint["value"] < 1440
Expand All @@ -130,7 +130,7 @@ def helper_test(device, start_synthetic, end_synthetic, real):
), "Number of sedentary minutes data points should be at least 1"

distance_arr = []
for datapoint in distance:
for datapoint in distance[0]["activities-distance"]:
distance_arr.append(datapoint["value"])
assert (
sum(distance_arr) / len(distance_arr) < 30
Expand Down
54 changes: 53 additions & 1 deletion wearipedia/devices/fitbit/fitbit_sense.py
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,59 @@ def _filter_synthetic(self, data, data_type, params):
num_days_start = delta1.days
num_days_end = delta2.days

return data[num_days_start : -num_days_end + 1]
if data_type == "sleep":
intermediary = data[0]["sleep"][num_days_start : -num_days_end + 1]
return [{"sleep": intermediary}]

if data_type == "steps":
intermediary = data[0]["activities-steps"][
num_days_start : -num_days_end + 1
]
return [{"activities-steps": intermediary}]

if data_type == "sleep":
intermediary = data[0]["sleep"][num_days_start : -num_days_end + 1]
return [{"steps": intermediary}]

if data_type == "minutesVeryActive":
intermediary = data[0]["activities-minutesVeryActive"][
num_days_start : -num_days_end + 1
]
return [{"activities-minutesVeryActive": intermediary}]

if data_type == "minutesLightlyActive":
intermediary = data[0]["activities-minutesLightlyActive"][
num_days_start : -num_days_end + 1
]
return [{"activities-minutesLightlyActive": intermediary}]

if data_type == "minutesFairlyActive":
intermediary = data[0]["activities-minutesFairlyActive"][
num_days_start : -num_days_end + 1
]
return [{"activities-minutesFairlyActive": intermediary}]

if data_type == "distance":
intermediary = data[0]["activities-distance"][
num_days_start : -num_days_end + 1
]
return [{"activities-distance": intermediary}]

if data_type == "minutesSedentary":
intermediary = data[0]["activities-minutesSedentary"][
num_days_start : -num_days_end + 1
]
return [{"activities-minutesSedentary": intermediary}]

if data_type == "hrv":
intermediary = data[0]["hrv"][num_days_start : -num_days_end + 1]
return [{"hrv": intermediary}]

if data_type == "distance_day":
return data

if data_type == "heart_rate_day":
return data

def _get_real(self, data_type, params):

Expand Down
46 changes: 45 additions & 1 deletion wearipedia/devices/fitbit/fitbit_sense_gen.py
Original file line number Diff line number Diff line change
Expand Up @@ -389,8 +389,52 @@ def create_syn_data(start_date, end_date):
full_dict["minutesLightlyActive"].append(activity[3])
full_dict["distance"].append(activity[4])
full_dict["minutesSedentary"].append(activity[5])
full_dict["heart_rate"].append(get_heart_rate(date))
full_dict["heart_rate_day"].append(get_heart_rate(date))
full_dict["hrv"].append(get_hrv(date))
full_dict["distance_day"].append(get_distance_day(date))

# encapsulate to match original data shape
data = []
for ele in full_dict["sleep"]:
data.append(ele)
full_dict["sleep"] = [{"sleep": data}]

data = []
for ele in full_dict["steps"]:
data.append(ele)
full_dict["steps"] = [{"activities-steps": data}]

data = []
for ele in full_dict["minutesVeryActive"]:
data.append(ele)
full_dict["minutesVeryActive"] = [{"activities-minutesVeryActive": data}]

data = []
for ele in full_dict["minutesFairlyActive"]:
data.append(ele)
full_dict["minutesFairlyActive"] = [{"activities-minutesFairlyActive": data}]

data = []
for ele in full_dict["minutesLightlyActive"]:
data.append(ele)
full_dict["minutesLightlyActive"] = [{"activities-minutesLightlyActive": data}]

data = []
for ele in full_dict["distance"]:
data.append(ele)
full_dict["distance"] = [{"activities-distance": data}]

data = []
for ele in full_dict["minutesSedentary"]:
data.append(ele)
full_dict["minutesSedentary"] = [{"activities-minutesSedentary": data}]

data = []
for ele in full_dict["hrv"]:
data.append(ele)
full_dict["hrv"] = [{"hrv": data}]

full_dict["distance_day"] = full_dict["distance_day"][0]["distance_day"]
full_dict["heart_rate_day"] = full_dict["heart_rate_day"][0]["heart_rate_day"]

return full_dict

0 comments on commit 143abe0

Please sign in to comment.