@@ -1095,24 +1095,15 @@ def read_openephys(
10951095 pt_metadata , _ , mux_info = get_probe_metadata_from_probe_features (probe_features , probe_part_number )
10961096
10971097 if selected_electrodes is not None :
1098- selected_electrodes_values = selected_electrodes . attrib . values ()
1098+ # ===== Path 1: Build full probe from probe_part_number and slice with SELECTED_ELECTRODES =====
10991099
1100- num_shank = pt_metadata [ "num_shanks" ]
1101- contact_per_shank = pt_metadata [ "cols_per_shank" ] * pt_metadata [ "rows_per_shank" ]
1100+ # Step 1: Build full probe with all contacts
1101+ full_probe = build_neuropixels_probe ( probe_part_number )
11021102
1103- if num_shank == 1 :
1104- elec_ids = np .arange (contact_per_shank , dtype = int )
1105- shank_ids = None
1106- else :
1107- elec_ids = np .concatenate ([np .arange (contact_per_shank , dtype = int ) for i in range (num_shank )])
1108- shank_ids = np .concatenate ([np .zeros (contact_per_shank , dtype = int ) + i for i in range (num_shank )])
1109-
1110- full_probe = _make_npx_probe_from_description (
1111- pt_metadata , probe_part_number , elec_ids , shank_ids , mux_info = mux_info
1112- )
1113-
1114- selected_electrode_indices = [int (electrode_index ) for electrode_index in selected_electrodes_values ]
1103+ # Step 2: Get selected electrode indices from XML
1104+ selected_electrode_indices = [int (electrode_index ) for electrode_index in selected_electrodes .attrib .values ()]
11151105
1106+ # Step 3: Slice probe to selected electrodes
11161107 sliced_probe = full_probe .get_slice (selection = selected_electrode_indices )
11171108
11181109 np_probe_dict = {
@@ -1123,6 +1114,8 @@ def read_openephys(
11231114 "probe" : sliced_probe ,
11241115 }
11251116 else :
1117+ # ===== Path 2 (Legacy): Build probe from ELECTRODE_XPOS/YPOS fields =====
1118+ # This path is kept unchanged for backward compatibility with older OpenEphys versions
11261119
11271120 channel_names = np .array (list (channels .attrib .keys ()))
11281121 channel_ids = np .array ([int (ch [2 :]) for ch in channel_names ])
0 commit comments