예제 #1
0
 def test_gridspace_overlay_element(self):
     items = [(0, self.view1), (1, self.view2), (2, self.view3), (3, self.view2)]
     grid = GridSpace(items, 'X')
     hline = HLine(0)
     overlaid_grid = grid * hline
     expected = GridSpace([(k, v*hline) for k, v in items], 'X')
     self.assertEqual(overlaid_grid, expected)
예제 #2
0
    def grid(self, rows=11, cols=11, lbrt=None, situated=False, **kwargs):
        xdensity, ydensity = self.dest.xdensity, self.dest.ydensity
        l, b, r, t = self.dest.bounds.lbrt()
        half_x_unit = ((r-l) / xdensity) / 2.
        half_y_unit = ((t-b) / ydensity) / 2.
        if lbrt is None:
            l, b, r, t = (l+half_x_unit, b+half_y_unit, r-half_x_unit, t-half_y_unit)
        else:
            l, b = self.dest.closest_cell_center(lbrt[0], lbrt[1])
            r, t = self.dest.closest_cell_center(lbrt[2], lbrt[3])
        x, y = np.meshgrid(np.linspace(l, r, cols),
                           np.linspace(b, t, rows))
        coords = zip(x.flat, y.flat)

        grid_items = {}
        for x, y in coords:
            grid_items[x, y] = self.view(x, y, situated=situated, **kwargs)

        grid = GridSpace(grid_items, label=' '.join([self.dest.name, self.name]),
                         group='CFs')
        grid.metadata = AttrDict(info=self.name,
                                 proj_src_name=self.src.name,
                                 proj_dest_name=self.dest.name,
                                 timestamp=self.src.simulation.time(),
                                 **kwargs)
        return grid
예제 #3
0
 def test_gridspace_overlay_reverse(self):
     items = [(0, self.view1), (1, self.view2), (2, self.view3), (3, self.view2)]
     grid = GridSpace(items, 'X')
     hline = HLine(0)
     overlaid_grid = hline * grid
     expected = GridSpace([(k, hline*v) for k, v in items], 'X')
     self.assertEqual(overlaid_grid, expected)
 def test_grid_index_one_axis(self):
     vals = [self.view1, self.view2, self.view3, self.view2]
     keys = [('A', 0), ('B', 1), ('C', 0), ('D', 1)]
     grid = GridSpace(zip(keys, vals))
     self.assertEqual(
         grid[:, 0],
         GridSpace([(('A', 0), self.view1), (('C', 0), self.view3)]))
예제 #5
0
    def grid(self, rows=11, cols=11, lbrt=None, situated=False, **kwargs):
        xdensity, ydensity = self.dest.xdensity, self.dest.ydensity
        l, b, r, t = self.dest.bounds.lbrt()
        half_x_unit = ((r - l) / xdensity) / 2.
        half_y_unit = ((t - b) / ydensity) / 2.
        if lbrt is None:
            l, b, r, t = (l + half_x_unit, b + half_y_unit, r - half_x_unit,
                          t - half_y_unit)
        else:
            l, b = self.dest.closest_cell_center(lbrt[0], lbrt[1])
            r, t = self.dest.closest_cell_center(lbrt[2], lbrt[3])
        x, y = np.meshgrid(np.linspace(l, r, cols), np.linspace(b, t, rows))
        coords = zip(x.flat, y.flat)

        grid_items = {}
        for x, y in coords:
            grid_items[x, y] = self.view(x, y, situated=situated, **kwargs)

        grid = GridSpace(grid_items,
                         label=' '.join([self.dest.name, self.name]),
                         group='CFs')
        grid.metadata = AttrDict(info=self.name,
                                 proj_src_name=self.src.name,
                                 proj_dest_name=self.dest.name,
                                 timestamp=self.src.simulation.time(),
                                 **kwargs)
        return grid
예제 #6
0
 def _cf_grid(self, shape=None, **kwargs):
     "Create GridSpace with the correct metadata."
     grid = GridSpace({})
     grid.metadata = AttrDict(timestamp=self.src.simulation.time(),
                              info=self.name,
                              proj_src_name=self.src.name,
                              proj_dest_name=self.dest.name,
                              **kwargs)
     return grid
예제 #7
0
 def _cf_grid(self, shape=None, **kwargs):
     "Create GridSpace with the correct metadata."
     grid = GridSpace({})
     grid.metadata = AttrDict(timestamp=self.src.simulation.time(),
                              info=self.name,
                              proj_src_name=self.src.name,
                              proj_dest_name=self.dest.name,
                              **kwargs)
     return grid
예제 #8
0
 def test_operation_grid(self):
     grid = GridSpace({i: Image(np.random.rand(10, 10))
                       for i in range(10)},
                      kdims=['X'])
     op_grid = operation(grid, op=lambda x, k: x.clone(x.data * 2))
     doubled = grid.clone({
         k: v.clone(v.data * 2, group='Operation')
         for k, v in grid.items()
     })
     self.assertEqual(op_grid, doubled)
예제 #9
0
    def test_gridspace_overlay_gridspace_reverse(self):
        items = [(0, self.view1), (1, self.view2), (2, self.view3), (3, self.view2)]
        grid = GridSpace(items, 'X')
        items2 = [(0, self.view2), (1, self.view1), (2, self.view2), (3, self.view3)]
        grid2 = GridSpace(items2, 'X')

        expected_items = [(0, self.view2*self.view1), (1, self.view1*self.view2),
                          (2, self.view2*self.view3), (3, self.view3*self.view2)]
        expected = GridSpace(expected_items, 'X')
        self.assertEqual(grid2*grid, expected)
    def test_gridspace_overlay_gridspace_partial_reverse(self):
        items = [(0, self.view1), (1, self.view2), (3, self.view2)]
        grid = GridSpace(items, 'X')
        items2 = [(0, self.view2), (2, self.view2), (3, self.view3)]
        grid2 = GridSpace(items2, 'X')

        expected_items = [(0, Overlay([self.view2, self.view1])),
                          (1, Overlay([self.view2])),
                          (2, Overlay([self.view2])),
                          (3, Overlay([self.view3, self.view2]))]
        expected = GridSpace(expected_items, 'X')
        self.assertEqual(grid2 * grid, expected)
예제 #11
0
    def test_layout_gridspaces(self):
        layout = (GridSpace({(i, j): Curve(range(i + j))
                             for i in range(1, 3) for j in range(2, 4)}) +
                  GridSpace({(i, j): Curve(range(i + j))
                             for i in range(1, 3)
                             for j in range(2, 4)}) + Curve(range(10))).cols(2)
        layout_plot = bokeh_renderer.get_plot(layout)
        plot = layout_plot.state

        # Unpack until getting down to two rows
        self.assertIsInstance(plot, Column)
        self.assertEqual(len(plot.children), 2)
        toolbar, column = plot.children
        self.assertIsInstance(toolbar, ToolbarBox)
        self.assertIsInstance(column, Column)
        self.assertEqual(len(column.children), 2)
        row1, row2 = column.children
        self.assertIsInstance(row1, Row)
        self.assertIsInstance(row2, Row)

        # Check the row of GridSpaces
        self.assertEqual(len(row1.children), 2)
        grid1, grid2 = row1.children
        self.assertIsInstance(grid1, Column)
        self.assertIsInstance(grid2, Column)
        self.assertEqual(len(grid1.children), 1)
        self.assertEqual(len(grid2.children), 1)
        grid1, grid2 = grid1.children[0], grid2.children[0]
        self.assertIsInstance(grid1, Column)
        self.assertIsInstance(grid2, Column)
        for grid in [grid1, grid2]:
            self.assertEqual(len(grid.children), 2)
            grow1, grow2 = grid.children
            self.assertIsInstance(grow1, Row)
            self.assertIsInstance(grow2, Row)
            self.assertEqual(len(grow1.children), 2)
            self.assertEqual(len(grow2.children), 2)
            ax_row, grid_row = grow1.children
            grow1, grow2 = grid_row.children[0].children
            gfig1, gfig2 = grow1.children
            gfig3, gfig4 = grow2.children
            self.assertIsInstance(gfig1, Figure)
            self.assertIsInstance(gfig2, Figure)
            self.assertIsInstance(gfig3, Figure)
            self.assertIsInstance(gfig4, Figure)

        # Check the row of Curve and a spacer
        self.assertEqual(len(row2.children), 2)
        fig, spacer = row2.children
        self.assertIsInstance(fig, Figure)
        self.assertIsInstance(spacer, Spacer)
 def test_get_size_grid_plot(self):
     grid = GridSpace({(i, j): self.image1
                       for i in range(3) for j in range(3)})
     plot = self.renderer.get_plot(grid)
     w, h = self.renderer.get_size(plot)
     if bokeh_version < '2.0.2':
         self.assertEqual((w, h), (444, 436))
     else:
         self.assertEqual((w, h), (446, 437))
예제 #13
0
 def test_grid_title(self):
     grid = GridSpace({
         (i, j):
         HoloMap({a: Image(np.random.rand(10, 10))
                  for a in range(3)},
                 kdims=['X'])
         for i in range(2) for j in range(3)
     })
     plot = bokeh_renderer.get_plot(grid)
     title = plot.handles['title']
     self.assertIsInstance(title, Div)
     text = "<span style='font-size: 16pt'><b>X: 0</b></font>"
     self.assertEqual(title.text, text)
예제 #14
0
 def test_grid_state(self):
     grid = GridSpace({(i, j): Curve([i, j])
                       for i in [0, 1] for j in [0, 1]})
     state = self._get_plot_state(grid)
     self.assertEqual(state['data'][0]['y'], np.array([0, 0]))
     self.assertEqual(state['data'][0]['xaxis'], 'x1')
     self.assertEqual(state['data'][0]['yaxis'], 'y1')
     self.assertEqual(state['data'][1]['y'], np.array([1, 0]))
     self.assertEqual(state['data'][1]['xaxis'], 'x2')
     self.assertEqual(state['data'][1]['yaxis'], 'y1')
     self.assertEqual(state['data'][2]['y'], np.array([0, 1]))
     self.assertEqual(state['data'][2]['xaxis'], 'x1')
     self.assertEqual(state['data'][2]['yaxis'], 'y2')
     self.assertEqual(state['data'][3]['y'], np.array([1, 1]))
     self.assertEqual(state['data'][3]['xaxis'], 'x2')
     self.assertEqual(state['data'][3]['yaxis'], 'y2')
예제 #15
0
 def callback(i):
     eltype = Image if i % 2 else Curve
     return GridSpace(
         {j: eltype([], label=str(j))
          for j in range(i, i + 2)}, 'X')
예제 #16
0
 def callback(i):
     return GridSpace({j: Curve([], label=str(j))
                       for j in range(i)}, 'X')
예제 #17
0
 def callback():
     return GridSpace({(i, j): Image(np.array([[i, j], [2, 3]]))
                       for i in range(1, 3) for j in range(1, 3)})
 def test_grid_index_strings(self):
     vals = [self.view1, self.view2, self.view3, self.view2]
     keys = [('A', 0), ('B', 1), ('C', 0), ('D', 1)]
     grid = GridSpace(zip(keys, vals))
     self.assertEqual(grid['B', 1], self.view2)
 def test_grid_index_snap(self):
     vals = [self.view1, self.view2, self.view3, self.view2]
     keys = [(0, 0), (0, 1), (1, 0), (1, 1)]
     grid = GridSpace(zip(keys, vals))
     self.assertEqual(grid[0.1, 0.1], self.view1)
예제 #20
0
 def test_grid_init(self):
     vals = [self.view1, self.view2, self.view3, self.view2]
     keys = [(0, 0), (0, 1), (1, 0), (1, 1)]
     grid = GridSpace(zip(keys, vals))
     self.assertEqual(grid.shape, (2, 2))
예제 #21
0
 def test_get_size_grid_plot(self):
     grid = GridSpace({(i, j): self.image1
                       for i in range(3) for j in range(3)})
     plot = self.renderer.get_plot(grid)
     w, h = self.renderer.get_size(plot)
     self.assertEqual((w, h), (419, 413))
예제 #22
0
 def test_operation_grid(self):
     grid = GridSpace({i: Image(np.random.rand(10, 10)) for i in range(10)}, kdims=['X'])
     op_grid = operation(grid, op=lambda x, k: x.clone(x.data*2))
     doubled = grid.clone({k: v.clone(v.data*2, group='Operation')
                           for k, v in grid.items()})
     self.assertEqual(op_grid, doubled)