Taiga commited on
Commit
8b5f82a
·
unverified ·
2 Parent(s): dbeec1a159ce36

Merge pull request #16 from moriyalab/update

Browse files
Files changed (1) hide show
  1. lab_tools/spectrogram.py +18 -3
lab_tools/spectrogram.py CHANGED
@@ -4,6 +4,7 @@ import scipy.signal as signal
4
  from lab_tools import labutils
5
  from lab_tools import filter
6
  import math
 
7
 
8
 
9
  def morlet_wavelet(x, f, width):
@@ -53,6 +54,14 @@ def stft_plot_spectrogram(data, Fs, N, freq_limit=None):
53
  plt.show()
54
 
55
 
 
 
 
 
 
 
 
 
56
  # グラフ描画とスペクトログラムの処理を行う関数
57
  def spectrogram_ui(
58
  uploaded_file, analysis_method,
@@ -63,6 +72,9 @@ def spectrogram_ui(
63
  if len(signal) == 0:
64
  return None, None
65
 
 
 
 
66
  # Filter
67
  timestamps = labutils.load_signal(filepath, "Timestamp")
68
  dt = (timestamps[1] - timestamps[0])
@@ -81,6 +93,9 @@ def spectrogram_ui(
81
  signal = signal[start_idx:end_idx]
82
  t_data = t_data[start_idx:end_idx]
83
 
 
 
 
84
  # 信号をプロットして保存
85
  plt.figure(dpi=200)
86
  plt.title("Signal")
@@ -88,17 +103,17 @@ def spectrogram_ui(
88
  plt.xlim(start_time, end_time)
89
  plt.xlabel("Time [sec]")
90
  plt.ylabel("Voltage [uV]")
91
- signal_filename = "signal_plot.png"
92
  plt.savefig(signal_filename)
93
 
94
  # スペクトログラムをプロットして保存
95
  if analysis_method == "Short-Time Fourier Transform":
96
  plt.figure(dpi=200)
97
  stft_plot_spectrogram(data=signal, Fs=Fs, N=256, freq_limit=fmax)
98
- spectrogram_filename = "stft_spectrogram_plot.png"
99
  plt.savefig(spectrogram_filename)
100
  else:
101
- spectrogram_filename = "wavelet_spectrogram_plot.png"
102
  cwt_signal = continuous_wavelet_transform(Fs=Fs, data=signal, fmax=fmax)
103
  plt.figure(dpi=200)
104
  plot_cwt(cwt_signal, t_data, fmax)
 
4
  from lab_tools import labutils
5
  from lab_tools import filter
6
  import math
7
+ import os
8
 
9
 
10
  def morlet_wavelet(x, f, width):
 
54
  plt.show()
55
 
56
 
57
+ def normalize_signal(signal, min_val=0, max_val=10):
58
+ signal_min = np.min(signal)
59
+ signal_max = np.max(signal)
60
+ if signal_max - signal_min == 0:
61
+ return np.full_like(signal, min_val)
62
+ return (signal - signal_min) / (signal_max - signal_min) * (max_val - min_val) + min_val
63
+
64
+
65
  # グラフ描画とスペクトログラムの処理を行う関数
66
  def spectrogram_ui(
67
  uploaded_file, analysis_method,
 
72
  if len(signal) == 0:
73
  return None, None
74
 
75
+ output_dir = "/tmp/spectrogram/"
76
+ os.makedirs(output_dir, exist_ok=True)
77
+
78
  # Filter
79
  timestamps = labutils.load_signal(filepath, "Timestamp")
80
  dt = (timestamps[1] - timestamps[0])
 
93
  signal = signal[start_idx:end_idx]
94
  t_data = t_data[start_idx:end_idx]
95
 
96
+ # 信号を正規化
97
+ # signal = normalize_signal(signal, min_val=0, max_val=5)
98
+
99
  # 信号をプロットして保存
100
  plt.figure(dpi=200)
101
  plt.title("Signal")
 
103
  plt.xlim(start_time, end_time)
104
  plt.xlabel("Time [sec]")
105
  plt.ylabel("Voltage [uV]")
106
+ signal_filename = "/tmp/spectrogram/signal_plot.png"
107
  plt.savefig(signal_filename)
108
 
109
  # スペクトログラムをプロットして保存
110
  if analysis_method == "Short-Time Fourier Transform":
111
  plt.figure(dpi=200)
112
  stft_plot_spectrogram(data=signal, Fs=Fs, N=256, freq_limit=fmax)
113
+ spectrogram_filename = "/tmp/spectrogram/stft_spectrogram_plot.png"
114
  plt.savefig(spectrogram_filename)
115
  else:
116
+ spectrogram_filename = "/tmp/spectrogram/wavelet_spectrogram_plot.png"
117
  cwt_signal = continuous_wavelet_transform(Fs=Fs, data=signal, fmax=fmax)
118
  plt.figure(dpi=200)
119
  plot_cwt(cwt_signal, t_data, fmax)