Choose controls and event allocations on a simulated flow cytometer, then use the returned multichannel events to unmix spillover, set gates and estimate how common a rare cell population is in four synthetic samples. Acquisition choices change the observations and use up a shared event budget and finite sample cells.
Task type: Interactive simulated experimentation. Version: 1.0.0.
All specimens, measurements and instrument conditions are synthetic. This is not a validated assay or a clinical tool; the instrument model is a simplified linear-spillover model with signal-dependent noise.
TASK.md: scientific task, deliverable and acceptance rules.app/SPEC.md: protocol and simulator model.app/lab.py: simulator, ledger and scoring helpers.app/harness.pyandapp/labclient.py: the JSON-lines protocol.app/solver.py: starter to replace.app/practice.pyandapp/practice_case.json: disclosed practice case with known truth.SOURCES.md: source-to-mechanism table, invented fixtures and modeling limitations.Dockerfile: dependency environment.
docker build -t virtual-lab-flow-cytometry .
docker run --rm virtual-lab-flow-cytometry python3 /app/practice.pyThe starter raises NotImplementedError; the practice runner reports metrics once solver.py submits a result.
In a local Docker run of the grader, a reference solution was accepted on 8 of 8 held-out cases (reward 1) and the unchanged starter scored 0. These are local simulator results. No blind solver trial or external review has been run, and nothing here is validated against laboratory data. A fixed acquisition plan is a valid solution, so the task does not require adaptivity.
The reference solution, held-out cases, grader, comparison routes and correctness checks are kept in a separate private repository. They are not part of this repository.