Cellular infrastructure inference without GPS
celltrace is an experimental Python library for cellular network analysis that infers the most likely serving cell (tower or sector) using OpenCellID data and network observations, without GPS or real-time tracking.
The project focuses on honest inference, clear uncertainty, and a modular design.
If the network is unstable, the inference is not reliable.
celltraceis built around this idea.
- Overview
- What celltrace does
- What celltrace does NOT do
- Conceptual pipeline
- Confidence levels
- Tested scenarios
- Data source
- Installation (development)
- Example usage
- Command-line interface
- Ethics and limitations
- Project status
- Roadmap
- License
celltrace helps you answer questions like:
- Which cell is most likely serving a device right now?
- Is the network environment stable or ambiguous?
- How reliable is inference without GPS?
Instead of forcing precision, the library treats uncertainty as a first-class output and avoids claims it cannot support.
- Infers cellular infrastructure, not user location
- Uses OpenCellID datasets (CSV)
- Supports temporal consensus across observations
- Assigns qualitative confidence levels
- Works without GPS or external APIs
- Runs fully offline once data is available
- Track users or devices
- Use GPS or sensor fusion
- Provide exact user coordinates
- Work in real time
- Evade carrier or OS protections
- Guarantee accuracy in ambiguous environments
If network conditions are unclear, celltrace reports that ambiguity instead of guessing.
OpenCellID (CSV)
→ Infrastructure loader
→ Geographic filtering
→ Network observations
→ Temporal inference + scoring
→ Result with confidence level
Confidence is part of the result, not an afterthought.
| Level | Meaning |
|---|---|
| LOW | Ambiguous or unstable network conditions |
| MEDIUM | Reasonable estimate with clear uncertainty |
| HIGH | Strong temporal consensus and good signal quality |
The library is intentionally conservative.
It prefers not to infer rather than infer incorrectly.
The inference model has been validated against:
- Weak signal environments
- Mixed signal quality
- Overlapping cell coverage
- Cell changes (movement)
- Temporal consensus with a dominant cell
These scenarios can be reproduced using the CLI and real OpenCellID data.
celltrace uses OpenCellID as a source of cellular infrastructure:
- Country-level CSV datasets
- Approximate coordinates
- Estimated coverage ranges
Datasets are not included in this repository and must be provided by the user.
pip install -e .
Requirements:
- Python 3.10 or newer
from celltrace.providers.opencellid_csv import load_opencellid_csv
from celltrace.geo import filter_cells_by_radius
from celltrace.models import Observation
from celltrace.estimator import estimate_from_observations
cells = load_opencellid_csv(
"data/opencellid/732.csv",
radio_filter={"LTE"},
)
cells_near = filter_cells_by_radius(
cells,
center_lat=0.0,
center_lon=0.0,
radius_km=50,
)
observations = [
Observation(732, 101, "LTE", 123456, -70),
Observation(732, 101, "LTE", 123456, -72),
Observation(732, 101, "LTE", 123456, -68),
]
result = estimate_from_observations(observations, cells_near)
print(result)
A minimal CLI is provided for demos and validation:
celltrace --cells data/opencellid/732.csv --lat 0.0 --lon 0.0 --radius 50
The CLI is a thin wrapper around the library and does not duplicate logic.
This project follows these principles:
- Infrastructure inference, not user surveillance
- Explicit uncertainty
- No false precision
- Offline and transparent processing
If a reliable inference cannot be made, the system reports low confidence.
celltrace is experimental and intended for:
- Research
- Education
- Auditing
- Prototyping
The API may change, but the conceptual model is stable.
Planned improvements (click to expand)
- Optional SQLite backend for large datasets
- CLI subcommands (
analyze,setup) - Integration with real observation sources
- Extended technical documentation
- Separate repository with experimental techniques
MIT
Design note (click to expand)
celltrace does not try to be a “hidden geolocation tool”.
It is a research-grade approach to infer which infrastructure is likely serving the device, and to clearly show when the data is too ambiguous.
<<<<<<< HEAD cellular networks, cell tower inference, OpenCellID, mobile network analysis, privacy-preserving location, offline geolocation research
cellular networks, cell tower inference, OpenCellID, mobile network analysis, privacy-preserving location, offline geolocation research
acde2366c6347064fc43764d242613136cd8632a