Skip to main content

No project description provided

Project description

HSSM - Hierarchical Sequential Sampling Modeling

PyPI PyPI - Python Version GitHub pull requests GitHub Workflow Status (with event) Code style: black

Overview

HSSM is a Python toolbox that provides a seamless combination of state-of-the-art likelihood approximation methods with the wider ecosystem of probabilistic programming languages. It facilitates flexible hierarchical model building and inference via modern MCMC samplers. HSSM is user-friendly and provides the ability to rigorously estimate the impact of neural and other trial-by-trial covariates through parameter-wise mixed-effects models for a large variety of cognitive process models.

  • Allows approximate hierarchical Bayesian inference via various likelihood approximators.
  • Estimate impact of neural and other trial-by-trial covariates via native hierarchical mixed-regression support.
  • Extensible for users to add novel models with corresponding likelihoods.
  • Built on PyMC with support from the Python Bayesian ecosystem at large.
  • Incorporates Bambi's intuitive lmer-like regression parameter specification for within- and between-subject effects.
  • Native ArviZ support for plotting and other convenience functions to aid the Bayesian workflow.
  • Utilizes the ONNX format for translation of differentiable likelihood approximators across backends.

Official documentation link can be found here.

Installation

hssm is available through PyPI. You can install it with Pip via:

pip install hssm

You can also install the bleeding edge version of hssm directly from this repo:

pip install git+https://github.com/lnccbrown/HSSM.git

Optional Installation

Dependency for graph() Function

Note: In addition to the installation of the main hssm class, there is an optional dependency for the graph() function. This dependency requires graphviz, which can be installed conveniently using conda with the following command:

conda install -c conda-forge python-graphviz

Alternatively, you have the option to install the graphviz binaries manually and then install the Python bindings using pip with the following command:

pip install graphviz

Dependency for sampler="nuts_numpyro"

To utilize the nuts_numpyro sampler, please follow these steps:

  1. Install numpyro by executing the following command:
pip install numpyro
  1. Import the necessary modules and configure the required settings:
import numpyro
from jax.config import config

numpyro.set_host_device_count(jax.local_device_count())
config.update("jax_enable_x64", False)

For more information please refer to jax documentation.

Example

Here is a simple example of how to use HSSM:

import hssm

# Set float type to float32 to avoid a current bug in PyMC
# This will not be necessary in the future
hssm.set_floatX("float32")

# Load a package-supplied dataset
cav_data = hssm.load_data('cavanagh_theta')

# Define a basic hierarchical model with trial-level covariates
model = hssm.HSSM(
    model="ddm",
    data=cav_data,
    include=[
        {
            "name": "v",
            "prior": {
                "Intercept": {"name": "Uniform", "lower": -3.0, "upper": 3.0},
                "theta": {"name": "Uniform", "lower": -1.0, "upper": 1.0},
            },
            "formula": "v ~ (1|subj_idx) + theta",
            "link": "identity",
        },
    ],
)

# Sample from the posterior for this model
model.sample()

Example

HSSM is licensed under Copyright 2023, Brown University, Providence, RI

Support

For questions, bug reports, or other unexpected issues, please open an issue on the GitHub repository.

Contribution

If you want to contribute to this project, please familiarize yourself with our contribution guidelines.

Acknowledgements

We would like to extend our gratitude to the following individuals for their valuable contributions to the development of the HSSM package:

  • Bambi - A special thanks to the Bambi project for providing inspiration, guidance, and support throughout the development process. Tomás Capretto, a key contributor to Bambi, provided invaluable assistance in the development of the HSSM package.

Those contributions have greatly enhanced the functionality and quality of the HSSM.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

hssm-0.1.1.tar.gz (87.1 kB view details)

Uploaded Source

Built Distribution

hssm-0.1.1-py3-none-any.whl (91.2 kB view details)

Uploaded Python 3

File details

Details for the file hssm-0.1.1.tar.gz.

File metadata

  • Download URL: hssm-0.1.1.tar.gz
  • Upload date:
  • Size: 87.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.5.1 CPython/3.9.17 Linux/5.15.0-1041-azure

File hashes

Hashes for hssm-0.1.1.tar.gz
Algorithm Hash digest
SHA256 4af5709966cc01ef208274c07adf45bee59d8d952c2706d10299199ed949a98a
MD5 f58a36f8a6da289eacd580b8a3f9b2a2
BLAKE2b-256 6481ddb99ff8101dd87e91f2751ed089eed22767a901ccb3b2c31b290335fe8c

See more details on using hashes here.

File details

Details for the file hssm-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: hssm-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 91.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.5.1 CPython/3.9.17 Linux/5.15.0-1041-azure

File hashes

Hashes for hssm-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 a597a37932630a9169677b996097b40c94996b4bd8831c3e1304d0e080a7488e
MD5 b4a978b5787eedd96c21da6866c1f82c
BLAKE2b-256 f9acb044207c5c85ba48c7ff6a961059c1362692375ee2560fd8f6400684b5df

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page