--- 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