In [1]:
import numpy as np
import pulse2percept as p2p


/home/mbeyeler/anaconda3/lib/python3.5/site-packages/skvideo/__init__.py:356: UserWarning: avconv/avprobe not found in path: 
  warnings.warn("avconv/avprobe not found in path: " + str(path), UserWarning)
2017-10-31 22:03:23,168 [pulse2percept] [INFO] Welcome to pulse2percept

In [2]:
tsample = 0.005 / 1000
stim = p2p.stimuli.PulseTrain(tsample, freq=20, amp=50, pulse_dur=0.45 / 1000, dur=0.5)

In [3]:
old_model = p2p.retina.Nanduri2012(tsample=tsample)
new_model = p2p.retina.NanduriCython(tsample=tsample)

In [4]:
layers = ['OFL']
use_jit = True
in_arr = np.array([1, 1], dtype=np.float).reshape((2, 1))

In [5]:
old_out = old_model.model_cascade(in_arr, [stim.data], layers, use_jit)
new_out = new_model.model_cascade(in_arr, [stim.data], layers, use_jit)

In [6]:
np.allclose(old_out.data, new_out.data)


Out[6]:
False

In [9]:
%load_ext line_profiler

In [24]:
%lprun -f p2p.retina.Nanduri2012 old_model.model_cascade(in_arr, [stim.data], layers, use_jit)


/home/mbeyeler/anaconda3/lib/python3.5/site-packages/line_profiler.py:294: UserWarning: Could not extract a code object for the object <class 'pulse2percept.retina.Nanduri2012'>
  profile = LineProfiler(*funcs)

In [8]:
%timeit new_model.model_cascade(in_arr, [stim.data], layers, use_jit)


585 ms ± 7.93 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)

In [ ]: