@@ -1106,15 +1106,24 @@ def read_openephys(
11061106 pt_metadata , _ , mux_info = get_probe_metadata_from_probe_features (probe_features , probe_part_number )
11071107
11081108 if selected_electrodes is not None :
1109- # ===== Path 1: Build full probe from probe_part_number and slice with SELECTED_ELECTRODES =====
1109+ selected_electrodes_values = selected_electrodes . attrib . values ()
11101110
1111- # Step 1: Build full probe with all contacts
1112- full_probe = build_neuropixels_probe ( probe_part_number )
1111+ num_shank = pt_metadata [ "num_shanks" ]
1112+ contact_per_shank = pt_metadata [ "cols_per_shank" ] * pt_metadata [ "rows_per_shank" ]
11131113
1114- # Step 2: Get selected electrode indices from XML
1115- selected_electrode_indices = [int (electrode_index ) for electrode_index in selected_electrodes .attrib .values ()]
1114+ if num_shank == 1 :
1115+ elec_ids = np .arange (contact_per_shank , dtype = int )
1116+ shank_ids = None
1117+ else :
1118+ elec_ids = np .concatenate ([np .arange (contact_per_shank , dtype = int ) for i in range (num_shank )])
1119+ shank_ids = np .concatenate ([np .zeros (contact_per_shank , dtype = int ) + i for i in range (num_shank )])
1120+
1121+ full_probe = _make_npx_probe_from_description (
1122+ pt_metadata , probe_part_number , elec_ids , shank_ids , mux_info = mux_info
1123+ )
1124+
1125+ selected_electrode_indices = [int (electrode_index ) for electrode_index in selected_electrodes_values ]
11161126
1117- # Step 3: Slice probe to selected electrodes
11181127 sliced_probe = full_probe .get_slice (selection = selected_electrode_indices )
11191128
11201129 np_probe_dict = {
@@ -1125,8 +1134,6 @@ def read_openephys(
11251134 "probe" : sliced_probe ,
11261135 }
11271136 else :
1128- # ===== Path 2 (Legacy): Build probe from ELECTRODE_XPOS/YPOS fields =====
1129- # This path is kept unchanged for backward compatibility with older OpenEphys versions
11301137
11311138 channel_names = np .array (list (channels .attrib .keys ()))
11321139 channel_ids = np .array ([int (ch [2 :]) for ch in channel_names ])
0 commit comments