# Bayesian Optimal Experiment Design
[![PyPI package](https://img.shields.io/badge/pip%20install-bayesdesign-brightgreen)](https://pypi.org/project/bayesdesign/) [![GitHub Release](https://img.shields.io/github/v/release/dkirkby/bayesdesign?color=green)](https://github.com/dkirkby/bayesdesign/releases) [![Actions Status](https://github.com/dkirkby/bayesdesign/workflows/Test/badge.svg)](https://github.com/dkirkby/bayesdesign/actions) [![License](https://img.shields.io/github/license/dkirkby/bayesdesign)](https://github.com/dkirkby/bayesdesign/blob/main/LICENSE)
Use this package to calculate expected information gain for Bayesian optimal experiment design. For an introduction to this topic, see this [interactive notebook](https://observablehq.com/@dkirkby/boed). To perform a similar calculation with this package, use:
```python
from bed.grid import Grid, GridStack
from bed.design import ExperimentDesigner
designs = Grid(t_obs=np.linspace(0, 5, 51))
features = Grid(y_obs=np.linspace(-1.25, 1.25, 100))
params = Grid(amplitude=1, frequency=np.linspace(0.2, 2.0, 181), offset=0)
sigma_y=0.1
with GridStack(features, designs, params):
y_mean = params.amplitude * np.sin(params.frequency * (designs.t_obs - params.offset))
y_diff = features.y_obs - y_mean
likelihood = np.exp(-0.5 * (y_diff / sigma_y) ** 2)
features.normalize(likelihood)
designer = ExperimentDesigner(params, features, designs, likelihood)
prior = np.ones(params.shape)
params.normalize(prior);
designer.calculateEIG(prior)
plt.plot(designs.t_obs, designer.EIG)
```
Browse the [examples folder](https://github.com/dkirkby/bayesdesign/) to learn more about using this package.
## Installation
Install the [latest released version](https://github.com/dkirkby/bayesdesign/releases/latest) from [pypi](https://pypi.org/project/bayesdesign/) using:
```
pip install bayesdesign
```
The only required dependency is numpy. The optional plot module also requires matplotlib.
The changes with each version are documented [here](CHANGELOG.md).
## Upgrade
To upgrade your pip-installed package to the [latest released version](https://github.com/dkirkby/bayesdesign/releases/latest) use:
```
pip install bayesdesign --upgrade
```
## Contributing
If you have feedback or would like to contribute to this package, please see our [contributor's guide](CONTRIBUTING.md).
Raw data
{
"_id": null,
"home_page": "https://github.com/dkirkby/bayesdesign",
"name": "bayesdesign",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.6",
"maintainer_email": null,
"keywords": "bayes, optimization",
"author": "David Kirkby",
"author_email": "dkirkby@uci.edu",
"download_url": "https://files.pythonhosted.org/packages/e1/1a/550240c13b91e118288347ae15c3e7de9d8f0d2f7e59bd07b9c5d7d86c4d/bayesdesign-0.4.0.tar.gz",
"platform": null,
"description": "# Bayesian Optimal Experiment Design\n\n[![PyPI package](https://img.shields.io/badge/pip%20install-bayesdesign-brightgreen)](https://pypi.org/project/bayesdesign/) [![GitHub Release](https://img.shields.io/github/v/release/dkirkby/bayesdesign?color=green)](https://github.com/dkirkby/bayesdesign/releases) [![Actions Status](https://github.com/dkirkby/bayesdesign/workflows/Test/badge.svg)](https://github.com/dkirkby/bayesdesign/actions) [![License](https://img.shields.io/github/license/dkirkby/bayesdesign)](https://github.com/dkirkby/bayesdesign/blob/main/LICENSE)\n\nUse this package to calculate expected information gain for Bayesian optimal experiment design. For an introduction to this topic, see this [interactive notebook](https://observablehq.com/@dkirkby/boed). To perform a similar calculation with this package, use:\n```python\nfrom bed.grid import Grid, GridStack\nfrom bed.design import ExperimentDesigner\n\ndesigns = Grid(t_obs=np.linspace(0, 5, 51))\nfeatures = Grid(y_obs=np.linspace(-1.25, 1.25, 100))\nparams = Grid(amplitude=1, frequency=np.linspace(0.2, 2.0, 181), offset=0)\n\nsigma_y=0.1\nwith GridStack(features, designs, params):\n y_mean = params.amplitude * np.sin(params.frequency * (designs.t_obs - params.offset))\n y_diff = features.y_obs - y_mean\n likelihood = np.exp(-0.5 * (y_diff / sigma_y) ** 2)\n features.normalize(likelihood)\n\ndesigner = ExperimentDesigner(params, features, designs, likelihood)\n\nprior = np.ones(params.shape)\nparams.normalize(prior);\n\ndesigner.calculateEIG(prior)\n\nplt.plot(designs.t_obs, designer.EIG)\n```\n\nBrowse the [examples folder](https://github.com/dkirkby/bayesdesign/) to learn more about using this package.\n\n## Installation\n\nInstall the [latest released version](https://github.com/dkirkby/bayesdesign/releases/latest) from [pypi](https://pypi.org/project/bayesdesign/) using:\n```\npip install bayesdesign\n```\nThe only required dependency is numpy. The optional plot module also requires matplotlib.\n\nThe changes with each version are documented [here](CHANGELOG.md).\n\n## Upgrade\n\nTo upgrade your pip-installed package to the [latest released version](https://github.com/dkirkby/bayesdesign/releases/latest) use:\n```\npip install bayesdesign --upgrade\n```\n\n## Contributing\n\nIf you have feedback or would like to contribute to this package, please see our [contributor's guide](CONTRIBUTING.md).\n",
"bugtrack_url": null,
"license": null,
"summary": "Package for Bayesian optimal experimental design",
"version": "0.4.0",
"project_urls": {
"Bug Reports": "https://github.com/dkirkby/bayesdesign/issues",
"Documentation": "https://github.com/dkirkby/bayesdesign",
"Homepage": "https://github.com/dkirkby/bayesdesign",
"Source Code": "https://github.com/dkirkby/bayesdesign"
},
"split_keywords": [
"bayes",
" optimization"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "86624e2cdf9d9c57cd51cbaf29be4f079b8bcb076295661bb40ee941099c7fee",
"md5": "1aaa97667c8ea76397c3a058eb41321d",
"sha256": "c5bd57faf8b1b13d6e26fb7202dbd105556133c33e2c0f4a4521eab1c0f5f761"
},
"downloads": -1,
"filename": "bayesdesign-0.4.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "1aaa97667c8ea76397c3a058eb41321d",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.6",
"size": 10715,
"upload_time": "2024-09-24T22:40:10",
"upload_time_iso_8601": "2024-09-24T22:40:10.566271Z",
"url": "https://files.pythonhosted.org/packages/86/62/4e2cdf9d9c57cd51cbaf29be4f079b8bcb076295661bb40ee941099c7fee/bayesdesign-0.4.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "e11a550240c13b91e118288347ae15c3e7de9d8f0d2f7e59bd07b9c5d7d86c4d",
"md5": "50edb2357854b9331cac90c838d9c235",
"sha256": "16b58664aa165f31c6c14289d407e24f864c874f2a772acbcbaf4d31abdb8b9d"
},
"downloads": -1,
"filename": "bayesdesign-0.4.0.tar.gz",
"has_sig": false,
"md5_digest": "50edb2357854b9331cac90c838d9c235",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.6",
"size": 13697,
"upload_time": "2024-09-24T22:40:12",
"upload_time_iso_8601": "2024-09-24T22:40:12.112165Z",
"url": "https://files.pythonhosted.org/packages/e1/1a/550240c13b91e118288347ae15c3e7de9d8f0d2f7e59bd07b9c5d7d86c4d/bayesdesign-0.4.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-09-24 22:40:12",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "dkirkby",
"github_project": "bayesdesign",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"requirements": [],
"tox": true,
"lcname": "bayesdesign"
}