Skip to content

Events

events

CloseApproach

A single close-approach (TCA) record between two bodies.

Produced by close-approach search routines that scan a pair of Ephemeris objects for local minima of the relative range and refine each candidate to its time of closest approach. The epoch is the refined TCA; distance is the minimum slant range at that epoch in the inertial frame shared by the two ephemerides.

Attributes:

Name Type Description
epoch ModifiedJulianDate

Time of closest approach.

primary_id str

Identifier of the primary body.

secondary_id str

Identifier of the secondary body.

distance float

Minimum slant range at TCA [km].

distance property

Minimum slant range at TCA [km].

epoch property

Time of closest approach.

primary_id property

Identifier of the primary body.

secondary_id property

Identifier of the secondary body.

CloseApproachReport

Collection of CloseApproach records gathered over a search range.

The search window is [start, end]; only approaches whose distance is less than or equal to distance_threshold are retained. Use get_probability_of_collision to evaluate Pc for a candidate encounter.

Attributes:

Name Type Description
start ModifiedJulianDate

Start of the search range.

end ModifiedJulianDate

End of the search range.

distance_threshold float

Maximum slant range retained as a close approach [km].

close_approaches list[CloseApproach]

Refined TCA records, one per qualifying minimum.

close_approaches property

Refined TCA records, ordered by epoch.

distance_threshold property

Maximum slant range retained as a close approach [km].

end property

End of the search range.

start property

Start of the search range.

__init__(start, end, distance_threshold)

Creates an empty CloseApproachReport over the given range.

Parameters:

Name Type Description Default
start ModifiedJulianDate

Start of the search range.

required
end ModifiedJulianDate

End of the search range.

required
distance_threshold float

Maximum slant range retained as a close approach [km].

required

get_monte_carlo_probability_of_collision(state_a, state_b, cov_a, cov_b, hbr_a, hbr_b, settings) staticmethod

Monte Carlo probability of collision with a confidence interval.

An independent, method-diverse cross-check of get_probability_of_collision (the analytic Foster Pc), sharing the same input contract: same-frame inertial states at the same epoch (±1 ms), >=6×6 CovarianceType.Inertial(_) covariances, and hard-body radii in meters. PcSampleMotion.TwoBody consumes the full 6×6 position+velocity blocks; PcSampleMotion.LinearRelative (the default), matching the Foster path it cross-checks, samples only the leading position 3×3 at the mean relative velocity. The estimate is deterministic: a fixed seed gives a bit-identical result across runs, thread counts, and native/WASM targets.

Operating-point guidance: Foster is the bulk screening path (~1–3 µs per pair). Reserve Monte Carlo for events above the screening threshold, choosing settings.samples so the expected hit count is

= ~500 (i.e. N ≈ 500 / Pc, capped at ~2e7); at lower Pc the default 1e6 samples resolve only ~100 hits (≈10% relative standard error).

Parameters:

Name Type Description Default
state_a CartesianState

Cartesian state of body A at TCA [position km, velocity km/s].

required
state_b CartesianState

Cartesian state of body B at TCA [position km, velocity km/s].

required
cov_a CovarianceMatrix

=6×6 inertial covariance of body A [km² family].

required
cov_b CovarianceMatrix

=6×6 inertial covariance of body B [km² family].

required
hbr_a float

Hard-body radius of body A [m].

required
hbr_b float

Hard-body radius of body B [m].

required
settings MonteCarloPcSettings

Monte Carlo configuration.

required

Returns:

Type Description
MonteCarloPcResult

Point estimate, hit/sample counts, and Wilson confidence interval.

Raises:

Type Description
ValueError

For the same input-contract violations as get_probability_of_collision, plus settings.samples < 1000, a confidence_level outside (0, 1), a non-positive half_window under PcSampleMotion.TwoBody, or a sampled covariance that is not positive-definite.

get_probability_of_collision(state_a, state_b, cov_a, cov_b, hbr_a, hbr_b) staticmethod

Probability of collision via the Foster–Estes 2D linear-encounter model.

Both states must be at the same TCA epoch in the same inertial reference frame (e.g. TEME). Each CovarianceMatrix must be at least 6×6 with CovarianceType.Inertial(_); only the leading 3×3 (position) block is used. The combined covariance is projected into the 2D encounter plane perpendicular to the relative velocity and the bivariate Gaussian is integrated over the hard-body disk by adaptive quadrature (matching NASA CARA's Pc2D_Foster).

Parameters:

Name Type Description Default
state_a CartesianState

Cartesian state of body A at TCA [position km, velocity km/s].

required
state_b CartesianState

Cartesian state of body B at TCA [position km, velocity km/s].

required
cov_a CovarianceMatrix

6×6 inertial covariance of body A [km², km²/s units in the position block].

required
cov_b CovarianceMatrix

6×6 inertial covariance of body B [km², km²/s units in the position block].

required
hbr_a float

Hard-body radius of body A [m].

required
hbr_b float

Hard-body radius of body B [m].

required

Returns:

Type Description
float

Probability of collision clamped to [0, 1] [dimensionless].

Raises:

Type Description
ValueError

If the input states do not share a reference frame, their epochs differ by more than 1 ms, either covariance is not Inertial, either covariance is smaller than 6×6, either hard-body radius is non-positive or non-finite, or the relative velocity magnitude is zero. A non-positive-definite covariance is remediated, not an error.

get_probability_of_collision_report(state_a, state_b, cov_a, cov_b, hbr_a, hbr_b) staticmethod

Probability of collision with a non-positive-definite remediation flag.

Same inputs and contract as get_probability_of_collision. A non-PD projected encounter-plane covariance is remediated (its eigenvalues floored) and reported via PcReport.remediated rather than raising, matching NASA CARA's Pc2D_Foster (whose non-PD case returns Pc 0).

Parameters:

Name Type Description Default
state_a CartesianState

Cartesian state of body A at TCA [position km, velocity km/s].

required
state_b CartesianState

Cartesian state of body B at TCA [position km, velocity km/s].

required
cov_a CovarianceMatrix

6×6 inertial covariance of body A [km² in the position block].

required
cov_b CovarianceMatrix

6×6 inertial covariance of body B [km² in the position block].

required
hbr_a float

Hard-body radius of body A [m].

required
hbr_b float

Hard-body radius of body B [m].

required

Returns:

Type Description
PcReport

PcReport with the probability and the remediated flag.

Raises:

Type Description
ValueError

Same conditions as get_probability_of_collision.

get_probability_of_collision_sensitivity(state_a, state_b, cov_a, cov_b, hbr_a, hbr_b, settings) staticmethod

Pc dilution / sensitivity sweep over a covariance scale factor.

Computes the Foster Pc as a function of a scale factor k, where the combined covariance is scaled C(k) = k·(C_A + C_B) — a variance scale (σ-scale √k). Same input contract as get_probability_of_collision.

Parameters:

Name Type Description Default
state_a CartesianState

Cartesian state of body A at TCA [position km, velocity km/s].

required
state_b CartesianState

Cartesian state of body B at TCA [position km, velocity km/s].

required
cov_a CovarianceMatrix

6×6 inertial covariance of body A [km² in the position block].

required
cov_b CovarianceMatrix

6×6 inertial covariance of body B [km² in the position block].

required
hbr_a float

Hard-body radius of body A [m].

required
hbr_b float

Hard-body radius of body B [m].

required
settings PcSensitivitySettings

Sweep configuration.

required

Returns:

Type Description
PcSensitivity

PcSensitivity with the curve and summary (nominal, max, dilution flag).

Raises:

Type Description
ValueError

Same input-contract violations as get_probability_of_collision, plus scale_min <= 0, scale_max <= scale_min, samples_per_decade < 4, or a scale range that excludes 1.0.

get_probability_of_collision_with_shape(state_a, state_b, cov_a, cov_b, hbr_a, hbr_b, shape) staticmethod

Probability of collision over an explicit hard-body shape.

Like get_probability_of_collision but integrates the encounter-plane Gaussian over the chosen hard-body region: HBRShape.Circle (the disk, identical to get_probability_of_collision), HBRShape.Square (a square of half-side HBR), or HBRShape.SquareEquivalentArea (a square of equal area to the disk, matching NASA CARA's Pc2D_Foster 'square' / 'squareEquArea' HBR types). Same input contract and non-PD remediation behavior as get_probability_of_collision.

Parameters:

Name Type Description Default
state_a CartesianState

Cartesian state of body A at TCA [position km, velocity km/s].

required
state_b CartesianState

Cartesian state of body B at TCA [position km, velocity km/s].

required
cov_a CovarianceMatrix

6×6 inertial covariance of body A [km² in the position block].

required
cov_b CovarianceMatrix

6×6 inertial covariance of body B [km² in the position block].

required
hbr_a float

Hard-body radius of body A [m].

required
hbr_b float

Hard-body radius of body B [m].

required
shape HBRShape

Hard-body region shape.

required

Returns:

Type Description
float

Probability of collision clamped to [0, 1] [dimensionless].

Raises:

Type Description
ValueError

Same conditions as get_probability_of_collision.

CoverageGrid

Per-location sensor-coverage scores ready for a globe or 2-D heatmap.

Three flat, equal-length, parallel arrays — one entry per candidate site, in the same order as the sites passed to the scorer (so a grid from GeodeticGrid renders directly). Render with latitudes/longitudes as coordinates and scores as the intensity channel.

The meaning of scores depends on the CoverageMetric used to build the grid.

Attributes:

Name Type Description
latitudes list[float]

Site latitudes [deg; -90..90].

longitudes list[float]

Site longitudes [deg; -180..180].

scores list[float]

Per-site score; units depend on the metric.

latitudes property

Site latitudes [deg; -90..90].

longitudes property

Site longitudes [deg; -180..180].

scores property

Per-site score; units depend on the metric.

__len__()

Returns the number of candidate sites in the grid.

FieldOfViewCandidate

A single satellite that falls within a sensor's field of view.

Reports the satellite identifier together with its topocentric direction relative to the sensor at the field-of-view epoch.

Attributes:

Name Type Description
satellite_id str

Identifier of the candidate satellite.

direction TopocentricElements

Topocentric direction (and optional range/rate fields) from the sensor to the satellite.

direction property

Topocentric direction from sensor to satellite.

satellite_id property

Identifier of the candidate satellite.

__init__(satellite_id, direction)

Creates a FieldOfViewCandidate.

Parameters:

Name Type Description Default
satellite_id str

Identifier of the candidate satellite.

required
direction TopocentricElements

Topocentric direction from sensor to satellite.

required

FieldOfViewReport

Snapshot of all satellites within a sensor's conical field of view at one epoch.

The sensor is described by an inertial position, a topocentric pointing direction, and a half-angle fov_angle. candidates lists every satellite whose line-of-sight makes an angle no greater than fov_angle with the sensor pointing direction at epoch.

Attributes:

Name Type Description
epoch ModifiedJulianDate

Epoch at which the field-of-view scan was evaluated.

sensor_position CartesianVector

Sensor position [km; 3 components, reference_frame].

sensor_direction TopocentricElements

Sensor pointing direction (right-ascension/declination in the topocentric frame at the sensor location).

fov_angle float

Field-of-view half-angle [rad; 0..π/2].

candidates list[FieldOfViewCandidate]

Satellites whose line-of-sight falls within fov_angle of sensor_direction.

reference_frame ReferenceFrame

Inertial frame of sensor_position.

candidates property

Satellites within fov_angle of sensor_direction.

epoch property

Epoch at which the field-of-view scan was evaluated.

fov_angle property

Field-of-view half-angle [rad; 0..π/2].

reference_frame property

Inertial frame of sensor_position.

sensor_direction property

Sensor pointing direction (topocentric).

sensor_position property

Sensor position [km; 3 components, in reference_frame].

__init__(epoch, sensor_position, sensor_direction, fov_angle, reference_frame)

Creates an empty FieldOfViewReport.

Parameters:

Name Type Description Default
epoch ModifiedJulianDate

Epoch at which the field-of-view scan was evaluated.

required
sensor_position CartesianVector

Sensor position [km; 3 components, reference_frame].

required
sensor_direction TopocentricElements

Sensor pointing direction.

required
fov_angle float

Field-of-view half-angle [rad; 0..π/2].

required
reference_frame ReferenceFrame

Inertial frame of sensor_position.

required

HorizonAccess

A single contiguous interval during which a target rises above an observer's local horizon at or above an elevation threshold.

The window is bracketed by ingress and egress HorizonState snapshots, each of which carries azimuth, elevation, and the observer state in ITRF at that boundary.

Attributes:

Name Type Description
target_id str

Identifier of the observed target.

target_name str | None

Optional human-readable target name.

observer_id str

Identifier of the observing site.

observer_name str | None

Optional human-readable observer name.

start HorizonState

Ingress horizon snapshot.

end HorizonState

Egress horizon snapshot.

end property

Egress HorizonState.

observer_id property

Identifier of the observing site.

observer_name property

Optional human-readable observer name.

start property

Ingress HorizonState.

target_id property

Identifier of the observed target.

target_name property

Optional human-readable target name.

__init__(target_id, observer_id, start, end, target_name=..., observer_name=...)

Creates a HorizonAccess window.

Parameters:

Name Type Description Default
target_id str

Identifier of the observed target.

required
observer_id str

Identifier of the observing site.

required
start HorizonState

Ingress horizon snapshot.

required
end HorizonState

Egress horizon snapshot.

required
target_name str | None

Optional human-readable target name.

...
observer_name str | None

Optional human-readable observer name.

...

HorizonAccessReport

Collection of HorizonAccess windows above an elevation gate.

A window is admitted only if the target stays at or above elevation_threshold for at least duration_threshold.

Attributes:

Name Type Description
accesses list[HorizonAccess]

Detected access windows ordered by ingress epoch.

elevation_threshold float

Minimum target elevation above the local horizon required for access [rad; -π/2..π/2].

start ModifiedJulianDate

Start of the search range.

end ModifiedJulianDate

End of the search range.

duration_threshold TimeSpan

Minimum window duration required for admission.

accesses property

Detected access windows ordered by ingress epoch.

duration_threshold property

Minimum window duration required for admission.

elevation_threshold property

Elevation gate above the local horizon [rad; -π/2..π/2].

end property

End of the search range.

start property

Start of the search range.

__init__(start, end, min_elevation, min_duration)

Creates an empty HorizonAccessReport over the given range.

Parameters:

Name Type Description Default
start ModifiedJulianDate

Start of the search range.

required
end ModifiedJulianDate

End of the search range.

required
min_elevation float

Minimum target elevation above the local horizon required for access [rad; -π/2..π/2].

required
min_duration TimeSpan

Minimum window duration required for admission.

required

ManeuverEvent

A single instantaneous maneuver inferred from a velocity discontinuity.

Built by maneuver-detection routines that compare the velocity of a satellite immediately before and after a candidate epoch. The reported delta_v is the post-minus-pre velocity vector in the same inertial frame as the underlying ephemeris.

Attributes:

Name Type Description
satellite_id str

Identifier of the maneuvering satellite.

epoch ModifiedJulianDate

Epoch of the inferred maneuver.

delta_v CartesianVector

Velocity change vector [m/s; 3 components].

delta_v property

Velocity change vector [m/s; 3 components, inertial frame].

epoch property

Epoch of the inferred maneuver.

satellite_id property

Identifier of the maneuvering satellite.

ManeuverReport

Collection of ManeuverEvent records gathered over a search range.

The detector flags candidates by close-approach proximity within distance_threshold and admits a candidate as a maneuver when the velocity discontinuity magnitude meets or exceeds velocity_threshold.

Attributes:

Name Type Description
start ModifiedJulianDate

Start of the search range.

end ModifiedJulianDate

End of the search range.

distance_threshold float

Slant-range gate used to seed maneuver candidates [km].

velocity_threshold float

Minimum delta-v magnitude required to admit a candidate as a maneuver [m/s].

maneuvers list[ManeuverEvent]

Detected maneuvers, ordered by epoch.

distance_threshold property

Slant-range gate used to seed maneuver candidates [km].

end property

End of the search range.

maneuvers property

Detected maneuvers, ordered by epoch.

start property

Start of the search range.

velocity_threshold property

Minimum delta-v magnitude required to admit a maneuver [m/s].

__init__(start, end, distance_threshold, velocity_threshold)

Creates an empty ManeuverReport over the given range.

Parameters:

Name Type Description Default
start ModifiedJulianDate

Start of the search range.

required
end ModifiedJulianDate

End of the search range.

required
distance_threshold float

Slant-range gate used to seed maneuver candidates [km].

required
velocity_threshold float

Minimum delta-v magnitude required to admit a candidate as a maneuver [m/s].

required

MonteCarloPcResult

Result of a Monte Carlo probability-of-collision estimate.

Attributes:

Name Type Description
probability float

Point estimate hits / samples [dimensionless; 0..1].

hits int

Sampled encounters whose minimum miss distance was <= the combined hard-body radius [count].

samples int

Number of samples drawn [count].

confidence_interval tuple[float, float]

Wilson score interval at confidence_level [(low, high); 0..1].

confidence_level float

Confidence level the interval was computed at [fraction].

motion PcSampleMotion

Motion model used.

seed int

Seed used (echoed for report provenance).

confidence_interval property

Wilson score interval at confidence_level [(low, high); 0..1].

confidence_level property

Confidence level the interval was computed at [fraction].

hits property

Sampled encounters scored as a hit [count].

motion property

Motion model used.

probability property

Point estimate hits / samples [dimensionless; 0..1].

samples property

Number of samples drawn [count].

seed property

Seed used (echoed for report provenance).

__repr__()

Returns MonteCarloPcResult(probability=…, hits=…, samples=…, confidence_interval=(…, …), motion=…).

MonteCarloPcSettings

Configuration for the Monte Carlo probability-of-collision estimator.

Same seed + same inputs produce a bit-identical result across runs, thread counts, and native/WASM targets.

Attributes:

Name Type Description
samples int

Number of sampled encounters [count; >= 1000].

seed int

PRNG seed.

motion PcSampleMotion

Relative-motion model.

half_window TimeSpan

Half-width of the encounter window around TCA, used only by PcSampleMotion.TwoBody [> 0 when TwoBody].

confidence_level float

Confidence level for the reported interval [fraction; (0, 1)].

confidence_level property writable

Confidence level for the reported interval [fraction; (0, 1)].

half_window property writable

Encounter-window half-width around TCA (TwoBody only).

motion property writable

Relative-motion model.

samples property writable

Number of sampled encounters [count; >= 1000].

seed property writable

PRNG seed.

__init__(samples=..., seed=..., motion=..., half_window=..., confidence_level=...)

Creates Monte Carlo settings with optional overrides of the defaults.

Parameters:

Name Type Description Default
samples int

Number of sampled encounters [count; >= 1000]. Defaults to 1_000_000.

...
seed int

PRNG seed. Defaults to the keplime fixed seed.

...
motion PcSampleMotion | None

Relative-motion model. Defaults to PcSampleMotion.LinearRelative.

...
half_window TimeSpan | None

Encounter-window half-width around TCA, used only by PcSampleMotion.TwoBody. Defaults to 900 s.

...
confidence_level float

Confidence level [fraction; (0, 1)]. Defaults to 0.95.

...

__repr__()

Returns MonteCarloPcSettings(samples=…, seed=…, motion=…, half_window_s=…, confidence_level=…).

PcReport

Foster Pc result with a non-positive-definite remediation flag.

Attributes:

Name Type Description
probability float

Probability of collision [dimensionless; 0..1].

remediated bool

True when the projected 2×2 encounter-plane covariance was not positive-definite and its eigenvalues were floored (CARA-style remediation) before the integral was evaluated.

probability property

Probability of collision [dimensionless; 0..1].

remediated property

True when the projected encounter-plane covariance was remediated.

__repr__()

Returns PcReport(probability=…, remediated=…).

PcSensitivity

Pc dilution / sensitivity report: the curve Pc(k) where the combined covariance is scaled C(k) = k·(C_A + C_B) (a variance scale, σ-scale √k).

Attributes:

Name Type Description
scales list[float]

Sampled scale factors, log-spaced over [scale_min, scale_max], always including exactly 1.0.

probabilities list[float]

Foster Pc at each scale [0..1].

nominal_probability float

Pc at k = 1 (the as-supplied covariances).

max_probability float

Maximum Pc over the swept range.

max_probability_scale float

Scale factor at which the maximum occurs.

dilution bool

True when max_probability_scale < 1.0 — Pc is decreasing in k at nominal, so a better-tracked (smaller-covariance) solution could report a larger Pc.

dilution property

True when the nominal covariance sits in the dilution region.

max_probability property

Maximum Pc over the swept range [dimensionless].

max_probability_scale property

Scale factor at which the maximum Pc occurs [dimensionless].

nominal_probability property

Pc at k = 1 (the as-supplied covariances) [dimensionless].

probabilities property

Foster Pc at each scale [0..1].

scales property

Sampled scale factors, log-spaced, always including exactly 1.0.

__repr__()

Returns PcSensitivity(nominal=…, max=… at scale=…, dilution=…).

PcSensitivitySettings

Configuration for the Pc-vs-covariance-scale dilution sweep.

k multiplies the combined covariance C(k) = k·(C_A + C_B) — a variance scale (σ-scale √k).

Attributes:

Name Type Description
scale_min float

Smallest covariance scale factor [dimensionless; > 0].

scale_max float

Largest covariance scale factor [dimensionless;

scale_min].

samples_per_decade int

Log-spaced curve samples per decade [count; >= 4].

samples_per_decade property writable

Log-spaced curve samples per decade [count; >= 4].

scale_max property writable

Largest covariance scale factor [dimensionless; > scale_min].

scale_min property writable

Smallest covariance scale factor [dimensionless; > 0].

__init__(scale_min=..., scale_max=..., samples_per_decade=...)

Creates sensitivity-sweep settings with optional overrides of the defaults.

Parameters:

Name Type Description Default
scale_min float

Smallest covariance scale factor [dimensionless; > 0]. Defaults to 0.1.

...
scale_max float

Largest covariance scale factor [dimensionless; > scale_min]. Defaults to 10.0.

...
samples_per_decade int

Log-spaced curve samples per decade [count; >= 4]. Defaults to 40.

...

__repr__()

Returns PcSensitivitySettings(scale_min=…, scale_max=…, samples_per_decade=…).

ProximityEvent

A single contiguous interval during which two bodies are within a distance threshold.

The start_epoch and end_epoch bracket the interval; the minimum and maximum slant ranges across the interval are reported in km.

Attributes:

Name Type Description
primary_id str

Identifier of the primary body.

secondary_id str

Identifier of the secondary body.

start_epoch ModifiedJulianDate

Ingress epoch (gate first holds).

end_epoch ModifiedJulianDate

Egress epoch (gate last holds).

minimum_distance float

Minimum slant range over the interval [km].

maximum_distance float

Maximum slant range over the interval [km].

end_epoch property

Egress epoch (the last epoch at which the gate holds).

maximum_distance property

Maximum slant range observed within the interval [km].

minimum_distance property

Minimum slant range observed within the interval [km].

primary_id property

Identifier of the primary body.

secondary_id property

Identifier of the secondary body.

start_epoch property

Ingress epoch (the first epoch at which the gate holds).

ProximityReport

Collection of ProximityEvent intervals gathered over a search range.

A proximity event is any contiguous span over which the relative slant range between two bodies stays at or below distance_threshold.

Attributes:

Name Type Description
start ModifiedJulianDate

Start of the search range.

end ModifiedJulianDate

End of the search range.

distance_threshold float

Slant-range gate for proximity [km].

events list[ProximityEvent]

Detected intervals, ordered by start_epoch.

distance_threshold property

Slant-range gate for proximity [km].

end property

End of the search range.

events property

Detected proximity intervals, ordered by start_epoch.

start property

Start of the search range.

__init__(start, end, distance_threshold)

Creates an empty ProximityReport over the given range.

Parameters:

Name Type Description Default
start ModifiedJulianDate

Start of the search range.

required
end ModifiedJulianDate

End of the search range.

required
distance_threshold float

Slant-range gate for proximity [km].

required

SensorAccess

A single contiguous interval during which a target satisfies all SensorConstraints gates from a sensor host.

Built by the *_sensor_access family on Ephemeris; see those methods for how the bore direction is derived per access mode.

Attributes:

Name Type Description
observer_id str

Identifier of the sensor host.

target_id str

Identifier of the body being observed.

start_epoch ModifiedJulianDate

Ingress epoch.

end_epoch ModifiedJulianDate

Egress epoch.

end_epoch property

Egress epoch.

observer_id property

Identifier of the sensor host.

start_epoch property

Ingress epoch.

target_id property

Identifier of the body being observed.

__init__(observer_id, target_id, start_epoch, end_epoch)

Creates a new SensorAccess.

Parameters:

Name Type Description Default
observer_id str

Identifier of the sensor host.

required
target_id str

Identifier of the body being observed.

required
start_epoch ModifiedJulianDate

Ingress epoch.

required
end_epoch ModifiedJulianDate

Egress epoch.

required

SensorAccessReport

Collection of SensorAccess windows produced for a single observer/target/constraints triple.

Attributes:

Name Type Description
start ModifiedJulianDate

Start of the requested search range.

end ModifiedJulianDate

End of the requested search range.

constraints SensorConstraints

Constraints used in evaluation.

accesses list[SensorAccess]

Access windows ordered by start_epoch.

accesses property

Access windows ordered by start_epoch.

constraints property

Constraints used in evaluation.

end property

End of the requested search range.

start property

Start of the requested search range.

__init__(start, end, constraints)

Creates an empty SensorAccessReport over the given range.

Parameters:

Name Type Description Default
start ModifiedJulianDate

Start of the requested search range.

required
end ModifiedJulianDate

End of the requested search range.

required
constraints SensorConstraints

Constraints applied during evaluation.

required

SensorPlacementReport

Result of optimizing where to place a list of sensors to observe a target.

Produced by optimize_sensor_locations on Satellite and Constellation. selected_sites is 1:1 with the input sensor list: selected_sites[i] is where sensor i should go (all equal in co-located mode, distinct in multisite mode). per_sensor_grids holds each sensor's own coverage heatmap.

Attributes:

Name Type Description
selected_sites list[GeodeticPosition]

Chosen site per sensor.

covered_satellite_count int

Distinct satellites covered.

covered_satellite_ids list[str]

Sorted covered-satellite ids.

per_sensor_grids list[CoverageGrid]

Per-sensor coverage heatmaps.

covered_satellite_count property

Number of distinct satellites covered by the chosen placement.

covered_satellite_ids property

Sorted, de-duplicated identifiers of the covered satellites.

per_sensor_grids property

Per-sensor coverage heatmap over all candidate sites, in input order.

selected_sites property

Chosen site per sensor, in input order.

UCTValidityReport

Validity assessment for an Uncorrelated Track (UCT) candidate.

Aggregates evidence used to classify a candidate UCT: any associations to existing tracks, possible cross-tags from proximity events, possible parent objects from close approaches, plus aggregate observability and validity verdicts.

Attributes:

Name Type Description
satellite_id str

Identifier of the candidate UCT.

associations list[ObservationAssociation]

Observation associations considered during assessment.

possible_cross_tags list[ProximityEvent]

Proximity events flagged as possible cross-tag sources.

possible_origins list[CloseApproach]

Close approaches flagged as possible origin events (e.g., breakup parents).

observability UCTObservability

Aggregate observability verdict for the candidate.

validity UCTValidity

Aggregate validity verdict for the candidate.

associations property

Observation associations considered during assessment.

observability property

Aggregate observability verdict for the candidate.

possible_cross_tags property

Proximity events flagged as possible cross-tag sources.

possible_origins property

Close approaches flagged as possible origin events.

satellite_id property

Identifier of the candidate UCT.

validity property

Aggregate validity verdict for the candidate.

__init__(satellite_id, associations, possible_cross_tags, possible_origins, observability, validity)

Creates a UCTValidityReport.

Parameters:

Name Type Description Default
satellite_id str

Identifier of the candidate UCT.

required
associations list[ObservationAssociation]

Observation associations considered during assessment.

required
possible_cross_tags list[ProximityEvent]

Proximity events flagged as possible cross-tag sources.

required
possible_origins list[CloseApproach]

Close approaches flagged as possible origin events.

required
observability UCTObservability

Aggregate observability verdict.

required
validity UCTValidity

Aggregate validity verdict.

required