Ejemplo n.º 1
0
    def execute(self):
        corgie_logger.debug(f"ComputeFieldTask")
        src_bcube = self.bcube.uncrop(self.pad, self.mip)
        tgt_bcube = src_bcube.translate(z_offset=self.tgt_z_offset)

        processor = procspec.parse_proc(spec_str=self.processor_spec)

        corgie_logger.debug(f"Read target")
        tgt_translation, tgt_data_dict = self.tgt_stack.read_data_dict(
            tgt_bcube, mip=self.mip, stack_name="tgt")

        # Compensate if target was moved to one side a lot
        # tgt_drift = helpers.percentile_trans_adjuster(
        #     tgt_data_dict["tgt_agg_field"], unaligned_img=tgt_data_dict["tgt_img"]
        # )
        tgt_drift = helpers.Translation(0, 0)
        corgie_logger.debug(f"Read source")
        src_translation, src_data_dict = self.src_stack.read_data_dict(
            src_bcube, mip=self.mip, stack_name="src", translation=tgt_drift)
        # translation_adjuster=helpers.percentile_trans_adjuster)
        # )
        processor_input = {**src_data_dict, **tgt_data_dict}

        corgie_logger.debug(f"Compute field")
        predicted_field = processor(processor_input, output_key="src_cf_field")

        predicted_field.x += tgt_drift.x
        predicted_field.y += tgt_drift.y

        cropped_field = helpers.crop(predicted_field, self.crop)
        corgie_logger.debug(f"Write field")
        self.dst_layer.write(cropped_field, bcube=self.bcube, mip=self.mip)
Ejemplo n.º 2
0
    def read_data_dict(self,
                       bcube,
                       mip,
                       translation_adjuster=None,
                       stack_name=None,
                       add_prefix=True,
                       translation=None):

        data_dict = {}

        if translation is None:
            translation = helpers.Translation(0, 0)

        if stack_name is None:
            stack_name == self.name

        if stack_name is None or not add_prefix:
            name_prefix = ""
        else:
            name_prefix = f"{stack_name}_"

        agg_field = None
        field_layers = self.get_layers_of_type("field")
        # Assume that the last field is the final one
        if len(field_layers) > 0:
            l = field_layers[-1]
            global_name = "{}{}".format(name_prefix, l.name)
            this_field = l.read(bcube=bcube, mip=mip)
            data_dict[global_name] = this_field
            agg_field = this_field
        '''for l in field_layers:
            global_name = "{}{}".format(name_prefix, l.name)
            this_field = l.read(bcube=bcube, mip=mip)
            data_dict[global_name] = this_field
            agg_field = this_field
            if agg_field is None:
                agg_field = this_field
            else:
                agg_field = this_field.field().from_pixels()(agg_field.field().from_pixels()).pixels()'''

        assert (f"{name_prefix}agg_field" not in data_dict)
        data_dict[f"{name_prefix}agg_field"] = agg_field

        if translation_adjuster is not None:
            src_field_trans = translation_adjuster(agg_field)
            translation.x += src_field_trans.x
            translation.y += src_field_trans.y

        #if translation.x != 0 or translation.y != 0:
        #import pdb; pdb.set_trace()
        final_bcube = copy.deepcopy(bcube)
        final_bcube = final_bcube.translate(x_offset=translation.y,
                                            y_offset=translation.x,
                                            mip=mip)

        for l in self.get_layers_of_type(["mask", "img"]):
            global_name = f"{name_prefix}{l.name}"
            data_dict[global_name] = l.read(bcube=final_bcube, mip=mip)
        return translation, data_dict
Ejemplo n.º 3
0
    def read_data_dict(self,
                       bcube,
                       mip,
                       translation_adjuster=None,
                       stack_name=None):
        data_dict = {}
        field_layers = self.get_layers_of_type("field")
        agg_field = None

        if stack_name is None:
            stack_name == self.name

        if stack_name is None:
            name_prefix = ""
        else:
            name_prefix = f"{stack_name}_"

        for l in field_layers:
            this_field = l.read(bcube=bcube, mip=mip)
            global_name = "{}{}".format(name_prefix, l.name)
            data_dict[global_name] = this_field

            if agg_field is not None:
                agg_field = compose_fields(agg_field,
                                           this_field,
                                           is_pix_res=True)
            else:
                agg_field = this_field
        assert (f"{name_prefix}_agg_field" not in data_dict)
        data_dict[f"{name_prefix}agg_field"] = agg_field

        if translation_adjuster is not None:
            translaiton = translation_adjuster(agg_field)
        else:
            translation = helpers.Translation(0, 0)
        final_bcube = copy.deepcopy(bcube)
        final_bcube = final_bcube.translate(x=translation.x, y=translation.y)

        for l in self.get_layers_of_type(["mask", "img"]):
            global_name = f"{name_prefix}{l.name}"
            data_dict[global_name] = l.read(bcube=bcube, mip=mip)

        return translation, data_dict