def test06(self):
        """
        Test the basic functionality of the v0.6 project format serializer.
        """
        # Create an empty project
        with h5py.File(self.testProjectName) as testProject:
            testProject.create_dataset("ilastikVersion", data=b"1.0.0")

            ##
            ## Serialization
            ##

            # Create an operator to work with and give it some input
            graph = Graph()
            groupName = 'DataSelectionTest'
            info = self._createDatasetInfo()
            operatorToSave = self._createOperatorToSave(graph, testProject,
                                                        info, groupName)

            serializer = DataSelectionSerializer(operatorToSave, groupName)
            assert serializer.base_initialized

            # Now serialize!
            serializer.serializeToHdf5(testProject, self.testProjectName)

            # Check for dataset existence
            datasetInternalPath = serializer.topGroupName + '/local_data/' + info.datasetId
            dataset = testProject[datasetInternalPath][...]

            # Check axistags attribute
            assert 'axistags' in testProject[datasetInternalPath].attrs
            axistags_json = testProject[datasetInternalPath].attrs['axistags']
            axistags = vigra.AxisTags.fromJSON(axistags_json)

            originalShape = operatorToSave.Image[0].meta.shape
            originalAxisTags = operatorToSave.Image[0].meta.axistags

            # Now we can directly compare the shape and axis ordering
            assert dataset.shape == originalShape
            assert axistags == originalAxisTags

            ##
            ## Deserialization
            ##

            # Create an empty operator
            graph = Graph()
            operatorToLoad = OpMultiLaneDataSelectionGroup( graph=graph )
            operatorToLoad.DatasetRoles.setValue( ['Raw Data'] )

            deserializer = DataSelectionSerializer(operatorToLoad, serializer.topGroupName) # Copy the group name from the serializer we used.
            assert deserializer.base_initialized
            deserializer.deserializeFromHdf5(testProject, self.testProjectName)

            assert len(operatorToLoad.DatasetGroup) == len(operatorToSave.DatasetGroup)
            assert len(operatorToLoad.Image) == len(operatorToSave.Image)

            assert operatorToLoad.Image[0].meta.shape == operatorToSave.Image[0].meta.shape
            assert operatorToLoad.Image[0].meta.axistags == operatorToSave.Image[0].meta.axistags
    def testShapeAndDtypeSerialization(self):
        """
        Test the serialization of additional shape and dtype attributes added
        in order to re-create the metadata in headless mode with no raw data
        """
        # Create an empty project
        with h5py.File(self.testProjectName) as testProject:
            # Create an operator to work with and give it some input
            graph = Graph()
            groupName = 'DataSelectionTest'
            info = self._createDatasetInfo()
            operatorToSave = self._createOperatorToSave(
                graph, testProject, info, groupName)

            # Serialize
            serializer = DataSelectionSerializer(operatorToSave, groupName)
            serializer.serializeToHdf5(testProject, self.testProjectName)

            # Assert lane's dtype and shape attributes exist
            rawDataPath = groupName + '/infos/lane0000/Raw Data'
            assert 'shape' in testProject[rawDataPath]
            assert 'dtype' in testProject[rawDataPath]

            # Assert their values are correct
            assert tuple(testProject[
                rawDataPath +
                '/shape'].value) == operatorToSave.Image[0].meta.shape
            assert numpy.dtype(
                testProject[rawDataPath + '/dtype'].value.decode(
                    'utf-8')) == operatorToSave.Image[0].meta.dtype

            # Deserialize and check datasetInfo
            graph = Graph()
            operatorToLoad = OpMultiLaneDataSelectionGroup(graph=graph)
            operatorToLoad.DatasetRoles.setValue(['Raw Data'])

            deserializer = DataSelectionSerializer(operatorToLoad, groupName)
            deserializer.deserializeFromHdf5(testProject, self.testProjectName)

            datasetInfo = operatorToLoad.DatasetGroup[0][0][:].wait()[0]

            assert datasetInfo.laneShape == operatorToLoad.Image[0].meta.shape
            assert datasetInfo.laneDtype == operatorToLoad.Image[0].meta.dtype
    def testShapeAndDtypeSerialization(self):
        """
        Test the serialization of additional shape and dtype attributes added
        in order to re-create the metadata in headless mode with no raw data
        """
        # Create an empty project
        with h5py.File(self.testProjectName) as testProject:
            # Create an operator to work with and give it some input
            graph = Graph()
            groupName = 'DataSelectionTest'
            info = self._createDatasetInfo()
            operatorToSave = self._createOperatorToSave(graph, testProject,
                                                        info, groupName)

            # Serialize
            serializer = DataSelectionSerializer(operatorToSave, groupName)
            serializer.serializeToHdf5(testProject, self.testProjectName)

            # Assert lane's dtype and shape attributes exist
            rawDataPath = groupName + '/infos/lane0000/Raw Data'
            assert 'shape' in testProject[rawDataPath]
            assert 'dtype' in testProject[rawDataPath]

            # Assert their values are correct
            assert tuple(testProject[rawDataPath + '/shape'].value) == operatorToSave.Image[0].meta.shape
            assert numpy.dtype(testProject[rawDataPath + '/dtype'].value.decode('utf-8')) == operatorToSave.Image[0].meta.dtype

            # Deserialize and check datasetInfo
            graph = Graph()
            operatorToLoad = OpMultiLaneDataSelectionGroup(graph=graph)
            operatorToLoad.DatasetRoles.setValue(['Raw Data'])

            deserializer = DataSelectionSerializer(operatorToLoad, groupName)
            deserializer.deserializeFromHdf5(testProject, self.testProjectName)

            datasetInfo = operatorToLoad.DatasetGroup[0][0][:].wait()[0]

            assert datasetInfo.laneShape == operatorToLoad.Image[0].meta.shape
            assert datasetInfo.laneDtype == operatorToLoad.Image[0].meta.dtype
    def test06(self):
        """
        Test the basic functionality of the v0.6 project format serializer.
        """
        # Create an empty project
        with h5py.File(self.testProjectName) as testProject:
            testProject.create_dataset("ilastikVersion", data=0.6)

            ##
            ## Serialization
            ##

            # Create an operator to work with and give it some input
            graph = Graph()
            operatorToSave = OpMultiLaneDataSelectionGroup(graph=graph)
            serializer = DataSelectionSerializer(operatorToSave,
                                                 'DataSelectionTest')
            assert serializer.base_initialized

            operatorToSave.ProjectFile.setValue(testProject)
            operatorToSave.WorkingDirectory.setValue(
                os.path.split(__file__)[0])
            operatorToSave.ProjectDataGroup.setValue(serializer.topGroupName +
                                                     '/local_data')

            info = DatasetInfo()
            info.filePath = self.tmpFilePath
            info.location = DatasetInfo.Location.ProjectInternal

            operatorToSave.DatasetRoles.setValue(['Raw Data'])
            operatorToSave.DatasetGroup.resize(1)
            operatorToSave.DatasetGroup[0][0].setValue(info)

            # Now serialize!
            serializer.serializeToHdf5(testProject, self.testProjectName)

            # Check for dataset existence
            datasetInternalPath = serializer.topGroupName + '/local_data/' + info.datasetId
            dataset = testProject[datasetInternalPath][...]

            # Check axistags attribute
            assert 'axistags' in testProject[datasetInternalPath].attrs
            axistags_json = testProject[datasetInternalPath].attrs['axistags']
            axistags = vigra.AxisTags.fromJSON(axistags_json)

            # Debug info...
            #logging.basicConfig(level=logging.DEBUG)
            logger.debug('dataset.shape = ' + str(dataset.shape))
            logger.debug('should be ' +
                         str(operatorToSave.Image[0].meta.shape))
            logger.debug('dataset axistags:')
            logger.debug(axistags)
            logger.debug('should be:')
            logger.debug(operatorToSave.Image[0].meta.axistags)

            originalShape = operatorToSave.Image[0].meta.shape
            originalAxisTags = operatorToSave.Image[0].meta.axistags

            # Now we can directly compare the shape and axis ordering
            assert dataset.shape == originalShape
            assert axistags == originalAxisTags

            ##
            ## Deserialization
            ##

            # Create an empty operator
            graph = Graph()
            operatorToLoad = OpMultiLaneDataSelectionGroup(graph=graph)
            operatorToLoad.DatasetRoles.setValue(['Raw Data'])

            deserializer = DataSelectionSerializer(
                operatorToLoad, serializer.topGroupName
            )  # Copy the group name from the serializer we used.
            assert deserializer.base_initialized
            deserializer.deserializeFromHdf5(testProject, self.testProjectName)

            assert len(operatorToLoad.DatasetGroup) == len(
                operatorToSave.DatasetGroup)
            assert len(operatorToLoad.Image) == len(operatorToSave.Image)

            assert operatorToLoad.Image[0].meta.shape == operatorToSave.Image[
                0].meta.shape
            assert operatorToLoad.Image[
                0].meta.axistags == operatorToSave.Image[0].meta.axistags

        os.remove(self.testProjectName)
예제 #5
0
    def test06(self):
        """
        Test the basic functionality of the v0.6 project format serializer.
        """
        # Create an empty project
        with h5py.File(self.testProjectName) as testProject:
            testProject.create_dataset("ilastikVersion", data="1.0.0")
            
            ##
            ## Serialization
            ##
        
            # Create an operator to work with and give it some input
            graph = Graph()
            operatorToSave = OpMultiLaneDataSelectionGroup( graph=graph )
            serializer = DataSelectionSerializer(operatorToSave, 'DataSelectionTest')
            assert serializer.base_initialized
        
            operatorToSave.ProjectFile.setValue(testProject)
            operatorToSave.WorkingDirectory.setValue( os.path.split(__file__)[0] )
            operatorToSave.ProjectDataGroup.setValue( serializer.topGroupName + '/local_data' )
            
            info = DatasetInfo()
            info.filePath = self.tmpFilePath
            info.location = DatasetInfo.Location.ProjectInternal

            operatorToSave.DatasetRoles.setValue( ['Raw Data'] )
            operatorToSave.DatasetGroup.resize(1)
            operatorToSave.DatasetGroup[0][0].setValue(info)
            
            # Now serialize!
            serializer.serializeToHdf5(testProject, self.testProjectName)
            
            # Check for dataset existence
            datasetInternalPath = serializer.topGroupName + '/local_data/' + info.datasetId
            dataset = testProject[datasetInternalPath][...]
            
            # Check axistags attribute
            assert 'axistags' in testProject[datasetInternalPath].attrs
            axistags_json = testProject[datasetInternalPath].attrs['axistags']
            axistags = vigra.AxisTags.fromJSON(axistags_json)
            
            # Debug info...
            #logging.basicConfig(level=logging.DEBUG)
            logger.debug('dataset.shape = ' + str(dataset.shape))
            logger.debug('should be ' + str(operatorToSave.Image[0].meta.shape))
            logger.debug('dataset axistags:')
            logger.debug(axistags)
            logger.debug('should be:')
            logger.debug(operatorToSave.Image[0].meta.axistags)
        
            originalShape = operatorToSave.Image[0].meta.shape
            originalAxisTags = operatorToSave.Image[0].meta.axistags
            
            # Now we can directly compare the shape and axis ordering
            assert dataset.shape == originalShape
            assert axistags == originalAxisTags
            
            ##
            ## Deserialization
            ##
        
            # Create an empty operator
            graph = Graph()
            operatorToLoad = OpMultiLaneDataSelectionGroup( graph=graph )
            operatorToLoad.DatasetRoles.setValue( ['Raw Data'] )
            
            deserializer = DataSelectionSerializer(operatorToLoad, serializer.topGroupName) # Copy the group name from the serializer we used.
            assert deserializer.base_initialized
            deserializer.deserializeFromHdf5(testProject, self.testProjectName)
            
            assert len(operatorToLoad.DatasetGroup) == len(operatorToSave.DatasetGroup)
            assert len(operatorToLoad.Image) == len(operatorToSave.Image)
            
            assert operatorToLoad.Image[0].meta.shape == operatorToSave.Image[0].meta.shape
            assert operatorToLoad.Image[0].meta.axistags == operatorToSave.Image[0].meta.axistags

        os.remove(self.testProjectName)
    def test06(self):
        """
        Test the basic functionality of the v0.6 project format serializer.
        """
        # Create an empty project
        with h5py.File(self.testProjectName) as testProject:
            testProject.create_dataset("ilastikVersion", data=b"1.0.0")

            ##
            ## Serialization
            ##

            # Create an operator to work with and give it some input
            graph = Graph()
            groupName = 'DataSelectionTest'
            info = self._createDatasetInfo()
            operatorToSave = self._createOperatorToSave(
                graph, testProject, info, groupName)

            serializer = DataSelectionSerializer(operatorToSave, groupName)
            assert serializer.base_initialized

            # Now serialize!
            serializer.serializeToHdf5(testProject, self.testProjectName)

            # Check for dataset existence
            datasetInternalPath = serializer.topGroupName + '/local_data/' + info.datasetId
            dataset = testProject[datasetInternalPath][...]

            # Check axistags attribute
            assert 'axistags' in testProject[datasetInternalPath].attrs
            axistags_json = testProject[datasetInternalPath].attrs['axistags']
            axistags = vigra.AxisTags.fromJSON(axistags_json)

            originalShape = operatorToSave.Image[0].meta.shape
            originalAxisTags = operatorToSave.Image[0].meta.axistags

            # Now we can directly compare the shape and axis ordering
            assert dataset.shape == originalShape
            assert axistags == originalAxisTags

            ##
            ## Deserialization
            ##

            # Create an empty operator
            graph = Graph()
            operatorToLoad = OpMultiLaneDataSelectionGroup(graph=graph)
            operatorToLoad.DatasetRoles.setValue(['Raw Data'])

            deserializer = DataSelectionSerializer(
                operatorToLoad, serializer.topGroupName
            )  # Copy the group name from the serializer we used.
            assert deserializer.base_initialized
            deserializer.deserializeFromHdf5(testProject, self.testProjectName)

            assert len(operatorToLoad.DatasetGroup) == len(
                operatorToSave.DatasetGroup)
            assert len(operatorToLoad.Image) == len(operatorToSave.Image)

            assert operatorToLoad.Image[0].meta.shape == operatorToSave.Image[
                0].meta.shape
            assert operatorToLoad.Image[
                0].meta.axistags == operatorToSave.Image[0].meta.axistags