summaryrefslogtreecommitdiffstats
path: root/utils/motion_express_utilities/process_motion_dump.py
diff options
context:
space:
mode:
Diffstat (limited to 'utils/motion_express_utilities/process_motion_dump.py')
-rw-r--r--utils/motion_express_utilities/process_motion_dump.py75
1 files changed, 75 insertions, 0 deletions
diff --git a/utils/motion_express_utilities/process_motion_dump.py b/utils/motion_express_utilities/process_motion_dump.py
new file mode 100644
index 00000000..fc246f8e
--- /dev/null
+++ b/utils/motion_express_utilities/process_motion_dump.py
@@ -0,0 +1,75 @@
+#!/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") \ No newline at end of file