Skip to main content

(Inverse) optimal control for linear-quadratic Gaussian systems

Project description

LQG: Inverse Optimal Control for Continuous Psychophysics

Experimenter-actor-loop image

Static Badge PyPI - Version Static Badge

This repository contains the official JAX implementation of the inverse optimal control method presented in the paper:

Straub, D., & Rothkopf, C. A. (2022). Putting perception into action with inverse optimal control for continuous psychophysics. eLife, 11, e76635.

Installation

The package can be installed via pip

python -m pip install lqg

Since publication of our eLife paper, I have substantially updated the package. If you want to use the package as described in the paper, please install an older version <0.2.0:

python -m pip install lqg==0.1.9

If you want the latest development version, I recommend cloning the repository and installing locally in a virtual environment:

git clone git@github.com:dominikstrb/lqg.git
cd lqg
python -m venv env
source env/bin/activate
python -m pip install -e .

Usage examples

The notebooks in the documentation illustrate how to use the lqg package to define optimal control models, simulate trajectories, and infer parameters from observed data.

  • Overview explains the model and its parameters in more detail, including the extension to subjective internal models (based on my tutorial at CCN 2022)
  • Data applies the method to data from a tracking experiment

Citation

If you use our method or code in your research, please cite our paper:

@article{straub2022putting,
  title={Putting perception into action with inverse optimal control for continuous psychophysics},
  author={Straub, Dominik and Rothkopf, Constantin A},
  journal={eLife},
  volume={11},
  pages={e76635},
  year={2022},
  publisher={eLife Sciences Publications Limited}
}

Extensions

Signal-dependent noise

This implementation supports the basic LQG framework. For the extension to signal-dependent noise (Todorov, 2005), please see our NeurIPS 2021 paper and its implementation.

Non-linear dynamics

We have recently extended this approach to non-linear dynamics and non-quadratic costs. Please check out our NeurIPS 2023 paper and its implementation.

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

lqg-0.2.12.tar.gz (14.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

lqg-0.2.12-py3-none-any.whl (20.3 kB view details)

Uploaded Python 3

File details

Details for the file lqg-0.2.12.tar.gz.

File metadata

  • Download URL: lqg-0.2.12.tar.gz
  • Upload date:
  • Size: 14.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.18 {"installer":{"name":"uv","version":"0.11.18","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for lqg-0.2.12.tar.gz
Algorithm Hash digest
SHA256 1f6fda8f0faa3f854b1cfc1143db257607b811b80580939553c5468e0bee7829
MD5 3e7f3e0673fe87a90370192d72072d78
BLAKE2b-256 7e64b14a86707722694f59a13ace4c9c9834cb5ae4e582a3bee4c3fce0baa068

See more details on using hashes here.

File details

Details for the file lqg-0.2.12-py3-none-any.whl.

File metadata

  • Download URL: lqg-0.2.12-py3-none-any.whl
  • Upload date:
  • Size: 20.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.18 {"installer":{"name":"uv","version":"0.11.18","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for lqg-0.2.12-py3-none-any.whl
Algorithm Hash digest
SHA256 c34d54ed867c3ccf960009459ea793fae86c3d10f77542720677b8374de144c5
MD5 d82786fb2c3c07375c1692e9032a5a5a
BLAKE2b-256 6418429365e0b41aa1f62cfe580a0ce8c90edc379d5bce112c7eab6f7266609c

See more details on using hashes here.

Supported by

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