Skycruncher logo Skycruncher experiment, October 2026

I located Hubble's famous Cepheid in Andromeda in smart-telescope frames. Its pulse is not confirmed yet.

In 1923 Edwin Hubble found a star in the Andromeda “nebula” that brightened and faded every 31.4 days, and relabeled it “VAR!” on his plate. It was a Cepheid, a kind of star whose period tells you its true brightness, and it showed that Andromeda is a galaxy far outside our own. I wanted to know whether Seestar smart telescopes, with 30 mm and 50 mm lenses, can find that same star, called V1, in the crowded disk of M 31, and whether they can see it vary. Almost all of the frames come from the Seestar Collective, a community of Seestar owners who pool their M 31 data.

There are two answers. V1 is there. In 28.4 hours of frames (three separate sets that share no frame, all from the Collective except one night of mine), V1's average light comes out at 1.09 ± 0.19 f19, where f19 is the light of a G = 19 star. That agrees with what the Zwicky Transient Facility (ZTF) survey's light curve of V1 predicts for those nights, and it is brighter than all 2,185 empty patches of the disk (“blank spots”) measured the same way. Allowing for how often blank spots throw large values, that is about 3.5 sigma, roughly a 1-in-4,000 chance for an empty patch: a solid measurement at a known position, not a discovery. The pulse is not confirmed. Two tests I wrote down in advance did not see the 31.4-day swing above the noise, and a later look at every archive frame reaches about 3 sigma, leaning on two nights. A new test, written before its first frame, is running on a telescope of my own.

1.09 f19V1's average light, three frame sets combined (28.4 h); ZTF predicts 0.89 to 0.94
0 of 2,185blank disk spots as bright as V1, measured and combined the same way
≈ 3.5σabout a 1-in-4,000 chance that an empty patch of disk reads this bright
Passeda test written in advance on new mosaic frames (one fix made before the read): V1 beat all 2,308 blank spots
Not yetthe 31.4-day pulse: about 3σ across all archive frames, already looked at; 2.4σ without two nights
Result 1: located

V1's average light in every set of frames, against ZTF's prediction

V1 in one set, ± blank-spot error sets combined what ZTF predicts for those nights

Each row is one set of frames shared by the Seestar Collective (my own night is part of the single-pointing set), measured with one method, locked before it measured V1: a fit of each frame's own star shape at V1's Gaia position, the neighbors' light removed with a model of the scene built from Pan-STARRS1 and Hubble images, and each night calibrated on Gaia stars. Each error is the scatter of the same measurement at blank spots of the disk. The shaded box is what ZTF's light curve of V1 predicts for exactly those nights, lowered 10 to 15 % because my scene model keeps a little of V1's own light (an estimate, not a measurement). The sets share no frames. The two edge sets have V1 near the frame edge, so their blank spots are scored on whichever frames cover them; they read low, but within 0.7 of their errors of ZTF.

The combined read, against the same combination at every blank spot

blank disk spots Student-t fit to them bell curve of the same scatter V1

I add the sets with fixed weights (each set's inverse error squared) and do exactly the same sum at every blank spot. No blank spot comes out as bright as V1; the brightest sits at 4.5 scatters, and V1's excess is 1.23 times that spot's. But blank spots have a heavier tail than a bell curve: a bell curve predicts 0.07 spots beyond 4 scatters, and there are 4. A Student-t curve fits that tail (4 seen, 3.5 predicted), and under it the chance of a blank spot reaching V1 is 2.4 in 10,000, the same as 3.5 sigma on a bell curve. So the figure to quote is about 3.5 sigma, not 5.5. The 2,185 spots also overlap (only about 140 have fully separate fit windows), which is another reason not to read much into “0 of 2,185”. Adding the two edge sets lowers V1 to 5.0 scatters (about 3.3 sigma by the same fit), still above every blank spot. Frames shared by the Seestar Collective; aggregate numbers only.

Located.

0 of 2,185

No blank spot of the disk is as bright as V1 under the same combination, and V1's light is what ZTF predicts. About 3.5 sigma once the heavy tail is counted.

The evidence

Written in advance, and passed.

0 of 2,308

Before measuring V1 in a new batch of mosaic frames, I wrote down what it had to do: beat 99.9 % of blank spots and land near ZTF's flux. It did both.

How sure

The pulse: not confirmed.

8 % vs < 1 %

My first pulse test, written in advance, needed V1's swing to beat 99 % of blank spots. It beat 92 %. A later look at all frames reaches about 3 sigma, not enough to call it.

The tests

Why this is hard

V1 is a G 19 star (it swings between about V 18.5 and 19.8) about 2.5 million light-years away, sitting in the bright, lumpy disk of Andromeda, 15.7 arcminutes southwest of the core. A Seestar spreads each star over 5 to 15 arcseconds, depending on the model, the focus and the night. Inside that blur sit hundreds of fainter Andromeda stars and clumps that the Hubble Space Telescope resolves one by one. So the job is not to spot a star, it's to weigh a small amount of extra light at one exact position against a textured background. Each Seestar pixel covers 2.4 (S50) or 3.7 to 4.0 (S30 models) arcseconds.

The unit I use throughout is the light of a G = 19 star, which I write as f19. V1 averages about 1 f19, and its catalog swing is about ± 0.53 f19 around that.

The crowd around V1

This map is drawn from public catalogs, not from anyone's frames: every source Pan-STARRS1 lists within 40 arcseconds of V1 (dots), the brighter ones Gaia also measures (rings, with their G magnitudes), and V1 itself at the center. The gray glow is what those point sources alone would look like through each blur. The real disk adds smooth light and texture on top, which is what the scene model removes. Choose a blur to see why the seeing matters.

North up, east left, 40″ radius. Solid circle around V1: the blur's full width at half maximum. Dashed circle: the window my early fits used, 2.5 times that width. Hover for a source's magnitude. Sources: Gaia DR3 and the Pan-STARRS1 DR2 stack catalog; the blur widths are those of the Seestar Collective's deep stack, one good S50 night of theirs, and my own night.

How V1 was identified, and how sure I am

  1. Position fixed in advance. V1 is AAVSO VSX's M31 V0619, which is Gaia DR3 381169658804170880 (RA 00h 41m 27.31s, Dec +41° 10′ 10.5″). Hubble Space Telescope images of V1 from 2010 and 2011, which are public, put it on that Gaia position to 0.04″; between maximum and minimum it changed by 0.56 mag in those images, and it is the only star that changes in their difference. I measured at that position; I did not search for V1.
  2. One measuring method, locked before it measured V1. I tuned it on fake stars planted at blank spots and on real Gaia stars, with V1 hidden, then locked it (earlier methods, before the lock, had read V1 on the single-pointing frames). The yardstick is the scatter of the same measurement at about 2,400 blank spots of the disk with a similar background, so it includes the lumpy disk, not just photon noise. I count distances from the blank spots' median in units of that scatter (“scatters”).
  3. A test written in advance, on new frames. When mosaic frames covering V1 turned up (set A: 1,051 frames, 6.9 h, nights in 2025; a mosaic is a multi-panel capture, so V1 is in some panels only), I wrote the test down before measuring V1 in them: V1 had to beat at least 99.9 % of the blank spots and land within 2 errors of ZTF's predicted flux. A dry run on blank spots showed that the wide measuring grid I had first specified could not pass even for a real star, so before the read I amended the test to the locked method's own grid. The read: 1.06 ± 0.21 f19, 4.9 scatters above the blank spots' median, 0 of 2,308 blank spots as bright, 0.65 errors from ZTF's band. It passed both conditions. The fine print: those 2,308 spots overlap, and only about 140 have fully separate fit windows, so the better-than-1-in-1,000 result leans on the overlap; 137 of the 1,051 frames had gone into my first pulse test, which read V1's nightly flux but graded only its swing; and set A's nights are among those in the Collective's 245-hour stack, where V1 had already been seen.
  4. A fresh read. Set B (1,328 mosaic frames, 5.1 h) had only been used for a pulse fit. Its first average-light read, with the chain unchanged, is 1.12 ± 0.37 f19: 2.9 scatters above the blank spots' median, 5 of 2,185 blank spots as bright, and on ZTF's prediction (0.3 of its error above the 0.96 to 1.02 band). It is the one genuinely fresh average-light read on this page.
  5. Combined, as a summary. Together the three main sets put V1 above every blank spot (Result 1). I fixed the weights and which three sets count before reading set B, but I already knew V1's value in the other two, so the combination summarizes rather than tests. The sets share no frames, yet because the same scene model and sky feed every set, their blank-spot values move together, and combining gains less than it would for independent sets (see the lessons below).
  6. It matches ZTF. All five sets agree with ZTF's predicted flux for their nights (chi-square 1.3 for 3 sets) and with each other (0.08 for 2 degrees of freedom), if anything more closely than their errors suggest, since the errors carry the shared scene-model term.
  7. Earlier looks. Before any of this, the Collective's own deep stack (245 hours of many Seestars) already showed light at V1's position, and a later locked read of it gives 1.10 ± 0.17 f19, above all 2,121 of its blank spots. I keep it separate from the sets above: it overlaps their nights, so it isn't independent, its flux scale is less certain, and its blank-spot tail was never fitted.
More on the deep stack

In the deep stack, the light at V1 peaks 2.1″ from V1's Gaia position inside a 5.4″ blur, and 70 Gaia stars land on their catalog positions to 0.065″. In a blind look, 6 peaks above 4 sigma remain in the 4.4′ window (the four strongest beside bright stars); only one sits on any of the 15 cataloged variables there, V1, a 1-in-80 chance coincidence. Its flux scale carries about 7 % more uncertainty, and since its blank-spot tail was never fitted, its 6.5 times the scatter is not a sigma either.

V1 (orange) against each set's own blank spots (gray), in units of that set's scatter from the blank spots' median, with V1's rank among them. V1 is first in set A, the one with a test written in advance, and near the top of the single-pointing frames and set B; the short edge sets can't separate it from the crowd. Frames shared by the Seestar Collective; aggregate numbers only.

What would make it wrong. A clump of unresolved disk stars at exactly V1's spot that the scene model misses. The blank-spot test asks precisely how often that happens on this disk: in the three-set combination, never in 2,185 tries, and the heavy-tail fit puts it near 1 in 4,000. A flaw in the scene model at V1's position specifically would hit every set the same way, so the sets agreeing with each other does not rule it out; their agreement, set by set, with the flux ZTF predicts argues against it, since a clump would have to match V1's catalog brightness by chance. And the significance is modest: about 3.5 sigma.

What it says about the instrument. A single Seestar night measures V1 to about ± 1 f19, roughly its own light. My own 59-minute S30 Pro night gives 2.6 ± 1.0 f19 near V1's maximum, where ZTF predicts about 1.4 to 1.5: a hint, not a detection. Pooled over tens of hours, the same small telescopes reach V1. In the single-pointing set, the S50 frames alone give 0.94 ± 0.38 f19 from 3.3 hours and the S30 frames 1.25 ± 0.82 from 12.1 hours: the two agree, and an S50 hour is worth far more here.

Result 2: the pulse, not confirmed

V1's brightness folded on its 31.4-day period

one telescope-night, with error bar (fainter = noisier) fitted swing catalog-size swing (± 0.53 f19)

What I predicted, and why it was graded this way

The first hint came from 11 nightly stacks made on a single S50 by the Seestar app. Folded on the catalog period, V1 looked like it varied in step with the catalog, but with a swing about 4 to 6 times too big (the fit shown here, 3.7 times), and I had tuned my method on those same nights. So before reading any new frame, I wrote down a test on raw frames nobody had used: seven named nights, four near V1's maximum and three near its minimum by the catalog timing; one number, the size of a cosine swing at the catalog period and timing; and one bar: fewer than 1 % of 300 blank disk spots may show a swing as large as V1's, measured in exactly the same way. I also wrote down what I expected: a coin flip, with a swing near the catalog's.

That is roughly what came back. V1's swing came out at 0.81 ± 0.51 f19, close to the catalog's 0.53, with both bright-phase nights above the faint-phase ones. But 24 of 300 blank spots (8 %) swung as much, so the test says not confirmed. The bar was the point: a blank spot of the disk has no star varying with V1's period, so anything that beats V1 there is noise.

Why it fell short: only 5.2 of the 29.4 hours I had planned on actually had V1 in view. Most S50 frames on those nights were mosaic panels that missed V1, one telescope's frames labeled with the standard filter were really taken through a light-pollution filter (my rules dropped them), and three soft S30 stacks failed my sharpness cut. A second test, also written in advance, used every other night of single-pointing frames and a frame-by-frame forward model (29 telescope-nights, 9.7 h), and came back with a swing of the wrong sign, −1.00 ± 0.73 f19; 88 % of blank spots matched it. Its blank-spot spread (0.74 f19) was larger than the catalog swing itself, so it could not have confirmed V1 even if everything had gone right.

A later look at every archive frame

After the locked method and the mosaic frames came in, I fitted the swing across every archive frame that covers V1 (about 9,100 frames from the Seestar Collective), with the shape and timing of ZTF's light curve held fixed. The swing comes out 1.22 ± 0.35 times ZTF's, and 1 of 2,400 blank spots swings as much (p 0.0008, about 3.1 sigma; the overlapping spots make even that approximate). That is evidence that V1 pulses on schedule at about the expected size, not confirmation: it leans on two nights of one S50 right at maximum (without them, 0.93 ± 0.38, 2.4 sigma), and every frame in it had been looked at before, some of them several times.

The clean test is now running. A Seestar S50 that I operate at a dark-sky observatory has been shooting V1 since the night of 10 October 2026, under a test written down and approved before its first frame: the locked method on each night, ZTF's shape and timing fixed, and a bar against blank spots. When it reads out, the result goes on a new page that supersedes this one; this page stays as published.

Why the nights disagree

Neighbor light leaking into V1, against the night's blur

11 nightly stacks from one S50 my S30 Pro night straight-line fit to the 11

I rendered a sharp survey image of V1's surroundings with V1 removed through each night's own blur and ran my exact fit on it. Whatever V1 “measures” on that V1-free scene is neighbor light, the blend bias. It is positive on sharp nights (V1 reads too bright) and negative on soft ones (too faint), because V1 sits in a small dip of the disk's light and the fit window covers a different stretch of texture at each blur. On my 10.5″ night V1 read about 0.4 to 0.55 mag too faint; on a 6.9″ S50 night about 0.3 mag too bright. The deeper CFHT survey saturates on half the nearby G 16-18 stars, so its level fails the checks, but it reproduces the same trend (r = −0.97), which is why I trust the trend. This bias changes from night to night, so it adds noise to a light curve and shifts V1's mean brightness; it's one reason the nightly points scatter. The 11 nightly stacks are from the Seestar Collective; the blur of each is all this chart uses from them.

What it would take

tuning stacks (one S50) test 1 stacks test 2 stacks my night 245 h stack
Error on V1's flux per stack against hours with V1 in view (log axes), from my early pulse tests. Dashed: the square-root law that pure photon noise follows, drawn through the best stacks. Solid: the slope across stacks that the first test found, −0.25, drawn through 1 f19 at 1 hour. Shaded: the error a useful nightly point needs (± 0.15 mag at V1's mean, about 0.14 f19). The 245 h stack's error is of a different kind (fake stars on its total flux), so compare it only roughly. Hover for each stack. Stacks made from the Seestar Collective's frames, plus my own night.

In my first pulse test, longer stacks were barely better than short ones: error fell as hours to the −0.25, not −0.5. A later noise study found why, and it isn't correlated noise. Within any one telescope, the error does fall as the square root of the hours, and each night's error matches the photon noise of its sky. The shallow slope comes from mixing telescopes whose noise per hour differs up to eightfold: the long stacks were mostly S30 nights, the short ones S50 nights. So more hours do help, if they come from the right telescope under a dark sky.

What I think works: nights framed on V1 instead of mosaics, filters read from the files rather than folder names, nights near V1's maximum and minimum, and a test whose blank-spot spread is checked in advance to be smaller than the swing it is looking for. That is the test now running on my own S50 under a dark sky. Its forecast, made from blank spots and fake stars rather than from V1: with 4 hours a night it should need about 8 clear nights, and it passes about 96 % of the time if V1 pulses as ZTF says.

What I learned

Finding a star and measuring its change are different problems

Pooling every frame ever taken builds up V1's average light: phases cancel, but the light adds. Measuring the pulse needs each night to stand on its own, and a single Seestar night gives V1 to only about its own brightness (± 1 f19). Pooled frames answer the first question and barely touch the second.

A hint on tuning data is just a hint

The first fold looked convincing: only 0.3 to 2 % of blank spots beat it, peak timing within 0.01 cycle of the catalog. On fresh nights it shrank to the catalog's size and lost its significance. Setting the bar in advance kept me from claiming a detection the data don't support.

Combining sets that share a model is worth less than it looks

Three sets with no frame in common should have pushed V1 from 4.9 to about 6.6 blank-spot scatters. They reached 5.5, because the same scene model and sky go into every set and their blank-spot errors move together.

Check the test's power before running it

Test 2 was doomed from the start: its blank-spot spread was larger than the swing it was looking for. A five-minute check of the expected spread would have shown that. The test on fresh mosaic frames got that check, and its dry run caught a grid that could not have passed.

Folder names lie

In the community archive, S30 frames sat in S50 folders and light-pollution-filter frames sat in standard-filter folders. Reading each frame's header saved the test from mixing filters, but the plan's hours were built on the folder names, which is why the test came up more than five times short of the hours I planned.

A sharper template isn't always better

Hubble Space Telescope images resolve the crowd around V1, but at Seestar resolution a template built from them did no better than Pan-STARRS1 (they tie within 1 to 2 %). The deep CFHT survey was worse, because its bright stars saturate. Night by night the limit is photon noise; in the pooled read, the one scene model shared by every set sets part of the error.

Still open

The pulse, first of all: the test on my own S50 frames is what settles it, and its result gets its own page. The average light would be on firmer ground with blank-spot tests that don't share one scene model across sets, and with an independent check of how much of V1's light the scene model keeps (the 10 to 15 % allowance is an estimate). A night-by-night light curve is out of reach in the archive: per-night errors of about 1 f19 can't resolve a swing of about ± 0.5 to 0.7 f19 (catalog and ZTF sizes). If you own a Seestar and want to help, several telescopes framed on V1 on the same nights near its maximum and minimum is the plan.

What was fixed in advance

Everything else is measured: V1's fluxes, the blank-spot scatters and ranks, the Student-t fit and the swing sizes.

Status: exploratory. The location passed one test written in advance, on frames partly used before; the combination is a summary, since I already knew V1's value in two of its three sets; and the pulse is not confirmed.

Data and credits

Most of the frames behind these numbers were taken and shared by the Seestar Collective, a community of Seestar owners who pool their raw M 31 frames and a combined deep stack. Thank you: this page exists because of them. Every set in Result 1, the pulse tests and the blend study use their frames. My own data is one night with a Seestar S30 Pro on 18 September 2026 (351 frames of 10 s), which is part of the single-pointing set. This page shows numbers derived from the frames, such as fluxes, errors and ranks; it names no telescope unit or person, and gives telescope models only as S30 or S50. Public data: ESA Gaia DR3; Pan-STARRS1 DR2 (images and stack catalog, via MAST at STScI); CFHT MegaPipe stacks (via CADC); Hubble Space Telescope WFC3 images of V1 from the Hubble Heritage and AAVSO program (proposal 12326, via MAST); the Zwicky Transient Facility's public light curve of V1 (via IRSA), which sets the predicted fluxes; and V1's catalog period and timing from AAVSO VSX.