PdCuSi metallic glass — crystallization, in situ

The dataset

A Pd–Cu–Si metallic glass crystallizing under the beam, recorded as a 4D-STEM series at 200 kV. Every one of the 733,200 probe positions carries a full 128×128 diffraction pattern, so the run is a five-dimensional dataset: a series axis, two scan axes, and two reciprocal-space axes.

Series steps400
Scan47 × 39 positions, 0.5 nm step
Detector128 × 128 px, 0.11 k_nm^-1 per px
Patterns733,200
Sourceem-database PdCuSiCrystallization, Carter Francis (University of Wisconsin–Madison)

One caveat worth stating rather than papering over: the series axis in the file is calibrated in nm at 1.6384 per step, which looks like a scan calibration carried onto the series axis rather than a real time base. Steps are therefore numbered here, not dated.

What the patterns show

Diffraction summed over the whole scan at four points in the series, log-scaled. The diffuse amorphous halo gives way to discrete crystalline reflections.
Diffraction summed over the whole scan at four points in the series, log-scaled. The diffuse amorphous halo gives way to discrete crystalline reflections.

Finding the vectors

Every pattern went through SpyDE's neural disk detector — a small U-Net trained to find diffraction disks — at a spot size of 8 px and a confidence threshold of 0.3, with sub-pixel refinement on. Spot size is the one scale knob: it sets the canonical rescale the model sees and the non-maximum-suppression distance (4 px).

The threshold is deliberately permissive, because a second pass then re-scores every peak against the peaks found at its scan neighbours and drops the ones no neighbour confirms. A real reflection persists across adjacent probe positions; a detector artefact does not. Asking the scan itself for a second opinion is a stricter filter than raising the confidence bar, and it uses information a single-frame detector cannot see.

That yields 1,498,719 diffraction vectors — 2.04 per pattern averaged over the run. They are stored as a flat CSR buffer of (nav_x, nav_y, kx, ky, step, intensity), which is what makes the interactive panel below possible: the whole result is a few tens of MB of points, not a stack of frames.

Crystallization shows up as a count

Vectors found per probe position, against series step.
Vectors found per probe position, against series step.

Nothing here fitted a model or picked a phase — this is just how many disks the detector found. The count rises from 1.18 vectors per position over the first tenth of the series to 2.28 over the last, peaking at step 267 (2.73) and at its lowest at step 34 (1.14). An amorphous pattern has a diffuse halo and few disks to find; a crystal has sharp reflections. The count is a crude but honest order parameter.

Vectors per probe position in real space, at the same four steps. Crystallization is not uniform — it starts somewhere.
Vectors per probe position in real space, at the same four steps. Crystallization is not uniform — it starts somewhere.

Explore it

The panel below is the same explorer SpyDE's interactive HTML export produces, and it mirrors the app's own window: the left plot picks the series step, the middle one is the real-space vector count map, and the right one redraws the diffraction pattern for wherever you point. Drag the green detector on the pattern to form a virtual image on the count map. It runs entirely in your browser — no server, no Python. On a phone it drops the series plot and gives you a slider instead, so the two images that matter get the width. Every 2th series step is embedded (200 of 400) to keep the page a reasonable size; the figures above use all of them.

Loading the interactive explorer — about 18 MB of diffraction vectors. The rest of the report is ready to read.

Reproducing this

Everything above is a SpyDE session. Open the dataset from Examples → In-situ TEM → PdCuSiCrystallization, run Find Diffraction Vectors with the settings above, then drag the vectors window into a report from the sidebar, write around it, and use File → Export → HTML (interactive). The page you are reading is that export — the same explorer, the same self-contained file.