@@ -1568,44 +1568,41 @@ def read_mearec(file: Union[str, Path]) -> Probe:
1568
1568
1569
1569
f = h5py .File (file , "r" )
1570
1570
positions = f ["channel_positions" ][()]
1571
- elinfo = f ["info" ]["electrodes" ]
1572
- elinfo_keys = elinfo .keys ()
1571
+ electrodes_info = f ["info" ]["electrodes" ]
1572
+ electrodes_info_keys = electrodes_info .keys ()
1573
1573
1574
1574
mearec_description = None
1575
1575
mearec_name = None
1576
- if "description" in elinfo_keys :
1577
- description = elinfo ["description" ][()]
1578
- mearec_description = description .decode ("utf-8" ) if isinstance (description , bytes ) else description
1579
- if "electrode_name" in elinfo_keys :
1580
- mearec_name = elinfo ["electrode_name" ][()]
1576
+ if "electrode_name" in electrodes_info_keys :
1577
+ mearec_name = electrodes_info ["electrode_name" ][()]
1581
1578
mearec_name = mearec_name .decode ("utf-8" ) if isinstance (mearec_name , bytes ) else mearec_name
1582
1579
1583
- probe = Probe (ndim = 2 , si_units = "um" )
1580
+ if "description" in electrodes_info_keys :
1581
+ description = electrodes_info ["description" ][()]
1582
+ mearec_description = description .decode ("utf-8" ) if isinstance (description , bytes ) else description
1584
1583
1585
- if "plane" in elinfo_keys :
1586
- plane = elinfo ["plane" ]
1587
- else :
1588
- plane = "yz" # default
1584
+ probe = Probe (ndim = 2 , si_units = "um" )
1589
1585
1590
- if plane == "xy" :
1591
- positions_2d = positions [()][:, :2 ]
1592
- elif plane == "xz" :
1593
- positions_2d = positions [()][:, [0 , 2 ]]
1594
- else :
1595
- positions_2d = positions [()][:, 1 :]
1586
+ plane = "yz" # default
1587
+ if "plane" in electrodes_info_keys :
1588
+ plane = electrodes_info ["plane" ][()]
1589
+ plane = plane .decode ("utf-8" ) if isinstance (plane , bytes ) else plane
1590
+
1591
+ plane_to_columns = {"xy" : [0 , 1 ], "xz" : [0 , 2 ], "yz" : [1 , 2 ]}
1592
+ columns = plane_to_columns [plane ]
1593
+ positions_2d = positions [()][:, columns ]
1596
1594
1597
1595
shape = None
1598
- if "shape" in elinfo_keys :
1599
- shape = elinfo ["shape" ][()]
1600
- if isinstance (shape , bytes ):
1601
- shape = shape .decode ()
1596
+ if "shape" in electrodes_info_keys :
1597
+ shape = electrodes_info ["shape" ][()]
1598
+ shape = shape .decode ("utf-8" ) if isinstance (shape , bytes ) else shape
1602
1599
1603
1600
size = None
1604
- if "shape" in elinfo_keys :
1605
- size = elinfo ["size" ][()]
1601
+ if "shape" in electrodes_info_keys :
1602
+ size = electrodes_info ["size" ][()]
1606
1603
1607
1604
shape_params = {}
1608
- if shape is not None :
1605
+ if shape is not None and size is not None :
1609
1606
if shape == "circle" :
1610
1607
shape_params = {"radius" : size }
1611
1608
elif shape == "square" :
@@ -1617,14 +1614,12 @@ def read_mearec(file: Union[str, Path]) -> Probe:
1617
1614
probe .set_contacts (positions_2d , shapes = shape , shape_params = shape_params )
1618
1615
1619
1616
# add MEArec annotations
1620
- if mearec_name is not None :
1621
- probe .annotate (mearec_name = mearec_name )
1622
- if mearec_description is not None :
1623
- probe .annotate (mearec_description = mearec_description )
1617
+ annotations = dict (mearec_name = mearec_name , mearec_description = mearec_description )
1618
+ probe .annotate (** annotations )
1624
1619
1625
1620
# set device indices
1626
- if elinfo ["sortlist" ][()] not in (b"null" , "null" ):
1627
- channel_indices = elinfo ["sortlist" ][()]
1621
+ if electrodes_info ["sortlist" ][()] not in (b"null" , "null" ):
1622
+ channel_indices = electrodes_info ["sortlist" ][()]
1628
1623
else :
1629
1624
channel_indices = np .arange (positions .shape [0 ], dtype = "int64" )
1630
1625
probe .set_device_channel_indices (channel_indices )
0 commit comments