Example #1
0
    def __setitem__(self, key, spec):

        assert isinstance(key, ArrayKey) or isinstance(key, GraphKey), \
            f"Only ArrayKey or GraphKey (not {type(key).__name__} are " \
            "allowed as key for ProviderSpec, "

        if isinstance(key, ArrayKey):

            if isinstance(spec, Roi):
                spec = ArraySpec(roi=spec)

            assert isinstance(spec, ArraySpec), \
                f"Only ArraySpec (not {type(spec).__name__}) can be set for " \
                "ArrayKey"

            self.array_specs[key] = spec.copy()

        else:

            if isinstance(spec, Roi):
                spec = GraphSpec(roi=spec)

            assert isinstance(spec, GraphSpec), \
                f"Only GraphSpec (not {type(spec).__name__}) can be set for " \
                "GraphKey"

            self.graph_specs[key] = spec.copy()
Example #2
0
class DaCapoArraySource(gp.BatchProvider):
    """A DaCapo Array source node

    Args:

        Array (Array):

            The DaCapo Array to pull data from

        key (``gp.ArrayKey``):

            The key to provide data into
    """
    def __init__(self, array: Array, key: gp.ArrayKey):
        self.array = array
        self.array_spec = ArraySpec(roi=self.array.roi,
                                    voxel_size=self.array.voxel_size)
        self.key = key

    def setup(self):
        self.provides(self.key, self.array_spec.copy())

    def provide(self, request):
        output = gp.Batch()

        timing_provide = Timing(self, "provide")
        timing_provide.start()

        spec = self.array_spec.copy()
        spec.roi = request[self.key].roi

        data = self.array[spec.roi]
        if "c" not in self.array.axes:
            # add a channel dimension
            data = np.expand_dims(data, 0)
        if np.any(np.isnan(data)):
            raise ValueError("INPUT DATA CAN'T BE NAN")
        output[self.key] = gp.Array(data, spec=spec)

        timing_provide.stop()

        output.profiling_stats.add(timing_provide)

        return output