Introducing a Channel Quality Index for DAS
Paper (open access): 10.1109/JSTARS.2025.3593330
The details and benchmarking are in the paper; below I focus on the motivation, design, and how the tool works in practice.
Distributed Acoustic Sensing (DAS) is reshaping how we listen to the Earth. By turning long optical fibres into dense seismic arrays, we can now monitor earthquakes, ocean dynamics, and infrastructure at high resolution.
But with this density comes a challenge: not every channel behaves equally. Some parts of the fibre couple poorly to the ground; others are drowned in noise or simply fail. The result is a data landscape where quality varies along the cable.
For seismic analyses, what ultimately matters are high-quality waveforms that capture true ground motion. Yet channel performance can fluctuate widely along a fibre: some record crisp, coherent signals, while others are dominated by noise or poor coupling. Traditional measures like SNR or coherence can help assess quality, but they were built for sparse arrays and don’t scale well to thousands of DAS channels.
Our motivation was to bring automation, interpretability, and speed to this problem. We wanted a method that could see the same cues a seismologist sees (sharp, coherent waveforms versus diffuse noise) and turn that intuition into a quantitative, reproducible metric. That’s where the idea of the Channel Quality Index came from.

What CQI-DAS Does
We developed a small Python package, cqi_das, that takes a short time window around an event (typically 40–80 seconds) and assigns a quality score to every DAS channel. The workflow is designed to be practical and fast:
- It extracts a compact set of waveform features per channel.
- A trained model predicts each channel’s quality score.
- Scores are smoothed along the fibre to respect spatial continuity.
- You can interactively set a threshold and instantly visualise which channels qualify as “good.”
The two main entry points are:
calculate_cqi(...)
for automatic scoring and interactive thresholding.ChannelSelector(...)
for quick manual labelling when building or refining training sets.
import cqi_das
import pandas as pd
import h5py
def load_h5_to_df(path: str) -> pd.DataFrame:
with h5py.File(path, "r") as f:
arr = f["data"][...]
return pd.DataFrame(arr).T # columns=channels, rows=time
data = load_h5_to_df("example.h5")
scores = cqi_das.calculate_cqi(
data,
sampling_rate=50,
show_plot=True,
num_jobs=4,
)
To save the plot and control amplitude ranges:
plot_params = {
"save_path": "./cqi_figure.png",
"figure_size": (10, 10),
"vmin": -5, "vmax": 5,
}
scores = cqi_das.calculate_cqi(
data,
sampling_rate=50,
show_plot=True,
num_jobs=8,
plot_parameters=plot_params,
)
The design philosophy
When we started designing CQI-DAS, our main goal was usability. I wanted it to be something researchers could run quickly and trust the results. That meant writing clean feature extraction code, making every step parallelisable, and building a responsive, interactive interface. The idea was to make quality assessment as intuitive as inspecting a waveform plot.
At the same time, CQI-DAS had to stay scientifically defensible. We designed 105 features to capture key temporal, spectral, and energy characteristics of each channel, echoing what a seismologist would look for. A subset of 17 features, chosen through recursive feature elimination, turned out to carry most of the discriminative power.

Manual labelling
Building the training set was a huge part of the work. Using the ChannelSelector interface, we manually labeled nearly 50,000 channels from 10 seismic events across four offshore DAS experiments. The tool displays a two-dimensional section of the DAS cable alongside stacked individual traces, so you can visually confirm coherence and waveform shape while labelling.

This manual process was essential to ensure the model learned from trustworthy data. Big thanks to Tatiana Rodríguez, who spent countless hours refining and validating the labels. The model’s reliability owes a lot to her meticulous work.
Interpreting how the model decides
We didn’t want a black box. Using SHAP values, we verified that the model’s decisions align with physical intuition: sharp, coherent envelopes and concentrated spectral peaks push the CQI upward; diffuse, noisy signals push it down. The RMS envelope shape and power spectral density are particularly strong indicators, but the best results come from the combination of multiple, complementary features.
Beyond simple SNR
Why not just compute SNR? Because SNR alone doesn’t capture the full complexity of DAS data. In comparative tests, an RMS-based SNR threshold achieved a ROC–AUC of about 0.85, while CQI reached around 0.96 on the same datasets. The improvement is obvious when inspecting results (see the paper discussion, section V.D), CQI avoids over-labelling noisy channels as high-quality and stays stable across varying noise conditions.
Looking forward
Ultimately, CQI-DAS is about making DAS data more usable in real time. By identifying high-quality channels automatically, we can streamline workflows, reduce storage, and improve downstream analyses like earthquake localisation or velocity estimation. The hope is that CQI or similar methods will become a standard part of the DAS toolbox, helping integrate these dense fibre arrays into global seismic monitoring networks.
For full equations, feature definitions, and benchmarking results across events and cables, see the paper: 10.1109/JSTARS.2025.3593330.