This is a part of The Leading Edge tutorials series. All tutorials are open-access and include open-source code examples.
The manuscript was written in Authorea. You can view and comment on the text online at Authorea and even edit it on the SEG Wiki. The final (pretty) PDF version is free to download from the publisher website (follow the doi link).
The Jupyter notebook that accompanies the tutorial (see the source code repository on Github) contains the full source code, along with documentation and tests. Both figures of the tutorial are produced by the code in the notebook.
The code and idea for this tutorial came from my Geofísica 2: Sismologia e sísmica course. I came across the problem of implementing NMO correction while preparing my lecture and practical exercises on this topic. This is a clear example of how learning happens both ways in a classroom.
Open any text book about seismic data processing and you will inevitably find a section about the normal moveout (NMO) correction. When applied to a common midpoint (CMP) section, the correction is supposed to turn the hyperbola associated with a reflection into a straight horizontal line. What most text books won't tell you is how, exactly, do you apply this equation to the data?
That is what this tutorial will teach you (hopefully).