What is this new framework?#

The simpeg/inversion-design-ideas is a repo that holds a prototype for a redesign of SimPEG’s inversion framework. The main goal of the redesign is to create a new public inversion framework in SimPEG that:

  • Is modular, allowing users to plug custom or third-party minimizers, simulations, regularizations, etc.

  • Can be easily extended (with minimum extra work) to problems outside the traditional \(\phi(m) = \phi_d(m) + \beta \phi_m(m)\) inversion problem.

  • Is implemented in such way that is easier to read, study, and understand by beginners that are taking their first steps in inversion theory.

  • Is implemented in such way that can be easily extended to more complex and/or complicated use cases.

  • Defines a clear and minimal interface for each one of the classes.

  • Makes use of abstract classes to enforce implementation of required methods and properties.

  • Simplifies the inheritance tree by lowering the amount of inheritance levels.

Warning

This repository is still in experimental stages. Its purpose is to have a place where we can freely try new ideas without having to worry about breaking existing code, and supporting backward compatibility.