Skip to content

Instantly share code, notes, and snippets.

@DocentSzachista
Created June 8, 2024 11:01
Show Gist options
  • Save DocentSzachista/96103c957c0afa0688df41646bbdf202 to your computer and use it in GitHub Desktop.
Save DocentSzachista/96103c957c0afa0688df41646bbdf202 to your computer and use it in GitHub Desktop.
import pandas as pd
import json
obj = '{"_id":{"$oid":"664088e41eedb80585ae19b7"},"name":"D5:19:FA:B0:54:F72024-05-12T11:16:19.863282","type":"NON_FALLDOWN","samples":[{"timestamp":1715505371,"acceleration":[-0.047851562,-0.018310547,-0.9934082],"gyroscope":[0.12195122,0.30487806,-0.06097561]},{"timestamp":1715505371,"acceleration":[-0.048095703,-0.017333984,-0.9995117],"gyroscope":[0.06097561,0.36585367,-0.06097561]},{"timestamp":1715505371,"acceleration":[-0.049804688,-0.017089844,-1.0004883],"gyroscope":[0.0,0.30487806,-0.06097561]},{"timestamp":1715505371,"acceleration":[-0.049072266,-0.017578125,-1.0004883],"gyroscope":[0.0,0.36585367,-0.12195122]},{"timestamp":1715505371,"acceleration":[-0.049316406,-0.017578125,-0.9995117],"gyroscope":[0.0,0.30487806,-0.18292683]},{"timestamp":1715505371,"acceleration":[-0.050048828,-0.018066406,-0.9995117],"gyroscope":[0.30487806,0.4878049,-0.12195122]},{"timestamp":1715505372,"acceleration":[-0.048583984,-0.017333984,-1.0002441],"gyroscope":[0.06097561,0.18292683,0.0]},{"timestamp":1715505372,"acceleration":[-0.048828125,-0.017333984,-1.0],"gyroscope":[0.18292683,0.36585367,-0.24390244]},{"timestamp":1715505373,"acceleration":[-0.048583984,-0.017822266,-1.0],"gyroscope":[-0.12195122,0.4878049,0.0]},{"timestamp":1715505373,"acceleration":[-0.049316406,-0.017333984,-0.9995117],"gyroscope":[0.18292683,0.18292683,0.06097561]},{"timestamp":1715505373,"acceleration":[-0.049560547,-0.018066406,-0.9995117],"gyroscope":[0.0,0.30487806,0.12195122]},{"timestamp":1715505374,"acceleration":[-0.049072266,-0.017578125,-1.0002441],"gyroscope":[-0.06097561,0.42682928,-0.12195122]},{"timestamp":1715505374,"acceleration":[-0.049560547,-0.017578125,-1.0004883],"gyroscope":[0.18292683,0.30487806,-0.12195122]},{"timestamp":1715505375,"acceleration":[-0.049072266,-0.017822266,-1.0],"gyroscope":[0.18292683,0.24390244,0.12195122]},{"timestamp":1715505375,"acceleration":[-0.049316406,-0.017822266,-0.99975586],"gyroscope":[0.06097561,0.24390244,-0.06097561]},{"timestamp":1715505375,"acceleration":[-0.048828125,-0.017578125,-1.0009766],"gyroscope":[0.24390244,0.30487806,0.06097561]},{"timestamp":1715505376,"acceleration":[-0.049072266,-0.017822266,-1.0],"gyroscope":[0.12195122,0.18292683,0.06097561]},{"timestamp":1715505376,"acceleration":[-0.049072266,-0.017578125,-1.0009766],"gyroscope":[0.0,0.12195122,-0.18292683]},{"timestamp":1715505377,"acceleration":[-0.05029297,-0.017333984,-1.0004883],"gyroscope":[0.06097561,0.36585367,0.06097561]},{"timestamp":1715505377,"acceleration":[-0.048828125,-0.017089844,-0.9992676],"gyroscope":[0.12195122,0.36585367,0.12195122]},{"timestamp":1715505377,"acceleration":[-0.049072266,-0.017578125,-0.9992676],"gyroscope":[0.12195122,0.12195122,0.06097561]},{"timestamp":1715505378,"acceleration":[-0.049560547,-0.017333984,-0.99975586],"gyroscope":[0.06097561,0.24390244,0.06097561]},{"timestamp":1715505378,"acceleration":[-0.049072266,-0.017578125,-0.99975586],"gyroscope":[0.30487806,0.4878049,-0.12195122]},{"timestamp":1715505378,"acceleration":[-0.048828125,-0.017578125,-1.0],"gyroscope":[0.12195122,0.36585367,-0.18292683]},{"timestamp":1715505379,"acceleration":[-0.048828125,-0.017822266,-0.99975586],"gyroscope":[0.30487806,0.30487806,0.06097561]}]}'
def preprocess_data(json_obj: str) -> list:
def __segment_data(dataframe: pd.DataFrame, segment_lenght=25):
sequences = []
for _, group in dataframe.groupby('id'):
for start in range(len(group) - segment_lenght + 1):
segment = group.iloc[start:start+segment_lenght]
x = segment[['a(x)', 'a(y)', 'a(z)', 'g(x)', 'g(y)', 'g(z)']].values.flatten()
sequences.append(x)
return sequences
data = []
json_obj = json.loads(json_obj)
for sample in json_obj['samples']:
temp = {
"id": json_obj["_id"]["$oid"],
"timestamp": sample['timestamp'],
"g(x)": sample['gyroscope'][0],
"g(y)": sample['gyroscope'][1],
"g(z)": sample['gyroscope'][2],
"a(x)": sample['acceleration'][0],
"a(y)": sample['acceleration'][1],
"a(z)": sample['acceleration'][2],
}
data.append(temp)
return __segment_data(pd.DataFrame.from_records(data))
def predict_data(model, json_obj:str) :
processed_data = preprocess_data(json_obj)
# TODO: przetworzoenie przez model pojedynczej danej i zwrócenie predykcji wraz z confidence score
return
if __name__ == "__main__":
predict_data(json_obj=obj)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment