Spaces:
Running
Running
Hannah
commited on
Commit
·
33ecdbc
1
Parent(s):
addc7dc
add data
Browse files- app.py +123 -4
- healthdata.csv +71 -0
app.py
CHANGED
@@ -1,7 +1,126 @@
|
|
1 |
import gradio as gr
|
|
|
|
|
2 |
|
3 |
-
def greet(name):
|
4 |
-
return "Hello " + name + "!!"
|
5 |
|
6 |
-
|
7 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
import gradio as gr
|
2 |
+
import numpy as np
|
3 |
+
import pandas as pd
|
4 |
|
|
|
|
|
5 |
|
6 |
+
def load_health_data():
|
7 |
+
# Load the CSV file into a pandas DataFrame
|
8 |
+
df = pd.read_csv('healthdata.csv', header=2)
|
9 |
+
# Replace null values with empty strings
|
10 |
+
df = df.replace({np.nan: "", None: ""})
|
11 |
+
return df
|
12 |
+
|
13 |
+
def get_device_data(device):
|
14 |
+
df = load_health_data()
|
15 |
+
|
16 |
+
# Common columns for all devices
|
17 |
+
base_cols = ['Day', 'Date', 'Day of Week']
|
18 |
+
|
19 |
+
if device == "AppleWatch + AutoSleep":
|
20 |
+
# Get columns with AS suffix + base columns
|
21 |
+
device_cols = base_cols + [col for col in df.columns if 'AS' in col]
|
22 |
+
elif device == "8sleep Pod 4 Ultra":
|
23 |
+
# Get columns with 8S suffix + base columns
|
24 |
+
device_cols = base_cols + [col for col in df.columns if '8S' in col]
|
25 |
+
elif device == "Oura":
|
26 |
+
# Get columns with OU suffix + base columns
|
27 |
+
device_cols = base_cols + [col for col in df.columns if 'OU' in col]
|
28 |
+
elif device == "Whoop":
|
29 |
+
# Get columns with WH suffix + base columns
|
30 |
+
device_cols = base_cols + [col for col in df.columns if 'WH' in col]
|
31 |
+
else:
|
32 |
+
return df
|
33 |
+
|
34 |
+
# Add the Average and Notes columns if they exist
|
35 |
+
if 'Average' in df.columns:
|
36 |
+
device_cols.append('Average')
|
37 |
+
if 'Notes' in df.columns:
|
38 |
+
device_cols.append('Notes')
|
39 |
+
|
40 |
+
return df[device_cols]
|
41 |
+
|
42 |
+
def get_color_for_value(val, min_val, max_val):
|
43 |
+
"""Return a color based on where the value falls in the range"""
|
44 |
+
if min_val == max_val:
|
45 |
+
return "" # No color if all values are the same
|
46 |
+
|
47 |
+
normalized = (val - min_val) / (max_val - min_val)
|
48 |
+
|
49 |
+
if normalized < 0.33:
|
50 |
+
return "" # Low values are blank
|
51 |
+
elif normalized < 0.66:
|
52 |
+
# Medium values are green
|
53 |
+
intensity = int(255 * ((normalized - 0.33) / 0.33))
|
54 |
+
return f"background-color: rgba(0, {intensity}, 0, 0.3)"
|
55 |
+
else:
|
56 |
+
# High values are red
|
57 |
+
intensity = int(255 * ((normalized - 0.66) / 0.34))
|
58 |
+
return f"background-color: rgba({intensity}, 0, 0, 0.3)"
|
59 |
+
|
60 |
+
def prepare_data_with_styling(df):
|
61 |
+
data = df.values.tolist()
|
62 |
+
headers = list(df.columns)
|
63 |
+
|
64 |
+
# Get min/max for each numeric column
|
65 |
+
col_ranges = {}
|
66 |
+
for i, col in enumerate(headers):
|
67 |
+
if col not in ['Day', 'Date', 'Day of Week', 'Notes']:
|
68 |
+
try:
|
69 |
+
values = [float(row[i]) for row in data if row[i] != "" and pd.notna(row[i])]
|
70 |
+
if values:
|
71 |
+
col_ranges[i] = {'min': min(values), 'max': max(values)}
|
72 |
+
except (ValueError, TypeError):
|
73 |
+
continue
|
74 |
+
|
75 |
+
# Create styling
|
76 |
+
styling = []
|
77 |
+
for row in data:
|
78 |
+
row_styling = []
|
79 |
+
for i, val in enumerate(row):
|
80 |
+
if i in col_ranges and val != "" and pd.notna(val):
|
81 |
+
try:
|
82 |
+
val_float = float(val)
|
83 |
+
style = get_color_for_value(val_float, col_ranges[i]['min'], col_ranges[i]['max'])
|
84 |
+
row_styling.append(["", f"width: var(--cell-width-3); left: auto; {style}"])
|
85 |
+
except (ValueError, TypeError):
|
86 |
+
row_styling.append(["", ""])
|
87 |
+
else:
|
88 |
+
row_styling.append(["", ""])
|
89 |
+
styling.append(row_styling)
|
90 |
+
|
91 |
+
return {
|
92 |
+
"data": data,
|
93 |
+
"headers": headers,
|
94 |
+
"metadata": {
|
95 |
+
"styling": styling
|
96 |
+
}
|
97 |
+
}
|
98 |
+
|
99 |
+
column_widths = [70,150,150,150,150]
|
100 |
+
# Create the Gradio application using Blocks
|
101 |
+
with gr.Blocks(title="@Andrej Karpathy's Sleep Data") as demo:
|
102 |
+
gr.Markdown("# @karpathy's Sleep Data")
|
103 |
+
gr.Markdown("This app displays Andrej Karpathy's sleep tracking data from multiple devices. See his [blog post](https://karpathy.bearblog.dev/finding-the-best-sleep-tracker/) to learn more about the data and the process of finding the best sleep tracker.")
|
104 |
+
|
105 |
+
with gr.Tabs():
|
106 |
+
with gr.TabItem("AppleWatch + AutoSleep"):
|
107 |
+
df = get_device_data("AppleWatch + AutoSleep")
|
108 |
+
gr.Dataframe(prepare_data_with_styling(df), show_search="search", column_widths=column_widths, show_copy_button=True, pinned_columns=1)
|
109 |
+
|
110 |
+
with gr.TabItem("8sleep Pod 4 Ultra"):
|
111 |
+
df = get_device_data("8sleep Pod 4 Ultra")
|
112 |
+
gr.Dataframe(prepare_data_with_styling(df), show_search="search", column_widths=column_widths, show_copy_button=True, pinned_columns=1)
|
113 |
+
|
114 |
+
with gr.TabItem("Oura"):
|
115 |
+
df = get_device_data("Oura")
|
116 |
+
gr.Dataframe(prepare_data_with_styling(df), show_search="search", column_widths=column_widths, show_copy_button=True, pinned_columns=1)
|
117 |
+
|
118 |
+
with gr.TabItem("Whoop"):
|
119 |
+
df = get_device_data("Whoop")
|
120 |
+
gr.Dataframe(prepare_data_with_styling(df), show_search="search", column_widths=column_widths, show_copy_button=True, pinned_columns=1)
|
121 |
+
|
122 |
+
with gr.TabItem("All Data"):
|
123 |
+
df = load_health_data()
|
124 |
+
gr.Dataframe(prepare_data_with_styling(df), show_search="search", column_widths=column_widths, show_copy_button=True, pinned_columns=1)
|
125 |
+
if __name__ == "__main__":
|
126 |
+
demo.launch()
|
healthdata.csv
ADDED
@@ -0,0 +1,71 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
"NOTE: for Awake, REM, Light, Deep I am mixing the units of hours and minutes just for recording convenience. So e.g. ""1.39"" is 1 hour 39 minutes. So it's a little bit sketchy and non-linear scale but much easier to record",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
2 |
+
,,,AppleWatch + AutoSleep,,,,,,,8sleep Pod 4 Ultra,,,,,,,Oura,,,,,,,Whoop,,,,,,,,
|
3 |
+
Day,Date,Day of Week,Awake AS,REM AS,Light AS,Deep AS,BPM AS,HRV (ms) AS,Score AS,Awake 8S,REM 8S,Light 8S,Deep 8S,BPM 8S,HRV (ms) 8S,Score 8S,Awake OU,REM OU,Light OU,Deep OU,BPM OU,HRV (ms) OU,Score OU,Awake WH,REM WH,Light WH,Deep WH,BPM WH,HRV (ms) WH,Score WH,Average,Notes
|
4 |
+
1,"January 16, 2025",Thursday,0.30,1.31,6.03,0.26,54,54,69,,,,,,,,,,,,,,,1.22,0.51,4.32,1.43,52,51,87,,
|
5 |
+
2,"January 17, 2025",Friday,0.10,1.39,4.52,1.05,53,52,84,,,,,,,,,,,,,,,0.34,1.22,4.07,1.39,52,52,85,,
|
6 |
+
3,"January 18, 2025",Saturday,0.08,0.59,5.43,0.24,52,51,71,,,,,,,,0.29,1.15,4.59,0.53,51,56,79,0.32,1.13,4.31,1.14,51,62,81,,
|
7 |
+
4,"January 19, 2025",Sunday,0.26,1.10,5.06,0.25,51,83,73,,,,,,,,1.17,1.34,4.03,1.01,51,52,75,0.48,0.59,3.44,1.24,51,56,71,,"slept in hotel 1/2, 2 drinks of alcohol"
|
8 |
+
5,"January 20, 2025",Monday,1.09,1.46,5.38,0.18,52,122,80,,,,,,,,1.46,1.54,4.23,1.04,52,45,80,1.47,0.49,4.14,1.38,52,53,73,,"slept in hotel 2/2, 1 drink of alcohol"
|
9 |
+
6,"January 21, 2025",Tuesday,0.13,1.54,5.49,1.04,52,65,97,,,,,,,,1.25,1.58,5.00,1.1,51,41,86,0.54,1.54,4.33,1.42,51,43,90,,"i only slept longer i think because i was catching up on sleep dept, and all the trackers got super excited about it."
|
10 |
+
7,"January 22, 2025",Wednesday,0.30,1.08,6.33,0.07,56,115,70,,,,,,,,1.16,1.08,5.05,1.11,55,37,79,0.58,1.03,4.38,1.46,56,42,84,,very mild sickness symptoms
|
11 |
+
8,"January 23, 2025",Thursday,0.07,1.44,5.25,0.4,54,57,89,,,,,,,,1.01,1.38,5.03,0.45,53,42,80,0.45,2.22,3.45,1.24,53,47,87,,slightly sick
|
12 |
+
9,"January 24, 2025",Friday,0.19,1.50,5.19,0.08,50,58,76,,,,,,,,1.11,1.40,4.08,1.02,49,47,81,0.58,1.19,3.38,1.39,49,51,78,,
|
13 |
+
10,"January 25, 2025",Saturday,0.21,1.26,6.46,0.27,49,71,82,,,,,,,,1.20,1.45,5.03,1.21,49,36,91,1.10,1.51,4.12,1.58,49,36,93,,
|
14 |
+
11,"January 26, 2025",Sunday,0.15,2.04,6.32,0.12,52,82,79,,,,,,,,1.22,2.00,4.56,1.1,52,42,80,0.48,1.34,4.11,2.01,52,48,91,,very mild sickness symptoms again before bed
|
15 |
+
12,"January 27, 2025",Monday,0.37,0.47,6.17,0.28,50,64,71,,,,,,,,2.27,1.53,4.04,1,50,52,67,0.51,1.08,4.25,1.53,50,50,86,,"not super what happened; didn't feel tired, felt tiny bit sick still, tossing and turning the whole night, both hot and cold, this night was all messed up tbh. I expected lower score from Whoop, probably in the 70s."
|
16 |
+
13,"January 28, 2025",Tuesday,0.06,1.50,6.18,1,50,55,95,,,,,,,,0.56,2.03,5.37,0.53,50,41,88,0.52,1.52,5.05,1.3,49,47,100,,i felt great when i woke up and - wow first 100
|
17 |
+
14,"January 29, 2025",Wednesday,0.42,1.32,5.23,0.28,50,55,82,,,,,,,,1.14,1.52,4.15,1,49,47,83,0.46,1.50,3.54,1.22,49,59,86,,
|
18 |
+
15,"January 30, 2025",Thursday,0.16,1.28,5.31,0.42,50,85,87,,,,,,,,1.04,1.45,4.39,1,49,46,81,0.59,1.21,3.59,1.48,49,48,85,,
|
19 |
+
16,"January 31, 2025",Friday,0.04,1.12,4.52,0.23,51,68,72,,,,,,,,1.13,1.14,3.23,1.05,50,55,65,0.37,1.01,3.50,1.07,51,74,69,,"slept in hotel 1/2, really late sleep (past midnight :( )"
|
20 |
+
17,"February 1, 2025",Saturday,All scores changed today. AutoSleep is such a random number generator omg,,,,,,,,,,,,,,1.18,1.45,5.04,1.21,51,49,89,1.30,1.28,4.18,2.02,51,58,86,,"slept in hotel 2/2, made up some sleep debt, slept late again"
|
21 |
+
18,"February 2, 2025",Sunday,,,,1.57,51,,97,,,,,,,,,,,,51,49,80,0.46,1.06,3.29,1.26,50,53,71,,
|
22 |
+
19,"February 3, 2025",Monday,,,,2.42,53,,98,,,,,,,,,,,,52,49,92,0.39,1.03,4.30,2.07,52,53,81,,
|
23 |
+
20,"February 4, 2025",Tuesday,,,,2.56,48,,100,,,,,,,,,,,,48,41,88,0.59,1.48,4.52,1,48,46,86,,
|
24 |
+
21,"February 5, 2025",Wednesday,,,,2.31,51,,95,,,,,,,,,,,,51,39,77,0.51,1.40,3.57,1.01,50,47,79,,
|
25 |
+
22,"February 6, 2025",Thursday,,,,2.35,49,,95,,,,,,,,,,,,50,47,86,1.25,1.27,3.44,1.51,49,51,81,,"injury, no exercise"
|
26 |
+
23,"February 7, 2025",Friday,,,,2.09,52,,90,,,,,,,,,,,,52,41,67,2.13,1.12,2.49,2.25,51,44,77,,"injury, no exercise"
|
27 |
+
24,"February 8, 2025",Saturday,,,,1.31,55,,87,,,,,,,,,,,,51,47,89,0.50,1.45,4.47,1.07,54,54,88,,"injury, no exercise"
|
28 |
+
25,"February 9, 2025",Sunday,,,,1.57,55,,84,,,,,,,,,,,,49,45,75,0.45,1.12,3.33,1.27,53,47,75,,
|
29 |
+
26,"February 10, 2025",Monday,,,,2.45,52,,98,,1.42,,1.04,48,44,94,1.07,1.43,4.53,0.52,51,50,81,1.05,2.03,3.05,1.59,51,52,78,,
|
30 |
+
27,"February 11, 2025",Tuesday,,,,3.09,46,,97,,2.01,,1.01,44,66,96,1.22,2.07,5.35,0.41,46,65,83,1.05,1.57,3.36,2.28,46,75,90,91.5,trying new ultra-hardcore ear plugs. went to bed a bit late
|
31 |
+
28,"February 12, 2025",Wednesday,,,,1.18,48,,77,,1.25,,1.19,44,70,79,1.29,1.20,3.50,1.07,47,67,66,0.37,1.29,2.47,1.27,47,65,67,72.25,
|
32 |
+
29,"February 13, 2025",Thursday,,,,1.5,49,,91,,2.04,,1.06,46,53,90,1.49,2.00,4.02,0.49,49,48,73,0.52,2.24,2.55,1.53,49,61,80,83.5,
|
33 |
+
30,"February 14, 2025",Friday,,,,2.58,49,,94,,2.01,,1.01,46,56,88,1.12,1.42,4.11,1.03,48,49,73,0.42,1.13,3.45,1.33,48,50,72,81.75,
|
34 |
+
31,"February 15, 2025",Saturday,,,,2.56,52,,94,,1.39,,1.27,49,61,92,1.04,1.46,4.03,1.07,51,52,83,1.07,1.30,3.37,1.5,52,54,75,86,
|
35 |
+
32,"February 16, 2025",Sunday,,,,2.18,50,,97,,2.34,,1.01,47,62,86,1.32,1.50,5.46,0.53,49,59,83,1.06,1.21,4.41,2.16,49,61,91,89.25,"i feel like again whoop most agrees with qualitative feeling, i had a good night here, felt better than last night"
|
36 |
+
33,"February 17, 2025",Monday,,,,2.02,48,,88,,1.08,,1.38,45,61,87,1.41,1.08,4.14,0.48,47,54,66,0.29,1.29,2.36,1.49,47,61,72,78.25,
|
37 |
+
34,"February 18, 2025",Tuesday,,,,1.58,47,,88,,1.29,,1.19,44,51,80,1.35,1.14,3.46,1.14,47,50,72,0.51,0.50,3.54,1.22,47,53,67,76.75,
|
38 |
+
35,"February 19, 2025",Wednesday,,,,2.24,53,,100,,1.57,,1.29,49,46,90,1.09,1.15,5.19,1.04,52,42,83,0.40,2.34,3.32,1.33,52,49,81,88.5,"slightly sick, skipping exercise"
|
39 |
+
36,"February 20, 2025",Thursday,,,,0.45,54,,75,,2.00,,1.47,50,42,92,0.48,1.48,4.40,0.58,53,41,83,1.07,1.31,3.20,2.09,53,49,80,82.5,"slightly sick, skipping exercise"
|
40 |
+
37,"February 21, 2025",Friday,,,,2.03,51,,96,,2.15,,1.09,48,57,96,1.45,2.03,5.39,1.14,51,47,92,2.08,1.14,4.35,2.27,51,55,95,94.75,slightly sick; hardcore earplugs
|
41 |
+
38,"February 22, 2025",Saturday,,,,1.43,48,,89,,1.55,,1.01,45,73,97,1.07,1.35,4.53,0.47,48,66,78,0.38,2.47,2.35,1.48,48,73,90,88.5,"slightly sick, skipping exercise; hardcore earplugs"
|
42 |
+
39,"February 23, 2025",Sunday,,,,3.21,50,,100,,1.48,,1.13,47,58,94,0.26,1.52,5.04,0.55,50,49,87,0.37,1.43,3.52,1.57,50,56,94,93.75,hardcore earplugs
|
43 |
+
40,"February 24, 2025",Monday,,,,2.14,48,,96,,2.02,,1.18,45,55,100,1.46,1.15,4.15,1.18,48,49,77,0.27,1.32,3.11,1.39,48,58,76,87.25,"i didn't feel that good when i woke up. i think i slept a bit too short. From 6 to 7 I was just tossing, not sleeping."
|
44 |
+
41,"February 25, 2025",Tuesday,,,,3.18,48,,100,,1.44,,1.18,46,46,94,0.31,1.29,5.18,1.03,49,46,85,0.36,1.22,4.32,1.36,49,52,87,91.5,
|
45 |
+
42,"February 26, 2025",Wednesday,,,,2.05,52,,95,,2.03,,1.09,47,52,91,1.08,1.36,5.13,1.44,52,45,88,0.51,1.33,4.30,2.07,51,48,98,93,felt great this morning. whoop changed its sleep alg allegedly...
|
46 |
+
43,"February 27, 2025",Thursday,,,,1.48,50,,88,,1.57,,1.01,47,53,93,0.48,1.23,4.15,0.58,49,55,79,0.25,1.35,3.20,1.35,49,56,84,86,
|
47 |
+
44,"February 28, 2025",Friday,,,,2.14,51,,97,,2.25,,0.56,48,43,84,1.08,1.53,4.52,0.49,51,47,82,0.33,1.20,4.28,1.2,51,54,81,86,
|
48 |
+
45,"March 1, 2025",Saturday,,,,3.03,52,,99,,2.19,,0.41,49,49,84,1.14,1.40,4.34,1.1,51,49,85,0.23,0.51,4.33,1.51,52,53,83,87.75,
|
49 |
+
46,"March 2, 2025",Sunday,,,,2.34,54,,98,,1.46,,2.04,52,41,84,0.33,1.36,4.11,1.35,54,43,84,0.25,1.31,3.29,1.56,49,54,74,85,
|
50 |
+
47,"March 3, 2025",Monday,,,,3.31,48,,100,,1.46,,1.38,46,56,97,0.48,1.39,4.42,1.03,48,51,86,0.32,1.34,3.49,1.48,47,58,81,91,
|
51 |
+
48,"March 4, 2025",Tuesday,,,,2.57,50,,95,,2.14,,1.3,48,43,93,0.38,1.41,3.58,1.19,50,43,85,0.27,1.37,3.22,1.52,50,49,77,87.5,
|
52 |
+
49,"March 5, 2025",Wednesday,,,,2.2,49,,93,,2.52,,1.23,46,55,93,0.46,2.32,5.54,0.52,49,50,87,0.47,1.43,5.23,2,49,55,100,93.25,
|
53 |
+
50,"March 6, 2025",Thursday,,,,2.27,52,,89,,1.24,,1.07,49,44,72,1.17,1.18,4.17,0.37,52,44,69,0.35,1.20,3.36,0.58,51,50,70,75,
|
54 |
+
51,"March 7, 2025",Friday,,,,1.51,52,,86,,1.55,,1.4,50,42,88,1.15,1.35,3.21,1.21,52,41,79,0.17,1.59,3.08,1.22,52,47,72,81.25,
|
55 |
+
52,"March 8, 2025",Saturday,,,,2.39,51,,97,,1.25,,1.21,48,51,96,0.48,1.47,3.58,1.15,50,49,81,0.31,1.18,3.49,1.45,50,58,77,87.75,
|
56 |
+
53,"March 9, 2025",Sunday,,,,2.22,46,,93,,2.02,,1.44,43,60,97,0.46,1.37,4.16,1.18,46,53,82,0.40,1.58,3.28,1.28,46,64,79,87.75,
|
57 |
+
54,"March 10, 2025",Monday,,,,0.15,48,,61,,2.42,,1.15,45,50,94,1.37,2.03,5.29,0.58,48,46,80,0.25,1.51,5.18,1.25,48,54,100,83.75,"the fact that whoop gave 100 on this night looks bad. i think it's because i spent a long time in bed, regardless of the quality of sleep (~9 hours)"
|
58 |
+
55,"March 11, 2025",Tuesday,,,,3.15,47,,100,,2.58,,1.42,45,54,94,1.03,2.17,5.41,1.04,47,49,89,0.47,2.30,4.02,2.11,46,61,100,95.75,"this morning i felt amazing, *significantly* better than last morning. worked the entire day and felt awesome. damn if only every day was like this what the hell"
|
59 |
+
56,"March 12, 2025",Wednesday,,,,,,,,,1.39,,1.07,44,51,77,1.35,1.28,4.00,1.03,45,51,70,0.41,1.09,4.05,1.21,45,58,85,58,
|
60 |
+
57,"March 13, 2025",Thursday,,,,,,,,,1.24,,2.03,41,56,69,3.45,1.07,4.38,1.15,46,56,66,0.13,1.02,3.29,2.01,46,71,50,46.25,
|
61 |
+
58,"March 14, 2025",Friday,,,,2.43,49,,98,,2.09,,1.25,47,42,84,1.52,1.46,4.32,1.08,49,46,83,1.08,1.35,4.34,1.52,48,52,100,91.25,
|
62 |
+
59,"March 15, 2025",Saturday,,,,0.45,51,,74,,1.31,,0.54,49,36,56,1.46,1.43,4.57,0.58,51,38,80,1.11,1.55,4.18,1.33,51,48,100,77.5,
|
63 |
+
60,"March 16, 2025",Sunday,,,,2.41,44,,91,,2.03,,1.2,43,68,98,0.48,2.02,5.26,1.08,45,63,92,0.41,1.44,4.54,1.46,45,69,100,95.25,feel great
|
64 |
+
61,"March 17, 2025",Monday,,,,4.24,47,,100,,2.15,,1.23,45,56,97,1.30,1.41,5.40,0.52,47,50,86,0.46,1.48,5.17,1.12,47,56,100,95.75,
|
65 |
+
62,"March 18, 2025",Tuesday,,,,1.51,48,,85,,1.06,,0.45,46,49,65,,,,,,,,0.18,1.15,3.16,1.33,48,56,76,,
|
66 |
+
63,"March 19, 2025",Wednesday,,,,1.54,49,,88,,1.43,,0.5,46,48,87,0.41,1.45,3.53,0.57,48,45,79,0.22,1.27,3.34,1.31,48,53,71,81.25,
|
67 |
+
64,"March 20, 2025",Thursday,,,,1.45,55,,78,,1.47,,0.43,53,40,72,1.07,1.08,3.31,0.59,55,39,69,0.29,1.36,2.39,1.4,55,45,64,70.75,"i ate a lot of fiber late at night, lol @ BPM. woke up early, too excited to work on a thing."
|
68 |
+
65,"March 21, 2025",Friday,,,,2,52,,93,,1.26,,0.57,48,57,80,1.00,1.15,4.31,0.55,51,56,75,0.16,1.13,3.57,1.29,51,57,70,79.5,"obsessed with a technical problem, sleeping poorly"
|
69 |
+
66,"March 22, 2025",Saturday,,,,2.06,50,,92,,1.47,,1.36,47,58,98,0.53,1.59,4.13,1.28,49,51,88,0.24,2.04,3.53,1.43,49,56,84,90.5,
|
70 |
+
67,"March 23, 2025",Sunday,,,,2.38,50,,92,,1.51,,1.43,47,49,81,0.46,1.25,3.37,1.14,49,53,81,0.11,1.53,2.26,2.01,49,54,71,81.25,
|
71 |
+
68,"March 24, 2025",Monday,,,,3.36,48,,100,,2.18,,1.25,45,55,95,1.35,2.19,4.47,1.06,48,54,86,1.29,1.28,5.40,1.35,48,66,94,93.75,
|