pub struct ROIStatProcessor { /* private fields */ }Expand description
Processor that computes ROI statistics on 2D arrays.
Implementations§
Source§impl ROIStatProcessor
impl ROIStatProcessor
Sourcepub fn new(rois: Vec<ROIStatROI>, ts_num_points: usize) -> Self
pub fn new(rois: Vec<ROIStatROI>, ts_num_points: usize) -> Self
Create a new processor with the given ROI definitions.
Sourcepub fn params_handle(&self) -> Arc<Mutex<ROIStatParams>>
pub fn params_handle(&self) -> Arc<Mutex<ROIStatParams>>
Get a shared handle to the params (populated after register_params is called).
Sourcepub fn results(&self) -> &[ROIStatResult]
pub fn results(&self) -> &[ROIStatResult]
Get the current results for all ROIs.
Sourcepub fn rois(&self) -> &[ROIStatROI]
pub fn rois(&self) -> &[ROIStatROI]
Get the ROI definitions.
Sourcepub fn rois_mut(&mut self) -> &mut Vec<ROIStatROI>
pub fn rois_mut(&mut self) -> &mut Vec<ROIStatROI>
Mutable access to ROI definitions.
Sourcepub fn set_ts_mode(&mut self, mode: TSMode)
pub fn set_ts_mode(&mut self, mode: TSMode)
Set the time series mode.
Sourcepub fn ts_buffer(&self, roi_index: usize, stat_index: usize) -> &[f64]
pub fn ts_buffer(&self, roi_index: usize, stat_index: usize) -> &[f64]
Get time series buffer for a specific ROI and stat index. stat_index: 0=min, 1=max, 2=mean, 3=total, 4=net
Sourcepub fn set_ts_sender(&mut self, sender: TimeSeriesSender)
pub fn set_ts_sender(&mut self, sender: TimeSeriesSender)
Set the sender for pushing time series data to a TimeSeriesPortDriver.
Sourcepub fn compute_roi_stats(
data: &NDDataBuffer,
ndims: usize,
array_size_x: usize,
offset: [usize; 2],
size: [usize; 2],
bgd_width: usize,
) -> ROIStatResult
pub fn compute_roi_stats( data: &NDDataBuffer, ndims: usize, array_size_x: usize, offset: [usize; 2], size: [usize; 2], bgd_width: usize, ) -> ROIStatResult
Compute statistics for one already-clamped ROI, mirroring the C
doComputeStatistics (NDPluginROIStat.cpp:30-139). array_size_x
is the array’s X dimension (the row stride, = C arraySize[0]).
ndims selects the 1-D (single X strip) or 2-D (rectangle) layout.
Background pixels are summed exactly as C does: for 1-D the two
X-end strips, for 2-D the four-edge border. Both can double-count in
the degenerate thick-border case (2*bgd_width > size), matching C.
Trait Implementations§
Source§impl NDPluginProcess for ROIStatProcessor
impl NDPluginProcess for ROIStatProcessor
Source§fn process_array(
&mut self,
array: &NDArray,
_pool: &NDArrayPool,
) -> ProcessResult
fn process_array( &mut self, array: &NDArray, _pool: &NDArrayPool, ) -> ProcessResult
Source§fn plugin_type(&self) -> &str
fn plugin_type(&self) -> &str
Source§fn register_params(
&mut self,
base: &mut PortDriverBase,
) -> Result<(), AsynError>
fn register_params( &mut self, base: &mut PortDriverBase, ) -> Result<(), AsynError>
Source§fn on_param_change(
&mut self,
reason: usize,
snapshot: &PluginParamSnapshot,
) -> ParamChangeResult
fn on_param_change( &mut self, reason: usize, snapshot: &PluginParamSnapshot, ) -> ParamChangeResult
Source§fn compression_aware(&self) -> bool
fn compression_aware(&self) -> bool
codec != None) arrays
(C++ compressionAware_, G3). Defaults to false: a plugin that
operates on raw pixels must not be handed compressed bytes — the
runtime drops compressed input and counts it into DroppedArrays.
A codec/file plugin that understands compressed data overrides this.Source§fn does_array_callbacks(&self) -> bool
fn does_array_callbacks(&self) -> bool
NDArrayCallbacks param value. Defaults to true: most plugins
do array callbacks. Terminal plugins that never deliver downstream
(NDPluginStdArrays, NDPluginAttribute, every NDPluginFile writer)
override this to false so the param reflects the behaviour, matching C
(e.g. NDPluginFile.cpp:948 setIntegerParam(NDArrayCallbacks, 0)).Auto Trait Implementations§
impl !RefUnwindSafe for ROIStatProcessor
impl !UnwindSafe for ROIStatProcessor
impl Freeze for ROIStatProcessor
impl Send for ROIStatProcessor
impl Sync for ROIStatProcessor
impl Unpin for ROIStatProcessor
impl UnsafeUnpin for ROIStatProcessor
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more