dattalab / keypoint-moseq

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

Value Error generating grid movies #48

Closed lencriv closed 1 year ago

lencriv commented 1 year ago

I am receiving the following error when attempting to generate grid movies. I saw that this was an issue for crowd movies and was fixed in the most recent release (crowd movies do not produce this error for me).

---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
Cell In[76], line 1
----> 1 kpms.generate_grid_movies(name=name, project_dir=project_dir, coordinates=coordinates, **config())
      2 #kpms.generate_crowd_movies(name=name, project_dir=project_dir, coordinates=coordinates, **config())

File ~\anaconda3\envs\keypoint_moseq\lib\site-packages\keypoint_moseq\viz.py:856, in generate_grid_movies(results, output_dir, name, project_dir, results_path, video_dir, video_paths, rows, cols, filter_size, pre, post, min_frequency, min_duration, dot_radius, dot_color, quality, window_size, use_reindexed, coordinates, bodyparts, use_bodyparts, sampling_options, video_extension, max_video_size, **kwargs)
    852 centroids,headings = filter_centroids_headings(
    853     centroids, headings, filter_size=filter_size)
    855 if window_size is None:
--> 856     window_size = get_grid_movie_window_size(
    857         sampled_instances, centroids, headings, 
    858         coordinates, pre, post)
    860 # in practice we may need a smaller window...
    861 scaled_window_size = max_video_size/max(rows,cols)

File ~\anaconda3\envs\keypoint_moseq\lib\site-packages\keypoint_moseq\viz.py:666, in get_grid_movie_window_size(sampled_instances, centroids, headings, coordinates, pre, post, pctl, fudge_factor, blocksize)
    664 ax_distances = np.max(np.abs(all_trajectories), axis=1)
    665 window_size = np.percentile(ax_distances, pctl) * fudge_factor * 2
--> 666 window_size = int(np.ceil(window_size / blocksize) * blocksize)
    667 return window_size

ValueError: cannot convert float NaN to integer
calebweinreb commented 1 year ago

Thanks for the heads up! I'll fix this going forward. In the meantime you can avoid it by passing in an explicit window_size, e.g.

kpms.generate_grid_movies(name=name, project_dir=project_dir, coordinates=coordinates, window_size=240, **config())
calebweinreb commented 1 year ago

I published the fix (https://github.com/dattalab/keypoint-moseq/releases/tag/0.1.3) so now updating should solve the problem.