The 3D version of this sim renders every gene pair as a bar in a height-coded grid. This 2D companion instead computes a genuine volcano plot — the standard analysis chart for real screening data — and lays every gene pair out with its own independent spring-and-repulsion physics rather than static bars:
ε = f_AB(measured) − f_A × f_B (effect size, x-axis)
σ_ε = σ_read / √(replicates)
z = ε / σ_ε
p = Φ(z) (one-tailed normal CDF)
y-axis = −log₁₀(p) (statistical significance)
Because every pair shares the same noise model, ε and −log10(p) are a monotonic pair here — so points fan out into the classic volcano funnel: strongly negative ε (very lethal double knockouts) pushes far left and far up. Each point isn't drawn straight at its data coordinate — it is a real particle carrying its own position and velocity, pulled toward its target (ε, −log10 p) location by a damped spring F = k·(target − pos) − c·v and pushed apart from overlapping neighbours by a softened inverse-square repulsion, exactly the force-directed "beeswarm" technique used to keep dense scatter plots legible. Nothing here is copied from the 3D bar-height animation — it is solved independently every frame from the same underlying biology.
- Replicates — number of independent biological replicates averaged per pair; more replicates shrink σ_ε by 1/√R, so points cluster more tightly around their true value and separate more cleanly from the noise floor.
- Sequencing / read noise — per-replicate counting noise before averaging (low read depth ⇒ high noise ⇒ wider, messier swarm).
- Hit-call threshold — the z-score cutoff for calling a pair "significant" (dashed line); stricter thresholds trade sensitivity for a lower false-discovery rate, exactly as in real MAGeCK-style hit-calling pipelines.
- Resample screen — redraws replicate noise only, keeping the same true hidden gene network, so you can see how much a single hit-calling result varies run to run.
- New gene set — regenerates the underlying (hidden) true interaction network itself.