Skip to main content

GeoSol Research Logo

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 traps
  • api_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

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)

Source distribution for gri-obs 0.3.2
File Size Uploaded
gri_obs-0.3.2.tar.gz 43.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for gri-obs 0.3.2
File Interpreter ABI Platform
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}

Release history Release notifications | RSS feed

This release

0.3.2 This release

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.0

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page