Skip to content

Tailoring the Earthlike Planet Class

Several plot families single out the "Earthlike" planet class and give it a dedicated count, label, or title. Both the numerical definition of the class * and what it is called* are set per scenario, in config-reduce.json, under the earthlike key.

The class is used for more than labeling. RpLBins.is_earthlike() decides which planets are counted in the exo-Earth tallies during reduction, so changing the geometry changes the counts, not just the captions.

Where the file goes

config-reduce.json is read from the scenario directory. If it is not there, exactly one level up is tried, and only if that parent is a .fam or .exp directory. There is no further walk up the directory tree.

That one level of inheritance lets a family set the class once for all its members. A scenario's own file does not merge with its parent's -- the first file found wins entirely, so a scenario that overrides a family must restate everything it wants.

The plots announce which file they used, once per run:


    rad_sma_common.py: Loaded reduction config: sims/MyFam.fam/config-reduce.json

Planet-property Bounds

Five attributes place the class in the radius / luminosity-scaled-SMA plane. The defaults describe the historical Earthlike class:

Attribute Default Meaning
Earth_Rp_lo 0.80 lower planet-radius bound, Earth radii
Earth_Rp_hi 1.40 upper planet-radius bound, Earth radii
Earth_SMA_lo 0.95 inner bound on luminosity-scaled SMA, AU
Earth_SMA_hi 1.67 outer bound on luminosity-scaled SMA, AU
Earth_Rp_scaled true slope the lower radius bound (see below)

Earth_Rp_scaled is the one with a surprise. Left true, the lower radius bound is not a constant: it is Earth_Rp_lo / sqrt(a), evaluated at each planet's scaled SMA. This is the SAG13 sense of "earthlike", and it matches the EXOSIMS SurveySimulation prototype. The region it cuts out is therefore not a rectangle -- its floor slopes down as SMA grows, which is why the outline drawn on the radius/SMA plots has the "Nevada" shape.

Set it false and the bounds become axis-parallel, giving a plain rectangle. That is the setting to use when repurposing the machinery for a class where the SAG13 scaling has no meaning.

Names

The same group carries the display names, which are not bin geometry and never affect a count:

Key Default Used for
name Earth singular noun, in titles
name_plural Earths count noun
name_adj Earthlike class-membership adjective
name_short Earth axis labels and other tight spots
symbol \oplus LaTeX subscript, as in eta

You can usually simply set name by hand. The rest are derived from it when omitted: the plural gains an s, the adjective gains -like unless the name already contains a space, the short name copies the name, and the symbol is built from the short name. Override a derived one only where the derivation reads badly.

An example

Redefining the class as an approximate Sub-Neptune population, with axis-parallel bounds:


{
  "earthlike": {
    "_comment": "Default _scaled is true. Change to false for axis-parallel boundaries.",
    "Earth_Rp_scaled": false,
    "Earth_Rp_lo": 1.80,
    "Earth_Rp_hi": 4.00,
    "Earth_SMA_lo": 0.10,
    "Earth_SMA_hi": 18.257,
    "name": "Sub-Neptune",
    "name_short": "Sub-Nep"
  }
}

Every plot that names the class now says "Sub-Neptune", the leftmost column of the radius/luminosity plots is labeled "Sub-Nep", and the class outline on the radius/SMA plots moves to the new bounds.

Keys beginning with _ are ignored, so _comment is the place to say why a scenario differs. In some files, _original_Earth_Rp_scaled is left in the file as a convention for recording the value you replaced.

The 5x3 bins

A second group, RpL_bins, sets the bin edges (the number of edges is one more than the number of bins):

Attribute Meaning
Rp_bins 6 planet-radius edges, giving 5 radius bins
L_bins 5x4 luminosity edges, giving 3 insolation bins per radius

These are checked on load and must keep that 5x3 shape; the plots and the reduction both assume it. Most scenarios leave them alone -- retuning the class bounds is common, moving the bin grid is not.

After changing it

Geometry changes require re-reducing. is_earthlike() runs during reduction, so the exo-Earth counts in reduce-earth.csv and the binned histograms in reduce-radlum.csv are already committed to the old class by the time any plot is drawn. Re-run make S=... reduce, then the graphics.

Name-only changes need just the graphics, since the names ride through reduce-info.csv to the plot titles.

A misspelled attribute in the config file is not silently dropped. Names that no group recognizes are collected and reported:


    rad_sma_common.py: Warning: Unused attribute(s) in .../config-reduce.json: Earth_Rp_low

Other reduction-configuration information in this file

config-reduce.json can carry other settings.

reduce_info_extras: Extracts named cells from the reduction code and places them into the ensemble-summary reduce-info.csv. Once there, the rest of the reduction code folds these extra values into the overall reduce-yield-plus.csv sunnary file.

graphics.mode_op: Requests a plot family's "extra" plots to be made by default when make gramphcs is run. (This is similar to running make graphics-extra, but more granular, because we can request extra plots from only one plot family.)

Both of these settings are separate from the "earthlike" class definition.