Coverage for src/foapy/ma/_intervals_chain.py: 100%
6 statements
« prev ^ index » next coverage.py v7.15.4, created at 2026-08-17 19:57 +0000
« prev ^ index » next coverage.py v7.15.4, created at 2026-08-17 19:57 +0000
1import numpy.ma as ma
3from foapy.core._intervals_chain import intervals_chain as core_intervals_chain
6def intervals_chain(X, binding: int, chain_mode: int):
7 """
8 Compute an intervals chain from a masked 1-D sequence.
10 Masked (missing) values in *X* are skipped; intervals are computed over
11 the compressed sequence of unmasked elements only.
13 Parameters
14 ----------
15 X : masked_array
16 1-D masked array. Masked positions are treated as absent elements.
17 binding : int
18 ``binding.start`` or ``binding.end``.
19 chain_mode : int
20 ``chain_mode.boundary`` or ``chain_mode.cycle``.
22 Returns
23 -------
24 ndarray
25 Plain 1-D integer array (same as :func:`foapy.core.intervals_chain`
26 applied to the compressed, unmasked sub-sequence).
28 Raises
29 ------
30 Not1DArrayException
31 When the underlying compressed sequence is not 1-dimensional.
32 ValueError
33 When ``binding`` or ``chain_mode`` is invalid.
34 """
35 ar = ma.asarray(X)
36 compressed = ar.compressed()
37 return core_intervals_chain(compressed, binding, chain_mode)