{"id":13477187,"url":"https://github.com/thiery-lab/manifold_lifting","last_synced_at":"2025-03-27T04:32:47.945Z","repository":{"id":50461726,"uuid":"246543695","full_name":"thiery-lab/manifold_lifting","owner":"thiery-lab","description":"Accompanying code for 'Manifold lifting: scaling MCMC to the vanishing noise regime'","archived":false,"fork":false,"pushed_at":"2023-08-16T19:57:11.000Z","size":6475,"stargazers_count":7,"open_issues_count":1,"forks_count":0,"subscribers_count":5,"default_branch":"main","last_synced_at":"2024-08-01T16:47:44.017Z","etag":null,"topics":["bayesian-inference","hmc","inverse-problems","mcmc"],"latest_commit_sha":null,"homepage":"https://arxiv.org/abs/2003.03950","language":"Jupyter Notebook","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/thiery-lab.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":"CITATION.cff","codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2020-03-11T10:38:22.000Z","updated_at":"2024-04-02T13:02:12.000Z","dependencies_parsed_at":"2024-01-13T19:18:01.222Z","dependency_job_id":"24d54b20-20a8-4ddc-b63e-24a50abd75e8","html_url":"https://github.com/thiery-lab/manifold_lifting","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thiery-lab%2Fmanifold_lifting","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thiery-lab%2Fmanifold_lifting/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thiery-lab%2Fmanifold_lifting/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thiery-lab%2Fmanifold_lifting/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/thiery-lab","download_url":"https://codeload.github.com/thiery-lab/manifold_lifting/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":222194777,"owners_count":16946984,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bayesian-inference","hmc","inverse-problems","mcmc"],"created_at":"2024-07-31T16:01:39.223Z","updated_at":"2025-03-27T04:32:47.939Z","avatar_url":"https://github.com/thiery-lab.png","language":"Jupyter Notebook","funding_links":[],"categories":["Jupyter Notebook"],"sub_categories":[],"readme":"# Manifold lifting: scaling Markov chain Monte Carlo to the vanishing noise regime\n\n[![DOI](https://zenodo.org/badge/246543695.svg)](https://zenodo.org/badge/latestdoi/246543695)\n[![arXiv:1807.02356](https://img.shields.io/badge/arXiv-2003.03950-B31B1B.svg)](https://arxiv.org/abs/2003.03950)\n[![DOI:10.1093/jrsssb/qkad023](https://img.shields.io/badge/Journal_article-10.1093/jrsssb/qkad023-d4a519.svg)](https://doi.org/10.1093/jrsssb/qkad023)\n\nCode accompanying the paper *Manifold lifting: scaling Markov chain Monte Carlo to the vanishing noise regime*.\n\n**Abstract**: Standard Markov chain Monte Carlo methods struggle to explore distributions that concentrate in the neighbourhood of low-dimensional submanifolds. This pathology naturally occurs in Bayesian inference settings when there is a high signal-to-noise ratio in the observational data but the model is inherently over-parametrised or non-identifiable. In this paper, we propose a strategy that transforms the original sampling problem into the task of exploring a distribution supported on a manifold embedded in a higher-dimensional space; in contrast to the original posterior this lifted distribution remains diffuse in the limit of vanishing observation noise. We employ a constrained Hamiltonian Monte Carlo method, which exploits the geometry of this lifted distribution, to perform efficient approximate inference. We demonstrate in numerical experiments that, contrarily to competing approaches, the sampling efficiency of our proposed methodology does not degenerate as the target distribution to be explored concentrates near low-dimensional submanifolds.\n\n## Installation\n\nThe `mlift` package requires Python 3.9 or above. To install the `mlift` package and its dependencies into an existing Python environment run\n\n```bash\npip install git+https://github.com/thiery-lab/manifold_lifting.git\n```\n\nThe `mlift.pde` module and associated example model in `mlift.example_models.poisson` additionally require [FEniCS (v2019.10)](https://fenicsproject.org/download/archive/) and [`scikit-sparse`](https://scikit-sparse.readthedocs.io/en/latest/overview.html#installation) to be installed. Note that the [`fenics` metapackage on PyPI](https://pypi.org/project/fenics/) does not install the required binary dependencies and so FEniCS should instead be separately installed by [following one of the methods listed in the project's installation instructions](https://fenicsproject.org/download/archive/).\n\nAlternatively a `conda` environment `man-lift` containing the required dependencies to run all of the experiments (including the `mlift` package) can be created from the provided [`environment.yml`](environment.yml) file by running\n\n```bash\nconda env create -f environment.yml\n```\n\n## Experiment scripts\n\nA number of scripts for reproducing the numerical experiments used to produce the figures in the paper are provided in the `scripts` directory. To run these scripts the `mlift` package and its dependencies need to be installed in a local Python 3.9+ environment [as described above](#installation). The default settings of the scripts assume they are run from the _top-level_ directory of a clone of the repository. Pass a `--help` argument to any of the scripts to see a description of what the script does and the available environment variables for configuring the behaviour of the script.\n\n## Example notebook\n\nFor a complete example of applying the method described in the paper to perform inference in a two-dimensional example and accompanying explanatory notes see the Jupyter notebook linked below. The manifold MCMC methods in the Python package [*Mici*](https://github.com/matt-graham/mici) are used for inference.\n\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003cth colspan=\"2\"\u003e\u003cimg src='https://raw.githubusercontent.com/jupyter/design/main/logos/Favicon/favicon.svg?sanitize=true' width=\"15\" style=\"vertical-align:text-bottom; margin-right: 5px;\"/\u003e \u003ca href=\"notebooks/Two-dimensional_example.ipynb\"\u003e Two-dimensional_example.ipynb\u003c/a\u003e\u003c/th\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003eOpen non-interactive version with nbviewer\u003c/td\u003e\n    \u003ctd\u003e\n      \u003ca href=\"https://nbviewer.jupyter.org/github/thiery-lab/manifold_lifting/blob/main/notebooks/Two-dimensional_example.ipynb\"\u003e\n        \u003cimg src=\"https://raw.githubusercontent.com/jupyter/design/main/logos/Badges/nbviewer_badge.svg?sanitize=true\" width=\"109\" alt=\"Render with nbviewer\"  style=\"vertical-align:text-bottom\" /\u003e\n      \u003c/a\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003eOpen interactive version with Binder\u003c/td\u003e\n    \u003ctd\u003e\n      \u003ca href=\"https://mybinder.org/v2/gh/thiery-lab/manifold_lifting/main?filepath=notebooks%2FTwo-dimensional_example.ipynb\"\u003e\n        \u003cimg src=\"https://mybinder.org/badge_logo.svg\" alt=\"Launch with Binder\"  style=\"vertical-align:text-bottom\"/\u003e\n      \u003c/a\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003eOpen interactive version with Google Colab\u003c/td\u003e\n    \u003ctd\u003e\n      \u003ca href=\"https://colab.research.google.com/github/thiery-lab/manifold_lifting/blob/main/notebooks/Two-dimensional_example.ipynb\"\u003e\n        \u003cimg alt=\"Open in Colab\" src=\"https://colab.research.google.com/assets/colab-badge.svg\" style=\"vertical-align:text-bottom\"\u003e\n       \u003c/a\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n## Citation\n\nTo cite the paper the following `bibtex` entry can be used\n\n```bibtex\n@article{au2023manifold,\n    author = {Au, Khai Xiang and Graham, Matthew M and Thiery, Alexandre H},\n    title = \"{Manifold lifting: scaling Markov chain Monte Carlo to the vanishing noise regime}\",\n    journal = {Journal of the Royal Statistical Society Series B: Statistical Methodology},\n    volume = {85},\n    number = {3},\n    pages = {757-782},\n    year = {2023},\n    month = {04},\n    issn = {1369-7412},\n    doi = {10.1093/jrsssb/qkad023},\n    url = {https://doi.org/10.1093/jrsssb/qkad023},\n    eprint = {https://academic.oup.com/jrsssb/article-pdf/85/3/757/50859790/qkad023.pdf},\n}\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthiery-lab%2Fmanifold_lifting","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fthiery-lab%2Fmanifold_lifting","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthiery-lab%2Fmanifold_lifting/lists"}