GLM-HMM and GLM-HMMT tooling for behavioural task analysis.
Project description
glmhmmt
glmhmmt is the installable package for the Dynamax-based GLM-HMM / GLM-HMMT code.
If someone in the lab only wants to import the model class in their own code, this package is enough:
pip install "git+https://github.com/BrainCircuitsBehaviorLab/glmhmmt.git"
or with uv:
uv pip install "git+https://github.com/BrainCircuitsBehaviorLab/glmhmmt.git"
If they want to add it as a dependency in another uv project:
uv add "glmhmmt @ git+https://github.com/BrainCircuitsBehaviorLab/glmhmmt.git"
Then in Python:
from glmhmmt import SoftmaxGLMHMM
If they want the baseline GLM fit directly in their own code, including binary lapses:
from glmhmmt import fit_glm
Direct Model Use
See examples/use_softmax_glmhmm.py for a minimal example that builds the model directly from arrays, without any task adapter.
For a baseline GLM example, see examples/glm_lapses/example.py.
The package root uses lazy imports, so importing SoftmaxGLMHMM does not require task adapters.
The CLI entrypoints under glmhmmt.cli.* are wrappers around task adapters, runtime paths, and result directories. They are useful for command-line workflows, but they are not the recommended import interface for another project.
Runtime Config
glmhmmt now looks for config.toml by searching upward from the current working directory. That means each analysis project can keep its own config next to its notebooks and scripts.
The clean way to initialise one is:
uv run glmhmmt-init-config
That writes config.toml in the current working directory. You can also choose the destination explicitly:
uv run glmhmmt-init-config \
--path ./config.toml \
--data-dir /absolute/path/to/data \
--results-dir /absolute/path/to/results
At runtime, config precedence is:
configure_paths(...)GLMHMMT_CONFIG_PATH- nearest
config.tomlfound by upward search from the current working directory - repo-local
config.tomlfor editable installs - packaged defaults in
src/glmhmmt/resources/default_config.toml
Runtime Compatibility
The published package is tested against:
jax==0.4.35jaxlib==0.4.35tensorflow-probability==0.25.0optax==0.2.5
These pins are intentionally conservative because newer JAX / TFP combinations
have broken the tensorflow_probability.substrates.jax import path used by
dynamax and glmhmmt.model.
Task Adapters Are Optional
This package does not need task adapters when someone only wants the reusable model classes and fitting utilities.
If a user wants task-aware CLIs or notebooks, they can provide adapters in either of these ways:
- Put an
adapters/package in their own working directory, or configure[plugins].adapter_paths/GLMHMMT_TASK_PATHS. - Install a separate package that exposes entry points in the
glmhmmt.tasksgroup.
Minimal entry-point example:
[project.entry-points."glmhmmt.tasks"]
my_lab_task = "my_lab_glmhmmt.task:MyLabTaskAdapter"
Recommended Sharing Workflow
For lab use, the simplest setup is:
- Keep
glmhmmtin its own Git repo. - Keep task adapters in a separate companion repo.
- Install both from Git or from local editable paths during development.
That is usually better than publishing to PyPI immediately, because:
- it avoids exposing unrelated analysis code
- updates are simple
- private sharing inside the lab is easy
Publish to PyPI later only if you want a public, versioned release.
Local Development
For work inside this repository:
uv sync
uv run python -c "from glmhmmt import SoftmaxGLMHMM; print(SoftmaxGLMHMM)"
If you want the notebook extras too:
uv sync --extra notebooks
The project-local runtime overrides live in config.toml. Packaged defaults live in src/glmhmmt/resources/default_config.toml.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file glmhmmt-0.2.2.tar.gz.
File metadata
- Download URL: glmhmmt-0.2.2.tar.gz
- Upload date:
- Size: 173.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
487ca495fb3e53766f4a06559dee106fd24dc914a845406ee02d1375a74e073a
|
|
| MD5 |
1df4e819f54597ccc142ee0c9e2d6ba1
|
|
| BLAKE2b-256 |
7df92b2cbe9518243fe43b19aee3090c0ad34b550753b9b418a24bc6f32f5681
|
Provenance
The following attestation bundles were made for glmhmmt-0.2.2.tar.gz:
Publisher:
publish.yml on BrainCircuitsBehaviorLab/glmhmmt
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
glmhmmt-0.2.2.tar.gz -
Subject digest:
487ca495fb3e53766f4a06559dee106fd24dc914a845406ee02d1375a74e073a - Sigstore transparency entry: 1362674463
- Sigstore integration time:
-
Permalink:
BrainCircuitsBehaviorLab/glmhmmt@f24081754e9500c08639a174b962f41209e77c21 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/BrainCircuitsBehaviorLab
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@f24081754e9500c08639a174b962f41209e77c21 -
Trigger Event:
push
-
Statement type:
File details
Details for the file glmhmmt-0.2.2-py3-none-any.whl.
File metadata
- Download URL: glmhmmt-0.2.2-py3-none-any.whl
- Upload date:
- Size: 201.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bc5d6dded5c7e5f49c4b72dbbdedaf290f25ef4bd27fdf7231fc2c376484de58
|
|
| MD5 |
a67f9cf0a5bf9e81a4ad3f35fa20df6f
|
|
| BLAKE2b-256 |
fdca8372cb904172c576d8f0c2ead3e6efdcc4b3b6252ecb7330464b72716561
|
Provenance
The following attestation bundles were made for glmhmmt-0.2.2-py3-none-any.whl:
Publisher:
publish.yml on BrainCircuitsBehaviorLab/glmhmmt
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
glmhmmt-0.2.2-py3-none-any.whl -
Subject digest:
bc5d6dded5c7e5f49c4b72dbbdedaf290f25ef4bd27fdf7231fc2c376484de58 - Sigstore transparency entry: 1362674562
- Sigstore integration time:
-
Permalink:
BrainCircuitsBehaviorLab/glmhmmt@f24081754e9500c08639a174b962f41209e77c21 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/BrainCircuitsBehaviorLab
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@f24081754e9500c08639a174b962f41209e77c21 -
Trigger Event:
push
-
Statement type: