AutoScope

Malaria thick-film screening. OpenCV 5 on Graviton, an agent deciding where to look.

Five slides read on AWS, one per density band. The agent spends effort in proportion to the evidence, which is the whole claim:

SlideFields readParasites/µLWhat it shows
TF41_UT53 of 390,435stops on the first field. The parasites are everywhere.
TF124_S5402 of 1019,512stops at two. The expert read 12,800, the same band, so it reads high.
TF101_2338 of 88,602the ordinary case. Reads until the interval sits inside one band.
TF22_C104P6511 of 11~700reads everything it has and still straddles a band edge.
TF150_R55 of 5288runs out of slide before the interval settles. Goes to a person.

All five are NLM held-out patients the fit never saw. TF124_S540 records the OpenCV binary that read its fields, under "Read by", as the Batch job reported it; the four older sessions ran before that was recorded. Or leave the endpoint blank and “Replay a recorded session” reads sample-session.json from this page’s own folder, so the demo still works with nothing deployed and a judge can check it offline.

The call

no session loaded
— parasites/µL
—
101001k10k100k

What it read

Fields counted—
Parasites—
White cells—
Fields skipped—
Agent calls—
Stopped because—
Read by—

The WHO method reads 100 fields before calling a slide negative, or counts against 200 white cells. Where this stopped earlier or later, the log says why.

The log: every field, and what the agent did about it

#FocusDebrisFoundRunning MoveWhy
Nothing loaded yet.

This is the audit trail. A laboratory needs to see the working behind a result before it can use one. Rows with no reason came from the rule, which produces none; the agent gives a reason for every move, and that difference is why both were run.

What the agent looked at

A field of view with the parasites and white cells the pipeline found circled

The fields of the loaded session, in the order the agent read them. Green rings are parasites, blue are white cells. Both are count_field's own detections at the shipped threshold, drawn on the real capture. The running estimate and the move the agent chose, with the reason it gave, are printed on each frame.

No slide moves under the lens here, and that is deliberate. NLM fields are separate captures taken minutes apart, so a sequence of them is what a technician sees down an eyepiece.

Verification: click a detection to reject it

Nothing loaded yet.

Rejecting a detection recomputes the count and the density from the corrections. Nothing is sent anywhere from this page; the corrections are what a deployment would keep as training data.

Screening aid, not a diagnostic device. Every result is reviewed by a person. AutoScope detects P. falciparum and does not identify species. That is measured, not assumed: on 90 annotated P. vivax patients this detector reads F1 0.29, against 0.80 on falciparum, and its confidence score does not separate the detections it gets right from the ones it gets wrong, so there is no automatic warning to give you. A slide from a region where P. vivax circulates needs a human reader. All development used retrospective, de-identified research slides (NLM/LHNCBC, NIH) and nothing here has been clinically validated.