Differential Photometry Mode
Measure a changing sky.
Open an image sequence. CAst finds all known variables and exoplanet hosts in the field, intelligently chooses comparison stars for each one, and measures their light curves within minutes.
What differential photometry reveals
A light curve is a record of physical change.
A star can pulsate, rotate, eclipse a companion, or dim when a planet crosses it. Differential photometry measures that change against stable stars observed through the same atmosphere and optics.
Smart field-wide analysis
Every known variable. Measured automatically.
From solved field to complete light curves in minutes.
All known variables
Identified across the field automatically.
Smart comparisons
Chosen separately for each target.
Complete light curves
Generated for the whole field within minutes.
Automatic first. Scan Comps and fully manual apertures remain available when you need them. Differential Photometry is only one mode inside CAst.
From measurement to interpretation
See what the light curve means.
The analysis tools stay beside the data, so a classroom demonstration and a scientific review can follow the same reduction.
Period and phase
Compare harmonic and Box Least Squares searches, fold repeated cycles, and inspect whether an eclipse or transit remains coherent.
O-C timing
Mark minima or maxima, import historical extrema, pull supported AAVSO data, and compare observed event times with an ephemeris.
Field animation
Keep the target centered while a scanner moves over the light curve. Shared clouds and a true stellar event become easier to distinguish.
AAVSO-ready export
AAVSO-ready files in a few clicks.
Select the targets and choose File → Export Report. CAst writes the AAVSO Extended Format file and checks observer code, chart ID, STD/DIF, filter, airmass, and skipped rows before export.
- 1Select targets
- 2Export Report
- 3Review preflight
Free and open source
The workflow is accessible. The methods are inspectable.
CAst is free, open source, and under regular development. Beginners can follow the guided workflow; experienced observers can inspect settings, intermediate measurements, exclusions, formulas, and provenance instead of accepting an unexplained curve.
Start the complete tutorialComplete tutorial
From Open to an AAVSO-ready report.
Follow the operating sequence first. Settings and calculations are kept in their own references so the instructions never jump away from the task in front of you.
Start Differential Photometry mode
- Launch CAst.
- Open Mode.
- Choose Differential Photometry.
The window title changes to Citizen Astronomy - Differential Photometry. The main action at the top left is Open.
Differential Photometry measures a time series of one field. HR Diagram mode measures many stars in one source image.
Prepare a scientific image sequence
Use .fit, .fits, .xisf, .tif, .tiff, or a supported camera RAW format such as .cr2, .cr3, .nef, .arw, or .dng. JPG and PNG files are reported and ignored.
- Keep a usable observation time, exposure, and filter in the metadata.
- Use valid celestial WCS, or provide enough pointing and scale information for plate solving.
- Use calibrated light frames, or enable Calibration in the workflow.
- Keep each channel/filter internally consistent.
CAst warns before loading RAW files. If you continue, it decodes the color-camera data as linear 16-bit RGB and averages the demosaiced channels into one synthetic luminance plane. Bayer interpolation, camera color response, white balance, and star color can bias precise measurements. For scientific or AAVSO work, validate the result or preprocess the sequence into one calibrated, consistent channel first.
Click Open at the top left
- Click Open.
- In Differential Photometry Workflow, find 1. Folder.
- Click Folder and choose the image directory.
- Wait for the scan.
- If Loaded Results appears, select an object and click Use Selected Object.
Capture Folder, Pipeline, Progress, Generate, and the object-selection table.
File → Open Folder also scans a folder. The top-left Open path is better for a first run because it keeps the options and progress together. Do not use File → Open File for a time series.
Choose what Generate should do
- Calibration
- Apply bias, dark, and flat calibration before measurement.
- Star Alignment
- Use the alignment path for a sequence that should share pixel geometry.
- Plate-solving
- Required and kept on. CAst accepts, repairs, or solves WCS.
- Pull Periods
- Request catalog or literature periods.
- Calculate Periods
- Infer periods from the measured data.
- Create Measurements Table
- Build the detailed table now. Leave off for a faster first run and load it later.
Use designation filters to choose catalog families. Brightest Variables limits a dense field by percentage. Analyze Best is an alternative field-screening path for strong measurable targets; it is not another percentage filter.
If the image timestamps omit a timezone, set Image Timestamp Timezone before Generate.
Click Generate and follow the progress
Generate scans metadata, validates WCS, queries field catalogs, builds target-specific comparison pools, estimates seeing, measures the images, creates magnitude contexts, applies quality analysis, and builds light curves.
- Watch 3. Progress in the workflow.
- Read Work Log for WCS, catalog, calibration, and measurement details.
- While a run is active, Close becomes Terminate.
If Select Sources To Process appears
Filter variables, checks, exoplanets, or references. Use Process Default for the configured limit, Process All Visible after filtering, or Process Selected for highlighted rows.
Show designation counts, source types, and the three process buttons.
Read the result before changing it
After Generate, CAst normally selects Filter: Overview and Y: Standard Magnitude.
Results
- Source Results: targets and connected comparisons.
- File Results: frame-level processing and QA.
- Measurements: detailed rows; click Measure when loaded on demand.
- Run History: previous reductions.
Review surfaces
- Image, apertures, frame selector, Blink, and Center.
- Light curve, Fold, O-C, Filter, Fit Period, and Export.
- Notes, Detail, Work Log, and QA Details.
The gear beside Source Results opens Filter Source Results. There is no permanent name/type search row in the current layout.
Select a target and trace the curve to the image
- Click a target in Source Results.
- Confirm that the image centers or annotates the same source.
- Confirm that the light curve changes to that source.
- Move through frames or use Blink.
- Inspect a suspicious curve point beside its frame and measurement detail.
- Use CDS, SIMBAD, Gaia, or VSX from the selected row when available.
Use Display, Curves, or Invert to make the field easier to see. These are preview controls and do not change measurement pixels.
Review quality before removing points
Check saturation, SNR, centroid shift, comparison scatter, background, flux error, and the original frame. Use Overview to see whether comparisons and the check star contain the same trend.
Click Filter for Filtering Settings. Filtering changes the analysis/view; it does not delete the original measurement. Export Report preserves accepted and rejected rows separately.
An isolated point may be a bad frame, but it may also be ingress, egress, flare structure, or a real extremum. Inspect the image and comparison series first.
Use automatic comparisons or Scan Comps
CAst starts with a target-specific ensemble ranked mainly by magnitude similarity and then separation.
- Select a target and click Scan Comps.
- Use 1. Limits only when the field needs hard magnitude, color, or distance constraints.
- Mark promising stars in 2. Favourites.
- Inspect ensembles in 3. Combinations.
- Click Use Selected.
Build an independent manual reduction
- Turn on Aperture Editor.
- Double-click the target.
- Shift-click a comparison.
- Ctrl-click a check star.
- Drag to move an aperture; drag handles to resize aperture and annulus.
- Right-click for Delete or Change Name.
- Click Apply.
The editor starts independently of the selected automatic target. Enable Keep Comparison Stars in Settings → Light Curve only when you want to seed the manual set from the automatic ensemble.
Increase SNR without smearing the event
Click Increase SNR to combine adjacent measurements. CAst limits bins by variability type and period: 1.5% for sharp variables/transits, 5% for smooth variables, and 3% otherwise, with a default 600-second absolute cap.
The button changes to Reset SNR. Use it to restore the original cached series. In-bin outlier rejection is optional and off by default in Advanced settings.
Infer a period, fit it, and fold the curve
- Pull Period retrieves catalog/literature information where available.
- Calculate Period infers from the measured series.
- Harmonic Fit is the general default Infer method.
- Box Least Squares is intended for transit- and eclipse-like boxes.
- Fit modes include Polynomial, Periodic, Spline, and Auto.
Click Fold to compare repeated cycles at phase φ = ((t − t₀) / P) mod 1. A plausible period should align the event without creating the same structure in comparison/check stars.
Compare observed and calculated event times
- Click O-C.
- Enter T₀ (HJD), period in days, and Maximum or Minimum.
- Use Mark Extrema, Import..., or Pull AAVSO....
- Review the extrema log and export it when ready.
C(E) = T₀ + EPO − C = Tobserved − C(E)A slope suggests the adopted epoch/period is offset. Curvature can motivate a period-change analysis, but it is not by itself proof of a physical mechanism.
Search eligible field stars for variability
- Complete an ordinary Generate run.
- Click Discover.
- Use the full field or Shift-drag an ROI.
- Enable Try multiple comparison-star pools only when the extra search is useful.
- Click Start Discover.
Candidate score is triage, not a discovery claim. Check artifacts, catalogs, surveys, and additional nights. Label and Train Model build an optional local detectability classifier from your own labeled examples.
Prepare an AAVSO report
- Complete the one-time Science Export settings and observing site.
- Generate, then inspect Overview and Standard Magnitude.
- Select the target rows to export.
- Choose File → Export Report.
- Read AAVSO Preflight Review.
- Correct missing observer/chart metadata, filter O, missing airmass, unexpected DIF rows, or skipped points.
- Export, inspect the Extended Format file, revise when needed, then upload through AAVSO.
MTYPE=STD requires a valid standard-magnitude context; otherwise the row is DIF. TRANS=YES is written only for STD rows when you explicitly mark the data transformed. CAst does not calculate transformation coefficients.
Export plots, reports, and animations
- Theme-based keeps the current visual presentation.
- Scientific produces a publication-oriented plot.
- Animation animates the light curve.
- Target Field Animation combines an aligned/cropped star field with the curve and moving time marker.
- File → Export Report writes tables, manifests, AAVSO files, plots, and annotated images.
Show Combined, Star Field, Light Curve, composition controls, and Export Animation.
Settings reference
Settings are grouped here so the operating steps remain continuous.
General
Set the astrometry.net API key and timeout when remote solving is needed. Embedded WCS and local Gaia matching can still work without a key.
Differential Photometry
- Comparison Stars per Variable
- 5
- Frame Edge Margin
- 5%
- Saturation Filter
- On
- Adaptive aperture
- 1.6 × FWHM
- Annulus inner / outer
- 3.0 / 4.5 × FWHM
- Reference magnitude range
- Off unless enabled
Science Export
Set Observer Code, observer/organization, fallback AAVSO filter, Sequence/Chart ID, optional API token, Image Timestamp Timezone, Transformed Data, and Reduction Notes. Set site latitude, longitude, and elevation under Setup for ephemeris and computed airmass.
Advanced
WCS Sanity Check controls sample quality, approval, residual, isolation, coherent-shift, soft-accept, CCVALS repair, and Gaia magnitude limits. Increase SNR controls target SNR, period fractions, duration, frame count, weighting, and optional clipping. Change advanced values only with a repeatable reason from Work Log or the data.
Settings → Light Curve
Choose axes, fit mode, Infer method, phase behavior, grid, valid-only display, Keep Comparison Stars, equatorial grid, and recentering. These controls belong to review and presentation, so they are separate from the pipeline settings dialog.
Alignment and catalog cache
Choose Aligned only when frames share pixel geometry. Refresh or clear catalog cache when a field query is demonstrably stale or incomplete.
Troubleshooting and equivalent paths
No frames loaded
Confirm the supported extension, timestamps, metadata, and selected folder. JPG and PNG are intentionally excluded. A camera RAW file must be readable by LibRaw.
WCS failed
Check the celestial solution and Work Log. Add an astrometry.net key when needed. Tune WCS sanity only after understanding the failed probe.
The target is missing
Check designation filters and preview limits, or rerun Select Sources To Process with Process All Visible.
The curve follows comparison stars
Inspect Overview, clouds, tracking, gradients, and saturation. Use Scan Comps or create a manual ensemble with a check star.
Standard Magnitude is unavailable
Check filter naming and band-matched comparison catalog data. Differential Magnitude remains the relative measurement.
Which cache action?
Clear the current folder or selected object when possible. File → Clear All Cache is the application-wide reset and keeps settings.
Advanced reference
How the calculations work.
This is the implemented calculation chain. It follows the pixels through calibration, apertures, comparison ensembles, quality analysis, period search, discovery scoring, and AAVSO export.
Time and calibration
Naive observation timestamps use the configured timezone. The AAVSO timestamp is shifted to mid-exposure:
JDmid = JDstart + texp / (2 × 86400)Core differential times are UTC-derived JD. O-C imports may supply JD, HJD, or BJD; the reduction does not calculate a barycentric correction per frame.
Optional calibration applies:
Ical = (Ilight − Ibias − sIdark) / Iflat,norms = tlight / tdarkMasters are pixel medians. The corrected flat is normalized by its positive-pixel median; unsafe values become 1 and non-finite science pixels become 0.
WCS, FWHM, apertures, and flux
CAst accepts coherent embedded WCS, repairs CRVAL from CCVALS when appropriate, or races local Gaia matching against astrometry.net when configured.
A 15 × 15 cutout is background-clipped at 3σ. The stellar core is kept above max(0.03 × peak, 1.5 × background scatter). CAst interpolates the half-maximum radius and uses FWHM = 2r½; second moments give FWHM = 2.35482σ as fallback.
rap = 1.6 FWHMrin = 3.0 FWHMrout = 4.5 FWHMThe 3σ-clipped annulus median is subtracted from the aperture:
F = Saperture − B̃ Aapertureminst = −2.5 log10(F)The active uncertainty model
σF = √(|F| + nap σB² + nap² σB² / nsky)σm = (2.5 / ln 10)(σF / F)This source-plus-background propagation supplies current measurement errors and exported MERR. The codebase also contains tested full CCD, scintillation, and empirical-scatter routines, but they are not wired into PhotometryMeasurement or AAVSO MERR and are not claimed here as active.
Comparison ensemble and magnitude axes
Eligible comparisons are ranked per target by catalog-magnitude similarity, then distance. Stars within 30 arcsec of a known variable are excluded.
wi = 1 / σFi²Fref = Σ(wiFi) / ΣwiΔm = −2.5 log10(Ftarget / Fref)If useful flux errors are unavailable, reference flux falls back to an unweighted median.
σΔm = (2.5 / ln 10) √[(σFt / Ft)² + (σFr / Fr)²]ZPi = mcatalog,i − minst,imtarget = minst,target + ZPWhen every zero-point error is usable, ZP = Σ(ZPi / σi²) / Σ(1 / σi²). Otherwise CAst uses the arithmetic mean and, for multiple references, the standard error. Standard Magnitude seeks a band match from VSP/APASS and falls back toward Gaia when necessary.
Quality scoring and exclusions
SNR < 5: −0.18; SNR < 3: exclude.
Centroid shift > 2.5 px: −0.10; > 4 px: exclude.
Comparison scatter > 8%: −0.15; > 18%: exclude.
Global MAD or local Hampel z > 4.5: −0.28 and exclude.
Other soft flags: −0.05 each; score < 0.35: exclude.
Saturation or non-positive flux: hard exclusion.
σrobust = 1.4826 median(|x − median(x)|)z = |x − median(x)| / σrobustNear-saturation begins at 95% of the resolved threshold. Rejected points remain in the report with their reasons.
Period search, binning, and O-C
f(t) = a₀ + Σk[ak cos(2πkt/P) + bk sin(2πkt/P)]Harmonic Fit solves a Fourier series with up to six harmonics over 240 coarse logarithmic trial periods and three refinements. It tests 2P, 3P, and 4P and chooses by Bayesian Information Criterion. BLS uses a period/duration grid for box-shaped events.
The lower search bound is the larger of the configured minimum and twice median cadence. The upper bound is the smaller of the configured maximum and 95% of the time span. A result within 0.5% of either boundary is rejected.
nframes = ceil((SNRtarget / median SNR)²)C(E) = T₀ + EPO − C = Tobserved − C(E)Binning remains subject to period-fraction, duration, and frame-count caps. In-bin clipping is optional and off by default.
Discovery score
Discovery calculates RMS, MAD, 5th–95th percentile amplitude, reduced χ², von Neumann ratio, and Stetson J/K.
η = mean[(xi+1 − xi)²] / Var(x)δi = √(N / (N − 1)) (xi − mean(x)) / σiJ = mean[sign(δiδi+1) √|δiδi+1|]K = mean(|δ|) / √mean(δ²)The 0–100 score adds capped contributions: 30 min(log10χ²r / 1.4, 1), 20 min((MAD / σtyp) / 6, 1), 20 min((amplitude / σtyp) / 10, 1), 20 min(J / 4, 1) for positive J, and 10 min(max(0, 2 − η) / 1.5, 1). Stetson K is reported but is not a direct score term.
The optional classifier uses 160 trees with balanced-subsample class weighting after local labels exist.
AAVSO fields and limits
Airmass is read from the header or estimated geometrically as X = sec(z) from the observing site. The Extended Format row records mid-exposure JD, magnitude/error, filter, STD/DIF, transformation flag, comparison/check metadata, airmass, chart, and notes.
For a cataloged check star, CAst reports rcheck = mcheck,cal − mcheck,catalog and the series RMS of those residuals. This diagnoses accuracy but is not added to each point's MERR.
CAst does not perform PSF deblending, derive color-transformation coefficients, model second-order extinction, apply a per-frame barycentric correction, or add scintillation/full CCD terms to the active MERR. Crowded fields and sub-millimagnitude work may require a different reduction.
Start with the data you have
Open a sequence. Follow one target all the way through.
Generate the first result automatically, inspect every assumption, and export only after the image, comparisons, curve, and metadata agree.