Galileo Conference DASDAE Tutorial

dasdae.github.io/galileo_2026 – the rendered site, with the slides and this page.

Data and code for the Galileo 2026 DASDAE tutorial.

Learning objectives

  1. Patch – filter, smooth, transform and plot DFOS data.
  2. Spool – subselect, chunk, merge, reshape and visualize an archive.
  3. Inventory – attach deployment metadata, and let it enrich selections and patches.
  4. (bonus, if time permits) DASJax – compile a CPU/GPU kernel and time it against DASCore’s numpy.

Contents

We will primarily cover 3 notebooks that explain DASCore using a real research dataset.

Notebook Topic molab solutions
00_setup.py Check your environment and data Open in molab –
01_the_patch.py The Patch: filtering, transforms and plots Open in molab Open in molab
02_the_spool.py The Spool: an archive, selected and re-cut Open in molab Open in molab
03_the_inventory.py The observing system, with Inventory Open in molab Open in molab

The solutions column opens the same notebook with every exercise worked; the files live in solutions/.

Bonus: The Need for Speed

This notebook demonstrates DASJax, a proof-of-concept notebook for using Jax to accelerate DASCore.

Notebook Topic molab
04_dasjax.py Compiled kernels with DASJax Open in molab

Bonus: Novel or Nonsense?

To practice separating insight from slop in AI-generated research, I asked Claude Code with Fable 5 and Codex with GPT-5.6 Sol Ultra to investigate the dataset. Time permitting, we’ll assess the reasoning and code in their six notebooks.

Claude Code

Notebook Topic molab
01_the_step_response.py A blast-induced phase offset follows the interrogator’s first-order high-pass step response. Open in molab
02_the_clock_in_the_files.py Reported 5 Hz gaps reflect a drifting sample count, not missing data; within-file times are accurate to about one second. Open in molab
03_the_brillouin_record.py BOTDR detects no borehole motion above noise, while robust statistics reveal four cable junctions. Open in molab

Codex

Notebook Topic molab
01_blast_moveout.py A robust plane fit estimates blast velocities along the drift and boreholes, checked against paired fiber legs. Open in molab
02_transient_or_permanent.py The N180 step decays within a minute on both fiber legs, with no persistent Brillouin signal. Open in molab
03_coupling_or_optics.py Cemented intervals are quieter – a registration feature, not a coupling test – and uncoupled variability does not track cumulative connector and splice loss. Open in molab

Background

The data comes from an underground hardrock mine in Europe, where two types of sensing cable are grouted into 14 boreholes above the planned extraction volume, to watch how the rockmass holds up as extraction proceeds. See the borehole geometry and the optical paths.

Four kinds of fiber data ship with it, along with the metadata that describes them: DSS from a Febus G1 BOTDR, low frequency and 2 kHz DAS from a Sintela Onyx Peta (the interrogator samples at 20 kHz, but everything it writes out is decimated), and OTDR traces from a Tempo Communications OFL100. Later notebooks study a mine blast that went off at 2026-08-06T10:13:27 UTC.

Setup

The notebooks are marimo notebooks: plain python files that name their own dependencies, so there is no environment to build by hand. You will need python 3.12 or newer, and familiarity with numpy, pandas and matplotlib.

In the browser

Click a molab badge above: it opens the notebook on a machine that is not the conference wifi, and the notebook installs this repository, data and all, from its own first lines. Signing in with Google or GitHub is the only setup. Please open one before you arrive, so a login problem is not the first thing you hit in the session.

The bonus notebook is the one place the machine matters: molab’s notebook specs button will attach an NVIDIA GPU, and 04_dasjax.py compiles for whatever it finds. It runs on the default CPU too, and says which one it got.

On your own machine

Please do this before you arrive. Conference wifi is not a good place to install a scientific python stack for the first time.

First get the repository, with git or without – either way you end up with the same folder:

git clone https://github.com/DASDAE/galileo_2026
cd galileo_2026

Without git, take the ZIP from the green Code button on the repo page, unzip it, and cd into it.

From that folder, uv builds one environment for every notebook:

uv run marimo edit

Without uv, build that environment yourself:

python -m venv .venv
source .venv/bin/activate      # Windows: .\.venv\Scripts\Activate.ps1
python -m pip install -e .     # use ".[bonus]" if you want notebook 04
marimo edit

Either way this pulls DASCore from its dev branch – the inventory, the OTDR reader and the hive-style directory attributes are not released yet – so the install needs git on your path and a few minutes.

Then open 00_setup.py in the marimo browser tab and run it. If it prints a DASCore version and four rows of file counts, you are ready for the session.

(One more option, for the curious: uvx marimo edit --sandbox 00_setup.py opens a single notebook file in its own throwaway environment, no clone needed – it fetches this repository, data included, and unpacks the recordings into galileo_2026_data beside the notebook. Cloning is still the better way to work through the session.)

If something goes wrong

  • The DASCore install comes from a git branch, so it needs git on your path even if you took the ZIP, and the first install takes a few minutes. error: ... git ... not found means install git first.
  • Do not put the folder inside Dropbox, OneDrive, or another synced directory: the syncer fights the .venv and the install gets slow or breaks in strange ways. Clone somewhere plain instead.
  • The bonus extra is a heavy one on Linux: it brings JAX’s CUDA wheels, a few gigabytes of them, so that notebook 04 can reach a GPU. Everywhere else it installs the CPU build and the notebook runs the same, just slower. Skip it if you are short on bandwidth – notebook 04 also runs fine on molab.
  • If the local install keeps fighting you, stop: the molab links above are the fallback, and they need nothing but a browser. Come a few minutes early and we will sort the local install out.

Building the site

Maintainers only – attendees can skip this section entirely.

The landing page and both slide decks are one quarto project, so one command builds all of it into _site:

quarto render      # or: quarto preview, for live reload

Nothing is executed – the pages are markdown, the figures and the borehole geometry are committed files – so quarto is the only thing you need installed. Pushing any of them to main publishes the site to GitHub Pages.

License

Code is MIT, data is CC BY 4.0. See LICENSING.md.

AI usage

Claude Code and Codex were used to help prepare and edit this material.