sensor-watch/utils/motion_express_utilities/process_motion_dump.py
2022-02-20 14:54:51 -05:00

75 lines
2.4 KiB
Python

#!/usr/bin/env python3
import sys
from pathlib import Path
if not sys.stdin.isatty():
input_stream = sys.stdin
else:
try:
input_filename = sys.argv[1]
except IndexError:
message = 'need filename as first argument if stdin is not full'
raise IndexError(message)
else:
input_stream = open(input_filename, 'r')
Path("output/plots").mkdir(parents=True, exist_ok=True)
s = open(f'output/makeplots.sh', 'w')
f = None
num_events = 0
num_records = 0
for line in input_stream:
if not len(line):
continue
if line.strip() == '=== END ===':
if f is not None:
f.close()
elif line.upper().strip().endswith('.CSV'):
num_events += 1
components = line.strip().split('.')[:-1]
if components[0] == 'TE':
components[0] = 'testing'
elif components[0] == 'ID':
components[0] = 'idle'
elif components[0] == 'OF':
components[0] = 'off_wrist'
elif components[0] == 'SL':
components[0] = 'sleeping'
elif components[0] == 'WH':
components[0] = 'washing_hands'
elif components[0] == 'WA':
components[0] = 'walking'
elif components[0] == 'WB':
components[0] = 'walking_with_beverage'
elif components[0] == 'JO':
components[0] = 'jogging'
elif components[0] == 'RU':
components[0] = 'running'
elif components[0] == 'BI':
components[0] = 'biking'
elif components[0] == 'HI':
components[0] = 'hiking'
elif components[0] == 'EL':
components[0] = 'elliptical'
elif components[0] == 'SU':
components[0] = 'stairs_up'
elif components[0] == 'SD':
components[0] = 'stairs_down'
elif components[0] == 'WL':
components[0] = 'weight_lifting'
name = '.'.join(components).lower().replace('_', '-')
s.write(f'../csv2gnuplot.sh -i "{name}.csv" -O "./plots/{name}.png" -g "{name}.gnuplot" -F png -W 1200 -H 675 -e -l -G ../plot.options && rm "{name}.gnuplot"\n')
if f is not None:
f.close()
f = open(f'output/{name}.csv', 'w')
else:
num_records += 1
f.write(line)
s.close()
print(f"Processed {num_records} records in {num_events} events!")
print("To generate plots: cd output && bash makeplots.sh")