progenax.protocols¶
Auto-generated by scripts/build_api_reference.py from progenax source. Re-run after public-API changes; the script is idempotent.
Module path: progenax/protocols/
Public symbols: 9
Contents¶
protocols.SpatialProfile¶
protocol
SpatialProfile(*args, **kwargs)Protocol for spatial density profiles.
Implementations must provide position sampling and characteristic radius. Used by build_spatial_ic() for generic IC assembly.
Example implementations: - PlummerProfile: Plummer (1911) density - KingProfile: King (1966) models - EFFProfile: Elson-Fall-Freeman (1987)
Source: src/progenax/protocols.py#L14
protocols.VelocityDF¶
protocol
VelocityDF(*args, **kwargs)Protocol for velocity distribution functions.
Implementations must sample velocities given positions and masses. Enables composability: mix Plummer positions + King velocities.
Source: src/progenax/protocols.py#L55
protocols.IMFProtocol¶
protocol
IMFProtocol(*args, **kwargs)Protocol for Initial Mass Functions.
All IMF classes must implement these methods for consistent API and protocol-based composition (e.g., TruncatedIMF wrapping).
Attributes
| Parameter | Description |
|---|---|
m_min | Minimum mass in distribution [M_sun] |
m_max | Maximum mass in distribution [M_sun] |
Source: src/progenax/protocols.py#L87
protocols.PeriodDistribution¶
protocol
PeriodDistribution(*args, **kwargs)Protocol for binary orbital-period distributions (period in days).
Implementations expose the standard sample/pdf/cdf/ppf quartet.
Example implementations: - LogUniformPeriod (Öpik 1924) - LogNormalPeriod (Duquennoy & Mayor 1991) - SanaOBPeriod (Sana et al. 2012)
Source: src/progenax/protocols.py#L128
protocols.EccentricityDistribution¶
protocol
EccentricityDistribution(*args, **kwargs)Protocol for unconditional binary-eccentricity distributions.
Implementations expose the standard sample/pdf/cdf/ppf quartet.
Example implementations: - ThermalEccentricity (f(e) = 2e; Ambartsumian 1937 / Heggie 1975) - UniformEccentricity
Source: src/progenax/protocols.py#L161
protocols.ConditionalEccentricityDistribution¶
protocol
ConditionalEccentricityDistribution(*args, **kwargs)Protocol for period-CONDITIONAL eccentricity distributions, p(e | P).
Sampling takes (key, periods); n is implied by periods.shape. Distinct
from the unconditional :class:EccentricityDistribution (sample(key, n)).
Example implementations: - MoeEccentricity (period-dependent circular->thermal heuristic)
Source: src/progenax/protocols.py#L193
protocols.MassPeriodEccentricityDistribution¶
protocol
MassPeriodEccentricityDistribution(*args, **kwargs)Protocol for period- AND mass-conditional eccentricity distributions, p(e | P, M1).
Sampling takes (key, periods, masses).
Example implementations: - MoeEccentricity (Moe & Di Stefano 2017 e^η(logP, M1)) - LogisticThermalEccentricity (accepts masses but ignores them)
Source: src/progenax/protocols.py#L211
protocols.BinaryFractionModel¶
protocol
BinaryFractionModel(*args, **kwargs)Protocol for binary-fraction models — uniform across mass and environment.
probability(masses, radii=None) -> f_bin returns the per-star binary fraction.
Mass-based models (ConstantBinaryFraction, MassDependentBinaryFraction,
DifferentiableBinaryFraction) ignore radii; RadialBinaryFraction ignores
masses; CombinedBinaryFraction modulates one by the other.
Example implementations: - ConstantBinaryFraction, MassDependentBinaryFraction (Moe Table 13) - DifferentiableBinaryFraction - RadialBinaryFraction (phenomenological f_b(r)) - CombinedBinaryFraction (mass x radial)
Source: src/progenax/protocols.py#L233
protocols.CompanionModel¶
protocol
CompanionModel(*args, **kwargs)Protocol for the binary companion/orbit layer used by build_binary_cluster.
A single owner of the binary statistics: given primary masses, it decides
multiplicity (f_b -> is_binary) AND samples the companion properties
(q -> m2, P -> a, e, isotropic orientation), all keyed on the primary masses.
Returns (is_binary, CompanionElements).
Example implementations (progenax.binaries): - IndependentCompanions(binary_fraction, q_distribution, period_distribution, eccentricity_distribution) — versatile marginals. - MoeCompanions(q_min) — faithful Moe+2017 joint (P, q, e) with Moe’s own mass-dependent f_b; the same q sets m2 (self-consistent).
Source: src/progenax/protocols.py#L258