Releases: dattalab/keypoint-moseq
Keypoint MoSeq 0.4.1
Bumped jax-moseq dependency to version 0.2.1
Keypoint MoSeq 0.4.0
Important note!
Because of the change in jax-moseq version (see below), models trained before this update will no longer be compatible with the modeling code. Therefore, if you plan to update and have previous keypoint-MoSeq projects, we recommend installing the new code version in a separate conda environment so that you can still interact with existing projects.
Changes
-
Updated jax-moseq dependency to version 0.2.0
-
Added option for location-aware modeling (see docs for details)
-
Added a new section docs section and associated code for model comparison, selection and averaging
-
Added option to load data from facemap
-
Updated kappa scan example code to include both autoregressive-only and full-model modeling steps
-
Fixed conda environment file for Windows GPU install (thanks @!)
-
Added support for 3D data in statistical analysis pipeline (thanks @)
-
Bugfixes
Keypoint MoSeq 0.3.2
Another analysis pipeline bugfix related to seaborn version update
Keypoint MoSeq 0.3.1
Bug fix in analysis pipeline
Keypoint MoSeq 0.3.0
Overhaul of statistical analysis pipeline
We refactored the statistical analysis pipeline so that it no longer depends on jupyter notebook extensions (many users reported issues installing the extensions). Note: if you have already run the analysis pipeline, your saved group labels and syllable names will no longer be usable after this version update unless you run the conversion code below.
Analysis pipeline conversion code
Previously, group labels and syllable names were stored in yaml files (index.yaml
and syll_info.yaml
respectively). As of this update, they will be stored in csv files. To convert from yaml to csv, use the conversion code below:
project_dir = XXX
model_name = XXX
import os
import yaml
import pandas as pd
# convert index.yaml
index_filepath = os.path.join(project_dir, 'index.yaml')
with open(index_filepath, 'r') as f:
index_data = yaml.safe_load(f)
index_df = pd.DataFrame({"group": [i["group"] for i in index_data["files"]],"name": [i["name"] for i in index_data["files"]]})
# write index dataframe to csv
index_df[["name","group"]].to_csv(os.path.join(project_dir, "index.csv"), index=False)
# convert syll_info.yaml
syll_info_path = os.path.join(project_dir, model_name, "syll_info.yaml")
with open(syll_info_path, "r") as f:
syll_info = yaml.safe_load(f)
syll_info_df = {"syllable": [], "short_description": [], "label": [], "movie_path": []}
for k, v in syll_info.items():
syll_info_df["syllable"].append(k)
syll_info_df["short_description"].append(v["desc"])
syll_info_df["label"].append(v["label"])
syll_info_df["movie_path"].append(v["movie_path"])
syll_info_df = pd.DataFrame(syll_info_df)
syll_info_df.to_csv(os.path.join(project_dir, model_name, "syll_info.csv"), index=False)
Other main changes
Support for 3D grid movies
It is now possible to generate grid movies based on multi-camera 3D keypoint tracking. See docs for details.
Automatic kappa scans
We wrote example code for performing a sequence model fits with different values of the stickiness hyperparameter (kappa), and also added a new function to help visualize the results. See docs for details.
Calibration bug-fix
Many users were reporting bugs in the calibration step of the keypoint-MoSeq pipeline, which were caused by recent version releases in the holoviews/panel/jupyter ecosystem. We updated the code to fix these bugs. If you still encounter bugs with the calibration widget, try upgrading the relevant packages:
pip install holoviews --upgrade
pip install bokeh --upgrade
pip install panel --upgrade
pip install ipywidgets --upgrade
pip install jupyter --upgrade
Note: From now on, the calibration widget will only work in jupyter lab. It will not work in jupyter notebook.
Other main changes
New FAQs section on visualization
We added a new FAQ section about visualization. The section covers:
- Making grid movies for 3D data
- Why are there only trajectory plots for a subset of syllables?
- Why are there only grid movies for a subset of syllables?
- Why do my trajectory plots and grid movies disagree?
New FAQ section on "Advanced topics" in modeling
We added a new FAQ section about advanced modeling topics. The section covers:
- Exporting model-based pose estimates
- Automatic kappa scans
Removed code for model-free changepoint analysis.
The original keypoint-MoSeq reprint included an analysis of changepoints and a complicated procedure to identifying them. These have mostly been removed in the revision, so we are deleting them here too.
Other minor changes
- Return sampled instances in generate_grid_movies
- Allow passing arbitrary keypoint colors in viz functions
- Allow manual setting of axis lims for trajectory plots
- Allow setting "jitter" and "seed" inputs in model fitting calls
- Make "density_sample" a separae kwarg in viz functions
- Small changes to wording of docs
- Bugfixes
New Contributors
Full Changelog: 0.2.5...0.3.0
Keypoint MoSeq 0.2.5
Bugfix in video matching
Keypoint MoSeq 0.2.4
- Bump jax_moseq dependency to 0.1.0 (which now depends on dynamax 0.1.2) -> more memory efficient fitting
- Small bug fix in config checking
Full Changelog: 0.2.3...0.2.4
Keypoint MoSeq 0.2.3
- Better error message for duplicate file names
- Removed
output_notebook
from main thread ofanalysis.py
- Added missing dependency and fixed some docstrings
Keypoint MoSeq 0.2.2
Small bugfix in hyperparameter handling for apply_model
Keypoint MoSeq 0.2.1
Bugfix in save destination for trajectory plots