From 7f19a2e59b0e62ac608d05562753f33e84bfa751 Mon Sep 17 00:00:00 2001 From: Linus Seelinger Date: Sat, 24 Feb 2024 21:34:42 +0100 Subject: [PATCH] Update README.md --- README.md | 45 ++++++++++++++++++++------------------------- 1 file changed, 20 insertions(+), 25 deletions(-) diff --git a/README.md b/README.md index 2b4f2998..c67e5011 100644 --- a/README.md +++ b/README.md @@ -1,37 +1,32 @@ ![UM-bridge_map](https://raw.githubusercontent.com/UM-Bridge/benchmarks/main/UM-bridge_map.png "UQ-Model-UM") -**UM-Bridge** (the **U**Q and **M**odel **Bridge**) provides a unified interface for numerical models that is accessible from virtually any programming language or framework. It is primarily intended for coupling advanced models (e.g. simulations of complex physical processes) to advanced statistics or optimization methods for UQ. +**UM-Bridge** is a universal interface that makes any numerical model accessible from any programming language or higher-level software. UM-Bridge only assumes that a model returns an output vector for a given input, and possibly offers derivatives and configuration options. While its primary focus is linking advanced uncertainty quantification (UQ) tools to complex simulations, UM-Bridge is also suitable for other fields like optimization or machine learning on numerical models. -Many uncertainty quantification (UQ) and optimization methods treat a model as an abstract function and only interact with the model through operations such as *simple model evaluation*, *gradient evaluation* or *Jacobian action*. +UM-Bridge accelerates development from method research to applications and from prototype to supercomputer, enabling you to: -![UQ-Model-UM](https://raw.githubusercontent.com/UM-Bridge/benchmarks/main/UQ-Model-UM.png "UQ-Model-UM") - -The key idea of UM-Bridge is to provide the mathematical "interface" as an abstract interface in software as well. By using **HTTP** behind the scenes, a high degree of flexibility is achieved, allowing for: +* **seamlessly link** numerical models to UQ codes across languages and frameworks, +* **break down complexity** of advanced applications into manageable components, +* **share** your models with collaborators, +* **benchmark** your algorithms on a community-driven library of benchmark problems, and +* **scale** your applications from laptop to supercomputer with minimal effort. -* **Coupling** of codes written in arbitrary languages and frameworks -* **Accelerating** development of advanced software stacks -* **Containarization** of models → easier collaboration and → access to container-based compute resourcs in the cloud (e.g., GCP, AWS) -* **Portability** across operating systems -* **Fully reproducible** models and benchmarks. +![UQ-Model-UM](https://raw.githubusercontent.com/UM-Bridge/benchmarks/main/UQ-Model-UM.png "UQ-Model-UM") -To get started the following minimal Python code will give you a first impression: +Try out this Python example! It passes an input to a simple 1D test model running on a remote server and prints the model's output. ``` import umbridge -url = "http://testmodel.linusseelinger.de" -model = umbridge.HTTPModel(url, "forward") -print(model([[100]])) -``` -This passes an input to a simple 1D test model running on a remote server and prints the model's output. +model = umbridge.HTTPModel("http://testmodel.linusseelinger.de", "forward") +print(model([[100.0]])) +``` -See [quickstart guide](https://um-bridge-benchmarks.readthedocs.io/en/docs/quickstart.html) and [tutorial](https://um-bridge-benchmarks.readthedocs.io/en/docs/tutorial.html) for more information! +Interested? Continue with [quickstart](https://um-bridge-benchmarks.readthedocs.io/en/docs/quickstart.html) or [tutorial](https://um-bridge-benchmarks.readthedocs.io/en/docs/tutorial.html) for a guided tour. See [clients](https://um-bridge-benchmarks.readthedocs.io/en/docs/umbridge/clients.html) for how to interact with a model from any supported language or UQ package, and [models](https://um-bridge-benchmarks.readthedocs.io/en/docs/umbridge/models.html) for how to add UM-Bridge support to your own model code. -## Languages and frameworks +We'd like to hear about your application, so [join our slack channel](https://join.slack.com/t/um-bridge/shared_invite/zt-1da1ebkly-8s0YQdZUIYkJ1vws6edsAQ)! -These tables show what languages and frameworks UM-Bridge currently provides integrations for. -"Server" refers to the model side, while "client" is the UQ / statistics / optimization side. We are happy to actively support the development of new integrations. +## Supported languages and frameworks Language | Client (UQ) | Server (model) ---|---|--- @@ -54,10 +49,12 @@ tinyDA | ✓ | ✗ TT Toolbox | ✓ | ✗ UQPy | ✓ | ✗ +We are happy to actively support the development of new integrations! + ## Opinions
- Person Image + Person Image
> *I love Uncertainty Quantification. But I don't love fiddling around with complex numerical solver routines. UM-Bridge takes the pain away from doing UQ with complex models.* @@ -68,7 +65,7 @@ UQPy | ✓ | ✗
- Person Image + Person Image
> *OpenGoSim develops and supports Pflotran-OGS, an open-source reservoir @@ -84,7 +81,7 @@ geological uncertainty on CO2 storage.*
- Person Image + Person Image
> *The UQ software that I develop is in Matlab, which is great for prototyping @@ -114,5 +111,3 @@ This repository hosts stand-alone reference problems for benchmarking of UQ algo The documentation for the project and for the benchmark problems within is at: [Documentation](https://um-bridge-benchmarks.readthedocs.io/en/docs/). The project source code is [hosted on GitHub](https://github.com/UM-Bridge). - -Join the project [slack channel](https://join.slack.com/t/um-bridge/shared_invite/zt-1da1ebkly-8s0YQdZUIYkJ1vws6edsAQ).