예제 #1
0
    def createImageSource(self, data_sources):
        if len(data_sources) != 4:
            raise ValueError("Expected 4 data sources got %s" %
                             len(data_sources))

        ds = data_sources.copy()
        for i in range(3):
            if data_sources[i] == None:
                ds[i] = PlanarSliceSource(
                    ConstantSource(self.color_missing_value))
        guarantees_opaqueness = False
        if data_sources[3] == None:
            ds[3] = PlanarSliceSource(ConstantSource(self.alpha_missing_value))
            guarantees_opaqueness = True if self.alpha_missing_value == 255 else False
        src = imsrc.RGBAImageSource(
            ds[0],
            ds[1],
            ds[2],
            ds[3],
            self,
            guarantees_opaqueness=guarantees_opaqueness)
        src.setObjectName(self.name)
        self.nameChanged.connect(lambda x: src.setObjectName(str(x)))
        self.normalizeChanged.connect(lambda: src.setDirty(
            (slice(None, None), slice(None, None))))
        return src
예제 #2
0
    def setUp(self):
        self.GRAY1 = 60
        self.ds1 = ConstantSource(self.GRAY1)

        self.GRAY2 = 120
        self.ds2 = ConstantSource(self.GRAY2)

        self.GRAY3 = 190
        self.ds3 = ConstantSource(self.GRAY3)

        self.layer1 = GrayscaleLayer(self.ds1, normalize=False)
        self.layer1.visible = False
        self.layer1.opacity = 0.1
        self.ims1 = GrayscaleImageSource(PlanarSliceSource(self.ds1), self.layer1)
        self.layer2 = GrayscaleLayer(self.ds2, normalize=False)
        self.layer2.visible = True
        self.layer2.opacity = 0.3
        self.ims2 = GrayscaleImageSource(PlanarSliceSource(self.ds2), self.layer2)
        self.layer3 = GrayscaleLayer(self.ds3, normalize=False)
        self.layer3.visible = True
        self.layer3.opacity = 1.0
        self.ims3 = GrayscaleImageSource(PlanarSliceSource(self.ds3), self.layer3)

        lsm = LayerStackModel()
        lsm.append(self.layer1)
        lsm.append(self.layer2)
        lsm.append(self.layer3)
        self.lsm = lsm
        sims = StackedImageSources(lsm)
        sims.register(self.layer1, self.ims1)
        sims.register(self.layer2, self.ims2)
        sims.register(self.layer3, self.ims3)
        self.sims = sims
예제 #3
0
class PlanarSliceSourceTest(ut.TestCase):
    def setUp(self):
        self.raw = np.random.randint(0, 100, (10, 3, 3, 128, 3))
        self.a = ArraySource(self.raw)
        self.ss = PlanarSliceSource(self.a, projectionAlongTZC)

    def testRequest(self):
        self.ss.setThrough(0, 1)
        self.ss.setThrough(2, 2)
        self.ss.setThrough(1, 127)

        sl = self.ss.request((slice(None), slice(None))).wait()
        self.assertTrue(np.all(sl == self.raw[1, :, :, 127, 2]))

        sl_bounded = self.ss.request((slice(0, 3), slice(1, None))).wait()
        numpy.testing.assert_array_equal(sl_bounded, self.raw[1, 0:3, 1:, 127,
                                                              2])

    def testDirtynessPropagation(self):
        self.ss.setThrough(0, 1)
        self.ss.setThrough(2, 2)
        self.ss.setThrough(1, 127)

        check_mock = mock.Mock()
        self.ss.isDirty.connect(check_mock)
        self.a.setDirty(np.s_[1:2, :, 1:2, 127:128, 2:3])
        self.ss.isDirty.disconnect(check_mock)
        check_mock.assert_called_once_with(np.s_[:, 1:2])
예제 #4
0
    def setUp(self):
        self.ds = ConstantSource()

        self.layer1 = GrayscaleLayer(self.ds)
        self.layer1.visible = False
        self.layer1.opacity = 0.1
        self.ims1 = GrayscaleImageSource(PlanarSliceSource(self.ds),
                                         self.layer1)
        self.layer2 = GrayscaleLayer(self.ds)
        self.layer2.visible = True
        self.layer2.opacity = 0.3
        self.ims2 = GrayscaleImageSource(PlanarSliceSource(self.ds),
                                         self.layer2)
        self.layer3 = GrayscaleLayer(self.ds)
        self.layer3.visible = True
        self.layer3.opacity = 1.0
        self.ims3 = GrayscaleImageSource(PlanarSliceSource(self.ds),
                                         self.layer3)
예제 #5
0
 def testOpaqueness(self):
     ims_opaque = RGBAImageSource(
         self.red,
         self.green,
         self.blue,
         PlanarSliceSource(ConstantSource()),
         RGBALayer(self.red, self.green, self.blue, alpha_missing_value=255),
         guarantees_opaqueness=True,
     )
     self.assertTrue(ims_opaque.isOpaque())
     ims_notopaque = RGBAImageSource(
         self.red,
         self.green,
         self.blue,
         PlanarSliceSource(ConstantSource()),
         RGBALayer(self.red, self.green, self.blue, alpha_missing_value=100),
     )
     self.assertFalse(ims_notopaque.isOpaque())
예제 #6
0
    def setUp(self):
        self.layerstack = LayerStackModel()
        self.sims = StackedImageSources(self.layerstack)

        self.GRAY = 201
        self.ds = ConstantSource(self.GRAY)
        self.layer = GrayscaleLayer(self.ds)
        self.layer.set_normalize(0, False)
        self.layerstack.append(self.layer)
        self.ims = self.layer.createImageSource([PlanarSliceSource(self.ds)])
        self.sims.register(self.layer, self.ims)

        self.scene = ImageScene2D(PositionModel(), (0, 3, 4), preemptive_fetch_number=0)

        self.scene.stackedImageSources = self.sims
        self.scene.dataShape = (310, 290)
예제 #7
0
        def setUp(self):
            self.layerstack = LayerStackModel()
            self.sims = StackedImageSources(self.layerstack)

            self.g = Graph()
            self.op = OpLazy(self.g)
            self.ds = LazyflowSource(self.op.Output)

            self.ss = PlanarSliceSource(self.ds, projectionAlongTZC)

            self.layer = GrayscaleLayer(self.ds, normalize=False)
            self.layerstack.append(self.layer)
            self.ims = self.layer.createImageSource([self.ss])
            self.sims.register(self.layer, self.ims)

            self.scene = ImageScene2D(PositionModel(), (0, 0, 0),
                                      preemptive_fetch_number=0)
            self.scene.setCacheSize(1)

            self.scene.stackedImageSources = self.sims
            self.scene.dataShape = (30, 30)
예제 #8
0
 def sliceSrcOrNone(datasrc):
     if datasrc:
         return PlanarSliceSource(datasrc, self._projection)
     return None
예제 #9
0
    def setUp(self):
        super(RGBAImageSourceTest, self).setUp()
        basedir = os.path.dirname(volumina._testing.__file__)
        self.data = numpy.load(os.path.join(basedir, "rgba129x104.npy"))
        self.red = _ArraySource2d(self.data[:, :, 0])
        self.green = _ArraySource2d(self.data[:, :, 1])
        self.blue = _ArraySource2d(self.data[:, :, 2])
        self.alpha = _ArraySource2d(self.data[:, :, 3])

        self.ims_rgba = RGBAImageSource(
            self.red, self.green, self.blue, self.alpha, RGBALayer(self.red, self.green, self.blue, self.alpha)
        )
        self.ims_rgb = RGBAImageSource(
            self.red,
            self.green,
            self.blue,
            PlanarSliceSource(ConstantSource()),
            RGBALayer(self.red, self.green, self.blue),
        )
        self.ims_rg = RGBAImageSource(
            self.red,
            self.green,
            PlanarSliceSource(ConstantSource()),
            PlanarSliceSource(ConstantSource()),
            RGBALayer(self.red, self.green),
        )
        self.ims_ba = RGBAImageSource(
            red=PlanarSliceSource(ConstantSource()),
            green=PlanarSliceSource(ConstantSource()),
            blue=self.blue,
            alpha=self.alpha,
            layer=RGBALayer(blue=self.blue, alpha=self.alpha),
        )
        self.ims_a = RGBAImageSource(
            red=PlanarSliceSource(ConstantSource()),
            green=PlanarSliceSource(ConstantSource()),
            blue=PlanarSliceSource(ConstantSource()),
            alpha=self.alpha,
            layer=RGBALayer(alpha=self.alpha),
        )
        self.ims_none = RGBAImageSource(
            PlanarSliceSource(ConstantSource()),
            PlanarSliceSource(ConstantSource()),
            PlanarSliceSource(ConstantSource()),
            PlanarSliceSource(ConstantSource()),
            RGBALayer(),
        )
예제 #10
0
 def setUp(self):
     self.raw = np.random.randint(0, 100, (10, 3, 3, 128, 3))
     self.a = ArraySource(self.raw)
     self.ss = PlanarSliceSource(self.a, projectionAlongTZC)