How does dust on Earth compare to dust on Mars?
The same imaging-spectroscopy technique maps the mineral makeup of dust sources on Earth (Earth, EMIT) and on Mars (Planetary, CRISM) — letting two worlds inform one another.
Dust is just tiny bits of broken-up rock and soil, and rock is made of minerals (quartz, clay, iron oxides, and so on). Each mineral reflects sunlight in its own pattern of colors, including colors our eyes can't see. A special kind of camera can read that pattern off the ground and tell you *what the dust is made of*. The same trick works on Earth and on Mars.
How does dust on Earth compare to dust on Mars?
Dust is just tiny bits of broken-up rock and soil, and rock is made of minerals (quartz, clay, iron oxides, and so on). Each mineral reflects sunlight in its own pattern of colors, including colors our eyes can’t see. A special kind of camera can read that pattern off the ground and tell you what the dust is made of. The same trick works on Earth and on Mars.
Which data to use, and how
Use this dataset: EMIT (short name EMITL2ARFL), a NASA instrument bolted to the International Space Station that looks down at Earth’s dry, dusty regions. It’s an imaging spectrometer. Instead of capturing red/green/blue like a normal camera, it splits each pixel into hundreds of narrow color bands. That fine spectrum is the mineral fingerprint of whatever is on the ground.
Then do four steps (the runnable code further down does all of this; this is just the idea):
- Pick a dust-source region, a dry, bare patch like a desert or dry lakebed, and grab EMIT’s surface-reflectance data over it.
- Read the spectrum per pixel. For each spot on the ground, you get a curve of how strongly it reflects each color band.
- Match the curve to minerals. Dips and bumps at known wavelengths point to specific minerals (e.g. clays, iron oxides). This is the fingerprint.
- Compare the fingerprints. Line up Earth’s dust minerals against the minerals Mars’ orbiter (CRISM) found, since both are read the same way. You’re comparing what the dust is made of, world to world.
That’s the whole method. Below, “How a scientist answers this” names the exact tools, and the Run it cell does it live on synthetic data so you can see each step work.
What you can find out
- Compare the mineral fingerprint of dust-source regions on both planets: what Earth dust is made of versus what Mars dust is made of.
- Use Mars’ dust-storm behaviour to sharpen questions about Earth’s, and the other way round, because the same imaging-spectroscopy physics underlies both.
What it can’t tell you
- You can’t merge the pixels directly. Earth and Mars are different worlds, photographed by different instruments at different scales. The data don’t line up on one grid, so you compare findings (which minerals turn up), not raw pixels stacked together.
- You can’t measure dust floating in the air. EMIT reads the surface, the dust source on the ground, not the particles drifting through the atmosphere. Airborne dust needs a different kind of measurement entirely.
Gotchas to watch for
- EMIT reads the ground, not the sky. It tells you what the source is made of, which is great for “where does this dust come from and what’s in it.” It is not a measurement of the dust cloud itself. Keep the question pointed at sources.
- Two instruments, two worlds, so you compare conclusions, not data. EMIT (Earth, on the ISS) and CRISM (Mars, on an orbiter) use the same idea (imaging spectroscopy) but different hardware, resolution, and lighting. The honest move is to compare the minerals each one identifies, not to overlay the images.
- Pick genuinely bare, dry pixels. Imaging spectroscopy reads whatever is on the surface. Vegetation, water, or shadow will swamp the mineral signal, so aim at exposed dust-source ground (deserts, dry lakebeds) for a clean fingerprint.
The real-data code
The Run it cell above runs the method on synthetic data with no login. Below is the whole recipe against the real archive: search EMIT, open the scene, pull each pixel’s reflectance spectrum, score the mineral absorption features, name the dominant Earth mineral, and plot it next to Mars’ CRISM findings. It needs a free Earthdata Login.
import earthaccess, numpy as np, xarray as xr
import matplotlib.pyplot as plt
earthaccess.login(strategy="netrc")
# A dry, dusty dust-source region — a small (West, South, East, North) box:
aoi = (-115.5, 36.0, -114.5, 37.0) # example: a desert basin
# 1. Find an EMIT L2A surface-reflectance granule over the box.
grans = earthaccess.search_data(short_name="EMITL2ARFL", bounding_box=aoi, count=1)
files = earthaccess.open(grans)
# 2. Open the scene. EMIT ships reflectance in one group and the band wavelengths
# in the "sensor_band_parameters" group; join them so each band has a wavelength.
ds = xr.open_dataset(files[0]) # reflectance cube
wl = xr.open_dataset(files[0], group="sensor_band_parameters")["wavelengths"].values
refl = ds["reflectance"].where(ds["reflectance"] > 0) # drop fill/no-data
# 3. Keep only genuinely bare, dry pixels (avoid vegetation/shadow swamping the
# mineral signal). Vegetation has a red-edge jump ~670→790 nm; bare ground stays flat.
b670, b790, b850 = (np.abs(wl - x).argmin() for x in (670., 790., 850.))
red_edge = refl.isel(bands=b790) - refl.isel(bands=b670)
bright = refl.isel(bands=b850)
bare = refl.where((red_edge < 0.05) & (bright > 0.15)) # dust-source mask
# 4. Score diagnostic mineral absorptions via band depth = 1 - feature/continuum.
# Each mineral dips at a known wavelength (a "fingerprint"):
features = {"kaolinite (clay)": 2200, "calcite": 2340, "iron oxide (hematite)": 900}
def band_depth(center_nm):
c = np.abs(wl - center_nm).argmin()
shoulder = (refl.isel(bands=c - 8) + refl.isel(bands=c + 8)) / 2
return (1 - bare.isel(bands=c) / shoulder).clip(0, 1)
depths = {name: float(band_depth(nm).mean(skipna=True)) for name, nm in features.items()}
# 5. Verdict: the deepest absorption is the dominant Earth dust mineral.
earth_mineral = max(depths, key=depths.get)
print(f"Earth dust source dominated by: {earth_mineral} "
f"(band depth {depths[earth_mineral]:.3f})")
# Mars side: CRISM's published global mineral maps report widespread nanophase
# iron oxides + sulfates over Mars' dust, read by the same imaging-spectroscopy idea.
mars = {"iron oxide (nanophase)": 0.40, "sulfate (gypsum/jarosite)": 0.25, "clay (phyllosilicate)": 0.10}
# 6. Plot the two worlds' mineral fingerprints side by side (compare findings, not pixels).
fig, (axE, axM) = plt.subplots(1, 2, figsize=(9, 4), sharey=True)
axE.barh(list(depths), list(depths.values()), color="tab:orange"); axE.set_title("Earth (EMIT)")
axM.barh(list(mars), list(mars.values()), color="tab:red"); axM.set_title("Mars (CRISM)")
axE.set_xlabel("relative abundance / band depth"); plt.tight_layout(); plt.show()
# Cross-check: confirm the EMIT mineral call against the EMIT L2B mineralogy product
# (EMITL2BMIN) for the same scene — and remember you're comparing minerals, not raw pixels.
Where the data comes from
EMIT’s surface-reflectance data comes from NASA’s LP DAAC (the archive for land-surface products), reached through one free login (Earthdata Login). The Mars side, MRO CRISM, the visible-infrared spectrometer that mapped minerals across Mars, lives in NASA’s Planetary Science archives. Both sides use the same physics, imaging spectroscopy, which is what lets each world’s dust science inform the other.
Sources
Make it yours → Select your dust-source AOI and the EMIT scenes (and target minerals) in the notebook.
A safe place to practise the method on GPM_3IMERGM. The code is the real earthaccess workflow, but we feed it stand-in data shaped like the real product — so you can run it, change the numbers, and break it without an account. When you want the real data, use the recipe under “The real-data code” above, or download the notebook below.