Tasks/Life Sciences & Medicine

Perturbation-Conditioned Six-Channel Cell Morphology Generation

Generate treated-cell image distributions from controls and condition embeddings without paired examples

Life Sciences & Medicinecell imagingconditional generation
Background

Conditional image generation for microscopy-based cell profiling aims to predict how cells look after a drug or gene perturbation, since the space of treatments is too large to screen experimentally. The starting point is a solver that returns each untreated control image unchanged. The work is to replace it with a generator conditioned on vectors identifying each treatment, producing six-channel perturbed images. Success requires matching a distribution of treated cells with no before-and-after pairs to learn from, and not merely reproducing images already seen.

instruction.mdthis is what the agent is given

Generate perturbed-cell morphology from untreated controls and biological condition embeddings. You inherit a deterministic control-passthrough solver and should minimize overall FID; the verifier re-runs your saved method on sealed test cells.

Hard Constraints

  • Work only inside /app/methods/main and write learned artifacts to /app/submission.
  • Keep the public train(data_path, output_dir, config=None) and predict(inputs_path, checkpoint_dir, output_path) interfaces in /app/methods/main/solver.py.
  • Save a usable /app/submission/checkpoint.pt during every completed training stage so a timeout still leaves an evaluable submission.
  • Prediction must be deterministic for fixed inputs and checkpoint. Write one uint8 six-channel image per input to an NPZ with exactly the keys prediction and sample_id, preserving input order.
  • Training and prediction must be self-contained. Evaluation has no network access and does not install additional packages.
  • Predictions must be generated, not retrieved: an output that reproduces a treated image you were given -- from the training data or the visible targets -- is invalid. The verifier measures the share of outputs that duplicate such an image; above 5% the submission scores zero regardless of FID. Echoing your own control input is not covered by this rule; that is what the starter does and it already scores zero. selfcheck.py reports the same number so you can see it before submitting.

What You Have

  • /app/data/train.npz contains treated images, a same-batch control bank, batch metadata, condition IDs, and a 200-dimensional embedding table. Images are NHWC uint8 arrays with shape 96 x 96 x 6.
  • /app/data/validation_inputs.npz contains visible control images, embeddings, batch metadata, condition IDs, and sample IDs. /app/data/validation_targets.npz contains the corresponding treated distribution.
  • The task contains 100 fixed perturbation conditions. Visible validation has 10 deterministic images per condition (1,000 total); the remaining agent data contain 10,730 train-treated images and 480 training controls. Training, visible validation, and sealed evaluation use disjoint cell images.
  • /app/methods/main/solver.py is the editable starter. Its initial prediction simply copies the control image.
  • Run python /app/train.py to create a checkpoint and python /app/selfcheck.py to compute visible overall FID.

What You Submit

  • The complete /app/methods/main directory, including every module needed by training and prediction.
  • /app/submission/checkpoint.pt and any additional self-contained weights or configuration required by predict.
  • Do not submit precomputed sealed predictions. The verifier invokes your method on its own inputs.

How It Is Judged

  • The trusted grader calls predict in an isolated process on controls and condition embeddings from sealed test cells.
  • Real and generated six-channel images are converted to RGB with the fixed channel-composite rule before evaluation.
  • The sole ranking metric is overall FID across the complete sealed set. Lower is better; conditional FID is not used.
  • The baseline is the supplied control-passthrough solver, measured at overall FID 87.69610595703125 on the frozen 2,942-image sealed manifest. Matching or underperforming it receives zero reward.
  • Invalid output keys, shapes, dtypes, sample order, missing checkpoints, non-finite scores, or evaluation failures receive zero.

Common Pitfalls

  • This is an unpaired distribution-generation task, so per-image reconstruction loss does not express the complete objective.
  • Overall FID can conceal condition collapse. Inspect individual perturbations on the visible set even though the leaderboard uses one aggregate score.
  • Preserve all six output channels; the evaluator owns the fixed RGB composite conversion.
  • Do not depend on host paths, network downloads, or files outside the submitted method and checkpoint directories.
  • Keep inference fast enough for the sealed set and make random seeds explicit; stochastic variation should not change repeated scores.

Rollouts

91 minWall clock
$13.57Spend
18.2MTokens
9Versions, 8 kept

On the visible set

37.5 45.0 52.5 60.0 67.5 0 50 100 150 200 Agent step Visible overall FID via public s ↓ v0 v1 v2 v3 v4 v5 v6 v7 v8
keptrolled backsubmitted
  1. v0The agent started from the deterministic control-passthrough baseline.64.85333 min · $0.38
  2. v1The agent matched condition and batch channel moments onto the treated cells.50.517411 min · $1.29
  3. v2The agent separated cell-to-cell brightness from within-cell texture.46.930828 min · $3.06
  4. v3The agent added an adversarial residual to sharpen what transport left flat.40.748760 min · $6.82
  5. v4The agent corrected a leftover train-to-visible brightness offset per batch.38.543570 min · $8.80
  6. v5The agent let each acquisition batch choose its own calibration strength.37.930476 min · $9.83
  7. v6The agent tried per-batch ensemble weights and a third seed, and neither held up.37.612882 min · $11.24
  8. v7The agent added a small per-condition residual, cross-fitted so no cell scored itself.37.68686 min · $12.35
  9. v8The agent hardened the interface and confirmed the score had not moved.37.68690 min · $13.39

On the hidden set

Original metricNormalised score
Starter87.6961060.00
Upper10.75571.00
This run (GPT-5.6-sol)35.40350.4407
81 minWall clock
$7.48Spend
10.1MTokens
7Versions, 3 kept

On the visible set

40 60 80 100 120 140 0 2 3 4 6 Agent step Visible validation overall FID ↓ v0 v1 v1a v1b v1c v2 v3
keptrolled backsubmitted
  1. v0The agent inherited the control-passthrough starter solver64.85$0.98
  2. v1The agent trained a conditional flow-matching transport from control to treated52.1419 min · $1.95
  3. v1aThe agent affine-matched control channel statistics to treated statistics103.08$2.75
  4. v1bThe agent applied a global per-channel mean shift to controls139.78$3.55
  5. v1cThe agent histogram-matched control channels onto train treated channels65.88$4.36
  6. v2The agent weight-averaged two checkpoints and added a train-fitted monotone LUT41.8767 min · $5.16
  7. v3The agent folded the checkpoint averaging and LUT into train()41.8774 min · $6.34

On the hidden set

Original metricNormalised score
Starter87.6961060.00
Upper10.75571.00
This run (Opus 5)41.81460.3604
74 minWall clock
$14.17Spend
110.2MTokens
3Versions, 2 kept

On the visible set

45 50 55 60 65 0 0 1 2 2 Agent step Visible overall FID ↓ v0 v1 v2
keptrolled backsubmitted
  1. v0The agent inherited the control-passthrough starter solver64.8532
  2. v1The agent standardized channels per condition and batch with affine rescaling49.6458
  3. v2The agent added signed gamma contrast mapping and a logistic batch classifier44.229

On the hidden set

Original metricNormalised score
Starter87.6961060.00
Upper10.75571.00
This run (Gemini 3.7 Flash)47.57450.2979
120 minWall clock
$4.01Spend
8.4MTokens
3Versions, 0 kept

On the visible set

60 90 120 150 180 210 0 0 1 2 2 Agent step Visible validation overall FID ↓ v1 v2 v3
keptrolled backsubmitted
  1. v1The agent calibrated channel mean and std per condition50.45$0.44
  2. v2The agent trained a pix2pix conditional GAN that mode-collapsed198.4$1.33
  3. v3The agent trained a 60M conditional flow-matching UNet that plateaued89$2.67

On the hidden set

Original metricNormalised score
Starter87.6961060.00
Upper10.75571.00
This run (Kimi K3)53.9060.2373
118 minWall clock
$8.10Spend
12.8MTokens
7Versions, 4 kept

On the visible set

45 50 55 60 65 0 25 50 75 100 Agent step Visible validation overall FID ( ↓ v0 v2 v3 v4 v5 v6
keptrolled backsubmitted
  1. v0The agent inherited the control-passthrough starter solver64.8532
  2. v1The agent tried a 77M flow-matching UNet that ran too slowlytoo slow, abandoned
  3. v2The agent trained a 16M conditional flow-matching image-to-image UNet46.599
  4. v3The agent added optimal-transport pairing and an RGB auxiliary fine-tune47.627
  5. v4The agent added gaussian unsharp masking to remove flow ghosting44.213
  6. v5The agent added a mild per-condition channel mean shift42.448
  7. v6The agent made the winning recipe the default training flags42.4479

On the hidden set

Original metricNormalised score
Starter87.6961060.00
Upper10.75571.00
This run (Grok 4.6)39.47720.3882
19 minWall clock
$0.17Spend
711kTokens
1Versions, 1 kept

Only one comparable self-check score, so no curve — the versions below list what each one changed.

  1. v0The agent profiled the data but never replaced the passthrough starter64.85

On the hidden set

Original metricNormalised score
Starter87.6961060.00
Upper10.75571.00
This run (DeepSeek V4 Pro)87.69570.0000
120 minWall clock
$7.09Spend
22.0MTokens
3Versions, 2 kept

On the visible set

64 68 72 76 80 84 0 0 1 2 2 Agent step Visible FID via selfcheck.py (lo ↓ v1 v2
keptrolled backsubmitted
  1. v1The agent snapshotted the control-passthrough starter as its baseline64.855 min · $0.27
  2. v2The agent optimized pixels toward per-condition Gaussian feature targets84.0842 min · $2.21
  3. v3The agent switched to on-manifold interpolated feature targets in RGB spaceselfcheck cut off$4.65

On the hidden set

Original metricNormalised score
Starter87.6961060.00
Upper10.75571.00
This run (Qwen3.8 Max)00.0000
90 minWall clock
$2.59Spend
8.2MTokens
5Versions, 2 kept

On the visible set

60 90 120 150 180 0 1 2 3 4 Agent step Visible-set overall FID via self ↓ v0 v1 v1b v3
keptrolled backsubmitted
  1. v0The agent inherited the control-passthrough starter solver63.63$0.76
  2. v1The agent trained a rectified-flow control-to-treated UNet that came out blurred18460 min · $1.52
  3. v1bThe agent fixed the EMA bias correction and shortened training178.3$1.85
  4. v2The agent switched the interpolant source to a gamma-conditioned stochastic interpolantFID 107 vs 48.683 min · $2.17
  5. v3The agent dropped the generator for a per-condition affine intensity transport49.586 min · $2.32

On the hidden set

Original metricNormalised score
Starter87.6961060.00
Upper10.75571.00
This run (GLM 5.3)51.54620.2591
120 minWall clock
$14.82Spend
22.9MTokens
12Versions, 9 kept

On the visible set

40 45 50 55 60 65 0 75 150 225 300 Agent step Visible selfcheck overall FID (l ↓ v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11
keptrolled backsubmitted
  1. v0The agent inherited the control-passthrough starter solver64.85322 min · $0.40
  2. v1The agent added a learned per-condition pixel delta onto the control46.75348 min · $0.90
  3. v2The agent retuned the delta strength alpha from 1.25 to 1.1546.522812 min · $1.23
  4. v3The agent added a train-derived global residual contrast gain46.343419 min · $1.85
  5. v4The agent probed shrinking condition means toward the global treated mean46.493820 min · $2.06
  6. v5The agent added a global channel bias and retuned alpha44.164942 min · $4.14
  7. v6The agent probed a monotone per-channel histogram LUT postprocess44.32744 min · $4.47
  8. v7The agent gaussian-smoothed the per-condition delta fields43.133648 min · $5.15
  9. v8The agent retuned the smoothing sigma, alpha and residual weight42.448364 min · $6.83
  10. v9The agent mixed in a batch-conditioned delta component42.200983 min · $9.26
  11. v10The agent retuned the global channel bias for the batch-mix model41.445103 min · $12.13
  12. v11The agent retuned alpha and the residual weight after the new bias40.7956115 min · $13.97

On the hidden set

Original metricNormalised score
Starter87.6961060.00
Upper10.75571.00
This run (GPT-5.5)37.34940.4149

Leaderboard

Where each run landed on the sealed held-out set, on the same normalised-score scale as the anchors above.

0 0.3 0.6 1.0 1 GPT-5.6-sol codex · max 0.441 2 GPT-5.5 codex · xhigh 0.415 3 Grok 4.6 grok · xhigh 0.388 4 Opus 5 claude code · max 0.360 5 Gemini 3.7 Flash antigravity · high 0.298 6 GLM 5.3 claude code · max 0.259 7 Kimi K3 kimi cli · max 0.237 8 DeepSeek V4 Pro claude code · max 0.000 9 Qwen3.8 Max qwen coder · xhigh 0.000