/
prof_mean_of_squares.py
42 lines (33 loc) · 1.04 KB
/
prof_mean_of_squares.py
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
"""Benchmark for nilearn implementation of detrend."""
import sys
import time
import numpy as np
import utils
import nilearn.signal
import scipy
import utils # defines profile() if not already defined
def ref_mean_of_squares(series):
var = np.copy(series)
var **= 2
return var.mean(axis=0)
def benchmark(order=None):
"""Run nilearn.signal._detrend"""
shape = (201, 200001)
print ("Running for %s order..." % order)
rand_gen = np.random.RandomState(0)
series = np.ndarray(shape, order=order)
series[...] = rand_gen.randn(*shape)
output1 = utils.timeit(profile(nilearn.signal._mean_of_squares))(series)
time.sleep(0.5) # For memory_profiler
# del output1
output2 = utils.timeit(profile(ref_mean_of_squares))(series)
time.sleep(0.5) # For memory_profiler
# del output2
np.testing.assert_almost_equal(output1, output2)
if __name__ == "__main__":
if len(sys.argv) > 1:
orders = [sys.argv[-1]]
else:
orders = ['C', 'F']
for order in orders:
benchmark(order)