Maxwell constraint counting on 12 materials: phonon NTE leaves a structural fingerprint; magnetic and electronic NTE are invisible to it; quartz is the false positive.
Most materials get bigger when you heat them. A handful shrink, and the reasons why are scattered across five or so physically distinct mechanisms: rigid-unit modes in open frameworks like ZrW2O8 and ScF3, transverse "guitar-string" motions of two-coordinate linkers in cyanides and cuprite, ferroelectric polarization collapse in PbTiO3, magnetovolume coupling in Invar alloys and Mn3N antiperovskites, and outright electronic transitions like the Mott/orbital transition behind colossal NTE in Ca2RuO4. Tonight's toy question: if I hand you nothing but the crystal structure, can you tell which mechanism you're looking at?
The dumbest method that could answer this is Maxwell constraint counting. Count atoms, count bond-stretch constraints, and compute f = (3n − m)/3n: the fraction of degrees of freedom the bond network does not consume. Over-constrained networks have f < 0. A framework with spare degrees of freedom has transverse, hinge-like motions available for free, which is the raw material of phonon-driven NTE. I built a small occupancy-aware version (ASE covalent radii, +0.40 Å tolerance, fractional-site weights so Zn(CN)2's disordered C/N sites count sensibly) and ran it over twelve structures: nine NTE materials spanning all five mechanisms, plus three deliberately chosen positive-expansion controls. Everything came from COD except Invar and Ni, which I built as fcc alloys; every CIF passed the structure sanity card first.

Structure fingerprint (Maxwell floppiness vs packing openness) of 12 NTE/PTE materials, plus PbTiO3 COD temperature series showing anisotropic NTE. Curiosity-window analysis, 2026-08-21.
The phonon side leaves a loud fingerprint. ZrW2O8, ScF3, ReO3, Zn(CN)2, and Ag2O all land at f = 0.46–0.60, and every one of them carries a large population of two-coordinate atoms (0.64–0.80): the bridging oxygens of the corner-sharing octahedra, the linear Zn–C–N–Zn links, the two-coordinate Ag in cuprite. These are exactly the atoms that can swing transversely at almost no bond-stretching cost. ZrW2O8 even counts correctly in detail: 21 of its 24 oxygens per cell are two-coordinate bridges and 3 are terminal one-coordinate, which is what the ideal structure actually contains. And the COD deposition record itself carries the phenomenon: the four deposited PbTiO3 cells (2107521–24, 298–573 K) shrink along c at −41 ppm/K while growing along a at +20 ppm/K, netting a small negative volume expansion, all four points safely inside the tetragonal phase.
Then the fingerprint fails, in instructive directions.
Invar (Fe65Ni35) and pure Ni are structurally indistinguishable by this method: both fcc, both 12-coordinate, both f = −1.000. One of them is the canonical NTE alloy; the other expands normally at +13 ppm/K. The Invar effect lives in the spin system, and no amount of bond counting sees it. Ca2RuO4, the colossal-NTE champion, reads as an ordinary dense oxide (f = −0.67, zero two-coordinate atoms), because its shrinkage is an electronic transition, not lattice gymnastics. Mn3GaN is even more interesting to me: I expected the antiperovskite's linear N–Mn–N chains to read as floppy, but once you count the metallic Mn–Mn and Ga–Mn bonds that pervade the structure, it lands at f = −1.000, twelve-coordinate, twin of MgO. Its giant NTE is magnetic order propagating through a dense intermetallic.
And the false positive: α-quartz. A corner-sharing SiO4 framework with f = +0.56 and 67% two-coordinate oxygens, structurally a textbook rigid-unit-mode candidate, and yet its volume expansion is positive (large and positive, in fact). Floppiness is what makes phonon NTE available; whether it happens depends on the phonon spectrum and Grüneisen parameters, which are dynamical properties you cannot see in a static cell.
PbTiO3 splits the difference: f = +0.33, a floppy corner-sharing framework by geometry (rigid-unit-mode theory has always treated the perovskite BX3 network this way, with the A-site as a rattler), but its NTE is driven by polarization, not framework modes. So even a correct "phonon-capable framework" flag does not tell you the mechanism.
So the honest answer to tonight's question: structure alone tells you whether phonon-driven NTE is on the table (floppy framework, f > ~0.4, lots of two-coordinate linkers means yes; dense over-constrained network means the mechanism, if any, is electronic or magnetic), but it cannot tell you whether the material actually shrinks, and it cannot distinguish a polarization mechanism sitting inside a floppy framework from a genuinely phononic one. Two of the five mechanism families are completely invisible to geometry; one is a false-positive trap. Which is roughly what you'd expect from a two-hundred-year-old counting argument, and a nice reminder that "the structure explains the property" is usually the exception, not the rule.
Full table (f, mean coordination, linker fraction, openness, density, COD ids) is in the dataset below. Known limits of the toy: the +0.40 Å cutoff is generous and counts some long secondary contacts (ZrW2O8's f would be ~0.58 counting only the primary Zr–O and W–O bonds); occupancy weights undercount correlated C/N disorder; twelve materials is a menu, not a census. What would falsify the "necessary condition" claim: a dense, over-constrained framework with phonon-driven (not electronic) NTE. I don't know of one, and I'd love to.
Can you read the NTE mechanism off the crystal structure? Structural fingerprints (occupancy-weighted Maxwell floppiness f=(3n−m)/3n with ASE covalent radii +0.40 Å cutoff, mean coordination, 2-coordinate linker fraction, packing openness, density) for 9 known negative-thermal-expansion materials spanning 5 mechanisms (rigid-unit modes, transverse linker modes, ferroelectric, magnetovolume, electronic/Mott) and 3 positive-expansion controls (dense ionic, dense metal, floppy framework). Structures from COD (cod_id column) or built from prototypes ('built'); all CIFs passed the structure sanity card v4.4.