← Reproduction studies

When one file contains two derivations of the same quantity

Reproducing the SPIRAL / ELLIPTICAL / UNCERTAIN flags of Galaxy Zoo 1 from the rule its own data release states, across 667,944 galaxies, as a Facetwork FFL workflow. September 2026.

1. Purpose of the analysis

Galaxy Zoo 1 is the morphology catalogue a great deal of extragalactic work is built on — if you want a clean sample of spirals or ellipticals from SDSS, this is where you get it. Its data release publishes the entire chain in a single table: what volunteers voted, the bias-corrected likelihoods derived from those votes, and the final classification flags.

That makes it unusually checkable. The question here is narrow: does applying the documented rule to the published columns produce the published flags? If it does not, anyone who builds a sample the obvious way gets a different sample from the one the catalogue's authors intended.

2. What the original work does

Galaxy Zoo asked volunteers to classify SDSS galaxy images; each galaxy received a median of around 40 independent classifications. Raw vote fractions are not directly usable as morphology, because the vote is biased by distance: a spiral far enough away looks smooth, so it collects elliptical votes. The published catalogue therefore carries bias-corrected ("debiased") likelihoods alongside the raw fractions.

Column groupWhat it is
NVOTE, P_EL, P_CS, …raw vote fractions — the input
P_EL_DEBIASED, P_CS_DEBIASEDbias-corrected likelihoods
SPIRAL, ELLIPTICAL, UNCERTAINthe classification flags — the product

The data release's one-line summary of the flags is that they "are based upon a vote fraction threshold of 0.8". Read further and the same note says something much more specific:

"for the debiased type likelihoods we computed the bias correction based on the elliptical/spiral ratio using the likelihoods directly; for the type flags we debiased the raw type likelihoods using a correction based on the elliptical/spiral ratio determined after applying a 0.8 threshold, and then applied the same threshold to produce the flags. Therefore, the type flags do not correspond to simply applying a 0.8 threshold on the debiased type likelihoods, though for many galaxies these will agree."
— Galaxy Zoo 1 data release

There are two different debiasings of the same quantity in adjacent columns. Both are correct. They answer different questions: the bias in a likelihood and the bias in a thresholded classification are not the same quantity, and Bamford et al. found the latter is worse. Nothing in the file marks the two as incommensurable.

Method: Lintott et al., Galaxy Zoo: morphologies from visual inspection of SDSS galaxies (2008); Galaxy Zoo 1 data release (2011); debiasing in Bamford et al., morphology and colour vs environment (2009).

What we do differently

Galaxy ZooThis workflow
Bias correctiontwo, each matched to its usenone — uses the published column as-is
Threshold0.8, applied to the flag-specific debiasing0.8, applied to the published likelihoods
What it producesthe cataloguewhat the summarised rule would produce

Deliberately naive, and the naivety is the experiment: this is precisely what a reader who stops at "a vote fraction threshold of 0.8" would compute.

3. What our FFL workflow found

Both sides are read from the same file — one applies the documented rule, one reads the published flags — so any difference is provably the rule, not the data. No tolerance and no normalisation: these are flags, so the comparison is exact.

verdict   : DIFFER at level `keys`
expected  : flags-as-published.csv         (667,944 records)
actual    : flags-from-documented-rule.csv (667,944 records)
differing : 89,332
normalised by : (nothing — compared as-is)

89,332 galaxies — 13.4% — are classified differently. The verdict sits at keys: every galaxy is present on both sides, so nothing was lost or filtered. The two artifacts describe exactly the same population and disagree about it.

PublishedThe documented rule saysGalaxies
SPIRALUNCERTAIN42,922
UNCERTAINELLIPTICAL28,182
UNCERTAINSPIRAL13,628
ELLIPTICALUNCERTAIN4,435
SPIRALELLIPTICAL165
The practical consequence. The published catalogue contains 190,225 spirals. Thresholding the published debiased column drops 42,922 of them — 22.6% of every spiral in the catalogue — while promoting 41,810 galaxies out of UNCERTAIN that the catalogue does not classify. A researcher who builds a spiral sample the obvious way is not working with a slightly noisier version of the Galaxy Zoo sample. They are working with a materially different one, and nothing in their pipeline would tell them.

165 galaxies change morphological class outright — published SPIRAL, rule says ELLIPTICAL.

4. How our workflow compares to the published work

This study does not evaluate Galaxy Zoo's classifications and could not: the volunteer votes, the redshift-dependent bias model and the validation are the scientific work, and none of it is reproduced here. The flags are the more careful artifact and the catalogue is right to publish them.

What the workflow measures is the distance between a published result and its own one-line summary — how far a documented subtlety moves a sample when a reader does not follow it through. The note names its own victim: "users who do not want to get into the details too much".

Why this needed no tolerance

The companion NOAA study spent considerable effort on choosing a tolerance, and got it wrong the first time. Here there is nothing to choose: flags are categorical, so the comparison is exact and the verdict cannot be an artifact of a threshold. That is worth noticing when designing a reproduction — where you can arrange to compare categories rather than magnitudes, do.

5. Reproducing this

fw ffl run --primary examples/repro-galaxyzoo/gz1_morphology_repro.ffl \
           --library facetwork/ffl/file.ffl \
           --workflow repro.galaxyzoo.ReproduceMorphologyFlags

The catalogue is 20 MB gzipped, 667,944 rows. Both derivations are FFL script blocks bound to fw.file.FileOps — no handler and no domain package. The comparison indexes 667,944 keys.

6. Limitations

Generated by Facetwork workflow repro.galaxyzoo.ReproduceMorphologyFlags · view FFL · source repo