Example #1
0
    def execute(self):
        src_translation, src_data_dict = self.src_stack.read_data_dict(
            self.bcube,
            mip=self.mip,
            translation_adjuster=None,
            stack_name="src")

        if self.blackout_masks:
            mask_layers = self.dst_stack.get_layers_of_type(["mask"])
            mask = helpers.read_mask_list(mask_layers, self.bcube, self.mip)
        else:
            mask = None
        if self.copy_masks:
            write_layers = self.dst_stack.get_layers_of_type(["img", "mask"])
        else:
            write_layers = self.dst_stack.get_layers_of_type("img")

        for l in write_layers:
            src = src_data_dict[f"src_{l.name}"]
            if mask is not None:
                src[mask] = 0
            l.write(src, bcube=self.bcube, mip=self.mip)

        # copy fields
        write_layers = self.dst_stack.get_layers_of_type("field")
        for l in write_layers:
            src = src_data_dict[f"src_{l.name}"]
            l.write(src, bcube=self.bcube, mip=self.mip)
Example #2
0
    def execute(self):
        src_data = self.src_layer.read(bcube=self.bcube, mip=self.mip)
        mask_data = helpers.read_mask_list(mask_list=self.mask_layers,
                                           bcube=self.bcube,
                                           mip=self.mip)

        if mask_data is not None:
            src_data = src_data[mask_data == 0]
        src_data = src_data[src_data != 0]
        src_data = src_data[src_data == src_data]

        if self.mean_layer is not None:
            if len(src_data) == 0:
                mean = torch.FloatTensor([0], device=src_data.device)
            else:
                mean = src_data.float().mean()
            self.mean_layer.write(mean,
                                  bcube=self.bcube,
                                  mip=self.mip,
                                  channel_start=self.write_channel,
                                  channel_end=self.write_channel + 1)

        if self.var_layer is not None:
            if len(src_data) == 0:
                var = torch.FloatTensor([0], device=src_data.device)
            else:
                var = src_data.float().var()

            self.var_layer.write(var,
                                 bcube=self.bcube,
                                 mip=self.mip,
                                 channel_start=self.write_channel,
                                 channel_end=self.write_channel + 1)
Example #3
0
    def execute(self):
        src_data = self.src_layer.read(bcube=self.bcube, mip=self.mip)
        mask_data = helpers.read_mask_list(mask_list=self.mask_layers,
                                           bcube=self.bcube,
                                           mip=self.mip)

        if mask_data is not None:
            src_data = src_data[mask_data == 0]

        if self.mean_layer is not None:
            mean = src_data[src_data != 0].float().mean()
            self.mean_layer.write(mean,
                                  bcube=self.bcube,
                                  mip=self.mip,
                                  channel_start=self.write_channel,
                                  channel_end=self.write_channel + 1)

        if self.var_layer is not None:
            var = src_data[src_data != 0].float().var()

            self.var_layer.write(var,
                                 bcube=self.bcube,
                                 mip=self.mip,
                                 channel_start=self.write_channel,
                                 channel_end=self.write_channel + 1)
Example #4
0
    def execute(self):
        corgie_logger.info(
            f"Normalizing {self.src_layer} at MIP{self.mip}, region: {self.bcube}"
        )
        mean_data = self.mean_layer.read(self.bcube, mip=self.stats_mip)
        var_data = self.var_layer.read(self.bcube, mip=self.stats_mip)

        src_data = self.src_layer.read(self.bcube, mip=self.mip)
        mask_data = helpers.read_mask_list(mask_list=self.mask_layers,
                                           bcube=self.bcube,
                                           mip=self.mip)

        dst_data = (src_data - mean_data) / var_data.sqrt()
        if mask_data is not None:
            dst_data[mask_data] = self.mask_value
        self.dst_layer.write(dst_data, self.bcube, mip=self.mip)
Example #5
0
    def execute(self):
        padded_bcube = self.bcube.uncrop(self.pad, self.mip)

        for f in self.additional_fields:
            self.src_stack.add_layer(f)

        src_translation, src_data_dict = self.src_stack.read_data_dict(
            padded_bcube, mip=self.mip, stack_name='src')
        agg_field = src_data_dict[f"src_agg_field"]

        if self.blackout_masks:
            mask_layers = self.dst_stack.get_layers_of_type(["img", "mask"])
            mask = helpers.read_mask_list(mask_layers, self.bcube, self.mip)
        else:
            mask = None

        if self.render_masks:
            write_layers = self.dst_stack.get_layers_of_type(["img", "mask"])
        else:
            write_layers = self.dst_stack.get_layers_of_type("img")

        for l in write_layers:
            src = src_data_dict[f"src_{l.name}"]

            if agg_field is not None:
                warped_src = residuals.res_warp_img(src.float(), agg_field)
            else:
                warped_src = src

            if mask is not None:
                warped_src[mask] = 0.0

            cropped_out = helpers.crop(warped_src, self.pad)
            l.write(cropped_out, bcube=self.bcube, mip=self.mip)

        for f in self.additional_fields:
            self.src_stack.remove_layer(f.name)