In [1]:
from sklKDE.producers import MockParams, MockProducer
from sklKDE.producers.distributions import gaussian
from sklKDE.geometry import PointAt, Window, BoundingBox, Grid
from sklKDE.datatypes import Kernel
from sklKDE.density import Density, DensityParams

from numpy import seterr
from mkl import set_num_threads

_ = seterr(over='ignore')

set_num_threads(1)

In [2]:
center = PointAt(0, 0)
window = Window(2, 4)
bounds = BoundingBox(center, window)
grid = Grid(50, 50)

params = MockParams(100, 1000, gaussian)
producer = MockProducer(params, bounds)

kernel = Kernel('gaussian', 0.1)
demand_params = DensityParams(kernel, bounds, grid, producer)
demand = Density(demand_params)

In [3]:
demand.control.start()

In [10]:
demand.control.alive


Out[10]:
{'GridMapper': False, 'Streamer': False}

In [9]:
demand.control.stop()

In [ ]:
import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation

%matplotlib qt5

In [ ]:
fig_size_x = 8

fig = plt.figure(figsize=(fig_size_x, fig_size_x*bounds.aspect))
ax = plt.axes()
axlabel = ax.set(xlabel='longitude', ylabel='lattitude')

contour = ax.imshow(demand.on_grid,
                    cmap='viridis',
                    extent=bounds.extent,
                    origin='lower')

def initialize_figure():
    return contour,

def update_figure(*args):
    data = demand.on_grid
    contour.set_data(data)
    contour.set_clim(data.min(), data.max())
    return contour,

animation = FuncAnimation(fig, update_figure, interval=100, blit=True)

fig.tight_layout()
fig.show()

In [8]:
%%time
for i in range(100):
    demand.at(center)


CPU times: user 640 ms, sys: 4 ms, total: 644 ms
Wall time: 2.22 s

In [ ]: