Skip to content

huangderek02/cofi

 
 

Repository files navigation

CoFI (Common Framework for Inference)

PyPI version Conda Version Documentation Status codecov Slack

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.

This project and documentation are under initial development stage. Please feel free to contact us for feedback or issues!

Installation

From PyPI:

$ pip install cofi

Or alternatively, from conda-forge:

$ conda install -c conda-forge cofi

Check CoFI documentation - installation page for details on dependencies and setting up with virtual environments.

Basic Usage

CoFI API has flexible ways of defining an inversion problem. For instance:

from cofi import BaseProblem

inv_problem = 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:

inv_problem.suggest_tools()   # a tree will be printed

Run an inversion with these lines:

from cofi import InversionOptions, Inversion

inv_options = InversionOptions()
inv_options.set_solving_method("optimization")
inv_options.set_params(options={"maxiter":100})

inv = 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 and tutorial pages for more real-world or advanced use cases.

Contributing

Interested in contributing? Please check out our contributor's guide.

Licence

This project is distributed under a 2-clause BSD licence. A copy of this licence is provided with distributions of the software.

Releases

No releases published

Packages

No packages published

Languages

  • Python 100.0%