Source code for playnano.analysis.modules.count_nonzero

"""Analysis module for counting non-zero data points in an array."""

from typing import Any

from playnano.analysis.base import AnalysisModule


[docs] class CountNonzeroModule(AnalysisModule): """ Count non-zero pixels in each frame of an AFMImageStack. This simple analysis module computes the number of non-zero pixels per frame and returns the result as a 1D array. Version ------- 0.1.0 Examples -------- >>> module = CountNonzeroModule() >>> result = module.run(stack) >>> result['counts'].shape (n_frames,) """ version = "0.1.0" @property def name(self) -> str: """ Name of the analysis module. Returns ------- str The string identifier for this module. """ return "count_nonzero"
[docs] def run(self, stack, previous_results=None, **params) -> dict[str, Any]: """ Count non-zero pixels per frame in the AFMImageStack. Parameters ---------- stack : AFMImageStack Stack of AFM frames with `.data` of shape (n_frames, H, W). previous_results : dict[str, Any], optional Ignored by this module. Included for API compatibility. **params : dict Additional parameters (unused). Returns ------- dict Dictionary with key: - "counts": np.ndarray of shape (n_frames,), number of non-zero pixels per frame. """ data = stack.data # shape (n_frames, H, W) # Compute counts import numpy as np counts = np.count_nonzero(data, axis=(1, 2)) # array of length n_frames return {"counts": counts}