Cosmic rays & artifacts
Typed 15,783
MOST OF WHAT IT FINDS ISN'T REAL.
A difference image is built by subtracting one photograph of the sky from another. When that subtraction is imperfect — and it is always imperfect — what survives is not an object but a residue: registration error, a particle striking the detector, a saturated star that refuses to cancel. In this project those outnumber the genuine astrophysical sources by more than twenty to one, and the page you are reading exists because a pipeline that hides its rejections cannot be trusted about its acceptances. The instrument below is invented. The failure modes are exactly ours.
NOCTIS ARRAY does not exist. These artifacts do — every number on this page is measured from this project's own database, and every failure described here is one it actually hit.
Four ways to get light in a difference image without anything having changed.
Each has a different physical cause and a different visual fingerprint, which is precisely why they can be separated at all — a classifier that only knew "real" and "not real" would be throwing away information it could be using.
Subtraction does not produce zero. It produces whatever the two frames disagreed about.
Cosmic raysA particle, not a photon.
A charged particle — a secondary from an air shower, or a decay product from the camera's own materials — passes through the silicon and dumps its energy directly into one or a few pixels. It never travelled through the telescope optics, so it carries no point-spread function: it is unnaturally sharp, often jagged or elongated along the particle's path, and it appears in exactly one exposure. That sharpness is the tell, and it is a strong one.
Registration residualsThe dipole.
If the science frame and the reference are misaligned by even a fraction of a pixel, a star's profile does not cancel — it leaves a positive lobe on one side and a negative lobe on the other. That black-and-white pair is the single most recognisable artefact in difference imaging, it appears at every bright star simultaneously when the alignment is off, and it is the reason sub-pixel registration is hard rather than routine.
Saturation and opticsWhere the detector gives up.
A star bright enough to fill its pixel wells has no true brightness measurement left to subtract, so it never cancels cleanly; charge bleeds along detector columns, and internal reflections put faint ghost images elsewhere in the frame. Chip edges, bad columns and the seams of a masked region all produce structured residuals too. None of these are mistakes — they are the instrument being an instrument.
The two commonest artifacts, next to the thing they are so often mistaken for:
Two independent gates, and one rule about the word "bogus".
Point sources and streaks fail in different ways, so they are judged by different models. What they share is a discipline about what a negative verdict is allowed to mean.
-
01
For point sources: a real/bogus convolutional network.
Each candidate is handed to a pretrained CNN as a three-channel stack — science, reference and difference cutouts of the same 63×63 pixels — and returns a single probability that it is real. Seeing all three channels at once is what lets it recognise a dipole as one misregistered star rather than two sources, and a cosmic ray as something with no counterpart in either input frame.
-
02
For streaks: a cascade whose second gate is the actual cosmic-ray filter.
The streak branch runs three gates in order. The first, real-versus-bogus, is deliberately permissive — cosmic rays pass it by design, because a particle track and an asteroid trail are both genuinely line-shaped. The second gate, keep-versus-ditch, is the one trained to throw the particle tracks out. Only what survives both reaches the short-versus-long decision that separates asteroids from satellites.
-
03
"Not run" is never rendered as "bogus".
This is the rule that runs through the whole codebase, and it is enforced in the database rather than left to the interface. A detection nothing has examined stores a null, not a negative, and the browsers render three literal states: the branch's real verdict, no catalogue match, or not run. The same three-state discipline governs the novelty filter — known, novel, unchecked — because an outage that reads as a negative is how a stalled server turns into a false claim.
Twenty-six rejections for every source that got a name.
The numbers, straight from this project's own results database. Of 666,811 detections across 503 processed ZTF exposures, the streak cascade routed 419,160 to bogus and 2,343 to cosmic ray. The point-source gate scored 16,776 stamps and passed 11,249. In total, only 15,783 detections carry any astrophysical type at all — about 2.4% of everything found.
That ratio is a design decision, not a failure. The detection stage runs deliberately inclusively, at three sigma over five connected pixels, because the costs are asymmetric: a false detection is cheap and gets filtered here, while a faint real source discarded at detection time is gone forever and no downstream model can recover it. Being over-inclusive early and honest later is the correct shape for this problem, and the large rejection count is what that choice looks like when you count it.
The most instructive artifact this project hit was one it created itself. Our own difference cutouts scored roughly 0.05 to 0.14 with the real/bogus network, while the same network scoring the same objects from ZTF's own published cutouts returned 0.68 to 0.96. The model was never the problem, the objects were never the problem — our stamp construction carried a sub-pixel registration dipole, and the network was correctly rejecting it. Four separate theories were tested and discarded before that was proven by swapping one channel at a time.
So the pipeline both filters artifacts and is measured by them. And it publishes them: the survey browser shows rejected detections greyed rather than hidden, with the deciding branch named, because "the cascade rejected this as not a real streak" is a narrower and more honest claim than "not a real object".
A filter you cannot inspect is indistinguishable from one that does nothing.
It would be easy, and much prettier, to export only the detections that passed. The reason this site does not is that the rejections are the only evidence the acceptances mean anything.
The blind huntFinding nothing is a result.
Swept across sixteen visits to genuinely unvetted sky, the pipeline produced 19 streak candidates, flagged 16 of them "novel" on a per-detection basis, and after linking returned zero tracks. Zero was the correct answer — those candidates sat at fixed positions recurring across time with implied motion far below any real mover. A detector that correctly finds nothing where there is nothing is what makes a positive result believable.
The naming ruleSay which branch decided.
In this database essentially every "bogus" verdict is the streak cascade saying not a real streak — a statement about shape, not about existence. Rendering that as an unqualified "bogus" would tell a reader "not a real object", a broader claim than any model made. So the browsers name the deciding branch in the badge, the drawer and the legend.
The standing commitment. This pipeline has made no discoveries, and everything it has found was already catalogued by someone else. The categories it reports are recoveries, candidates and verdicts — never discoveries — and the rejected 419,160 are part of the record for the same reason the recovered asteroid is: publishing only the half that worked would make both halves worthless.
Go see the rejections for yourself.
The array and the field notes above are invented; every count in the panel above is measured from this project's own results database. The browsers below show the same detections, rejections included, with the deciding branch named on each.
Back to the overview