# <img src="https://raw.githubusercontent.com/inlab-geo/cofi/main/docs/source/_static/latte_art_cropped.png" width="5%" style="vertical-align:bottom"/> CoFI (Common Framework for Inference)
[![PyPI version](https://img.shields.io/pypi/v/cofi?logo=pypi&style=flat-square&color=cae9ff&labelColor=f8f9fa)](https://pypi.org/project/cofi/)
[![Conda Version](https://img.shields.io/conda/vn/conda-forge/cofi.svg?logo=condaforge&style=flat-square&color=cce3de&labelColor=f8f9fa&logoColor=344e41)](https://anaconda.org/conda-forge/cofi)
[![Documentation Status](https://img.shields.io/readthedocs/cofi?logo=readthedocs&style=flat-square&color=fed9b7&labelColor=f8f9fa&logoColor=eaac8b)](https://cofi.readthedocs.io/en/latest/?badge=latest)
[![codecov](https://img.shields.io/codecov/c/github/inlab-geo/cofi?logo=pytest&style=flat-square&token=T8R9VKM4D7&color=ffcad4&labelColor=f8f9fa&logoColor=ff99c8)](https://codecov.io/gh/inlab-geo/cofi)
[![Slack](https://img.shields.io/badge/Slack-InLab_community-4A154B?logo=slack&style=flat-square&color=cdb4db&labelColor=f8f9fa&logoColor=9c89b8)](https://join.slack.com/t/inlab-community/shared_invite/zt-1ejny069z-v5ZyvP2tDjBR42OAu~TkHg)
<!-- [![Wheels](https://img.shields.io/pypi/wheel/cofi)](https://pypi.org/project/cofi/) -->
> Related repositories by [InLab](https://inlab.edu.au/community/):
> - [CoFI Examples](https://github.com/inlab-geo/cofi-examples)
> - [Espresso](https://github.com/inlab-geo/espresso)
## Introduction
CoFI (Common Framework for Inference) is an open source initiative for interfacing between generic inference algorithms and specific geoscience problems.
With a mission to bridge the gap between the domain expertise and the inference expertise, CoFI provides an interface across a wide range of inference algorithms from different sources, underpinned by a rich set of domain relevant [examples](https://cofi.readthedocs.io/en/latest/examples/generated/index.html).
Read [the documentation](https://cofi.readthedocs.io/en/latest/), and let us know your feedback or any issues!
## Installation
From PyPI:
```console
$ pip install cofi
```
Or alternatively, from conda-forge:
```console
$ conda install -c conda-forge cofi
```
Check CoFI documentation -
[installation page](https://cofi.readthedocs.io/en/latest/installation.html)
for details on dependencies and setting up with virtual environments.
## Basic Usage
```mermaid
graph TD;
base_problem_details(inv_problem = BaseProblem#40;#41;\ninv_problem.set_objective#40;DEFINE ME#41;\ninv_problem.set_jacobian#40;DEFINE ME#41;\ninv_problem.set_initial_model#40;DEFINE ME#41;):::cls_code_block
inversion_options_details(inv_options = InversionOptions#40;#41;\ninv_options.set_tool#40;#34;scipy.linalg.lstsq#34;#41;):::cls_code_block
inversion_details(inv=Inversion#40;inv_problem, inv_options#41;\nresult = inv.run#40;#41;):::cls_code_block
subgraph base_problem ["Base Problem"]
base_problem_details
end
subgraph inversion_options ["Inversion Options"]
inversion_options_details
end
subgraph inversion ["Inversion"]
inversion_details
end
base_problem --> inversion;
inversion_options --> inversion;
classDef cls_base_problem fill: oldlace, stroke-width: 0;
classDef cls_inversion_options fill: oldlace, stroke-width: 0;
classDef cls_inversion fill: lavender, stroke-width: 0;
classDef cls_code_block fill: lightgrey, stroke-width: 0, text-align: left;
class base_problem cls_base_problem;
class inversion_options cls_inversion_options;
class inversion cls_inversion;
```
CoFI API has flexible ways of defining an inversion problem. For instance:
```python
import cofi
inv_problem = cofi.BaseProblem()
inv_problem.set_objective(my_objective_func)
inv_problem.set_initial_model(my_starting_point)
```
Once a problem is defined, `cofi` can tell you what inference tools you can use based on what level of
information you've provided:
```python
inv_problem.suggest_tools() # a tree will be printed
```
Run an inversion with these lines:
```python
inv_options = cofi.InversionOptions()
inv_options.set_tool("torch.optim")
inv_options.set_params(options={"num_iterations": 50, "algorithm": "Adam"})
inv = cofi.Inversion(inv_problem, inv_options)
result = inv.run()
print(result.success)
print(result.model)
```
And now an inversion is completed! Check out our [example gallery](https://cofi.readthedocs.io/en/latest/examples/generated/index.html)
and [tutorial](https://cofi.readthedocs.io/en/latest/tutorials/generated/index.html) pages for more
real-world or advanced use cases.
## Contributing
Interested in contributing? Please check out our [contributor's guide](https://cofi.readthedocs.io/en/latest/contribute.html).
## Licence
This project is distributed under a 2-clause BSD licence. A copy of this licence is
provided with distributions of the software.
Raw data
{
"_id": null,
"home_page": null,
"name": "cofi",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.8",
"maintainer_email": null,
"keywords": "inversion, inference, python package, geoscience, geophysics",
"author": "InLab, CoFI development team",
"author_email": null,
"download_url": "https://files.pythonhosted.org/packages/0f/3c/51b8585cc62739241bc80ede40ecfb7402cd88180ce73f8c72e5240e0a78/cofi-0.2.9.tar.gz",
"platform": null,
"description": "\n\n# <img src=\"https://raw.githubusercontent.com/inlab-geo/cofi/main/docs/source/_static/latte_art_cropped.png\" width=\"5%\" style=\"vertical-align:bottom\"/> CoFI (Common Framework for Inference)\n\n[![PyPI version](https://img.shields.io/pypi/v/cofi?logo=pypi&style=flat-square&color=cae9ff&labelColor=f8f9fa)](https://pypi.org/project/cofi/)\n[![Conda Version](https://img.shields.io/conda/vn/conda-forge/cofi.svg?logo=condaforge&style=flat-square&color=cce3de&labelColor=f8f9fa&logoColor=344e41)](https://anaconda.org/conda-forge/cofi)\n[![Documentation Status](https://img.shields.io/readthedocs/cofi?logo=readthedocs&style=flat-square&color=fed9b7&labelColor=f8f9fa&logoColor=eaac8b)](https://cofi.readthedocs.io/en/latest/?badge=latest)\n[![codecov](https://img.shields.io/codecov/c/github/inlab-geo/cofi?logo=pytest&style=flat-square&token=T8R9VKM4D7&color=ffcad4&labelColor=f8f9fa&logoColor=ff99c8)](https://codecov.io/gh/inlab-geo/cofi)\n[![Slack](https://img.shields.io/badge/Slack-InLab_community-4A154B?logo=slack&style=flat-square&color=cdb4db&labelColor=f8f9fa&logoColor=9c89b8)](https://join.slack.com/t/inlab-community/shared_invite/zt-1ejny069z-v5ZyvP2tDjBR42OAu~TkHg)\n<!-- [![Wheels](https://img.shields.io/pypi/wheel/cofi)](https://pypi.org/project/cofi/) -->\n\n> Related repositories by [InLab](https://inlab.edu.au/community/):\n> - [CoFI Examples](https://github.com/inlab-geo/cofi-examples)\n> - [Espresso](https://github.com/inlab-geo/espresso)\n\n## Introduction\n\nCoFI (Common Framework for Inference) is an open source initiative for interfacing between generic inference algorithms and specific geoscience problems.\n\nWith a mission to bridge the gap between the domain expertise and the inference expertise, CoFI provides an interface across a wide range of inference algorithms from different sources, underpinned by a rich set of domain relevant [examples](https://cofi.readthedocs.io/en/latest/examples/generated/index.html).\n\nRead [the documentation](https://cofi.readthedocs.io/en/latest/), and let us know your feedback or any issues!\n\n## Installation\n\nFrom PyPI:\n\n```console\n$ pip install cofi\n```\n\nOr alternatively, from conda-forge:\n\n```console\n$ conda install -c conda-forge cofi\n```\n\nCheck CoFI documentation - \n[installation page](https://cofi.readthedocs.io/en/latest/installation.html) \nfor details on dependencies and setting up with virtual environments.\n\n## Basic Usage\n\n```mermaid\ngraph TD;\n base_problem_details(inv_problem = BaseProblem#40;#41;\\ninv_problem.set_objective#40;DEFINE ME#41;\\ninv_problem.set_jacobian#40;DEFINE ME#41;\\ninv_problem.set_initial_model#40;DEFINE ME#41;):::cls_code_block\n inversion_options_details(inv_options = InversionOptions#40;#41;\\ninv_options.set_tool#40;#34;scipy.linalg.lstsq#34;#41;):::cls_code_block\n inversion_details(inv=Inversion#40;inv_problem, inv_options#41;\\nresult = inv.run#40;#41;):::cls_code_block\n\n subgraph base_problem [\"Base Problem\"]\n base_problem_details\n end\n\n subgraph inversion_options [\"Inversion Options\"]\n inversion_options_details\n end\n\n subgraph inversion [\"Inversion\"]\n inversion_details\n end\n\n base_problem --> inversion;\n inversion_options --> inversion;\n\n classDef cls_base_problem fill: oldlace, stroke-width: 0;\n classDef cls_inversion_options fill: oldlace, stroke-width: 0;\n classDef cls_inversion fill: lavender, stroke-width: 0;\n classDef cls_code_block fill: lightgrey, stroke-width: 0, text-align: left;\n\n class base_problem cls_base_problem;\n class inversion_options cls_inversion_options;\n class inversion cls_inversion;\n```\n\nCoFI API has flexible ways of defining an inversion problem. For instance:\n\n```python\nimport cofi\n\ninv_problem = cofi.BaseProblem()\ninv_problem.set_objective(my_objective_func)\ninv_problem.set_initial_model(my_starting_point)\n```\n\nOnce a problem is defined, `cofi` can tell you what inference tools you can use based on what level of\ninformation you've provided:\n\n```python\ninv_problem.suggest_tools() # a tree will be printed\n```\n\nRun an inversion with these lines:\n\n```python\ninv_options = cofi.InversionOptions()\ninv_options.set_tool(\"torch.optim\")\ninv_options.set_params(options={\"num_iterations\": 50, \"algorithm\": \"Adam\"})\n\ninv = cofi.Inversion(inv_problem, inv_options)\nresult = inv.run()\nprint(result.success)\nprint(result.model)\n```\n\nAnd now an inversion is completed! Check out our [example gallery](https://cofi.readthedocs.io/en/latest/examples/generated/index.html)\nand [tutorial](https://cofi.readthedocs.io/en/latest/tutorials/generated/index.html) pages for more \nreal-world or advanced use cases.\n\n## Contributing\n\nInterested in contributing? Please check out our [contributor's guide](https://cofi.readthedocs.io/en/latest/contribute.html).\n\n\n## Licence\n\nThis project is distributed under a 2-clause BSD licence. A copy of this licence is \nprovided with distributions of the software.\n",
"bugtrack_url": null,
"license": null,
"summary": "Common Framework for Inference",
"version": "0.2.9",
"project_urls": null,
"split_keywords": [
"inversion",
" inference",
" python package",
" geoscience",
" geophysics"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "2ccca2ccc4f0e4f80b43707ef7c92649c00d1980e825370bd4f3efa61b432f3a",
"md5": "8beb40ed1a3f8ab8e090ac066b7b7956",
"sha256": "f73afdba339a3106dea8f3b1c36741e01cac603943663655ea9178a1a02e6488"
},
"downloads": -1,
"filename": "cofi-0.2.9-py3-none-any.whl",
"has_sig": false,
"md5_digest": "8beb40ed1a3f8ab8e090ac066b7b7956",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.8",
"size": 62450,
"upload_time": "2024-06-24T00:16:59",
"upload_time_iso_8601": "2024-06-24T00:16:59.552300Z",
"url": "https://files.pythonhosted.org/packages/2c/cc/a2ccc4f0e4f80b43707ef7c92649c00d1980e825370bd4f3efa61b432f3a/cofi-0.2.9-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "0f3c51b8585cc62739241bc80ede40ecfb7402cd88180ce73f8c72e5240e0a78",
"md5": "b2ab17a13f145d14da2f3c0e1d16c205",
"sha256": "7419b62b13dffc2d15dcb68203d5389e23f7e663e3865781effb0408033f8c5f"
},
"downloads": -1,
"filename": "cofi-0.2.9.tar.gz",
"has_sig": false,
"md5_digest": "b2ab17a13f145d14da2f3c0e1d16c205",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8",
"size": 57954,
"upload_time": "2024-06-24T00:17:01",
"upload_time_iso_8601": "2024-06-24T00:17:01.959726Z",
"url": "https://files.pythonhosted.org/packages/0f/3c/51b8585cc62739241bc80ede40ecfb7402cd88180ce73f8c72e5240e0a78/cofi-0.2.9.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-06-24 00:17:01",
"github": false,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"lcname": "cofi"
}