Skip to content

Experimental Python library for cellular infrastructure inference using OpenCellID, without GPS.

License

Notifications You must be signed in to change notification settings

Nuulz/celltrace

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

celltrace

Python License Status Research CI

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.
celltrace is built around this idea.


Table of contents


Overview

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.


What celltrace does

  • 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

What celltrace does NOT do

  • 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.


Conceptual pipeline

OpenCellID (CSV)
→ Infrastructure loader
→ Geographic filtering
→ Network observations
→ Temporal inference + scoring
→ Result with confidence level

Confidence is part of the result, not an afterthought.


Confidence levels

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.


Tested scenarios

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.


Data source

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.


Installation (development)

pip install -e .

Requirements:

  • Python 3.10 or newer

Example usage

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)

Command-line interface

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.


Ethics and limitations

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.


Project status

celltrace is experimental and intended for:

  • Research
  • Education
  • Auditing
  • Prototyping

The API may change, but the conceptual model is stable.


Roadmap

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

License

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.

Keywords

<<<<<<< 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

About

Experimental Python library for cellular infrastructure inference using OpenCellID, without GPS.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages