# Greenphase Eval

> Evaluates the capability of seismic models to detect earthquake events and precisely pick P- and S-wave arrival times from continuous three-component waveform data. It measures both detection accuracy and temporal picking precision under a fixed time-tolerance constraint. Use when the user wants to benchmark on STEAD (Stanford Earthquake Dataset), or asks about evaluating this task. Reports F1.

- Skill: `qhjqhj00/greenphase-eval` (Agent Skill)
- Install (CLI): `npx skillmds add qhjqhj00/greenphase-eval`
- Raw SKILL.md: https://api.skillmd.com/api/skills/qhjqhj00/greenphase-eval/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Web & Frontend
- Author: qhjqhj00 (https://skillmd.com/u/qhjqhj00)
- Updated: 2026-09-08
- Page: https://skillmd.com/skills/qhjqhj00/greenphase-eval

---


# greenphase-eval

> GreenPhase: A Green Learning Approach for Earthquake Phase Picking — Wu et al. (arXiv:2603.03344, 2026)

## What this evaluates

Evaluates the capability of seismic models to detect earthquake events and precisely pick P- and S-wave arrival times from continuous three-component waveform data. It measures both detection accuracy and temporal picking precision under a fixed time-tolerance constraint.

## Datasets

- **STEAD (Stanford Earthquake Dataset)** — total 1320000; splits: train (960000), val (240000), test (120000)

## Metrics

- `F1` **(primary)** — range: [0, 1]
  - Harmonic mean of precision and recall: F1 = 2 * (Precision * Recall) / (Precision + Recall). Computed separately for detection, P-wave picking, and S-wave picking.
- `Precision` — range: [0, 1]
  - Ratio of true positives to all positive predictions: Precision = TP / (TP + FP).
- `Recall` — range: [0, 1]
  - Ratio of true positives to all actual positives: Recall = TP / (TP + FN).

## Input / output format

**Input**: One-minute, three-component seismic records sampled at 100 Hz.

**Output**: Binary detection label and predicted arrival times (in samples or seconds) for P- and S-waves.

## Scoring recipe

```python
def evaluate(predictions, gold, tolerance=0.5):
    tp = fp = fn = 0
    for gt in gold:
        if gt in predictions and abs(predictions[gt] - gt) <= tolerance:
            tp += 1
        else:
            fn += 1
    for pred in predictions:
        if pred not in gold or abs(predictions[pred] - gold[pred]) > tolerance:
            fp += 1
    prec = tp / (tp + fp) if (tp + fp) > 0 else 0
    rec = tp / (tp + fn) if (tp + fn) > 0 else 0
    f1 = 2 * prec * rec / (prec + rec) if (prec + rec) > 0 else 0
    return prec, rec, f1
```

## Common pitfalls

- Timing tolerance is strictly fixed at 0.5 seconds (50 samples at 100 Hz); deviations invalidate the metric.
- Metrics are computed separately for detection, P-wave picking, and S-wave picking, not jointly.
- Detection uses a fixed decision threshold of 0.5 on the classifier output.

## Evidence (verbatim from paper)

> A prediction is counted as a true positive (TP) if it correctly identifies a ground-truth phase arrival and its absolute timing error does not exceed 0.5 s. A false positive (FP) arises in two situations: (1) when the model predicts a phase arrival in a noise waveform where no ground-truth arrival exists, or (2) when the prediction corresponds to a true arrival but its timing error is greater than 0.5 s, i.e., the pick is imprecise. A false negative (FN) occurs when a ground-truth phase arrival is present in the waveform, but the model fails to produce a corresponding prediction within 0.5 s. Under these definitions, precision, recall, and F1 provide a balanced evaluation of both the ability to correctly detect phases and the accuracy of their predicted arrival times.

## Citation

```bibtex
@misc{wu2026greenphase,
  title={GreenPhase: A Green Learning Approach for Earthquake Phase Picking},
  author={Wu et al.},
  year={2026},
  note={arXiv:2603.03344}
}
```

- arXiv: 2603.03344

