flowMC

flowMC: Normalizing flow enhanced sampling package for probabilistic inference in JAX - Published in JOSS (2023)

https://github.com/kazewong/flowmc

Science Score: 95.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 4 DOI reference(s) in README and JOSS metadata
  • Academic publication links
    Links to: arxiv.org
  • Committers with academic emails
    3 of 9 committers (33.3%) from academic institutions
  • Institutional organization owner
  • JOSS paper metadata
    Published in Journal of Open Source Software

Keywords

jax mcmc normalizing-flows stat
Last synced: 6 months ago · JSON representation

Repository

Normalizing-flow enhanced sampling package for probabilistic inference in Jax

Basic Info
Statistics
  • Stars: 247
  • Watchers: 5
  • Forks: 30
  • Open Issues: 22
  • Releases: 17
Topics
jax mcmc normalizing-flows stat
Created about 4 years ago · Last pushed 6 months ago
Metadata Files
Readme Contributing License Code of conduct

README.md

flowMC

Normalizing-flow enhanced sampling package for probabilistic inference

doc doc Coverage Status

[!WARNING] Note that flowMC has not reached v1.0.0, meaning the API could subject to changes. In general, the higher level the API, the less likely it is going to change. However, intermediate level API such as the resource strategy interface could subject to major revision for performance concerns.

flowMC_logo

flowMC is a Jax-based python package for normalizing-flow enhanced Markov chain Monte Carlo (MCMC) sampling. The code is open source under MIT license, and it is under active development.

  • Just-in-time compilation is supported.
  • Native support for GPU acceleration.
  • Suit for problems with multi-modality.
  • Minimal tuning.

Installation

The simplest way to install the package is to do it through pip

pip install flowMC

This will install the latest stable release and its dependencies. flowMC is based on Jax and Equinox. By default, installing flowMC will automatically install Jax and Equinox available on PyPI. By default this install the CPU version of Jax. If you have a GPU and want to use it, you can install the GPU version of Jax by running:

pip install flowMC[cuda]

If you want to install the latest version of flowMC, you can clone this repo and install it locally:

git clone https://github.com/kazewong/flowMC.git cd flowMC pip install -e .

There are a couple more extras that you can install with flowMC, including: - flowMC[docs]: Install the documentation dependencies. - flowMC[codeqa]: Install the code quality dependencies. - flowMC[visualize]: Install the visualization dependencies.

On top of pip installation, we highly encourage you to use uv to manage your python environment. Once you clone the repo, you can run uv sync to create a virtual environment with all the dependencies installed.

Attribution

If you used flowMC in your research, we would really appericiate it if you could at least cite the following papers:

``` @article{Wong:2022xvh, author = "Wong, Kaze W. k. and Gabri\'e, Marylou and Foreman-Mackey, Daniel", title = "{flowMC: Normalizing flow enhanced sampling package for probabilistic inference in JAX}", eprint = "2211.06397", archivePrefix = "arXiv", primaryClass = "astro-ph.IM", doi = "10.21105/joss.05021", journal = "J. Open Source Softw.", volume = "8", number = "83", pages = "5021", year = "2023" }

@article{Gabrie:2021tlu, author = "Gabri\'e, Marylou and Rotskoff, Grant M. and Vanden-Eijnden, Eric", title = "{Adaptive Monte Carlo augmented with normalizing flows}", eprint = "2105.12603", archivePrefix = "arXiv", primaryClass = "physics.data-an", doi = "10.1073/pnas.2109420119", journal = "Proc. Nat. Acad. Sci.", volume = "119", number = "10", pages = "e2109420119", year = "2022" } ```

This will help flowMC getting more recognition, and the main benefit for you is this means the flowMC community will grow and it will be continuously improved. If you believe in the magic of open-source software, please support us by attributing our software in your work.

flowMC is a Jax implementation of methods described in:

Efficient Bayesian Sampling Using Normalizing Flows to Assist Markov Chain Monte Carlo Methods Gabrié M., Rotskoff G. M., Vanden-Eijnden E. - ICML INNF+ workshop 2021 - pdf

Adaptive Monte Carlo augmented with normalizing flows. Gabrié M., Rotskoff G. M., Vanden-Eijnden E. - PNAS 2022 - doi, arxiv

Contributors

Hajime Kawahara
Hajime Kawahara

🐛
Daniel Dodd
Daniel Dodd

📖 👀 ⚠️ 🐛
Matt Graham
Matt Graham

🐛 ⚠️ 👀 📖
Kaze Wong
Kaze Wong

🐛 📝 💻 🖋 📖 💡 🚇 🚧 🔬 👀 ⚠️
Marylou Gabrié
Marylou Gabrié

🐛 💻 🖋 📖 💡 🚧 🔬 ⚠️
Meesum Qazalbash
Meesum Qazalbash

💻 🚧
Thomas Ng
Thomas Ng

💻 🚧
Thomas Edwards
Thomas Edwards

🐛 💻

Owner

  • Name: Kaze Wong
  • Login: kazewong
  • Kind: user

JOSS Publication

flowMC: Normalizing flow enhanced sampling package for probabilistic inference in JAX
Published
March 09, 2023
Volume 8, Issue 83, Page 5021
Authors
Kaze W. k. Wong ORCID
Center for Computational Astrophysics, Flatiron Institute, New York, NY 10010, US
Marylou Gabrié ORCID
École Polytechnique, Palaiseau 91120, France, Center for Computational Mathematics, Flatiron Institute, New York, NY 10010, US
Daniel Foreman-Mackey ORCID
Center for Computational Astrophysics, Flatiron Institute, New York, NY 10010, US
Editor
Rachel Kurchin ORCID
Tags
Bayesian Inference Machine Learning JAX

GitHub Events

Total
  • Create event: 30
  • Release event: 8
  • Issues event: 33
  • Watch event: 52
  • Delete event: 22
  • Issue comment event: 59
  • Push event: 242
  • Pull request review comment event: 15
  • Pull request review event: 32
  • Pull request event: 43
  • Fork event: 5
Last Year
  • Create event: 30
  • Release event: 8
  • Issues event: 33
  • Watch event: 52
  • Delete event: 22
  • Issue comment event: 59
  • Push event: 242
  • Pull request review comment event: 15
  • Pull request review event: 32
  • Pull request event: 43
  • Fork event: 5

Committers

Last synced: 7 months ago

All Time
  • Total Commits: 1,056
  • Total Committers: 9
  • Avg Commits per committer: 117.333
  • Development Distribution Score (DDS): 0.098
Past Year
  • Commits: 290
  • Committers: 3
  • Avg Commits per committer: 96.667
  • Development Distribution Score (DDS): 0.069
Top Committers
Name Email Commits
Kaze Wong k****s@g****m 952
marylou m****e@g****m 65
Thomas Ng t****g@l****k 16
ThibeauWouters t****s@l****u 7
allcontributors[bot] 4****] 6
Thibeau Wouters t****s@w****l 6
Qazalbash m****h@g****m 2
tedwards2412 t****2@g****m 1
Thibeau Wouters t****s@l****u 1

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 112
  • Total pull requests: 130
  • Average time to close issues: 3 months
  • Average time to close pull requests: 11 days
  • Total issue authors: 18
  • Total pull request authors: 12
  • Average comments per issue: 1.09
  • Average comments per pull request: 0.62
  • Merged pull requests: 118
  • Bot issues: 0
  • Bot pull requests: 7
Past Year
  • Issues: 23
  • Pull requests: 55
  • Average time to close issues: 15 days
  • Average time to close pull requests: 4 days
  • Issue authors: 7
  • Pull request authors: 5
  • Average comments per issue: 0.91
  • Average comments per pull request: 1.09
  • Merged pull requests: 47
  • Bot issues: 0
  • Bot pull requests: 7
Top Authors
Issue Authors
  • kazewong (65)
  • Qazalbash (11)
  • matt-graham (8)
  • marylou-gabrie (8)
  • daniel-dodd (4)
  • thomasckng (2)
  • zeeshan5885 (2)
  • ColCarroll (2)
  • dfm (1)
  • HarrisonWilde (1)
  • ahnitz (1)
  • Felipe-4 (1)
  • ThibeauWouters (1)
  • HajimeKawahara (1)
  • bjricketts (1)
Pull Request Authors
  • kazewong (110)
  • marylou-gabrie (11)
  • Qazalbash (9)
  • allcontributors[bot] (6)
  • ThibeauWouters (4)
  • thomasckng (4)
  • tedwards2412 (2)
  • matt-graham (1)
  • google-labs-jules[bot] (1)
  • jasonmcewen (1)
  • alicjapolanska (1)
  • daniel-dodd (1)
Top Labels
Issue Labels
enhancement (22) Joss (7) documentation (5) good first issue (2) bug (2) question (1)
Pull Request Labels
enhancement (2) bug (2) documentation (1)

Packages

  • Total packages: 1
  • Total downloads:
    • pypi 2,970 last-month
  • Total dependent packages: 1
  • Total dependent repositories: 0
  • Total versions: 29
  • Total maintainers: 1
pypi.org: flowmc

Normalizing flow exhanced sampler in jax

  • Documentation: https://github.com/kazewong/flowMC
  • License: MIT License Copyright (c) 2022 Kaze Wong & contributor Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  • Latest release: 0.4.5
    published 8 months ago
  • Versions: 29
  • Dependent Packages: 1
  • Dependent Repositories: 0
  • Downloads: 2,970 Last month
Rankings
Dependent packages count: 6.6%
Stargazers count: 7.5%
Forks count: 12.8%
Average: 14.5%
Downloads: 14.8%
Dependent repos count: 30.6%
Maintainers (1)
Last synced: 6 months ago

Dependencies

.github/workflows/workflowsjoss.yml actions
  • actions/checkout v2 composite
  • actions/upload-artifact v1 composite
  • openjournals/openjournals-draft-action master composite
docs/requirements.txt pypi
  • distrax *
  • flax *
  • jax *
  • jaxlib *
  • myst-nb *
  • sphinx-book-theme *
  • tqdm *
.github/workflows/python-package.yml actions
  • actions/checkout v3 composite
  • actions/setup-python v3 composite
.github/workflows/python-publish.yml actions
  • actions/checkout v3 composite
  • actions/setup-python v3 composite
  • pypa/gh-action-pypi-publish v1.8.4 composite
pyproject.toml pypi