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 SpikeInterface/probeinterface#452.
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:
A1x32-6mm-50-177-H16-50). Our model names stop before the suffix.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.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):
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 NeuroNexus thickness option also came up in SpikeInterface/probeinterface#452.