Skip to content

BibimbapKiller

What if a model could say the one word every drug-discovery pipeline needs but no other tool can utter — "unreachable"?

Core trick

Tests whether a double-perturbation profile lies outside the non-negative cone of single-gene effects, returning a separating direction.

Tags

Description

What if a model could say the one word every drug-discovery pipeline needs but no other tool can utter — "unreachable"? Cell-state-reachability reframes perturbation biology around a new question: not "what will this gene knockout do?" but "can we actually steer a cell from state A to state B — and should you believe the answer?" We surveyed 91 perturbation-prediction methods; none return a feasibility verdict. Ours does. Built on public Perturb-seq screens (Replogle K562/RPE1, Norman combinatorial doubles), it produces a map of reachable cell-state space plus the falsification machinery that flags which regions you're allowed to trust: additivity bounds for multi-gene edits, weak-instrument confidence intervals, and negative-control and construct-validity checks. The payoff is targets a supervised ranker structurally can't nominate — like ZAP70: small-molecule-tractable, genetically associated, yet undrugged. The stance is AI-as-instrument, not oracle. The deliverable isn't a gene list; it's understanding of the data's structure earned inside a falsification loop — fitting for a field whose own 2025 benchmark shows deep models don't beat linear baselines.
MasalaKimchi/cell-state-reachability★ 00 forksPythonMITCreated Jul 7, 2026 · last push Jul 25, 2026

README excerpt

# CombiCone

> **Archived research repository.** Development stopped in July 2026. The code remains available
> for inspection and reproduction, but no prospective experiment was run and no biomedical or
> clinical claim was established.

CombiCone asks whether a measured combinatorial perturbation lies outside the non-negative cone
spanned by measured single-perturbation effects. When it does, the method returns a separating
direction and a noise-aware verdict. “Unreachable” is always relative to the supplied atoms,
features, metric, and noise model; it does not mean biologically impossible.

The final scientific conclusions and claim limits are in [docs/FINDINGS.md](docs/FINDINGS.md).

## Minimal example

```python
import numpy as np
import combicone as cc

singles = np.eye(3)
names = ["A", "B", "C"]

# Rank unmeasured pairs from singles only.
print(cc.triage_combinations(singles, names).top(3))

# Certify a measured combination against the single-effect cone.
combo = np.array([1.0, 1.0, 0.0, 2.0])
atoms = np.pad(singles, ((0, 0), (0, 1)))
certificate = cc.certify_emergence(
    atoms,
    combo,
    noise_sd=np.full(combo.shape, 0.05),
)
print(certificate.verdict)
print(certificate.separator)
```

The CLI exposes the same workflow:

```bash
combicone triage --help
combicone certify --help
combicone recommend --help
```

## Install and verify

Python 3.10–3.12 is supported.

```bash
python -m pip install -e ".[test]"
make test
make reproduce
```

`make reproduce` runs the c

Team