Beispiel #1
0
class _Element(Element2D):
    """
    Baseclass for Element2D types with associated cartopy
    coordinate reference system.
    """

    _abstract = True

    crs = param.ClassSelector(default=ccrs.PlateCarree(),
                              class_=ccrs.CRS,
                              doc="""
        Cartopy coordinate-reference-system specifying the
        coordinate system of the data. Inferred automatically
        when _Element wraps cartopy Feature object.""")

    kdims = param.List(default=[Dimension('Longitude'),
                                Dimension('Latitude')],
                       bounds=(2, 2),
                       constant=True)

    def __init__(self, data, kdims=None, vdims=None, **kwargs):
        crs = None
        if isinstance(data, HvDataset):
            crs_data = data.data
        else:
            crs_data = data
        if Cube and isinstance(crs_data, Cube):
            coord_sys = crs_data.coord_system()
            if hasattr(coord_sys, 'as_cartopy_projection'):
                crs = coord_sys.as_cartopy_projection()
        elif isinstance(crs_data, (cFeature, GoogleTiles)):
            crs = crs_data.crs

        supplied_crs = kwargs.get('crs', None)
        if supplied_crs and crs and crs != supplied_crs:
            raise ValueError('Supplied coordinate reference '
                             'system must match crs of the data.')
        elif crs:
            kwargs['crs'] = crs
        elif isinstance(data, _Element):
            kwargs['crs'] = data.crs
        super(_Element, self).__init__(data,
                                       kdims=kdims,
                                       vdims=vdims,
                                       **kwargs)

    def clone(self,
              data=None,
              shared_data=True,
              new_type=None,
              *args,
              **overrides):
        if 'crs' not in overrides and (not new_type
                                       or isinstance(new_type, _Element)):
            overrides['crs'] = self.crs
        return super(_Element, self).clone(data, shared_data, new_type, *args,
                                           **overrides)
Beispiel #2
0
class Dataset(_Element, HvDataset):
    """
    Coordinate system aware version of a HoloViews dataset.
    """

    kdims = param.List(default=[Dimension('Longitude'),
                                Dimension('Latitude')],
                       constant=True)

    group = param.String(default='Dataset')
Beispiel #3
0
 def test_hex_tiles_count_aggregation(self):
     tiles = HexTiles([(0, 0), (0.5, 0.5), (-0.5, -0.5), (-0.4, -0.4)])
     binned = hex_binning(tiles, gridsize=3)
     expected = HexTiles([(0, 0, 1), (2, -1, 1), (-2, 1, 2)],
                         kdims=[
                             Dimension('x', range=(-0.5, 0.5)),
                             Dimension('y', range=(-0.5, 0.5))
                         ],
                         vdims='Count')
     self.assertEqual(binned, expected)
Beispiel #4
0
class VectorField(_Element, HvVectorField):
    """
    A VectorField contains is a collection of vectors where each
    vector has an associated position. The vectors should be specified
    by defining an angle in radians and a magnitude.
    """

    group = param.String(default='VectorField', constant=True)

    vdims = param.List(default=[Dimension('Angle', cyclic=True, range=(0,2*np.pi)),
                                Dimension('Magnitude')], bounds=(1, None))
Beispiel #5
0
 def test_bokeh_server_dynamic_range_not_editable(self):
     dim = Dimension('x', range=(3.1, 11.2))
     widget, label, mapping = BokehServerWidgets.create_widget(dim, editable=False)
     self.assertIsInstance(widget, Slider)
     self.assertEqual(widget.value, 3.1)
     self.assertEqual(widget.start, 3.1)
     self.assertEqual(widget.end, 11.2)
     self.assertEqual(widget.step, 0.01)
     self.assertIsInstance(label, Div)
     self.assertEqual(label.text, '<b>%s</b>' % dim.pprint_value_string(3.1))
     self.assertIs(mapping, None)
Beispiel #6
0
 def test_dynamic_values_partial_overlap(self):
     kdims = [
         Dimension('File', range=(0.01, 1)),
         Dimension('SliceDimension', values=['x', 'y', 'z']),
         Dimension('Coordinates', range=(0.01, 1))
     ]
     dmap1 = DynamicMap(lambda x, y, z: Image(np.random.rand(10, 10)),
                        kdims=kdims)
     dmap2 = DynamicMap(lambda x: Curve(np.random.rand(10, 2)) * VLine(x),
                        kdims=kdims[:1])
     mpl_renderer.get_widget(dmap1 + dmap2, 'selection')
Beispiel #7
0
class Image(_Element, Dataset):
    """
    Image represents a 2D array of some quantity with
    some associated coordinates.
    """

    kdims = param.List(default=[Dimension('x'), Dimension('y')])

    vdims = param.List(default=[Dimension('z')], bounds=(1, 1))

    group = param.String(default='Image')
Beispiel #8
0
 def test_bokeh_server_dynamic_range_not_editable(self):
     dim = Dimension('x', range=(3.1, 11.2))
     widget, label, mapping = BokehServerWidgets.create_widget(dim, editable=False)
     self.assertIsInstance(widget, Slider)
     self.assertEqual(widget.value, 3.1)
     self.assertEqual(widget.start, 3.1)
     self.assertEqual(widget.end, 11.2)
     self.assertEqual(widget.step, 0.01)
     self.assertIsInstance(label, Div)
     self.assertEqual(label.text, '<b>%s</b>' % dim.pprint_value_string(3.1))
     self.assertIs(mapping, None)
Beispiel #9
0
class Nodes(_Element, HvNodes):
    """
    Nodes is a simple Element representing Graph nodes as a set of
    Points.  Unlike regular Points, Nodes must define a third key
    dimension corresponding to the node index.
    """

    group = param.String(default='Nodes', constant=True)

    kdims = param.List(default=[Dimension('Longitude'), Dimension('Latitude'),
                                Dimension('index')], bounds=(3, 3))
Beispiel #10
0
class Contours(_Element, Dataset):
    """
    Contours represents a 2D array of some quantity with
    some associated coordinates, which may be discretized
    into one or more contours.
    """

    kdims = param.List(default=[Dimension('x'), Dimension('y')])

    vdims = param.List(default=[Dimension('z')], bounds=(1, 1))

    group = param.String(default='Contours')
Beispiel #11
0
 def test_hex_tiles_sum_value_aggregation(self):
     tiles = HexTiles([(0, 0, 1), (0.5, 0.5, 2), (-0.5, -0.5, 3),
                       (-0.4, -0.4, 4)],
                      vdims='z')
     binned = hex_binning(tiles, gridsize=3, aggregator=np.sum)
     expected = HexTiles([(0, 0, 1), (2, -1, 2), (-2, 1, 7)],
                         kdims=[
                             Dimension('x', range=(-0.5, 0.5)),
                             Dimension('y', range=(-0.5, 0.5))
                         ],
                         vdims='z')
     self.assertEqual(binned, expected)
Beispiel #12
0
 def test_bokeh_server_dynamic_values_float_not_editable(self):
     values = list(np.linspace(3.1, 11.2, 7))
     dim = Dimension('x', values=values)
     widget, label, mapping = BokehServerWidgets.create_widget(dim, editable=False)
     self.assertIsInstance(widget, Slider)
     self.assertEqual(widget.value, 0)
     self.assertEqual(widget.start, 0)
     self.assertEqual(widget.end, 6)
     self.assertEqual(widget.step, 1)
     self.assertIsInstance(label, Div)
     self.assertEqual(label.text, '<b>%s</b>' % dim.pprint_value_string(3.1))
     self.assertEqual(mapping, [(i, (v, dim.pprint_value(v))) for i, v in enumerate(values)])
Beispiel #13
0
 def test_bokeh_server_dynamic_values_float_not_editable(self):
     values = list(np.linspace(3.1, 11.2, 7))
     dim = Dimension('x', values=values)
     widget, label, mapping = BokehServerWidgets.create_widget(dim, editable=False)
     self.assertIsInstance(widget, Slider)
     self.assertEqual(widget.value, 0)
     self.assertEqual(widget.start, 0)
     self.assertEqual(widget.end, 6)
     self.assertEqual(widget.step, 1)
     self.assertIsInstance(label, Div)
     self.assertEqual(label.text, '<b>%s</b>' % dim.pprint_value_string(3.1))
     self.assertEqual(mapping, [(i, (v, dim.pprint_value(v))) for i, v in enumerate(values)])
 def test_bokeh_server_dynamic_values_float_editable(self):
     values = list(np.linspace(3.1, 11.2, 7))
     dim = Dimension('x', values=values)
     widget, label, mapping = BokehServerWidgets.create_widget(dim, editable=True)
     self.assertIsInstance(widget, Slider)
     self.assertEqual(widget.value, 0)
     self.assertEqual(widget.start, 0)
     self.assertEqual(widget.end, 6)
     self.assertEqual(widget.step, 1)
     self.assertIsInstance(label, AutocompleteInput)
     self.assertEqual(label.title, dim.pprint_label)
     self.assertEqual(label.value, '3.1')
     self.assertEqual(mapping, [(v, dim.pprint_value(v)) for v in values])
Beispiel #15
0
 def test_bokeh_server_dynamic_values_float_editable(self):
     values = list(np.linspace(3.1, 11.2, 7))
     dim = Dimension('x', values=values)
     widget, label, mapping = BokehServerWidgets.create_widget(dim, editable=True)
     self.assertIsInstance(widget, Slider)
     self.assertEqual(widget.value, 0)
     self.assertEqual(widget.start, 0)
     self.assertEqual(widget.end, 6)
     self.assertEqual(widget.step, 1)
     self.assertIsInstance(label, AutocompleteInput)
     self.assertEqual(label.title, dim.pprint_label)
     self.assertEqual(label.value, '3.1')
     self.assertEqual(mapping, [(v, dim.pprint_value(v)) for v in values])
Beispiel #16
0
 def test_bokeh_server_dynamic_values_int(self):
     values = list(range(3, 11))
     dim = Dimension('x', values=values)
     widget, label, mapping = BokehServerWidgets.create_widget(dim, editable=True)
     self.assertIsInstance(widget, Slider)
     self.assertEqual(widget.value, 0)
     self.assertEqual(widget.start, 0)
     self.assertEqual(widget.end, 7)
     self.assertEqual(widget.step, 1)
     self.assertIsInstance(label, AutocompleteInput)
     self.assertEqual(label.title, dim.pprint_label)
     self.assertEqual(label.value, '3')
     self.assertEqual(mapping, [(i, (v, dim.pprint_value(v))) for i, v in enumerate(values)])
Beispiel #17
0
 def test_bokeh_server_static_numeric_values(self):
     dim = Dimension('x')
     ndmap = NdMapping({i: None for i in range(3, 12)}, kdims=['x'])
     widget, label, mapping = BokehServerWidgets.create_widget(dim, ndmap, editable=True)
     self.assertIsInstance(widget, Slider)
     self.assertEqual(widget.value, 0)
     self.assertEqual(widget.start, 0)
     self.assertEqual(widget.end, 8)
     self.assertEqual(widget.step, 1)
     self.assertIsInstance(label, AutocompleteInput)
     self.assertEqual(label.title, dim.pprint_label)
     self.assertEqual(label.value, '3')
     self.assertEqual(mapping, [(i, (k, dim.pprint_value(k))) for i, k in enumerate(ndmap.keys())])
Beispiel #18
0
 def test_bokeh_server_static_numeric_values(self):
     dim = Dimension('x')
     ndmap = NdMapping({i: None for i in range(3, 12)}, kdims=['x'])
     widget, label, mapping = BokehServerWidgets.create_widget(dim, ndmap, editable=True)
     self.assertIsInstance(widget, Slider)
     self.assertEqual(widget.value, 0)
     self.assertEqual(widget.start, 0)
     self.assertEqual(widget.end, 8)
     self.assertEqual(widget.step, 1)
     self.assertIsInstance(label, AutocompleteInput)
     self.assertEqual(label.title, dim.pprint_label)
     self.assertEqual(label.value, '3')
     self.assertEqual(mapping, [(i, (k, dim.pprint_value(k))) for i, k in enumerate(ndmap.keys())])
Beispiel #19
0
 def test_bokeh_server_dynamic_values_int(self):
     values = list(range(3, 11))
     dim = Dimension('x', values=values)
     widget, label, mapping = BokehServerWidgets.create_widget(dim, editable=True)
     self.assertIsInstance(widget, Slider)
     self.assertEqual(widget.value, 0)
     self.assertEqual(widget.start, 0)
     self.assertEqual(widget.end, 7)
     self.assertEqual(widget.step, 1)
     self.assertIsInstance(label, AutocompleteInput)
     self.assertEqual(label.title, dim.pprint_label)
     self.assertEqual(label.value, '3')
     self.assertEqual(mapping, [(i, (v, dim.pprint_value(v))) for i, v in enumerate(values)])
 def setUp(self):
     super(DimensionsComparisonTestCase, self).setUp()
     self.dimension1 = Dimension('dim1', range=(0, 1))
     self.dimension2 = Dimension('dim2', range=(0, 1))
     self.dimension3 = Dimension('dim1', range=(0, 2))
     self.dimension4 = Dimension('dim1')
     self.dimension5 = Dimension('dim1', cyclic=True)
     self.dimension6 = Dimension('dim1', cyclic=True, range=(0, 1))
     self.dimension7 = Dimension('dim1',
                                 cyclic=True,
                                 range=(0, 1),
                                 unit='ms')
     self.dimension8 = Dimension('dim1', values=['a', 'b'])
     self.dimension9 = Dimension('dim1', type=int)
     self.dimension10 = Dimension('dim1', type=float)
Beispiel #21
0
    def test_holomap_slider_and_dropdown(self):
        hmap = HoloMap({(i, chr(65 + i)): Curve([1, 2, 3])
                        for i in range(10)}, ['X', 'Y'])
        widgets = bokeh_renderer.get_widget(hmap, 'widgets')
        widgets, dimensions, init_dim_vals = widgets.get_widgets()
        self.assertEqual(len(widgets), 2)

        slider = widgets[0]
        self.assertEqual(slider['type'], 'slider')
        self.assertEqual(slider['dim'], 'X')
        self.assertEqual(slider['dim_idx'], 0)
        self.assertEqual(slider['vals'],
                         repr([repr(float(v)) for v in range(10)]))
        self.assertEqual(slider['labels'], repr([str(v) for v in range(10)]))
        self.assertEqual(slider['step'], 1)
        self.assertEqual(slider['default'], 0)
        self.assertEqual(slider['next_dim'], Dimension('Y'))
        self.assertEqual(eval(slider['next_vals']),
                         {str(float(i)): [chr(65 + i)]
                          for i in range(10)})

        dropdown = widgets[1]
        self.assertEqual(dropdown['type'], 'dropdown')
        self.assertEqual(dropdown['dim'], 'Y')
        self.assertEqual(dropdown['dim_idx'], 1)
        self.assertEqual(dropdown['vals'],
                         repr([chr(65 + v) for v in range(10)]))
        self.assertEqual(dropdown['labels'],
                         repr([chr(65 + v) for v in range(10)]))
        self.assertEqual(dropdown['step'], 1)
        self.assertEqual(dropdown['default'], 0)
        self.assertIs(dropdown['next_dim'], None)

        self.assertEqual(dimensions, ['X', 'Y'])
        self.assertEqual(init_dim_vals, repr(['0.0', 'A']))
Beispiel #22
0
 def test_dynamicmap_range_default(self):
     dimension = Dimension('X', range=(0., 5.), default=0.05)
     hmap = DynamicMap(lambda x: Curve([1, 2, 3]), kdims=[dimension])
     widgets = bokeh_renderer.get_widget(hmap, 'widgets')
     widgets, dimensions, init_dim_vals = widgets.get_widgets()
     self.assertEqual(widgets[0]['default'], 0.05)
     self.assertEqual(init_dim_vals, '[0.050000000]')
Beispiel #23
0
class Image(_Element, HvImage):
    """
    Image represents a 2D array of some quantity with
    some associated coordinates.
    """

    vdims = param.List(default=[Dimension('z')], bounds=(1, None))

    group = param.String(default='Image')

    @classmethod
    def load_tiff(cls,
                  filename,
                  crs=None,
                  apply_transform=False,
                  nan_nodata=False,
                  **kwargs):
        return load_tiff(filename, crs, apply_transform, **kwargs)

    @classmethod
    def from_xarray(cls,
                    da,
                    crs=None,
                    apply_transform=False,
                    nan_nodata=False,
                    **kwargs):
        return from_xarray(da, crs, apply_transform, **kwargs)
Beispiel #24
0
 def test_hex_tiles_hover_weighted(self):
     tiles = HexTiles([(0, 0, 0.1), (0.5, 0.5, 0.2), (-0.5, -0.5, 0.3)],
                      vdims='z').options(aggregator=np.mean)
     plot = list(bokeh_renderer.get_plot(tiles).subplots.values())[0]
     dims, opts = plot._hover_opts(tiles)
     self.assertEqual(dims, [Dimension('z')])
     self.assertEqual(opts, {})
Beispiel #25
0
 def test_dynamicmap_unsorted_numeric_values_slider_plot_update(self):
     dims = [Dimension('N', values=[10, 5, 0])]
     dmap = DynamicMap(lambda N: Curve([1, N, 5]), kdims=dims)
     widgets = bokeh_renderer.get_widget(dmap, 'widgets')
     widgets.get_widgets()
     widgets.update((2,))
     self.assertEqual(widgets.plot.current_key, (10,))
Beispiel #26
0
 def test_holomap_dropdown_default(self):
     dim = Dimension('X', default='C')
     hmap = HoloMap({chr(65 + i): Curve([1, 2, 3]) for i in range(10)}, dim)
     widgets = bokeh_renderer.get_widget(hmap, 'widgets')
     widgets, dimensions, init_dim_vals = widgets.get_widgets()
     self.assertEqual(widgets[0]['default'], '2')
     self.assertEqual(init_dim_vals, "['C']")
Beispiel #27
0
 def test_hex_tiles_hover_count(self):
     tiles = HexTiles([(0, 0), (0.5, 0.5), (-0.5, -0.5),
                       (-0.4, -0.4)]).options(tools=['hover'])
     plot = list(bokeh_renderer.get_plot(tiles).subplots.values())[0]
     dims, opts = plot._hover_opts(tiles)
     self.assertEqual(dims, [Dimension('Count')])
     self.assertEqual(opts, {})
Beispiel #28
0
 def test_holomap_slider_default(self):
     dim = Dimension('X', default=3)
     hmap = HoloMap({i: Curve([1, 2, 3]) for i in range(1, 9)}, dim)
     widgets = bokeh_renderer.get_widget(hmap, 'widgets')
     widgets, dimensions, init_dim_vals = widgets.get_widgets()
     self.assertEqual(widgets[0]['default'], '2')
     self.assertEqual(init_dim_vals, "['3.0']")
Beispiel #29
0
class QuadMesh(_Element, HvQuadMesh):
    """
    QuadMesh is a Raster type to hold x- and y- bin values
    with associated values. The x- and y-values of the QuadMesh
    may be supplied either as the edges of each bin allowing
    uneven sampling or as the bin centers, which will be converted
    to evenly sampled edges.

    As a secondary but less supported mode QuadMesh can contain
    a mesh of quadrilateral coordinates that is not laid out in
    a grid. The data should then be supplied as three separate
    2D arrays for the x-/y-coordinates and grid values.
    """

    datatype = param.List(default=['grid', 'xarray'])

    vdims = param.List(default=[Dimension('z')], bounds=(1, 1))

    group = param.String(default='QuadMesh')

    _binned = True

    def trimesh(self):
        trimesh = super(QuadMesh, self).trimesh()
        node_params = get_param_values(trimesh.nodes)
        nodes = TriMesh.node_type(trimesh.nodes.data, **node_params)
        return TriMesh((trimesh.data, nodes),
                       crs=self.crs,
                       **get_param_values(trimesh))
Beispiel #30
0
    def test_element_formatter_xaxis(self):
        def formatter(x):
            return '%s' % x

        curve = Curve(range(10),
                      kdims=[Dimension('x', value_format=formatter)])
        plot = bokeh_renderer.get_plot(curve).state
        self.assertIsInstance(plot.xaxis[0].formatter, FuncTickFormatter)
    def test_dimension_call(self):
        dim1 = Dimension('Test dimension')
        dim2 = dim1(cyclic=True)
        self.assertEqual(dim2.cyclic,True)

        dim3 = dim1('New test dimension', unit='scovilles')
        self.assertEqual(dim3.name, 'New test dimension')
        self.assertEqual(dim3.unit, 'scovilles')
Beispiel #32
0
 def test_dynamicmap_values_default(self):
     values = [chr(65 + i) for i in range(10)]
     dimension = Dimension('X', values=values, default='C')
     hmap = DynamicMap(lambda x: Curve([1, 2, 3]), kdims=[dimension])
     widgets = bokeh_renderer.get_widget(hmap, 'widgets')
     widgets, dimensions, init_dim_vals = widgets.get_widgets()
     self.assertEqual(widgets[0]['default'], '2')
     self.assertEqual(init_dim_vals, repr(['2']))
Beispiel #33
0
 def __init__(self, data, kdims=None, vdims=None, **params):
     if params.get('level') is not None:
         if vdims is None:
             vdims = [Dimension('Level')]
         self.warning('Supplying a level to a Shape is deprecated '
                      'provide the value as part of a dictionary of '
                      'the form {\'geometry\': <shapely.Geometry>, '
                      '\'level\': %s} instead' % params['level'])
     super(Shape, self).__init__(data, kdims=kdims, vdims=vdims, **params)
    def setUp(self):
        super(RasterMapTestCase, self).setUp()
        # Example 1D map
        self.map1_1D = HoloMap(key_dimensions=['int'])
        self.map1_1D[0] = self.mat1
        self.map1_1D[1] = self.mat2
        # Changed keys...
        self.map2_1D = HoloMap(key_dimensions=['int'])
        self.map2_1D[1] = self.mat1
        self.map2_1D[2] = self.mat2
        # Changed number of keys...
        self.map3_1D = HoloMap(key_dimensions=['int'])
        self.map3_1D[1] = self.mat1
        self.map3_1D[2] = self.mat2
        self.map3_1D[3] = self.mat3
        # Changed values...
        self.map4_1D = HoloMap(key_dimensions=['int'])
        self.map4_1D[0] = self.mat1
        self.map4_1D[1] = self.mat3
        # Changed bounds...
        self.map5_1D = HoloMap(key_dimensions=['int'])
        self.map5_1D[0] = self.mat4
        self.map5_1D[1] = self.mat5
        # Example dimension label
        self.map6_1D = HoloMap(key_dimensions=['int_v2'])
        self.map6_1D[0] = self.mat1
        self.map6_1D[1] = self.mat2
        # A HoloMap of Overlays
        self.map7_1D = HoloMap(key_dimensions=['int'])
        self.map7_1D[0] =  self.overlay1_depth2
        self.map7_1D[1] =  self.overlay2_depth2
        # A different HoloMap of Overlays
        self.map8_1D = HoloMap(key_dimensions=['int'])
        self.map8_1D[0] =  self.overlay2_depth2
        self.map8_1D[1] =  self.overlay1_depth2

        # Example 2D map
        self.map1_2D = HoloMap(key_dimensions=['int', Dimension('float')])
        self.map1_2D[0, 0.5] = self.mat1
        self.map1_2D[1, 1.0] = self.mat2
        # Changed 2D keys...
        self.map2_2D = HoloMap(key_dimensions=['int', Dimension('float')])
        self.map2_2D[0, 1.0] = self.mat1
        self.map2_2D[1, 1.5] = self.mat2
Beispiel #35
0
    def widgets_from_dimensions(cls, object, widget_types={}, widgets_type='individual'):
        from holoviews.core import Dimension
        from holoviews.core.util import isnumeric, unicode
        from holoviews.core.traversal import unique_dimkeys
        from .widgets import Widget, DiscreteSlider, Select, FloatSlider

        dims, keys = unique_dimkeys(object)
        if dims == [Dimension('Frame')] and keys == [(0,)]:
            return [], {}

        nframes = 1
        values = dict(zip(dims, zip(*keys)))
        dim_values = OrderedDict()
        widgets = []
        for dim in dims:
            widget_type, widget = None, None
            vals = dim.values or values.get(dim, None)
            dim_values[dim.name] = vals
            if widgets_type == 'scrubber':
                if not vals:
                    raise ValueError('Scrubber widget may only be used if all dimensions define values.')
                nframes *= len(vals)
            elif dim.name in widget_types:
                widget = widget_types[dim.name]
                if isinstance(widget, Widget):
                    widgets.append(widget)
                    continue
                elif isinstance(widget, type) and issubclass(widget, Widget):
                    widget_type = widget
                else:
                    raise ValueError('Explicit widget definitions expected '
                                     'to be a widget instance or type, %s '
                                     'dimension widget declared as %s.' % 
                                     (dim, widget))
            if vals:
                if all(isnumeric(v) for v in vals):
                    vals = sorted(vals)
                    labels = [unicode(dim.pprint_value(v)) for v in vals]
                    options = OrderedDict(zip(labels, vals))
                    widget_type = widget_type or DiscreteSlider
                else:
                    options = list(vals)
                    widget_type = widget_type or Select
                default = vals[0] if dim.default is None else dim.default
                widget = widget_type(name=dim.label, options=options, value=default)
            elif dim.range != (None, None):
                default = dim.range[0] if dim.default is None else dim.default
                step = 0.1 if dim.step is None else dim.step
                widget_type = widget_type or FloatSlider
                widget = widget_type(step=step, name=dim.label, start=dim.range[0],
                                     end=dim.range[1], value=default)
            if widget is not None:
                widgets.append(widget)
        if widgets_type == 'scrubber':
            widgets = [Player(length=nframes)]
        return widgets, dim_values
Beispiel #36
0
 def test_simple_values_clone(self):
     dim = Dimension('test', values=[1,2,3])
     self.assertEqual(dim.values, [1,2,3])
     clone = dim.clone(values=[4,5,6])
     self.assertEqual(clone.name, 'test')
     self.assertEqual(clone.values, [4,5,6])
Beispiel #37
0
 def test_tuple_clone(self):
     dim = Dimension('test')
     self.assertEqual(dim.name, 'test')
     clone = dim.clone(('test', 'A test'))
     self.assertEqual(clone.name, 'test')
     self.assertEqual(clone.label, 'A test')
Beispiel #38
0
 def test_simple_label_clone(self):
     dim = Dimension('test')
     self.assertEqual(dim.name, 'test')
     clone = dim.clone(label='label')
     self.assertEqual(clone.name, 'test')
     self.assertEqual(clone.label, 'label')
Beispiel #39
0
 def test_dimension_pprint(self):
     dim = Dimension('Test dimension', cyclic=True, type=float, unit='Twilight zones')
     self.assertEqual(dim.pprint_value_string(3.2345), 'Test dimension: 3.23 Twilight zones')
     self.assertEqual(dim.pprint_value_string(4.2344),  'Test dimension: 4.23 Twilight zones')
Beispiel #40
0
 def test_simple_clone(self):
     dim = Dimension('test')
     self.assertEqual(dim.name, 'test')
     self.assertEqual(dim.clone('bar').name, 'bar')