-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathfilter.py
More file actions
63 lines (51 loc) · 2.21 KB
/
filter.py
File metadata and controls
63 lines (51 loc) · 2.21 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
import os
import pathlib
import sys
import numpy as np
import pandas as pd
from datetime import datetime
from datetime import timezone
import matplotlib.pyplot as plt
import warnings
from scipy import signal
from parse_run import parseAccl, parseSplits, parseActivity, combine
## arg data: pass in the returned cleaned data from combine
def custom_filter(data):
for i in range(0,len(data)):
b, a = signal.butter(3, 0.35, btype='lowpass', analog=False)
low_passed_butter = signal.filtfilt(b, a, data[i]['gFx'])
data[i]['filtered_gFx'] = low_passed_butter
b, a = signal.butter(3, 0.25, btype='lowpass', analog=False)
low_passed_butter = signal.filtfilt(b, a, data[i]['gFy'])
data[i]['filtered_gFy'] = low_passed_butter
b, a = signal.butter(3, 0.35, btype='lowpass', analog=False)
low_passed_butter = signal.filtfilt(b, a, data[i]['gFz'])
data[i]['filtered_gFz'] = low_passed_butter
return data
def main():
warnings.filterwarnings("ignore")
input_directory = pathlib.Path(sys.argv[1])
accl = pd.read_csv(input_directory / 'accl.csv', index_col=False)
splits = pd.read_csv(input_directory / 'splits.csv')
activity = pd.read_csv(input_directory / 'activity.csv')
splits = parseSplits(splits)
accl = parseAccl(accl, splits)
activity = parseActivity(activity, splits)
combined = combine(activity, accl)
filtered_combined = custom_filter(combined)
print(filtered_combined)
## plot
plt.plot(filtered_combined[3]['timestamp_x'],filtered_combined[3]['filtered_gFy'], label='butter filter')
# plt.plot(combined[3]['timestamp_x'],high_butter, label='butter high')
plt.plot(filtered_combined[3]['timestamp_x'],filtered_combined[3]['gFy'], label='y')
# plt.plot(combined[3]['timestamp_x'],low_passed_cheb)
# plt.plot(combined[3]['timestamp_x'],accl[3]['gFy'], label='y')
# plt.plot(combined[3]['timestamp_x'],accl[3]['gFz'], label='z')
# plt.plot(activity[3]['timestamp'],activity[3]['heart_rate'], label='heartrate')
plt.title("Filtered Acceleration data versus Time")
plt.xlabel("Timestamp")
plt.ylabel("Acceleration")
plt.legend()
plt.show()
if __name__ == "__main__":
main()