# AC18: CoRoT-7 velocities and stellar activity

Download every linked material into one ordinary directory. No website checkout,
Engine, credentials or network data access is needed after installation.
Use Python 3.11 (recommended); the reference was executed with Python 3.9.6,
NumPy 2.0.2 and SciPy 1.13.1. Those pinned versions may lack wheels for newer
Python releases, so use the named interpreter rather than changing dependencies
silently. Authored analysis code is MIT. Original factual observations retain
their authorship and source terms; no CC/MIT grant is asserted for those rows.
No paper prose, figures, SOAP implementation or third-party library source is
redistributed.

## Install and check independent numerical targets

```sh
python3.11 -m venv .venv
. .venv/bin/activate
python -m pip install -r requirements.txt
python -W error check-kernel.py
python -W error check-importance.py
python -W error surface-reference.py --input surface-input.json --out rerun-surface.json
python -W error injection-experiments.py --data . --out rerun-injections.json
python -W error check-posterior.py --folder . --out rerun-checks.json
```

`--data` takes a DIRECTORY containing `harps2012-corot7.csv`, not the CSV path.
The kernel check uses unequal-time central differences, covariance positivity
and independent scalar posterior quadrature. Importance checks include a known
Gaussian and a separated three-mode target over three seeds with 131072 draws.
The surface reference uses polar area quadrature and SciPy's bracketed Kepler
root, independent of the browser's hemisphere quadrature/shared orbit kernel.
The injected values, split-instrument labels and surface are entirely synthetic;
only timestamps and quoted measurement uncertainties come from the real table.

## Main continuous-prior posterior and retained full covariance

```sh
python -W error replay-importance.py --data . --power 15 --seed 1808 --out rerun.json --nodes-out rerun-nodes.npz
python -W error replay-predictions.py --data . --posterior rerun.json --nodes rerun-nodes.npz --draws 2048 --out rerun-predictions.json
```

Allow minutes, depending on CPU and linear-algebra implementation. The first
command runs all three models on the same 71 RV and 71 calcium values. It makes
proper full-support mixture importance draws: prior weight 0.15, multiple Student
components and exact prior/proposal density ratios. Adaptation pilots are not
reused as final draws. Optimizer bounds affect proposal construction only; they
do not truncate the prior. A narrow optimizer mode is never substituted for
posterior mass. `power 15` means 32768 final draws per model, plus discarded pilots.
The initial prior-only 512-node result in `posterior-preliminary.json` FAILED
with effective counts near one; it is diagnostic history, not the final answer.

All nonlinear coordinates, likelihoods and weights in the NPZ are float64.
Conditional coefficient means and symmetric covariance LOWER triangles are
exported as float32 to bound archive size. Reconstruct the upper triangles by
symmetry. All inference, global means/covariances and JSON covariance outputs
were computed in float64. `check-posterior.py` recomputes totals from the archive;
132 selected conditional nodes per model (the 100 highest weights plus 32 spaced nodes) are also recomputed in double precision. Maximum conditional mean/covariance export differences were 2.37e-7 and 7.33e-6 in their named mixed units. The maximum observed global mean/covariance export differences are recorded in
`posterior-checks.json`, below 8e-10 and 2.6e-9 in their respective mixed units.
Units and coefficient order are named in each model result. Never interpret
those mixed-unit covariance entries as dimensionless correlations.

Prediction output retains the full 142-dimensional latent covariance. It is
conditional on these observations at these same times, NOT a held-out forecast.
Its 16th/84th percentiles are pointwise posterior intervals, not measurement errors,
frequentist coverage guarantees or false-positive probabilities. The generated
mean lines join retained times as visual guides only. No offline interpolation
onto altered browser settings is performed. Covariance eigenvalues are checked;
only tiny roundoff negatives above minus 1e-6 are clipped before drawing, with
actual minima saved. Coarse 512 versus fine 2048 mixture-draw differences are
saved separately.

## Independent seeds, refinement and genuine prior changes

```sh
python -W error replay-importance.py --data . --power 15 --seed 1908 --out rv-posterior-repeat.json
python -W error replay-importance.py --data . --model joint --power 16 --seed 2008 --out rv-posterior-refined.json
python -W error replay-importance.py --data . --model joint --power 15 --seed 2108 --rotation-prior wide --out rv-prior-wide.json
python -W error replay-importance.py --data . --model joint --power 15 --seed 2208 --rotation-prior photometry --out rv-prior-photometry.json
python -W error replay-importance.py --data . --model joint --power 15 --seed 2308 --planet-scale 3 --out rv-prior-amplitude.json
```

The default recurrence prior is uniform 18–35 days; `wide` is uniform 3–60 days;
`photometry` is an externally supplied normal 23.81±0.03 days, not information
estimated afresh from this 25-day campaign. Evolution scale is log-uniform 5–80 days,
periodic scale 0.15–2, normalized calcium response 0.1–3, RV jitter 0.3–8 m/s and
calcium jitter 0.05–2 scaled units. RV response coefficients have normal scales
10 m/s and 50 m/s·day. Fixed reference origins are 31180 m/s and minus 4.72 log RHK,
with calcium divided by 0.01. Proper offset scales are 100 m/s and 0.1 dex.
Planet sine/cosine scales 10 m/s imply a Rayleigh amplitude prior. The alternative
scale 3 changes that prior. The supplied short period is 0.85359165 days, second
period uniform 3.3–4.1 days, circular orbits and free phases. These restrictions
are part of the question; this is not a blind planet-count/frequency search.

## Source units and scope

Read `observed-provenance.json`, `provenance.json` and the hash manifest.
All 71 factual numerical Table A1 rows from Haywood et al. arXiv 1407.1044v1 are
preserved. Source archive 3827798 bytes and TeX member 117039 bytes are identified
by SHA-256; only the numeric rows/derived CSV are redistributed. Source velocities,
errors, FWHM and BIS are km/s, converted ONCE inside analysis where needed.
BJD_UTC stays UTC; no HJD/TDB ephemeris is mixed in. No extra barycentric correction
or unprovided exposure kernel is applied. Quoted RV/calcium errors have no supplied
cross-channel covariance. FWHM/BIS have no formal point errors and remain ancillary.

The three statistical models share all 142 values and their errors. Kepler-only
uses independent noise with channel jitter and no activity process; its calcium
channel has an offset and noise. Activity-only has no orbital coefficient.
Joint includes both circular signals plus the derivative latent process. The
active surface, projected-area proxy, line profile and photocenter in the Lab
are synthetic, not measured CoRoT-7 maps, calcium calibration or astrometry.
The source paper's photometry-conditioned FF-prime analysis, Alpha Cen B and
GJ 1002 studies are reading targets, not claimed replications.

The NPZ hash identifies frozen bytes; ZIP metadata, floating-point libraries and
optimizer trajectories need not regenerate byte-identical archives. Compare
normalization, full-covariance positivity, posterior percentile/refinement tolerances
and the independent target checks. A passing build or numerical check does not
certify the astrophysical model or eliminate prior sensitivity.
