P-pop is a Python tool for generating synthetic planet populations. A brief documentation can be found in P-pop/Documentation.pdf.
Start by cloning the Git repository:
git clone https://github.com/kammerje/P-pop.git
It is highly recommended that you create a unique Conda environment to hold all of the P-pop dependencies:
conda create -n p-pop python=3.9 conda activate p-pop
With the Conda environment created, move to the cloned repository and install the dependencies and P-pop itself:
cd where/you/saved/the/git/repo pip install -r requirements.txt pip install -e .
You should now be able to run P-pop:
python P-pop/P-pop.py
This will simulate an example planet population called TestPlanetPopulation.txt. You can then run the script P-pop/TestPlanetPopulation.py as an example of how to read in and work with a P-pop planet population:
python P-pop/TestPlanetPopulation.py
To customize your generated exoplanet population, adapt the script P-pop/P-pop.py according to your wishes. Below you can find a list of the provided star catalogs, planet distributions, and parameter models.
Available star catalogs:
alphaCenA: From Crossfield (2013), but using only the star alpha Cen A from that catalog. Serves as an example for how to select custom subsets of any of the provided star catalogs.CrossfieldBrightSample: From Crossfield (2013).ExoCat1: From Turnbull (2015).HPIC_LTC4_combined: Custom combination of HPIC and LTC4.HPIC: From Tuchow et al. (2024).LTC2: LIFE Target Catalog version 2.LTC3: LIFE Target Catalog version 3 from Quanz et al. (2022).LTC4: LIFE Target Catalog version 4 from Menti et al. (2024).Sun10pc: The Sun located at a distance of 10 pc.
Available planet distributions:
Bergsten2022: From Bergsten et al. (2022).Bryson2021Model1Hab2High: From Bryson et al. (2021). Requires unpublished parameter posterior file. Contact Steve Bryson directly to obtain it.Bryson2021Model1Hab2Low: From Bryson et al. (2021). Requires unpublished parameter posterior file. Contact Steve Bryson directly to obtain it.Burke2015: From Burke et al. (2015).Dressing2015: From Dressing et al. (2015).Dressing2015Extrap: From Dressing et al. (2015). Extrapolated out to orbital periods of 400 days.EarthTwin: Simulate an Earth twin (1 Earth radius, 1 Earth insolation) around every star.Fernandes2019Symm: From Fernandes et al. (2019).Fressin2013: From Fressin et al. (2013).HabitableNominal: Simulate a nominal population of habitable zone planets with 0.3 planets/star for AFGK-stars and 0.5 planets/star for M-dwarfs based on a log-normal distribution of planet radius from 0.5-1.5 Earth radii and of planet insolation from 0.35-1.75 Earth insolations.HabitablePessimistic: Simulate a pessimistic population of habitable zone planets with 0.15 planets/star for AFGK-stars and 0.25 planets/star for M-dwarfs based on a log-normal distribution of planet radius from 0.5-1.5 Earth radii and of planet insolation from 0.35-1.75 Earth insolations.Kaminski2025: From Kaminski et al. (2025).Kaminski2025ExtrapLin: From Kaminski et al. (2025). Extrapolated linearly in log-space out to orbital periods of 1000 days and uniformly in log-space down to masses of 0.1 Earth masses.Kaminski2025ExtrapMean: From Kaminski et al. (2025). Extrapolated uniformly in log-space out to orbital periods of 1000 days and uniformly in log-space down to masses of 0.1 Earth masses.SAG13_rv: From Kopparapu et al. (2018). Different implementation using the continuous random variable class from SciPy. Experimental!SAG13: From Kopparapu et al. (2018).SAG13Extrap: From Kopparapu et al. (2018). Extrapolated out to orbital periods of 20000 days.Weiss2018: From Kopparapu et al. (2018), but ensuring the creation of peas-in-a-pod multi-planet systems according to Weiss et al. (2018).Weiss2018KDE: From Kopparapu et al. (2018), but ensuring the creation of peas-in-a-pod multi-planet systems according to Weiss et al. (2018). Different implementation using a kernel density estimation. Experimental!
Available eccentricity models:
Circular: Place all planets on circular orbits.
Available orbit models:
Quadrature: Place all planets at maximum orbital elongation.Random: Distribute planets randomly on the sphere.
Available mass models:
Chen2017: UseForecaster(Chen & Kipping 2017) to forecast planet masses from planet radii and vice versa.EarthMass: Assign a mass of 1 Earth mass to every planet.
Available albedo models:
Constant: Assign a constant Bond albedo of 0.4, geometric visible albedo of 0.3, and geometric mid-infrared albedo of 0.05 to every planet.EarthAlbedo: Assign a constant Bond albedo of 0.306, geometric visible albedo of 0.434, and geometric mid-infrared albedo of 0.05 to every planet.Uniform: Distribute the albedos uniformly with a Bond albedo in [0.0, 0.8), a geometric visible albedo in [0.0, 0.6), and a geometric mid-infrared albedo in [0.0, 0.1).
Available exozodi models:
Ertel2018: From Ertel et al. (2018).Ertel2020: From Ertel et al. (2020).Median: Assign an exozodi level of 3 zodi to every system.
Available stability models:
He2019: From He et al. (2019). Re-draw planets generated in multi-planet systems until mutually stable orbits are found. Note that this alters the original planet radius and orbital period distribution slightly. A summary plot showing the impact of this can be generated.
Available scaling models:
BinarySuppression: Suppress the planet occurrence rate around <50 au binaries to 30% of its nominal value according to Kraus et al. (2016).
