def __init__(self, header="rate", knots=10, length=1000, kernel=False): self.header = header self.knots = knots self.length = length if type(kernel) == bool: self.kernel = cs.create_splines_linspace(self.length, self.knots, 0) else: self.kernel = kernel if type(self.kernel) == str: self.width = eval(self.kernel).shape[1] else: self.width = self.kernel.shape[1] if type(header) == str or type(header) == dict: self.loads(header) if type(self.kernel) == str: self.kernel = self.kernel.replace("np.ndarray", "np.array")
def __init__(self,config): self.sim_name = "ni.model.net_sim" self.config = config self.frate= np.random.rand(self.config.Nneur)*0.2+0.4 self.frate=-(1/self.config.frate_mu)*np.log(1-self.frate)+1 self.frate_function = np.tile(self.frate,self.config.prior_epoch+self.config.Ntime) if self.config.rate_function: rate_splines = cs.create_splines_linspace(self.config.prior_epoch+self.config.Ntime, 10, 0) rate_function = np.matrix(np.random.rand(self.config.Nneur, rate_splines.shape[1])) * np.matrix(rate_splines.conj().transpose()) self.frate_function = rate_function[:, :(self.config.prior_epoch+self.config.Ntime)] self.frate_function = self.frate_function / (np.mean(self.frate_function)) self.frate_function = np.array([np.array(self.frate_function[i,:].flatten() * self.frate[i]) for i in xrange(self.config.Nneur)]) self.frate_function = np.reshape(self.frate_function,(self.config.Nneur,self.config.prior_epoch+self.config.Ntime)).transpose() self.logit_lam0=np.log(self.frate/1000 /(1-self.frate/1000)) # now make coupling we will use a simple # exponential decay function t = np.array(range(0,self.config.Nhist)) # self histories self.Jself= np.zeros((self.config.Nneur,self.config.Nhist)) for i in range(1,self.config.Nneur): self.Jself[i,] = 3*np.random.rand()*(np.exp(-t/20) -5*np.exp(-t/2)) self.Jself[i,1]=-10 # Interaction Matrix self.Jall=np.zeros((self.config.Nneur,self.config.Nneur,self.config.Nhist)) J_beta=np.zeros((self.config.Nneur,self.config.Nneur)) tau_beta=np.zeros((self.config.Nneur,self.config.Nneur)) #A=full(sprand(Nneur,Nneur,sparse_coeff)) == Nneur*Nneur*sparse_coeff non-zero entries A_entries = np.random.rand(self.config.Nneur*self.config.Nneur*self.config.sparse_coeff) A = np.zeros((self.config.Nneur,self.config.Nneur)) for a in A_entries: A[np.random.randint(self.config.Nneur),np.random.randint(self.config.Nneur)] = a J_beta = (A-0.5)*0.5 tau_beta[np.nonzero(A)] = np.random.rand(tau_beta[np.nonzero(A)].shape[0])*10+5 for i in range(0,self.config.Nneur): for j in range(0,self.config.Nneur): self.Jall[i,j,] = J_beta[i,j]*np.exp(np.array(range(1,self.config.Nhist+1))*-1/(self.config.eps+tau_beta[i,j])) for i in range(0,self.config.Nneur): self.Jall[i,i,] = np.zeros((1,1,self.config.Nhist)) self.results = []
def addLinSpline(self, knots, header, length=0): if length == 0: self.add(cs.create_splines_linspace(self.length - 1, knots, 0), header) else: self.add(cs.create_splines_linspace(length - 1, knots, 0), header)