cpt-vs-tool 0.1.0b1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,207 @@
1
+ # Byte-compiled / optimized / DLL files
2
+ __pycache__/
3
+ *.py[codz]
4
+ *$py.class
5
+
6
+ # C extensions
7
+ *.so
8
+
9
+ # Distribution / packaging
10
+ .Python
11
+ build/
12
+ develop-eggs/
13
+ dist/
14
+ downloads/
15
+ eggs/
16
+ .eggs/
17
+ lib/
18
+ lib64/
19
+ parts/
20
+ sdist/
21
+ var/
22
+ wheels/
23
+ share/python-wheels/
24
+ *.egg-info/
25
+ .installed.cfg
26
+ *.egg
27
+ MANIFEST
28
+
29
+ # PyInstaller
30
+ # Usually these files are written by a python script from a template
31
+ # before PyInstaller builds the exe, so as to inject date/other infos into it.
32
+ *.manifest
33
+ *.spec
34
+
35
+ # Installer logs
36
+ pip-log.txt
37
+ pip-delete-this-directory.txt
38
+
39
+ # Unit test / coverage reports
40
+ htmlcov/
41
+ .tox/
42
+ .nox/
43
+ .coverage
44
+ .coverage.*
45
+ .cache
46
+ nosetests.xml
47
+ coverage.xml
48
+ *.cover
49
+ *.py.cover
50
+ .hypothesis/
51
+ .pytest_cache/
52
+ cover/
53
+
54
+ # Translations
55
+ *.mo
56
+ *.pot
57
+
58
+ # Django stuff:
59
+ *.log
60
+ local_settings.py
61
+ db.sqlite3
62
+ db.sqlite3-journal
63
+
64
+ # Flask stuff:
65
+ instance/
66
+ .webassets-cache
67
+
68
+ # Scrapy stuff:
69
+ .scrapy
70
+
71
+ # Sphinx documentation
72
+ docs/_build/
73
+
74
+ # PyBuilder
75
+ .pybuilder/
76
+ target/
77
+
78
+ # Jupyter Notebook
79
+ .ipynb_checkpoints
80
+
81
+ # IPython
82
+ profile_default/
83
+ ipython_config.py
84
+
85
+ # pyenv
86
+ # For a library or package, you might want to ignore these files since the code is
87
+ # intended to run in multiple environments; otherwise, check them in:
88
+ # .python-version
89
+
90
+ # pipenv
91
+ # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
92
+ # However, in case of collaboration, if having platform-specific dependencies or dependencies
93
+ # having no cross-platform support, pipenv may install dependencies that don't work, or not
94
+ # install all needed dependencies.
95
+ #Pipfile.lock
96
+
97
+ # UV
98
+ # Similar to Pipfile.lock, it is generally recommended to include uv.lock in version control.
99
+ # This is especially recommended for binary packages to ensure reproducibility, and is more
100
+ # commonly ignored for libraries.
101
+ #uv.lock
102
+
103
+ # poetry
104
+ # Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
105
+ # This is especially recommended for binary packages to ensure reproducibility, and is more
106
+ # commonly ignored for libraries.
107
+ # https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
108
+ #poetry.lock
109
+ #poetry.toml
110
+
111
+ # pdm
112
+ # Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
113
+ # pdm recommends including project-wide configuration in pdm.toml, but excluding .pdm-python.
114
+ # https://pdm-project.org/en/latest/usage/project/#working-with-version-control
115
+ #pdm.lock
116
+ #pdm.toml
117
+ .pdm-python
118
+ .pdm-build/
119
+
120
+ # pixi
121
+ # Similar to Pipfile.lock, it is generally recommended to include pixi.lock in version control.
122
+ #pixi.lock
123
+ # Pixi creates a virtual environment in the .pixi directory, just like venv module creates one
124
+ # in the .venv directory. It is recommended not to include this directory in version control.
125
+ .pixi
126
+
127
+ # PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
128
+ __pypackages__/
129
+
130
+ # Celery stuff
131
+ celerybeat-schedule
132
+ celerybeat.pid
133
+
134
+ # SageMath parsed files
135
+ *.sage.py
136
+
137
+ # Environments
138
+ .env
139
+ .envrc
140
+ .venv
141
+ env/
142
+ venv/
143
+ ENV/
144
+ env.bak/
145
+ venv.bak/
146
+
147
+ # Spyder project settings
148
+ .spyderproject
149
+ .spyproject
150
+
151
+ # Rope project settings
152
+ .ropeproject
153
+
154
+ # mkdocs documentation
155
+ /site
156
+
157
+ # mypy
158
+ .mypy_cache/
159
+ .dmypy.json
160
+ dmypy.json
161
+
162
+ # Pyre type checker
163
+ .pyre/
164
+
165
+ # pytype static type analyzer
166
+ .pytype/
167
+
168
+ # Cython debug symbols
169
+ cython_debug/
170
+
171
+ # PyCharm
172
+ # JetBrains specific template is maintained in a separate JetBrains.gitignore that can
173
+ # be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
174
+ # and can be added to the global gitignore or merged into this file. For a more nuclear
175
+ # option (not recommended) you can uncomment the following to ignore the entire idea folder.
176
+ #.idea/
177
+
178
+ # Abstra
179
+ # Abstra is an AI-powered process automation framework.
180
+ # Ignore directories containing user credentials, local state, and settings.
181
+ # Learn more at https://abstra.io/docs
182
+ .abstra/
183
+
184
+ # Visual Studio Code
185
+ # Visual Studio Code specific template is maintained in a separate VisualStudioCode.gitignore
186
+ # that can be found at https://github.com/github/gitignore/blob/main/Global/VisualStudioCode.gitignore
187
+ # and can be added to the global gitignore or merged into this file. However, if you prefer,
188
+ # you could uncomment the following to ignore the entire vscode folder
189
+ # .vscode/
190
+
191
+ # Ruff stuff:
192
+ .ruff_cache/
193
+
194
+ # PyPI configuration file
195
+ .pypirc
196
+
197
+ # Cursor
198
+ # Cursor is an AI-powered code editor. `.cursorignore` specifies files/directories to
199
+ # exclude from AI features like autocomplete and code analysis. Recommended for sensitive data
200
+ # refer to https://docs.cursor.com/context/ignore-files
201
+ .cursorignore
202
+ .cursorindexingignore
203
+
204
+ # Marimo
205
+ marimo/_static/
206
+ marimo/_lsp/
207
+ __marimo__/
@@ -0,0 +1,13 @@
1
+ BSD 3-Clause License
2
+
3
+ Copyright (c) 2026, ZS Zhang, SJ Brandenberg, JP Stewart
4
+
5
+ Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
6
+
7
+ 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
8
+
9
+ 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
10
+
11
+ 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
12
+
13
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
@@ -0,0 +1,146 @@
1
+ Metadata-Version: 2.5
2
+ Name: cpt-vs-tool
3
+ Version: 0.1.0b1
4
+ Summary: Shear wave velocity (Vs) interpretation from seismic CPT data: Zhang et al. CPT-Vs model, Robertson (2012) and layer-based regression.
5
+ Project-URL: Homepage, https://github.com/stefan5kp/cpt_vs_tool
6
+ Project-URL: Repository, https://github.com/stefan5kp/cpt_vs_tool
7
+ Project-URL: Issues, https://github.com/stefan5kp/cpt_vs_tool/issues
8
+ Author: Zhaoting S. Zhang, Scott J. Brandenberg, Jonathan P. Stewart
9
+ License-Expression: BSD-3-Clause
10
+ License-File: LICENSE
11
+ Keywords: CPT,SCPT,Vs,geotechnical,shear wave velocity,site characterization,travel time
12
+ Classifier: Development Status :: 4 - Beta
13
+ Classifier: Intended Audience :: Science/Research
14
+ Classifier: Operating System :: OS Independent
15
+ Classifier: Programming Language :: Python :: 3
16
+ Classifier: Topic :: Scientific/Engineering
17
+ Requires-Python: >=3.9
18
+ Requires-Dist: matplotlib
19
+ Requires-Dist: ngl-tools
20
+ Requires-Dist: numpy
21
+ Requires-Dist: pwlf
22
+ Requires-Dist: scikit-learn
23
+ Requires-Dist: scipy
24
+ Provides-Extra: notebooks
25
+ Requires-Dist: ipympl; extra == 'notebooks'
26
+ Requires-Dist: ipywidgets; extra == 'notebooks'
27
+ Requires-Dist: jupyter; extra == 'notebooks'
28
+ Requires-Dist: pandas; extra == 'notebooks'
29
+ Provides-Extra: test
30
+ Requires-Dist: pandas; extra == 'test'
31
+ Requires-Dist: pytest; extra == 'test'
32
+ Description-Content-Type: text/markdown
33
+
34
+ # cpt_vs_tool
35
+
36
+ This tool is designed to automate the Vs interpretation process from SCPT. `interpretation_tool` provides the all-in-one tool for interpreting Vs profiles from Zhang et al. (2026), Robertson (2012) and the layer-based regression approach. And `lbr` interpret Vs profiles from the conventional layer-based regression approach using only the travel time data.
37
+
38
+ ## Installation
39
+
40
+ ```
41
+ pip install cpt-vs-tool
42
+ ```
43
+
44
+ To run the example notebooks from a clone of this repository, install the package in editable mode with the notebook extras from the repository root:
45
+
46
+ ```
47
+ pip install -e ".[notebooks]"
48
+ ```
49
+
50
+ ## Quick Start
51
+
52
+ ```python
53
+ import numpy as np
54
+ import pandas as pd
55
+ from cpt_vs_tool import compute_profiles, plot_profiles, compute_VsZ, a_coeff
56
+
57
+ cpt = pd.read_csv("avn_1.csv")
58
+ tt = pd.read_csv("avn_1_tt.csv")
59
+
60
+ p = compute_profiles(
61
+ cpt["depth (m)"].to_numpy(), # CPT depth
62
+ cpt["qt (MPa)"].to_numpy(), # qt
63
+ cpt["fs (MPa)"].to_numpy(), # fs
64
+ dGWT=31.0, # groundwater
65
+ TT_depth=tt["depth (m)"].to_numpy(), # travel time depth
66
+ Meas_TT=tt["traveltime (ms)"].to_numpy(), # travel time measurement
67
+ geology="Qal1", # surficial geology
68
+ )
69
+
70
+ plot_profiles(p)
71
+ print(compute_VsZ(p))
72
+ ```
73
+
74
+ Pass `TT_depth=None, Meas_TT=None` when there is no travel time data; only Zhang et al. (geo) and Robertson (2012) are then computed. Use `LBR` for layer-based regression of travel time data alone.
75
+
76
+ ## **User Guide**
77
+
78
+ 1. Purely interpret the traveltime data into stepped Vs profiles from SCPT, please use the layer-based regression `lbr` tool.
79
+ 2. Interpretation tool interpret Vs profile using Zhang et al. (2026) (geo) - only CPT data, Zhang et al. (2026) (site-specific) - CPT and travel time data, Robertson (2012) and lbr.
80
+ 3. Regression and data files for the mand utility tools are included in the `dev/` folder.
81
+
82
+ ## Repository Structure
83
+
84
+ ```
85
+ cpt_vs_tool/
86
+ ├── pyproject.toml # package metadata and dependencies (PyPI: cpt-vs-tool)
87
+ ├── requirements.txt # editable install of the package + notebook extras
88
+ ├── LICENSE # BSD-3-Clause
89
+ ├── src/cpt_vs_tool/ # the installable package
90
+ │ ├── __init__.py # public API (from cpt_vs_tool import ...)
91
+ │ └── vs.py # all functions (CPT processing, Zhang et al. / Robertson models, layer-based regression)
92
+ ├── tests/ # pytest suite + sample data (avn_1)
93
+ ├── .github/workflows/ # publish.yml: build, test and publish to PyPI on a GitHub release
94
+ ├── interpretation_tool/ # example: scpt_tool_v1.ipynb + sample data (avn_1)
95
+ ├── lbr/ # example: layerbasedregression.ipynb + sample data
96
+ └── dev/ # model development (not needed to use the tools)
97
+ ├── src_files/ # VSPDB query (vspdb_2_query.ipynb) and the CPT, travel time, groundwater and geology tables
98
+ ├── groundwater/ # groundwater table depths from Ma et al. (2026) and USGS topography, with validation
99
+ ├── data_observation/ # data_observation.ipynb + residual data (cpt_res_data_r3.csv, tt_res_data_r3.csv)
100
+ ├── regression/ # model regression: v6_mle.ipynb (maximum likelihood) and bayesian_pymc.ipynb
101
+ ├── results/ # results_comparison_gui.ipynb: compares the CPT-Vs models with the measured profiles
102
+ ├── sl_validation/ # sl_validation.ipynb: all-in-one tool applied to the Perris and UCD validation sites
103
+ └── utilities/ # geology.ipynb: Wills et al. (2015) surficial geology / Vs30 query (wills_shp/ shapefile)
104
+ ```
105
+
106
+ The tool notebooks import from the installed `cpt_vs_tool` package (see Installation), and all notebooks read their data through relative paths, so run them from inside their own folder. `pip install -r requirements.txt` is equivalent to `pip install -e ".[notebooks]"`; the `dev/` notebooks need additional packages (e.g. pymc, geopandas).
107
+
108
+ Run the tests with `pip install -e ".[test]"` and then `pytest`.
109
+
110
+ ## Update Log
111
+
112
+ 2026-05-19
113
+ - Correction Made to the Robertson 2012 Calculation in the all-in-one tool.
114
+ - Ergodic model Tool is now available with the most recent version of the model and the corrected Robertson 2012 Calculation.
115
+
116
+ 2026-06-01
117
+ - Updated input parameters for the ergodic model to be inverse-filtered qt and fs (Boulanger and DeJong, 2018).
118
+ - Added Kc plot and shading for Ic > 2.6 for ergodic model.
119
+ - Updated name to be Zhang et al. model.
120
+ - Updated the cost function for the layer-based regression tool.
121
+
122
+ 2026-06-22
123
+ - Updated input parameters to be qc for the Zhang et al. model (without pore pressure correction).
124
+ - Updated the model offset "a" to be geology specifc.
125
+
126
+ 2026-08-25
127
+ - Updated the all-in-one-tool to the most recent version and added function for exporting the site specific Vs result.
128
+
129
+ 2026-10-27
130
+ - Consolidated all functions into a single scpt_tool.py at the repository root; each model folder now contains one example notebook and its sample data.
131
+ - Layer-Based Regression now uses the same regression algorithm and cost function as the all-in-one tool.
132
+
133
+ 2026-11-01
134
+ - Updated the Zhang et al. model coefficients, Kc and m(Ic) functions, and geology-specific "a" values.
135
+
136
+ 2026-11-05
137
+ - Introduced `geology.ipynb` to query Wills et al. (2015) surficial geology units in `dev/utilities`.
138
+
139
+ 2026-11-10
140
+ - Introduced `topo.ipynb` and `groundwater.ipynb` to query USGS topo elevation and Ma et al. 2026 groundwater data in `dev/utilities`.
141
+ - Packaged the tool for PyPI as `cpt-vs-tool` (`pip install cpt-vs-tool`): `scpt_tool.py` moved to `src/cpt_vs_tool/vs.py`, and the notebooks now use `from cpt_vs_tool import ...`.
142
+
143
+ ## Citations
144
+ Zhang, ZS, SJ Brandenberg, JP Stewart (2026). Algorithm for interpreting velocity profiles from seismic Cone Penetration Test data, 13th National Conference on Earthquake Engineering, Portland, OR, EERI
145
+
146
+ Zhang, ZS, SJ Brandenberg, JP Stewart (2027). CPT-Based Vs Estimation with or without Travel Time Measurements, ASCE2027, Philadelphia, PA, ASCE
@@ -0,0 +1,113 @@
1
+ # cpt_vs_tool
2
+
3
+ This tool is designed to automate the Vs interpretation process from SCPT. `interpretation_tool` provides the all-in-one tool for interpreting Vs profiles from Zhang et al. (2026), Robertson (2012) and the layer-based regression approach. And `lbr` interpret Vs profiles from the conventional layer-based regression approach using only the travel time data.
4
+
5
+ ## Installation
6
+
7
+ ```
8
+ pip install cpt-vs-tool
9
+ ```
10
+
11
+ To run the example notebooks from a clone of this repository, install the package in editable mode with the notebook extras from the repository root:
12
+
13
+ ```
14
+ pip install -e ".[notebooks]"
15
+ ```
16
+
17
+ ## Quick Start
18
+
19
+ ```python
20
+ import numpy as np
21
+ import pandas as pd
22
+ from cpt_vs_tool import compute_profiles, plot_profiles, compute_VsZ, a_coeff
23
+
24
+ cpt = pd.read_csv("avn_1.csv")
25
+ tt = pd.read_csv("avn_1_tt.csv")
26
+
27
+ p = compute_profiles(
28
+ cpt["depth (m)"].to_numpy(), # CPT depth
29
+ cpt["qt (MPa)"].to_numpy(), # qt
30
+ cpt["fs (MPa)"].to_numpy(), # fs
31
+ dGWT=31.0, # groundwater
32
+ TT_depth=tt["depth (m)"].to_numpy(), # travel time depth
33
+ Meas_TT=tt["traveltime (ms)"].to_numpy(), # travel time measurement
34
+ geology="Qal1", # surficial geology
35
+ )
36
+
37
+ plot_profiles(p)
38
+ print(compute_VsZ(p))
39
+ ```
40
+
41
+ Pass `TT_depth=None, Meas_TT=None` when there is no travel time data; only Zhang et al. (geo) and Robertson (2012) are then computed. Use `LBR` for layer-based regression of travel time data alone.
42
+
43
+ ## **User Guide**
44
+
45
+ 1. Purely interpret the traveltime data into stepped Vs profiles from SCPT, please use the layer-based regression `lbr` tool.
46
+ 2. Interpretation tool interpret Vs profile using Zhang et al. (2026) (geo) - only CPT data, Zhang et al. (2026) (site-specific) - CPT and travel time data, Robertson (2012) and lbr.
47
+ 3. Regression and data files for the mand utility tools are included in the `dev/` folder.
48
+
49
+ ## Repository Structure
50
+
51
+ ```
52
+ cpt_vs_tool/
53
+ ├── pyproject.toml # package metadata and dependencies (PyPI: cpt-vs-tool)
54
+ ├── requirements.txt # editable install of the package + notebook extras
55
+ ├── LICENSE # BSD-3-Clause
56
+ ├── src/cpt_vs_tool/ # the installable package
57
+ │ ├── __init__.py # public API (from cpt_vs_tool import ...)
58
+ │ └── vs.py # all functions (CPT processing, Zhang et al. / Robertson models, layer-based regression)
59
+ ├── tests/ # pytest suite + sample data (avn_1)
60
+ ├── .github/workflows/ # publish.yml: build, test and publish to PyPI on a GitHub release
61
+ ├── interpretation_tool/ # example: scpt_tool_v1.ipynb + sample data (avn_1)
62
+ ├── lbr/ # example: layerbasedregression.ipynb + sample data
63
+ └── dev/ # model development (not needed to use the tools)
64
+ ├── src_files/ # VSPDB query (vspdb_2_query.ipynb) and the CPT, travel time, groundwater and geology tables
65
+ ├── groundwater/ # groundwater table depths from Ma et al. (2026) and USGS topography, with validation
66
+ ├── data_observation/ # data_observation.ipynb + residual data (cpt_res_data_r3.csv, tt_res_data_r3.csv)
67
+ ├── regression/ # model regression: v6_mle.ipynb (maximum likelihood) and bayesian_pymc.ipynb
68
+ ├── results/ # results_comparison_gui.ipynb: compares the CPT-Vs models with the measured profiles
69
+ ├── sl_validation/ # sl_validation.ipynb: all-in-one tool applied to the Perris and UCD validation sites
70
+ └── utilities/ # geology.ipynb: Wills et al. (2015) surficial geology / Vs30 query (wills_shp/ shapefile)
71
+ ```
72
+
73
+ The tool notebooks import from the installed `cpt_vs_tool` package (see Installation), and all notebooks read their data through relative paths, so run them from inside their own folder. `pip install -r requirements.txt` is equivalent to `pip install -e ".[notebooks]"`; the `dev/` notebooks need additional packages (e.g. pymc, geopandas).
74
+
75
+ Run the tests with `pip install -e ".[test]"` and then `pytest`.
76
+
77
+ ## Update Log
78
+
79
+ 2026-05-19
80
+ - Correction Made to the Robertson 2012 Calculation in the all-in-one tool.
81
+ - Ergodic model Tool is now available with the most recent version of the model and the corrected Robertson 2012 Calculation.
82
+
83
+ 2026-06-01
84
+ - Updated input parameters for the ergodic model to be inverse-filtered qt and fs (Boulanger and DeJong, 2018).
85
+ - Added Kc plot and shading for Ic > 2.6 for ergodic model.
86
+ - Updated name to be Zhang et al. model.
87
+ - Updated the cost function for the layer-based regression tool.
88
+
89
+ 2026-06-22
90
+ - Updated input parameters to be qc for the Zhang et al. model (without pore pressure correction).
91
+ - Updated the model offset "a" to be geology specifc.
92
+
93
+ 2026-08-25
94
+ - Updated the all-in-one-tool to the most recent version and added function for exporting the site specific Vs result.
95
+
96
+ 2026-10-27
97
+ - Consolidated all functions into a single scpt_tool.py at the repository root; each model folder now contains one example notebook and its sample data.
98
+ - Layer-Based Regression now uses the same regression algorithm and cost function as the all-in-one tool.
99
+
100
+ 2026-11-01
101
+ - Updated the Zhang et al. model coefficients, Kc and m(Ic) functions, and geology-specific "a" values.
102
+
103
+ 2026-11-05
104
+ - Introduced `geology.ipynb` to query Wills et al. (2015) surficial geology units in `dev/utilities`.
105
+
106
+ 2026-11-10
107
+ - Introduced `topo.ipynb` and `groundwater.ipynb` to query USGS topo elevation and Ma et al. 2026 groundwater data in `dev/utilities`.
108
+ - Packaged the tool for PyPI as `cpt-vs-tool` (`pip install cpt-vs-tool`): `scpt_tool.py` moved to `src/cpt_vs_tool/vs.py`, and the notebooks now use `from cpt_vs_tool import ...`.
109
+
110
+ ## Citations
111
+ Zhang, ZS, SJ Brandenberg, JP Stewart (2026). Algorithm for interpreting velocity profiles from seismic Cone Penetration Test data, 13th National Conference on Earthquake Engineering, Portland, OR, EERI
112
+
113
+ Zhang, ZS, SJ Brandenberg, JP Stewart (2027). CPT-Based Vs Estimation with or without Travel Time Measurements, ASCE2027, Philadelphia, PA, ASCE
@@ -0,0 +1,66 @@
1
+ [build-system]
2
+ requires = ["hatchling>=1.26"]
3
+ build-backend = "hatchling.build"
4
+
5
+ [project]
6
+ name = "cpt-vs-tool"
7
+ version = "0.1.0b1"
8
+ description = "Shear wave velocity (Vs) interpretation from seismic CPT data: Zhang et al. CPT-Vs model, Robertson (2012) and layer-based regression."
9
+ readme = "README.md"
10
+ license = "BSD-3-Clause"
11
+ license-files = ["LICENSE"]
12
+ requires-python = ">=3.9"
13
+ authors = [
14
+ { name = "Zhaoting S. Zhang" },
15
+ { name = "Scott J. Brandenberg" },
16
+ { name = "Jonathan P. Stewart" },
17
+ ]
18
+ keywords = ["CPT", "SCPT", "shear wave velocity", "Vs", "geotechnical", "site characterization", "travel time"]
19
+ classifiers = [
20
+ "Development Status :: 4 - Beta",
21
+ "Intended Audience :: Science/Research",
22
+ "Operating System :: OS Independent",
23
+ "Programming Language :: Python :: 3",
24
+ "Topic :: Scientific/Engineering",
25
+ ]
26
+ dependencies = [
27
+ "numpy",
28
+ "scipy",
29
+ "matplotlib",
30
+ "pwlf",
31
+ "ngl_tools",
32
+ # ngl_tools.smt imports scikit-learn but does not declare it as a dependency
33
+ "scikit-learn",
34
+ ]
35
+
36
+ [project.optional-dependencies]
37
+ # Extra packages needed to run the example notebooks in interpretation_tool/ and lbr/
38
+ notebooks = [
39
+ "pandas",
40
+ "ipywidgets",
41
+ "ipympl",
42
+ "jupyter",
43
+ ]
44
+ test = ["pytest", "pandas"]
45
+
46
+ [project.urls]
47
+ Homepage = "https://github.com/stefan5kp/cpt_vs_tool"
48
+ Repository = "https://github.com/stefan5kp/cpt_vs_tool"
49
+ Issues = "https://github.com/stefan5kp/cpt_vs_tool/issues"
50
+
51
+ [tool.hatch.build.targets.wheel]
52
+ packages = ["src/cpt_vs_tool"]
53
+
54
+ [tool.hatch.build.targets.sdist]
55
+ # Keep the source distribution small: the package, tests and metadata only (no dev/ data or notebooks)
56
+ include = [
57
+ "src/cpt_vs_tool",
58
+ "tests",
59
+ "README.md",
60
+ "LICENSE",
61
+ "pyproject.toml",
62
+ ]
63
+
64
+ [tool.pytest.ini_options]
65
+ testpaths = ["tests"]
66
+ filterwarnings = ["ignore:FigureCanvasAgg is non-interactive:UserWarning"]
@@ -0,0 +1,64 @@
1
+ """Shear wave velocity (Vs) interpretation from seismic cone penetration test (SCPT) data.
2
+
3
+ Provides the Zhang et al. (2026) CPT-Vs model (geology-specific and site-specific),
4
+ Robertson (2012), and layer-based regression (LBR) of travel time data.
5
+ """
6
+
7
+ from importlib.metadata import PackageNotFoundError, version
8
+
9
+ from .vs import (
10
+ LBR,
11
+ VsZ_CPT,
12
+ VsZ_layered,
13
+ a_coeff,
14
+ b_coeff,
15
+ compute_profiles,
16
+ compute_VsZ,
17
+ gamma_t,
18
+ get_CPT,
19
+ get_TT,
20
+ interleave,
21
+ layer_average_velocity,
22
+ layer_travel_time,
23
+ optimize,
24
+ optimized_regression,
25
+ pair_layers,
26
+ plot_profiles,
27
+ predicted_DTT,
28
+ regression,
29
+ regression_full_manual,
30
+ robertson_2012,
31
+ site_specific,
32
+ zhang_vs,
33
+ )
34
+
35
+ try:
36
+ __version__ = version("cpt-vs-tool")
37
+ except PackageNotFoundError: # running from a source checkout that is not installed
38
+ __version__ = "0+unknown"
39
+
40
+ __all__ = [
41
+ "LBR",
42
+ "VsZ_CPT",
43
+ "VsZ_layered",
44
+ "a_coeff",
45
+ "b_coeff",
46
+ "compute_profiles",
47
+ "compute_VsZ",
48
+ "gamma_t",
49
+ "get_CPT",
50
+ "get_TT",
51
+ "interleave",
52
+ "layer_average_velocity",
53
+ "layer_travel_time",
54
+ "optimize",
55
+ "optimized_regression",
56
+ "pair_layers",
57
+ "plot_profiles",
58
+ "predicted_DTT",
59
+ "regression",
60
+ "regression_full_manual",
61
+ "robertson_2012",
62
+ "site_specific",
63
+ "zhang_vs",
64
+ ]