work / cervical-lens
CervicalLens
Edge cytology screening plus genomic risk stratification for cervical cancer, with a clinician portal, an offline mobile app and an API.
- Years
- 2026
- Status
- research
What it is
Two models for two different moments. The first screens Pap-smear cell images on a low-end phone with no connection: a student model distilled from a larger teacher, exported to ONNX at 0.28 MB, 3.6 ms per image on CPU against 14.4 ms in PyTorch. It flags a slide when p(abnormal) ≥ 0.50. On the held-out set that catches 96% of abnormal slides and clears only 40% of normal ones (30 of 50 normals flagged), so a positive is a referral to a pathologist, not a diagnosis.
Read more
The second is for confirmed patients. Two regularised Cox models on TCGA-CESC data, a virulence axis and a metastasis/APOBEC axis, are each split at the median into a 2×2 matrix from LOW to CRITICAL. Combined C-index 0.655; CRITICAL against LOW has a hazard ratio of 2.2 (p = 0.010).
Both surface in a Next.js clinician portal, an offline-first Expo app and an API. Research use only.
Stack
- Python
- PyTorch
- ONNX
- lifelines
- TCGA-CESC
- TypeScript
- Next.js
- Expo
Counted
- 0.28 MBmodel size
ONNX export - 3.6 msCPU latency
vs 14.4 ms PyTorch - 96% / 40%sensitivity / specificity
held-out set - 0.655genomic C-index
95% CI 0.588–0.713 - 2.2hazard ratio, CRITICAL vs LOW
p = 0.010
How it works
The system as a machine on a bench. Hover or use the arrow keys to drive it.
The path through it
- CaptureA Pap-smear cell image on the phone, offline.
- ScreenThe distilled 0.28 MB ONNX model, 3.6 ms on CPU; p(abnormal) ≥ 0.50 flags the slide.
- ReferPositives go to a pathologist review queue.
- StratifyExpression, mutations and HPV genotype feed two Cox axes: virulence (C = 0.591) and metastasis/APOBEC (C = 0.645).
- Risk matrixMedian split on each axis → LOW, MODERATE, HIGH, CRITICAL.