SeisFlows is a Python-based waveform inversion package used to tackle the problems of full waveform inversion, seismic migration, and adjoint tomography. SeisFlows constitutes the current main development branch of SeisFlows.

With a user base in both academia and industry, SeisFlows has been used for: production scale inversions (some with over a billion model parameters), research problems related to oil and gas exploration, regional-scale earthquake-based adjoint tomography problems, and general nonlinear optimization problems.


Major backwards-incompatible changes from the legacy codebase include:

  • > complete shift to Python3.7 source code, abandoning Python2 support

  • > richer source code emphasizing readability and standards

  • > a new command line tool for improved package control

  • > redesigned, dynamically-generated parameter file

  • > native integration with the waveform misfit quantification tool: Pyatoa

See the change log for point-by-point changes from the original codebase.


This docs page is currently under active development and may have missing information or unfinished pages. We are doing our best to complete it in a timely manner.


Successful applications of SeisFlows will typically require direct editing of source code. For this reason, SeisFlows should be installed directly via the package library using Pip. The -e flag ensures that SeisFlows is installed in development mode, allowing source code changes to be immediately acccessible to Python.

The devel branch houses the most up-to-date codebase. We recommend installing SeisFlows within a virtual environment (e.g., Conda) to preserve your root environment.

$ conda create -n seisflows python=3.7
$ conda activate seisflows
$ git clone --branch devel https://github.com/adjtomo/seisflows.git
$ cd seisflows
$ conda install --file requirements.txt
$ pip install -e .


In most production-scale workflows, SeisFlows must be run on a cluster, or high performance computing system. However, serially run example problems making use of 2D solvers like SPECFEM2D are available for small problems and workflow tutorials.

SeisFlows + Pyatoa

To include the waveform measurement capabilities of Pyatoa, you must install separately. See the Pyatoa documentation for the most up to date install instructions.

$ cd ..
$ git clone --branch devel https://github.com/bch0w/pyatoa.git
$ cd pyatoa
$ pip install .