SpikeInterface / SpikeInterface/probeinterface_library
Support pobes whose geometry is chosen at order time
Nobody has claimed this yet.
- Dominant language
- TypeScript
- Stars
- 21
- Forks
- 11
- Avg merge
- 22h 23m
- Merged PRs (30d)
- 2
Description
Right now every entry in the library is a part number that pins the whole geometry: NP1000, ASSY-325D-F, A4x8-5mm-100-400-177. For those a lookup is the right answer.
However, some manufacturers let the buyer choose part of the geometry when ordering, so the model name alone does not determine the probe:
- NeuroNexus sells many designs with a 15 or 50 µm thick shank and adds the thickness as a suffix to the part number (
A1x32-6mm-50-177-H16-50). Our model names stop before the suffix. - Diagnostic Biochips Deep Array datasheets say "please specify the shank length", up to 90 mm. The six
DA*files in the library draw the contour to y = 90000 µm, so they picked the maximum without saying so. The contacts are fine as they are measured from the tip. - Blackrock Utah arrays have the needle length (0.5 to 1.5 mm), the grid size and the channel count chosen per order, with no part number at all.
- Plexon U-Probe, V-Probe and S-Probe (channel count, spacing, shaft length) and CorTec AirRay grids work the same way. They are not in the library because there is no single file we could add.
A file for one of these looks exactly as authoritative as NP1000, but it answers a question it can't answer. Somebody with a 1.0 mm Utah array would load a 1.5 mm file and nothing would warn them.
What I have in mind (I tried it on a local branch with the Utah array):
- probeinterface gets a generator per family, next to
generate_multi_shank, that fixes what the manufacturer fixes and takes the ordered values as arguments with no defaults, e.g.generate_utah_array(needle_length_um, rows, cols). - The library keeps one entry per family that lists the fixed values, the free parameters with their units and published ranges, and the generator to call, instead of a probe file. A widget that allows to explore the parmameter options, changes so you can visualize when you pick them and gives you the python snippet to load it.
- Entries that are a real part number stay as they are.
The NeuroNexus thickness option also came up in https://github.com/SpikeInterface/probeinterface/issues/452.
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reading the existing generate_multi_shank generator and the current library entries for the probe families described in the issue. Compare which geometry values are fixed versus chosen at order time, then review how the widget currently loads and visualizes entries. Done means parameterized family generators, metadata for units and published ranges, preserved real-part-number entries, and widget support for selecting and loading generated probes.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python, typescript
- Domain
- tooling
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100