In [1]:
import pandas as pd
import numpy as np
# visualization libraries
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
from matplotlib import gridspec
# plot the visuals in ipython
%matplotlib inline
In [3]:
from pypge.benchmarks import diffeq
# Set your output directories
img_dir = "../img/benchmarks/diffeq/"
data_dir = "../data/benchmarks/diffeq/"
params = {
# 'A': 20.0,
# 'B': 10.0,
# 'C': 0.5,
# 'D': 1.0,
# 'U': 4.0,
# 'k': 2.1,
}
init_conds = {
"G": 1.0,
"A": 0.0,
"L": 0.0
},
args = {
'time_step': 0.1,
'time_end': 10.0,
'init_conds': init_conds,
# 'params': params,
'noise': 0.1
}
# choose your problem here
# prob = diffeq.SimplePendulum(noise=0.025)
# prob = diffeq.ChaoticPendulum(noise=0.01)
# prob = diffeq.BacResp(noise=0.01)
# prob = diffeq.BarMags(noise=0.01)
# prob = diffeq.Glider(noise=0.01)
prob = diffeq.Ecoli(noise=0.01)
# prob = diffeq.Lorenz(noise=0.01)
# prob = diffeq.ShearFlow(noise=0.01)
# prob = diffeq.vanDerPol(noise=0.01)
# prob = diffeq.PredPreyFrac(noise=0.01)
# prob = diffeq.LotkaVolterra(noise=0.01)
# prob = diffeq.ShearFlow(**args)
t_pts = prob['time_pts']
for xpts in prob['xs_pure']:
plt.plot(t_pts,xpts)
plt.savefig(img_dir + prob['name'].lower() + "_clean.png", dpi=200)
plt.show()
for npts in prob['xs_pts']:
plt.plot(t_pts,npts)
plt.savefig(img_dir + prob['name'].lower() + "_noisy.png", dpi=200)
plt.show()
In [5]:
from pypge.benchmarks import diffeq
# Set your output directories
img_dir = "../img/benchmarks/diffeq/"
data_dir = "../data/benchmarks/diffeq/"
args = {
'time_step': 0.01,
'time_end': 10.0,
}
# prob = diffeq.BacResp(noise=0.1)
# prob = diffeq.BarMags(noise=0.1)
# prob = diffeq.Glider(noise=0.1)
prob = diffeq.Ecoli(noise=0.0000001, **args)
# prob = diffeq.Lorenz(noise=0.1)
# prob = diffeq.ShearFlow(noise=0.1)
# prob = diffeq.vanDerPol(noise=0.1)
# prob = diffeq.PredPreyFrac(noise=0.01)
# prob = diffeq.LotkaVolterra(noise=0.1)
# prob = diffeq.SimplePendulum(noise=0.1)
# prob = diffeq.ChaoticPendulum(noise=0.1)
t_pts = prob['time_pts']
NPTS = len(t_pts)
print "NUM POINTS: ", NPTS
dT = t_pts[1]
data = [t_pts]
fig = plt.figure()
fig.set_size_inches(16, 12)
gs = gridspec.GridSpec(4, 2)
ax1 = fig.add_subplot(gs[0:2,:])
for i,xpts in enumerate(prob['xs_pure']):
data += [xpts]
ax1.plot(t_pts,xpts, label=prob['xs_str'][i])
ax1.set_xlabel('time')
plt.legend(bbox_to_anchor=(1.07, 1.06))
ax2 = fig.add_subplot(gs[2:,:])
for i,xpts in enumerate(prob['xs_pure']):
deriv = np.gradient(xpts, dT)
data += [deriv]
print len(t_pts), len(deriv)
ax2.plot(t_pts,deriv, label=prob['dxs_str'][i])
ax2.set_xlabel('time')
plt.legend(bbox_to_anchor=(1.07, 1.06))
plt.savefig(img_dir + prob['name'].lower() + "_clean.png", dpi=200)
plt.show()
data = np.array(data).T
cols = list(['T'] + prob['xs_str'] + prob['dxs_str'])
out_data = data.tolist()
f_csv = open(data_dir + prob['name'].lower() + "_clean_" + str(NPTS) +".csv", 'w')
colstr = ", ".join(cols) + "\n"
f_csv.write(colstr)
for row in out_data:
line = ", ".join([str(col) for col in row]) + "\n"
f_csv.write(line)
f_csv.close()
data = [t_pts]
fig = plt.figure()
fig.set_size_inches(16, 12)
gs = gridspec.GridSpec(4, 2)
ax1 = fig.add_subplot(gs[0:2,:])
for i,xpts in enumerate(prob['xs_pts']):
data += [xpts]
ax1.plot(t_pts,xpts, label=prob['xs_str'][i])
ax1.set_xlabel('time')
plt.legend(bbox_to_anchor=(1.07, 1.06))
ax2 = fig.add_subplot(gs[2:,:])
for i,xpts in enumerate(prob['xs_pts']):
deriv = np.gradient(xpts,dT)
data += [deriv]
ax2.plot(t_pts,deriv, label=prob['dxs_str'][i])
ax2.set_xlabel('time')
plt.legend(bbox_to_anchor=(1.07, 1.06))
plt.savefig(img_dir + prob['name'].lower() + "_noisy.png", dpi=200)
plt.show()
data = np.array(data).T
cols = list(['T'] + prob['xs_str'] + prob['dxs_str'])
out_data = data.tolist()
f_csv = open(data_dir + prob['name'].lower() + "_noisy.csv", 'w')
colstr = ", ".join(cols) + "\n"
f_csv.write(colstr)
for row in out_data:
line = ", ".join([str(col) for col in row]) + "\n"
f_csv.write(line)
f_csv.close()