PySIT: Seismic Imaging Toolbox for Pythonahay.org/wikilocal/docs/vienna2016/B06.pdf · PySIT is...

16
PySIT: Seismic Imaging Toolbox for Python Russell J. Hewett and Laurent Demanet EAGE 2016, Vienna Russell J. Hewett (TOTAL E&P USA and MIT) PySIT 1 / 14

Transcript of PySIT: Seismic Imaging Toolbox for Pythonahay.org/wikilocal/docs/vienna2016/B06.pdf · PySIT is...

Page 1: PySIT: Seismic Imaging Toolbox for Pythonahay.org/wikilocal/docs/vienna2016/B06.pdf · PySIT is also a Pedagogical Tool Exercise: 1D full waveform inversion I Introduces FWI to interns,

PySIT: Seismic Imaging Toolbox for Python

Russell J. Hewett and Laurent Demanet

EAGE 2016, Vienna

Russell J. Hewett (TOTAL E&P USA and MIT) PySIT 1 / 14

Page 2: PySIT: Seismic Imaging Toolbox for Pythonahay.org/wikilocal/docs/vienna2016/B06.pdf · PySIT is also a Pedagogical Tool Exercise: 1D full waveform inversion I Introduces FWI to interns,

Who we are

I Earth Resources Laboratory (ERL): https://erlweb.mit.edu

I Imaging and Computing group: http://math.mit.edu/icg

I Main developer: Russell Hewett (Total)

Russell J. Hewett (TOTAL E&P USA and MIT) PySIT 2 / 14

Page 3: PySIT: Seismic Imaging Toolbox for Pythonahay.org/wikilocal/docs/vienna2016/B06.pdf · PySIT is also a Pedagogical Tool Exercise: 1D full waveform inversion I Introduces FWI to interns,

PySIT: Origin & Motivations

Needed flexible platform for research on. . .

I Wave Equation Solvers

I Objective Functions

I Optimization

. . . in the context of FWI

Why Python?

I Cross-platform, portability

I Community

I Not MATLAB ($$)

I Open parallel libraries

I General fan of the language

Russell J. Hewett (TOTAL E&P USA and MIT) PySIT 3 / 14

Page 4: PySIT: Seismic Imaging Toolbox for Pythonahay.org/wikilocal/docs/vienna2016/B06.pdf · PySIT is also a Pedagogical Tool Exercise: 1D full waveform inversion I Introduces FWI to interns,

PySIT: Python Seismic Imaging Toolbox

Pedagogical and research platform for seismic inversion

Rapid prototyping new imaging algorithms

I Easy to learn

I Maximize student and intern productivity

I Reproducible research

Russell J. Hewett (TOTAL E&P USA and MIT) PySIT 4 / 14

Page 5: PySIT: Seismic Imaging Toolbox for Pythonahay.org/wikilocal/docs/vienna2016/B06.pdf · PySIT is also a Pedagogical Tool Exercise: 1D full waveform inversion I Introduces FWI to interns,

PySIT: Python Seismic Imaging Toolbox

http://www.pysit.org

Open source under BSD license

I Permissive license

I No legal concerns for industrial use

Open development model

I Version control with Git

I Source code hosted on GitHub

I Explicitly provide mechanisms for handling proprietary research

Russell J. Hewett (TOTAL E&P USA and MIT) PySIT 5 / 14

Page 6: PySIT: Seismic Imaging Toolbox for Pythonahay.org/wikilocal/docs/vienna2016/B06.pdf · PySIT is also a Pedagogical Tool Exercise: 1D full waveform inversion I Introduces FWI to interns,

Community Dependencies

NumPy [www.numpy.org]I Core N-D array package

SciPy [www.scipy.org]I Fundamental library for scientific computing

Matplotlib [www.matplotlib.org]I Plotting and visualization

ObsPy [www.obspy.org]I Python framework for seismologyI Data reading, writing, and processing

mpi4py [mpi4py.scipy.org]I MPI wrapper for Python

Russell J. Hewett (TOTAL E&P USA and MIT) PySIT 6 / 14

Page 7: PySIT: Seismic Imaging Toolbox for Pythonahay.org/wikilocal/docs/vienna2016/B06.pdf · PySIT is also a Pedagogical Tool Exercise: 1D full waveform inversion I Introduces FWI to interns,

PySIT is a research tool

Local solvers for salt boundary inversion in FWI

I Willemsen et al. (GJI ‘16)

Microseismic Event Estimation via FWI

I Minkoff et al. (SEG ‘15)

Hessian approximationsI Stochastic approximation of FWI Hessian (Willemsen et al.)

I Matrix probing of FWI Inverse Hessian (Hewett et al.)

Uncertainty quantificationI Non-gaussianity of the FWI posterior (Li et al.)

Russell J. Hewett (TOTAL E&P USA and MIT) PySIT 7 / 14

Page 8: PySIT: Seismic Imaging Toolbox for Pythonahay.org/wikilocal/docs/vienna2016/B06.pdf · PySIT is also a Pedagogical Tool Exercise: 1D full waveform inversion I Introduces FWI to interns,

PySIT is also a Pedagogical Tool

Exercise: 1D full waveform inversion

I Introduces FWI to interns, graduate students, and postdocs

I Achieves a functional FWI in a few hours

I Motivates and teaches both design and structure of PySIT

I Is part of PySIT’s documentation

Case study: MSRI – Mathematics of Seismic Imaging

I Two weeks and ∼ 40 math graduate students

I No imaging experience, moderate programming experience

I Start with 1D exercise . . .

I . . . end with blind 2D inversion problem using PySIT

Russell J. Hewett (TOTAL E&P USA and MIT) PySIT 8 / 14

Page 9: PySIT: Seismic Imaging Toolbox for Pythonahay.org/wikilocal/docs/vienna2016/B06.pdf · PySIT is also a Pedagogical Tool Exercise: 1D full waveform inversion I Introduces FWI to interns,

PySIT is also a Pedagogical Tool

Exercise: 1D full waveform inversion

I Introduces FWI to interns, graduate students, and postdocs

I Achieves a functional FWI in a few hours

I Motivates and teaches both design and structure of PySIT

I Is part of PySIT’s documentation

Case study: MSRI – Mathematics of Seismic Imaging

I Two weeks and ∼ 40 math graduate students

I No imaging experience, moderate programming experience

I Start with 1D exercise . . .

I . . . end with blind 2D inversion problem using PySIT

Russell J. Hewett (TOTAL E&P USA and MIT) PySIT 8 / 14

Page 10: PySIT: Seismic Imaging Toolbox for Pythonahay.org/wikilocal/docs/vienna2016/B06.pdf · PySIT is also a Pedagogical Tool Exercise: 1D full waveform inversion I Introduces FWI to interns,

PySIT is also a Pedagogical Tool

Exercise: 1D full waveform inversion

I Introduces FWI to interns, graduate students, and postdocs

I Achieves a functional FWI in a few hours

I Motivates and teaches both design and structure of PySIT

I Is part of PySIT’s documentation

Case study: MSRI – Mathematics of Seismic Imaging

I Two weeks and ∼ 40 math graduate students

I No imaging experience, moderate programming experience

I Start with 1D exercise . . .

I . . . end with blind 2D inversion problem using PySIT on their laptops

Russell J. Hewett (TOTAL E&P USA and MIT) PySIT 8 / 14

Page 11: PySIT: Seismic Imaging Toolbox for Pythonahay.org/wikilocal/docs/vienna2016/B06.pdf · PySIT is also a Pedagogical Tool Exercise: 1D full waveform inversion I Introduces FWI to interns,

Partial List of Features

Dimension independent inversion: 1D, 2D, and 3D

SolversI Scalar acoustic wave equation

– Matrix (numpy) and matrix-free (C++) implementations– Leap frog and ODE timestepping– Arbitrary spatial accuracy

I + Variable density solversI Helmholtz equation

– Sparse, direct LU with SuperLU + PETSc wrappers

Objective FunctionsI Temporal least-squaresI Frequency least-squares

Optimization AlgorithmsI Gradient descent, Gauss-Newton, L-BFGS

Visualization

Parallelism (MPI + OpenMP), PMLs, gallery problems, and more

Russell J. Hewett (TOTAL E&P USA and MIT) PySIT 9 / 14

Page 12: PySIT: Seismic Imaging Toolbox for Pythonahay.org/wikilocal/docs/vienna2016/B06.pdf · PySIT is also a Pedagogical Tool Exercise: 1D full waveform inversion I Introduces FWI to interns,

Let the Mathematics Define the API

modeling = TemporalModeling(solver)

u = F(m) ⇔ L(m)u = f

δu = Fm0δm ⇔ L(m0) = −

δL

δm[δm]u0

δm = F ∗m0S∗r ⇔

δm = − < q, δLδmu0 >

s.t. L∗(m0)q = S∗r

modeling.forward_model(shot , m, ...)

modeling.linear_forward_model(shot , m0, dm, ...)

modeling.adjoint_model(shot , m0 , r, ...)

Russell J. Hewett (TOTAL E&P USA and MIT) PySIT 10 / 14

Page 13: PySIT: Seismic Imaging Toolbox for Pythonahay.org/wikilocal/docs/vienna2016/B06.pdf · PySIT is also a Pedagogical Tool Exercise: 1D full waveform inversion I Introduces FWI to interns,

Let the Mathematics Define the API

objective = TemporalLeastSquares(solver)

J(m) = 12 ||d−F(m)||22

∇J(m0) = − F ∗m0

(d−F(m0))

D2Jδm = F ∗m0Fm0

δm− < D2Fδm, d−F(m0) >

objective.evaluate(shots , m, ...)

objective.compute_gradient(shots , m0 , ...)

objective.apply_hessian(shots , m0, dm, ...)

Russell J. Hewett (TOTAL E&P USA and MIT) PySIT 11 / 14

Page 14: PySIT: Seismic Imaging Toolbox for Pythonahay.org/wikilocal/docs/vienna2016/B06.pdf · PySIT is also a Pedagogical Tool Exercise: 1D full waveform inversion I Introduces FWI to interns,

A Cartoon Examplefrom pysit import *

hidden_text

# Setup a physical problem and acquisition

true_model , initial_model , mesh , domain = marmousi2 ()

wavelet = RickerWavelet (10.0)

shots = equispaced_acquisition(mesh , wavelet , nshots=5, nrecs =50)

# Setup solver

solver = ConstantDensityAcousticWave(mesh , trange =(0.0, 3.0))

# Populate synthetic data

generate_seismic_data(shots , solver , true_model)

# Define objective function

objective = TemporalLeastSquares(solver)

# Define optimization algorithm

invalg = LBFGS(objective)

# Run inversion for 5 iterations

result = invalg(shots , initial_value , 5)

# Visualize results

vis.plot(result.C, mesh)Russell J. Hewett (TOTAL E&P USA and MIT) PySIT 12 / 14

Page 15: PySIT: Seismic Imaging Toolbox for Pythonahay.org/wikilocal/docs/vienna2016/B06.pdf · PySIT is also a Pedagogical Tool Exercise: 1D full waveform inversion I Introduces FWI to interns,

FWI Results with PySIT

0 100 200 300 400 500

020406080

100120140

0 100 200 300 400 500

020406080

100120140

0 100 200 300 400 500

020406080

100120140

Russell J. Hewett (TOTAL E&P USA and MIT) PySIT 13 / 14

Page 16: PySIT: Seismic Imaging Toolbox for Pythonahay.org/wikilocal/docs/vienna2016/B06.pdf · PySIT is also a Pedagogical Tool Exercise: 1D full waveform inversion I Introduces FWI to interns,

What does the future hold?

I Optimization toward a simpler, more powerful, dependable tool:

I New features: UQ, hDG, maybe elastic / anisotropic, maybe AD

I Speed up: encapsulate more C++, maybe switch to Julia

I Bridge gap between academic research and industrial application

I Better installer

I Library dependencies can be painful: how to minimize the need forTLC?

http://www.pysit.org

Russell J. Hewett (TOTAL E&P USA and MIT) PySIT 14 / 14