def filter_func(images: Images,
                    cores=None,
                    chunksize=None,
                    progress=None) -> Images:
        counts = images.counts()
        if counts is None:
            raise RuntimeError("No loaded log values for this stack.")

        counts_val = counts.value / counts.value[0]
        div_partial = ptsm.create_partial(_divide_by_counts,
                                          fwd_function=ptsm.inplace)
        images, _ = ptsm.execute(images.data,
                                 counts_val,
                                 div_partial,
                                 cores,
                                 chunksize,
                                 progress=progress)
        return images
    def filter_func(images: Images,
                    cores=None,
                    chunksize=None,
                    progress=None) -> Images:
        if images.num_projections == 1:
            # we can't really compute the preview as the image stack copy
            # passed in doesn't have the logfile in it
            raise RuntimeError("No logfile available for this stack.")

        counts = images.counts()

        if counts is None:
            raise RuntimeError("No loaded log values for this stack.")

        counts_val = counts.value / counts.value[0]
        do_division = ps.create_partial(_divide_by_counts,
                                        fwd_function=ps.inplace2)
        ps.shared_list = [images.data, counts_val]
        ps.execute(do_division, images.num_projections, progress, cores=cores)
        return images