Source code for LFPy.tools

#!/usr/bin/env python
'''Copyright (C) 2012 Computational Neuroscience Group, UMB.

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.'''

import numpy as np
import scipy.signal as ss

[docs]def load(filename): '''Generic loading of cPickled objects from file''' import pickle filen = open(filename,'rb') obj = pickle.load(filen) filen.close() return obj
[docs]def noise_brown(ncols, nrows=1, weight=1, filter=None, filterargs=None): '''Return 1/f^2 noise of shape(nrows, ncols obtained by taking the cumulative sum of gaussian white noise, with rms weight. If filter != None, this function will apply the filter coefficients obtained by: :: >>> b, a = filter(**filterargs) >>> signal = scipy.signal.lfilter(b, a, signal) ''' from matplotlib.mlab import rms_flat if filter != None: coeff_b, coeff_a = list(filter(**filterargs)) noise = np.empty((nrows, ncols)) for i in range(nrows): signal = np.random.normal(size=ncols+10000).cumsum() if filter != None: signal = ss.lfilter(coeff_b, coeff_a, signal) noise[i, :] = signal[10000:] noise[i, :] /= rms_flat(noise[i, :]) noise[i, :] *= weight return noise