Exemple #1
0
    def testNonEmptyLayerStackModel(self):
        lsm = LayerStackModel()

        lsm.append(self.layer1)
        lsm.append(self.layer2)
        lsm.append(self.layer3)

        ip = ImagePump(lsm, SliceProjection())
        self.assertEqual(len(lsm), 3)
        self.assertEqual(len(ip.stackedImageSources), 3)
        self.assertEqual(len(ip.syncedSliceSources), 3)

        self.assertEqual(len(ip.stackedImageSources.getRegisteredLayers()), 3)
        for layer in lsm:
            self.assertTrue(ip.stackedImageSources.isRegistered(layer))

        lsm.deleteSelected()
        self.assertEqual(len(lsm), 2)
        self.assertEqual(len(ip.stackedImageSources), 2)
        self.assertEqual(len(ip.syncedSliceSources), 2)
        self.assertEqual(len(ip.stackedImageSources.getRegisteredLayers()), 2)
        for layer in lsm:
            self.assertTrue(ip.stackedImageSources.isRegistered(layer))

        lsm.clear()
        self.assertEqual(len(lsm), 0)
        self.assertEqual(len(ip.stackedImageSources), 0)
        self.assertEqual(len(ip.syncedSliceSources), 0)
        self.assertEqual(len(ip.stackedImageSources.getRegisteredLayers()), 0)
Exemple #2
0
    def setUp( self ):
        dataShape = (1, 900, 400, 10, 1) # t,x,y,z,c
        data = np.indices(dataShape)[3].astype(np.uint8) # Data is labeled according to z-index
        self.ds1 = ArraySource( data )
        self.CONSTANT = 13
        self.ds2 = ConstantSource( self.CONSTANT )

        self.layer1 = GrayscaleLayer( self.ds1, normalize=False )
        self.layer1.visible = True
        self.layer1.opacity = 1.0

        self.layer2 = GrayscaleLayer( self.ds2, normalize=False )

        self.lsm = LayerStackModel()
        self.pump = ImagePump( self.lsm, SliceProjection(), sync_along=(0,1,2) )
Exemple #3
0
#
# See the files LICENSE.lgpl2 and LICENSE.lgpl3 for full text of the
# GNU Lesser General Public License version 2.1 and 3 respectively.
# This information is also available on the ilastik web site at:
# 		   http://ilastik.org/license/
###############################################################################
import logging
from builtins import range
from PyQt5.QtCore import QObject, pyqtSignal
from .interface import DataSourceABC, PlanarSliceSourceABC, RequestABC
import numpy as np
import volumina
from volumina.slicingtools import SliceProjection, is_pure_slicing, intersection, sl
from volumina.config import CONFIG

projectionAlongTXC = SliceProjection(abscissa=2, ordinate=3, along=[0, 1, 4])
projectionAlongTYC = SliceProjection(abscissa=1, ordinate=3, along=[0, 2, 4])
projectionAlongTZC = SliceProjection(abscissa=1, ordinate=2, along=[0, 3, 4])

# *******************************************************************************
# S l i c e R e q u e s t                                                      *
# *******************************************************************************

logger = logging.getLogger(__name__)


class PlanarSliceRequest(RequestABC):
    def __init__(self, domainArrayRequest, sliceProjection):
        self._ar = domainArrayRequest
        self._sp = sliceProjection