{"id":22855126,"url":"https://github.com/jpvantassel/swprepost","last_synced_at":"2026-03-06T06:31:12.147Z","repository":{"id":40258272,"uuid":"222287042","full_name":"jpvantassel/swprepost","owner":"jpvantassel","description":"A Python package for surface-wave inversion pre- and post-processing.","archived":false,"fork":false,"pushed_at":"2024-04-29T14:51:09.000Z","size":3727,"stargazers_count":54,"open_issues_count":3,"forks_count":17,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-11-28T01:47:09.260Z","etag":null,"topics":["dinver","dispersion","geopsy","inversion","post-processing","pre-processing","surface-waves","swinvert"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jpvantassel.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2019-11-17T17:39:31.000Z","updated_at":"2025-09-06T13:15:17.000Z","dependencies_parsed_at":"2025-04-30T12:29:59.712Z","dependency_job_id":null,"html_url":"https://github.com/jpvantassel/swprepost","commit_stats":{"total_commits":238,"total_committers":2,"mean_commits":119.0,"dds":0.01680672268907568,"last_synced_commit":"45b212c9e829acef161b76e53ca64ab6557b1be9"},"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/jpvantassel/swprepost","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jpvantassel%2Fswprepost","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jpvantassel%2Fswprepost/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jpvantassel%2Fswprepost/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jpvantassel%2Fswprepost/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jpvantassel","download_url":"https://codeload.github.com/jpvantassel/swprepost/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jpvantassel%2Fswprepost/sbom","scorecard":{"id":536262,"data":{"date":"2025-08-11","repo":{"name":"github.com/jpvantassel/swprepost","commit":"45b212c9e829acef161b76e53ca64ab6557b1be9"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":1.9,"checks":[{"name":"Code-Review","score":0,"reason":"Found 0/1 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":9,"reason":"license file detected","details":["Info: project has a license file: LICENSE.txt:0","Warn: project license file does not contain an FSF or OSI license."],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Vulnerabilities","score":0,"reason":"10 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: PYSEC-2018-34 / GHSA-2fc2-6r4j-p65h","Warn: Project is vulnerable to: PYSEC-2021-856 / GHSA-5545-2q6w-2gh6","Warn: Project is vulnerable to: PYSEC-2019-108 / GHSA-9fq2-x9r6-wfmf","Warn: Project is vulnerable to: PYSEC-2018-33 / GHSA-cw6w-4rcx-xphc","Warn: Project is vulnerable to: PYSEC-2021-857 / GHSA-f7c7-j99h-c22f","Warn: Project is vulnerable to: GHSA-fpfv-jqm9-f5jm","Warn: Project is vulnerable to: PYSEC-2017-1 / GHSA-frgw-fgh6-9g52","Warn: Project is vulnerable to: PYSEC-2019-156 / GHSA-xp76-357g-9wqq","Warn: Project is vulnerable to: PYSEC-2023-102","Warn: Project is vulnerable to: PYSEC-2023-114"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 30 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-20T07:03:15.862Z","repository_id":40258272,"created_at":"2025-08-20T07:03:15.862Z","updated_at":"2025-08-20T07:03:15.862Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30164590,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-06T04:43:31.446Z","status":"ssl_error","status_checked_at":"2026-03-06T04:40:30.133Z","response_time":250,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dinver","dispersion","geopsy","inversion","post-processing","pre-processing","surface-waves","swinvert"],"created_at":"2024-12-13T07:10:16.849Z","updated_at":"2026-03-06T06:31:11.859Z","avatar_url":"https://github.com/jpvantassel.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# _swprepost_ - A Python Package for Surface Wave Inversion Pre- and Post-Processing\n\n\u003e Joseph P. Vantassel, The University of Texas at Austin\n\n[![DOI](https://zenodo.org/badge/222287042.svg)](https://zenodo.org/badge/latestdoi/222287042)\n[![PyPI - License](https://img.shields.io/pypi/l/hvsrpy)](https://github.com/jpvantassel/swprepost/blob/main/LICENSE.txt)\n[![CircleCI](https://circleci.com/gh/jpvantassel/swprepost.svg?style=svg)](https://circleci.com/gh/jpvantassel/swprepost)\n[![Documentation Status](https://readthedocs.org/projects/swprepost/badge/?version=latest)](https://swprepost.readthedocs.io/en/latest/?badge=latest)\n[![Language grade: Python](https://img.shields.io/lgtm/grade/python/g/jpvantassel/swprepost.svg?logo=lgtm\u0026logoWidth=18)](https://lgtm.com/projects/g/jpvantassel/swprepost/context:python)\n[![Codacy badge](https://app.codacy.com/project/badge/Grade/150eb75dee3848f5bbfac0d9f2c33644)](https://www.codacy.com/manual/jpvantassel/swprepost?utm_source=github.com\u0026amp;utm_medium=referral\u0026amp;utm_content=jpvantassel/swprepost\u0026amp;utm_campaign=Badge_Grade)\n[![Codecov](https://codecov.io/gh/jpvantassel/swprepost/branch/main/graph/badge.svg?token=N5kQxjr2RB)](https://codecov.io/gh/jpvantassel/swprepost)\n![PyPI - Python Version](https://img.shields.io/pypi/pyversions/swprepost)\n\n## Table of Contents\n\n---\n\n- [About _swprepost_](#About-swprepost)\n- [A Few Examples](#A-Few-Examples)\n- [Getting Started](#Getting-Started)\n\n## About _swprepost_\n\n---\n\n_swprepost_ is an open-source Python package for performing surface wave\ninversion pre- and post-processing. _swprepost_ was initially developed by\nJoseph P. Vantassel under the supervision of Professor Brady R. Cox at\nThe University of Texas at Austin. The package continues to be developed by\nJoseph P. Vantassel.\n\nThe package includes multiple class definitions for interacting with the various\ncomponents required for surface wave inversion. It is designed to integrate\nseamlessly with the _dinver_ module of the popular open-source software _[geopsy](www.geopsy.org)_,\nhowever has been written in a general manner to ensure its usefulness with other\ninversion programs. Furthermore, some of the class definitions provided, such as\n`GroundModel`, may even be of use to those working in the geotechnical or\ngeophysical fields, but who do not perform surface wave inversion.\n\nIf you use _swprepost_ in your research or consulting we ask you please cite the\nfollowing:\n\n\u003e Joseph Vantassel. (2020). jpvantassel/swprepost: latest (Concept). Zenodo.\n\u003e http://doi.org/10.5281/zenodo.3839998\n\n\u003e Vantassel, J.P. and Cox, B.R. (2021). SWinvert: a workflow for performing\n\u003e rigorous 1-D surface wave inversions. Geophysical Journal International\n\u003e 224, 1141-1156. https://doi.org/10.1093/gji/ggaa426\n\n_Note: For software, version specific citations should be preferred to general_\n_concept citations, such as that listed above. To generate a version specific_\n_citation for _swprepost_, please use the citation tool for that specific_\n_version on the _swprepost_ [archive](https://doi.org/10.5281/zenodo.3839998)._\n\n## A Few Examples\n\nAll examples presented here can be replicated using the Jupyter notebook titled\n`ReadmeExamples.ipynb` in the `examples/basic` directory.\n\n### Import 100 ground models in less than 0.5 seconds\n\n```Python\ntime_start = time.perf_counter()\ngm_suite = swprepost.GroundModelSuite.from_geopsy(fname=\"inputs/from_geopsy_100gm.txt\")\ntime_stop = time.perf_counter()\nprint(f\"Elapsed Time: {np.round(time_stop - time_start)} seconds.\")\nprint(gm_suite)\n```\n\n```Bash\nElapsed Time: 0.0 seconds.\nGroundModelSuite with 100 GroundModels.\n```\n\n### Plot the ground models\n\n```Python\nfig, ax = plt.subplots(figsize=(2,4), dpi=150)\n# Plot 100 best\nlabel = \"100 Best\"\nfor gm in gm_suite:\n    ax.plot(gm.vs2, gm.depth, color=\"#ababab\", label=label)\n    label=None\n# Plot the single best in different color\nax.plot(gm_suite[0].vs2, gm_suite[0].depth, color=\"#00ffff\", label=\"1 Best\")\nax.set_ylim(50,0)\nax.set_xlabel(\"Vs (m/s)\")\nax.set_ylabel(\"Depth (m)\")\nax.legend()\nplt.show()\n```\n\n![Plot of 100 best shear wave velocity profiles.](https://raw.githubusercontent.com/jpvantassel/swprepost/main/figs/100bestvs.svg)\n\n### Compute and plot their uncertainty\n\n```Python\nfig, ax = plt.subplots(figsize=(2,4), dpi=150)\ndisc_depth, siglnvs = gm_suite.sigma_ln()\nax.plot(siglnvs, disc_depth, color=\"#00ff00\")\nax.set_xlim(0, 0.2)\nax.set_ylim(50,0)\nax.set_xlabel(\"$\\sigma_{ln,Vs}$\")\nax.set_ylabel(\"Depth (m)\")\nplt.show()\n```\n\n![Plot of the lognormal standard deviation of the 100 best shear wave velocity profiles.](https://raw.githubusercontent.com/jpvantassel/swprepost/main/figs/siglnvs.svg)\n\n## Getting Started\n\n---\n\n### Installing or Upgrading _swprepost_\n\n1.  If you do not have Python 3.6 or later installed, you will need to do\nso. A detailed set of instructions can be found\n[here](https://jpvantassel.github.io/python3-course/#/intro/installing_python).\n\n2.  If you have not installed _swprepost_ previously use\n`pip install swprepost`. If you are not familiar with `pip`, a useful tutorial\ncan be found [here](https://jpvantassel.github.io/python3-course/#/intro/pip).\nIf you have an earlier version and would like to upgrade to the latest version\nof _swprepost_ use `pip install swprepost --upgrade`.\n\n3.  Confirm that `swprepost` has installed/updated successfully by examining the\nlast few lines of text displayed in the console.\n\n### Using _swprepost_\n\nTo start learning about _swprepost_, we recommend walking through the\nprovided examples.\n\n1.  To access the\n  [examples](https://github.com/jpvantassel/swprepost/tree/main/examples)\n  you can download the latest release of the project archived on\n  [zenodo](https://doi.org/10.5281/zenodo.3839998).\n  \n2.  Unzip the project folder titled `swprepost-vX.X.X.zip`. And move the\n  `example` directory to any location of your choosing. You can now discard\n  the other files and directories in the .zip.\n\n3.  Explore the Jupyter notebooks in the\n  [basic](https://github.com/jpvantassel/swprepost/tree/main/examples/basic)\n  directory for a no-coding-required introduction to the _swprepost_ package.\n  If you have not installed `Jupyter`, detailed instructions can be found\n  [here](https://jpvantassel.github.io/python3-course/#/intro/installing_jupyter).\n\n4.  Move to the\n  [adv](https://github.com/jpvantassel/swprepost/tree/main/examples/adv)\n  directory and follow the Jupyter notebook title\n  `example_swinvert_workflow.ipynb` for\n  an example of _swprepost_ applied in the context of the SWinvert workflow\n  (Vantassel and Cox, 2021). This workflow demonstrates how to use _swprepost_\n  to perform surface wave processing and _swbatch_ for running batch-style\n  surface wave inversion. For more information on _swbatch_ see\n  [its GitHub page](https://github.com/jpvantassel/swbatch).\n\n5.  Enjoy!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjpvantassel%2Fswprepost","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjpvantassel%2Fswprepost","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjpvantassel%2Fswprepost/lists"}