Exemple #1
0
    def setup(self):

        f = h5py.File(self.filename, 'r')

        self.spec = ProviderSpec()
        self.ndims = None
        for (volume_type, ds) in self.datasets.items():

            if ds not in f:
                raise RuntimeError("%s not in %s" % (ds, self.filename))

            dims = f[ds].shape
            self.spec.volumes[volume_type] = Roi((0, ) * len(dims), dims)

            if self.ndims is None:
                self.ndims = len(dims)
            else:
                assert self.ndims == len(dims)

            if self.specified_resolution is None:
                if 'resolution' in f[ds].attrs:
                    self.resolutions[volume_type] = tuple(
                        f[ds].attrs['resolution'])
                else:
                    default_resolution = (1, ) * self.ndims
                    logger.warning(
                        "WARNING: your source does not contain resolution information"
                        " (no attribute 'resolution' in {} dataset). I will assume {}. "
                        "This might not be what you want.".format(
                            ds, default_resolution))
                    self.resolutions[volume_type] = default_resolution
            else:
                self.resolutions[volume_type] = self.specified_resolution

        f.close()
Exemple #2
0
    def provides(self, key, spec):
        '''Introduce a new output provided by this :class:`BatchProvider`.

        Implementations should call this in their :func:`setup` method, which
        will be called when the pipeline is build.

        Args:

            key (:class:`ArrayKey` or :class:`PointsKey`):

                The array or point set key provided.

            spec (:class:`ArraySpec` or :class:`PointsSpec`):

                The spec of the array or point set provided.
        '''

        logger.debug("Current spec of %s:\n%s", self.name(), self.spec)

        if self.spec is None:
            self._spec = ProviderSpec()

        assert key not in self.spec, (
            "Node %s is trying to add spec for %s, but is already "
            "provided." % (type(self).__name__, key))

        self.spec[key] = copy.deepcopy(spec)
        self.provided_items.append(key)

        logger.debug("%s provides %s with spec %s", self.name(), key, spec)
Exemple #3
0
 def __init__(self,
              hostname,
              port,
              uuid,
              raw_array_name,
              gt_array_name=None,
              gt_mask_roi_name=None,
              resolution=None):
     """
     :param hostname: hostname for DVID server
     :type hostname: str
     :param port: port for DVID server
     :type port: int
     :param uuid: UUID of node on DVID server
     :type uuid: str
     :param raw_array_name: DVID data instance for image data
     :type raw_array_name: str
     :param gt_array_name: DVID data instance for segmentation label data
     :type gt_array_name: str
     :param gt_mask_roi_name: DVID region of interest for masking the segmentation
     :type gt_mask_roi_name: str
     :param resolution: resolution of source voxels in nanometers
     :type resolution: tuple
     """
     self.hostname = hostname
     self.port = port
     self.url = "http://{}:{}".format(self.hostname, self.port)
     self.uuid = uuid
     self.raw_array_name = raw_array_name
     self.gt_array_name = gt_array_name
     self.gt_mask_roi_name = gt_mask_roi_name
     self.specified_resolution = resolution
     self.node_service = None
     self.dims = 0
     self.spec = ProviderSpec()