Skip to content

Commit e6804bb

Browse files
add ignore_dims arg to subsample_array (#797)
* add ignore_dims arg to subsample_array * black
1 parent 718c98c commit e6804bb

File tree

1 file changed

+15
-1
lines changed

1 file changed

+15
-1
lines changed

fastplotlib/utils/functions.py

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -406,7 +406,9 @@ def parse_cmap_values(
406406
return colors
407407

408408

409-
def subsample_array(arr: np.ndarray, max_size: int = 1e6):
409+
def subsample_array(
410+
arr: np.ndarray, max_size: int = 1e6, ignore_dims: Sequence[int] | None = None
411+
):
410412
"""
411413
Subsamples an input array while preserving its relative dimensional proportions.
412414
@@ -444,6 +446,10 @@ def subsample_array(arr: np.ndarray, max_size: int = 1e6):
444446
max_size: int, default 1e6
445447
maximum number of elements in subsampled array
446448
449+
ignore_dims: Sequence[int], optional
450+
List of dimension indices to exclude from subsampling (i.e. retain full resolution).
451+
For example, `ignore_dims=[0]` will avoid subsampling along the first axis.
452+
447453
Returns
448454
-------
449455
np.ndarray
@@ -462,4 +468,12 @@ def subsample_array(arr: np.ndarray, max_size: int = 1e6):
462468
slices = tuple(
463469
slice(None, None, int(s)) for s in np.floor(arr.shape / ns).astype(int)
464470
)
471+
472+
# ignore dims e.g. RGB, which we don't want to downsample
473+
if ignore_dims is not None:
474+
for dim in ignore_dims:
475+
slices[dim] = slice(None)
476+
477+
slices = tuple(slices)
478+
465479
return np.asarray(arr[slices])

0 commit comments

Comments
 (0)