diff options
Diffstat (limited to 'utils/motion_express_utilities/process_motion_dump.py')
-rw-r--r-- | utils/motion_express_utilities/process_motion_dump.py | 75 |
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 |