Skip to content

Commit

Permalink
added olsen nd2
Browse files Browse the repository at this point in the history
  • Loading branch information
cudmore committed Feb 4, 2025
1 parent 3f16dcb commit bf11d5f
Show file tree
Hide file tree
Showing 6 changed files with 51 additions and 15 deletions.
20 changes: 15 additions & 5 deletions sandbox/qt-plotly/myPlot.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,12 @@

from IPython.display import display

"""
Requires
pip install PyQtWebEngine
pip install ipywidgets
"""

def plot():
# fig = go.Figure(data=[go.Scattergl(x=[1, 2, 3], y=[4, 5, 6])])
x=[1, 2, 3]
Expand All @@ -20,7 +26,7 @@ def plot():

out = Output()

class Backend(QtCore.QObject):
class myBackend(QtCore.QObject):
pointChanged = QtCore.Signal(float, float)

# @QtCore.Signal(float,float)
Expand All @@ -34,7 +40,7 @@ def __init__(self, parent=None):

# self.button = QtWidgets.QPushButton('Plot', self)
# self.browser = QtWebEngineWidgets.QWebEngineView(self)
self.browser = QtWebEngineWidgets.QWebEngineView()
self.browser: QtWebEngineWidgets.QWebEngineView = QtWebEngineWidgets.QWebEngineView()

# self.vlayout = QtWidgets.QVBoxLayout(self)
# self.vlayout.addWidget(self.button, alignment=QtCore.Qt.AlignHCenter)
Expand All @@ -55,20 +61,23 @@ def onPointChanged(self, x, y):
def plot2(self):
# map_view = QtWebEngineWidgets.QWebEngineView()

backend = Backend(self)
backend = myBackend(self)
backend.pointChanged.connect(self.onPointChanged)

channel = QtWebChannel.QWebChannel(self)
channel.registerObject('backend', backend)

self.browser.page().setWebChannel(channel)

# file = QtCore.QDir.current().absoluteFilePath("index.html")
# map_view.load(QtCore.QUrl.fromLocalFile(file))

x=[1, 2, 3]
y=[4, 5, 6]
self.fig = go.FigureWidget([go.Scatter(x=x, y=y, mode='markers')])
self.fig : go.FigureWidget = go.FigureWidget([go.Scatter(x=x, y=y, mode='markers')])

scatter = self.fig.data[0]
# The data property is a tuple of the figure's trace objects
scatter = self.fig.data[0] # FigureWidget
scatter.on_click(self.update_point)

self.browser.setHtml(self.fig.to_html(include_plotlyjs='cdn'))
Expand All @@ -81,6 +90,7 @@ def plot2(self):

@out.capture(clear_output=True)
def update_point(self, trace, points, selector):
sys.exit(1)
print('!!!!')

def show_graph(self):
Expand Down
3 changes: 3 additions & 0 deletions sandbox/qt-plotly/utils.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ window.onload = function() {
var mapDiv = 'map' + suffix;
var map = API.map(mapDiv, {
center: [51.505, -0.09],
// center: [38.575764, -121.478851],
zoom: 4,
dragging: true,
scrollWheelZoom: true,
Expand All @@ -30,12 +31,14 @@ window.onload = function() {
"name": "Grand Canyon USGS",
"format": "png",
"bounds": [15.976953506469728, 45.813157465613884],
// "bounds": [38.575764, -121.478851],
"minzoom": 10,
"version": "1.0.0",
"maxzoom": 16,
"center": [15.976953506469728,
45.813157465613884, 16
],
// "center": [38.575764, -121.478851],
"type": "overlay",
"description": "",
"basename": "grandcanyon",
Expand Down
2 changes: 2 additions & 0 deletions src/pymapmanager/interface2/mainMenus.py
Original file line number Diff line number Diff line change
Expand Up @@ -425,6 +425,8 @@ def _refreshFileMenu(self):

frontWindow = self.getApp().getFrontWindow()

logger.warning(f'frontWindow is:{frontWindow}')

if isinstance(frontWindow, (mmWidget2, mapWidget)):
if frontWindow.getPath().endswith('.mmap.zip'):
enableSave = False
Expand Down
19 changes: 15 additions & 4 deletions src/pymapmanager/interface2/openFirstWindow.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,12 @@
from qtpy import QtCore, QtWidgets, QtGui

import pymapmanager
from pymapmanager.interface2.mainWindow import MainWindow
# from pymapmanager.interface2.mainWindow import MainWindow

from pymapmanager._logger import logger

class OpenFirstWindow(MainWindow):
# class OpenFirstWindow(MainWindow):
class OpenFirstWindow(QtWidgets.QMainWindow):
"""A file/folder loading window.
Open this at app start and close once a file/folder is loaded
Expand All @@ -29,6 +30,9 @@ def __init__(self,

self._app : PyMapManagerApp = pyMapManagerApp

self.statusBar = QtWidgets.QStatusBar()
self.setStatusBar(self.statusBar)

# self.recentStackList = self.getApp().getConfigDict().getRecentStacks()
# self.recentMapList = self.getApp().getConfigDict().getRecentMaps()

Expand All @@ -53,8 +57,15 @@ def __init__(self,

self.setWindowTitle('MapManager Open Files and Folders')

# def getApp(self):
# return self._app
def setStatus(self, txt : str):
self.statusBar.showMessage(txt)

def getApp(self) -> "pymapmanager.interface2.PyMapManagerApp":
"""Get running application.
"""
# from PyQt5.QtWidgets import QApplication
# return QApplication.instance()
return self._app

# def _makeRecentTable(self, pathList : List[str], headerStr = ''):
def _makeRecentTable(self, pathDictList : List[dict], headerStr = '') -> QtWidgets.QTableWidget:
Expand Down
14 changes: 12 additions & 2 deletions src/pymapmanager/interface2/runInterfaceBob.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,17 +27,27 @@ def run():
# path = '/Users/cudmore/Desktop/multi_timepoint_map_seg_spine_connected.mmap'
# path = mapmanagercore.data.getMultiTimepointMap()

path = '/Users/cudmore/Desktop/olsen_example.mmap'
# path = '/Users/cudmore/Desktop/olsen_example.mmap'
path = '/Users/cudmore/Desktop/example_nd2.mmap'
path = '/Users/cudmore/Desktop/example_nd2.mmap.zip'
path = '/Users/cudmore/Sites/MapManagerCore-Data/data/Animal_145_Slice_1_Right.mmap.zip'
path = '/Users/cudmore/Desktop/Animal_145_Slice_1_Right.mmap.zip'

from mapmanagercore.data import getNd2Channel_1, getSingleTimepointMap_nd2
path = getNd2Channel_1()
path = getSingleTimepointMap_nd2()

app = PyMapManagerApp(sys.argv)
# mw will be map widget if path has multiple timepoints, otherwise mw is a stackwidget2

logger.info(f'loading stack widget from path:{path}')
mw = app.loadStackWidget(path)

# run a stack plugin
# mw.runPlugin('Stack Contrast')

# works
from pprint import pprint
# from pprint import pprint
# logger.info('getTimeSeriesCore')
# pprint(mw.getTimeSeriesCore().getMapImages().metadata(0).experimentMetadata.getValue('Species'))
# pprint(mw.getTimeSeriesCore().getMapImages().metadata(0).experimentMetadata.asDict())
Expand Down
8 changes: 4 additions & 4 deletions src/pymapmanager/timeseriesCore.py
Original file line number Diff line number Diff line change
Expand Up @@ -144,16 +144,16 @@ def __init__(self, path : str):

self._isDirty : bool = False

# when user drags/drops a mmap zarr DirectoryStore folder
if path.endswith('/'):
path = path[:-1]

# TODO just use endswith(), splitext does not handle '.ome.zarr'
_ext = os.path.splitext(path)[1]
# if path.endswith('.mmap') or path.endswith('.mmap/') or path.endswith('.mmap.zip'):
if _ext in LOAD_SAVE_EXTENSIONS:
self._load_zarr()
elif path.endswith('.tif') or path.endswith('.nd2'):
self._import_tiff()
# elif path.endswith('.ome.zarr'):
# elif path.endswith('.zarr') or path.endswith('.zarr/'):
# self._import_ome_zarr()
else:
# TODO properly handle this
logger.error(f'did not load file extension: "{_ext}"')
Expand Down

0 comments on commit bf11d5f

Please sign in to comment.