Esempio n. 1
0
 def setup(self):
     """
     Generate a directory with all the files needed for this test.
     We use the same temporary directory every time, so we don't 
     waste time regenerating the data if the test has already been run recently.
     
     The directory consists of the following files:
     - reference_volume.h5
     - volume_description.json
     - transposed_volume_description.json
     - [lots of png tiles..]
     """        
     tmp = tempfile.gettempdir()
     self.TILE_DIRECTORY = os.path.join( tmp, 'testTiledVolume_data' )
     logger.debug("Using test directory: {}".format( self.TILE_DIRECTORY ))
     self.REFERENCE_VOL_PATH = os.path.join( self.TILE_DIRECTORY, 'reference_volume.h5/data' )
     ref_vol_path_comp = PathComponents(self.REFERENCE_VOL_PATH)
     self.REFERENCE_VOL_FILE = ref_vol_path_comp.externalPath
     self.VOLUME_DESCRIPTION_FILE = os.path.join( self.TILE_DIRECTORY, 'volume_description.json' )
     self.TRANSPOSED_VOLUME_DESCRIPTION_FILE = os.path.join( self.TILE_DIRECTORY, 'transposed_volume_description.json' )
 
     if not os.path.exists(self.TILE_DIRECTORY):
         print "Creating new tile directory: {}".format( self.TILE_DIRECTORY )
         os.mkdir(self.TILE_DIRECTORY)
 
     if not os.path.exists(self.REFERENCE_VOL_FILE):
         ref_vol = numpy.random.randint(0,255, (100,600,600) ).astype(numpy.uint8)
         with h5py.File(self.REFERENCE_VOL_FILE, 'w') as ref_file:
             ref_file[ref_vol_path_comp.internalPath] = ref_vol
     else:
         with h5py.File(self.REFERENCE_VOL_FILE, 'r') as ref_file:
             ref_vol = ref_file[ref_vol_path_comp.internalPath][:] 
 
     need_rewrite = False
     if not os.path.exists( self.VOLUME_DESCRIPTION_FILE ):
         need_rewrite = True
     else:
         with open(self.VOLUME_DESCRIPTION_FILE, 'r') as f:
             if f.read() != volume_description_text:
                 need_rewrite = True
     
     if need_rewrite:
         with open(self.VOLUME_DESCRIPTION_FILE, 'w') as f:
             f.write(volume_description_text)
 
         # Read the volume description as a JsonConfig Namespace
         volume_description = TiledVolume.readDescription(self.VOLUME_DESCRIPTION_FILE)
 
         # Write out a copy of the description, but with custom output axes
         config_helper = JsonConfigParser( TiledVolume.DescriptionFields )
         transposed_description = copy.copy(volume_description)
         transposed_description.output_axes = "xyz"
         config_helper.writeConfigFile(self.TRANSPOSED_VOLUME_DESCRIPTION_FILE, transposed_description)
 
         # Remove all old image tiles in the tile directory
         files = os.listdir(self.TILE_DIRECTORY)
         for name in files:
             if os.path.splitext(name)[1] == '.' + volume_description.format:
                 os.remove( os.path.join(self.TILE_DIRECTORY, name) )
 
         # Write the new tiles
         export_to_tiles( ref_vol, volume_description.tile_shape_2d_yx[0], self.TILE_DIRECTORY, print_progress=False )    
 
         # To support testMissingTiles (below), remove slice 2
         files = os.listdir(self.TILE_DIRECTORY)
         for name in files:
             if name.startswith("tile_z00002"):
                 p = os.path.join(self.TILE_DIRECTORY, name)
                 print "removing:", p
                 os.remove( p )
             
 
     # lastly, start the server
     self._start_server()
Esempio n. 2
0
    def setup(self):
        """
        Generate a directory with all the files needed for this test.
        We use the same temporary directory every time, so we don't 
        waste time regenerating the data if the test has already been run recently.
        
        The directory consists of the following files:
        - reference_volume.h5
        - volume_description.json
        - transposed_volume_description.json
        - [lots of png tiles..]
        """
        tmp = tempfile.gettempdir()
        self.TILE_DIRECTORY = os.path.join(tmp, 'testTiledVolume_data')
        logger.debug("Using test directory: {}".format(self.TILE_DIRECTORY))
        self.REFERENCE_VOL_PATH = os.path.join(self.TILE_DIRECTORY,
                                               'reference_volume.h5/data')
        ref_vol_path_comp = PathComponents(self.REFERENCE_VOL_PATH)
        self.REFERENCE_VOL_FILE = ref_vol_path_comp.externalPath
        self.VOLUME_DESCRIPTION_FILE = os.path.join(self.TILE_DIRECTORY,
                                                    'volume_description.json')
        self.TRANSPOSED_VOLUME_DESCRIPTION_FILE = os.path.join(
            self.TILE_DIRECTORY, 'transposed_volume_description.json')

        if not os.path.exists(self.TILE_DIRECTORY):
            print "Creating new tile directory: {}".format(self.TILE_DIRECTORY)
            os.mkdir(self.TILE_DIRECTORY)

        if not os.path.exists(self.REFERENCE_VOL_FILE):
            ref_vol = numpy.random.randint(0, 255,
                                           (100, 600, 600)).astype(numpy.uint8)
            with h5py.File(self.REFERENCE_VOL_FILE, 'w') as ref_file:
                ref_file[ref_vol_path_comp.internalPath] = ref_vol
        else:
            with h5py.File(self.REFERENCE_VOL_FILE, 'r') as ref_file:
                ref_vol = ref_file[ref_vol_path_comp.internalPath][:]

        need_rewrite = False
        if not os.path.exists(self.VOLUME_DESCRIPTION_FILE):
            need_rewrite = True
        else:
            with open(self.VOLUME_DESCRIPTION_FILE, 'r') as f:
                if f.read() != volume_description_text:
                    need_rewrite = True

        if need_rewrite:
            with open(self.VOLUME_DESCRIPTION_FILE, 'w') as f:
                f.write(volume_description_text)

            # Read the volume description as a JsonConfig Namespace
            volume_description = TiledVolume.readDescription(
                self.VOLUME_DESCRIPTION_FILE)

            # Write out a copy of the description, but with custom output axes
            config_helper = JsonConfigParser(TiledVolume.DescriptionFields)
            transposed_description = copy.copy(volume_description)
            transposed_description.output_axes = "xyz"
            config_helper.writeConfigFile(
                self.TRANSPOSED_VOLUME_DESCRIPTION_FILE,
                transposed_description)

            # Remove all old image tiles in the tile directory
            files = os.listdir(self.TILE_DIRECTORY)
            for name in files:
                if os.path.splitext(
                        name)[1] == '.' + volume_description.format:
                    os.remove(os.path.join(self.TILE_DIRECTORY, name))

            # Write the new tiles
            export_to_tiles(ref_vol,
                            volume_description.tile_shape_2d_yx[0],
                            self.TILE_DIRECTORY,
                            print_progress=False)

            # To support testMissingTiles (below), remove slice 2
            files = os.listdir(self.TILE_DIRECTORY)
            for name in files:
                if name.startswith("tile_z00002"):
                    p = os.path.join(self.TILE_DIRECTORY, name)
                    print "removing:", p
                    os.remove(p)

        # lastly, start the server
        self._start_server()