Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 4 additions & 3 deletions src/probeinterface/probe.py
Original file line number Diff line number Diff line change
Expand Up @@ -570,14 +570,15 @@ def set_contact_ids(self, contact_ids: np.array | list):
self._contact_ids = None
return

assert np.unique(contact_ids).size == contact_ids.size, "Contact ids have to be unique within a Probe"

if contact_ids.size != self.get_contact_count():
ValueError(
raise ValueError(
f"contact_ids {contact_ids.size} do not have the same size "
f"as number of contacts {self.get_contact_count()}"
)

if np.unique(contact_ids).size != contact_ids.size:
raise ValueError("contact_ids must be unique within a Probe")

if contact_ids.dtype.kind != "U":
contact_ids = contact_ids.astype("U")

Expand Down
24 changes: 24 additions & 0 deletions tests/test_probegroup.py
Original file line number Diff line number Diff line change
Expand Up @@ -92,6 +92,30 @@ def test_probegroup_allows_duplicate_positions_across_probes():
assert len(group.probes) == 2


def test_set_contact_ids_rejects_within_probe_duplicates():
"""Setting duplicate contact_ids within a single probe raises ValueError."""
from probeinterface import Probe

positions = np.array([[0, 0], [10, 10]])
probe = Probe(ndim=2, si_units="um")
probe.set_contacts(positions=positions, shapes="circle", shape_params={"radius": 5})

with pytest.raises(ValueError, match="unique within a Probe"):
probe.set_contact_ids(["a", "a"])


def test_set_contact_ids_rejects_wrong_size():
"""Setting contact_ids with wrong count raises ValueError."""
from probeinterface import Probe

positions = np.array([[0, 0], [10, 10]])
probe = Probe(ndim=2, si_units="um")
probe.set_contacts(positions=positions, shapes="circle", shape_params={"radius": 5})

with pytest.raises(ValueError, match="do not have the same size"):
probe.set_contact_ids(["a", "b", "c"])


if __name__ == "__main__":
test_probegroup()
# ~ test_probegroup_3d()