# Stellar seismology scientific exercises The package starts from complete small Kepler/TESS lightcurves, published mode tables and licensed MESA structural members. It also includes self-authored known-truth acoustic and stochastic-mode examples. Every input has a SHA256; the FITS reader independently verifies every data unit’s checksum. The calculations run in ordinary Python without a stellar-evolution installation or the website. ## Run from a fresh directory Install the ordinary dependencies once, if they are not already available: ```sh python3 -m venv .venv .venv/bin/python -m pip install numpy==2.0.2 scipy==1.13.1 matplotlib==3.9.4 ``` Extract `stellar-seismology-science.zip`, enter its directory and use that Python executable. Once these dependencies are installed, no network access is needed: ```sh cd stellar-seismology-science python3 verify_inputs.py . PYTHONDONTWRITEBYTECODE=1 PYTHONWARNINGS=error::RuntimeWarning python3 science/replay.py --inputs input --out-dir rerun ``` If using the virtual environment above, replace `python3` by its absolute `.venv/bin/python` path after changing directories. The recorded environment is Python3.9.6, NumPy2.0.2, SciPy1.13.1, Matplotlib3.9.4. A `rerun/replay-receipt.json` appears only after all subprocesses finish successfully. This reader replay uses frozen GYRE frequency outputs; it does **not** rerun GYRE. See `tools/GYRE-rebuild.md` for the distinct, actually exercised installed-GYRE regeneration commands. ## What is computed - `independent-reference.json`: uniform/two-layer continuum roots versus 289 frozen browser-discretization cases, exact finite-exposure VanLoan transitions, independent NumPy spectrum of the saved record, and a one-frequency structural degeneracy. - `acoustic-feasibility.json`: independent consistent finite elements at 64/128/256 cells, mode nodes, weighted orthogonality, residuals and continuum reference. - `frequency-interval-calibration.json`:300 single-mode injections at a fixed true frequency. Known lifetime, variance and measurement noise are declared. Actual 95% interval coverage 99/89/95 is retained; it is not universal nominal 95% calibration. - `prior-predictive-calibration.json`: an independent full-covariance Gaussian likelihood versus the exposure-correlated Kalman likelihood, plus 300 new observations whose true frequencies are drawn from the stated uniform prior. Coverage is averaged over that prior and reported with binomial uncertainty. It does not validate a real multi-mode stellar posterior. - `mixed-mode-limits.json`: independent quadratic/eigenvalue references for a schematic two-mode near-degeneracy example and an audit of actual published TESS dipole periods. This does not reproduce stellar rotation kernels or infer core spin. - `real-observation-audit.json`: actual TESS/Kepler source masks, source-guided peak candidates, sector/SAP/PDC/baseline sensitivities, nominal frame-comb response and distinct structural/frequency-spacing definitions. - `native-structure-grid.json`: actual CGS sound-speed and travel-time integrals from all eight complete structures, checked against327history/index rows. These values are computed, not result constants. - The audit really computes blind background-relative spectral autocorrelations. Its strongest TESS lag is15.80microHz, with7.32/23.74alternatives; Kepler Q7–Q9 gives15.16microHz under this stated concatenated-time preprocessing. The earlier preflight15.18 used a different grid/background definition. - `real-multimode-fit.json`: our joint16-component point estimates from actual TESS photometry, conditional on the literature's4radial/8dipole/4quadrupole labels and frequency neighbourhoods. Positive amplitudes and per-sector local backgrounds are fitted for declared0.5/2/8day lifetimes. Competing starts, weak components and search-edge failures remain. The Fourier window expectation includes the actual per-sector quality masks and exact stationary-oscillator120second box covariance. Timestamp rounding is an explicit approximation: direct original-timestamp transforms change fitted frequencies by up to0.0198microHz. Oversampled-bin contrast is **not** treated as an independent-bin likelihood. - `window-spectrum-validation.json`: an independent dense covariance reference with numerical double exposure integrals, actual-window expectation checks and original-timestamp sensitivity. Maximum long-lifetime peak expectation interpolation difference is0.684%; the two actual power transforms change by0.81%/1.21%RMS. These are numerical/sampling sensitivities, not real measurement errors. - `multimode-injection-calibration.json`: three sets of96independent stationary-Gaussian known-truth records, generated by numerical exposure integration and circulant sampling. Saved measurement NPZs contain powers, frequency coordinates and seed IDs, not hidden true frequencies. The fit consumes saved powers. Independent48-record training/heldout halves report error quantiles and actual coverage at each fixed truth. The lowest heldout count is38/48; short lifetime mismatch and an unresolved dipole pair are retained. These do not validate universal95%intervals or a real stellar posterior. - `real-mode-grid-comparison.json`: our measured-frequency estimates compared with actual GYRE computations for the eight native structures. Full mixed-mode pressure/gravity nodes and inertias, one-to-one degree matching and the three closest alternative branches are retained. At assumed8day lifetime, adjacent267/269/271raw16-mode RMS distances are1.3815/0.2998/1.0270microHz; radial-calibrated two-term surface sensitivities give0.5236/0.2762/0.3849. The0.5day surface-adjusted ranking favours271 instead. These distances are not chi-squared probabilities. - `native-grid-injection-validation.json`:48known-native269frequency-pattern observations through actual masks and finite exposure. Raw comparison selects269in48/48; allowing the fitted surface terms selects269in45,267in1and271in2. This tests that specified frequency-pattern exercise; synthetic amplitudes are stipulated, not predictions of mode visibility. - `real-lightcurve-to-grid.png`: recomputed real spectrum, conditional echelle and adjacent-structure comparison from our produced fit outputs. The saved figure is not a substitute for any numerical producer. Each seeded measurement is saved separately from its injected frequency. The likelihood function takes saved observations and a declared candidate family, never the hidden frequency array. The four-mode display data are separate from the single-mode interval lesson. Original failed fixed-frequency coverage and its first receipt are in `expected/failures/`; they are intentionally preserved. The first prior-predictive run reused some fixed-case seed numbers across families. Its original output remains there too; the final prior-predictive exercise uses an explicitly disjoint seed namespace and gives coverage 97/94/98 per 100. No seed was selected for a desired coverage result. ## Reading real observations The TESS target is TIC13727 / HD128279, SPOC sectors 38 and 65, source releases 55 and 98. The two short sectors span about 760 calendar days but only 51.8 summed sector-span days. The discovery calculation averages independent sector periodograms. It does not assume a stable stellar phase over the two-year gap. The Kepler target is KIC3860179, Q7–Q9 DR25. Actual quality-filtered times and gaps are retained across 275.69 days. Its l0/l2 reference tables contain fitted frequencies; the dipole bin_points files contain approximate starting points. A source-guided local maximum is not a precise mode fit or a blind detection significance. HD128279 source mode frequencies are in the stellar emitted frame. The audit transforms them once to the received frame using the source Gaia radial velocity. Barycentric timestamps and stellar-velocity corrections are distinct operations. The source best-model uncorrected dipole column is not row-aligned with its corrected column, so a rowwise surface correction is not calculated. The selected MESA track has one initial mass/composition/mixing choice. Its327rows cover a source-model evolution interval; eight complete structural snapshots are supplied. Its history.delta_nu uses an explicitly enabled solar density scaling. The acoustic integral, newly computed full GYRE mode separations, observed peak differences and global fitted large spacing are different quantities. They are reported separately. Source-model age is a conditional model property; the840optimizer tracks and the authors’ age-uncertainty calculation are absent. `model-grid/` holds the actual newly computed mode tables, portable inlists and execution receipts. `model-refined/` holds the three adjacent independent numerical refinements. Reader replay reads these frozen frequency tables and recomputes its own photometric fits and comparisons. The optional installed-GYRE command genuinely regenerates them from complete structural inputs; its tool version, original download SHA256s, build flags and executed tests are recorded separately. It requires no MESA evolution installation. ## Limits and licenses The controllable radial acoustic model has constant density, positive sound speed and a pressure-release outer boundary. It contains no buoyancy or self-gravity. Its nonzero boundary-displacement proxy is not a stellar brightness calculation. Stochastic modes are second-order white-acceleration oscillators with exact joint state/exposure covariance. Actual mixed-mode analysis here is conditional: degree labels and narrow search supports come from published work; frequencies/strengths come from our saved-lightcurve fit, and pressure/gravity branch assignments come from our actual computed models. Many high-inertia g-dominated branches can be close in frequency. No stellar luminosity/visibility law or blind degree-discovery significance has been calibrated. Lifetime, background, sampling and surface choices remain material. A real precise frequency-error posterior, evolutionary-parameter uncertainty and core/envelope rotation inference are not delivered by this conditional chain or its single-mode lesson. See `SOURCE-NOTICES.txt`, `source-inputs.json` and the copied original Zenodo metadata. Data licenses remain with their sources. `LICENSE-code.txt` applies only to the newly written standalone Python. No GPL or CC-BY-SA teaching data are included, and no large research archive is required for replay.