Skip to content

Commit 8f6e280

Browse files
committed
spacing defaults to none
1 parent 704f6ed commit 8f6e280

File tree

1 file changed

+29
-26
lines changed

1 file changed

+29
-26
lines changed

element_array_ephys/probe.py

Lines changed: 29 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -74,9 +74,9 @@ class Electrode(dj.Part):
7474
---
7575
shank: int # shank index, starts at 0, advance left to right
7676
shank_col: int # column index, starts at 0, advance left to right
77-
shank_row: int # row index, starts at 0, advance tip to tail
78-
x_coord=NULL: float # (μm) x coordinate of the electrode within the probe, (0, 0) is the bottom left corner of the probe
79-
y_coord=NULL: float # (μm) y coordinate of the electrode within the probe, (0, 0) is the bottom left corner of the probe
77+
shank_row: int # row index, starts at 0.
78+
x_coord=NULL: float # (μm) x coordinate of the electrode within the probe.
79+
y_coord=NULL: float # (μm) y coordinate of the electrode within the probe.
8080
"""
8181

8282
@staticmethod
@@ -142,8 +142,8 @@ def create_neuropixels_probe(probe_type: str = "neuropixels 1.0 - 3A"):
142142
),
143143
}
144144

145-
electrodes = build_electrode_layouts(**neuropixels_probes_config[probe_type])
146145
probe_type = {"probe_type": probe_type}
146+
electrodes = build_electrode_layouts({**neuropixels_probes_config[probe_type["probe_type"]], **probe_type})
147147
with ProbeType.connection.transaction:
148148
ProbeType.insert1(probe_type, skip_duplicates=True)
149149
ProbeType.Electrode.insert(
@@ -203,33 +203,35 @@ class Electrode(dj.Part):
203203

204204

205205
def build_electrode_layouts(
206+
probe_type : str,
206207
site_count_per_shank: int,
207-
col_spacing: float = 1,
208-
row_spacing: float = 1,
208+
col_spacing: float = None,
209+
row_spacing: float = None,
209210
white_spacing: float = None,
210211
col_count_per_shank: int = 1,
211212
shank_count: int = 1,
212-
shank_spacing: float = 1,
213+
shank_spacing: float = None,
213214
y_origin="bottom",
214-
) -> dict:
215+
) -> list[dict]:
215216

216217
"""Builds electrode layouts.
217218
218219
Args:
219220
site_count_per_shank (int): site count per shank.
220-
col_spacing (float): (μm) horizontal spacing between sites. Defaults to 1 (single column).
221-
row_spacing (float): (μm) vertical spacing between columns. Defaults to 1 (single row).
221+
col_spacing (float): (μm) horizontal spacing between sites. Defaults to None (single column).
222+
row_spacing (float): (μm) vertical spacing between columns. Defaults to None (single row).
222223
white_spacing (float): (μm) offset spacing. Defaults to None.
223224
col_count_per_shank (int): number of column per shank. Defaults to 1 (single column).
224225
shank_count (int): number of shank. Defaults to 1 (single shank).
225-
shank_spacing (float): spacing between shanks. Defaults to 1 (single shank).
226+
shank_spacing (float): (μm) spacing between shanks. Defaults to None (single shank).
226227
y_origin (str): {"bottom", "top"}. y value decrements if "top". Defaults to "bottom".
227228
"""
228229
row_count = int(site_count_per_shank / col_count_per_shank)
229230
x_coords = np.tile(
230-
np.arange(0, col_spacing * col_count_per_shank, col_spacing), row_count
231+
np.arange(0, (col_spacing or 1) * col_count_per_shank, (col_spacing or 1)),
232+
row_count,
231233
)
232-
y_coords = np.repeat(np.arange(row_count) * row_spacing, col_count_per_shank)
234+
y_coords = np.repeat(np.arange(row_count) * (row_spacing or 1), col_count_per_shank)
233235

234236
if white_spacing:
235237
x_white_spaces = np.tile(
@@ -241,18 +243,19 @@ def build_electrode_layouts(
241243
shank_rows = np.repeat(range(row_count), col_count_per_shank)
242244

243245
electrode_layouts = [
244-
{
245-
"electrode": (site_count_per_shank * shank_no) + e_id,
246-
"shank": shank_no,
247-
"shank_col": c_id,
248-
"shank_row": r_id,
249-
"x_coord": x + (shank_no * shank_spacing),
250-
"y_coord": y if y_origin == "bottom" else -y,
251-
}
252-
for shank_no in range(shank_count)
253-
for e_id, (c_id, r_id, x, y) in enumerate(
254-
zip(shank_cols, shank_rows, x_coords, y_coords)
255-
)
256-
]
246+
{
247+
"probe_type": probe_type,
248+
"electrode": (site_count_per_shank * shank_no) + e_id,
249+
"shank": shank_no,
250+
"shank_col": c_id,
251+
"shank_row": r_id,
252+
"x_coord": x + (shank_no * (shank_spacing or 1)),
253+
"y_coord": y if y_origin == "bottom" else -y,
254+
}
255+
for shank_no in range(shank_count)
256+
for e_id, (c_id, r_id, x, y) in enumerate(
257+
zip(shank_cols, shank_rows, x_coords, y_coords)
258+
)
259+
]
257260

258261
return electrode_layouts

0 commit comments

Comments
 (0)