Closed qweasdf1354 closed 9 months ago
This is a bug in our histogram calculation that shows up sometimes, if you re-run CNMF you will get a slightly different result and probably won't encounter the bug. We will fix it in the coming weeks.
Hi Kushal! that is make sense! I run it correctly sometimes! and Mcorr is too when i set the processes = 4, it sometimes can run correctly!
fixed in fastplotlib main, will be out in next release. If you want it now you can follow the developer install: https://github.com/fastplotlib/fastplotlib#for-developers
Hi Kushal! I wanna to know why sometimes i can run the mcorr and cnmf correctly after set the processes = 4,and most of time I can not run it correctly. the cpu utility will be zero after 1 or 2 minutes
How large are the files? How much ram do you have? What's the traceback?
On Thu, Nov 16, 2023, 03:30 qweasdf1354 @.***> wrote:
Hi Kushal! I wanna to know why sometimes i can run the mcorr and cnmf correctly after set the processes = 4,and most of time I can not run it correctly. the cpu utility will be zero after 1 or 2 minutes
— Reply to this email directly, view it on GitHub https://github.com/nel-lab/mesmerize-core/issues/253#issuecomment-1813992926, or unsubscribe https://github.com/notifications/unsubscribe-auth/ACHXXRBZFUAOOZKK4I7ODBLYEXFJLAVCNFSM6AAAAAA7MUFSD2VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTQMJTHE4TEOJSGY . You are receiving this because you commented.Message ID: @.***>
bigtiff file is 9GB and I have 512GB RAM ,there is no traceback, most of times it went 0 and continue 5-60min and no change. sometimes i can run it correctly and it will not go zero or a few second
What's the output in the notebook when you run it
On Thu, Nov 16, 2023, 03:44 qweasdf1354 @.***> wrote:
bigtiff file is 9GB and I have 512GB RAM ,there is no traceback, most of times it went 0 and continue 5-60min and no change. sometimes i can run it correctly and it will not go zero or a few second
— Reply to this email directly, view it on GitHub https://github.com/nel-lab/mesmerize-core/issues/253#issuecomment-1814013189, or unsubscribe https://github.com/notifications/unsubscribe-auth/ACHXXRHK4LPQZ473GRMYOFTYEXG5RAVCNFSM6AAAAAA7MUFSD2VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTQMJUGAYTGMJYHE . You are receiving this because you commented.Message ID: @.***>
in the mcorr it remain the starting mc and not change for a long time. the note book show the following :
Running 5ff5eacf-2908-4e2b-a434-dc4c2c455e6e with local backend
starting mc
sometimes the cpu utility reduce to 0 and a few second it recover and show the following:
mc finished successfully!
computing projections
Computing correlation image
finished computing correlation image
I mean the cpu utility recover and it show
mc finished successfully!
computing projections
and for a period of time it show the
mc finished successfully!
computing projections
Computing correlation image
finished computing correlation image
Almost the same operation I use to start the running the notebook, however i meet some unexpected condition, i don't know what happens
When i shut down the kernel it occurs following
[W 2023-11-16 17:02:57.834 LabApp] Could not determine jupyterlab build status without nodejs
[I 2023-11-16 17:02:58.799 ServerApp] Kernel started: 1df9cea5-c4c0-4826-8018-7f3741f6a697
[I 2023-11-16 17:02:59.872 ServerApp] Connecting to kernel 1df9cea5-c4c0-4826-8018-7f3741f6a697.
[I 2023-11-16 17:02:59.872 ServerApp] Connecting to kernel 1df9cea5-c4c0-4826-8018-7f3741f6a697.
[I 2023-11-16 17:02:59.899 ServerApp] Connecting to kernel 1df9cea5-c4c0-4826-8018-7f3741f6a697.
[I 2023-11-16 17:04:58.547 ServerApp] Saving file at /0724_230221_WT/mcorr_cnmf.ipynb
Process SpawnPoolWorker-11:
Process SpawnPoolWorker-10:
Process SpawnPoolWorker-9:
Process SpawnPoolWorker-7:
Process SpawnPoolWorker-4:
Process SpawnPoolWorker-2:
Process SpawnPoolWorker-5:
Process SpawnPoolWorker-3:
Process SpawnPoolWorker-6:
Traceback (most recent call last):
Traceback (most recent call last):
Traceback (most recent call last):
Traceback (most recent call last):
Process SpawnPoolWorker-1:
Traceback (most recent call last):
File "C:\Users\PS\miniforge3\envs\mescore\lib\multiprocessing\process.py", line 314, in _bootstrap
self.run()
File "C:\Users\PS\miniforge3\envs\mescore\lib\multiprocessing\process.py", line 314, in _bootstrap
self.run()
Traceback (most recent call last):
File "C:\Users\PS\miniforge3\envs\mescore\lib\multiprocessing\process.py", line 314, in _bootstrap
self.run()
File "C:\Users\PS\miniforge3\envs\mescore\lib\multiprocessing\process.py", line 314, in _bootstrap
self.run()
Traceback (most recent call last):
Traceback (most recent call last):
File "C:\Users\PS\miniforge3\envs\mescore\lib\multiprocessing\process.py", line 314, in _bootstrap
self.run()
Traceback (most recent call last):
File "C:\Users\PS\miniforge3\envs\mescore\lib\multiprocessing\process.py", line 108, in run
self._target(*self._args, **self._kwargs)
File "C:\Users\PS\miniforge3\envs\mescore\lib\multiprocessing\process.py", line 108, in run
self._target(*self._args, **self._kwargs)
File "C:\Users\PS\miniforge3\envs\mescore\lib\multiprocessing\process.py", line 314, in _bootstrap
self.run()
File "C:\Users\PS\miniforge3\envs\mescore\lib\multiprocessing\process.py", line 108, in run
self._target(*self._args, **self._kwargs)
Traceback (most recent call last):
File "C:\Users\PS\miniforge3\envs\mescore\lib\multiprocessing\process.py", line 108, in run
self._target(*self._args, **self._kwargs)
File "C:\Users\PS\miniforge3\envs\mescore\lib\multiprocessing\process.py", line 314, in _bootstrap
self.run()
File "C:\Users\PS\miniforge3\envs\mescore\lib\multiprocessing\process.py", line 314, in _bootstrap
self.run()
File "C:\Users\PS\miniforge3\envs\mescore\lib\multiprocessing\process.py", line 108, in run
self._target(*self._args, **self._kwargs)
File "C:\Users\PS\miniforge3\envs\mescore\lib\multiprocessing\process.py", line 314, in _bootstrap
self.run()
File "C:\Users\PS\miniforge3\envs\mescore\lib\multiprocessing\pool.py", line 114, in worker
task = get()
File "C:\Users\PS\miniforge3\envs\mescore\lib\multiprocessing\pool.py", line 114, in worker
task = get()
File "C:\Users\PS\miniforge3\envs\mescore\lib\multiprocessing\process.py", line 108, in run
self._target(*self._args, **self._kwargs)
File "C:\Users\PS\miniforge3\envs\mescore\lib\multiprocessing\pool.py", line 114, in worker
task = get()
File "C:\Users\PS\miniforge3\envs\mescore\lib\multiprocessing\process.py", line 314, in _bootstrap
self.run()
File "C:\Users\PS\miniforge3\envs\mescore\lib\multiprocessing\pool.py", line 114, in worker
task = get()
File "C:\Users\PS\miniforge3\envs\mescore\lib\multiprocessing\process.py", line 108, in run
self._target(*self._args, **self._kwargs)
File "C:\Users\PS\miniforge3\envs\mescore\lib\multiprocessing\pool.py", line 114, in worker
task = get()
File "C:\Users\PS\miniforge3\envs\mescore\lib\multiprocessing\pool.py", line 114, in worker
task = get()
File "C:\Users\PS\miniforge3\envs\mescore\lib\multiprocessing\process.py", line 108, in run
self._target(*self._args, **self._kwargs)
File "C:\Users\PS\miniforge3\envs\mescore\lib\multiprocessing\queues.py", line 364, in get
with self._rlock:
File "C:\Users\PS\miniforge3\envs\mescore\lib\multiprocessing\queues.py", line 364, in get
with self._rlock:
File "C:\Users\PS\miniforge3\envs\mescore\lib\multiprocessing\pool.py", line 114, in worker
task = get()
File "C:\Users\PS\miniforge3\envs\mescore\lib\multiprocessing\queues.py", line 364, in get
with self._rlock:
File "C:\Users\PS\miniforge3\envs\mescore\lib\multiprocessing\process.py", line 108, in run
self._target(*self._args, **self._kwargs)
File "C:\Users\PS\miniforge3\envs\mescore\lib\multiprocessing\queues.py", line 364, in get
with self._rlock:
File "C:\Users\PS\miniforge3\envs\mescore\lib\multiprocessing\process.py", line 108, in run
self._target(*self._args, **self._kwargs)
File "C:\Users\PS\miniforge3\envs\mescore\lib\multiprocessing\queues.py", line 364, in get
with self._rlock:
File "C:\Users\PS\miniforge3\envs\mescore\lib\multiprocessing\queues.py", line 364, in get
with self._rlock:
File "C:\Users\PS\miniforge3\envs\mescore\lib\multiprocessing\synchronize.py", line 95, in __enter__
return self._semlock.__enter__()
File "C:\Users\PS\miniforge3\envs\mescore\lib\multiprocessing\synchronize.py", line 95, in __enter__
return self._semlock.__enter__()
File "C:\Users\PS\miniforge3\envs\mescore\lib\multiprocessing\synchronize.py", line 95, in __enter__
return self._semlock.__enter__()
File "C:\Users\PS\miniforge3\envs\mescore\lib\multiprocessing\queues.py", line 364, in get
with self._rlock:
File "C:\Users\PS\miniforge3\envs\mescore\lib\multiprocessing\synchronize.py", line 95, in __enter__
return self._semlock.__enter__()
File "C:\Users\PS\miniforge3\envs\mescore\lib\multiprocessing\pool.py", line 114, in worker
task = get()
File "C:\Users\PS\miniforge3\envs\mescore\lib\multiprocessing\synchronize.py", line 95, in __enter__
return self._semlock.__enter__()
File "C:\Users\PS\miniforge3\envs\mescore\lib\multiprocessing\pool.py", line 114, in worker
task = get()
File "C:\Users\PS\miniforge3\envs\mescore\lib\multiprocessing\synchronize.py", line 95, in __enter__
return self._semlock.__enter__()
File "C:\Users\PS\miniforge3\envs\mescore\lib\multiprocessing\pool.py", line 114, in worker
task = get()
KeyboardInterrupt
KeyboardInterrupt
KeyboardInterrupt
File "C:\Users\PS\miniforge3\envs\mescore\lib\multiprocessing\synchronize.py", line 95, in __enter__
return self._semlock.__enter__()
KeyboardInterrupt
File "C:\Users\PS\miniforge3\envs\mescore\lib\multiprocessing\queues.py", line 365, in get
res = self._reader.recv_bytes()
KeyboardInterrupt
File "C:\Users\PS\miniforge3\envs\mescore\lib\multiprocessing\queues.py", line 364, in get
with self._rlock:
KeyboardInterrupt
File "C:\Users\PS\miniforge3\envs\mescore\lib\multiprocessing\queues.py", line 365, in get
res = self._reader.recv_bytes()
KeyboardInterrupt
File "C:\Users\PS\miniforge3\envs\mescore\lib\multiprocessing\connection.py", line 218, in recv_bytes
self._check_readable()
File "C:\Users\PS\miniforge3\envs\mescore\lib\multiprocessing\synchronize.py", line 95, in __enter__
return self._semlock.__enter__()
File "C:\Users\PS\miniforge3\envs\mescore\lib\multiprocessing\connection.py", line 221, in recv_bytes
buf = self._recv_bytes(maxlength)
File "C:\Users\PS\miniforge3\envs\mescore\lib\multiprocessing\connection.py", line 143, in _check_readable
def _check_readable(self):
KeyboardInterrupt
File "C:\Users\PS\miniforge3\envs\mescore\lib\multiprocessing\connection.py", line 310, in _recv_bytes
waitres = _winapi.WaitForMultipleObjects(
KeyboardInterrupt
KeyboardInterrupt
[I 2023-11-16 17:06:18.736 ServerApp] Interrupted...
[IPKernelApp] WARNING | Parent appears to have exited, shutting down.
(mescore) D:\Step3_Extraction>Traceback (most recent call last):
File "<string>", line 1, in <module>
File "C:\Users\PS\miniforge3\envs\mescore\lib\multiprocessing\spawn.py", line 116, in spawn_main
exitcode = _main(fd, parent_sentinel)
File "C:\Users\PS\miniforge3\envs\mescore\lib\multiprocessing\spawn.py", line 126, in _main
self = reduction.pickle.load(from_parent)
File "C:\Users\PS\miniforge3\envs\mescore\lib\multiprocessing\connection.py", line 967, in rebuild_pipe_connection
handle = dh.detach()
File "C:\Users\PS\miniforge3\envs\mescore\lib\multiprocessing\reduction.py", line 131, in detach
Traceback (most recent call last):
Traceback (most recent call last):
Traceback (most recent call last):
return _winapi.DuplicateHandle(
File "<string>", line 1, in <module>
File "<string>", line 1, in <module>
File "<string>", line 1, in <module>
PermissionError: [WinError 5] 拒绝访问。
File "C:\Users\PS\miniforge3\envs\mescore\lib\multiprocessing\spawn.py", line 116, in spawn_main
File "C:\Users\PS\miniforge3\envs\mescore\lib\multiprocessing\spawn.py", line 116, in spawn_main
File "C:\Users\PS\miniforge3\envs\mescore\lib\multiprocessing\spawn.py", line 116, in spawn_main
exitcode = _main(fd, parent_sentinel)
exitcode = _main(fd, parent_sentinel)
exitcode = _main(fd, parent_sentinel)
File "C:\Users\PS\miniforge3\envs\mescore\lib\multiprocessing\spawn.py", line 126, in _main
File "C:\Users\PS\miniforge3\envs\mescore\lib\multiprocessing\spawn.py", line 126, in _main
File "C:\Users\PS\miniforge3\envs\mescore\lib\multiprocessing\spawn.py", line 126, in _main
self = reduction.pickle.load(from_parent)
self = reduction.pickle.load(from_parent)
self = reduction.pickle.load(from_parent)
File "C:\Users\PS\miniforge3\envs\mescore\lib\multiprocessing\connection.py", line 967, in rebuild_pipe_connection
File "C:\Users\PS\miniforge3\envs\mescore\lib\multiprocessing\connection.py", line 967, in rebuild_pipe_connection
File "C:\Users\PS\miniforge3\envs\mescore\lib\multiprocessing\connection.py", line 967, in rebuild_pipe_connection
handle = dh.detach()
Traceback (most recent call last):
handle = dh.detach()
File "C:\Users\PS\miniforge3\envs\mescore\lib\multiprocessing\reduction.py", line 131, in detach
handle = dh.detach()
File "<string>", line 1, in <module>
File "C:\Users\PS\miniforge3\envs\mescore\lib\multiprocessing\reduction.py", line 131, in detach
return _winapi.DuplicateHandle(
PermissionError: [WinError 5] 拒绝访问。
File "C:\Users\PS\miniforge3\envs\mescore\lib\multiprocessing\spawn.py", line 107, in spawn_main
return _winapi.DuplicateHandle(
File "C:\Users\PS\miniforge3\envs\mescore\lib\multiprocessing\reduction.py", line 131, in detach
new_handle = reduction.duplicate(pipe_handle,
PermissionError: [WinError 5] 拒绝访问。
return _winapi.DuplicateHandle(
File "C:\Users\PS\miniforge3\envs\mescore\lib\multiprocessing\reduction.py", line 79, in duplicate
PermissionError: [WinError 5] 拒绝访问。
return _winapi.DuplicateHandle(
PermissionError: [WinError 5] 拒绝访问。
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "C:\Users\PS\miniforge3\envs\mescore\lib\multiprocessing\spawn.py", line 107, in spawn_main
new_handle = reduction.duplicate(pipe_handle,
File "C:\Users\PS\miniforge3\envs\mescore\lib\multiprocessing\reduction.py", line 79, in duplicate
return _winapi.DuplicateHandle(
PermissionError: [WinError 5] 拒绝访问。
I mean the cpu utility recover and it show
mc finished successfully! computing projections
and for a period of time it show the
mc finished successfully! computing projections Computing correlation image finished computing correlation image
It can take a while to compute the correlation images and projections, and this calculation isn't multithreaded (as far as I know).
I mean sometimes it can go to the step correctly which compute the correlation images and projections, sometimes it can not because the cpu utility is went 0 for more than 1 hour
it sometimes can run a long time and no change in the notebook, could you help me to find if there something i am doing wrong?
How long does it take if you try to calculate the correlation image manually? We can change the correlation image calculation so that it's heavily subsampled, and do some of the projections lazily (standard deviation is more complicated to do lazily).
Sorry I do not know what is the correlation image manually. if the notebook can run, the algo_duration of mcorr is 1108.35 sec, the cnmf is 1876.19 sec. However almost it will seems some unexpected for more than 1hour in starting mc
the notebook can run normally as if the mcorr and cnmf can run without cup utility go zero
from caiman.summary_images import correlation_pnr
# increase 2 to some other value to subsample more
corr, pnr = correlation_pnr(movie[::2], gSig=gSig, swap_dim=False)
I just tried it with ubuntu and found out, after df.iloc[0].caiman.run() the top command shows inthe COMMAND column, the python command is disappear after 1-2 minutes
from caiman.summary_images import correlation_pnr # increase 2 to some other value to subsample more corr, pnr = correlation_pnr(movie[::2], gSig=gSig, swap_dim=False)
where should i run this code. is that could be run before thedf.iloc[0].caiman.run()
This is a function to make the correlation image from the movie.
Hi author,when i set the n_processes = 4 the ubuntu can run it. but i am not sure it could run correctly next time. the current question is i can not install pyqt6 in ubuntu thus when i run the viz, the following error occur
---------------------------------------------------------------------------
RuntimeError Traceback (most recent call last)
Cell In[26], line 1
----> 1 viz = df.mcorr.viz()
2 viz.show()
File ~/Software/mesmerize-viz/mesmerize_viz/_mcorr.py:446, in MCorrDataFrameVizExtension.viz(self, data_options, start_index, reset_timepoint_on_change, input_movie_kwargs, image_widget_kwargs, data_grid_kwargs)
396 def viz(
397 self,
398 data_options: List[str] = None,
(...)
403 data_grid_kwargs: dict = None,
404 ):
405 """
406 Visualize motion correction output.
407
(...)
443 widget that contains the DataGrid, params text box and ImageWidget
444 """
--> 446 container = McorrVizContainer(
447 dataframe=self._dataframe,
448 data_options=data_options,
449 start_index=start_index,
450 reset_timepoint_on_change=reset_timepoint_on_change,
451 input_movie_kwargs=input_movie_kwargs,
452 image_widget_kwargs=image_widget_kwargs,
453 data_grid_kwargs=data_grid_kwargs
454 )
456 return container
File ~/Software/mesmerize-viz/mesmerize_viz/_mcorr.py:218, in McorrVizContainer.__init__(self, dataframe, data_options, start_index, reset_timepoint_on_change, input_movie_kwargs, image_widget_kwargs, data_grid_kwargs)
215 # set the initial widget state with the start index
216 data_arrays = self._get_row_data(index=start_index)
--> 218 self._image_widget = ImageWidget(
219 data=data_arrays,
220 names=self._data_options,
221 **self.image_widget_kwargs
222 )
224 # mean window slider
225 self._slider_mean_window = IntSlider(
226 min=1,
227 step=2,
(...)
231 description_tooltip="set a mean rolling window"
232 )
File ~/miniforge3/envs/mescore/lib/python3.11/site-packages/fastplotlib/widgets/image.py:548, in ImageWidget.__init__(self, data, dims_order, slider_dims, window_funcs, frame_apply, grid_shape, names, grid_plot_kwargs, histogram_widget, **kwargs)
544 # update the default kwargs with any user-specified kwargs
545 # user specified kwargs will overwrite the defaults
546 grid_plot_kwargs_default.update(grid_plot_kwargs)
--> 548 self._gridplot: GridPlot = GridPlot(shape=grid_shape, **grid_plot_kwargs_default)
550 for data_ix, (d, subplot) in enumerate(zip(self.data, self.gridplot)):
551 if self._names is not None:
File ~/miniforge3/envs/mescore/lib/python3.11/site-packages/fastplotlib/layouts/_gridplot.py:79, in GridPlot.__init__(self, shape, cameras, controllers, canvas, renderer, size, **kwargs)
42 """
43 A grid of subplots.
44
(...)
74
75 """
77 self.shape = shape
---> 79 canvas, renderer = make_canvas_and_renderer(canvas, renderer)
81 if isinstance(cameras, str):
82 if cameras not in valid_cameras:
File ~/miniforge3/envs/mescore/lib/python3.11/site-packages/fastplotlib/layouts/_utils.py:88, in make_canvas_and_renderer(canvas, renderer)
82 raise ValueError(
83 f"canvas option must either be a valid WgpuCanvas implementation, a pygfx Texture"
84 f" or a str from the following options: {CANVAS_OPTIONS}"
85 )
87 if renderer is None:
---> 88 renderer = WgpuRenderer(canvas)
90 return canvas, renderer
File ~/miniforge3/envs/mescore/lib/python3.11/site-packages/pygfx/renderers/wgpu/_renderer.py:136, in WgpuRenderer.__init__(self, target, pixel_ratio, show_fps, blend_mode, sort_objects, enable_events, gamma_correction, *args, **kwargs)
133 self.pixel_ratio = pixel_ratio
135 # Make sure we have a shared object (the first renderer creates the instance)
--> 136 self._shared = get_shared()
137 self._device = self._shared.device
139 # Init counter to auto-clear
File ~/miniforge3/envs/mescore/lib/python3.11/site-packages/pygfx/renderers/wgpu/_shared.py:146, in get_shared()
141 """Get the globally shared instance. Creates it if it does not yet exist.
142 This should not be called at the import time of any module.
143 Use this to get the global device: `get_shared().device`.
144 """
145 if Shared._instance is None:
--> 146 Shared()
147 return Shared._instance
File ~/miniforge3/envs/mescore/lib/python3.11/site-packages/pygfx/renderers/wgpu/_shared.py:55, in Shared.__init__(self, canvas)
50 Shared._instance = self
52 # Create adapter and device objects - there should be just one per
53 # process. Having a global device provides the benefit that we can draw
54 # any object anywhere.
---> 55 self._adapter = wgpu.gpu.request_adapter(power_preference="high-performance")
56 self._device = self.adapter.request_device(
57 required_features=list(Shared._features), required_limits={}
58 )
60 # Create a uniform buffer for std info
61 # Stored on _store so if we'd ever swap it out for another buffer,
62 # the pipeline automatically update.
File ~/miniforge3/envs/mescore/lib/python3.11/site-packages/wgpu/base.py:98, in GPU.request_adapter(self, power_preference, force_fallback_adapter, canvas)
87 """Create a `GPUAdapter`, the object that represents an abstract wgpu
88 implementation, from which one can request a `GPUDevice`.
89
(...)
95 be able to render to. This can typically be left to None.
96 """
97 # If this method gets called, no backend has been loaded yet, let's do that now!
---> 98 from .backends.auto import gpu # noqa
100 return gpu.request_adapter(
101 power_preference=power_preference,
102 force_fallback_adapter=force_fallback_adapter,
103 canvas=canvas,
104 )
File ~/miniforge3/envs/mescore/lib/python3.11/site-packages/wgpu/backends/auto.py:27
23 else:
24 return _load_backend("wgpu_native")
---> 27 gpu = _auto_load_backend()
File ~/miniforge3/envs/mescore/lib/python3.11/site-packages/wgpu/backends/auto.py:24, in _auto_load_backend()
22 return _load_backend("js_webgpu")
23 else:
---> 24 return _load_backend("wgpu_native")
File ~/miniforge3/envs/mescore/lib/python3.11/site-packages/wgpu/backends/auto.py:9, in _load_backend(backend_name)
6 """Load a wgpu backend by name."""
8 if backend_name == "wgpu_native":
----> 9 from . import wgpu_native as module # noqa: F401,F403
10 elif backend_name == "js_webgpu":
11 from . import js_webgpu as module # noqa: F401,F403
File ~/miniforge3/envs/mescore/lib/python3.11/site-packages/wgpu/backends/wgpu_native/__init__.py:5
1 """
2 The wgpu-native backend.
3 """
----> 5 from ._api import * # noqa: F401, F403
6 from ._ffi import ffi, lib, lib_path, lib_version_info # noqa: F401
7 from ._ffi import _check_expected_version
File ~/miniforge3/envs/mescore/lib/python3.11/site-packages/wgpu/backends/wgpu_native/_api.py:28
25 from ... import base, flags, enums, structs
26 from ..._coreutils import str_flag_to_int
---> 28 from ._ffi import ffi, lib
29 from ._mappings import cstructfield2enum, enummap, enum_str2int, enum_int2str
30 from ._helpers import (
31 get_wgpu_instance,
32 get_surface_id_from_canvas,
(...)
38 SafeLibCalls,
39 )
File ~/miniforge3/envs/mescore/lib/python3.11/site-packages/wgpu/backends/wgpu_native/_ffi.py:152
150 ffi.cdef(get_wgpu_header())
151 ffi.set_source("wgpu.h", None)
--> 152 lib_path = get_wgpu_lib_path() # store path on this module so it can be checked
153 lib = ffi.dlopen(lib_path)
154 lib_version_info = get_lib_version_info()
File ~/miniforge3/envs/mescore/lib/python3.11/site-packages/wgpu/backends/wgpu_native/_ffi.py:89, in get_wgpu_lib_path()
87 download_hint = _maybe_get_hint_on_download_script()
88 pip_hint = _maybe_get_pip_hint()
---> 89 raise RuntimeError(
90 f"Could not find WGPU library in {embedded_path}. {download_hint} {pip_hint}"
91 )
92 else:
93 return embedded_path
RuntimeError: Could not find WGPU library in /home/ps/miniforge3/envs/mescore/lib/python3.11/site-packages/wgpu/resources/libwgpu_native-release.so.
when i run the pip install pyqt6 it occur
Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple
Collecting pyqt6
Using cached https://pypi.tuna.tsinghua.edu.cn/packages/17/dc/969e2da415597b328e6a73dc233f9bb4f2b312889180e9bbe48470c957e7/PyQt6-6.6.0.tar.gz (1.0 MB)
Installing build dependencies ... done
Getting requirements to build wheel ... done
Preparing metadata (pyproject.toml) ... error
error: subprocess-exited-with-error
× Preparing metadata (pyproject.toml) did not run successfully.
│ exit code: 1
╰─> [17 lines of output]
Querying qmake about your Qt installation...
Traceback (most recent call last):
File "/home/ps/miniforge3/lib/python3.10/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 353, in <module>
main()
File "/home/ps/miniforge3/lib/python3.10/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 335, in main
json_out['return_val'] = hook(**hook_input['kwargs'])
File "/home/ps/miniforge3/lib/python3.10/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 152, in prepare_metadata_for_build_wheel
whl_basename = backend.build_wheel(metadata_directory, config_settings)
File "/tmp/pip-build-env-_xej4r2z/overlay/lib/python3.10/site-packages/sipbuild/api.py", line 46, in build_wheel
project = AbstractProject.bootstrap('wheel',
File "/tmp/pip-build-env-_xej4r2z/overlay/lib/python3.10/site-packages/sipbuild/abstract_project.py", line 87, in bootstrap
project.setup(pyproject, tool, tool_description)
File "/tmp/pip-build-env-_xej4r2z/overlay/lib/python3.10/site-packages/sipbuild/project.py", line 602, in setup
self.update(tool)
File "/tmp/pip-install-791r9wxd/pyqt6_dbdc74e1aa204501afe455a590548707/project.py", line 163, in update
raise UserException(
sipbuild.exceptions.UserException
[end of output]
note: This error originates from a subprocess, and is likely not a problem with pip.
error: metadata-generation-failed
× Encountered error while generating package metadata.
╰─> See above for output.
note: This is an issue with the package mentioned above, not pip.
hint: See above for details.
You don't need pyqt if to just run the viz in the notebook, %gui qt
is just there to show you how you can use it if you want. If you remove %gui qt
it will run in the notebook.
Hi author,when i set the n_processes = 4 the ubuntu can run it. but i am not sure it could run correctly next time. the current question is i can not install pyqt6 in ubuntu thus when i run the viz, the following error occur
--------------------------------------------------------------------------- RuntimeError Traceback (most recent call last) Cell In[26], line 1 ----> 1 viz = df.mcorr.viz() 2 viz.show() File ~/Software/mesmerize-viz/mesmerize_viz/_mcorr.py:446, in MCorrDataFrameVizExtension.viz(self, data_options, start_index, reset_timepoint_on_change, input_movie_kwargs, image_widget_kwargs, data_grid_kwargs) 396 def viz( 397 self, 398 data_options: List[str] = None, (...) 403 data_grid_kwargs: dict = None, 404 ): 405 """ 406 Visualize motion correction output. 407 (...) 443 widget that contains the DataGrid, params text box and ImageWidget 444 """ --> 446 container = McorrVizContainer( 447 dataframe=self._dataframe, 448 data_options=data_options, 449 start_index=start_index, 450 reset_timepoint_on_change=reset_timepoint_on_change, 451 input_movie_kwargs=input_movie_kwargs, 452 image_widget_kwargs=image_widget_kwargs, 453 data_grid_kwargs=data_grid_kwargs 454 ) 456 return container File ~/Software/mesmerize-viz/mesmerize_viz/_mcorr.py:218, in McorrVizContainer.__init__(self, dataframe, data_options, start_index, reset_timepoint_on_change, input_movie_kwargs, image_widget_kwargs, data_grid_kwargs) 215 # set the initial widget state with the start index 216 data_arrays = self._get_row_data(index=start_index) --> 218 self._image_widget = ImageWidget( 219 data=data_arrays, 220 names=self._data_options, 221 **self.image_widget_kwargs 222 ) 224 # mean window slider 225 self._slider_mean_window = IntSlider( 226 min=1, 227 step=2, (...) 231 description_tooltip="set a mean rolling window" 232 ) File ~/miniforge3/envs/mescore/lib/python3.11/site-packages/fastplotlib/widgets/image.py:548, in ImageWidget.__init__(self, data, dims_order, slider_dims, window_funcs, frame_apply, grid_shape, names, grid_plot_kwargs, histogram_widget, **kwargs) 544 # update the default kwargs with any user-specified kwargs 545 # user specified kwargs will overwrite the defaults 546 grid_plot_kwargs_default.update(grid_plot_kwargs) --> 548 self._gridplot: GridPlot = GridPlot(shape=grid_shape, **grid_plot_kwargs_default) 550 for data_ix, (d, subplot) in enumerate(zip(self.data, self.gridplot)): 551 if self._names is not None: File ~/miniforge3/envs/mescore/lib/python3.11/site-packages/fastplotlib/layouts/_gridplot.py:79, in GridPlot.__init__(self, shape, cameras, controllers, canvas, renderer, size, **kwargs) 42 """ 43 A grid of subplots. 44 (...) 74 75 """ 77 self.shape = shape ---> 79 canvas, renderer = make_canvas_and_renderer(canvas, renderer) 81 if isinstance(cameras, str): 82 if cameras not in valid_cameras: File ~/miniforge3/envs/mescore/lib/python3.11/site-packages/fastplotlib/layouts/_utils.py:88, in make_canvas_and_renderer(canvas, renderer) 82 raise ValueError( 83 f"canvas option must either be a valid WgpuCanvas implementation, a pygfx Texture" 84 f" or a str from the following options: {CANVAS_OPTIONS}" 85 ) 87 if renderer is None: ---> 88 renderer = WgpuRenderer(canvas) 90 return canvas, renderer File ~/miniforge3/envs/mescore/lib/python3.11/site-packages/pygfx/renderers/wgpu/_renderer.py:136, in WgpuRenderer.__init__(self, target, pixel_ratio, show_fps, blend_mode, sort_objects, enable_events, gamma_correction, *args, **kwargs) 133 self.pixel_ratio = pixel_ratio 135 # Make sure we have a shared object (the first renderer creates the instance) --> 136 self._shared = get_shared() 137 self._device = self._shared.device 139 # Init counter to auto-clear File ~/miniforge3/envs/mescore/lib/python3.11/site-packages/pygfx/renderers/wgpu/_shared.py:146, in get_shared() 141 """Get the globally shared instance. Creates it if it does not yet exist. 142 This should not be called at the import time of any module. 143 Use this to get the global device: `get_shared().device`. 144 """ 145 if Shared._instance is None: --> 146 Shared() 147 return Shared._instance File ~/miniforge3/envs/mescore/lib/python3.11/site-packages/pygfx/renderers/wgpu/_shared.py:55, in Shared.__init__(self, canvas) 50 Shared._instance = self 52 # Create adapter and device objects - there should be just one per 53 # process. Having a global device provides the benefit that we can draw 54 # any object anywhere. ---> 55 self._adapter = wgpu.gpu.request_adapter(power_preference="high-performance") 56 self._device = self.adapter.request_device( 57 required_features=list(Shared._features), required_limits={} 58 ) 60 # Create a uniform buffer for std info 61 # Stored on _store so if we'd ever swap it out for another buffer, 62 # the pipeline automatically update. File ~/miniforge3/envs/mescore/lib/python3.11/site-packages/wgpu/base.py:98, in GPU.request_adapter(self, power_preference, force_fallback_adapter, canvas) 87 """Create a `GPUAdapter`, the object that represents an abstract wgpu 88 implementation, from which one can request a `GPUDevice`. 89 (...) 95 be able to render to. This can typically be left to None. 96 """ 97 # If this method gets called, no backend has been loaded yet, let's do that now! ---> 98 from .backends.auto import gpu # noqa 100 return gpu.request_adapter( 101 power_preference=power_preference, 102 force_fallback_adapter=force_fallback_adapter, 103 canvas=canvas, 104 ) File ~/miniforge3/envs/mescore/lib/python3.11/site-packages/wgpu/backends/auto.py:27 23 else: 24 return _load_backend("wgpu_native") ---> 27 gpu = _auto_load_backend() File ~/miniforge3/envs/mescore/lib/python3.11/site-packages/wgpu/backends/auto.py:24, in _auto_load_backend() 22 return _load_backend("js_webgpu") 23 else: ---> 24 return _load_backend("wgpu_native") File ~/miniforge3/envs/mescore/lib/python3.11/site-packages/wgpu/backends/auto.py:9, in _load_backend(backend_name) 6 """Load a wgpu backend by name.""" 8 if backend_name == "wgpu_native": ----> 9 from . import wgpu_native as module # noqa: F401,F403 10 elif backend_name == "js_webgpu": 11 from . import js_webgpu as module # noqa: F401,F403 File ~/miniforge3/envs/mescore/lib/python3.11/site-packages/wgpu/backends/wgpu_native/__init__.py:5 1 """ 2 The wgpu-native backend. 3 """ ----> 5 from ._api import * # noqa: F401, F403 6 from ._ffi import ffi, lib, lib_path, lib_version_info # noqa: F401 7 from ._ffi import _check_expected_version File ~/miniforge3/envs/mescore/lib/python3.11/site-packages/wgpu/backends/wgpu_native/_api.py:28 25 from ... import base, flags, enums, structs 26 from ..._coreutils import str_flag_to_int ---> 28 from ._ffi import ffi, lib 29 from ._mappings import cstructfield2enum, enummap, enum_str2int, enum_int2str 30 from ._helpers import ( 31 get_wgpu_instance, 32 get_surface_id_from_canvas, (...) 38 SafeLibCalls, 39 ) File ~/miniforge3/envs/mescore/lib/python3.11/site-packages/wgpu/backends/wgpu_native/_ffi.py:152 150 ffi.cdef(get_wgpu_header()) 151 ffi.set_source("wgpu.h", None) --> 152 lib_path = get_wgpu_lib_path() # store path on this module so it can be checked 153 lib = ffi.dlopen(lib_path) 154 lib_version_info = get_lib_version_info() File ~/miniforge3/envs/mescore/lib/python3.11/site-packages/wgpu/backends/wgpu_native/_ffi.py:89, in get_wgpu_lib_path() 87 download_hint = _maybe_get_hint_on_download_script() 88 pip_hint = _maybe_get_pip_hint() ---> 89 raise RuntimeError( 90 f"Could not find WGPU library in {embedded_path}. {download_hint} {pip_hint}" 91 ) 92 else: 93 return embedded_path RuntimeError: Could not find WGPU library in /home/ps/miniforge3/envs/mescore/lib/python3.11/site-packages/wgpu/resources/libwgpu_native-release.so.
However I encounter some error, is that something i set wrong?
can you try this in the environment, I've seen conda have issues putting wgpu in the right place:
install -c conda-forge wgpu-py
If you're on ubuntu it's much easier and faster to just use regular python venv instead of dealing with conda.
Sorry Kushal! i am freshbird in ubuntu and i try this code in the mescore environment and it shows that
(mescore) ps@ps:~/Software/mesmerize-core$ install -c conda-forge wgpu-py
install: cannot stat 'conda-forge': No such file or directory
should i try it in the jupyter lab?
Sorry I forgot you need a "mamba " before the install
On Fri, Nov 17, 2023, 20:41 qweasdf1354 @.***> wrote:
Sorry Kushal! i am freshbird in ubuntu and i try this code in the mescore environment and it shows that
(mescore) @.***:~/Software/mesmerize-core$ install -c conda-forge wgpu-py install: cannot stat 'conda-forge': No such file or directory
should i try it in the jupyter lab?
— Reply to this email directly, view it on GitHub https://github.com/nel-lab/mesmerize-core/issues/253#issuecomment-1817314600, or unsubscribe https://github.com/notifications/unsubscribe-auth/ACHXXRBHV267SUPGSNLKP6TYFAG4XAVCNFSM6AAAAAA7MUFSD2VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTQMJXGMYTINRQGA . You are receiving this because you commented.Message ID: @.***>
Thanks! it works and i will try the notebook now!
Hi Kushal! it can open the user interface windows of viz however it is gray and no image. it seems loading, but it seems can not loading for a long time
Is there something i set wrong? is it related to i set the n_processes = 4?
You probably haven't installed gpu drivers
On Fri, Nov 17, 2023, 21:04 qweasdf1354 @.***> wrote:
Is there something i set wrong? is it related to i set the n_processes = 4?
— Reply to this email directly, view it on GitHub https://github.com/nel-lab/mesmerize-core/issues/253#issuecomment-1817326101, or unsubscribe https://github.com/notifications/unsubscribe-auth/ACHXXRESQRD6FTI72EBCHX3YFAJTXAVCNFSM6AAAAAA7MUFSD2VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTQMJXGMZDMMJQGE . You are receiving this because you commented.Message ID: @.***>
I reinstall the GPU driver and cuda and cudnn. the cuda version is 11.8, however the nvidia-smi shows the 12.2(which may mean the version i can install)
When i start playing the tiff, the GPU utility is about 30-50% which may represents the GPU is activate by the viz code
Is there something I need to do to see the tiff?
Hi author, sorry to bother you, i wanna to ask for your help!! Thanks a lot!
Sorry been busy. Can you try installing the mesa-vulkan-driver package too, see here: https://github.com/fastplotlib/fastplotlib#linux
Did you reboot after installing the drivers?
Thanks for your reply! I try to reboot the computer. I install the driver and using the one in the nvidia.org recommend. I will try the mesa-vulkan-driver package
can you pip install glfw
and see if the following minimal example runs, just create a .py
file and run it with python in that env:
import fastplotlib as fpl
import numpy as np
plot = fpl.Plot()
data = np.random.ran(100, 100)
image_graphic = plot.add_image(data)
plot.show()
Hi kushal, I try it in the mescore env and it is grey too like before notebook.
and show the following error
libEGL warning: DRI3: Screen seems not DRI3 capable
libEGL warning: DRI2: failed to authenticate
EGL context: -robust access
enumerate_adapters: Initialization of an object has failed
/home/ps/miniforge3/envs/mescore/lib/python3.11/site-packages/fastplotlib/graphics/_features/_base.py:34: UserWarning: converting float64 array to float32
warn(f"converting {array.dtype} array to float32")
I just install the vulkan-drivers using following code
sudo apt-get install cmake git gcc g++ mesa-* libwayland-dev libxrandr-dev
sudo apt-get install libvulkan1 mesa-vulkan-drivers vulkan-utils
vulkaninfo
and it shows
===========
VULKAN INFO
===========
Vulkan Instance Version: 1.1.70
ERROR: [Loader Message] Code 0 : libGLX_nvidia.so.0: cannot open shared object file: No such file or directory
/build/vulkan-UL09PJ/vulkan-1.1.70+dfsg1/demos/vulkaninfo.c:2700: failed with VK_ERROR_INITIALIZATION_FAILED
Thanks!
Hi kushal, I feel sorry to bother you and it may be the Vulkan driver not install correct. But i have try many method and I do not know how to recover the ubuntu to the state i have not install the vulkan before. i am not sure it will influence the system. and until now i think i am not really install the vulkan in ubuntu that maybe why i can not see the picture. could you give me some advice to this situation?
What's your kernel version? You have a RTX 4090 which is quite new and the drivers and kernel might be a bit wonky with it.
uname -a
the following is the results
Linux ps 5.4.0-152-generic #169~18.04.1-Ubuntu SMP Wed Jun 7 22:22:24 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux
Ah, you're on Ubuntu 18.04 with kernel 5.4 which is from 2019, and your gpu was released 1 year ago. If you use the latest Ubuntu and latest kernel you might have better luck. New Nvidia GPUs tend to not play nicely with older kernels.
thanks! for your reply! and is that mean i will update the ubuntu to 22.04 ?
I would try the latest Ubuntu with kernel v6
On Mon, Nov 20, 2023, 23:47 qweasdf1354 @.***> wrote:
thanks! for your reply! and is that mean i will update the ubuntu to 22.04 ?
— Reply to this email directly, view it on GitHub https://github.com/nel-lab/mesmerize-core/issues/253#issuecomment-1820234521, or unsubscribe https://github.com/notifications/unsubscribe-auth/ACHXXRB6HJZC7NYBOXUPSUTYFQW5BAVCNFSM6AAAAAA7MUFSD2VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTQMRQGIZTINJSGE . You are receiving this because you commented.Message ID: @.***>
Thanks kushal! I will try it too
Hi,Kushal! i wanna to let you know! I using the Ubuntu22.04 and it done! Thanks a lot for your patient and this great tool!
So the viz works on Ubuntu 22.04 with the 4090 GPU and new drivers? Nvidia drivers for new GPUs are often quite finicky on older OSes.
Yes! i can run the notebook in ubuntu 22.04 and can see the tiff using the viz and can record a video. I wanna to know is that possible that I run the viz to see the behaviour video and neural activity tiff and some extracted neural activity trace simutanously, which i wanna to make a typical video for presentation or publication. Thanks a lot for your help!
And may I invite you to be author in my this project, which may be accomplish in this year. I really appreciate for your help!
Sorry i mean in the next year!
Hi, author! after run the mcorr and cnmf, I use the following code but occur some unexpected. is that something i set wrong? I use windows10 system. and I update the viz by git. and restart the kernel but not help. Could you help me?