dattalab / keypoint-moseq

https://keypoint-moseq.readthedocs.io
Other
71 stars 28 forks source link

Calibration consistently fails across platforms, gpu/cpu versions and installation methods #108

Closed romainligneul closed 11 months ago

romainligneul commented 11 months ago

Hi,

Thanks a lot for this tool which seems very promising. I managed to install keypoint_moseq on Windows and Linux, with GPU or CPU, using the conda or pip methods, with the required jupyter extensions. I have also reproduced the problem on my own dataset and on the demonstration dataset. In every case, the calibration fails with the following error message:

WARNING:param.dynamic_operation: Callable raised "TypeError("update_img() missing 3 required positional arguments: 'sample_ix', 'x', and 'y'")". Invoked as dynamic_operation(sample_ix=0, x=None, y=None, crop_size=200) WARNING:param.dynamic_operation:Callable raised "TypeError("update_img() missing 3 required positional arguments: 'sample_ix', 'x', and 'y'")". Invoked as dynamic_operation(sample_ix=0, x=None, y=None, crop_size=200) [...] TypeError: update_img() missing 3 required positional arguments: 'sample_ix', 'x', and 'y'

Is there a way around this issue?

Best,

Romain

calebweinreb commented 11 months ago

Can you send the output of pip list (run from a terminal with the keypoint_moseq environment active)?

romainligneul commented 11 months ago

Here is the pip list (this one is for the Windows install, with the pip installation approach) absl-py 2.0.0
anyio 4.0.0
argon2-cffi 23.1.0
argon2-cffi-bindings 21.2.0
arrow 1.3.0
asttokens 2.4.1
async-lru 2.0.4
attrs 23.1.0
av 10.0.0 Babel 2.13.1 backcall 0.2.0 backports.functools-lru-cache 1.6.5 beautifulsoup4 4.12.2 bleach 6.1.0 blosc2 2.0.0 bokeh 3.3.0 certifi 2023.7.22 cffi 1.16.0 charset-normalizer 3.3.1 chex 0.1.6 cloudpickle 3.0.0 colorama 0.4.6 colorcet 3.0.1 comm 0.1.4 contourpy 1.1.1 cycler 0.12.1 Cython 3.0.4 cytoolz 0.12.2 debugpy 1.6.7 decorator 5.1.1 defusedxml 0.7.1 dm-tree 0.1.8 dynamax 0.1.2 entrypoints 0.4 etils 1.5.2 exceptiongroup 1.1.3 executing 2.0.1 fastjsonschema 2.18.1 fastprogress 1.0.3 fonttools 4.43.1 fqdn 1.5.1 fsspec 2023.10.0 gast 0.5.4 h5py 3.10.0 hdmf 3.11.0 holoviews 1.18.0 idna 3.4 imageio 2.31.6 imageio-ffmpeg 0.4.9 importlib-metadata 6.8.0 importlib-resources 6.1.0 ipykernel 6.26.0 ipython 8.16.1 ipython-genutils 0.2.0 ipywidgets 7.5.1 isoduration 20.11.0 jax 0.3.22 jax-moseq 0.1.0 jaxlib 0.3.22 jaxtyping 0.2.14 jedi 0.19.1 Jinja2 3.1.2 joblib 1.3.2 json5 0.9.14 jsonpointer 2.4 jsonschema 4.19.2 jsonschema-specifications 2023.7.1 jupyter-bokeh 2.0.3 jupyter_client 8.5.0 jupyter-contrib-core 0.4.0 jupyter-contrib-nbextensions 0.7.0 jupyter_core 5.5.0 jupyter-events 0.8.0 jupyter-highlight-selected-word 0.2.0 jupyter-latex-envs 1.4.6 jupyter-lsp 2.2.0 jupyter-nbextensions-configurator 0.4.1 jupyter_server 2.9.1 jupyter_server_terminals 0.4.4 jupyterlab 4.0.7 jupyterlab-pygments 0.2.2 jupyterlab_server 2.25.0 keypoint-moseq 0.2.5 kiwisolver 1.4.5 linkify-it-py 2.0.2 llvmlite 0.41.1 lxml 4.9.3 Markdown 3.5 markdown-it-py 3.0.0 MarkupSafe 2.1.3 matplotlib 3.8.0 matplotlib-inline 0.1.6 mdit-py-plugins 0.4.0 mdurl 0.1.2 mistune 2.0.5 mkl-fft 1.3.8 mkl-random 1.2.4 mkl-service 2.4.0 msgpack 1.0.7 nbclient 0.8.0 nbconvert 7.2.1 nbformat 5.9.2 ndindex 1.7 ndx-pose 0.1.1 nest-asyncio 1.5.8 networkx 3.2.1 notebook 7.0.6 notebook_shim 0.2.3 numba 0.58.1 numexpr 2.8.7 numpy 1.24.3 opencv-python-headless 4.8.1.78 opt-einsum 3.3.0 optax 0.1.7 optree 0.9.2 overrides 7.4.0 packaging 23.2 pandas 2.1.2 pandocfilters 1.5.0 panel 1.3.0 param 2.0.0 parso 0.8.3 patsy 0.5.3 pickleshare 0.7.5 Pillow 10.0.1 pip 23.3 pkgutil_resolve_name 1.3.10 platformdirs 3.11.0 plotly 5.18.0 prometheus-client 0.18.0 prompt-toolkit 3.0.39 psutil 5.9.0 pure-eval 0.2.2 py-cpuinfo 9.0.0 pycparser 2.21 pyct 0.5.0 Pygments 2.16.1 pynwb 2.5.0 pyparsing 3.1.1 pyrsistent 0.18.0 python-dateutil 2.8.2 python-json-logger 2.0.7 pytz 2023.3.post1 pyviz_comms 3.0.0 pywin32 305.1 pywinpty 2.0.10 PyYAML 6.0.1 pyzmq 25.1.1 qgrid 1.3.1 referencing 0.30.2 requests 2.31.0 rfc3339-validator 0.1.4 rfc3986-validator 0.1.1 rpds-py 0.10.6 ruamel.yaml 0.18.3 ruamel.yaml.clib 0.2.8 scikit-learn 1.3.2 scipy 1.11.3 seaborn 0.13.0 Send2Trash 1.8.2 setuptools 68.0.0 simplejson 3.19.2 six 1.16.0 sleap-io 0.0.11 sniffio 1.3.0 soupsieve 2.5 stack-data 0.6.2 statsmodels 0.14.0 tables 3.8.0 tabulate 0.9.0 tenacity 8.2.3 tensorflow-probability 0.19.0 terminado 0.15.0 testpath 0.6.0 threadpoolctl 3.2.0 tinycss2 1.2.1 tomli 2.0.1 toolz 0.12.0 tornado 6.2 tqdm 4.66.1 traitlets 5.13.0 typeguard 4.1.5 types-python-dateutil 2.8.19.14 typing_extensions 4.8.0 tzdata 2023.3 uc-micro-py 1.0.2 uri-template 1.3.0 urllib3 2.0.7 vidio 0.0.4 wcwidth 0.2.8 webcolors 1.13 webencodings 0.5.1 websocket-client 1.6.4 wheel 0.41.2 widgetsnbextension 3.5.2 xyzservices 2023.10.1 zipp 3.17.0

calebweinreb commented 11 months ago

Thanks. It looks like the code didn't work with newer versions of holoviews/panel. I rewrote it to be compatible with these newer versions. You can use the updated code by installing the calibration_hotfix branch (https://github.com/dattalab/keypoint-moseq/tree/calibration_hotfix).

git clone https://github.com/dattalab/keypoint-moseq.git
cd keypoint-moseq
git checkout calibration_hotfix
pip install -U .

Note: the calibration widget will only work in jupyter lab. Note a jupyter notebook

romainligneul commented 11 months ago

Thanks, the hotfix works beautifully (tested on Windows so far).

kevthan commented 11 months ago

Hi @calebweinreb, thank you for addressing this issue. It seems like the calibration_hotfix branch has been deleted. Could you please restore it? Or is there another way to ensure compatibility?

calebweinreb commented 11 months ago

Hello, Sorry for the confusion. The calibration fix was merged into the dev branch. It will also be included in the new version release which should happen later today.

romainligneul commented 11 months ago

Just for your information, on my system (Windows GPU) the hotfix worked for the calibration but bugged for other steps (problem in the viz.py module). So I use one environment for the calibration and another for the rest. But perhaps this is specific to me.