GRI Obs
Typed observation objects for geolocation measurements.
Overview
gri-obs provides self-contained observation objects that carry measurement
data, noise characterization, and sensor geometry for geolocation systems.
Each observation embeds everything needed to evaluate measurement functions
against an emitter state vector.
Observation Types
| Type | Measurement | Units | Collectors |
|---|---|---|---|
TdoaObs |
Time Difference of Arrival | seconds | 2 positions |
TdoaDotObs |
Time derivative of TDOA (frequency-independent FDOA) | s/s | 2 positions + velocities |
FdoaObs |
Frequency Difference of Arrival | Hz | 2 positions + velocities |
AoaObs |
Angle of Arrival (direction cosines) | unitless | 1 position + rotation |
RangeObs |
Distance | meters | 1 position |
Documentation
The wheel ships its documentation inside the package, in gri_obs/docs/, so it
is available wherever the package is installed:
overview.md-- the observation types, units, the estimator contract, and trapsapi_summary.md-- every public class, function, and signature (generated)
Print the directory with
python -c "import gri_obs, pathlib; print(pathlib.Path(gri_obs.__file__).parent / 'docs')".
Every example in those files is run by the test suite.
Installation
pip install gri-obs
Or for local development:
git clone https://gitlab.com/geosol-foss/python/gri-obs.git
cd gri-obs
uv sync
uv sync creates the virtual environment, installs dependencies, and wires up
the git hooks automatically (it sets core.hooksPath to .githooks). See
CONTRIBUTING.md for the full workflow.
Usage
from gri_obs import TdoaObs, FdoaObs, AoaObs, RangeObs
from gri_pos import Pos
import numpy as np
# TDOA observation
tdoa = TdoaObs(
time=100.0,
value=1.5e-6, # 1.5 microseconds
std_dev=1e-9, # 1 nanosecond
collector1=Pos.LLA(38.0, -77.0, 400_000.0),
collector2=Pos.LLA(39.0, -76.0, 400_000.0),
sensor_id="tdoa_12",
)
# AOA observation from azimuth/elevation
aoa = AoaObs.from_azel(
time=100.0,
azimuth_rad=0.785, # 45 degrees
elevation_rad=0.524, # 30 degrees
std_dev_az_rad=0.001,
std_dev_el_rad=0.001,
collector=Pos.LLA(38.0, -77.0, 100.0),
sensor_id="aoa_1",
)
# Filter mixed observation lists
from gri_obs import filter_tdoa, filter_aoa
all_obs = [tdoa, aoa]
tdoa_only = filter_tdoa(all_obs)
Timestamps
Observations accept any timestamp type -- float seconds, datetime objects, or
gri_nsepoch.Time for nanosecond precision. The observation carries the
timestamp but does not interpret it.
Dependencies
- gri-utils -- coordinate conversions
- gri-pos -- position objects
- gri-memoize -- AOA memoized properties
License
MIT -- see LICENSE.
Release files for gri-obs 0.3.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| gri_obs-0.3.2.tar.gz | 43.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| gri_obs-0.3.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 79.4 kB
Release files / gri_obs-0.3.2.tar.gz
| Download URL | gri_obs-0.3.2.tar.gz |
|---|---|
| Size | 43.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
2e093b1c15b25865814f133cf17c6455d998ef8d4df10530635319877caddc36
|
|
BLAKE2b-256 checksum How to use checksums |
5f3806057507a3022650c894cd33ce5aabf0b2e15fd6d1da3d281ccdb249a633
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.9.30 {"installer":{"name":"uv","version":"0.9.30","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"12","id":"bookworm","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / gri_obs-0.3.2-py3-none-any.whl
| Download URL | gri_obs-0.3.2-py3-none-any.whl |
|---|---|
| Size | 35.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
d2aaf9a2c0586abdd7532ab36a5d35ef2ebb0684ade230971de5269ed8c9b08f
|
|
BLAKE2b-256 checksum How to use checksums |
e5de9f37e5f775844e0df59cd4f9721cdace1ba9fdfb80f5002ce64ce77ef4d4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.9.30 {"installer":{"name":"uv","version":"0.9.30","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"12","id":"bookworm","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|