@@ -22,23 +22,40 @@ def get_sorted_fft(data, fs):
22
22
return fft_freq [order ], fft [order ]
23
23
24
24
25
- def test_compute_power_spectral_density ():
25
+ def get_periodogram (data , fs , full_range = False ):
26
+ return_onesided = not full_range
27
+ f , p = signal .periodogram (
28
+ data , fs , return_onesided = return_onesided , detrend = False , axis = 0
29
+ )
30
+ if p .ndim == 1 :
31
+ p = p [:, np .newaxis ]
32
+ if full_range :
33
+ order = np .argsort (f )
34
+ f = f [order ]
35
+ p = p [order ]
36
+ else :
37
+ f = f [:- 1 ]
38
+ p = p [:- 1 ]
39
+ return f , p
40
+
41
+
42
+ def test_compute_fft ():
26
43
27
44
t = np .linspace (0 , 1 , 1000 )
28
45
sig = nap .Tsd (d = np .random .random (1000 ), t = t )
29
- r = nap .compute_power_spectral_density (sig )
46
+ r = nap .compute_fft (sig )
30
47
assert isinstance (r , pd .DataFrame )
31
48
assert r .shape [0 ] == 500
32
49
33
50
a , b = get_sorted_fft (sig .values , sig .rate )
34
51
np .testing .assert_array_almost_equal (r .index .values , a [a >= 0 ])
35
52
np .testing .assert_array_almost_equal (r .values , b [a >= 0 ])
36
53
37
- r = nap .compute_power_spectral_density (sig , norm = True )
54
+ r = nap .compute_fft (sig , norm = True )
38
55
np .testing .assert_array_almost_equal (r .values , b [a >= 0 ] / len (sig ))
39
56
40
57
sig = nap .TsdFrame (d = np .random .random ((1000 , 4 )), t = t )
41
- r = nap .compute_power_spectral_density (sig )
58
+ r = nap .compute_fft (sig )
42
59
assert isinstance (r , pd .DataFrame )
43
60
assert r .shape == (500 , 4 )
44
61
@@ -47,14 +64,57 @@ def test_compute_power_spectral_density():
47
64
np .testing .assert_array_almost_equal (r .values , b [a >= 0 ])
48
65
49
66
sig = nap .TsdFrame (d = np .random .random ((1000 , 4 )), t = t )
50
- r = nap .compute_power_spectral_density (sig , full_range = True )
67
+ r = nap .compute_fft (sig , full_range = True )
51
68
assert isinstance (r , pd .DataFrame )
52
69
assert r .shape == (1000 , 4 )
53
70
54
71
a , b = get_sorted_fft (sig .values , sig .rate )
55
72
np .testing .assert_array_almost_equal (r .index .values , a )
56
73
np .testing .assert_array_almost_equal (r .values , b )
57
74
75
+ t = np .linspace (0 , 1 , 1000 )
76
+ sig = nap .Tsd (d = np .random .random (1000 ), t = t )
77
+ r = nap .compute_fft (sig , ep = sig .time_support )
78
+ assert isinstance (r , pd .DataFrame )
79
+ assert r .shape [0 ] == 500
80
+
81
+ t = np .linspace (0 , 1 , 1000 )
82
+ sig = nap .Tsd (d = np .random .random (1000 ), t = t )
83
+ r = nap .compute_fft (sig , fs = 1000 )
84
+ assert isinstance (r , pd .DataFrame )
85
+ assert r .shape [0 ] == 500
86
+
87
+
88
+ def test_compute_power_spectral_density ():
89
+
90
+ t = np .linspace (0 , 1 , 1000 )
91
+ sig = nap .Tsd (d = np .random .random (1000 ), t = t )
92
+ r = nap .compute_power_spectral_density (sig )
93
+ assert isinstance (r , pd .DataFrame )
94
+ assert r .shape [0 ] == 500
95
+
96
+ a , b = get_periodogram (sig .values , sig .rate )
97
+ np .testing .assert_array_almost_equal (r .index .values , a [a >= 0 ])
98
+ np .testing .assert_array_almost_equal (r .values , b [a >= 0 ])
99
+
100
+ sig = nap .TsdFrame (d = np .random .random ((1000 , 4 )), t = t )
101
+ r = nap .compute_power_spectral_density (sig )
102
+ assert isinstance (r , pd .DataFrame )
103
+ assert r .shape == (500 , 4 )
104
+
105
+ a , b = get_periodogram (sig .values , sig .rate )
106
+ np .testing .assert_array_almost_equal (r .index .values , a [a >= 0 ])
107
+ np .testing .assert_array_almost_equal (r .values , b [a >= 0 ])
108
+
109
+ sig = nap .TsdFrame (d = np .random .random ((1000 , 4 )), t = t )
110
+ r = nap .compute_power_spectral_density (sig , full_range = True )
111
+ assert isinstance (r , pd .DataFrame )
112
+ assert r .shape == (1000 , 4 )
113
+
114
+ a , b = get_periodogram (sig .values , sig .rate , full_range = True )
115
+ np .testing .assert_array_almost_equal (r .index .values , a )
116
+ np .testing .assert_array_almost_equal (r .values , b )
117
+
58
118
t = np .linspace (0 , 1 , 1000 )
59
119
sig = nap .Tsd (d = np .random .random (1000 ), t = t )
60
120
r = nap .compute_power_spectral_density (sig , ep = sig .time_support )
@@ -135,9 +195,12 @@ def test_compute_power_spectral_density():
135
195
),
136
196
],
137
197
)
138
- def test_compute_power_spectral_density_raise_errors (sig , kwargs , expectation ):
198
+ def test_compute_fft_raise_errors (sig , kwargs , expectation ):
139
199
with expectation :
140
- nap .compute_power_spectral_density (sig , ** kwargs )
200
+ nap .compute_fft (sig , ** kwargs )
201
+ if "norm" not in kwargs :
202
+ with expectation :
203
+ nap .compute_power_spectral_density (sig , ** kwargs )
141
204
142
205
143
206
############################################################
@@ -172,23 +235,23 @@ def get_signal_and_output(f=2, fs=1000, duration=100, interval_size=10, overlap=
172
235
return (sig , out , freq )
173
236
174
237
175
- def test_compute_mean_power_spectral_density ():
238
+ def test_compute_mean_fft ():
176
239
sig , out , freq = get_signal_and_output ()
177
- psd = nap .compute_mean_power_spectral_density (sig , 10 )
240
+ psd = nap .compute_mean_fft (sig , 10 )
178
241
assert isinstance (psd , pd .DataFrame )
179
242
assert psd .shape [0 ] > 0 # Check that the psd DataFrame is not empty
180
243
np .testing .assert_array_almost_equal (psd .values .flatten (), out [freq >= 0 ])
181
244
np .testing .assert_array_almost_equal (psd .index .values , freq [freq >= 0 ])
182
245
183
246
# Full range
184
- psd = nap .compute_mean_power_spectral_density (sig , 10 , full_range = True )
247
+ psd = nap .compute_mean_fft (sig , 10 , full_range = True )
185
248
assert isinstance (psd , pd .DataFrame )
186
249
assert psd .shape [0 ] > 0 # Check that the psd DataFrame is not empty
187
250
np .testing .assert_array_almost_equal (psd .values .flatten (), out )
188
251
np .testing .assert_array_almost_equal (psd .index .values , freq )
189
252
190
253
# Norm
191
- psd = nap .compute_mean_power_spectral_density (sig , 10 , norm = True )
254
+ psd = nap .compute_mean_fft (sig , 10 , norm = True )
192
255
assert isinstance (psd , pd .DataFrame )
193
256
assert psd .shape [0 ] > 0 # Check that the psd DataFrame is not empty
194
257
np .testing .assert_array_almost_equal (
@@ -200,7 +263,7 @@ def test_compute_mean_power_spectral_density():
200
263
sig2 = nap .TsdFrame (
201
264
t = sig .t , d = np .repeat (sig .values [:, None ], 2 , 1 ), time_support = sig .time_support
202
265
)
203
- psd = nap .compute_mean_power_spectral_density (sig2 , 10 , full_range = True )
266
+ psd = nap .compute_mean_fft (sig2 , 10 , full_range = True )
204
267
assert isinstance (psd , pd .DataFrame )
205
268
assert psd .shape [0 ] > 0 # Check that the psd DataFrame is not empty
206
269
np .testing .assert_array_almost_equal (psd .values , np .repeat (out [:, None ], 2 , 1 ))
@@ -210,7 +273,7 @@ def test_compute_mean_power_spectral_density():
210
273
sig2 = nap .TsdFrame (
211
274
t = sig .t , d = np .repeat (sig .values [:, None ], 2 , 1 ), time_support = sig .time_support
212
275
)
213
- psd = nap .compute_mean_power_spectral_density (sig2 , 10 , full_range = True , fs = 1000 )
276
+ psd = nap .compute_mean_fft (sig2 , 10 , full_range = True , fs = 1000 )
214
277
assert isinstance (psd , pd .DataFrame )
215
278
assert psd .shape [0 ] > 0 # Check that the psd DataFrame is not empty
216
279
np .testing .assert_array_almost_equal (psd .values , np .repeat (out [:, None ], 2 , 1 ))
@@ -329,8 +392,6 @@ def test_compute_mean_power_spectral_density():
329
392
),
330
393
],
331
394
)
332
- def test_compute_mean_power_spectral_density_raise_errors (
333
- sig , interval_size , kwargs , expectation
334
- ):
395
+ def test_compute_mean_fft_raise_errors (sig , interval_size , kwargs , expectation ):
335
396
with expectation :
336
- nap .compute_mean_power_spectral_density (sig , interval_size , ** kwargs )
397
+ nap .compute_mean_fft (sig , interval_size , ** kwargs )
0 commit comments