コード例 #1
0
ファイル: tst_pixel_list.py プロジェクト: hackerlank/dials
    def tst_with_no_points(self):

        from dials.model.data import PixelList, PixelListLabeller
        from scitbx.array_family import flex
        size = (500, 500)
        sf = 0
        labeller = PixelListLabeller()

        count = 0
        mask_list = []
        for i in range(3):
            image = flex.random_int_gaussian_distribution(
                size[0] * size[1], 100, 5)
            mask = flex.bool(size[0] * size[0], False)
            image.reshape(flex.grid(size))
            mask.reshape(flex.grid(size))
            pl = PixelList(sf + i, image, mask)
            count += len(mask.as_1d().select(mask.as_1d()))
            labeller.add(pl)
            mask_list.append(mask)

        coords = labeller.coords()
        labels1 = labeller.labels_2d()
        labels2 = labeller.labels_2d()

        assert len(coords) == 0
        assert len(labels1) == 0
        assert len(labels2) == 0

        print 'OK'
コード例 #2
0
    def setup_class(self):
        from dials.algorithms.image.connected_components import LabelImageStack3d

        self.size = (500, 500)
        self.label_images = LabelImageStack3d(self.size)

        from scitbx.array_family import flex

        self.data_list = []
        self.mask_list = []
        for i in range(10):
            data = flex.random_int_gaussian_distribution(
                self.size[0] * self.size[1], 100, 10
            )
            data.reshape(flex.grid(self.size))
            mask = flex.random_bool(self.size[0] * self.size[1], 0.1)
            mask.reshape(flex.grid(self.size))
            self.data_list.append(data)
            self.mask_list.append(mask)

        for i in range(10):
            self.label_images.add_image(self.data_list[i], self.mask_list[i])

        self.labels = self.label_images.labels()
        self.coords = self.label_images.coords()
        self.values = list(self.label_images.values())

        assert len(self.labels) > 0
        assert len(self.labels) == len(self.coords)
        assert len(self.labels) == len(self.values)
コード例 #3
0
def create_random_data_with_gaussian_distribution(mu=0.0, sigma=1.0):
    slow = 2048
    fast = 2048
    total_sz = slow * fast
    random_data = flex.random_int_gaussian_distribution(total_sz, mu, sigma)
    random_data.reshape(flex.grid(slow, fast))
    return random_data
コード例 #4
0
  def run(self):

    from scitbx.array_family import flex

    data_list = []
    mask_list = []
    for i in range(10):
      data = flex.random_int_gaussian_distribution(
          self.size[0] * self.size[1], 100, 10)
      data.reshape(flex.grid(self.size))
      mask = flex.random_bool(self.size[0] * self.size[1], 0.1)
      mask.reshape(flex.grid(self.size))
      data_list.append(data)
      mask_list.append(mask)

    for i in range(10):
      self.label_images.add_image(data_list[i], mask_list[i])

    labels = self.label_images.labels()
    coords = self.label_images.coords()
    values = self.label_images.values()

    assert(len(labels) > 0)
    assert(len(labels) == len(coords))
    assert(len(labels) == len(values))

    self.tst_coords_are_valid(mask_list, coords)
    self.tst_values_are_valid(data_list, mask_list, values)
    self.tst_labels_are_valid(data_list, mask_list, coords, labels)
コード例 #5
0
def create_random_data_with_gaussian_distribution(mu=0.0,sigma=1.0):
  slow=2048
  fast=2048
  total_sz = slow*fast
  random_data = flex.random_int_gaussian_distribution(total_sz,mu,sigma)
  random_data.reshape(flex.grid(slow,fast))
  return random_data
コード例 #6
0
ファイル: tst_pixel_list.py プロジェクト: hackerlank/dials
    def tst_labels_3d(self):
        from dials.model.data import PixelList, PixelListLabeller
        from scitbx.array_family import flex
        size = (500, 500)
        sf = 0
        labeller = PixelListLabeller()

        count = 0
        mask_list = []
        for i in range(3):
            image = flex.random_int_gaussian_distribution(
                size[0] * size[1], 100, 5)
            mask = flex.random_bool(size[0] * size[1], 0.5)
            image.reshape(flex.grid(size))
            mask.reshape(flex.grid(size))
            pl = PixelList(sf + i, image, mask)
            count += len(mask.as_1d().select(mask.as_1d()))
            labeller.add(pl)
            mask_list.append(mask)

        coords = labeller.coords()
        labels = labeller.labels_3d()

        # Create a map of labels
        label_map = flex.int(flex.grid(3, size[0], size[1]))
        for c, l in zip(coords, labels):
            label_map[c] = l

        # Ensure all labels are correct
        vi = 0
        for k in range(3):
            for j in range(size[0]):
                for i in range(size[1]):
                    if mask_list[k][j, i]:

                        l1 = labels[vi]
                        if k > 0 and mask_list[k - 1][j, i]:
                            l2 = label_map[k - 1, j, i]
                            assert (l2 == l1)
                        if j > 0 and mask_list[k][j - 1, i]:
                            l2 = label_map[k, j - 1, i]
                            assert (l2 == l1)
                        if i > 0 and mask_list[k][j, i - 1]:
                            l2 = label_map[k, j, i - 1]
                            assert (l2 == l1)
                        vi += 1

        # Test passed
        print 'OK'
コード例 #7
0
ファイル: test_pixel_list.py プロジェクト: kek-pf-mx/dials
def test_add_image():
    from dials.model.data import PixelList, PixelListLabeller
    from scitbx.array_family import flex
    size = (2000, 2000)
    sf = 10
    labeller = PixelListLabeller()

    count = 0
    for i in range(3):
        image = flex.random_int_gaussian_distribution(size[0] * size[1], 100,
                                                      5)
        mask = flex.random_bool(size[0] * size[1], 0.5)
        image.reshape(flex.grid(size))
        mask.reshape(flex.grid(size))
        pl = PixelList(sf + i, image, mask)
        count += len(mask.as_1d().select(mask.as_1d()))
        labeller.add(pl)
    assert len(labeller.values()) == count