| --- |
| title: Vs From Dispersion Curve |
| emoji: 🌍 |
| colorFrom: blue |
| colorTo: red |
| sdk: gradio |
| sdk_version: "5.24.0" |
| app_file: app.py |
| pinned: false |
| license: mit |
| short_description: 1-D shear-wave velocity from a Rayleigh phase-velocity curve |
| --- |
| |
| # Shear-wave velocity from a phase-velocity dispersion curve |
|
|
| Inverts a fundamental-mode Rayleigh **phase-velocity** dispersion curve (the |
| SASW/MASW observable) for a 70-layer 1-D Vs profile in a single forward pass — |
| no initial model, no iterative inversion. |
|
|
| The model is a physically-coded transformer encoder–decoder (2.44 M |
| parameters): each dispersion pick is a token carrying its physical period, and |
| each output depth is a query token carrying its physical depth, reading the |
| period tokens by masked cross-attention. Band-limited and gappy curves are |
| handled natively, with no interpolation. |
|
|
| Trained on **OpenSWI-shallow** (22 M curve/profile pairs). Test accuracy: |
| 0.151 km/s full-profile RMSE / 6.0 % MAPE / R² 0.949 on 50 k held-out samples; |
| 38 m/s MAE versus the tomographic reference on 5,297 real Long Beach curves. |
|
|
| ## Usage |
|
|
| - Pick a built-in example, upload a CSV (period **or** frequency + phase |
| velocity), or paste values in the sidebar. |
| - **Site scale factor k**: the elastodynamic problem is scale-invariant, so a |
| high-frequency engineering curve (e.g. MASW at a 30 m site) is inverted by |
| multiplying its periods by k into the model's 0.2–10 s training band and |
| dividing the output depths by k. Velocities are never rescaled — the |
| ≈ 0.3–4.5 km/s support applies at every scale. |
| - Gray bands in the profile plot mark depths outside the range the input band |
| physically constrains (wavelength heuristic ≈ ⅓·λ_min to ½·λ_max); treat the |
| profile there as extrapolation. |
| - The predicted profile can be downloaded as CSV. |
|
|
| ## Scope |
|
|
| Trained on 0.2–10 s periods, 0–2.76 km depth, Vs ≈ 0.3–4.5 km/s. Curves |
| outside this envelope — e.g. soft-soil sites with Vs < 0.3 km/s — are out of |
| distribution. |
|
|
| ## Files |
|
|
| - `app.py` — Gradio interface (Gradio SDK; also compatible with ZeroGPU |
| hardware, though the model runs on CPU — it needs no GPU) |
| - `app_streamlit.py` — equivalent Streamlit interface, kept for local use |
| (`streamlit run app_streamlit.py`) |
| - `model.py` — standalone model definition (depth-query encoder–decoder) |
| - `checkpoints/best_model.pth` — trained weights (v4 finalist) |
| - `assets/` — period/depth grids and example curves from the test split |
|
|