Source code for libertem.udf.sumsigudf

import numpy as np

from libertem.udf import UDF


[docs] class SumSigUDF(UDF): """ Sum over the signal axes. For each navigation position, the sum of all pixels is calculated. Examples -------- >>> udf = SumSigUDF() >>> result = ctx.run_udf(dataset=dataset, udf=udf) >>> np.array(result["intensity"]).shape (16, 16) """
[docs] def get_backends(self): return self.BACKEND_ALL
def get_result_buffers(self): "" dtype = np.result_type(self.meta.input_dtype, np.float32) return { 'intensity': self.buffer( kind="nav", dtype=dtype, where='device' ), } def process_tile(self, tile): "" self.results.intensity[:] += self.forbuf( np.sum( # Flatten and sum axis 1 for cupyx.scipy.sparse support tile.reshape((tile.shape[0], -1)), axis=1 ), self.results.intensity )
def run_sumsig(ctx, dataset): udf = SumSigUDF() pass_results = ctx.run_udf(dataset=dataset, udf=udf) return pass_results