@@ -1542,44 +1542,41 @@ def read_mearec(file: Union[str, Path]) -> Probe:
1542
1542
1543
1543
f = h5py .File (file , "r" )
1544
1544
positions = f ["channel_positions" ][()]
1545
- elinfo = f ["info" ]["electrodes" ]
1546
- elinfo_keys = elinfo .keys ()
1545
+ electrodes_info = f ["info" ]["electrodes" ]
1546
+ electrodes_info_keys = electrodes_info .keys ()
1547
1547
1548
1548
mearec_description = None
1549
1549
mearec_name = None
1550
- if "description" in elinfo_keys :
1551
- description = elinfo ["description" ][()]
1552
- mearec_description = description .decode ("utf-8" ) if isinstance (description , bytes ) else description
1553
- if "electrode_name" in elinfo_keys :
1554
- mearec_name = elinfo ["electrode_name" ][()]
1550
+ if "electrode_name" in electrodes_info_keys :
1551
+ mearec_name = electrodes_info ["electrode_name" ][()]
1555
1552
mearec_name = mearec_name .decode ("utf-8" ) if isinstance (mearec_name , bytes ) else mearec_name
1556
1553
1557
- probe = Probe (ndim = 2 , si_units = "um" )
1554
+ if "description" in electrodes_info_keys :
1555
+ description = electrodes_info ["description" ][()]
1556
+ mearec_description = description .decode ("utf-8" ) if isinstance (description , bytes ) else description
1558
1557
1559
- if "plane" in elinfo_keys :
1560
- plane = elinfo ["plane" ]
1561
- else :
1562
- plane = "yz" # default
1558
+ probe = Probe (ndim = 2 , si_units = "um" )
1563
1559
1564
- if plane == "xy" :
1565
- positions_2d = positions [()][:, :2 ]
1566
- elif plane == "xz" :
1567
- positions_2d = positions [()][:, [0 , 2 ]]
1568
- else :
1569
- positions_2d = positions [()][:, 1 :]
1560
+ plane = "yz" # default
1561
+ if "plane" in electrodes_info_keys :
1562
+ plane = electrodes_info ["plane" ][()]
1563
+ plane = plane .decode ("utf-8" ) if isinstance (plane , bytes ) else plane
1564
+
1565
+ plane_to_columns = {"xy" : [0 , 1 ], "xz" : [0 , 2 ], "yz" : [1 , 2 ]}
1566
+ columns = plane_to_columns [plane ]
1567
+ positions_2d = positions [()][:, columns ]
1570
1568
1571
1569
shape = None
1572
- if "shape" in elinfo_keys :
1573
- shape = elinfo ["shape" ][()]
1574
- if isinstance (shape , bytes ):
1575
- shape = shape .decode ()
1570
+ if "shape" in electrodes_info_keys :
1571
+ shape = electrodes_info ["shape" ][()]
1572
+ shape = shape .decode ("utf-8" ) if isinstance (shape , bytes ) else shape
1576
1573
1577
1574
size = None
1578
- if "shape" in elinfo_keys :
1579
- size = elinfo ["size" ][()]
1575
+ if "shape" in electrodes_info_keys :
1576
+ size = electrodes_info ["size" ][()]
1580
1577
1581
1578
shape_params = {}
1582
- if shape is not None :
1579
+ if shape is not None and size is not None :
1583
1580
if shape == "circle" :
1584
1581
shape_params = {"radius" : size }
1585
1582
elif shape == "square" :
@@ -1591,14 +1588,12 @@ def read_mearec(file: Union[str, Path]) -> Probe:
1591
1588
probe .set_contacts (positions_2d , shapes = shape , shape_params = shape_params )
1592
1589
1593
1590
# add MEArec annotations
1594
- if mearec_name is not None :
1595
- probe .annotate (mearec_name = mearec_name )
1596
- if mearec_description is not None :
1597
- probe .annotate (mearec_description = mearec_description )
1591
+ annotations = dict (mearec_name = mearec_name , mearec_description = mearec_description )
1592
+ probe .annotate (** annotations )
1598
1593
1599
1594
# set device indices
1600
- if elinfo ["sortlist" ][()] not in (b"null" , "null" ):
1601
- channel_indices = elinfo ["sortlist" ][()]
1595
+ if electrodes_info ["sortlist" ][()] not in (b"null" , "null" ):
1596
+ channel_indices = electrodes_info ["sortlist" ][()]
1602
1597
else :
1603
1598
channel_indices = np .arange (positions .shape [0 ], dtype = "int64" )
1604
1599
probe .set_device_channel_indices (channel_indices )
0 commit comments