Proof-of-concept · Seismology tools powered by Python & WebAssembly — no server required
This demo runs ObsPy — a full Python seismology library — entirely in your browser. There is no server doing any computation. When the page loads, a Python interpreter compiled to WebAssembly is bootstrapped, ObsPy and its dependencies are installed into an in-browser virtual filesystem, and from that point all data processing happens locally on your machine.
Seismic waveforms are fetched on demand from public FDSN web services. Earthquake catalogue data comes from the USGS Earthquake Hazards Program. No personal data is collected or transmitted.
This is a proof-of-concept put together by Matthias Meschede at QuantStack, which specialises in open-source scientific computing infrastructure. Questions, feedback, or interest in building similar tools: info@quantstack.net
The central question this demo poses is: which parts of a seismological web application should live in Python, and which in JavaScript? For a demo, the answer is deliberately biased toward Python — the point is to show that ObsPy runs in the browser at all. A production application would be more selective.
Some operations belong in JavaScript regardless. FDSN data queries, station availability checks, and event catalogue requests are straightforward HTTP calls; native browser fetch() handles them efficiently, integrates naturally with the browser event loop, and requires no WebAssembly overhead. Keeping these in JavaScript also makes CORS handling more transparent.
Other operations are genuinely better in Python. TauP ray tracing, waveform processing, instrument response removal, spectrograms, and beachballs all rely on ObsPy, SciPy, and Matplotlib — a mature, battle-tested scientific stack with no serious JavaScript equivalent. For those, routing through Python is not a demo choice but the right choice.
This demo builds on a large stack of open-source scientific software. Key components:
| ObsPy | Seismology in Python — LGPL-3.0 |
| NumPy | Array computing — BSD 3-Clause |
| SciPy | Scientific computing — BSD 3-Clause |
| Matplotlib | Plotting — PSF-based license |
| pyjs | Python → WebAssembly runtime — BSD 3-Clause |
| Emscripten | C/C++ → WebAssembly compiler — MIT |
| Leaflet | Interactive maps — BSD 2-Clause |
| CARTO | Basemap tiles — CC BY 3.0 · © OpenStreetMap contributors |
Parts of this interface were developed with the assistance of AI coding tools. All code was reviewed, directed, and extensively iterated on by human contributors with domain expertise in seismology and scientific software. The AI acted as an accelerator, not an author. If you believe any part of this software infringes a copyright, please contact info@quantstack.net immediately.