arcan3 commited on
Commit
b5cac07
1 Parent(s): d77c82e

the slice highlight problem is solved

Browse files
Files changed (4) hide show
  1. funcs/plot_func.py +1 -3
  2. funcs/som.py +0 -15
  3. requirements.txt +3 -0
  4. test.py +53 -44
funcs/plot_func.py CHANGED
@@ -44,9 +44,7 @@ def plot_sensor_data_from_json(json_file, sensor, slice_select=1):
44
  ax = plt.plot(data['time'].to_list(), data[sensor].to_list(), '-b')
45
 
46
  df_temp = data[data['slice selection'] == int(slice_select)].reset_index()
47
- # y = [np.NaN]*((int(slice_select)-1)*len(df_temp[sensor].to_list())) + df_temp[sensor].to_list() + [np.NaN]*((len(slices) - int(slice_select))*len(df_temp[sensor].to_list()))
48
- # x = data['time'].to_list()
49
- # ax = plt.plot(x, y, '-')
50
 
51
  plt.xlabel("Timestamp")
52
  plt.ylabel(sensor)
 
44
  ax = plt.plot(data['time'].to_list(), data[sensor].to_list(), '-b')
45
 
46
  df_temp = data[data['slice selection'] == int(slice_select)].reset_index()
47
+ ax = plt.plot(df_temp['time'].to_list(), df_temp[sensor].to_list(), '-r')
 
 
48
 
49
  plt.xlabel("Timestamp")
50
  plt.ylabel(sensor)
funcs/som.py CHANGED
@@ -396,21 +396,6 @@ class ClusterSOM:
396
 
397
  return video
398
 
399
-
400
- # # Save the images as a GIF
401
- # imageio.mimsave(f"{filename}.gif", images, duration=500, loop=1)
402
-
403
- # # Load the gif
404
- # gif_file = f"{filename}.gif" # Replace with the path to your GIF file
405
- # clip = VideoFileClip(gif_file)
406
-
407
- # # Convert the gif to mp4
408
- # mp4_file = f"{filename}.mp4" # Replace with the desired output path
409
- # clip.write_videofile(mp4_file, codec='libx264')
410
-
411
- # # Close the clip to release resources
412
- # clip.close()
413
-
414
  def save(self, file_path):
415
  """
416
  Save the ClusterSOM model to a file.
 
396
 
397
  return video
398
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
399
  def save(self, file_path):
400
  """
401
  Save the ClusterSOM model to a file.
requirements.txt CHANGED
@@ -1,8 +1,10 @@
 
1
  aiofiles==23.1.0
2
  aiohttp==3.8.4
3
  aiosignal==1.3.1
4
  altair==4.2.2
5
  anyio==3.6.2
 
6
  appnope==0.1.3
7
  asttokens==2.2.1
8
  async-timeout==4.0.2
@@ -86,6 +88,7 @@ pyparsing==3.0.9
86
  pyrsistent==0.19.3
87
  python-dateutil==2.8.2
88
  python-multipart==0.0.6
 
89
  pytz==2023.3
90
  PyWavelets==1.4.1
91
  PyYAML==6.0
 
1
+ absl-py==1.4.0
2
  aiofiles==23.1.0
3
  aiohttp==3.8.4
4
  aiosignal==1.3.1
5
  altair==4.2.2
6
  anyio==3.6.2
7
+ apischema==0.18.0
8
  appnope==0.1.3
9
  asttokens==2.2.1
10
  async-timeout==4.0.2
 
88
  pyrsistent==0.19.3
89
  python-dateutil==2.8.2
90
  python-multipart==0.0.6
91
+ pytvlwcharts @ git+https://github.com/TechfaneTechnologies/pytvlwcharts.git@9bc0f70f9bc9569705947e3b7225e109cd01c631
92
  pytz==2023.3
93
  PyWavelets==1.4.1
94
  PyYAML==6.0
test.py CHANGED
@@ -1,47 +1,56 @@
1
- import torch
2
- import gradio as gr
3
  import json
4
- import os
5
- import matplotlib.pyplot as plt
6
-
7
- from phate import PHATEAE
8
- from funcs.som import ClusterSOM
9
- from funcs.tools import numpy_to_native
10
-
11
- from funcs.processor import process_data
12
- from funcs.plot_func import plot_sensor_data_from_json
13
- from funcs.dataloader import BaseDataset2, read_json_files
14
-
15
- DEVICE = torch.device("cpu")
16
- reducer10d = PHATEAE(epochs=30, n_components=10, lr=.0001, batch_size=128, t='auto', knn=8, relax=True, metric='euclidean')
17
- reducer10d.load('models/r10d_2.pth')
18
-
19
- cluster_som = ClusterSOM()
20
- cluster_som.load("models/cluster_som2.pkl")
21
-
22
- # ml inference
23
- def get_som_mp4(file, slice_select, reducer=reducer10d, cluster=cluster_som):
24
 
25
- try:
26
- train_x, train_y = read_json_files(file)
27
- except:
28
- train_x, train_y = read_json_files(file.name)
29
-
30
- # Convert tensors to numpy arrays if necessary
31
- if isinstance(train_x, torch.Tensor):
32
- train_x = train_x.numpy()
33
- if isinstance(train_y, torch.Tensor):
34
- train_y = train_y.numpy()
35
-
36
- # load the time series slices of the data 4*3*2*64 (feeds+axis*sensor*samples) + 5 for time diff
37
- data = BaseDataset2(train_x.reshape(len(train_x), -1) / 32768, train_y)
38
-
39
- #compute the 10 dimensional embeding vector
40
- embedding10d = reducer.transform(data)
41
-
42
- # prediction = cluster_som.predict(embedding10d)
43
- fig = cluster.plot_activation_v2(embedding10d, slice_select)
44
- plt.savefig('test.png')
45
- return fig
46
 
47
- get_som_mp4('Data-JSON/Dressage/Tempi/Trab/Arbeitstrab/20210906-093200-Don-Arbeitstrab.json', 1)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  import json
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2
 
3
+ import numpy as np
4
+ import pandas as pd
5
+ import matplotlib.pyplot as plt
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6
 
7
+ sensor = 'GZ1'
8
+ slice_select = 2
9
+
10
+ json_file = '/Users/ankit/Documents/cabasus/output.json'
11
+ # Read the JSON file
12
+ try:
13
+ with open(json_file, "r") as f:
14
+ slices = json.load(f)
15
+ except:
16
+ with open(json_file.name, "r") as f:
17
+ slices = json.load(f)
18
+
19
+ # Concatenate the slices and create a new timestamp series with 20ms intervals
20
+ timestamps = []
21
+ sensor_data = []
22
+ slice_item = []
23
+ temp_end = 0
24
+ for slice_count, slice_dict in enumerate(slices):
25
+ start_timestamp = slice_dict["timestamp"]
26
+ slice_length = len(slice_dict[sensor])
27
+
28
+ slice_timestamps = [start_timestamp + 20 * i for i in range(temp_end, slice_length + temp_end)]
29
+ timestamps.extend(slice_timestamps)
30
+ sensor_data.extend(slice_dict[sensor])
31
+
32
+ temp_end += slice_length
33
+ slice_item.extend([slice_count+1]*len(slice_timestamps))
34
+
35
+ # Create a DataFrame with the sensor data
36
+ data = pd.DataFrame({sensor: sensor_data, 'slice selection': slice_item, 'time': timestamps})
37
+
38
+ # Plot the sensor data
39
+ fig, ax = plt.subplots(figsize=(12, 6))
40
+ ax = plt.plot(data['time'].to_list(), data[sensor].to_list(), '-b')
41
+
42
+ df_temp = data[data['slice selection'] == int(slice_select)].reset_index()
43
+ ax = plt.plot(df_temp['time'].to_list(), df_temp[sensor].to_list(), '-r')
44
+
45
+ plt.xlabel("Timestamp")
46
+ plt.ylabel(sensor)
47
+ plt.legend()
48
+ plt.tight_layout()
49
+
50
+ fig1, ax1 = plt.subplots(figsize=(12, 6))
51
+ ax1 = plt.plot(df_temp['time'].to_list(), df_temp[sensor].to_list())
52
+
53
+ plt.xlabel("Timestamp")
54
+ plt.ylabel(sensor)
55
+ plt.legend()
56
+ plt.tight_layout()