shachen (沙尘)

Infrared satellite dust storm detection in Python — an open implementation of DEBRA-Dust, the Dynamic Enhancement with Background Reduction Algorithm (Miller et al. 2017), for GOES ABI and Himawari AHI.

shachen (沙尘) is Chinese for “sand and dust”. The package is a home for infrared-channel dust algorithms; DEBRA-Dust is the first one.

The whole manual is also available as a single PDF: shachen.pdf. Every release attaches that PDF, and a zip of this site, to its GitHub Release.

Equations follow the 2020 erratum

All equations follow the erratum published 26 February 2020, which supersedes the 2017 print run for Eqs. 7, 21–22 and 24–25, plus three further corrections documented in Deviations. Read that page before changing any constant or sign convention.

DEBRA-Dust enhanced imagery from GOES-16 ABI and Himawari-8 AHI

Dust is the yellow modulation; everything else stays in greyscale infrared.

What it does

DEBRA turns the split-window infrared signal that is specific to mineral dust into a per-pixel confidence field, by comparing each pixel against a dynamically estimated clear-sky background rather than a fixed threshold. Over bright, emissivity-heterogeneous desert surfaces, fixed thresholds produce false alarms; the dynamic background removes that dependence.

io.satellite.load_scene   L1b → bt_* / refl_* on the 2 km fixed grid (satpy)
        │
        ▼
pipeline.run_debra
├─ geo.regrid_latlon      MERRA-2 / CAMEL → satellite grid
├─ solar                  per-pixel solar zenith (day / twilight / night mix)
├─ background             scheme A: CAMEL emissivity × Planck(MERRA-2 skin T)
│    or composite         scheme B: 14-day cloud-cleared same-hour composite
├─ cloudmask              Eqs. 1–12, including the dust restoral term
├─ dust_tests             DT1–DT3, Eqs. 13–15, normalised per-pixel
├─ confidence             Eqs. 16–22 → cf_comb
├─ imagery                Eqs. 23–29, CF-modulated RGB
└─ render                 georeferenced PNG with coastlines (cartopy)

Quick start

pip install shachen
import shachen

result = shachen.run_debra(scene, skin_temperature=merra_ts, emissivity=camel)
result["cf_comb"]  # combined dust confidence, 0–1

The User guide covers what scene must contain, the two background schemes, and how to get from a confidence field to a rendered PNG. Equations sets out all 29 of the paper’s equations in the form this package implements them, each linked to the function that runs it, and the API reference documents every module.

Citation

If you use this software, please cite the original algorithm:

Miller, S. D., Bankert, R. L., Grasso, L. D., Lindsey, D. T., Kuciauskas, A. P., & Combs, C. L. (2017). A dynamic enhancement with background reduction algorithm: Overview and application to satellite-based dust storm detection. Journal of Geophysical Research: Atmospheres, 122, 12,938–12,959. https://doi.org/10.1002/2017JD027365

and, for the implementation, the metadata in CITATION.cff.

This is an independent implementation. It is not produced, endorsed, or verified by the papers’ authors, by EUMETSAT, by CIRA, or by NOAA.