Skip to content

utils.map_array: error for non-writeable input arrays #6378

@m-albert

Description

@m-albert

Description

An error is thrown when passing a non-writeable numpy array to a function such as skimage.segmentation.relabel_sequential that calls utils.map_array. This seems unexpected, as the input array should not be modified.

Way to reproduce

import numpy as np
import skimage

l = np.zeros((1,), dtype=np.uint64)
l.setflags(write=False)

skimage.util.map_array(l, np.array([1]), np.array([1]), out=np.zeros((1,)))
# skimage.segmentation.relabel_sequential(l, 50) # api call that fails (unexpectedly for the user?)

ValueError Traceback (most recent call last)
Input In [59], in <cell line: 2>()
1 # from skimage.util._map_array import map_array
----> 2 skimage.util.map_array(l, np.array([1]), np.array([1]), out=np.zeros((1,)))

File ~/miniconda3/envs/test/lib/python3.9/site-packages/skimage/util/_map_array.py:57, in map_array(input_arr, input_vals, output_vals, out)
55 input_vals = input_vals.astype(input_arr.dtype, copy=False)
56 output_vals = output_vals.astype(out.dtype, copy=False)
---> 57 _map_array(input_arr, out_view, input_vals, output_vals)
58 return out

File ~/miniconda3/envs/test/lib/python3.9/site-packages/skimage/util/_remap.pyx:9, in skimage.util._remap._map_array()

File stringsource:658, in View.MemoryView.memoryview_cwrapper()

File stringsource:349, in View.MemoryView.memoryview.cinit()

ValueError: buffer source array is read-only

Version information

# Paste the output of the following python commands
from __future__ import print_function
import sys; print(sys.version)
import platform; print(platform.platform())
import skimage; print(f'scikit-image version: {skimage.__version__}')
import numpy; print(f'numpy version: {numpy.__version__}')
# your output here
3.9.12 (main, Apr  5 2022, 06:56:58) 
[GCC 7.5.0]
Linux-5.15.0-27-generic-x86_64-with-glibc2.35
scikit-image version: 0.19.2
numpy version: 1.21.6

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions