[![GeoSol Research Logo](https://geosolresearch.com/logos/foss_logo.png "GeoSol Research")](https://geosolresearch.com)

# GeoSol FOSS Projects

[Back to main README](README.md)

GeoSol Research is working to create, maintain, and improve several FOSS projects in the geolocation space. Here is what we are currently offering!

## Layer 1: Foundation

### [GRI Fitter](https://gitlab.com/geosol-foss/python/gri-fitter)

Equation fitting wrapper around scipy.optimize.curve\_fit. Simplifies curve fitting workflows with a clean API.

### [GRI Memoize](https://gitlab.com/geosol-foss/python/gri-memoize)

Class-based memoization with full type hints and IDE integration. Provides caching decorators for performance optimization.

### [GRI Plot](https://gitlab.com/geosol-foss/python/gri-plot)

Plotting utilities for Plotly and Matplotlib. Provides consistent styling and common plot types for geospatial visualization.

### [GRI Signal](https://gitlab.com/geosol-foss/python/gri-signal)

Functional signal processing library with pure functions operating on numpy arrays. Includes signal generation (tones, PRN, pulsed), channel simulation (delay, AWGN, Doppler, multipath), modulation (AM/FM/PM, BPSK/QPSK/QAM), sampling (ADC), filtering (lowpass, highpass, bandpass, notch, analytic), spectral analysis (PSD, SNR, THD, time-bandwidth product), cross-correlation, and beamforming.

### [GRI Utils](https://gitlab.com/geosol-foss/python/gri-utils)

The math back end to many other projects. This includes constants, coordinate conversion and transformation, orbit propagation, observable calculations, and geolocation algorithms. Most are based around numpy arrays.

## Layer 2: Mid-Level

### [GRI Ell](https://gitlab.com/geosol-foss/python/gri-ell)

An object to handle statistical locations like ellipse and ellipsoid, centered around a GRI-Position object. Transformations between statistical spaces, conversions between sigma and percentages in 2D and 3D, statistical distances, and attributes.

### [GRI Iono](https://gitlab.com/geosol-foss/python/gri-iono)

Ionospheric delay corrections using Bent, IRI, and NeQuick models.

### [GRI Iono Data](https://gitlab.com/geosol-foss/python/gri-iono-data)

Solar flux and NeQuickG coefficient data pipeline for ionospheric modeling.

### [GRI NSEpoch](https://gitlab.com/geosol-foss/python/gri-nsepoch)

A lot of the work we do is down to nanosecond or tens of nanosecond accuracy. We needed an object that could both handle that level of precision as well as do a lot of the string <=> time conversions for the many semi-standards formats we run into in this field.

### [GRI Pos](https://gitlab.com/geosol-foss/python/gri-pos)

A position object that greatly simplifies handling coordinates, distances, and memory, mostly on the WGS-84 ellipsoid.

### [GRI Terrain](https://gitlab.com/geosol-foss/python/gri-terrain)

Unified terrain elevation data access with fallback chain across multiple sources including DTED, Cloud-Optimized GeoTIFF, and Copernicus DEM.

### [GRI Tropo](https://gitlab.com/geosol-foss/python/gri-tropo)

Tropospheric delay corrections using ITU-R 2019 models and ERA5 refractivity data.

### [GRI Tropo Data](https://gitlab.com/geosol-foss/python/gri-tropo-data)

ERA5 data pipeline for downloading and processing tropospheric refractivity data used by gri-tropo.

## Layer 3: Applications

### [GRI Convolve](https://gitlab.com/geosol-foss/python/gri-convolve)

Ellipsoid convolution with outlier detection and clustering. Combines multiple statistical position estimates into refined solutions.

### [GRI GeoSim](https://gitlab.com/geosol-foss/python/gri-geosim)

Geometric/geolocation simulation library for platforms, sensors, emitters, and observables. Simulate satellite and ground-based geolocation scenarios with AOA/TDOA/FDOA measurements.

### [GRI Sandbox](https://gitlab.com/geosol-foss/python/gri-sandbox)

Some neat (small) examples and projects we've put together over time using the above libraries!

### [GRI SigSim](https://gitlab.com/geosol-foss/python/gri-sigsim)

Object-based RF signal simulation library. Wraps gri-signal functions with chainable object-oriented classes for waveforms (chirp, OFDM, pulsed), channel modeling (delay, Doppler, multipath), receiver simulation, and observable extraction (TOA, FOA, AOA).
