Joseph P. Vantassel, The University of Texas at Austin
swprepost is an open-source Python package for performing surface wave inversion pre- and post-processing. swprepost was initially developed by Joseph P. Vantassel under the supervision of Professor Brady R. Cox at The University of Texas at Austin. The package continues to be developed by Joseph P. Vantassel.
The package includes multiple 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 inversion.
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
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
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.
All examples presented here can be replicated using the Jupyter notebook titled
ReadmeExamples.ipynb
in the examples/basic
directory.
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.
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()
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()
-
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.
-
If you have not installed swprepost previously use
pip install swprepost
. If you are not familiar withpip
, a useful tutorial can be found here. If you have an earlier version and would like to upgrade to the latest version of swprepost usepip install swprepost --upgrade
. -
Confirm that
swprepost
has installed/updated successfully by examining the last few lines of text displayed in the console.
To start learning about swprepost, we recommend walking through the provided examples.
-
To access the examples you can download the latest release of the project archived on zenodo.
-
Unzip the project folder titled
swprepost-vX.X.X.zip
. And move theexample
directory to any location of your choosing. You can now discard the other files and directories in the .zip. -
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. -
Move to the adv directory and follow the Jupyter notebook title
example_swinvert_workflow.ipynb
for an example of swprepost applied in the context of the SWinvert workflow (Vantassel and Cox, 2021). This workflow demonstrates how to use swprepost to perform surface wave processing and swbatch for running batch-style surface wave inversion. For more information on swbatch see its GitHub page. -
Enjoy!