Leak CURBER kcat model starter
Use this starter to try the submission process or build your own model. You train locally and upload a public Hugging Face (HF) model repository. We build its Docker image and run CPU inference. A free HF account is enough.
The included baseline uses ridge regression with sequence composition and SMILES character counts. Its weights use only the fixed training split.
Read the step-by-step guide for the full workflow and troubleshooting.
Try the baseline
Download this repository and the public data:
python -m pip install huggingface-hub==2.2.0
hf download starkAhmed43/leak-curber-kcat-starter --local-dir model
hf download starkAhmed43/leak-curber-kcat train.parquet val_inputs.parquet --repo-type dataset --local-dir data
cd model
python -m pip install -r requirements.txt
python predict.py --input example_inputs.parquet --output predictions.csv
The output contains one prediction for each input ID. Compare its format with
example_predictions.csv. Those example values are model predictions, not labels.
To retrain the baseline, run:
python train.py --train ../data/train.parquet --output weights/baseline.json
Test your Docker image
Install Docker first. From the model directory, run:
mkdir -p output
docker build --platform linux/amd64 -t my-kcat-model .
docker run --rm --platform linux/amd64 --network none \
-v "$PWD/../data:/input:ro" -v "$PWD/output:/output" \
my-kcat-model python /app/predict.py \
--input /input/val_inputs.parquet --output /output/predictions.csv
Check that output/predictions.csv contains every input ID exactly once.
Replace the baseline
Use any CPU-compatible model or library. Update Dockerfile, requirements.txt,
and predict.py as needed. Include your trained weights and all other assets.
Your image must meet these requirements:
| Item | Requirement |
|---|---|
| Platform | Linux x86-64 |
| Python | /usr/local/bin/python |
| Prediction script | /app/predict.py |
| Working directory | /app |
| Command | python /app/predict.py --input INPUT --output OUTPUT |
| Input | Parquet columns: id, smiles, sequence |
| Output | CSV columns: id, prediction |
| Target | log10 kcat, matching training column log10_value |
| Resources | 2 vCPU, 16 GB RAM, 10 minutes |
| Repository size | At most 4 GiB |
Return one finite number per input ID. Row order does not matter. Predictions must have an absolute value no greater than 1,000,000.
Inference runs without internet, credentials, or host files. The evaluator starts
Python directly. Put required setup in your build or prediction code. Docker
entrypoints and shell startup hooks do not run. Use /tmp for temporary files.
Write predictions to the supplied output path.
Upload and submit
Use a public model repository under your registered HF account:
hf auth login
hf upload YOUR_USERNAME/YOUR_MODEL . --repo-type model --no-private --exclude ".cache/**" "output/**" "predictions.csv"
If the repository already exists, check its visibility on HF. The upload flag does not make an existing private repository public.
Open the leaderboard.
Sign in with your registered account. Enter your repository ID, revision, and model
name. The default revision is main. Each submission records a fixed commit, so
later edits do not change it.
Validation scores appear after evaluation. Use My submissions to check progress and nominate a model for test evaluation. Best validation models and nominations stay protected. Other successful archives expire after 7 days. You cannot nominate an expired archive; submit the model again if needed.
For the course, submit and nominate before November 6, 2026, at 23:59 IST. Each team has 2 submissions per day and 20 total per task. Only one evaluation per team can be active. If you do not nominate a model, we select your best validation model.
Validation labels and all test data stay private. TAs publish test scores after the deadline.