Repository navigation
Releases: loggger101/asteroid-belt-gradient
Release list
v2.6.3
The release the paper cites. It changes only how figures are drawn: results/summary.json is identical to v2.6.1's apart from the version. It reads the AsteroidCatalog release data-2026-09-29c (data contract 1.8.1).
It includes v2.6.2 (#15), which was merged but not released on its own.
Figures
-
Italic variables, as the paper sets them: semimajor axis
$a$ , diameter$D$ , absolute magnitude$H$ , sample size$n$ ,$P(\mathrm{C} \mid a)$ , KS$p$ , proper$e_\mathrm{P}$ and$\sin i_\mathrm{P}$ (#16). -
Upright label subscripts:
$H_\mathrm{c}$ ,$D_\mathrm{c}$ ,$T_\mathrm{eq}$ ,$p_\mathrm{V}$ ,$a_\mathrm{P}$ ,$i_\mathrm{P}$ (#15). -
Fig. 12: the legend moves below the plot, where the
$p_\mathrm{V} = 0.30$ line no longer crosses it. - Fig. 10: the Koronis and Nysa–Polana labels move clear of the 5:2 line and the axis.
- Figs. 2 and 11: no doubled parentheses in the legends. Fig. 8: the lower panel gives its diameter limits in km.
Figs. 1 and 7 are byte-identical to v2.6.1's.
Repo
- README: the release history is now a list under Releases, with stale figure numbers fixed, IPW named as in the paper, and "au" and American spelling.
- Version 2.6.3 in
__init__.pyandCITATION.cff.
Checks
- Real-input run:
summary.jsondiffers from v2.6.1's only insoftware.beltgradient. pytest: 31 passed.pytest -m slow: passed.- CI: 5/5 on #16.
v2.6.1
Earlier version of the analysis for Edwards (2026), "Constraints on the Origin of the Asteroid Belt's Compositional Gradient from Debiased Taxonomic Data", which cites v2.6.3. v2.6.3 changes only how figures are drawn (italic variables, Fig. 12's legend); its numbers are identical (see its notes).
Drawing changes only, from the paper's formatting audit:
| paper | file | change |
|---|---|---|
| Figs. 2, 4, 8, 11 | fig5_circularity.png, fig1_c_fraction_vs_a.png, fig7_crossover_fits.png, fig4_dark_fraction_albedo.png |
legend moved outside the axes, where no line crosses it |
| Fig. 9 | fig3_orbital_excitation.png |
KS p-values printed as in Table 5 (0.030, 0.0060) |
| Figs. 3, 7 | fig11_sample_flow.png, fig2_mass_by_zone.png |
"analyzed", "all classified bodies" |
| 11 figures | every figure with a distance axis | astronomical unit written "au" (AAS / IAU style) |
summary.json is identical to v2.6.0's apart from software.beltgradient; no random draw changes. fig0_completeness.png, fig9_robustness.png and fig12_albedo_by_group.png are byte-identical. The input is still AsteroidCatalog data-2026-09-29c (data contract 1.8.1).
v2.6.0
Earlier version of the analysis for Edwards (2026), "Constraints on the Origin of the Asteroid Belt's Compositional Gradient from Debiased Taxonomic Data", which cites v2.6.3. v2.6.1 and v2.6.3 change only how figures are drawn; their numbers are identical (see their notes).
Three new figures, drawn from computed results only:
| paper | file | shows |
|---|---|---|
| Fig. 1 | fig10_snow_line_track.png |
the snow line of Equation (1) along the 1 M☉ pre-main-sequence track of Baraffe et al. (2015), against the present belt and the debiased crossover. It first lies inside the belt's outer edge (3.3 AU) at 1.4 Myr and inside its inner edge (2.1 AU) at 5.3 Myr. |
| Fig. 3 | fig11_sample_flow.png |
how the four samples are built from the catalog release, with the number of bodies at each step |
| Fig. 12 | fig12_albedo_by_group.png |
the measured albedo of each taxonomic group: 84% of C-like and 13% of S-like bodies are darker than 0.10 |
The Baraffe et al. track (198 rows of the 1.000 M☉ table, log t ≤ 7.73) is stored in bhac15.py, with its source URL and the sha256 of the downloaded table.
summary.json. New blocks: snow_line_track, sample_sizes and albedo_by_group. Every other value, and all eleven figures of v2.5.0, are byte-identical. The input is still AsteroidCatalog data-2026-09-29c (data contract 1.8.1).
New API: figures.snow_line_track, sample_flow and albedo_by_group, bhac15.TRACK_1MSUN, and pipeline.albedo_by_group_numbers and snow_line_track_numbers.
v2.5.0
Earlier version of the analysis for Edwards (2026), "Constraints on the Origin of the Asteroid Belt's Compositional Gradient from Debiased Taxonomic Data", which cites v2.6.3. v2.6.0 adds three figures and the numbers behind them; everything here is unchanged in it (see its notes).
Figures at print size. Every figure is now drawn at the width it is printed: one column (3.31 in) or the full text width (7.02 in), at 300 dpi with 6–7 pt type, so its labels are legible on the page. Before, they were shrunk to about 4.5 pt. Other changes:
- Legends sit clear of the data, resonance names are on a top axis, and no figure has a title that repeats its caption.
- The stacked composition (Fig. 3) is drawn as the 0.1 AU bars it is computed on.
The figures draw the same random numbers in the same order as before, so no result changes.
Four new figures, drawn from computed results only:
| paper | file | shows |
|---|---|---|
| Fig. 4 | fig6_size_distance_map.png |
C/(S+C) of the family-collapsed, completeness-weighted sample in bins of semimajor axis and diameter |
| Fig. 6 | fig7_crossover_fits.png |
the fitted logistic transition of all four samples, with each a50 and its 16–84% interval |
| Fig. 8 | fig8_proper_elements.png |
the bodies of the orbit test over the density of all family members, main families named |
| Fig. 10 | fig9_robustness.png |
every per-zone carbonaceous fraction the paper reports, samples and checks together |
summary.json. The new size_distance_map block records the Fig. 4 cells and their counts. Every other value is identical to v2.4.0's apart from the version. The input is still AsteroidCatalog data-2026-09-29c (data contract 1.8.1).
New API: figures.size_distance_map, crossover_fits, proper_element_map and robustness_summary, gradient.size_distance_grid, and figures.COL_W / FULL_W. pipeline.FIGURE_FILES now maps each file to its paper figure number.
v2.4.0
Earlier version of the analysis for Edwards (2026), "Constraints on the Origin of the Asteroid Belt's Compositional Gradient from Debiased Taxonomic Data", which cites v2.6.3. v2.5.0 redraws every figure at its printed size and adds four; its numbers are identical apart from a new block for the size-distance map (see its notes).
New robustness test: the X complex split by albedo. X-types are left out of both carbonaceous fractions, because without an albedo the X complex mixes enstatite-like, metallic and primitive bodies. By convention, an X-type with a measured albedo is classed by it: a P below p_V = 0.10, an M from 0.10 to 0.30, and an E above 0.30 (Fornasier, Clark & Dotto 2011, doi:10.1016/j.icarus.2011.04.022). The catalog's comp_class makes the same split. v2.4.0 applies it to classified X, Xc and the other X sub-classes; Xe and Xk are left alone because they already name their type. P-like bodies are counted with D/P, and they vote that way in their families. The results are in summary.json → x_split_by_albedo:
- 7,755 of the 13,763 classified X-types are split: 4,513 P, 2,960 M and 282 E.
- The broad fraction rises by at most 0.064.
- The narrow fraction C/(S+C) moves by at most 0.010, because 10 families change class.
- The P-like share of the split X-types is 0.38 in the inner belt and 0.54–0.66 beyond it.
Everything else is identical to v2.3.1. The new step runs after every bootstrap and draws no random numbers, so all seven figures and every other summary.json value are byte-identical. The input is still AsteroidCatalog data-2026-09-29c (data contract 1.8.1).
New API: catalog.split_x_by_albedo, gradient.zone_point, pipeline.x_split_by_albedo and config.X_SPLIT_ALBEDO.
v2.3.1
Earlier version of the analysis for Edwards (2026), "Constraints on the Origin of the Asteroid Belt's Compositional Gradient from Debiased Taxonomic Data", which cites v2.6.3. v2.4.0 adds the X-type split by albedo as a robustness test; every other output is identical (see its notes).
Figure fix. In Fig. 3 (fig1b_stacked_composition.png), the per-bin counts were drawn in the same strip as the resonance labels: "40" sat on "7:3", and "36" and "25" crowded "5:2" and "2:1". The counts now have their own row above the labels, and the figure's title no longer calls the area plot "bars".
Everything else is identical to v2.3.0: the input (AsteroidCatalog data-2026-09-29c, data contract 1.8.1), the method, summary.json apart from the version string, and the other six figures, byte for byte. The README names the author as L. M. Edwards.
No API changes.
v2.3.0
Earlier version of the analysis for Edwards (2026), "Constraints on the Origin of the Asteroid Belt's Compositional Gradient from Debiased Taxonomic Data", which cites v2.6.3. v2.3.1 differs only in Fig. 3, whose bin counts no longer collide with the resonance labels (see its notes).
New input. v2.3.0 analyses the AsteroidCatalog release data-2026-09-29c (1,568,882 bodies, data contract 1.8.1). belt-gradient fetch downloads it by tag and checks the sha256 its manifest lists. The method is unchanged from v2.2.0.
What the new release changes, checked body by body against data-2026-09-27:
- The three intervening catalog releases (contracts 1.7.0, 1.8.0, 1.8.1) add mineral-phase columns (
comp_phases,comp_phases_detailed) that this analysis does not read. None of the upstream code behind the 17 columns it does read changed. - 225 more main-belt bodies (1,443,536 → 1,443,761), all without a classification: they join the assumed-albedo tier (1,201,518 → 1,201,743). No body left the main belt.
- For every main-belt body in both releases, class, orbit, absolute magnitude, diameter, albedo and mass agree to one part in 10¹². 47 bodies have newly assigned names.
Results. Every zone fraction, crossover, orbit test, bootstrap interval, mass share and table is identical to v2.2.0. In summary.json only the counts above, the assumed tier's albedo bins and the assumed-label share (0.8323 → 0.8324) change. Two figures change, completeness and circularity; the other five are byte-identical.
Also since v2.2.0 (no effect on outputs): the fast tests run the whole pipeline and CLI on synthetic inputs, and CI re-derives the committed summary.json from the real inputs on every pull request (#6, #7). Several robustness fixes came with them, the main one being UTF-8 output from the CLI on Windows.
Headline results (unchanged, results/summary.json):
- S/C crossover: 2.84 AU raw, 2.41–2.47 AU once families are collapsed and the sample is limited by size. The 10–90% transition is 1.4–1.5 AU wide, wider than the belt.
- Inner-belt C/(S+C): 0.25 raw, 0.39–0.53 corrected.
- Orbit test: one of eight KS tests passes Bonferroni, outer-belt sin i (p = 0.0060). With the one-step family extension none does (smallest p = 0.011), so it is read as family halos.
No API changes.
v2.2.0
Earlier version of the analysis for Edwards (2026), "Constraints on the Origin of the Asteroid Belt's Compositional Gradient from Debiased Taxonomic Data", which cites v2.6.3. v2.3.0 differs only in its input, the catalog release data-2026-09-29c (225 more unclassified bodies); every table and fraction is identical (see its notes).
New input. v2.2.0 analyses the AsteroidCatalog release data-2026-09-27 (1,568,641 bodies, data contract 1.6.0). belt-gradient fetch downloads it by tag and checks the sha256 its manifest lists. The method is unchanged from v2.1.0.
What the new release changes, checked body by body against data-2026-09-26b:
- 751 more main-belt bodies (1,442,785 → 1,443,536), all without a classification: they join the assumed-albedo tier (1,200,767 → 1,201,518). No body left the main belt.
- For every main-belt body in both releases, class, orbit, absolute magnitude, diameter and albedo are identical.
- Data contract 1.6.0 changes the class densities behind estimated masses: an X-type with a measured albedo now takes the P, M or E density that its albedo indicates, one without takes their mixture, and the P and Q densities are lower. This moves the masses of 15,455 classified bodies, all P, Q or X types.
Results. Every zone fraction, crossover, orbit test, bootstrap interval, mass C-fraction and table is identical to v2.1.0. In summary.json:
- the measured share of classified mass: 0.9397 → 0.9514
- mass shares of classified mass: Ceres 0.3851 → 0.3899, Vesta 0.1063 → 0.1076, Pallas 0.0842 → 0.0853, Hygiea 0.0337 → 0.0341; the inner belt's S share of all classified mass 0.8908 → 0.8912
- the family fraction under the one-step extension: 0.2431 → 0.2429
Three figures change: completeness (the faint-end curves), mass by zone (the P- and X-type bars), and circularity (the legend's n).
Figure fix. The mass-by-zone figure puts its legend under the two panels. In the right panel it covered the outer zone's total-mass label.
Headline results (unchanged, results/summary.json):
- S/C crossover: 2.84 AU raw, 2.41–2.47 AU once families are collapsed and the sample is limited by size. The 10–90% transition is 1.4–1.5 AU wide, wider than the belt.
- Inner-belt C/(S+C): 0.25 raw, 0.39–0.53 corrected.
- Orbit test: one of eight KS tests passes Bonferroni, outer-belt sin i (p = 0.0060). With the one-step family extension none does (smallest p = 0.011), so it is read as family halos.
No API changes.
v2.1.0
Earlier version of the analysis for Edwards (2026), "Constraints on the Origin of the Asteroid Belt's Compositional Gradient from Debiased Taxonomic Data", which cites v2.6.3. v2.2.0 and v2.3.0 differ only in their inputs, the catalog releases data-2026-09-27 and data-2026-09-29c, and in the mass-by-zone figure's legend; every table and fraction is identical (see its notes).
New input. v2.1.0 analyses the AsteroidCatalog release data-2026-09-26b (1,567,859 bodies, data contract 1.5.0). belt-gradient fetch downloads it by tag and checks the sha256 its manifest lists. The method is unchanged from v2.0.0.
What the new release changes, checked body by body against data-2026-09-26:
-
185 more main-belt bodies (1,442,600 → 1,442,785), all without a classification: they join the assumed-albedo tier (1,200,582 → 1,200,767). No body left the main belt.
-
The 161,659 classified main-belt bodies are the same set, with identical classes, orbits, absolute magnitudes and albedos.
-
Data contract 1.5.0 corrects the class densities of Xe, Xk and Xc types, which moves the masses of 129 classified bodies.
Results. Every zone fraction, crossover, orbit test, bootstrap interval and table is identical to v2.0.0. In summary.json, four mass shares move by at most 0.0004: Ceres 0.3853 → 0.3851, Pallas 0.0843 → 0.0842, the measured share of classified mass 0.9401 → 0.9397, and the inner belt's S share of all classified mass 0.891 → 0.8908. Three figures change slightly: completeness (the faint-end curves), mass by zone (the X-type bars), and circularity (the legend's n).
Headline results (unchanged, results/summary.json):
-
S/C crossover: 2.84 AU raw, 2.41–2.47 AU once families are collapsed and the sample is limited by size. The 10–90% transition is 1.4–1.5 AU wide, wider than the belt.
-
Inner-belt C/(S+C): 0.25 raw, 0.39–0.53 corrected.
-
Orbit test: one of eight KS tests passes Bonferroni, outer-belt sin i (p = 0.0060). With the one-step family extension none does (smallest p = 0.011), so it is read as family halos.
No API changes.
v2.0.0
Earlier version of the analysis for Edwards (2026), "Constraints on the Origin of the Asteroid Belt's Compositional Gradient from Debiased Taxonomic Data", which cites v2.6.3. v2.1.0, v2.2.0 and v2.3.0 differ only in their inputs, the catalog releases data-2026-09-26b, data-2026-09-27 and data-2026-09-29c (and v2.2.0 in one figure legend); every table and fraction is identical (see their notes).
New input. v2.0.0 analyses the AsteroidCatalog release data-2026-09-26 (1,567,657 bodies, data contract 1.4.1). belt-gradient fetch downloads it by tag and checks the sha256 its manifest lists. The v1.x releases analysed the 2026-08-11 build (frozen here as data-v1), so every number differs slightly from theirs.
Headline results (results/summary.json):
-
S/C crossover: 2.84 AU raw, 2.41–2.47 AU once families are collapsed and the sample is limited by size. The 10–90% transition is 1.4–1.5 AU wide, wider than the belt.
-
Inner-belt C/(S+C): 0.25 raw, 0.39–0.53 corrected.
-
Orbit test: one of eight KS tests passes Bonferroni, outer-belt sin i (p = 0.0060). With the one-step family extension none does (smallest p = 0.011), so it is read as family halos.
Fixes, most found by recomputing every number independently of the package:
-
Classes Z (Mahlke et al. 2022) and F (Tholen 1984) were dropped from every fraction; they are now D/P and C-like.
-
The family extension now uses the HCM distance exactly as the Nesvorný bundle's
hcluster.ccomputes it. The earlier embedding scaled the semimajor-axis term by 0.42–0.61. -
Two 2024 families with unnumbered parents had no cutoff.
-
Identical member lists in the PDS bundle (529 Vibilia repeats 528 Leonidas; the 2024 lists of 1998 HD130 and 2001 PG20) now count once instead of being split between two IDs.
-
Tied majority votes in the family collapse fall back to the largest member's class rather than to pandas' ordering.
-
summary.jsonis written with LF on every platform, so a run reproduces it byte for byte.
New in summary.json: catalog.release; family_extension_toggled.orbit_tests_ks; and text_numbers entries for every number the paper quotes that was not traceable before (label-tier counts, assumed albedos by semimajor axis, Eos purity, Flora's two largest members, the innermost complete-sample counts).
Breaking changes, hence the major version:
-
Paths.snapshotis nowPaths.catalog. -
catalog.build_snapshotis removed. -
families.zappala_coordsis replaced byzappala_distanceandzappala_embedding.