Aegis predicts exoplanet radio emission from the cyclotron maser instability. It propagates uncertainty in stellar winds, planetary spin, and magnetic fields to predict emission frequencies and fluxes, then compares those distributions with telescope sensitivities.
The required packages are listed in environment.yml and requirements.txt.
AEGIS_PATH points to the Aegis checkout used by the analysis scripts. When it is unset, Aegis uses the directory containing repository_paths.py. The checkout's data/ and visuals/ directories are ignored by Git for local inputs and generated figures.
Start with a NASA Exoplanet Archive table containing the required system parameters. Save it as NASA[sample].csv, where [sample] is usually the download date in DDMM format. The scripts use that sample label to connect their inputs and outputs.
We publish predictions for five selected targets in a searchable radio catalog. The page sorts by target, maximum frequency, or predicted flux and filters by name and frequency.
Rebuild the site data from append_table.csv with this command.
python publish_radio_catalog.py --check-physicalityThe catalog is published at https://astromusers.github.io/aegis/ when the GitHub Pages environment is enabled for this repository.
A repository maintainer can enable GitHub Pages with GitHub Actions as the publishing source in Settings > Pages, then rerun the Publish Aegis radio catalog workflow. Generating the CSV and JSON alone does not enable hosting.
rotation_script.py samples exoplanet spin angular momenta from the Solar System distribution in rotation.csv. The resulting spin distribution enters the planetary magnetic-field and radio-emission calculations.
wind.py calculates the stellar-wind temperature and speed at each planet's orbit with an isothermal Parker wind model (Parker 1958). It reads the NASA Exoplanet Archive sample and writes stellar_wind_predictions_[sample].tsv for the radio-emission calculation.
exoplanet_predictions.py propagates uncertainties in NASA Exoplanet Archive measurements through the magnetic-field and radio-emission models with Monte Carlo sampling. It calculates predictive distributions of emission frequency and radio flux density for each target.
For a detected cyclotron-maser cutoff, magnetic_field_inference.py estimates the surface field from Aegis's cutoff-frequency relation and a Gaussian measurement likelihood. Install the dependencies in requirements.txt, then run the explicitly synthetic example with python examples/infer_magnetic_field.py. The fit uses a uniform magnetic-field prior and complements the forward Monte Carlo predictions with an observation-driven estimate.
The cutoff-inference notebook passes two
seeded synthetic measurements through infer_surface_field() and displays the
resulting PCAT posterior intervals and distributions. The notebook illustrates
likelihood and sampling. Its short chains are too brief to assess convergence.
The calculation requires the exoplanet archive table in comma-separated value format. We use 10,000 Monte Carlo samples. For a quicker exploratory run, lower the sample count. The script also writes df1.csv and all.npz for the population figures. These draws carry stated measurement uncertainties and the empirical Solar System spin distribution through a forward model. magnetic_field_inference.py estimates the surface field from an observed cutoff frequency.
plotter.py plots the Monte Carlo predictive emission-frequency and radio-flux distributions from df1.csv and all.npz. The nenufar.npz and sensitivities.csv inputs add the sensitivity limits of NenuFAR and other radio telescopes.
Install Bokeh to create an interactive target view with hover values, uncertainty bars, and telescope sensitivity curves. Save the returned figure as HTML using this code.
from bokeh.io import output_file, save
from plotter import df, scatter_plot_bokeh, x_err, y_err
output_file("visuals/aegis_radio_predictions_bokeh.html")
save(scatter_plot_bokeh(df, "both", y_err, x_err))The saved interactive prediction plot contains the same 1,111 pipeline-predicted target rows used by the static view. It is self-contained and can be opened offline. Plot uncertainties must have complete, real lower and upper vectors. Masked, complex, or malformed bounds raise an error before they can become misleading error bars.
outcome_dist_hists() and scatter_plot() use white backgrounds with black
axes by default. Pass typeplotback='dark' for black backgrounds with white
axes, including saved figures. They also inherit an enclosing TDpy
plot_style() theme without changing later plots.
parker_spiral.py plots the interplanetary magnetic-field component at the orbit of tau Boo b from taub_wind.npz. visibility.py maps maximum elevation and time above 20 degrees for the considered telescopes using obs_table.csv. radius_valley.py compares the planetary radii and predicted magnetic-field strengths in Output Tables/all.csv. sketch.py draws the magnetized-exoplanet geometry.
does_it_make_a_difference.py quantifies how Monte Carlo uncertainty propagation changes the predicted radio-emission distributions relative to calculations based only on nominal input values.
exoplanet_predictions.py writes radio flux densities and maximum emission frequencies for the magnetic, kinetic, and combined radiometric Bode-law predictions. Output Tables/all.csv contains the combined predictions and uncertainties for every exoplanet. Five additional tables divide the targets by predicted frequency. The text tables under Old Result Tables sort potentially visible candidates by name, frequency, and flux density.
extract.py writes obs_table.csv, append.py writes append_table.csv for the radio catalog, and visibility.py writes the manuscript table final-table.csv.
Known limitations are summarized in known_problems.md.
The development of aegis has been supported by the McDonnell Center for Space Sciences at Washington University in St. Louis.
