Improve the inherited ESM-2 retrieval baseline for TCR–epitope binding specificity. Develop only on the frozen visible split; your final source is re-run once on sealed, epitope-disjoint pairs and scored by Macro AUC0.1.
Hard Constraints
- Work only inside
/app/methods/main. The required entry point isscore_pairs(item). - Use the provided ESM-2 model only for forward inference. Do not fine-tune it or train a new learned model on the visible labels.
- Do not retrieve known binders for evaluation epitopes from external databases or services.
- Return scores computed from the supplied train/test tables; do not submit precomputed final scores.
- Stay within one GPU, 8 CPUs, 32 GB host memory, and the task time limit.
What You Have
data/visible/train_pairs.tsv: labeled pairs from 59 training epitopes.data/visible/test_pairs.tsv: unlabeled pairs from 20 epitopes absent from the training set.data/visible/test_labels.tsv: visible truth used only by the local self-check.methods/main/solver.py: the inherited baseline. It embeds CDR3β with ESM-2 and uses maximum cosine similarity to a positive training TCR; it intentionally ignores the candidate epitope.methods/main/tcr_utils.py: shared loading, embedding, and retrieval utilities./opt/esm2: a local, pinned protein-language-model snapshot.python selfcheck.py: the canonical complete-visible evaluation. Every comparable experiment must use this exact command and all 20 visible epitopes.
What You Submit
Keep a source-only implementation in methods/main/. solver.py must expose:
def score_pairs(item: dict) -> dict:
# item contains train_pairs_tsv, test_pairs_tsv, and plm_model_dir.
# Return one finite score per test row, in row order.
return {"scores": [...]}
You may add Python helper modules in the same directory. The sealed verifier rejects other file types, symlinks, malformed output, non-finite values, and the wrong score count.
How It Is Judged
The verifier runs your frozen source as an unprivileged process with no network and no access to
labels. Its epitopes are absent from training and visible evaluation.
For each epitope it computes standardized partial AUROC with max_fpr=0.1, then macro-averages
the values. Random ranking is approximately 0.5 and higher is better. Every epitope must be
valid; no failed stratum is skipped. Only the final aggregate grade is produced.