cleanup old stuff, move test to __init__
This commit is contained in:
parent
1fa1ead94d
commit
57be4a1d63
3 changed files with 6 additions and 101 deletions
|
@ -282,3 +282,8 @@ def by_night() -> Dict[date, Emfit]:
|
||||||
res[s.date] = s
|
res[s.date] = s
|
||||||
return res
|
return res
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
def test():
|
||||||
|
for d in get_datas():
|
||||||
|
assert len(d.epochs) > 0
|
||||||
|
|
97
plot.py
97
plot.py
|
@ -2,49 +2,10 @@
|
||||||
import matplotlib.dates as md # type: ignore
|
import matplotlib.dates as md # type: ignore
|
||||||
import numpy as np # type: ignore
|
import numpy as np # type: ignore
|
||||||
import seaborn as sns # type: ignore
|
import seaborn as sns # type: ignore
|
||||||
import matplotlib.pyplot as plt
|
import matplotlib.pyplot as plt # type: ignore
|
||||||
|
|
||||||
from emfit import get_datas
|
from emfit import get_datas
|
||||||
|
|
||||||
|
|
||||||
def plot_file(jj: str):
|
|
||||||
pts = jj['sleep_epoch_datapoints']
|
|
||||||
|
|
||||||
|
|
||||||
tss = [datetime.fromtimestamp(p[0]) for p in pts]
|
|
||||||
vals = [p[1] for p in pts]
|
|
||||||
|
|
||||||
plt.figure(figsize=(20,10))
|
|
||||||
plt.plot(tss, vals)
|
|
||||||
|
|
||||||
|
|
||||||
xformatter = md.DateFormatter('%H:%M')
|
|
||||||
xlocator = md.MinuteLocator(interval = 15)
|
|
||||||
|
|
||||||
## Set xtick labels to appear every 15 minutes
|
|
||||||
plt.gcf().axes[0].xaxis.set_major_locator(xlocator)
|
|
||||||
|
|
||||||
## Format xtick labels as HH:MM
|
|
||||||
plt.gcf().axes[0].xaxis.set_major_formatter(xformatter)
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
plt.xlabel('time')
|
|
||||||
plt.ylabel('phase')
|
|
||||||
plt.title('Sleep phases')
|
|
||||||
plt.grid(True)
|
|
||||||
plt.savefig(f"{f}.png")
|
|
||||||
plt.close() # TODO
|
|
||||||
# plt.show()
|
|
||||||
|
|
||||||
pass
|
|
||||||
|
|
||||||
|
|
||||||
def plot_all():
|
|
||||||
for jj in iter_datas():
|
|
||||||
plot_file(jj)
|
|
||||||
|
|
||||||
|
|
||||||
# def stats():
|
# def stats():
|
||||||
# for jj in iter_datas():
|
# for jj in iter_datas():
|
||||||
# # TODO fimezone??
|
# # TODO fimezone??
|
||||||
|
@ -63,47 +24,6 @@ def plot_all():
|
||||||
# print(*res)
|
# print(*res)
|
||||||
|
|
||||||
|
|
||||||
def stats():
|
|
||||||
datas = get_datas()
|
|
||||||
cur = datas[0].date
|
|
||||||
for jj in datas:
|
|
||||||
# import ipdb; ipdb.set_trace()
|
|
||||||
while cur < jj.date:
|
|
||||||
cur += timedelta(days=1)
|
|
||||||
if cur.weekday() == 0:
|
|
||||||
print("---")
|
|
||||||
if cur != jj.date:
|
|
||||||
print(" ")
|
|
||||||
# cur = jj.date
|
|
||||||
print(f"{jj.date.strftime('%m.%d %a')} {jj.hrv_morning:.0f} {jj.hrv_evening:.0f} {jj.hrv_morning - jj.hrv_evening:3.0f} {hhmm(jj.sleep_minutes)} {jj.hrv_lf}/{jj.hrv_hf} {jj.sleep_hr_coverage:3.0f}")
|
|
||||||
|
|
||||||
|
|
||||||
def plot_recovery_vs_hr_percentage():
|
|
||||||
sns.set(color_codes=True)
|
|
||||||
xs = []
|
|
||||||
ys = []
|
|
||||||
for jj in get_datas():
|
|
||||||
xs.append(jj.hrv_morning - jj.hrv_evening)
|
|
||||||
ys.append(jj.sleep_hr_coverage)
|
|
||||||
ax = sns.regplot(x=xs, y=ys) # "recovery", y="percentage", data=pdata)
|
|
||||||
ax.set(xlabel='recovery', ylabel='percentage')
|
|
||||||
plt.show()
|
|
||||||
|
|
||||||
|
|
||||||
# TODO ah. it's only last segment?
|
|
||||||
# ok, handled in dashboard now
|
|
||||||
def plot_hr():
|
|
||||||
jj = get_datas()[-1]
|
|
||||||
tss, uu = jj.sleep_hr
|
|
||||||
tss = tss[::10]
|
|
||||||
uu = uu[::10]
|
|
||||||
plt.figure(figsize=(15,4))
|
|
||||||
ax = sns.pointplot(tss, uu, markers=" ")
|
|
||||||
# TODO wtf is that/??
|
|
||||||
ax.set(ylim=(None, 200))
|
|
||||||
|
|
||||||
plt.show()
|
|
||||||
|
|
||||||
def plot_hr_trend():
|
def plot_hr_trend():
|
||||||
everything = get_datas()
|
everything = get_datas()
|
||||||
tss = [e.end for e in everything]
|
tss = [e.end for e in everything]
|
||||||
|
@ -119,28 +39,13 @@ def plot_hr_trend():
|
||||||
# also timeline should have dynamic filters? maybe by tags
|
# also timeline should have dynamic filters? maybe by tags
|
||||||
# then I could enable emfit feed and slog feed (pulled from all org notes) and see the correlation? also could pull workouts provider (and wlog) -- actually wlog processing could be moved to timeline too
|
# then I could enable emfit feed and slog feed (pulled from all org notes) and see the correlation? also could pull workouts provider (and wlog) -- actually wlog processing could be moved to timeline too
|
||||||
|
|
||||||
# TODO could plot 'recovery' thing and see if it is impacted by workouts
|
|
||||||
|
|
||||||
|
|
||||||
# TODO time_start, time_end
|
|
||||||
|
|
||||||
# plot_hrv()
|
|
||||||
# stats()
|
|
||||||
# plot_recovery_vs_hr_percentage()
|
|
||||||
# stats()
|
|
||||||
plot_hr_trend()
|
plot_hr_trend()
|
||||||
# import matplotlib
|
|
||||||
# matplotlib.use('Agg')
|
|
||||||
|
|
||||||
|
|
||||||
# TODO maybe rmssd should only be computed if we have a reasonable chunk of datas
|
# TODO maybe rmssd should only be computed if we have a reasonable chunk of datas
|
||||||
# also, trust it only if it's stable
|
|
||||||
|
|
||||||
# plot_timestamped([p[0] for p in pts], [p[1] for p in pts], mavgs=[]).savefig('res.png')
|
# plot_timestamped([p[0] for p in pts], [p[1] for p in pts], mavgs=[]).savefig('res.png')
|
||||||
# TODO X axes: show hours and only two dates
|
# TODO X axes: show hours and only two dates
|
||||||
# TODO 4 is awake, 3 REM, 2 light, 1 deep
|
# TODO 4 is awake, 3 REM, 2 light, 1 deep
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# deviartion beyond 25-75 or 75-25 is bad??
|
# deviartion beyond 25-75 or 75-25 is bad??
|
||||||
|
|
5
test.py
5
test.py
|
@ -1,5 +0,0 @@
|
||||||
#!/usr/bin/env python3
|
|
||||||
from emfit import get_datas
|
|
||||||
|
|
||||||
for d in get_datas():
|
|
||||||
print(d)
|
|
Loading…
Add table
Reference in a new issue