Skip to content

Commit

Permalink
working on multi-timepoint maps
Browse files Browse the repository at this point in the history
  • Loading branch information
cudmore committed Nov 14, 2024
1 parent d73b852 commit 58068e9
Show file tree
Hide file tree
Showing 8 changed files with 124 additions and 2,168 deletions.
230 changes: 0 additions & 230 deletions pymapmanager/interface2/mapWidgets/dendrogramWidget.py

This file was deleted.

63 changes: 46 additions & 17 deletions pymapmanager/interface2/mapWidgets/dendrogramWidget2.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,22 +11,24 @@
from qtpy import QtCore, QtWidgets

from pymapmanager.interface2.stackWidgets import mmWidget2
from pymapmanager.interface2.stackWidgets.mmWidget2 import pmmEventType, pmmEvent
# from pymapmanager.interface2.stackWidgets.mmWidget2 import pmmEventType, pmmEvent

from .mmMapPlot_mpl import getPlotDict_mpl, mmMapPlot_mpl

from .mmMapPlot2 import getPlotDict2
from .mmMapPlot2 import mmMapPlot2 # abb core
from .mapWidget import mapWidget

from pymapmanager._logger import logger

class dendrogramWidget2(mmWidget2):
"""A dendrogram widget.
Plot seesion versus spine position.
Plot session versus spine position.
"""

_widgetName = "Map Dendrogram v2"

signalOpenRun = QtCore.Signal(int, int, int) # start tp, plusMinus tp, spineID

def __init__(self, mapWidget : mapWidget):
# super().__init__(mapWidget = mapWidget)
super().__init__(mapWidget = mapWidget)
Expand All @@ -37,9 +39,43 @@ def __init__(self, mapWidget : mapWidget):

self.setWindowTitle('pyqt dendrogram v2')

def contextMenuEvent(self, event):
"""Show a right-click menu.
This is inherited from QtWidget.
"""
logger.info('')

lastClickDict = self.mmmPlot.getLastClickDict()
# logger.info(f'lastClickDict:{lastClickDict}')
spineID = lastClickDict['spineID']
timepoint = lastClickDict['timepoint']
logger.info(f'spineID:{spineID} timepoint:{timepoint}')

_menu = QtWidgets.QMenu(self)

plotStackAction = _menu.addAction(f'Plot Spine {spineID}')
#moveAction.setEnabled(isPointSelection and isOneRowSelection)

_menu.addSeparator()
plotPlusMinus1 = _menu.addAction(f'Plot Spine {spineID} +/- 1 tp')
plotPlusMinus2 = _menu.addAction(f'Plot Spine {spineID} +/- 2 tp')
plotPlusMinusAll = _menu.addAction(f'Plot Spine {spineID} +/- All')

# show the menu
action = _menu.exec_(self.mapToGlobal(event.pos()))
if action == plotStackAction:
self.signalOpenRun.emit(timepoint, 0, spineID)
elif action == plotPlusMinus1:
self.signalOpenRun.emit(timepoint, 1, spineID)
elif action == plotPlusMinus2:
self.signalOpenRun.emit(timepoint, 2, spineID)
elif action == plotPlusMinusAll:
self.signalOpenRun.emit(timepoint, float("inf"), spineID)

def _buildUI(self):

self.plotDict = getPlotDict2()
self.plotDict = getPlotDict_mpl()
plotDict = self.plotDict
if plotDict['doDark']:
plt.style.use('dark_background')
Expand All @@ -65,19 +101,12 @@ def _buildUI(self):
# core
plotDict['xstat'] = 't'
plotDict['ystat'] = 'spinePosition'

# mmMapPlot is pure matplotlib (no pyqt)

# _map = self.getMap()


_map = self._mapWidget.getMap()

# _map = self.myMap
# if _map is None:
# logger.error(f'_map is None ???')
self.mmmPlot = mmMapPlot2(_map, plotDict, fig=self.fig)

# logger.info('TODO: reactivate for core')
# pure matplotlib plot (no pyqt)
self.mmmPlot = mmMapPlot_mpl(_map, plotDict, fig=self.fig)
# connect mpl on pick back to self (simulates pyqt signal/slot)
self.mmmPlot.connect_on_pick(self._on_pick)

vLayout = QtWidgets.QVBoxLayout()
Expand All @@ -98,7 +127,7 @@ def _buildUI(self):
# plt.show()

def _on_pick(self, d):
"""Callback on selection in matplotlib.
"""Callback on selection in child mmMapPlot_mpl (matplotlib).
"""
logger.info('')
spineID = d['spineID']
Expand Down
13 changes: 8 additions & 5 deletions pymapmanager/interface2/mapWidgets/mapTableWidget.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,11 @@
from qtpy import QtGui, QtCore, QtWidgets

import pymapmanager as pmm
from pymapmanager.mmMap import mmMap

from pymapmanager.interface2.core.search_widget import myQTableView
from pymapmanager.interface2.core._data_model import pandasModel
# from pymapmanager.interface2.core._data_model import pandasModel

from pymapmanager._logger import logger

class mapTableWidget(QtWidgets.QWidget):
Expand All @@ -15,9 +18,9 @@ class mapTableWidget(QtWidgets.QWidget):
_widgetName = "Map Table"

signalOpenStack = QtCore.Signal(object) # session : int
signalOpenRun = QtCore.Signal(int, int) # start, plusMinus
signalOpenRun = QtCore.Signal(int, int) # start tp, plusMinus tp

def __init__(self, mmMap : pmm.mmMap):
def __init__(self, mmMap : mmMap):
super().__init__(None)

self._mmMap = None #mmMap
Expand All @@ -30,7 +33,7 @@ def __init__(self, mmMap : pmm.mmMap):

# self._setModel()

def slot_switchMap(self, mmMap : pmm.mmMap):
def slot_switchMap(self, mmMap : mmMap):
self._mmMap = mmMap
self._mapNameLabel.setText(mmMap.filename)
self._setModel()
Expand Down Expand Up @@ -129,7 +132,7 @@ def _setModel(self):

if __name__ == '__main__':
path = '/Users/cudmore/Sites/PyMapManager-Data/maps/rr30a/rr30a.txt'
aMap = pmm.mmMap(path)
aMap = mmMap(path)
# print(aMap.getDataFrame())

# creat the main application
Expand Down
Loading

0 comments on commit 58068e9

Please sign in to comment.