Three fixes and one refusal, all found by working on the wide-field narrowband session that would not solve. The detection floor was a fixed 12 pixels, which quietly assumed a well sampled star. At 0.53 arcsec/px with 5.9 px seeing that is right; at 3.5 arcsec/px the stars are undersampled at 1.75 px FWHM and cover a handful of pixels each, so the floor discarded nearly every real star and kept blends and galaxies instead. It now scales with the measured seeing, and that session went from 305 usable detections to 600. Matching now happens over the frame's inscribed circle rather than a cone reaching its corners. On a 4 degree field the old cone covered 33 square degrees of sky against 16 of image, so half the catalogue was not in the picture at all. Where the header records a roll angle - and iTelescope's does - the orientation no longer has to be recovered from scratch. Rotation, scale and parity are applied directly and only the residual pointing error is searched, by histogramming every detection-to-catalogue offset and taking the peak. Asterism matching remains as the fallback for headers that say nothing about orientation. The refusal matters most. With catalogue depth slices added, the wide field produced a "solution" of 25 stars at 2.50 px residual, claiming a centre half a degree from the pointing. A genuine solve on that field matches hundreds of stars and refines to well under a pixel. Accepting it would have silently corrupted every position in the science catalogue, so a solution must now reach 40 stars AND 1.5 px or it is discarded and the session is reported as unsolved. A wrong WCS is worse than no WCS. NGC 2030 improves from 0.31 to 0.12 arcsec on 123 stars under the pointing-based match. NGC 2070 is honestly unsolved. |
||
|---|---|---|
| docs | ||
| itelescope | ||
| observing/eclipse-2026-menorca | ||
| pipeline | ||
| state | ||
| .gitignore | ||
| CLAUDE.md | ||
| README.md | ||
astrophotography
Everything to do with taking, processing and understanding astronomical images: the remote telescopes, the code that turns their frames into pictures and measurements, and the plans for observing in person.
Formed by merging the itelescope and astro-pipeline repositories, with the
history of both preserved.
Layout
| Directory | What it is |
|---|---|
| itelescope/ | The iTelescope.net remote telescope network: a review of every scope, a southern-target guide, the observing plans, and the points drain campaign |
| pipeline/ | The processing and analysis code. Calibration, stacking, plate solving, rendering and the science analyses |
| observing/ | Plans for observing in person. Currently the total solar eclipse of 12 August 2026 from Menorca |
| state/ | Project state under the Default Workflow: objective, current work, decisions, working notes |
| docs/ | The Default Workflow itself: branching, commits, documentation policy, cost control |
Start here
- Planning or reviewing a remote imaging run: itelescope/CAMPAIGN.md and itelescope/TELESCOPES.md
- Processing a session's data: pipeline/README.md
- What is happening right now: state/TODO.md
- Why something was done a particular way: state/DECISIONS.md
Where the image data lives
Not in this repository. A single calibrated frame is 61 MB and a session
runs to several gigabytes, so sessions stay on disk and the code finds them
through the ASTRO_SESSION environment variable:
set ASTRO_SESSION=...\NGC5128\20260721
python pipeline/stack.py
Each session directory carries its own METHODS.md describing what was done to
that data and what was found, written for a reader who was not there. The code
lives here; the pixels and the account of them live with the data.
Things learned the hard way
Recorded because each cost real time or real money, and because each is a requirement for anything built next rather than a curiosity:
- Measure whether a core is saturated before buying time to fix it. A foreground star 69 arcsec from Centaurus A's nucleus was mistaken for the galaxy, and a telescope booking was made to solve a problem that did not exist. Filter the stars out of the measurement first.
- Vet moving-object candidates in detector coordinates. Registration holds the sky still, so it drags sensor defects across the frame on perfectly straight, constant-rate tracks. Hot pixels are better-behaved asteroids than real asteroids. One cut took 141 confident spurious detections to zero.
- Never compare an aperture magnitude against a point-source catalogue without checking the source is a point. A resolved object looks exactly like a 2.8 magnitude outburst.
- Never fit a sky background to a field the target fills. A plane fitted around a large galaxy eats its halo, measured at -17.9 ADU/px. Fit the background and a source model together.
- A photographic ND filter is not a solar filter. It passes the infrared that carries the heat.