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

1import numpy.ma as ma 

2 

3from foapy.core._intervals_chain import intervals_chain as core_intervals_chain 

4 

5 

6def intervals_chain(X, binding: int, chain_mode: int): 

7 """ 

8 Compute an intervals chain from a masked 1-D sequence. 

9 

10 Masked (missing) values in *X* are skipped; intervals are computed over 

11 the compressed sequence of unmasked elements only. 

12 

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``. 

21 

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). 

27 

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)