Welcome to Espresso!#

You’ve just come up with a new optimisation algorithm, inversion strategy, or machine learning-based inference framework. Now you want to see how it performs on a real-world problem…

Espresso (Earth science problems for the evaluation of strategies, solvers and optimizers) aims to make this as easy as possible. It provides access to a range of exemplars via a standardized Python interface, including domain-expert–curated datasets and corresponding simulation codes. Swapping from one test problem to the next is just one line of code.

Here’s a simple illustration:

 1import numpy as np
 3# Select the test problem to be used -- change this line to any
 4# other test problem and everything else should still work!
 5from espresso import SimpleRegression as test_problem
 7# Create an instance of the test problem class
 8tp = test_problem()
10# The test problem provides...
11# ... an initial (null) model vector
12model = tp.starting_model
13# ... the ability to compute simulated data for an arbitrary
14# model vector, and the corresponding jacobian (i.e. derivatives
15# of data wrt model parameters)
16predictions, G = tp.forward(model, with_jacobian = True)
17# ... a data vector, which matches the output from `tp.forward()`
18residuals = tp.data - predictions
19# ... and much more!
21# Compute a Gauss-Newton model update
22model += np.linalg.solve(G.T.dot(G), G.T.dot(residuals))
24# Compare our result to the answer suggested by Espresso
25print("Our result:", model)
26print("Espresso:", tp.good_model)
28# And let's visualise both to see where the differences are:
29my_fig = tp.plot_model(model)
30espresso_fig = tp.plot_model(tp.good_model)
31data_fig = tp.plot_model(tp.data, tp.forward(model))

If this looks interesting, you can:

  • Read the User Guide for more information about what Espresso provides and how to use it;

  • Contribute your own example problems by following the instructions in the Contributor Guide;

  • Learn about the infrastructure behind Espresso by looking at the Developer Guide;

  • Explore the source code on GitHub;

  • Report a bug or suggest a feature using the Issue Tracker;

  • Join the conversation on Slack.

Espresso is an open-source community effort, currently supported and coordinated by InLab.