Skip to content

Latest commit

 

History

History
33 lines (21 loc) · 1.96 KB

README.md

File metadata and controls

33 lines (21 loc) · 1.96 KB

Virtual Lab Task: Flow Cytometry Acquisition and Analysis

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.

Contents

  • 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.py and app/labclient.py: the JSON-lines protocol.
  • app/solver.py: starter to replace. app/practice.py and app/practice_case.json: disclosed practice case with known truth.
  • SOURCES.md: source-to-mechanism table, invented fixtures and modeling limitations.
  • Dockerfile: dependency environment.

Use

docker build -t virtual-lab-flow-cytometry .
docker run --rm virtual-lab-flow-cytometry python3 /app/practice.py

The starter raises NotImplementedError; the practice runner reports metrics once solver.py submits a result.

Execution evidence

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.

Reference and verifier

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.