def _re_bound(self,plot_bounding_box,mat,box,density): # CEBHACKALERT: for Julien... # If plot_bounding_box is that of a Sheet, it will already have been # setup so that the density in the x direction and the density in the # y direction are equal. # If plot_bounding_box comes from elsewhere (i.e. you create it from # arbitrary bounds), it might need to be adjusted to ensure the density # in both directions is the same (see Sheet.__init__()). I don't know where # you want to do that; presumably the code should be common to Sheet and # where it's used in the plotting? # # It's possible we can move some of the functionality # into SheetCoordinateSystem. if plot_bounding_box.containsbb_exclusive(box): ct = SheetCoordinateSystem(plot_bounding_box,density,density) new_mat = zeros(ct.shape,Float) r1,r2,c1,c2 = Slice(box,ct) new_mat[r1:r2,c1:c2] = mat else: scs = SheetCoordinateSystem(box,density,density) s=Slice(plot_bounding_box,scs) s.crop_to_sheet(scs) new_mat = s.submatrix(mat) return new_mat
def _re_bound(self,plot_bounding_box,mat,box,density): # CEBHACKALERT: for Julien... # If plot_bounding_box is that of a Sheet, it will already have been # setup so that the density in the x direction and the density in the # y direction are equal. # If plot_bounding_box comes from elsewhere (i.e. you create it from # arbitrary bounds), it might need to be adjusted to ensure the density # in both directions is the same (see Sheet.__init__()). I don't know where # you want to do that; presumably the code should be common to Sheet and # where it's used in the plotting? # # It's possible we can move some of the functionality # into SheetCoordinateSystem. if plot_bounding_box.containsbb_exclusive(box): ct = SheetCoordinateSystem(plot_bounding_box,density,density) new_mat = np.zeros(ct.shape,dtype=np.float) r1,r2,c1,c2 = Slice(box,ct) new_mat[r1:r2,c1:c2] = mat else: scs = SheetCoordinateSystem(box,density,density) s=Slice(plot_bounding_box,scs) s.crop_to_sheet(scs) new_mat = s.submatrix(mat) return new_mat
def test_connection_field_like(self): # test a ConnectionField-like example sheet = Sheet(nominal_density=10,nominal_bounds=BoundingBox(radius=0.5)) cf_bounds = BoundingBox(points=((0.3,0.3),(0.6,0.6))) slice_ = Slice(cf_bounds,sheet) slice_.crop_to_sheet(sheet) # check it's been cropped to fit onto sheet... self.assertEqual(slice_.tolist(),[0,2,8,10]) # now check that it gives the correct bounds... cropped_bounds = slice_.compute_bounds(sheet) true_cropped_bounds = BoundingBox(points=((0.3,0.3),(0.5,0.5))) for a,b in zip(cropped_bounds.lbrt(),true_cropped_bounds.lbrt()): self.assertAlmostEqual(a,b)
def test_connection_field_like(self): # test a ConnectionField-like example sheet = Sheet(nominal_density=10,nominal_bounds=BoundingBox(radius=0.5)) cf_bounds = BoundingBox(points=((0.3,0.3),(0.6,0.6))) slice_ = Slice(cf_bounds,sheet) slice_.crop_to_sheet(sheet) # check it's been cropped to fit onto sheet... self.assertEqual(slice_.tolist(),[0,2,8,10]) # now check that it gives the correct bounds... cropped_bounds = slice_.compute_bounds(sheet) true_cropped_bounds = BoundingBox(points=((0.3,0.3),(0.5,0.5))) for a,b in zip(cropped_bounds.lbrt(),true_cropped_bounds.lbrt()): self.assertAlmostEqual(a,b)