Skip to content
This repository has been archived by the owner on Nov 26, 2023. It is now read-only.

Commit

Permalink
invert the image array, show user comments in the GUI
Browse files Browse the repository at this point in the history
  • Loading branch information
kushalkolar committed Jul 27, 2020
1 parent 99bb1da commit dde6ed3
Show file tree
Hide file tree
Showing 3 changed files with 73 additions and 3 deletions.
37 changes: 36 additions & 1 deletion mesmerize/viewer/modules/femtonics_mesc.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,21 @@
from re import sub as regex_sub
from ...pyqtgraphCore import PlotWidget
import numpy as np
from cv2 import bitwise_not


def ascii_to_str(array: np.ndarray):
"""
Get a string from an array of ascii integers
:param array: array of integers representing ascii chars
:return: string represented by the array
"""
return ''.join(
map(
chr, filter(None, array)
)
)


# Navigator object which helps control the
Expand Down Expand Up @@ -248,6 +263,7 @@ def __init__(self, parent, viewer_ref): # when a ModuleGUI() is instantiated th
]

self.mesc_navigator = MEScNavigator(self, list_widgets)
self.mesc_navigator.sig_hpath_changed.connect(self.set_comment_line)
self.mesc_navigator.sig_hpath_changed.connect(self._enable_import_button)

self.mesc_navigator.sig_channel_doubleclicked.connect(
Expand Down Expand Up @@ -322,6 +338,16 @@ def _channel_doubleclicked(self, hpath: dict):

self.plot_widgets.append(pw)

def set_comment_line(self, hpath: dict):
if hpath['unit']:
f = self.mesc_navigator.file
comment = f[hpath['session']][hpath['unit']].attrs['Comment']
comment = ascii_to_str(comment)
self.ui.lineEdit_comment.setText(comment)

else:
self.ui.lineEdit_comment.clear()

@present_exceptions(
'Could not import recording',
'The following error occurred while trying to import the chosen recording'
Expand All @@ -339,7 +365,9 @@ def import_recording(self, *args):
# Load the image sequence stored in this `MUnit_X`
f = self.mesc_navigator.file # hdf file handle
hpath = self.mesc_navigator.get_hpath(str) # hdf path
img_seq = f[hpath][()] # image array
img_seq = bitwise_not( # load & invert image array
f[hpath][()]
)

sess = self.mesc_navigator.get_hpath(dict)['session']
unit = self.mesc_navigator.get_hpath(dict)['unit']
Expand All @@ -348,6 +376,10 @@ def import_recording(self, *args):
f[sess][unit].attrs['ZAxisConversionConversionLinearScale'] + \
f[sess][unit].attrs['ZAxisConversionConversionLinearOffset']

z_units = ascii_to_str(f[sess][unit].attrs['ZAxisConversionUnitName'])
if z_units != 'ms':
raise TypeError(f"Z-axis units <{z_units}> not supported")

# get the sampling rate
fps = 1 / (frame_time / 1000) # for now just assuming the frame time are always in milliseconds

Expand Down Expand Up @@ -376,3 +408,6 @@ def import_recording(self, *args):

# Update the GUI according to the new ViewerWorkEnv
self.vi.update_workEnv()

# set the "Current Image sequence" in the Viewer
self.vi.viewer.ui.label_curr_img_seq_name.setText(hpath)
17 changes: 15 additions & 2 deletions mesmerize/viewer/modules/pytemplates/femtonics_mesc_template.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file './ui_files/femtonics_mesc_template.ui'
# Form implementation generated from reading ui file './femtonics_mesc_template.ui'
#
# Created by: PyQt5 UI code generator 5.9.2
#
Expand Down Expand Up @@ -85,6 +85,16 @@ def setupUi(self, DockWidget):
self.verticalLayout_3.addWidget(self.listWidget_channel)
self.horizontalLayout_2.addLayout(self.verticalLayout_3)
self.verticalLayout_5.addLayout(self.horizontalLayout_2)
self.horizontalLayout_5 = QtWidgets.QHBoxLayout()
self.horizontalLayout_5.setObjectName("horizontalLayout_5")
self.label_5 = QtWidgets.QLabel(self.tab_mesc_file)
self.label_5.setObjectName("label_5")
self.horizontalLayout_5.addWidget(self.label_5)
self.lineEdit_comment = QtWidgets.QLineEdit(self.tab_mesc_file)
self.lineEdit_comment.setReadOnly(True)
self.lineEdit_comment.setObjectName("lineEdit_comment")
self.horizontalLayout_5.addWidget(self.lineEdit_comment)
self.verticalLayout_5.addLayout(self.horizontalLayout_5)
self.label_4 = QtWidgets.QLabel(self.tab_mesc_file)
font = QtGui.QFont()
font.setPointSize(14)
Expand Down Expand Up @@ -119,7 +129,8 @@ def setupUi(self, DockWidget):
DockWidget.setTabOrder(self.pushButton_close_file, self.listWidget_session)
DockWidget.setTabOrder(self.listWidget_session, self.listWidget_unit)
DockWidget.setTabOrder(self.listWidget_unit, self.listWidget_channel)
DockWidget.setTabOrder(self.listWidget_channel, self.pushButton_import_image)
DockWidget.setTabOrder(self.listWidget_channel, self.lineEdit_comment)
DockWidget.setTabOrder(self.lineEdit_comment, self.pushButton_import_image)
DockWidget.setTabOrder(self.pushButton_import_image, self.pushButton_import_stim_map)

def retranslateUi(self, DockWidget):
Expand All @@ -131,6 +142,8 @@ def retranslateUi(self, DockWidget):
self.label.setText(_translate("DockWidget", "Session"))
self.label_2.setText(_translate("DockWidget", "Unit"))
self.label_3.setText(_translate("DockWidget", "Channel"))
self.label_5.setText(_translate("DockWidget", "Comment:"))
self.lineEdit_comment.setToolTip(_translate("DockWidget", "Comment stored in the selected MUnit"))
self.label_4.setText(_translate("DockWidget", "Import:"))
self.pushButton_import_image.setText(_translate("DockWidget", "Image"))
self.pushButton_import_stim_map.setText(_translate("DockWidget", "Stim Map"))
Expand Down
22 changes: 22 additions & 0 deletions mesmerize/viewer/modules/ui_files/femtonics_mesc_template.ui
Original file line number Diff line number Diff line change
Expand Up @@ -150,6 +150,27 @@
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_5">
<item>
<widget class="QLabel" name="label_5">
<property name="text">
<string>Comment:</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="lineEdit_comment">
<property name="toolTip">
<string>Comment stored in the selected MUnit</string>
</property>
<property name="readOnly">
<bool>true</bool>
</property>
</widget>
</item>
</layout>
</item>
<item>
<widget class="QLabel" name="label_4">
<property name="font">
Expand Down Expand Up @@ -221,6 +242,7 @@
<tabstop>listWidget_session</tabstop>
<tabstop>listWidget_unit</tabstop>
<tabstop>listWidget_channel</tabstop>
<tabstop>lineEdit_comment</tabstop>
<tabstop>pushButton_import_image</tabstop>
<tabstop>pushButton_import_stim_map</tabstop>
</tabstops>
Expand Down

0 comments on commit dde6ed3

Please sign in to comment.