Exemple #1
0
def test_any():
    out = xr.DataArray(np.array([[True, True], [True, True]]),
                       coords=coords, dims=dims)
    assert_eq(c.points(df, 'x', 'y', ds.any('i64')), out)
    assert_eq(c.points(df, 'x', 'y', ds.any('f64')), out)
    assert_eq(c.points(df, 'x', 'y', ds.any()), out)
    out = xr.DataArray(np.array([[True, True], [True, False]]),
                       coords=coords, dims=dims)
    assert_eq(c.points(df, 'x', 'y', ds.any('empty_bin')), out)
Exemple #2
0
def test_any():
    out = xr.DataArray(np.array([[True, True], [True, True]]),
                       coords=coords, dims=dims)
    assert_eq(c.points(ddf, 'x', 'y', ds.any('i64')), out)
    assert_eq(c.points(ddf, 'x', 'y', ds.any('f64')), out)
    assert_eq(c.points(ddf, 'x', 'y', ds.any()), out)
    out = xr.DataArray(np.array([[True, True], [True, False]]),
                       coords=coords, dims=dims)
    assert_eq(c.points(ddf, 'x', 'y', ds.any('empty_bin')), out)
Exemple #3
0
 def _get_aggregator(self, element, add_field=True):
     agg = self.p.aggregator
     if not element.vdims and agg.column is None and not isinstance(
             agg, (rd.count, rd.any)):
         return ds.any()
     return super(contours_rasterize,
                  self)._get_aggregator(element, add_field)
def agg_count_cat(
    data, x, y, z, scale_paras, 
    clip_max=0, 
    reduce=False,
    sharp_boundary=True, 
    ):
    """count categorical data
    """
    # collect aggdata and ps
    agg = ds.count_cat(z)
    aggdata, ps = agg_data_ps(data, x, y, agg, scale_paras)
    zlabels = aggdata[z].values
   
    if clip_max:
        aggdata = aggdata.clip(max=clip_max)
        
    if reduce:
        aggdata = aggdata.argmax(z)
        
    if sharp_boundary:
        # normalize by any (set no cells to nan)
        agg = ds.any()
        aggdata_any = agg_data(data, x, y, ps.npxlx, ps.npxly, agg)
        aggdata_any = aggdata_any.astype(int)
        aggdata = aggdata/aggdata_any
    
    return aggdata, ps, zlabels
def agg_data_count(
    data, 
    x, y, 
    npxlx, npxly,
    ):
    agg = ds.count()
    aggdata = agg_data(data, x, y, npxlx, npxly, agg)
    agg = ds.any()
    aggdata_any = agg_data(data, x, y, npxlx, npxly, agg)
    aggdata = aggdata/aggdata_any
    return aggdata
Exemple #6
0
    def _process(self, element, key=None):
        try:
            import cv2 as cv
        except ImportError:
            raise ImportError('GrabCut algorithm requires openCV')

        if isinstance(self.p.foreground, hv.Polygons):
            rasterize_op = rasterize_polygon
        else:
            rasterize_op = rasterize.instance(aggregator=ds.any())

        kwargs = {'dynamic': False, 'target': element}
        fg_mask = rasterize_op(self.p.foreground, **kwargs)
        bg_mask = rasterize_op(self.p.background, **kwargs)
        fg_mask = fg_mask.dimension_values(2, flat=False)
        bg_mask = bg_mask.dimension_values(2, flat=False)
        if fg_mask[np.isfinite(fg_mask)].sum() == 0 or bg_mask[np.isfinite(
                bg_mask)].sum() == 0:
            return element.clone([],
                                 vdims=['Foreground'],
                                 new_type=gv.Image,
                                 crs=element.crs)

        mask = np.where(fg_mask, fg_mask, 2)
        mask = np.where(bg_mask, 0, mask).copy()
        bgdModel = np.zeros((1, 65), np.float64)
        fgdModel = np.zeros((1, 65), np.float64)

        if isinstance(element, hv.RGB):
            img = np.dstack([
                element.dimension_values(d, flat=False) for d in element.vdims
            ])
        else:
            img = element.dimension_values(2, flat=False)
        mask, _, _ = cv.grabCut(img, mask.astype('uint8'), None, bgdModel,
                                fgdModel, self.p.iterations,
                                cv.GC_INIT_WITH_MASK)
        fg_mask = np.where((mask == 2) | (mask == 0), 0, 1).astype('bool')
        xs, ys = (element.dimension_values(d, expanded=False)
                  for d in element.kdims)
        return element.clone((xs, ys, fg_mask),
                             vdims=['Foreground'],
                             new_type=gv.Image,
                             crs=element.crs)
Exemple #7
0
        linkNext,
    )
    simTime += time.time() - tic

    # Rendering
    # ============================
    if it == 0:
        df = pd.DataFrame(np.array([x, y]).T, columns=('x', 'y'))
        refineFac = 4.0
        cvs = ds.Canvas(plot_width=int(nx * refineFac),
                        plot_height=int(ny * refineFac),
                        x_range=(xmin, xmax),
                        y_range=(ymin, ymax),
                        x_axis_type='linear',
                        y_axis_type='linear')
        agg = cvs.points(df, 'x', 'y', ds.any())
        im = plt.imshow(agg.variable,
                        extent=[xmin, xmax, ymin, ymax],
                        origin='lower')

    if it % 5 == 0:
        tic = time.time()
        df = pd.DataFrame(np.array([x, y]).T, columns=('x', 'y'))
        agg = cvs.points(df, 'x', 'y', ds.any())
        im.set_array(agg.variable)
        #        markers.set_data(x,y)
        #        plt.clf()
        #        plt.plot(gridX,gridY,'k',linewidth=0.5)
        #        plt.plot(gridX.T,gridY.T,'k',linewidth=0.5)
        ##        plt.fill([xmin,xmax,xmax,xmin],[ymin,ymin,ymax,ymax],color=[.9,.9,.9],linewidth=0.0)
        #