satsim.passive_rf package
Passive RF analytical simulation package.
- satsim.passive_rf.simulate(ssp: Dict[str, Any], output_dir: str = './') str
Validate, simulate, and write passive RF analytical observations.
- satsim.passive_rf.simulate_from_file(config_file: str, output_dir: str = './') str
Load, transform, and run a passive RF JSON or YAML configuration.
Submodules
satsim.passive_rf.config module
Passive RF document loading and semantic validation.
- satsim.passive_rf.config.load_estimator(ssp: Mapping[str, Any], receiver_ids: Sequence[str]) Tuple[EstimatorParams, Tuple[float, float, int, int]]
- satsim.passive_rf.config.load_receivers(ssp: Mapping[str, Any]) Tuple[Dict[str, ReceiverParams], Dict[str, Any]]
Build receiver parameters and standard SatSim observer objects.
- satsim.passive_rf.config.load_run_config(ssp: Mapping[str, Any]) PassiveRFRunConfig
- satsim.passive_rf.config.load_targets(ssp: Mapping[str, Any], default_time: Sequence[Any]) Tuple[Dict[int, TargetRFParams], Dict[int, Any]]
Load RF properties and propagated objects from the standard target list.
satsim.passive_rf.core module
Pure passive RF link-budget and measurement-uncertainty functions.
- satsim.passive_rf.core.combine_sensor_value(global_value: float, values_by_sensor: Mapping[str, float], sensor1: str, sensor2: str) float
- satsim.passive_rf.core.db_to_lin(x_db: float) float
- satsim.passive_rf.core.effective_snr_db(snr1_db: float, snr2_db: float) float
- satsim.passive_rf.core.fspl_db(frequency_hz: float, range_m: float) float
- satsim.passive_rf.core.lin_to_db(x: float) float
- satsim.passive_rf.core.measurement_uncertainties(target: TargetRFParams, estimator: EstimatorParams, sensor1: str, sensor2: str, processed_snr_db: float) Tuple[float, float]
- satsim.passive_rf.core.noise_power_dbw(bandwidth_hz: float, noise_figure_db: float, antenna_noise_temperature_k: float = 290.0) float
- satsim.passive_rf.core.processing_gain_db(bandwidth_hz: float, coherent_time_s: float) float
- satsim.passive_rf.core.receiver_snr_db(target: TargetRFParams, receiver: ReceiverParams, range_m: float) float
- satsim.passive_rf.core.tdoa_fdoa_uncertainties(bandwidth_hz: float, processed_snr_db: float, integration_time_s: float, use_rectangular_rms: bool = True) Tuple[float, float]
satsim.passive_rf.model module
Passive RF TDOA/FDOA measurement model.
- satsim.passive_rf.model.receiver_geometry(observer, target, epoch) ReceiverGeometry
Resolve geometric range, range rate, azimuth, and elevation via SatSim.
- satsim.passive_rf.model.simulate_measurement(target: TargetRFParams, receiver1: ReceiverParams, receiver2: ReceiverParams, estimator: EstimatorParams, epoch, rng: Random, geometry1: ReceiverGeometry, geometry2: ReceiverGeometry) Dict[str, Any]
Evaluate one resolved receiver-pair measurement.
Target and receiver states are evaluated geometrically at one common UTC reception time. File, network, wall-clock, and global RNG access remain outside this kernel.
- satsim.passive_rf.model.simulate_run_config(config: PassiveRFRunConfig, target_objects: Mapping[int, Any] | None = None, observer_objects: Mapping[str, Any] | None = None) List[Dict[str, Any]]
Run a validated native SatSim passive RF configuration.
- satsim.passive_rf.model.stable_measurement_seed(run_seed: int, request: ObservationRequest) int
Derive a stable seed, including duplicate occurrence identity.
satsim.passive_rf.simulator module
SatSim passive RF analytical simulator orchestration.
- satsim.passive_rf.simulator.simulate(ssp: Dict[str, Any], output_dir: str = './') str
Validate, simulate, and write passive RF analytical observations.
- satsim.passive_rf.simulator.simulate_from_file(config_file: str, output_dir: str = './') str
Load, transform, and run a passive RF JSON or YAML configuration.
satsim.passive_rf.types module
Normalized passive RF configuration types.
- class satsim.passive_rf.types.EstimatorParams(integration_time_s: 'float' = 1.0, coherent_time_s: 'float' = 0.005, rms_bw_from_rect: 'bool' = True, caf_loss_db: 'float' = 3.0, tdoa_floor_s: 'float' = 0.0, fdoa_floor_hz: 'float' = 0.0, tdoa_scale: 'float' = 1.0, fdoa_scale: 'float' = 1.0, tdoa_floor_by_sensor: 'Mapping[str, float]' = <factory>, fdoa_floor_by_sensor: 'Mapping[str, float]' = <factory>, tdoa_scale_by_sensor: 'Mapping[str, float]' = <factory>, fdoa_scale_by_sensor: 'Mapping[str, float]' = <factory>)
Bases:
object- caf_loss_db: float = 3.0
- coherent_time_s: float = 0.005
- fdoa_floor_by_sensor: Mapping[str, float]
- fdoa_floor_hz: float = 0.0
- fdoa_scale: float = 1.0
- fdoa_scale_by_sensor: Mapping[str, float]
- integration_time_s: float = 1.0
- rms_bw_from_rect: bool = True
- tdoa_floor_by_sensor: Mapping[str, float]
- tdoa_floor_s: float = 0.0
- tdoa_scale: float = 1.0
- tdoa_scale_by_sensor: Mapping[str, float]
- class satsim.passive_rf.types.ObservationRequest(target_id: 'int', sensor1: 'str', sensor2: 'str', time: 'Any', occurrence: 'int' = 0, source_index: 'int' = 0)
Bases:
object- occurrence: int = 0
- sensor1: str
- sensor2: str
- source_index: int = 0
- target_id: int
- time: Any
- class satsim.passive_rf.types.PassiveRFRunConfig(receivers: 'Mapping[str, ReceiverParams]', observers: 'Mapping[str, Any]', targets: 'Mapping[int, TargetRFParams]', target_objects: 'Mapping[int, Any]', estimator: 'EstimatorParams', observations: 'Tuple[ObservationRequest, ...]', frame_times: 'Tuple[Any, ...]' = (), seed: 'int' = 42)
Bases:
object- estimator: EstimatorParams
- frame_times: Tuple[Any, ...] = ()
- observations: Tuple[ObservationRequest, ...]
- observers: Mapping[str, Any]
- receivers: Mapping[str, ReceiverParams]
- seed: int = 42
- target_objects: Mapping[int, Any]
- targets: Mapping[int, TargetRFParams]
- class satsim.passive_rf.types.ReceiverGeometry(range_m: float, range_rate_m_s: float, azimuth_deg: float, elevation_deg: float)
Bases:
objectResolved geometric receiver-to-target state at one epoch.
- azimuth_deg: float
- elevation_deg: float
- range_m: float
- range_rate_m_s: float
- class satsim.passive_rf.types.ReceiverParams(name: str, antenna_gain_dbi: float, noise_figure_db: float, system_losses_db: float = 0.0, antenna_noise_temperature_k: float = 290.0, az_limits: Tuple[float, float] | None = None, el_limits: Tuple[float, float] | None = None)
Bases:
objectReceiver parameters from an aligned
passive_rfentry.- antenna_gain_dbi: float
- antenna_noise_temperature_k: float = 290.0
- az_limits: Tuple[float, float] | None = None
- el_limits: Tuple[float, float] | None = None
- name: str
- noise_figure_db: float
- system_losses_db: float = 0.0
- class satsim.passive_rf.types.TargetRFParams(target_id: int, frequency_hz: float, bandwidth_hz: float, eirp_dbw: float, name: str | None = None, band: str | None = None)
Bases:
objectRF emission properties associated with a SatSim geometry target.
- band: str | None = None
- bandwidth_hz: float
- eirp_dbw: float
- frequency_hz: float
- name: str | None = None
- target_id: int