Open
Description
Bug Report
Description
In our code, we had been defining our probes using the ProbeType
class as such
for probe_type in ('neuropixels 1.0 - 3A', 'neuropixels 1.0 - 3B',
'neuropixels 2.0 - SS', 'neuropixels 2.0 - MS'):
probe_element.ProbeType.create_neuropixels_probe(probe_type)
We recently updated to the latest version of element-array-ephys
which broke our pipeline since the class version is now passed directly to probe_element.create_neuropixels_probe()
which removes the skip_duplicates=True
that the older version of the pipeline had, resulting in
File "/home/[email protected]/Datajoint_projs/U19-pipeline_python/u19_pipeline/ephys_pipeline.py", line 149, in <module>
probe_element.ProbeType.create_neuropixels_probe(probe_type)
File "/home/[email protected]/miniconda3/envs/U19-pipeline_python_env3/lib/python3.12/site-packages/element_array_ephys/probe.py", line 77, in create_neuropixels_probe
return create_neuropixels_probe(probe_type)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/[email protected]/miniconda3/envs/U19-pipeline_python_env3/lib/python3.12/site-packages/element_array_ephys/probe.py", line 173, in create_neuropixels_probe
ProbeType.insert1({"probe_type": probe_type})
File "/home/[email protected]/miniconda3/envs/U19-pipeline_python_env3/lib/python3.12/site-packages/datajoint/table.py", line 347, in insert1
self.insert((row,), **kwargs)
File "/home/[email protected]/miniconda3/envs/U19-pipeline_python_env3/lib/python3.12/site-packages/datajoint/table.py", line 464, in insert
raise err.suggest(
datajoint.errors.DuplicateError: ("Duplicate entry 'neuropixels 1.0 - 3A' for key 'PRIMARY'", 'To ignore duplicate entries in insert, set skip_duplicates=True')
If follow the deprecation advice and update to:
for probe_type in ('neuropixels 1.0 - 3A', 'neuropixels 1.0 - 3B',
'neuropixels 2.0 - SS', 'neuropixels 2.0 - MS'):
probe_element.create_neuropixels_probe(probe_type)
we get the same error as above since skip_dulicates=True
is still not passed.
Possible solutions
There are two solutions:
- Keep the old behavior by passing a
skip_duplicates=True
toprobe_element.create_neuropixels_probe
similar to the older behavior. - Update the Deprecation message to advise the user to replace the repeated calls of
create_neuropixels_probe
with a singlecreate_neuropixels_probe_types()
.