---
title: "Nanochallenge"
description: "Internal challenges: submit an inference image, it runs on held-out vxData cases, and its scores land on the dashboard's Nanochallenge page."
image: "https://docs.virdx.dev/img/virdx-social-card.png"
---

> Documentation Index
> Fetch the complete documentation index at: https://docs.virdx.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Nanochallenge

## Available Challenges

| Challenge | Description | Details |
| --------- | ----------- | ------- |
| `wsi-gleason-segmentation` | Pixel-level Gleason grading of WSI crops | [CHALLENGE.md](https://github.com/virdx/mono/blob/main/apps/nanochallenge/challenges/wsi-gleason-segmentation/CHALLENGE.md) |
| `bpmri-cspca-prediction` | csPCa detection on bi-parametric MRI, scored like PI-CAI | [CHALLENGE.md](https://github.com/virdx/mono/blob/main/apps/nanochallenge/challenges/bpmri-cspca-prediction/CHALLENGE.md) |
| `bpmri-isup-prediction` | Per-case ISUP grade prediction on bi-parametric MRI | [CHALLENGE.md](https://github.com/virdx/mono/blob/main/apps/nanochallenge/challenges/bpmri-isup-prediction/CHALLENGE.md) |
| `in-vivo-microscope` | Histology read back out of in-vivo prostate MRI, voxel by voxel | [CHALLENGE.md](https://github.com/virdx/mono/blob/main/apps/nanochallenge/challenges/in-vivo-microscope/CHALLENGE.md) |

## Submitting to a Challenge

```sh
vx challenge list
vx challenge describe -c bpmri-cspca-prediction
vx challenge submit -c bpmri-cspca-prediction -i mono/my-model@sha256:ab12cd... \
  -t "my run" --model v2 --notes "baked weights"   # --key value: free-form metadata
```

The image must be pinned by digest and implement `infer.sh -i /inputs -o /outputs`.

## Adding a Challenge

1. Create `challenges/<name>/` with a `Dockerfile`, a `pixi.toml` with `prepare` and
   `evaluate` tasks (evaluate via `challenge_utils.scoring.run`, so the dashboard can
   show the result), and a `CHALLENGE.md`.
2. Add its entry (`name`, `title`, `description`, `primary_metric`) to the index
   annotation in [`argo/nanochallenge.workflowtemplate.yaml`](https://github.com/virdx/mono/blob/main/apps/nanochallenge/argo/nanochallenge.workflowtemplate.yaml);
   a dashboard-api test checks every challenge has one.
3. Build its image, always `mono/nanochallenge-<name>`:
   `./build.sh challenges/<name>/Dockerfile` (`./build.sh challenges` builds all).
4. Add a row to the table above.

Source: https://docs.virdx.dev/nanochallenge/index.mdx
