Skip to content

A Python package for surface-wave inversion pre- and post-processing.

License

Notifications You must be signed in to change notification settings

AlbCa/swprepost

 
 

Repository files navigation

swprepost - A Python Package for Surface Wave Inversion Pre- and Post-Processing

Joseph P. Vantassel, The University of Texas at Austin

DOI PyPI - License CircleCI Documentation Status Language grade: Python Codacy Badge codecov PyPI - Python Version

Table of Contents


About swprepost


swprepost is a Python package for performing surface wave inversion pre- and post-processing. swprepost was developed by Joseph P. Vantassel under the supervision of Professor Brady R. Cox at The University of Texas at Austin. The package includes 11 class definitions for interacting with the various components required for surface wave inversion. It is designed to integrate seamlessly with the Dinver module of the popular open-source software Geopsy, however has been written in a general manner to ensure its usefulness with other inversion programs. Furthermore, some of the class definitions provided such as GroundModel may even be of use to those working in the Geotechnical or Geophysical fields, but who do not perform surface wave inversions.

If you use swprepost in your research or consulting we ask you please cite the following:

Joseph Vantassel. (2020). jpvantassel/swprepost: latest (Concept). Zenodo. http://doi.org/10.5281/zenodo.3839998

Note: For software, version specific citations should be preferred to general concept citations, such as that listed above. To generate a version specific citation for swprepost, please use the citation tool for that specific version on the swprepost archive.

For the motivation behind the development of swprepost and its role in a larger project focused on developing a complete and rigorous workflow for surface wave inversion please refer to and consider citing the following:

Vantassel, J.P. and Cox, B.R. (2021). SWinvert: a workflow for performing rigorous 1-D surface wave inversions. Geophysical Journal International 224, 1141-1156. https://doi.org/10.1093/gji/ggaa426

A Few Examples

All examples presented here can be replicated using the Jupyter notebook titled ReadmeExamples.ipynb in the examples directory.

Import 100 ground models in less than 0.5 seconds

time_start = time.perf_counter()
gm_suite = swprepost.GroundModelSuite.from_geopsy(fname="inputs/from_geopsy_100gm.txt")
time_stop = time.perf_counter()
print(f"Elapsed Time: {np.round(time_stop - time_start)} seconds.")
print(gm_suite)
Elapsed Time: 0.0 seconds.
GroundModelSuite with 100 GroundModels.

Plot the ground models

fig, ax = plt.subplots(figsize=(2,4), dpi=150)
# Plot 100 best
label = "100 Best"
for gm in gm_suite:
    ax.plot(gm.vs2, gm.depth, color="#ababab", label=label)
    label=None
# Plot the single best in different color
ax.plot(gm_suite[0].vs2, gm_suite[0].depth, color="#00ffff", label="1 Best")
ax.set_ylim(50,0)
ax.set_xlabel("Vs (m/s)")
ax.set_ylabel("Depth (m)")
ax.legend()
plt.show()

100bestvs.svg

Compute and plot their uncertainty

fig, ax = plt.subplots(figsize=(2,4), dpi=150)
disc_depth, siglnvs = gm_suite.sigma_ln()
ax.plot(siglnvs, disc_depth, color="#00ff00")
ax.set_xlim(0, 0.2)
ax.set_ylim(50,0)
ax.set_xlabel("$\sigma_{ln,Vs}$")
ax.set_ylabel("Depth (m)")
plt.show()

siglnvs.svg

Getting Started


Installing or Upgrading swprepost

  1. If you do not have Python 3.6 or later installed, you will need to do so. A detailed set of instructions can be found here.

  2. If you have not installed swprepost previously use pip install swprepost. If you are not familiar with pip, a useful tutorial can be found here. If you have an earlier version and would like to upgrade to the latest version of swprepost use pip install swprepost --upgrade.

  3. Confirm that swprepost has installed/updated successfully by examining the last few lines of text displayed in the console.

Using swprepost

  1. Download the contents of the examples directory to any location of your choice.

  2. Explore the Jupyter notebooks in the basic directory for a no-coding-required introduction to the swprepost package. If you have not installed Jupyter, detailed instructions can be found here.

  3. Move to the adv directory and follow the Jupyter notebook title example_swinvert_workflow.ipynb for an example application of swprepost to the SWinvert workflow (Vantassel and Cox, 2021).

  4. Enjoy!

About

A Python package for surface-wave inversion pre- and post-processing.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Python 100.0%