Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[BUG] Connection via pycromanager failing #480

Open
dbcortes2042000 opened this issue Sep 11, 2024 · 10 comments · May be fixed by #483
Open

[BUG] Connection via pycromanager failing #480

dbcortes2042000 opened this issue Sep 11, 2024 · 10 comments · May be fixed by #483

Comments

@dbcortes2042000
Copy link

Running on Windows 11 with Anaconda, had to install with modified napari:
pip install recOrder-napari[acq]==0.4.2rc1

recOrder opens just fine now but does not connect to MicroManager which I have running an old Olympus IX81 body along with a TSI Thorlabs CS135MUN camera.

Already checked that I have enabled port 4827 for pycromanager.

I tried changing the order in which I open micromanager and napari w/ recOrder and consistently get the same error:

Exception ignored in: <function _JavaObjectShadow.__del__ at 0x000001AB444B7BE0> Traceback (most recent call last): File "C:\Users\cortesadmin\anaconda3\envs\recOrder\lib\site-packages\pycromanager\zmq_bridge\_bridge.py", line 639, in __del__ self._close() File "C:\Users\cortesadmin\anaconda3\envs\recOrder\lib\site-packages\pycromanager\zmq_bridge\_bridge.py", line 563, in _close self._send(message) File "C:\Users\cortesadmin\anaconda3\envs\recOrder\lib\site-packages\pycromanager\zmq_bridge\_bridge.py", line 577, in _send return self._get_bridge()._send(message) File "C:\Users\cortesadmin\anaconda3\envs\recOrder\lib\site-packages\pycromanager\zmq_bridge\_bridge.py", line 325, in _send return self._main_socket.send(message, timeout=timeout) File "C:\Users\cortesadmin\anaconda3\envs\recOrder\lib\site-packages\pycromanager\zmq_bridge\_bridge.py", line 116, in send raise Exception("Tried to send message through socket {}, which is already closed".format(self._port)) Exception: Tried to send message through socket 4827, which is already closed Exception ignored in: <function _JavaObjectShadow.__del__ at 0x000001AB444B7BE0> Traceback (most recent call last): File "C:\Users\cortesadmin\anaconda3\envs\recOrder\lib\site-packages\pycromanager\zmq_bridge\_bridge.py", line 639, in __del__ self._close() File "C:\Users\cortesadmin\anaconda3\envs\recOrder\lib\site-packages\pycromanager\zmq_bridge\_bridge.py", line 563, in _close self._send(message) File "C:\Users\cortesadmin\anaconda3\envs\recOrder\lib\site-packages\pycromanager\zmq_bridge\_bridge.py", line 577, in _send return self._get_bridge()._send(message) File "C:\Users\cortesadmin\anaconda3\envs\recOrder\lib\site-packages\pycromanager\zmq_bridge\_bridge.py", line 325, in _send return self._main_socket.send(message, timeout=timeout) File "C:\Users\cortesadmin\anaconda3\envs\recOrder\lib\site-packages\pycromanager\zmq_bridge\_bridge.py", line 116, in send raise Exception("Tried to send message through socket {}, which is already closed".format(self._port)) Exception: Tried to send message through socket 4827, which is already closed

@dbcortes2042000
Copy link
Author

Went ahead and did a fresh reinstall of everything just in case. Still getting the same issue. recOrder gui does seem to connect at least partially to MM as it correctly imports the Config Group name from MM for the Meadowlark controller.

@talonchandler
Copy link
Collaborator

recOrder gui does seem to connect at least partially to MM as it correctly imports the Config Group name from MM for the Meadowlark controller.

That's a good sign!

Our most recent successful tests have been with MicroManger nightly build 2023-04-26. Are you using this version? Are you using pycromanager==0.27.2?

Are there any other potential incompatibilities in this table?

@dbcortes2042000
Copy link
Author

Only potential incompatibility I see is Windows 11 rather than 10. I am using the Micromanager nightly build recommended, Only thing I'm unsure of is the version of pycromanager. Is there an easy way to tell? I tried
pycromanager --version
on the console but that doesn't work.

@talonchandler
Copy link
Collaborator

You can find the pycromanager version with pip list | grep pycromanager.

This issue seems related. Are you by chance running in debug mode from an IDE?

@dbcortes2042000
Copy link
Author

You can find the pycromanager version with pip list | grep pycromanager.

This issue seems related. Are you by chance running in debug mode from an IDE?

Haha for some reason 'grep' is not recognized on my Anaconda install... I looked in the micromanager folder and found a file called "PycroManagerJava-0.38.10.jar" if this is the version of pycromanager then I don't have the right one, but when I try to install 0.27.2 by using pip
pip install pycromanager==0.27.2

Terminal tells me that the requirements are already met and it changes PyQT to the incompatible form again...

I'm running Anaconda and using the Anaconda Powershell Prompt with administrator privileges. I don't think I have debug mode enabled on anything unless Anaconda enables it by default. I'd be happy to hop on a zoom call and go through the process with a clean install if you guys have the time to help me figure out where I'm going wrong!

@talonchandler
Copy link
Collaborator

@dbcortes2042000 can you share the following:

  • your terminal output fom a failed run. Is there anything before what you wrote at the start of this thread?
  • the output of pip list in the environment that is failing
  • anything that is printed in the Calibration > Advanced text box while in recOrder's debug mode (open the Calibration > Advanced tab, use the dropdown to select debug mode, then try connecting to MicroManager.

@dbcortes2042000
Copy link
Author

1) terminal output:
>napari -w recOrder-napari C:\Users\cortesadmin\anaconda3\envs\recOrder\lib\site-packages\paramiko\pkey.py:82: CryptographyDeprecationWarning: TripleDES has been moved to cryptography.hazmat.decrepit.ciphers.algorithms.TripleDES and will be removed from this module in 48.0.0. "cipher": algorithms.TripleDES, C:\Users\cortesadmin\anaconda3\envs\recOrder\lib\site-packages\paramiko\transport.py:219: CryptographyDeprecationWarning: Blowfish has been moved to cryptography.hazmat.decrepit.ciphers.algorithms.Blowfish and will be removed from this module in 45.0.0. "class": algorithms.Blowfish, C:\Users\cortesadmin\anaconda3\envs\recOrder\lib\site-packages\paramiko\transport.py:243: CryptographyDeprecationWarning: TripleDES has been moved to cryptography.hazmat.decrepit.ciphers.algorithms.TripleDES and will be removed from this module in 48.0.0. "class": algorithms.TripleDES, 12:33:49 : DEBUG : MainThread : Established ZMQ Bridge and found Core and Studio 12:33:49 : DEBUG : MainThread : Confirmed correct ZMQ bridge---- 12:33:49 : DEBUG : MainThread : Checking MM config group 12:33:49 : DEBUG : MainThread : Checked configs. 12:33:49 : DEBUG : MainThread : Setting startup LC control mode... 12:35:52 : DEBUG : MainThread : Executing @injected reset_scroll_progress(viewer: napari.viewer.Viewer) with args: (Viewer(camera=Camera(center=(0.0, 0.0, 0.0), zoom=1.0, angles=(0.0, 0.0, 90.0), perspective=0.0, mouse_pan=True, mouse_zoom=True), cursor=Cursor(position=(1.0, 1.0), scaled=True, style=<CursorStyle.STANDARD: 'standard'>, size=1.0), dims=Dims(ndim=2, ndisplay=2, order=(0, 1), axis_labels=('0', '1'), rollable=(True, True), range=(RangeTuple(start=0.0, stop=2.0, step=1.0), RangeTuple(start=0.0, stop=2.0, step=1.0)), margin_left=(0.0, 0.0), margin_right=(0.0, 0.0), point=(0.0, 0.0), last_used=0), grid=GridCanvas(stride=1, shape=(-1, -1), enabled=False), layers=[], help='', status='Ready', tooltip=Tooltip(visible=False, text=''), theme='dark', title='napari', mouse_over_canvas=False, mouse_move_callbacks=[], mouse_drag_callbacks=[], mouse_double_click_callbacks=[], mouse_wheel_callbacks=[<function dims_scroll at 0x0000023A82C30E50>], _persisted_mouse_event={}, _mouse_drag_gen={}, _mouse_wheel_gen={}, _keymap={}),), kwargs: {} 12:35:52 : DEBUG : MainThread : Calling reset_scroll_progress with {'viewer': Viewer(camera=Camera(center=(0.0, 0.0, 0.0), zoom=1.0, angles=(0.0, 0.0, 90.0), perspective=0.0, mouse_pan=True, mouse_zoom=True), cursor=Cursor(position=(1.0, 1.0), scaled=True, style=<CursorStyle.STANDARD: 'standard'>, size=1.0), dims=Dims(ndim=2, ndisplay=2, order=(0, 1), axis_labels=('0', '1'), rollable=(True, True), range=(RangeTuple(start=0.0, stop=2.0, step=1.0), RangeTuple(start=0.0, stop=2.0, step=1.0)), margin_left=(0.0, 0.0), margin_right=(0.0, 0.0), point=(0.0, 0.0), last_used=0), grid=GridCanvas(stride=1, shape=(-1, -1), enabled=False), layers=[], help='', status='Ready', tooltip=Tooltip(visible=False, text=''), theme='dark', title='napari', mouse_over_canvas=False, mouse_move_callbacks=[], mouse_drag_callbacks=[], mouse_double_click_callbacks=[], mouse_wheel_callbacks=[<function dims_scroll at 0x0000023A82C30E50>], _persisted_mouse_event={}, _mouse_drag_gen={}, _mouse_wheel_gen={}, _keymap={})} (injected set()) 12:35:58 : DEBUG : MainThread : Executing @injected reset_scroll_progress(viewer: napari.viewer.Viewer) with args: (Viewer(camera=Camera(center=(0.0, 0.0, 0.0), zoom=1.0, angles=(0.0, 0.0, 90.0), perspective=0.0, mouse_pan=True, mouse_zoom=True), cursor=Cursor(position=(1.0, 1.0), scaled=True, style=<CursorStyle.STANDARD: 'standard'>, size=1.0), dims=Dims(ndim=2, ndisplay=2, order=(0, 1), axis_labels=('0', '1'), rollable=(True, True), range=(RangeTuple(start=0.0, stop=2.0, step=1.0), RangeTuple(start=0.0, stop=2.0, step=1.0)), margin_left=(0.0, 0.0), margin_right=(0.0, 0.0), point=(0.0, 0.0), last_used=0), grid=GridCanvas(stride=1, shape=(-1, -1), enabled=False), layers=[], help='', status='', tooltip=Tooltip(visible=False, text=''), theme='dark', title='napari', mouse_over_canvas=False, mouse_move_callbacks=[], mouse_drag_callbacks=[], mouse_double_click_callbacks=[], mouse_wheel_callbacks=[<function dims_scroll at 0x0000023A82C30E50>], _persisted_mouse_event={}, _mouse_drag_gen={}, _mouse_wheel_gen={}, _keymap={}),), kwargs: {} 12:35:58 : DEBUG : MainThread : Calling reset_scroll_progress with {'viewer': Viewer(camera=Camera(center=(0.0, 0.0, 0.0), zoom=1.0, angles=(0.0, 0.0, 90.0), perspective=0.0, mouse_pan=True, mouse_zoom=True), cursor=Cursor(position=(1.0, 1.0), scaled=True, style=<CursorStyle.STANDARD: 'standard'>, size=1.0), dims=Dims(ndim=2, ndisplay=2, order=(0, 1), axis_labels=('0', '1'), rollable=(True, True), range=(RangeTuple(start=0.0, stop=2.0, step=1.0), RangeTuple(start=0.0, stop=2.0, step=1.0)), margin_left=(0.0, 0.0), margin_right=(0.0, 0.0), point=(0.0, 0.0), last_used=0), grid=GridCanvas(stride=1, shape=(-1, -1), enabled=False), layers=[], help='', status='', tooltip=Tooltip(visible=False, text=''), theme='dark', title='napari', mouse_over_canvas=False, mouse_move_callbacks=[], mouse_drag_callbacks=[], mouse_double_click_callbacks=[], mouse_wheel_callbacks=[<function dims_scroll at 0x0000023A82C30E50>], _persisted_mouse_event={}, _mouse_drag_gen={}, _mouse_wheel_gen={}, _keymap={})} (injected set()) 12:36:01 : DEBUG : MainThread : Executing @injected reset_scroll_progress(viewer: napari.viewer.Viewer) with args: (Viewer(camera=Camera(center=(0.0, 0.0, 0.0), zoom=1.0, angles=(0.0, 0.0, 90.0), perspective=0.0, mouse_pan=True, mouse_zoom=True), cursor=Cursor(position=(1.0, 1.0), scaled=True, style=<CursorStyle.STANDARD: 'standard'>, size=1.0), dims=Dims(ndim=2, ndisplay=2, order=(0, 1), axis_labels=('0', '1'), rollable=(True, True), range=(RangeTuple(start=0.0, stop=2.0, step=1.0), RangeTuple(start=0.0, stop=2.0, step=1.0)), margin_left=(0.0, 0.0), margin_right=(0.0, 0.0), point=(0.0, 0.0), last_used=0), grid=GridCanvas(stride=1, shape=(-1, -1), enabled=False), layers=[], help='', status='', tooltip=Tooltip(visible=False, text=''), theme='dark', title='napari', mouse_over_canvas=False, mouse_move_callbacks=[], mouse_drag_callbacks=[], mouse_double_click_callbacks=[], mouse_wheel_callbacks=[<function dims_scroll at 0x0000023A82C30E50>], _persisted_mouse_event={}, _mouse_drag_gen={}, _mouse_wheel_gen={}, _keymap={}),), kwargs: {} 12:36:01 : DEBUG : MainThread : Calling reset_scroll_progress with {'viewer': Viewer(camera=Camera(center=(0.0, 0.0, 0.0), zoom=1.0, angles=(0.0, 0.0, 90.0), perspective=0.0, mouse_pan=True, mouse_zoom=True), cursor=Cursor(position=(1.0, 1.0), scaled=True, style=<CursorStyle.STANDARD: 'standard'>, size=1.0), dims=Dims(ndim=2, ndisplay=2, order=(0, 1), axis_labels=('0', '1'), rollable=(True, True), range=(RangeTuple(start=0.0, stop=2.0, step=1.0), RangeTuple(start=0.0, stop=2.0, step=1.0)), margin_left=(0.0, 0.0), margin_right=(0.0, 0.0), point=(0.0, 0.0), last_used=0), grid=GridCanvas(stride=1, shape=(-1, -1), enabled=False), layers=[], help='', status='', tooltip=Tooltip(visible=False, text=''), theme='dark', title='napari', mouse_over_canvas=False, mouse_move_callbacks=[], mouse_drag_callbacks=[], mouse_double_click_callbacks=[], mouse_wheel_callbacks=[<function dims_scroll at 0x0000023A82C30E50>], _persisted_mouse_event={}, _mouse_drag_gen={}, _mouse_wheel_gen={}, _keymap={})} (injected set()) 12:36:03 : DEBUG : MainThread : Executing @injected reset_scroll_progress(viewer: napari.viewer.Viewer) with args: (Viewer(camera=Camera(center=(0.0, 0.0, 0.0), zoom=1.0, angles=(0.0, 0.0, 90.0), perspective=0.0, mouse_pan=True, mouse_zoom=True), cursor=Cursor(position=(1.0, 1.0), scaled=True, style=<CursorStyle.STANDARD: 'standard'>, size=1.0), dims=Dims(ndim=2, ndisplay=2, order=(0, 1), axis_labels=('0', '1'), rollable=(True, True), range=(RangeTuple(start=0.0, stop=2.0, step=1.0), RangeTuple(start=0.0, stop=2.0, step=1.0)), margin_left=(0.0, 0.0), margin_right=(0.0, 0.0), point=(0.0, 0.0), last_used=0), grid=GridCanvas(stride=1, shape=(-1, -1), enabled=False), layers=[], help='', status='', tooltip=Tooltip(visible=False, text=''), theme='dark', title='napari', mouse_over_canvas=False, mouse_move_callbacks=[], mouse_drag_callbacks=[], mouse_double_click_callbacks=[], mouse_wheel_callbacks=[<function dims_scroll at 0x0000023A82C30E50>], _persisted_mouse_event={}, _mouse_drag_gen={}, _mouse_wheel_gen={}, _keymap={}),), kwargs: {} 12:36:03 : DEBUG : MainThread : Calling reset_scroll_progress with {'viewer': Viewer(camera=Camera(center=(0.0, 0.0, 0.0), zoom=1.0, angles=(0.0, 0.0, 90.0), perspective=0.0, mouse_pan=True, mouse_zoom=True), cursor=Cursor(position=(1.0, 1.0), scaled=True, style=<CursorStyle.STANDARD: 'standard'>, size=1.0), dims=Dims(ndim=2, ndisplay=2, order=(0, 1), axis_labels=('0', '1'), rollable=(True, True), range=(RangeTuple(start=0.0, stop=2.0, step=1.0), RangeTuple(start=0.0, stop=2.0, step=1.0)), margin_left=(0.0, 0.0), margin_right=(0.0, 0.0), point=(0.0, 0.0), last_used=0), grid=GridCanvas(stride=1, shape=(-1, -1), enabled=False), layers=[], help='', status='', tooltip=Tooltip(visible=False, text=''), theme='dark', title='napari', mouse_over_canvas=False, mouse_move_callbacks=[], mouse_drag_callbacks=[], mouse_double_click_callbacks=[], mouse_wheel_callbacks=[<function dims_scroll at 0x0000023A82C30E50>], _persisted_mouse_event={}, _mouse_drag_gen={}, _mouse_wheel_gen={}, _keymap={})} (injected set()) 12:36:10 : DEBUG : MainThread : Executing @injected reset_scroll_progress(viewer: napari.viewer.Viewer) with args: (Viewer(camera=Camera(center=(0.0, 0.0, 0.0), zoom=1.0, angles=(0.0, 0.0, 90.0), perspective=0.0, mouse_pan=True, mouse_zoom=True), cursor=Cursor(position=(1.0, 1.0), scaled=True, style=<CursorStyle.STANDARD: 'standard'>, size=1.0), dims=Dims(ndim=2, ndisplay=2, order=(0, 1), axis_labels=('0', '1'), rollable=(True, True), range=(RangeTuple(start=0.0, stop=2.0, step=1.0), RangeTuple(start=0.0, stop=2.0, step=1.0)), margin_left=(0.0, 0.0), margin_right=(0.0, 0.0), point=(0.0, 0.0), last_used=0), grid=GridCanvas(stride=1, shape=(-1, -1), enabled=False), layers=[], help='', status='', tooltip=Tooltip(visible=False, text=''), theme='dark', title='napari', mouse_over_canvas=False, mouse_move_callbacks=[], mouse_drag_callbacks=[], mouse_double_click_callbacks=[], mouse_wheel_callbacks=[<function dims_scroll at 0x0000023A82C30E50>], _persisted_mouse_event={}, _mouse_drag_gen={}, _mouse_wheel_gen={}, _keymap={}),), kwargs: {} 12:36:10 : DEBUG : MainThread : Calling reset_scroll_progress with {'viewer': Viewer(camera=Camera(center=(0.0, 0.0, 0.0), zoom=1.0, angles=(0.0, 0.0, 90.0), perspective=0.0, mouse_pan=True, mouse_zoom=True), cursor=Cursor(position=(1.0, 1.0), scaled=True, style=<CursorStyle.STANDARD: 'standard'>, size=1.0), dims=Dims(ndim=2, ndisplay=2, order=(0, 1), axis_labels=('0', '1'), rollable=(True, True), range=(RangeTuple(start=0.0, stop=2.0, step=1.0), RangeTuple(start=0.0, stop=2.0, step=1.0)), margin_left=(0.0, 0.0), margin_right=(0.0, 0.0), point=(0.0, 0.0), last_used=0), grid=GridCanvas(stride=1, shape=(-1, -1), enabled=False), layers=[], help='', status='', tooltip=Tooltip(visible=False, text=''), theme='dark', title='napari', mouse_over_canvas=False, mouse_move_callbacks=[], mouse_drag_callbacks=[], mouse_double_click_callbacks=[], mouse_wheel_callbacks=[<function dims_scroll at 0x0000023A82C30E50>], _persisted_mouse_event={}, _mouse_drag_gen={}, _mouse_wheel_gen={}, _keymap={})} (injected set()) 12:36:12 : DEBUG : MainThread : Executing @injected reset_scroll_progress(viewer: napari.viewer.Viewer) with args: (Viewer(camera=Camera(center=(0.0, 0.0, 0.0), zoom=1.0, angles=(0.0, 0.0, 90.0), perspective=0.0, mouse_pan=True, mouse_zoom=True), cursor=Cursor(position=(1.0, 1.0), scaled=True, style=<CursorStyle.STANDARD: 'standard'>, size=1.0), dims=Dims(ndim=2, ndisplay=2, order=(0, 1), axis_labels=('0', '1'), rollable=(True, True), range=(RangeTuple(start=0.0, stop=2.0, step=1.0), RangeTuple(start=0.0, stop=2.0, step=1.0)), margin_left=(0.0, 0.0), margin_right=(0.0, 0.0), point=(0.0, 0.0), last_used=0), grid=GridCanvas(stride=1, shape=(-1, -1), enabled=False), layers=[], help='', status='', tooltip=Tooltip(visible=False, text=''), theme='dark', title='napari', mouse_over_canvas=False, mouse_move_callbacks=[], mouse_drag_callbacks=[], mouse_double_click_callbacks=[], mouse_wheel_callbacks=[<function dims_scroll at 0x0000023A82C30E50>], _persisted_mouse_event={}, _mouse_drag_gen={}, _mouse_wheel_gen={}, _keymap={}),), kwargs: {} 12:36:12 : DEBUG : MainThread : Calling reset_scroll_progress with {'viewer': Viewer(camera=Camera(center=(0.0, 0.0, 0.0), zoom=1.0, angles=(0.0, 0.0, 90.0), perspective=0.0, mouse_pan=True, mouse_zoom=True), cursor=Cursor(position=(1.0, 1.0), scaled=True, style=<CursorStyle.STANDARD: 'standard'>, size=1.0), dims=Dims(ndim=2, ndisplay=2, order=(0, 1), axis_labels=('0', '1'), rollable=(True, True), range=(RangeTuple(start=0.0, stop=2.0, step=1.0), RangeTuple(start=0.0, stop=2.0, step=1.0)), margin_left=(0.0, 0.0), margin_right=(0.0, 0.0), point=(0.0, 0.0), last_used=0), grid=GridCanvas(stride=1, shape=(-1, -1), enabled=False), layers=[], help='', status='', tooltip=Tooltip(visible=False, text=''), theme='dark', title='napari', mouse_over_canvas=False, mouse_move_callbacks=[], mouse_drag_callbacks=[], mouse_double_click_callbacks=[], mouse_wheel_callbacks=[<function dims_scroll at 0x0000023A82C30E50>], _persisted_mouse_event={}, _mouse_drag_gen={}, _mouse_wheel_gen={}, _keymap={})} (injected set()) 12:36:18 : DEBUG : MainThread : Executing @injected reset_scroll_progress(viewer: napari.viewer.Viewer) with args: (Viewer(camera=Camera(center=(0.0, 0.0, 0.0), zoom=1.0, angles=(0.0, 0.0, 90.0), perspective=0.0, mouse_pan=True, mouse_zoom=True), cursor=Cursor(position=(1.0, 1.0), scaled=True, style=<CursorStyle.STANDARD: 'standard'>, size=1.0), dims=Dims(ndim=2, ndisplay=2, order=(0, 1), axis_labels=('0', '1'), rollable=(True, True), range=(RangeTuple(start=0.0, stop=2.0, step=1.0), RangeTuple(start=0.0, stop=2.0, step=1.0)), margin_left=(0.0, 0.0), margin_right=(0.0, 0.0), point=(0.0, 0.0), last_used=0), grid=GridCanvas(stride=1, shape=(-1, -1), enabled=False), layers=[], help='', status='', tooltip=Tooltip(visible=False, text=''), theme='dark', title='napari', mouse_over_canvas=False, mouse_move_callbacks=[], mouse_drag_callbacks=[], mouse_double_click_callbacks=[], mouse_wheel_callbacks=[<function dims_scroll at 0x0000023A82C30E50>], _persisted_mouse_event={}, _mouse_drag_gen={}, _mouse_wheel_gen={}, _keymap={}),), kwargs: {} 12:36:18 : DEBUG : MainThread : Calling reset_scroll_progress with {'viewer': Viewer(camera=Camera(center=(0.0, 0.0, 0.0), zoom=1.0, angles=(0.0, 0.0, 90.0), perspective=0.0, mouse_pan=True, mouse_zoom=True), cursor=Cursor(position=(1.0, 1.0), scaled=True, style=<CursorStyle.STANDARD: 'standard'>, size=1.0), dims=Dims(ndim=2, ndisplay=2, order=(0, 1), axis_labels=('0', '1'), rollable=(True, True), range=(RangeTuple(start=0.0, stop=2.0, step=1.0), RangeTuple(start=0.0, stop=2.0, step=1.0)), margin_left=(0.0, 0.0), margin_right=(0.0, 0.0), point=(0.0, 0.0), last_used=0), grid=GridCanvas(stride=1, shape=(-1, -1), enabled=False), layers=[], help='', status='', tooltip=Tooltip(visible=False, text=''), theme='dark', title='napari', mouse_over_canvas=False, mouse_move_callbacks=[], mouse_drag_callbacks=[], mouse_double_click_callbacks=[], mouse_wheel_callbacks=[<function dims_scroll at 0x0000023A82C30E50>], _persisted_mouse_event={}, _mouse_drag_gen={}, _mouse_wheel_gen={}, _keymap={})} (injected set())

2) output of pip list in recOrder environment:

Package Version


aiobotocore 2.15.0
aiohappyeyeballs 2.4.0
aiohttp 3.10.5
aioitertools 0.12.0
aiosignal 1.3.1
alabaster 0.7.16
app-model 0.2.8
appdirs 1.4.4
arrow 1.2.3
asciitree 0.3.3
astroid 2.14.2
asttokens 2.0.5
async-timeout 4.0.3
atomicwrites 1.4.0
attrs 23.1.0
autopep8 2.0.4
Babel 2.11.0
bcrypt 3.2.0
beautifulsoup4 4.12.3
binaryornot 0.4.4
black 24.8.0
bleach 4.1.0
blosc2 2.7.1
botocore 1.35.16
Brotli 1.0.9
build 1.2.2
cachey 0.2.1
certifi 2024.8.30
cffi 1.17.1
chardet 4.0.0
charset-normalizer 3.3.2
click 8.1.7
cloudpickle 3.0.0
colorama 0.4.6
colorspacious 1.1.2
comm 0.2.1
contourpy 1.3.0
cookiecutter 2.6.0
cryptography 43.0.0
cycler 0.12.1
dask 2024.8.2
debugpy 1.6.7
decorator 5.1.1
defusedxml 0.7.1
diff-match-patch 20200713
dill 0.3.8
distributed 2024.8.2
docstring-inheritance 2.2.1
docstring_parser 0.16
docstring-to-markdown 0.11
docutils 0.18.1
exceptiongroup 1.2.0
executing 0.8.3
fasteners 0.19
fastjsonschema 2.16.2
filelock 3.16.0
flake8 7.0.0
flexcache 0.3
flexparser 0.3.1
fonttools 4.53.1
freetype-py 2.5.1
frozenlist 1.4.1
fsspec 2024.9.0
grep 0.3.2
HeapDict 1.0.1
hsluv 5.0.4
idna 3.7
imageio 2.35.1
imagesize 1.4.1
importlib-metadata 7.0.1
in-n-out 0.2.1
inflection 0.5.1
intervaltree 3.1.0
iohub 0.1.0
ipykernel 6.28.0
ipython 8.27.0
ipywidgets 8.1.5
isort 5.13.2
jaraco.classes 3.2.1
jedi 0.19.1
jellyfish 1.0.1
Jinja2 3.1.4
jmespath 1.0.1
jsonschema 4.19.2
jsonschema-specifications 2023.12.1
jupyter_client 8.6.0
jupyter_core 5.7.2
jupyterlab-pygments 0.2.2
jupyterlab_widgets 3.0.13
keyring 24.3.1
kiwisolver 1.4.7
lazy_loader 0.4
lazy-object-proxy 1.10.0
locket 1.0.0
magicgui 0.9.1
markdown-it-py 2.2.0
MarkupSafe 2.1.3
matplotlib 3.9.2
matplotlib-inline 0.1.6
mccabe 0.7.0
mdurl 0.1.0
mistune 2.0.4
more-itertools 10.1.0
mpmath 1.3.0
msgpack 1.1.0
multidict 6.1.0
mypy-extensions 1.0.0
napari 0.5.3
napari-console 0.0.9
napari-ome-zarr 0.6.1
napari-plugin-engine 0.2.0
napari-svg 0.2.0
natsort 8.4.0
nbclient 0.8.0
nbconvert 7.10.0
nbformat 5.9.2
ndindex 1.8
ndtiff 3.1.0
nest-asyncio 1.6.0
networkx 3.3
npe2 0.7.7
numcodecs 0.13.0
numexpr 2.10.1
numpy 1.26.4
numpydoc 1.7.0
ome-zarr 0.8.3
packaging 24.1
pandas 2.2.2
pandocfilters 1.5.0
paramiko 2.8.1
parso 0.8.3
partd 1.4.2
pathspec 0.10.3
pexpect 4.8.0
pickleshare 0.7.5
pillow 10.4.0
Pint 0.24.3
pip 24.2
platformdirs 3.10.0
pluggy 1.0.0
ply 3.11
pooch 1.8.2
prompt-toolkit 3.0.43
psutil 5.9.0
psygnal 0.11.1
ptyprocess 0.7.0
pure-eval 0.2.2
py-cpuinfo 9.0.0
pycodestyle 2.11.1
pyconify 0.1.6
pycparser 2.21
pycromanager 0.27.2
pydantic 1.10.18
pydantic-compat 0.1.2
pydocstyle 6.3.0
pyflakes 3.2.0
Pygments 2.15.1
pylint 2.16.2
pylint-venv 3.0.3
pyls-spyder 0.4.0
PyNaCl 1.5.0
PyOpenGL 3.1.7
pyparsing 3.1.4
pyproject_hooks 1.1.0
PyQt5-sip 12.13.0
PyQt6 6.7.1
PyQt6-Qt6 6.7.2
PyQt6_sip 13.8.0
pyqtgraph 0.13.7
PyQtWebEngine 5.15.6
PySocks 1.7.1
python-dateutil 2.9.0.post0
python-lsp-black 2.0.0
python-lsp-jsonrpc 1.1.2
python-lsp-server 1.10.0
python-slugify 5.0.2
pytoolconfig 1.2.6
pytz 2024.1
PyWavelets 1.7.0
pywin32 305.1
pywin32-ctypes 0.2.2
PyYAML 6.0.1
pyzmq 25.1.2
QDarkStyle 3.2.3
qstylizer 0.2.2
QtAwesome 1.3.1
qtconsole 5.5.1
QtPy 2.4.1
recOrder-napari 0.4.2rc1
referencing 0.35.1
requests 2.32.3
rich 13.7.1
rope 1.12.0
rpds-py 0.10.6
Rtree 1.0.1
s3fs 2024.9.0
scikit-image 0.24.0
scipy 1.14.1
setuptools 72.1.0
shellingham 1.5.4
sip 6.7.12
six 1.16.0
snowballstemmer 2.2.0
sortedcontainers 2.4.0
soupsieve 2.5
Sphinx 7.3.7
sphinxcontrib-applehelp 1.0.2
sphinxcontrib-devhelp 1.0.2
sphinxcontrib-htmlhelp 2.0.0
sphinxcontrib-jsmath 1.0.1
sphinxcontrib-qthelp 1.0.3
sphinxcontrib-serializinghtml 1.1.10
spyder 5.5.1
spyder-kernels 2.5.0
stack-data 0.2.0
superqt 0.6.7
sympy 1.13.2
tabulate 0.9.0
tblib 3.0.0
text-unidecode 1.3
textdistance 4.2.1
three-merge 0.1.1
tifffile 2023.2.28
tinycss2 1.2.1
tomli 2.0.1
tomli_w 1.0.0
tomlkit 0.11.1
toolz 0.12.1
torch 2.4.1
tornado 6.4.1
tqdm 4.66.5
traitlets 5.14.3
typer 0.12.5
typing_extensions 4.11.0
tzdata 2024.1
ujson 5.10.0
Unidecode 1.3.8
urllib3 2.2.2
vispy 0.14.3
watchdog 4.0.1
waveorder 2.2.0rc0
wcwidth 0.2.13
webencodings 0.5.1
wget 3.2
whatthepatch 1.0.2
wheel 0.43.0
widgetsnbextension 4.0.13
win-inet-pton 1.1.0
wrapt 1.14.1
yapf 0.40.2
yarl 1.11.1
zarr 2.15.0
zict 3.0.0
zipp 3.17.0

*3) Debug output on failed connect:
It seems to freeze when connecting to the LC controller. The rest of the code appears only after I tried to copy the Debug console output which ended at the 5th line until I clicked and copied it.

DEBUG - Established ZMQ Bridge and found Core and Studio
DEBUG - Confirmed correct ZMQ bridge----
DEBUG - Checking MM config group
DEBUG - Checked configs.
DEBUG - Setting startup LC control mode...

DEBUG - Executing @injected reset_scroll_progress(viewer: napari.viewer.Viewer) with args: (Viewer(camera=Camera(center=(0.0, 0.0, 0.0), zoom=1.0, angles=(0.0, 0.0, 90.0), perspective=0.0, mouse_pan=True, mouse_zoom=True), cursor=Cursor(position=(1.0, 1.0), scaled=True, style=<CursorStyle.STANDARD: 'standard'>, size=1.0), dims=Dims(ndim=2, ndisplay=2, order=(0, 1), axis_labels=('0', '1'), rollable=(True, True), range=(RangeTuple(start=0.0, stop=2.0, step=1.0), RangeTuple(start=0.0, stop=2.0, step=1.0)), margin_left=(0.0, 0.0), margin_right=(0.0, 0.0), point=(0.0, 0.0), last_used=0), grid=GridCanvas(stride=1, shape=(-1, -1), enabled=False), layers=[], help='', status='Ready', tooltip=Tooltip(visible=False, text=''), theme='dark', title='napari', mouse_over_canvas=False, mouse_move_callbacks=[], mouse_drag_callbacks=[], mouse_double_click_callbacks=[], mouse_wheel_callbacks=[<function dims_scroll at 0x0000023A82C30E50>], _persisted_mouse_event={}, _mouse_drag_gen={}, _mouse_wheel_gen={}, _keymap={}),), kwargs: {}
DEBUG - Calling reset_scroll_progress with {'viewer': Viewer(camera=Camera(center=(0.0, 0.0, 0.0), zoom=1.0, angles=(0.0, 0.0, 90.0), perspective=0.0, mouse_pan=True, mouse_zoom=True), cursor=Cursor(position=(1.0, 1.0), scaled=True, style=<CursorStyle.STANDARD: 'standard'>, size=1.0), dims=Dims(ndim=2, ndisplay=2, order=(0, 1), axis_labels=('0', '1'), rollable=(True, True), range=(RangeTuple(start=0.0, stop=2.0, step=1.0), RangeTuple(start=0.0, stop=2.0, step=1.0)), margin_left=(0.0, 0.0), margin_right=(0.0, 0.0), point=(0.0, 0.0), last_used=0), grid=GridCanvas(stride=1, shape=(-1, -1), enabled=False), layers=[], help='', status='Ready', tooltip=Tooltip(visible=False, text=''), theme='dark', title='napari', mouse_over_canvas=False, mouse_move_callbacks=[], mouse_drag_callbacks=[], mouse_double_click_callbacks=[], mouse_wheel_callbacks=[<function dims_scroll at 0x0000023A82C30E50>], _persisted_mouse_event={}, _mouse_drag_gen={}, _mouse_wheel_gen={}, _keymap={})} (injected set())
DEBUG - Executing @injected reset_scroll_progress(viewer: napari.viewer.Viewer) with args: (Viewer(camera=Camera(center=(0.0, 0.0, 0.0), zoom=1.0, angles=(0.0, 0.0, 90.0), perspective=0.0, mouse_pan=True, mouse_zoom=True), cursor=Cursor(position=(1.0, 1.0), scaled=True, style=<CursorStyle.STANDARD: 'standard'>, size=1.0), dims=Dims(ndim=2, ndisplay=2, order=(0, 1), axis_labels=('0', '1'), rollable=(True, True), range=(RangeTuple(start=0.0, stop=2.0, step=1.0), RangeTuple(start=0.0, stop=2.0, step=1.0)), margin_left=(0.0, 0.0), margin_right=(0.0, 0.0), point=(0.0, 0.0), last_used=0), grid=GridCanvas(stride=1, shape=(-1, -1), enabled=False), layers=[], help='', status='', tooltip=Tooltip(visible=False, text=''), theme='dark', title='napari', mouse_over_canvas=False, mouse_move_callbacks=[], mouse_drag_callbacks=[], mouse_double_click_callbacks=[], mouse_wheel_callbacks=[<function dims_scroll at 0x0000023A82C30E50>], _persisted_mouse_event={}, _mouse_drag_gen={}, _mouse_wheel_gen={}, _keymap={}),), kwargs: {}
DEBUG - Calling reset_scroll_progress with {'viewer': Viewer(camera=Camera(center=(0.0, 0.0, 0.0), zoom=1.0, angles=(0.0, 0.0, 90.0), perspective=0.0, mouse_pan=True, mouse_zoom=True), cursor=Cursor(position=(1.0, 1.0), scaled=True, style=<CursorStyle.STANDARD: 'standard'>, size=1.0), dims=Dims(ndim=2, ndisplay=2, order=(0, 1), axis_labels=('0', '1'), rollable=(True, True), range=(RangeTuple(start=0.0, stop=2.0, step=1.0), RangeTuple(start=0.0, stop=2.0, step=1.0)), margin_left=(0.0, 0.0), margin_right=(0.0, 0.0), point=(0.0, 0.0), last_used=0), grid=GridCanvas(stride=1, shape=(-1, -1), enabled=False), layers=[], help='', status='', tooltip=Tooltip(visible=False, text=''), theme='dark', title='napari', mouse_over_canvas=False, mouse_move_callbacks=[], mouse_drag_callbacks=[], mouse_double_click_callbacks=[], mouse_wheel_callbacks=[<function dims_scroll at 0x0000023A82C30E50>], _persisted_mouse_event={}, _mouse_drag_gen={}, _mouse_wheel_gen={}, _keymap={})} (injected set())
DEBUG - Executing @injected reset_scroll_progress(viewer: napari.viewer.Viewer) with args: (Viewer(camera=Camera(center=(0.0, 0.0, 0.0), zoom=1.0, angles=(0.0, 0.0, 90.0), perspective=0.0, mouse_pan=True, mouse_zoom=True), cursor=Cursor(position=(1.0, 1.0), scaled=True, style=<CursorStyle.STANDARD: 'standard'>, size=1.0), dims=Dims(ndim=2, ndisplay=2, order=(0, 1), axis_labels=('0', '1'), rollable=(True, True), range=(RangeTuple(start=0.0, stop=2.0, step=1.0), RangeTuple(start=0.0, stop=2.0, step=1.0)), margin_left=(0.0, 0.0), margin_right=(0.0, 0.0), point=(0.0, 0.0), last_used=0), grid=GridCanvas(stride=1, shape=(-1, -1), enabled=False), layers=[], help='', status='', tooltip=Tooltip(visible=False, text=''), theme='dark', title='napari', mouse_over_canvas=False, mouse_move_callbacks=[], mouse_drag_callbacks=[], mouse_double_click_callbacks=[], mouse_wheel_callbacks=[<function dims_scroll at 0x0000023A82C30E50>], _persisted_mouse_event={}, _mouse_drag_gen={}, _mouse_wheel_gen={}, _keymap={}),), kwargs: {}
DEBUG - Calling reset_scroll_progress with {'viewer': Viewer(camera=Camera(center=(0.0, 0.0, 0.0), zoom=1.0, angles=(0.0, 0.0, 90.0), perspective=0.0, mouse_pan=True, mouse_zoom=True), cursor=Cursor(position=(1.0, 1.0), scaled=True, style=<CursorStyle.STANDARD: 'standard'>, size=1.0), dims=Dims(ndim=2, ndisplay=2, order=(0, 1), axis_labels=('0', '1'), rollable=(True, True), range=(RangeTuple(start=0.0, stop=2.0, step=1.0), RangeTuple(start=0.0, stop=2.0, step=1.0)), margin_left=(0.0, 0.0), margin_right=(0.0, 0.0), point=(0.0, 0.0), last_used=0), grid=GridCanvas(stride=1, shape=(-1, -1), enabled=False), layers=[], help='', status='', tooltip=Tooltip(visible=False, text=''), theme='dark', title='napari', mouse_over_canvas=False, mouse_move_callbacks=[], mouse_drag_callbacks=[], mouse_double_click_callbacks=[], mouse_wheel_callbacks=[<function dims_scroll at 0x0000023A82C30E50>], _persisted_mouse_event={}, _mouse_drag_gen={}, _mouse_wheel_gen={}, _keymap={})} (injected set())
DEBUG - Executing @injected reset_scroll_progress(viewer: napari.viewer.Viewer) with args: (Viewer(camera=Camera(center=(0.0, 0.0, 0.0), zoom=1.0, angles=(0.0, 0.0, 90.0), perspective=0.0, mouse_pan=True, mouse_zoom=True), cursor=Cursor(position=(1.0, 1.0), scaled=True, style=<CursorStyle.STANDARD: 'standard'>, size=1.0), dims=Dims(ndim=2, ndisplay=2, order=(0, 1), axis_labels=('0', '1'), rollable=(True, True), range=(RangeTuple(start=0.0, stop=2.0, step=1.0), RangeTuple(start=0.0, stop=2.0, step=1.0)), margin_left=(0.0, 0.0), margin_right=(0.0, 0.0), point=(0.0, 0.0), last_used=0), grid=GridCanvas(stride=1, shape=(-1, -1), enabled=False), layers=[], help='', status='', tooltip=Tooltip(visible=False, text=''), theme='dark', title='napari', mouse_over_canvas=False, mouse_move_callbacks=[], mouse_drag_callbacks=[], mouse_double_click_callbacks=[], mouse_wheel_callbacks=[<function dims_scroll at 0x0000023A82C30E50>], _persisted_mouse_event={}, _mouse_drag_gen={}, _mouse_wheel_gen={}, _keymap={}),), kwargs: {}
DEBUG - Calling reset_scroll_progress with {'viewer': Viewer(camera=Camera(center=(0.0, 0.0, 0.0), zoom=1.0, angles=(0.0, 0.0, 90.0), perspective=0.0, mouse_pan=True, mouse_zoom=True), cursor=Cursor(position=(1.0, 1.0), scaled=True, style=<CursorStyle.STANDARD: 'standard'>, size=1.0), dims=Dims(ndim=2, ndisplay=2, order=(0, 1), axis_labels=('0', '1'), rollable=(True, True), range=(RangeTuple(start=0.0, stop=2.0, step=1.0), RangeTuple(start=0.0, stop=2.0, step=1.0)), margin_left=(0.0, 0.0), margin_right=(0.0, 0.0), point=(0.0, 0.0), last_used=0), grid=GridCanvas(stride=1, shape=(-1, -1), enabled=False), layers=[], help='', status='', tooltip=Tooltip(visible=False, text=''), theme='dark', title='napari', mouse_over_canvas=False, mouse_move_callbacks=[], mouse_drag_callbacks=[], mouse_double_click_callbacks=[], mouse_wheel_callbacks=[<function dims_scroll at 0x0000023A82C30E50>], _persisted_mouse_event={}, _mouse_drag_gen={}, _mouse_wheel_gen={}, _keymap={})} (injected set())
DEBUG - Executing @injected reset_scroll_progress(viewer: napari.viewer.Viewer) with args: (Viewer(camera=Camera(center=(0.0, 0.0, 0.0), zoom=1.0, angles=(0.0, 0.0, 90.0), perspective=0.0, mouse_pan=True, mouse_zoom=True), cursor=Cursor(position=(1.0, 1.0), scaled=True, style=<CursorStyle.STANDARD: 'standard'>, size=1.0), dims=Dims(ndim=2, ndisplay=2, order=(0, 1), axis_labels=('0', '1'), rollable=(True, True), range=(RangeTuple(start=0.0, stop=2.0, step=1.0), RangeTuple(start=0.0, stop=2.0, step=1.0)), margin_left=(0.0, 0.0), margin_right=(0.0, 0.0), point=(0.0, 0.0), last_used=0), grid=GridCanvas(stride=1, shape=(-1, -1), enabled=False), layers=[], help='', status='', tooltip=Tooltip(visible=False, text=''), theme='dark', title='napari', mouse_over_canvas=False, mouse_move_callbacks=[], mouse_drag_callbacks=[], mouse_double_click_callbacks=[], mouse_wheel_callbacks=[<function dims_scroll at 0x0000023A82C30E50>], _persisted_mouse_event={}, _mouse_drag_gen={}, _mouse_wheel_gen={}, _keymap={}),), kwargs: {}
DEBUG - Calling reset_scroll_progress with {'viewer': Viewer(camera=Camera(center=(0.0, 0.0, 0.0), zoom=1.0, angles=(0.0, 0.0, 90.0), perspective=0.0, mouse_pan=True, mouse_zoom=True), cursor=Cursor(position=(1.0, 1.0), scaled=True, style=<CursorStyle.STANDARD: 'standard'>, size=1.0), dims=Dims(ndim=2, ndisplay=2, order=(0, 1), axis_labels=('0', '1'), rollable=(True, True), range=(RangeTuple(start=0.0, stop=2.0, step=1.0), RangeTuple(start=0.0, stop=2.0, step=1.0)), margin_left=(0.0, 0.0), margin_right=(0.0, 0.0), point=(0.0, 0.0), last_used=0), grid=GridCanvas(stride=1, shape=(-1, -1), enabled=False), layers=[], help='', status='', tooltip=Tooltip(visible=False, text=''), theme='dark', title='napari', mouse_over_canvas=False, mouse_move_callbacks=[], mouse_drag_callbacks=[], mouse_double_click_callbacks=[], mouse_wheel_callbacks=[<function dims_scroll at 0x0000023A82C30E50>], _persisted_mouse_event={}, _mouse_drag_gen={}, _mouse_wheel_gen={}, _keymap={})} (injected set())
DEBUG - Executing @injected reset_scroll_progress(viewer: napari.viewer.Viewer) with args: (Viewer(camera=Camera(center=(0.0, 0.0, 0.0), zoom=1.0, angles=(0.0, 0.0, 90.0), perspective=0.0, mouse_pan=True, mouse_zoom=True), cursor=Cursor(position=(1.0, 1.0), scaled=True, style=<CursorStyle.STANDARD: 'standard'>, size=1.0), dims=Dims(ndim=2, ndisplay=2, order=(0, 1), axis_labels=('0', '1'), rollable=(True, True), range=(RangeTuple(start=0.0, stop=2.0, step=1.0), RangeTuple(start=0.0, stop=2.0, step=1.0)), margin_left=(0.0, 0.0), margin_right=(0.0, 0.0), point=(0.0, 0.0), last_used=0), grid=GridCanvas(stride=1, shape=(-1, -1), enabled=False), layers=[], help='', status='', tooltip=Tooltip(visible=False, text=''), theme='dark', title='napari', mouse_over_canvas=False, mouse_move_callbacks=[], mouse_drag_callbacks=[], mouse_double_click_callbacks=[], mouse_wheel_callbacks=[<function dims_scroll at 0x0000023A82C30E50>], _persisted_mouse_event={}, _mouse_drag_gen={}, _mouse_wheel_gen={}, _keymap={}),), kwargs: {}
DEBUG - Calling reset_scroll_progress with {'viewer': Viewer(camera=Camera(center=(0.0, 0.0, 0.0), zoom=1.0, angles=(0.0, 0.0, 90.0), perspective=0.0, mouse_pan=True, mouse_zoom=True), cursor=Cursor(position=(1.0, 1.0), scaled=True, style=<CursorStyle.STANDARD: 'standard'>, size=1.0), dims=Dims(ndim=2, ndisplay=2, order=(0, 1), axis_labels=('0', '1'), rollable=(True, True), range=(RangeTuple(start=0.0, stop=2.0, step=1.0), RangeTuple(start=0.0, stop=2.0, step=1.0)), margin_left=(0.0, 0.0), margin_right=(0.0, 0.0), point=(0.0, 0.0), last_used=0), grid=GridCanvas(stride=1, shape=(-1, -1), enabled=False), layers=[], help='', status='', tooltip=Tooltip(visible=False, text=''), theme='dark', title='napari', mouse_over_canvas=False, mouse_move_callbacks=[], mouse_drag_callbacks=[], mouse_double_click_callbacks=[], mouse_wheel_callbacks=[<function dims_scroll at 0x0000023A82C30E50>], _persisted_mouse_event={}, _mouse_drag_gen={}, _mouse_wheel_gen={}, _keymap={})} (injected set())
DEBUG - Executing @injected reset_scroll_progress(viewer: napari.viewer.Viewer) with args: (Viewer(camera=Camera(center=(0.0, 0.0, 0.0), zoom=1.0, angles=(0.0, 0.0, 90.0), perspective=0.0, mouse_pan=True, mouse_zoom=True), cursor=Cursor(position=(1.0, 1.0), scaled=True, style=<CursorStyle.STANDARD: 'standard'>, size=1.0), dims=Dims(ndim=2, ndisplay=2, order=(0, 1), axis_labels=('0', '1'), rollable=(True, True), range=(RangeTuple(start=0.0, stop=2.0, step=1.0), RangeTuple(start=0.0, stop=2.0, step=1.0)), margin_left=(0.0, 0.0), margin_right=(0.0, 0.0), point=(0.0, 0.0), last_used=0), grid=GridCanvas(stride=1, shape=(-1, -1), enabled=False), layers=[], help='', status='', tooltip=Tooltip(visible=False, text=''), theme='dark', title='napari', mouse_over_canvas=False, mouse_move_callbacks=[], mouse_drag_callbacks=[], mouse_double_click_callbacks=[], mouse_wheel_callbacks=[<function dims_scroll at 0x0000023A82C30E50>], _persisted_mouse_event={}, _mouse_drag_gen={}, _mouse_wheel_gen={}, _keymap={}),), kwargs: {}
DEBUG - Calling reset_scroll_progress with {'viewer': Viewer(camera=Camera(center=(0.0, 0.0, 0.0), zoom=1.0, angles=(0.0, 0.0, 90.0), perspective=0.0, mouse_pan=True, mouse_zoom=True), cursor=Cursor(position=(1.0, 1.0), scaled=True, style=<CursorStyle.STANDARD: 'standard'>, size=1.0), dims=Dims(ndim=2, ndisplay=2, order=(0, 1), axis_labels=('0', '1'), rollable=(True, True), range=(RangeTuple(start=0.0, stop=2.0, step=1.0), RangeTuple(start=0.0, stop=2.0, step=1.0)), margin_left=(0.0, 0.0), margin_right=(0.0, 0.0), point=(0.0, 0.0), last_used=0), grid=GridCanvas(stride=1, shape=(-1, -1), enabled=False), layers=[], help='', status='', tooltip=Tooltip(visible=False, text=''), theme='dark', title='napari', mouse_over_canvas=False, mouse_move_callbacks=[], mouse_drag_callbacks=[], mouse_double_click_callbacks=[], mouse_wheel_callbacks=[<function dims_scroll at 0x0000023A82C30E50>], _persisted_mouse_event={}, _mouse_drag_gen={}, _mouse_wheel_gen={}, _keymap={})} (injected set())

@talonchandler
Copy link
Collaborator

Thanks @dbcortes2042000, this is helpful. I think this narrows the failure to this section.

I see two possible failure modes:

  1. In MicroManager's device property browser, does the LC control box appear as MeadowlarkLcOpenSource or MeadowlarkLC. If MeadowlarkLcOpenSource, can you try removing and re-adding the device to your config. I expect MeadowlarkLC when you use the latest device drivers.

  2. Did you name your MicroManager group Channel and set up State* presets similar to this documentation.

If (temporarily) renaming your MicroManager "Channel" fixes the issue, then this is a bug. self.mmc.getConfigData("Channel", "State0") should be self.mmc.getConfigData(self.config_group, "State0")

@dbcortes2042000
Copy link
Author

@talonchandler it appears my issue was with the naming of the Meadowlark group. I did not realize it needed to be named "Channel" specifically! Changing the name has allowed recOrder to connect succesfully. Hopefully I won't have any more issues! Thanks so much!

@talonchandler
Copy link
Collaborator

talonchandler commented Sep 27, 2024

That's great @dbcortes2042000, thanks for your help with debugging.

This is certainly a bug, and I've just opened a PR that I expect to fix it. I will test and merge it when I get a chance.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants