Skip to content

Instantly share code, notes, and snippets.

@robinvanemden
Last active December 3, 2015 10:05
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
Star You must be signed in to star a gist
Save robinvanemden/76516d465e13d403a7ae to your computer and use it in GitHub Desktop.
# -*- coding: utf-8 -*-
#from IPython import get_ipython
#get_ipython().magic('reset -sf')
import numpy as np
import matplotlib.pyplot as plt
import json
##############################################################################
def matrixpush(m, row):
if not np.all(np.isfinite(values[:,0])):
i = np.count_nonzero(np.logical_not(np.isnan(values[:,0])))
m[i,] = row
else:
m = np.vstack([m,row])
m = m[1:,]
return(m)
def getobs( x, max = 5, err=0 ):
if (err==0):
obsr = -1*pow((x-max),2)
else:
obsr = -1*pow((x-max),2) + np.random.normal(0,err,1)
return obsr;
##############################################################################
stream = 200 # Length of stream
inttime = 100 # Integration time
amplitude = 1.4 # Amlitude LIF
learnrate = .004 # Learnrate
omega = 0.8 # Omega
x0 = 1.0 # Startvalue
##############################################################################
p_return = 0.80 # Chance that returns
variance = 1 # variance in observations
##############################################################################
values = np.zeros((inttime,3))
values.fill(np.nan)
track_x0 = []
track_x = []
track_t = []
track_y = []
x = 0.0
t = 0.0
y = 0.0
##############################################################################
for i in range(0,stream):
t = i+1
x = x0 + amplitude*np.cos(omega * t)
if np.all(np.isfinite(values[:,0])):
x0 = np.mean(values[:,1])
x0 = x0 + learnrate * sum( values[:,2] )
#values.fill(np.nan)
if np.random.binomial(1, p_return, 1)==1:
y = amplitude*np.cos(omega * t)*getobs(x,5,variance)
row_to_add = np.array([t,x,y])
values = matrixpush(values, row_to_add)
track_t = np.append(track_t, t)
track_x = np.append(track_x, x)
track_y = np.append(track_y, y)
track_x0 = np.append(track_x0, x0)
##############################################################################
# plot some vars
plt.plot(track_x)
plt.show()
plt.plot(track_x0)
plt.show()
# print final x0
print(x0)
##############################################################################
def _np_nan_fill(rows,columns):
nan_values = np.zeros((rows,columns))
nan_values.fill(np.nan)
nan_values = json.dumps(nan_values.tolist())
return nan_values
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment