Coder Social home page Coder Social logo

holoviz / datashader Goto Github PK

View Code? Open in Web Editor NEW
3.3K 3.3K 363.0 58.99 MB

Quickly and accurately render even the largest data.

Home Page: http://datashader.org

License: BSD 3-Clause "New" or "Revised" License

Python 99.98% Shell 0.02%
data-visualizations datashader holoviz rasterization

datashader's People

Contributors

ajaythorve avatar birdsarah avatar brendancol avatar ceball avatar danigm avatar esc avatar gbrener avatar hoxbro avatar ianthomas23 avatar jbcrail avatar jbednar avatar jcrist avatar jlstevens avatar jonmmease avatar jsignell avatar kebowen730 avatar maihde avatar mattpap avatar maximlt avatar nvictus avatar o-smirnov avatar peterroelants avatar philippjfr avatar pyvkd avatar raphaelquast avatar raybellwaves avatar sam-hoffman avatar seanlane avatar thuydotm avatar tselea avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

datashader's Issues

Raster/gridded-data support in datashader

I posted this question quite few days ago but is looks like it dragged no attention.
bokeh/bokeh-notebooks#24

In two sentences:
remote_ocean_slider example from here ( https://github.com/bokeh/bokeh-notebooks/blob/master/quickstart/quickstart.ipynb ) is not implemented in Datashader.
Is it actually possible?

It looks like Datashader is only for Scatter and Line plots...
What about Image (2D) data?

In my case the data slices has about 1B points, but the resolution on the client side is far less than that.
The client side also will navigate through the data and apply some operations (filtering, scaling, interleaving and colormapping) on the selected section.

I plan to implement it as a widget so that I can use it in all of my post/pre-processing activities...

Any reply is highly appreciated!
Thanks!

Legend/color key support

Because datashader allows automatic ranging and a flexible pipeline that can recompute all plot parameters for every pan and zoom, it is both essential and difficult to provide meaningful keys and legends. For instance, users could insert any arbitrarily nonlinear (including non-monotonic) transfer function into the pipeline, without the downstream client being able to detect that it was added, what its properties are, or how it should affect the values shown in any color key. We'll need an API that makes suitable information available from the core library, as long as the programmer sets things up according to our recommendations, while knowing that in principle there's no way to solve this problem for the fully general case of arbitrary transformations. Hopefully it will be practical to at least semi-automate this process, such that colors can be shown for a set of test values provided to the front of the pipeline, if only for the maximum and minimum values from the viewport.

Tasks (will probably need expanding):

  • Add a colormap key to one of our Bokeh plots as an example, using fixed values if necessary
  • Auto-range colormap values to show at least the minimum and maximum values automatically
  • Support nonlinear sampling for the colormap, working out intermediate values
  • Add a key to plots of categorical data, showing categories only
  • Possibly add a values-based key for categorical data, showing numerical ranges in each category

Example data download seems to hang

The python library calls used to download the sample data give no indication of progress, and can take many tens of minutes, making it completely unclear whether it will complete successfully. We used Python to do this so that it would work across platforms, but maybe we should first try wget or curl and only then fall back to Python's stdlib if those are not available.

Warnings from dashboard.py in bokeh 0.11.1dev2

hq-dhcp-20-83:~/datashader/examples> python dashboard.py
Starting server at http://localhost:5007/...
Loading Data...
WARNING:bokeh.core.properties:JSON had attr u'parent' on obj <bokeh.models.axes.LinearAxis object at 0x112
865350>, which is a client-only or invalid attribute that shouldn't have been sent
WARNING:bokeh.core.properties:JSON had attr u'parent' on obj <bokeh.models.grids.Grid object at 0x11286519
0>, which is a client-only or invalid attribute that shouldn't have been sent
WARNING:bokeh.core.properties:JSON had attr u'parent' on obj <bokeh.models.axes.LinearAxis object at 0x112
865f10>, which is a client-only or invalid attribute that shouldn't have been sent
WARNING:bokeh.core.properties:JSON had attr u'parent' on obj <bokeh.models.grids.Grid object at 0x112865c9
0>, which is a client-only or invalid attribute that shouldn't have been sent
WARNING:bokeh.core.properties:JSON had attr u'parent' on obj <bokeh.models.renderers.TileRenderer object a
t 0x112865090>, which is a client-only or invalid attribute that shouldn't have been sent
WARNING:bokeh.core.properties:JSON had attr u'parent' on obj <bokeh.models.renderers.DynamicImageRenderer 
object at 0x112865510>, which is a client-only or invalid attribute that shouldn't have been sent
WARNING:bokeh.core.properties:JSON had attr u'parent' on obj <bokeh.models.axes.LinearAxis object at 0x112
865350>, which is a client-only or invalid attribute that shouldn't have been sent
WARNING:bokeh.core.properties:JSON had attr u'parent' on obj <bokeh.models.grids.Grid object at 0x11286519
0>, which is a client-only or invalid attribute that shouldn't have been sent
WARNING:bokeh.core.properties:JSON had attr u'parent' on obj <bokeh.models.axes.LinearAxis object at 0x112
865f10>, which is a client-only or invalid attribute that shouldn't have been sent
WARNING:bokeh.core.properties:JSON had attr u'parent' on obj <bokeh.models.grids.Grid object at 0x112865c9
0>, which is a client-only or invalid attribute that shouldn't have been sent
WARNING:bokeh.core.properties:JSON had attr u'parent' on obj <bokeh.models.renderers.TileRenderer object a
t 0x112865090>, which is a client-only or invalid attribute that shouldn't have been sent
WARNING:bokeh.core.properties:JSON had attr u'parent' on obj <bokeh.models.renderers.DynamicImageRenderer 
object at 0x112865510>, which is a client-only or invalid attribute that shouldn't have been sent

Provide way to specify complex colormaps

Because datashader allows arbitrarily nonlinear mappings from data values to plotted colors, it would be very useful to have more precise control over colormaps. Issue #81 is one important extension, but making it possible to generate novel colormaps that are a good match to a particular pipeline's output is also important. @jcrist and @jbednar have discussed this previously over email, with @jcrist having details for a simple text-based specification that we could use.

Restore manual installation information to README

Hi,

We just had a user on the bokeh mailing list who couldn't install datashader - there's no win-64 package.

I went to point them to the manual install I used the other day, but it's gone from the README.

Can you add it back? Other people who, want to hack on datashader for example, will still want the manual install information.

Or perhaps - given that you're already setup on RTD, then, it can just be in there under a dev guide?

Add histogram equalization transfer function

If a nonlinear 'how' operator is selected for interpolate, the color range covered by some intensity ranges will be increased, and for others it will be decreased (according to the specific function selected). If such a function is chosen well for a particular dataset, local (in data intensity space) differences in value will map onto visible differences in RGB colors on a monitor, across the full range of data values.

An alternative to choosing a fixed such nonlinear function would be to do histogram equalization on the aggregates, making each of the various commonly occurring data value ranges be mapped onto visible color differences, even for data whose distribution cannot a priori be known to map to a particular nonlinear function, and even if that function has some nonstandard shape (e.g. trimodal). It should be straightforward to implement this function as a transfer function on aggregates, mapping each bin's magnitude into a histogram-equalized magnitude that spreads out the plotted values nicely across the visible color space.

module named tile_providers missing from Bokeh?

Hi

I am running a datashader demo developed by Continum Analytics here:
c

I am running the demo, but after loading BokehJS, it seems the module named tile_providers doesn't exist anymore?

Please advise

Thanks
TJ

Notebook: module named tile_providers

I'm now at the 3rd code segment in the Jupyter Notebook after receiving:

"BokehJS successfully loaded."

When I run the following code I received another error:

Code:

from bokeh.tile_providers import STAMEN_TERRAIN

samples = df.sample(n=1000)
p = base_plot()
p.add_tile(STAMEN_TERRAIN)
p.circle(x=samples['dropoff_x'], y=samples['dropoff_y'], **options)
show(p)

Error:

---------------------------------------------------------------------------
ImportError Traceback (most recent call last)
<ipython-input-5-f4a971eece60> in <module>()
----> 1 from bokeh.tile_providers import STAMEN_TERRAIN
2
3 samples = df.sample(n=1000)
4 p = base_plot()
5 p.add_tile(STAMEN_TERRAIN)

ImportError: No module named tile_providers

Thanks

Temporal plots

We need examples of plotting 2D datasets that vary over time. One example would be to map the time of day of the NYC taxi data into a hue value (since hour-of-the-day varies circularly, as hue does), and then let the saturation or luminance show the density of pickups or dropoffs.

This plot would map from time of day to hue, but many other possible ways to show temporal data could be used. E.g. if we have dynamic trajectory/telemetry data, we should be able to play that back as moving dots for a given day, making an animation.

Similarly, we could make a model of the US Census data, extrapolating it into the future, and then construct an animation to show the changes over time

1D aggregation example

The timeseries.ipynb example shows how to visualize one or more sets of timeseries data by plotting them in 2D (as connected line segments) and then aggregating them in 2D. Such an approach is a more-principled form of a common plotting paradigm, where large numbers of timeseries are overplotted as 2D curves, allowing the density of overlapping lines to be displayed faithfully. However, such an approach requires the curves to have a meaningful alignment in both x and y, which is true for the example data in timeseries.ipynb, but won't always be the case. Often there may be alignment in x (e.g. a shared time axis), but no meaningful alignment in the precise y values even for closely related variables. For instance, stocks for different companies in the same sector may covary but have very different absolute values, various weather-related measurements will all vary as weather fronts come and go, yet will be on different scales, etc. In some cases, these traces can be aligned by normalizing to put the y values onto similar scales, but in others such normalization would be very difficult, e.g. if there is strong drift on one variable that obscures smaller day-to-day variations that overlap. In any of these cases, aggregating the plots in 2D will not be very informative about the properties of the set of curves.

Instead, one can aggregate a set of curves in 1D directly, yielding a 1D array. The existing code can be used for this already, by ensuring that there is only a single pixel in the y direction, passing in a fake fixed value for y in the aggregation, and then aggregatng what would have been the y value for a 2D line plot as a value dimension. Alternatively, we could provide a specific interface for performing 1D aggregation, which would let us e.g. support non-uniform sampling along the x axis, as well as avoiding users having to munge their data into fake 2D as above.

In either case, we'll then need to determine appropriate ways to visualize and analyze the results. One approach is outlined in #103, i.e. to see if the aggregated values fit some statistical model (e.g. by aggregating into a histogram, then fitting the histogram from each x value with a model and computing the goodness of fit), and then plotting the fit values (for a good fit) or the actual histogram (for pixels with a bad fit). We can also highlight anomalies in some way, or do other automatic calculations on the 1D aggregate.

How to plot the mean of several columns in the same plot?

I have a data frame with four columns: x-coordinates, y-coordinates, weight and height. I want the data points to be colored according to their weight and height in two different colormaps, rather than by density.

This is my progress so far:

import datashader as ds
from datashader import transfer_functions as tf
from functools import partial

def create_image(x_range, y_range, w, h, color_fn=tf.interpolate):
    cvs = ds.Canvas(plot_width=w, plot_height=h, x_range=x_range, y_range=y_range)
    agg = cvs.points(df, 'x-coord',  'y-coord',  ds.mean('weight'))
    image = color_fn(agg)
    return image

create_image(x_range, y_range, 400, 250, color_fn=partial(tf.interpolate, low="lightgrey", high='black', how='log'))

How would I go about adding the mean of height and plot it in a colorscale from lightred to darkred, so that the final plot displays both height and weight in two different color maps in the same plot. This would be similar to the census example in the webinar, where ethnicities were plotted in different colors (although that was according to the density rather than the mean values of another column).

Axis labels (in lat/lon?) for examples like dashboard.py

This won't be very practical right now, but it would be great to be able to show axis labels with lat, lon coordinates in degrees. Doing this properly would require Bokeh support for nonlinear axis lines, as in:

image

but even just having the approximately correct values in degrees along the x and y axis (with no grid lines, since they would be incorrectly straight!) would be helpful in some cases.

Meanwhile, maybe we can support hovering, to show the value in lat/lon, converted from the native Web Mercator values?

Changes that appear to require Bokeh extensions, if not using JavaScript

Wheel zoom: I'm a big fan of leaving wheel zoom disabled for any decent-sized web page or notebook, because I use the wheel zoom extensively to navigate through the document, and it then keeps getting stuck on Bokeh plots. But for a single-page non-scrolling app like dashboard.py, the scroll wheel isn't doing anything useful anyway, and so it should be enabled by default.

@brendancol suggests that doing so will require a small change in Bokeh, so it may not be practical for a while.

Wall-to-wall plots: It would similarly be nice to enable wall-to-wall plotting in this example, to make better use of the screen area, but again that apparently requires appropriate functionality to be exposed to Python in Bokeh.

Tab name: Can the browser tab label string for the dashboard be changed to something more useful than "Bokeh Application"? bwc - this is doable

Cyclical data example

Some data has an associated period that should be taken into account for visualizations. For instance, patterns may repeat according to a certain pattern based on the hour of the day, day of the week, month of the year, etc., or according to some non-calendar-based timeline.

We should make an example of plotting such data, first for a fixed, known timebase, and then possibly for exploring possible timebases interactively (akin to Fourier analysis, i.e. plotting across a range of periodicities).

Tasks:

  • Select suitable dataset (e.g. NYC Taxi, for calendar-based periods)
  • Make or update notebook showing how to fold the data across periods
  • Make an example showing how to search the space of possible periods to discover temporal patterns

See also #104.

Remove dynd

I originally used dynd to store the results of aggregation because:

  • It has builtin representation of missingness for non-float types
  • Better support for record (and nested record) types
  • (planned) support for variable length strings

However, I no longer think this was a good decision, and propose to remove it from the codebase. Reasons:

  • Bugs, segfaults, crashes. These are all too common right now. Progress is rapidly being made to clean this up (and I'm impressed with how quickly the dynd team is improving things), but currently it's a bit of a hassle to use.
  • Missing features. Most functionality I'd want in an nd-array library currently doesn't exist. Same as above, this is changing rapidly, but currently I'm casting to numpy arrays for most operations.
  • (partial) incompatibility with much of the pydata ecosystem. Dynd arrays support the buffer protocol, and so can work fine with many things if the dtype is numpy compatible. Missing types aren't numpy compatible, and so much of the codebase is casting an option type to non-option, doing stuff, then casting back.
  • Not compatible with numba.

Because of these reasons, I'd like to switch to using numpy arrays to hold the aggregates. This will play better with existing tools and simplifies our internals greatly. Aggregates actually are computed as numpy arrays, and are only cast to dynd arrays at the end, so this will only touch a few files anyway.

The big question then is how to handle missingness. I see a few options:

  1. All missing types are floats, nan indicates missingness. This is by far the easiest method, but also seems a bit of a hack. Some quantities are inherently integers, forcing floating representation means loss of precision (although the importance of this is probably negligible here).
  2. Subclass ndarray, and build a (limited) ndarray class that supports missingness with the same semantics as dynd. This may or may not be tricky, but will definitely be trickier than option 1.
  3. No subclassing, store data in Aggregate classes as raw numpy arrays and a missingness flag (i.e. what value in the array indicates missingess). All operations go through this. This is similar to how the aggregates currently work, but would avoid all of the mucking with dynd.
  4. Use numpy's own masked arrays. These are basically 2 arrays, one of data, and a boolean "mask". Pros: already supports many operations. Cons: increased storage cost (probably not important), not all things support them, abstraction sometimes leaks resulting in non-masked arrays. Note that option 2 would have this same issue as well, subclassing arrays robustly is difficult.
  5. Keep dynd, and keep working around issues until it gets more featureful. Unsure of when that will happen, but they're making good progress.

Of these options, I'm leaning towards 1 or 4. Not sure what's best here.


A follow-up question is, if/once dynd is gone, do we continue to use datashape/odo? Datashape was used because I started with both blaze and dynd, and they each use it. After nixing both of these as dependencies, it may no longer make sense to use it. However, the cost of continuing to use it is minimal, it's quick to convert numpy dtype -> datashape. It would just remove dependencies, and the need for a second type system other than numpy/pandas's.

Hover tool support

Because datashader produces an image rather than a collection of glyphs, there is no direct information available to the plotting program about the precise numerical values of plotted data. This information can be made available separately from the image, in a way that a plotting program (e.g. Bokeh) can display using the "hover" or "tooltips" mechanism, revealing values corresponding to the current mouse pointer location. At a minimum this information could just be the numerical value of that pixel, but it can be expanded to include counts and minimum/maximum values (if e.g. average or total values are being plotted), various statistical measures, etc.

It may be useful to bin this information on a grid coarser than the aggregation grid, which simply involves a pass over the aggregate grid to merge adjacent cells' data. In this case, it would be helpful if the hover tool showed the outline of the grid cell whose data is being shown, for clarity.

Tasks (may need to be expanded):

  • Implement fixed example of making information visible by hovering
  • Decide on an API for making the information available from the pipeline in general
  • Extend InteractiveImage to make use of data other than the image itself, perhaps by optionally accepting a dictionary or tuple, and grabbing the image key's value in that dictionary
  • Update some of the examples to include hover information

Some of this implementation may overlap with the support for color keys/legends in issue #90, in that it requires the underlying library to make information available about the data shown in an image.

Zooming in to InteractiveImage

InteractiveImage has mostly been working amazingly well, but I'm having a strange problem in a new notebook:

https://anaconda.org/jbednar/tseries/notebook

If I run that notebook using Run All, then try to zoom into the last cell (here using a box zoom), I get an error "conflicting sizes for dimension 'y_axis': length 273 on the data but length 274 on coordinate 'y_axis'":

image

And the plot doesn't update (as can be seen in this blocky image). Any ideas, @brendancol or @philippjfr ?

Add a GMapPlot example

It's unclear how to overlay a datashaded plot over a GMapPlot background and have both stay in sync on pan/zoom: an example would be really useful.

datashader Anacoder demo code: 2 errors numpy.core.multiarray failed to import, cannot import name config

Hi - Making progress getting the datashader demo code to run so far :) , except... ;(

Ref # https://github.com/bokeh/datashader/issues/72#issuecomment-185412152

Now at "10-million-point datashaded plots: auto-ranging, but not perceptually calibrated" step @
https://anaconda.org/jbednar/nyc_taxi/notebook

import datashader as ds
from datashader import transfer_functions as tf
from functools import partial

def create_image(x_range, y_range, w, h, color_fn=tf.interpolate):
cvs = ds.Canvas(plot_width=w, plot_height=h, x_range=x_range, y_range=y_range)
agg = cvs.points(df, 'dropoff_x', 'dropoff_y', ds.count('passenger_count'))
image = color_fn(agg)
return image

I am receiving these two errors. Any guidance on this please? I ran "pip install numpy" just in case and received the message: " Requirement already satisfied"

Many Thanks.

Error#1 of 2:

RuntimeError Traceback (most recent call last)
RuntimeError: module compiled against API version a but this version of numpy is 9


ImportError Traceback (most recent call last)
in ()
----> 1 import datashader as ds
2 from datashader import transfer_functions as tf
3 from functools import partial
4
5 def create_image(x_range, y_range, w, h, color_fn=tf.interpolate):

anaconda/lib/python2.7/site-packages/datashader/init.py in ()
3 version = '0.1.0'
4
----> 5 from .core import Canvas
6 from .reductions import (count, sum, min, max, mean, std, var, count_cat,
7 summary)

anaconda/lib/python2.7/site-packages/datashader/core.py in ()
5 from odo import discover
6
----> 7 from .utils import Dispatcher, ngjit
8
9

anaconda/lib/python2.7/site-packages/datashader/utils.py in ()
3 from inspect import getmro
4
----> 5 import numba as nb
6 from datashape import Unit
7 from datashape.predicates import launder

anaconda/lib/python2.7/site-packages/numba/init.py in ()
5 import re
6
----> 7 from . import testing, decorators
8 from . import errors, special, types, config
9

anaconda/lib/python2.7/site-packages/numba/decorators.py in ()
8 from . import config, sigutils
9 from .errors import DeprecationError
---> 10 from .targets import registry
11 from . import cuda
12

anaconda/lib/python2.7/site-packages/numba/targets/registry.py in ()
1 from future import print_function, division, absolute_import
2
----> 3 from . import cpu
4 from .descriptors import TargetDescriptor
5 from .. import dispatcher, utils, typing

anaconda/lib/python2.7/site-packages/numba/targets/cpu.py in ()
9 from numba import _dynfunc, config
10 from numba.callwrapper import PyCallWrapper
---> 11 from .base import BaseContext, PYOBJECT
12 from numba import utils, cgutils, types
13 from numba.utils import cached_property

anaconda/lib/python2.7/site-packages/numba/targets/base.py in ()
13
14 from numba import types, utils, cgutils, typing
---> 15 from numba import _dynfunc, _helperlib
16 from numba.pythonapi import PythonAPI
17 from numba.targets.imputils import (user_function, user_generator,

ImportError: numpy.core.multiarray failed to import

Error#2 of 2:

Then after running the same code/cell again in jupyter I receive this error message:


ImportError Traceback (most recent call last)
in ()
----> 1 import datashader as ds
2 from datashader import transfer_functions as tf
3 from functools import partial
4
5 def create_image(x_range, y_range, w, h, color_fn=tf.interpolate):

anaconda/lib/python2.7/site-packages/datashader/init.py in ()
3 version = '0.1.0'
4
----> 5 from .core import Canvas
6 from .reductions import (count, sum, min, max, mean, std, var, count_cat,
7 summary)

anaconda/lib/python2.7/site-packages/datashader/core.py in ()
5 from odo import discover
6
----> 7 from .utils import Dispatcher, ngjit
8
9

anaconda/lib/python2.7/site-packages/datashader/utils.py in ()
3 from inspect import getmro
4
----> 5 import numba as nb
6 from datashape import Unit
7 from datashape.predicates import launder

anaconda/lib/python2.7/site-packages/numba/init.py in ()
5 import re
6
----> 7 from . import testing, decorators
8 from . import errors, special, types, config
9

anaconda/lib/python2.7/site-packages/numba/decorators.py in ()
6 import warnings
7
----> 8 from . import config, sigutils
9 from .errors import DeprecationError
10 from .targets import registry

ImportError: cannot import name config

Add timeseries examples

Now that there is support for line plots, need to add examples of plotting large and/or multiple time series.

Map labels, map opacity in dashboard.py

It would be good to have a toggle button to enable or disable a map labels tile layer, to help people get oriented.

Having an opacity slider for the map tiles would also be good, since the map isn't always useful.

Add trajectory/telemetry example

Now that there is line support, need to add an example of using it to plot a trajectory (series of connected line segments) with a large number of points.

Plots with a black background

I'd like to be able to render images that have a black background, but I don't see how to do it. The PIL.Image.fromarray function that we're using in transfer_functions.py generates an RGBA image, but the function call doesn't seem to allow the background color that comes through for transparent pixels to be specified. Presumably we could make a blank black image using PIL.Image.new and then add the two images together, but that seems awkward...

PermissionError

I tried modifying the nyc-taxi example to work with some of my own data.

when i run ~/anaconda3/bin/bokeh serve --show datashaderDataAnalysis.py

I get two exceptions.

File "dispatcher.py", line 710, in _open_for_write:
with open(tmpname, "wb") as f: Traceback (most recent call last):
File "/home/jduplessis/anaconda3/lib/python3.5/site-packages/numba/dispatcher.py", line 657, in save_overload
data_name = overloads[key]
KeyError: ('(uint32,)', ('x86_64-unknown-linux-gnu', 'core-avx2', True))

and

File "/home/jduplessis/anaconda3/lib/python3.5/site-packages/numba/dispatcher.py", line 710, in _open_for_write
with open(tmpname, "wb") as f:
PermissionError: [Errno 13] Permission denied: '/home/jduplessis/anaconda3/lib/python3.5/site-packages/datashader-0.1.0-py3.5.egg/datashader/pycache/composite.extract_scaled-10.py35m.nbi.tmp.8249'

any ideas?

Example of plotting points with associated probabilities

Currently, datashader's scatterplot/heatmap approach for points data partitions the set of points, allocating each one into non-overlapping pixel-shaped bins. Some types of data come with associated probabilities, such as a known measurement error bound or an estimated uncertainty per point.

It would be good to have an example of how to aggregate such data, such that the value of each datapoint is assigned to multiple bins in the aggregate array, according to some kernel function (e.g. a 2D Gaussian, where errors are specified as stddevs).

For the special case of a square error kernel, this approach is equivalent to implementing support for raster data (see #86), where each raster datapoint represents a specified area of the X,Y plane with equal probability or weighting within that square.

We'll need a suitable dataset of this type, preferably one with widely varying error estimates across the datapoints, such that some points have tight bounds and others are less constrained.

Move InteractiveImage to Bokeh

The InteractiveImage class provides very general support for making a Bokeh plot out of any callable that can return an image. datashader is one place that comes up, but there are an infinite number of other possible applications, such as raster downsampling in general. It would be good to make a pull request for Bokeh so that this functionality is available to other Bokeh users as well.

Moving it is probably premature, though, as we are just now starting to work on legend and hover tool support (#90, #91) that would necessitate changes to InteractiveImage. Specifically, we are expecting to supply not just the image, but some metadata useful for constructing keys and hover information for Bokeh to use. We might do this as an InteractiveImage subclass (to keep the basic image support cleaner), but in any case, perhaps best to wait until after we've worked out the best way to do that, since we'll probably at least want to change the expected function return type from an image into a dict or other container structure, at least optionally.

Symbolic rendering of aggregate array

The current datashader pipeline always generates an image as the final output, with each aggregate bin corresponding to one output pixel. However, there are other possible ways to represent the data in the array, and it would be helpful to make some examples of what can be done.

For instance, given a set of aggregated timeseries, a statistical model (e.g. a normal distribution), and an error criterion, one could aggregate the set of timeseries into a 1D aggregate, then evaluate the goodness of fit for the model using a rolling window over the aggregate array. For periods of the timeseries where data is fit well, one could generate a Bokeh plot showing the mean, spread, and specific data points that are unlikely to have come from that distribution. For regions that are a poor fit to the model, could have some other representation.

Similarly, in 2D one could generate a contour plot for areas that are a good fit to the model (e.g. a sum of a fixed number of 2D Gaussians), plus specific outlying points.

A hybrid approach is also possible, generating a bitmap plus specific outliers (perhaps limited to certain types of outliers, such as those much larger than the mean, not those much smaller); explicit glyphs for the outliers would be overlaid on the overall bitmap, making information about them available to e.g. the hover tool.

Tasks:

[ ] Alternative symbolic visualization
[ ] Specifying a statistical model for aggregate output
[ ] Automatic identification and highlighting of outliers and anomalies

Taxi example claims to be in latlon but is in meters

The download_sample_data.py script converts latitude and longitude to meters (in Web Mercator coordinates), but writes those values back to the original fields. Those fields are named pickup_longitude, pickup_latitude, dropoff_longitude, and dropoff_latitude, which is very confusing when reading code that uses this dataset, because they no longer contain latitudes or longitudes. Should presumably store the computed values in pickup_x, pickup_y, dropoff_x, and dropoff_y instead.

Implement heatmap

Hello everybody,

I've seen many examples how to implement a heatmap with bokeh, but none about how doing it with datashader. I've already tested the taxi example and implemented my data, but it just shows a scatter plot, not a heatmap.

I think I should change something in and around this line:
pix = tf.interpolate(agg, low='lightblue', high='red', how=self.model.transfer_function)

However, I do not know how to proceed. What I would like is something like this. Is it possible with datashader? Is it possible, as well, that I click into a point and displays the information in that point?

*** Error in `/home/joel/anaconda2/bin/python': free(): invalid pointer: 0x00007efde703d040 ***

Thank you for the great webinar today! I am eager to try out the datashader library, but unfortunately I am running into some issues. Installing using conda works fine, but when I execute import datashader, the kernel dies and I receive a massive error message:

[I 16:06:54.948 NotebookApp] Serving notebooks from local directory: /home/joel/draft
[I 16:06:54.948 NotebookApp] 0 active kernels 
[I 16:06:54.948 NotebookApp] The IPython Notebook is running at: http://localhost:8888/
[I 16:06:54.948 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).
[I 16:07:04.287 NotebookApp] Kernel started: 8ae9f4ca-9f1d-409a-9273-0cac620d2073
[I 16:07:07.376 NotebookApp] Kernel started: f70d75f2-a6c3-46fc-b3d4-c362ba624be5
*** Error in `/home/joel/anaconda2/bin/python': free(): invalid pointer: 0x00007efde703d040 ***
======= Backtrace: =========
/usr/lib/libc.so.6(+0x72055)[0x7efe23f0f055]
/usr/lib/libc.so.6(+0x779a6)[0x7efe23f149a6]
/usr/lib/libc.so.6(+0x7818e)[0x7efe23f1518e]
/home/joel/anaconda2/lib/python2.7/site-packages/dynd/../../../libdynd.so(_ZNSt6locale5_Impl16_M_install_facetEPKNS_2idEPKNS_5facetE+0x142)[0x7efde6b04582]
/home/joel/anaconda2/lib/python2.7/site-packages/dynd/../../../libdynd.so(_ZNSt6locale5_ImplC1Em+0x1e3)[0x7efde6af6f43]
/home/joel/anaconda2/lib/python2.7/site-packages/dynd/../../../libdynd.so(_ZNSt6locale18_S_initialize_onceEv+0x15)[0x7efde6af7eb5]
/usr/lib/libpthread.so.0(+0xe519)[0x7efe24954519]
/home/joel/anaconda2/lib/python2.7/site-packages/dynd/../../../libdynd.so(_ZNSt6locale13_S_initializeEv+0x21)[0x7efde6af7f01]
/home/joel/anaconda2/lib/python2.7/site-packages/dynd/../../../libdynd.so(_ZNSt6localeC1Ev+0x13)[0x7efde6af7f43]
/home/joel/anaconda2/lib/python2.7/site-packages/dynd/../../../libdynd.so(_ZNSt8ios_base4InitC1Ev+0xb4)[0x7efde6af51c4]
/home/joel/anaconda2/lib/python2.7/site-packages/dynd/../../../libdynd.so(+0xfd89f0)[0x7efde65bb9f0]
/lib64/ld-linux-x86-64.so.2(+0xf27a)[0x7efe24f5927a]
/lib64/ld-linux-x86-64.so.2(+0xf38b)[0x7efe24f5938b]
/lib64/ld-linux-x86-64.so.2(+0x13830)[0x7efe24f5d830]
/lib64/ld-linux-x86-64.so.2(+0xf124)[0x7efe24f59124]
/lib64/ld-linux-x86-64.so.2(+0x12fd1)[0x7efe24f5cfd1]
/usr/lib/libdl.so.2(+0xfc9)[0x7efe24742fc9]
/lib64/ld-linux-x86-64.so.2(+0xf124)[0x7efe24f59124]
/usr/lib/libdl.so.2(+0x15e1)[0x7efe247435e1]
/usr/lib/libdl.so.2(dlopen+0x31)[0x7efe24743061]
/home/joel/anaconda2/bin/../lib/libpython2.7.so.1.0(_PyImport_GetDynLoadFunc+0x13e)[0x7efe24c92dde]
/home/joel/anaconda2/bin/../lib/libpython2.7.so.1.0(_PyImport_LoadDynamicModule+0x98)[0x7efe24c778d8]
/home/joel/anaconda2/bin/../lib/libpython2.7.so.1.0(+0x112f81)[0x7efe24c75f81]
/home/joel/anaconda2/bin/../lib/libpython2.7.so.1.0(+0x1131f4)[0x7efe24c761f4]
/home/joel/anaconda2/bin/../lib/libpython2.7.so.1.0(PyImport_ImportModuleLevel+0x1f0)[0x7efe24c76820]
/home/joel/anaconda2/bin/../lib/libpython2.7.so.1.0(+0xf314f)[0x7efe24c5614f]
/home/joel/anaconda2/bin/../lib/libpython2.7.so.1.0(PyObject_Call+0x53)[0x7efe24bacd23]
/home/joel/anaconda2/bin/../lib/libpython2.7.so.1.0(PyEval_CallObjectWithKeywords+0x43)[0x7efe24c56633]
/home/joel/anaconda2/bin/../lib/libpython2.7.so.1.0(PyEval_EvalFrameEx+0x3d6e)[0x7efe24c5b29e]
/home/joel/anaconda2/bin/../lib/libpython2.7.so.1.0(PyEval_EvalCodeEx+0x89e)[0x7efe24c60a2e]
/home/joel/anaconda2/bin/../lib/libpython2.7.so.1.0(PyEval_EvalCode+0x32)[0x7efe24c60b42]
/home/joel/anaconda2/bin/../lib/libpython2.7.so.1.0(PyImport_ExecCodeModuleEx+0xc2)[0x7efe24c72a82]
/home/joel/anaconda2/bin/../lib/libpython2.7.so.1.0(+0x1121ce)[0x7efe24c751ce]
/home/joel/anaconda2/bin/../lib/libpython2.7.so.1.0(+0x112a2a)[0x7efe24c75a2a]
/home/joel/anaconda2/bin/../lib/libpython2.7.so.1.0(+0x112f81)[0x7efe24c75f81]
/home/joel/anaconda2/bin/../lib/libpython2.7.so.1.0(+0x1131f4)[0x7efe24c761f4]
/home/joel/anaconda2/bin/../lib/libpython2.7.so.1.0(PyImport_ImportModuleLevel+0x1f0)[0x7efe24c76820]
/home/joel/anaconda2/bin/../lib/libpython2.7.so.1.0(+0xf314f)[0x7efe24c5614f]
/home/joel/anaconda2/bin/../lib/libpython2.7.so.1.0(+0xf314f)[0x7efe24c5614f]
/home/joel/anaconda2/bin/../lib/libpython2.7.so.1.0(PyObject_Call+0x53)[0x7efe24bacd23]
/home/joel/anaconda2/bin/../lib/libpython2.7.so.1.0(PyEval_CallObjectWithKeywords+0x43)[0x7efe24c56633]
/home/joel/anaconda2/bin/../lib/libpython2.7.so.1.0(PyEval_EvalFrameEx+0x3d6e)[0x7efe24c5b29e]
/home/joel/anaconda2/bin/../lib/libpython2.7.so.1.0(PyEval_EvalCodeEx+0x89e)[0x7efe24c60a2e]
/home/joel/anaconda2/bin/../lib/libpython2.7.so.1.0(PyEval_EvalCode+0x32)[0x7efe24c60b42]
/home/joel/anaconda2/bin/../lib/libpython2.7.so.1.0(PyImport_ExecCodeModuleEx+0xc2)[0x7efe24c72a82]
/home/joel/anaconda2/bin/../lib/libpython2.7.so.1.0(+0x1121ce)[0x7efe24c751ce]
/home/joel/anaconda2/bin/../lib/libpython2.7.so.1.0(+0x112f81)[0x7efe24c75f81]
/home/joel/anaconda2/bin/../lib/libpython2.7.so.1.0(+0x1131f4)[0x7efe24c761f4]
/home/joel/anaconda2/bin/../lib/libpython2.7.so.1.0(PyImport_ImportModuleLevel+0x230)[0x7efe24c76860]
/home/joel/anaconda2/bin/../lib/libpython2.7.so.1.0(+0xf314f)[0x7efe24c5614f]
/home/joel/anaconda2/bin/../lib/libpython2.7.so.1.0(PyObject_Call+0x53)[0x7efe24bacd23]
/home/joel/anaconda2/bin/../lib/libpython2.7.so.1.0(PyEval_CallObjectWithKeywords+0x43)[0x7efe24c56633]
/home/joel/anaconda2/bin/../lib/libpython2.7.so.1.0(PyEval_EvalFrameEx+0x3d6e)[0x7efe24c5b29e]
/home/joel/anaconda2/bin/../lib/libpython2.7.so.1.0(PyEval_EvalCodeEx+0x89e)[0x7efe24c60a2e]
/home/joel/anaconda2/bin/../lib/libpython2.7.so.1.0(PyEval_EvalCode+0x32)[0x7efe24c60b42]
/home/joel/anaconda2/bin/../lib/libpython2.7.so.1.0(PyImport_ExecCodeModuleEx+0xc2)[0x7efe24c72a82]
/home/joel/anaconda2/bin/../lib/libpython2.7.so.1.0(+0x1121ce)[0x7efe24c751ce]
/home/joel/anaconda2/bin/../lib/libpython2.7.so.1.0(+0x112a2a)[0x7efe24c75a2a]
/home/joel/anaconda2/bin/../lib/libpython2.7.so.1.0(+0x112f81)[0x7efe24c75f81]
/home/joel/anaconda2/bin/../lib/libpython2.7.so.1.0(+0x1131f4)[0x7efe24c761f4]
/home/joel/anaconda2/bin/../lib/libpython2.7.so.1.0(PyImport_ImportModuleLevel+0x1f0)[0x7efe24c76820]
/home/joel/anaconda2/bin/../lib/libpython2.7.so.1.0(+0xf314f)[0x7efe24c5614f]
/home/joel/anaconda2/bin/../lib/libpython2.7.so.1.0(PyObject_Call+0x53)[0x7efe24bacd23]
/home/joel/anaconda2/bin/../lib/libpython2.7.so.1.0(PyEval_CallObjectWithKeywords+0x43)[0x7efe24c56633]
======= Memory map: ========
00400000-00401000 r-xp 00000000 08:05 1450070                            /home/joel/anaconda2/bin/python2.7
00600000-00601000 rw-p 00000000 08:05 1450070                            /home/joel/anaconda2/bin/python2.7
017f9000-02c74000 rw-p 00000000 00:00 0                                  [heap]
7efde0000000-7efde0021000 rw-p 00000000 00:00 0 
7efde0021000-7efde4000000 ---p 00000000 00:00 0 
7efde55e3000-7efde6dbe000 r-xp 00000000 08:05 2095468                    /home/joel/anaconda2/lib/libdynd.so
7efde6dbe000-7efde6fbe000 ---p 017db000 08:05 2095468                    /home/joel/anaconda2/lib/libdynd.so
7efde6fbe000-7efde6ff7000 r--p 017db000 08:05 2095468                    /home/joel/anaconda2/lib/libdynd.so
7efde6ff7000-7efde7011000 rw-p 01814000 08:05 2095468                    /home/joel/anaconda2/lib/libdynd.so
7efde7011000-7efde703f000 rw-p 00000000 00:00 0 
7efde703f000-7efde721f000 r-xp 00000000 08:05 1968887                    /home/joel/anaconda2/lib/python2.7/site-packages/dynd/libpydynd.so
7efde721f000-7efde741f000 ---p 001e0000 08:05 1968887                    /home/joel/anaconda2/lib/python2.7/site-packages/dynd/libpydynd.so
7efde741f000-7efde7423000 r--p 001e0000 08:05 1968887                    /home/joel/anaconda2/lib/python2.7/site-packages/dynd/libpydynd.so
7efde7423000-7efde742a000 rw-p 001e4000 08:05 1968887                    /home/joel/anaconda2/lib/python2.7/site-packages/dynd/libpydynd.so
7efde742a000-7efde742b000 rw-p 00000000 00:00 0 
7efde742b000-7efde7431000 r-xp 00000000 08:05 1968819                    /home/joel/anaconda2/lib/python2.7/site-packages/dynd/config.so
7efde7431000-7efde7630000 ---p 00006000 08:05 1968819                    /home/joel/anaconda2/lib/python2.7/site-packages/dynd/config.so
7efde7630000-7efde7631000 r--p 00005000 08:05 1968819                    /home/joel/anaconda2/lib/python2.7/site-packages/dynd/config.so
7efde7631000-7efde7632000 rw-p 00006000 08:05 1968819                    /home/joel/anaconda2/lib/python2.7/site-packages/dynd/config.so
7efde7632000-7efde7633000 rw-p 0001e000 08:05 1968819                    /home/joel/anaconda2/lib/python2.7/site-packages/dynd/config.so
7efde7633000-7efde7673000 rw-p 00000000 00:00 0 
7efde7673000-7efde7698000 r-xp 00000000 08:05 2106528                    /home/joel/anaconda2/lib/python2.7/site-packages/tables/indexesextension.so
7efde7698000-7efde7898000 ---p 00025000 08:05 2106528                    /home/joel/anaconda2/lib/python2.7/site-packages/tables/indexesextension.so
7efde7898000-7efde789b000 rw-p 00025000 08:05 2106528                    /home/joel/anaconda2/lib/python2.7/site-packages/tables/indexesextension.so
7efde789b000-7efde78dc000 rw-p 00000000 00:00 0 
7efde78dc000-7efde78f1000 r-xp 00000000 08:05 2106538                    /home/joel/anaconda2/lib/python2.7/site-packages/tables/lrucacheextension.so
7efde78f1000-7efde7af0000 ---p 00015000 08:05 2106538                    /home/joel/anaconda2/lib/python2.7/site-packages/tables/lrucacheextension.so
7efde7af0000-7efde7af3000 rw-p 00014000 08:05 2106538                    /home/joel/anaconda2/lib/python2.7/site-packages/tables/lrucacheextension.so
7efde7af3000-7efde7b57000 r-xp 00000000 08:05 2106584                    /home/joel/anaconda2/lib/python2.7/site-packages/tables/tableextension.so
7efde7b57000-7efde7d56000 ---p 00064000 08:05 2106584                    /home/joel/anaconda2/lib/python2.7/site-packages/tables/tableextension.so
7efde7d56000-7efde7d5d000 rw-p 00063000 08:05 2106584                    /home/joel/anaconda2/lib/python2.7/site-packages/tables/tableextension.so
7efde7d5d000-7efde7d9f000 rw-p 00000000 00:00 0 
7efde7d9f000-7efde7dac000 r-xp 00000000 08:05 2106535                    /home/joel/anaconda2/lib/python2.7/site-packages/tables/linkextension.so
7efde7dac000-7efde7fab000 ---p 0000d000 08:05 2106535                    /home/joel/anaconda2/lib/python2.7/site-packages/tables/linkextension.so
7efde7fab000-7efde7fae000 rw-p 0000c000 08:05 2106535                    /home/joel/anaconda2/lib/python2.7/site-packages/tables/linkextension.so
7efde7fae000-7efde7fee000 rw-p 00000000 00:00 0 
7efde7fee000-7efde8069000 r-xp 00000000 08:05 2106519                    /home/joel/anaconda2/lib/python2.7/site-packages/tables/hdf5extension.so
7efde8069000-7efde8269000 ---p 0007b000 08:05 2106519                    /home/joel/anaconda2/lib/python2.7/site-packages/tables/hdf5extension.so
7efde8269000-7efde8271000 rw-p 0007b000 08:05 2106519                    /home/joel/anaconda2/lib/python2.7/site-packages/tables/hdf5extension.so
7efde8271000-7efde8274000 rw-p 00000000 00:00 0 
7efde8274000-7efde8286000 r-xp 00000000 08:05 2106487                    /home/joel/anaconda2/lib/python2.7/site-packages/tables/_comp_bzip2.so
7efde8286000-7efde8485000 ---p 00012000 08:05 2106487                    /home/joel/anaconda2/lib/python2.7/site-packages/tables/_comp_bzip2.so
7efde8485000-7efde8487000 rw-p 00011000 08:05 2106487                    /home/joel/anaconda2/lib/python2.7/site-packages/tables/_comp_bzip2.so
7efde8487000-7efde848c000 r-xp 00000000 08:05 2106488                    /home/joel/anaconda2/lib/python2.7/site-packages/tables/_comp_lzo.so
7efde848c000-7efde868c000 ---p 00005000 08:05 2106488                    /home/joel/anaconda2/lib/python2.7/site-packages/tables/_comp_lzo.so
7efde868c000-7efde868d000 rw-p 00005000 08:05 2106488                    /home/joel/anaconda2/lib/python2.7/site-packages/tables/_comp_lzo.so
7efde868d000-7efde870d000 rw-p 00000000 00:00 0 
7efde870d000-7efde8770000 r-xp 00000000 08:05 2106701                    /home/joel/anaconda2/lib/python2.7/site-packages/tables/utilsextension.so
7efde8770000-7efde8970000 ---p 00063000 08:05 2106701                    /home/joel/anaconda2/lib/python2.7/site-packages/tables/utilsextension.so
7efde8970000-7efde8978000 rw-p 00063000 08:05 2106701                    /home/joel/anaconda2/lib/python2.7/site-packages/tables/utilsextension.so
7efde8978000-7efde89fb000 rw-p 00000000 00:00 0 
7efde89fb000-7efde8a1c000 r-xp 00000000 08:05 2239262                    /home/joel/anaconda2/lib/liblzma.so.5.0.5
7efde8a1c000-7efde8c1c000 ---p 00021000 08:05 2239262                    /home/joel/anaconda2/lib/liblzma.so.5.0.5
7efde8c1c000-7efde8c1d000 rw-p 00021000 08:05 2239262                    /home/joel/anaconda2/lib/liblzma.so.5.0.5
7efde8c1d000-7efde8c95000 r-xp 00000000 08:05 2095615                    /home/joel/anaconda2/lib/libtiff.so.5.2.4
7efde8c95000-7efde8e94000 ---p 00078000 08:05 2095615                    /home/joel/anaconda2/lib/libtiff.so.5.2.4
7efde8e94000-7efde8e9b000 rw-p 00077000 08:05 2095615                    /home/joel/anaconda2/lib/libtiff.so.5.2.4
7efde8e9b000-7efde8ed2000 r-xp 00000000 08:05 2094955                    /home/joel/anaconda2/lib/libjpeg.so.8.4.0
7efde8ed2000-7efde90d1000 ---p 00037000 08:05 2094955                    /home/joel/anaconda2/lib/libjpeg.so.8.4.0
7efde90d1000-7efde90d2000 rw-p 00036000 08:05 2094955                    /home/joel/anaconda2/lib/libjpeg.so.8.4.0
7efde90d2000-7efde9120000 r-xp 00000000 08:05 5501094                    /home/joel/anaconda2/lib/python2.7/site-packages/PIL/_imaging.so
7efde9120000-7efde9320000 ---p 0004e000 08:05 5501094                    /home/joel/anaconda2/lib/python2.7/site-packages/PIL/_imaging.so
7efde9320000-7efde9326000 rw-p 0004e000 08:05 5501094                    /home/joel/anaconda2/lib/python2.7/site-packages/PIL/_imaging.so
7efde9326000-7efde933f000 r-xp 00000000 08:05 5234751                    /home/joel/anaconda2/lib/python2.7/site-packages/scipy/integrate/lsoda.so
7efde933f000-7efde953f000 ---p 00019000 08:05 5234751                    /home/joel/anaconda2/lib/python2.7/site-packages/scipy/integrate/lsoda.so
7efde953f000-7efde9541000 rw-p 00019000 08:05 5234751                    /home/joel/anaconda2/lib/python2.7/site-packages/scipy/integrate/lsoda.so
7efde9541000-7efde9551000 r-xp 00000000 08:05 5234744                    /home/joel/anaconda2/lib/python2.7/site-packages/scipy/integrate/_dop.so
7efde9551000-7efde9751000 ---p 00010000 08:05 5234744                    /home/joel/anaconda2/lib/python2.7/site-packages/scipy/integrate/_dop.so
7efde9751000-7efde9753000 rw-p 00010000 08:05 5234744                    /home/joel/anaconda2/lib/python2.7/site-packages/scipy/integrate/_dop.so
7efde9753000-7efde976f000 r-xp 00000000 08:05 5234773                    /home/joel/anaconda2/lib/python2.7/site-packages/scipy/integrate/vode.so
7efde976f000-7efde996f000 ---p 0001c000 08:05 5234773                    /home/joel/anaconda2/lib/python2.7/site-packages/scipy/integrate/vode.so
7efde996f000-7efde9971000 rw-p 0001c000 08:05 5234773                    /home/joel/anaconda2/lib/python2.7/site-packages/scipy/integrate/vode.so
7efde9971000-7efde99b2000 rw-p 00000000 00:00 0 
7efde99b2000-7efde99c6000 r-xp 00000000 08:05 5234748                    /home/joel/anaconda2/lib/python2.7/site-packages/scipy/integrate/_quadpack.so
7efde99c6000-7efde9bc6000 ---p 00014000 08:05 5234748                    /home/joel/anaconda2/lib/python2.7/site-packages/scipy/integrate/_quadpack.so
7efde9bc6000-7efde9bc7000 rw-p 00014000 08:05 5234748                    /home/joel/anaconda2/lib/python2.7/site-packages/scipy/integrate/_quadpack.so
7efde9bc7000-7efde9bdd000 r-xp 00000000 08:05 5234747                    /home/joel/anaconda2/lib/python2.7/site-packages/scipy/integrate/_odepack.so
7efde9bdd000-7efde9ddc000 ---p 00016000 08:05 5234747                    /home/joel/anaconda2/lib/python2.7/site-packages/scipy/integrate/_odepack.so
7efde9ddc000-7efde9ddd000 rw-p 00015000 08:05 5234747                    /home/joel/anaconda2/lib/python2.7/site-packages/scipy/integrate/_odepack.so
7efde9ddd000-7efde9dde000 rw-p 00000000 00:00 0 
7efde9dde000-7efde9dee000 r-xp 00000000 08:05 5235686                    /home/joel/anaconda2/lib/python2.7/site-packages/scipy/special/_ellip_harm_2.so
7efde9dee000-7efde9fee000 ---p 00010000 08:05 5235686                    /home/joel/anaconda2/lib/python2.7/site-packages/scipy/special/_ellip_harm_2.so
7efde9fee000-7efde9ff0000 rw-p 00010000 08:05 5235686                    /home/joel/anaconda2/lib/python2.7/site-packages/scipy/special/_ellip_harm_2.so
7efde9ff0000-7efdea058000 r-xp 00000000 08:05 5235703                    /home/joel/anaconda2/lib/python2.7/site-packages/scipy/special/specfun.so
7efdea058000-7efdea258000 ---p 00068000 08:05 5235703                    /home/joel/anaconda2/lib/python2.7/site-packages/scipy/special/specfun.so
7efdea258000-7efdea260000 rw-p 00068000 08:05 5235703                    /home/joel/anaconda2/lib/python2.7/site-packages/scipy/special/specfun.so
7efdea260000-7efdea275000 r-xp 00000000 08:05 5235690                    /home/joel/anaconda2/lib/python2.7/site-packages/scipy/special/_ufuncs_cxx.so
7efdea275000-7efdea474000 ---p 00015000 08:05 5235690                    /home/joel/anaconda2/lib/python2.7/site-packages/scipy/special/_ufuncs_cxx.so
7efdea474000-7efdea476000 rw-p 00014000 08:05 5235690                    /home/joel/anaconda2/lib/python2.7/site-packages/scipy/special/_ufuncs_cxx.so
7efdea476000-7efdea564000 r-xp 00000000 08:05 5235689                    /home/joel/anaconda2/lib/python2.7/site-packages/scipy/special/_ufuncs.so
7efdea564000-7efdea763000 ---p 000ee000 08:05 5235689                    /home/joel/anaconda2/lib/python2.7/site-packages/scipy/special/_ufuncs.so
7efdea763000-7efdea778000 rw-p 000ed000 08:05 5235689                    /home/joel/anaconda2/lib/python2.7/site-packages/scipy/special/_ufuncs.so
7efdea778000-7efdea7bf000 rw-p 00000000 00:00 0 
7efdea7bf000-7efdea828000 r-xp 00000000 08:05 5235535                    /home/joel/anaconda2/lib/python2.7/site-packages/scipy/sparse/linalg/eigen/arpack/_arpack.so
7efdea828000-7efdeaa28000 ---p 00069000 08:05 5235535                    /home/joel/anaconda2/lib/python2.7/site-packages/scipy/sparse/linalg/eigen/arpack/_arpack.so
7efdeaa28000-7efdeaa34000 rw-p 00069000 08:05 5235535                    /home/joel/anaconda2/lib/python2.7/site-packages/scipy/sparse/linalg/eigen/arpack/_arpack.so
7efdeaa34000-7efdeaa8b000 r-xp 00000000 08:05 5235521                    /home/joel/anaconda2/lib/python2.7/site-packages/scipy/sparse/linalg/dsolve/_superlu.so
7efdeaa8b000-7efdeac8b000 ---p 00057000 08:05 5235521                    /home/joel/anaconda2/lib/python2.7/site-packages/scipy/sparse/linalg/dsolve/_superlu.so
7efdeac8b000-7efdeac8d000 rw-p 00057000 08:05 5235521                    /home/joel/anaconda2/lib/python2.7/site-packages/scipy/sparse/linalg/dsolve/_superlu.so
7efdeac8d000-7efdeaccd000 rw-p 00000000 00:00 0 
7efdeaccd000-7efdeacfe000 r-xp 00000000 08:05 5235560                    /home/joel/anaconda2/lib/python2.7/site-packages/scipy/sparse/linalg/isolve/_iterative.so
7efdeacfe000-7efdeaefe000 ---p 00031000 08:05 5235560                    /home/joel/anaconda2/lib/python2.7/site-packages/scipy/sparse/linalg/isolve/_iterative.so
7efdeaefe000-7efdeaf06000 rw-p 00031000 08:05 5235560                    /home/joel/anaconda2/lib/python2.7/site-packages/scipy/sparse/linalg/isolve/_iterative.so
7efdeaf06000-7efdeaf07000 rw-p 00000000 00:00 0 
7efdeaf07000-7efdeaf48000 r-xp 00000000 08:05 5235468                    /home/joel/anaconda2/lib/python2.7/site-packages/scipy/sparse/csgraph/_reordering.so
7efdeaf48000-7efdeb147000 ---p 00041000 08:05 5235468                    /home/joel/anaconda2/lib/python2.7/site-packages/scipy/sparse/csgraph/_reordering.so
7efdeb147000-7efdeb14c000 rw-p 00040000 08:05 5235468                    /home/joel/anaconda2/lib/python2.7/site-packages/scipy/sparse/csgraph/_reordering.so
7efdeb14c000-7efdeb14d000 rw-p 00000000 00:00 0 
7efdeb14d000-7efdeb15d000 r-xp 00000000 08:05 5235467                    /home/joel/anaconda2/lib/python2.7/site-packages/scipy/sparse/csgraph/_min_spanning_tree.so
7efdeb15d000-7efdeb35c000 ---p 00010000 08:05 5235467                    /home/joel/anaconda2/lib/python2.7/site-packages/scipy/sparse/csgraph/_min_spanning_tree.so
7efdeb35c000-7efdeb35f000 rw-p 0000f000 08:05 5235467                    /home/joel/anaconda2/lib/python2.7/site-packages/scipy/sparse/csgraph/_min_spanning_tree.so
7efdeb35f000-7efdeb37a000 r-xp 00000000 08:05 5235471                    /home/joel/anaconda2/lib/python2.7/site-packages/scipy/sparse/csgraph/_traversal.so
7efdeb37a000-7efdeb57a000 ---p 0001b000 08:05 5235471                    /home/joel/anaconda2/lib/python2.7/site-packages/scipy/sparse/csgraph/_traversal.so
7efdeb57a000-7efdeb580000 rw-p 0001b000 08:05 5235471                    /home/joel/anaconda2/lib/python2.7/site-packages/scipy/sparse/csgraph/_traversal.so
7efdeb580000-7efdeb59e000 r-xp 00000000 08:05 5235470                    /home/joel/anaconda2/lib/python2.7/site-packages/scipy/sparse/csgraph/_tools.so
7efdeb59e000-7efdeb79e000 ---p 0001e000 08:05 5235470                    /home/joel/anaconda2/lib/python2.7/site-packages/scipy/sparse/csgraph/_tools.so
7efdeb79e000-7efdeb7a3000 rw-p 0001e000 08:05 5235470                    /home/joel/anaconda2/lib/python2.7/site-packages/scipy/sparse/csgraph/_tools.so
7efdeb7a3000-7efdeb7d9000 r-xp 00000000 08:05 5235469                    /home/joel/anaconda2/lib/python2.7/site-packages/scipy/sparse/csgraph/_shortest_path.so
7efdeb7d9000-7efdeb9d8000 ---p 00036000 08:05 5235469                    /home/joel/anaconda2/lib/python2.7/site-packages/scipy/sparse/csgraph/_shortest_path.so
7efdeb9d8000-7efdeb9df000 rw-p 00035000 08:05 5235469                    /home/joel/anaconda2/lib/python2.7/site-packages/scipy/sparse/csgraph/_shortest_path.so
7efdeb9df000-7efdeba3e000 r-xp 00000000 08:05 5235446                    /home/joel/anaconda2/lib/python2.7/site-packages/scipy/sparse/_csparsetools.so
7efdeba3e000-7efdebc3e000 ---p 0005f000 08:05 5235446                    /home/joel/anaconda2/lib/python2.7/site-packages/scipy/sparse/_csparsetools.so
7efdebc3e000-7efdebc44000 rw-p 0005f000 08:05 5235446                    /home/joel/anaconda2/lib/python2.7/site-packages/scipy/sparse/_csparsetools.so
7efdebc44000-7efdebc84000 rw-p 00000000 00:00 0 
7efdebc84000-7efdec027000 r-xp 00000000 08:05 5235447                    /home/joel/anaconda2/lib/python2.7/site-packages/scipy/sparse/_sparsetools.so
7efdec027000-7efdec226000 ---p 003a3000 08:05 5235447                    /home/joel/anaconda2/lib/python2.7/site-packages/scipy/sparse/_sparsetools.so
7efdec226000-7efdec22d000 rw-p 003a2000 08:05 5235447                    /home/joel/anaconda2/lib/python2.7/site-packages/scipy/sparse/_sparsetools.so
7efdec22d000-7efdec26d000 rw-p 00000000 00:00 0 
7efdec26d000-7efdec2f6000 r-xp 00000000 08:05 5235142                    /home/joel/anaconda2/lib/python2.7/site-packages/scipy/linalg/cython_lapack.so
7efdec2f6000-7efdec4f5000 ---p 00089000 08:05 5235142                    /home/joel/anaconda2/lib/python2.7/site-packages/scipy/linalg/cython_lapack.so
7efdec4f5000-7efdec4fc000 rw-p 00088000 08:05 5235142                    /home/joel/anaconda2/lib/python2.7/site-packages/scipy/linalg/cython_lapack.so
7efdec4fc000-7efdec52f000 r-xp 00000000 08:05 5235140                    /home/joel/anaconda2/lib/python2.7/site-packages/scipy/linalg/cython_blas.so
7efdec52f000-7efdec72f000 ---p 00033000 08:05 5235140                    /home/joel/anaconda2/lib/python2.7/site-packages/scipy/linalg/cython_blas.so[I 16:07:16.375 NotebookApp] KernelRestarter: restarting kernel 
(1/5)
WARNING:root:kernel f70d75f2-a6c3-46fc-b3d4-c362ba624be5 restarted

Any ideas of what could be the cause?

Add information on requirements for osm example

The package castra is not mentioned in the README.md.

I tried conda install -c https://conda.anaconda.org/calex castra (the only copy of castra for py34 on osx-64 on anaconda) but I got the error:

    TypeError                                 Traceback (most recent call last)
----> 1 df = dd.from_castra('data/osm.castra')
      2 df.tail()

/Users/caged/miniconda3/envs/datashader/lib/python3.4/site-packages/dask/dataframe/io.py in from_castra(x, columns)
    567     from castra import Castra
    568     if not isinstance(x, Castra):
--> 569         x = Castra(x, readonly=True)
    570     return x.to_dask(columns)
    571 

TypeError: __init__() got an unexpected keyword argument 'readonly'

Javascript Error on InteractiveImage

Hi,
I'm just starting to play around with datashader following one of your notebooks from the webinar and am getting the error below. My dataframe has about 10 mil points, floating point, no nans. This is run in a notebook as in the webinar. I'm running 2.7, datashader-0.1.0, bokeh-0.11.1, MacOSX. Many thanks! Evan

p = figure(
x_range=(0, 1),
y_range=(0, 1),
tools='pan,wheel_zoom,box_zoom,reset',
plot_width=500,
plot_height=500,
)
pipeline = ds.Pipeline(df, ds.Point("s3", "modscag"))
InteractiveImage(p, pipeline)

TypeError: Cannot read property '$' of undefined
at Array.inline_js (eval at (http://localhost:8889/static/notebook/js/main.min.js?v=40e10638fcf65fc1c057bff31d165e9d:89:4231), :54:14)
at run_inline_js (eval at (http://localhost:8889/static/notebook/js/main.min.js?v=40e10638fcf65fc1c057bff31d165e9d:89:4231), :67:21)
at eval (eval at (http://localhost:8889/static/notebook/js/main.min.js?v=40e10638fcf65fc1c057bff31d165e9d:89:4231), :77:9)
at eval (eval at (http://localhost:8889/static/notebook/js/main.min.js?v=40e10638fcf65fc1c057bff31d165e9d:89:4231), :11:67)
at Array.forEach (native)
at run_callbacks (eval at (http://localhost:8889/static/notebook/js/main.min.js?v=40e10638fcf65fc1c057bff31d165e9d:89:4231), :11:38)
at load_libs (eval at (http://localhost:8889/static/notebook/js/main.min.js?v=40e10638fcf65fc1c057bff31d165e9d:89:4231), :23:9)
at eval (eval at (http://localhost:8889/static/notebook/js/main.min.js?v=40e10638fcf65fc1c057bff31d165e9d:89:4231), :77:7)
at eval (eval at (http://localhost:8889/static/notebook/js/main.min.js?v=40e10638fcf65fc1c057bff31d165e9d:89:4231), :82:4)
at eval (native)

HTTP request sent; waiting for response.

I have executed

python dashboard/dashboard.py --config dashboard/nyc_taxi.yml

to see the example, but it does not return anything. Well... yes, this and only this:

HTTP request sent; waiting for response

There's nothing in localhost:5000.

Add Census example

The examples directory should have something demonstrating categorical data, and the 2010 Census data illustrates that nicely. We'll need to add dynamic point sizing for it to work at high zoom levels, first...

Box select support

Once there is hover-tool support (issue #91), it would be great if we could support a box-select tool as well, providing essentially the same information as hovering but for a bounding box specified by the user interactively. Adding such support seems relatively straightforward once the hover tool support is in place, but it requires a dynamic query rather than static information provided when the plot is created. Even so, the data can presumably be computed directly from the static information already provided, and so it should not require re-running any of the stages of the datashader pipeline.

Lasso-tool support may make sense as well, again just as a selection of the existing aggregate bins.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.