PPI benchmark evaluation
PPI Benchmark Studio · engine 0.1.0 (framework 1.0.0) · 2026-10-14T17:11:25+0000 · seed 42 · preset standard
Needs controls — At least one artefact materially affects what models trained here will learn.
Readiness score 20/100. Heuristic summary of the diagnostics below (100 − 15 per concern − 5 per caution); not a statistical quantity.
Diagnostics
Data integrity
1,815 rows removed during cleaning (2.8%)
536 duplicate pairs (4 reversed), 1,279 self-pairs and 0 pairs with conflicting labels were removed; 64,103 canonical pairs remain.
For model building: Reversed duplicates (A–B and B–A) placed on both sides of a random split leak labels directly. Train on the canonical pair list, not the raw file.
Degree bias in supplied negatives
Endpoint degree SMD 0.83 between positives and supplied negatives
Positive pairs join proteins with mean positive-network degree 25.26, supplied negatives 6.77. Degree-matched N2 brings the SMD to 0.13.
For model building: A model can tell the classes apart by how well-studied the proteins are, without learning anything about interaction. Compare against degree-matched negatives before trusting a score.
Constructed negatives are putative (unobserved) pairs, not experimentally established non-interactions.
Degree-only shortcut
Degree alone reaches ROC-AUC 0.849 on the reference labels
A logistic model on four endpoint-degree summaries, with no sequence information, scores 0.849 on N0 and 0.528 on degree-matched N2 negatives.
For model building: Most of the benchmark's label separation is reproducible from network degree. Headline scores on these labels mix interaction signal with annotation density.
Degree is computed from the same incomplete positive graph that supplies the labels; it is a retrospective audit feature, not an input available for a protein with no known interactions.
Length-only shortcut
Sequence length alone: ROC-AUC 0.517
Endpoint sequence-length summaries used as the only features.
For model building: Sequence length does not separate the labels.
Performance on unseen proteins
ROC-AUC falls by 0.260 from seen (R1) to unseen proteins (R3)
AAC+CTD MLP with the training set held fixed: R0 0.962, R1 0.962, R3 0.702.
For model building: Random pair splits overstate performance on new proteins. Report the protein-disjoint R3 split if the model is meant for proteins without known interactions.
R3 test sets are small; see the uncertainty chapter.
Signal after degree matching
Modest signal (0.584) with degree-matched negatives on unseen proteins
Best representation AAC+CTD, MLP trained and tested with N2 negatives at R3: ROC-AUC 0.584 (N0: 0.702). Component bootstrap 95% CI 0.472–0.636; above chance under both corrected tests: no.
For model building: Some sequence signal remains, but it is small or uncertain; treat performance claims cautiously.
A non-significant test does not establish equivalence to chance; few connected components limit what can be concluded.
Independent test units
R3 test graphs contain 17–66 connected components
Test pairs that share proteins are not independent. Uncertainty is computed by resampling whole connected components of the test-pair graph.
For model building: Confidence intervals are wide and tests have little power; differences between models of a few hundredths are not interpretable.
A non-significant test does not establish equivalence to chance; few connected components limit what can be concluded.
Taxonomic shortcut
'Same species?' alone scores ROC-AUC 0.728 on pooled degree-matched negatives
Scoring a pair 1 when both proteins come from the same organism gives 0.728 on N2 and 0.500 on species-matched N2-species negatives.
For model building: Pooled negatives that join organisms can be recognised from taxonomy alone; pooled performance partly measures species identification. Use species-matched negatives (N2-species) or evaluate within species.
Constructed negatives are putative (unobserved) pairs, not experimentally established non-interactions.
Cross-species negatives
45.3% of pooled N2 negatives join two species (positives: 0.2%)
Fraction of pairs whose endpoints are assigned to different organisms, per negative set.
For model building: Negatives and positives differ in species composition, which a model can exploit.
Within-species signal
Within-species AAC+CTD MLP with N2 negatives: dmelanogaster 0.533, celegans 0.535, ecoli 0.589
Degree statistics and negatives are rebuilt inside each organism; positives and negatives are split 80/20 at random (proteins may recur, as in the source protocol).
For model building: Within-species estimates remove the taxonomic shortcut but not protein reuse; compare with the pooled R3 result.
Recommendations
- Train on the canonical pair list (
canonical_pairs.tsv): Duplicates and reversed duplicates have been removed; use this file instead of the raw input. - Use degree-matched negatives (
negatives/N2.tsv): Train and evaluate with the same degree-matched definition (N2, or N5 to also match length) and report the degree-only baseline. - Report a protein-disjoint split (
splits/R3/): R1/R2/R3 share one training set; R3 test pairs contain only proteins never seen in training. Report R3 for claims about new proteins. - Report component-aware uncertainty (
tables/component_aware_uncertainty.csv): Quote bootstrap and jackknife intervals over connected components, and add an independent benchmark where possible. - Match negatives within species (
negatives/N2-species.tsv): Species-matched degree negatives remove the 'same organism' shortcut; also report within-species results. - Report both controls (
results.json): Protein reuse and negative construction are distinct problems: a protein-disjoint split can keep biased negatives, and balanced negatives can still let proteins recur.
Negative-set balance
| negative_set | n_negatives | positive_mean | negative_mean | smd | ks_statistic | length_smd |
|---|---|---|---|---|---|---|
| N0 | 32425 | 25.257 | 6.775 | 0.827 | 0.446 | -0.031 |
| N1 | 31678 | 25.257 | 5.489 | 0.881 | 0.504 | 0.019 |
| N2 | 31678 | 25.257 | 21.646 | 0.130 | 0.059 | 0.000 |
| N3 | 31678 | 25.257 | 15.344 | 0.363 | 0.253 | -0.004 |
| N5 | 31678 | 25.257 | 21.562 | 0.133 | 0.059 | -0.003 |
| N2-exact | 30404 | 25.257 | 23.277 | 0.070 | 0.018 | -0.008 |
| N2-nearest | 31678 | 25.257 | 25.222 | 0.001 | 0.002 | -0.010 |
| N2-species | 31656 | 25.257 | 21.507 | 0.136 | 0.060 | 0.007 |
Splits and leakage gates
| regime | train_pairs | test_pairs | train_proteins | test_proteins | protein_overlap | test_components | passed |
|---|---|---|---|---|---|---|---|
| R0 | 51282 | 12821 | 10420 | 5934 | 5089 | 344 | True |
| R1 | 31863 | 7966 | 8419 | 3741 | 3741 | 209 | True |
| R2 | 31863 | 20812 | 8419 | 6151 | 4101 | 150 | True |
| R3 | 31863 | 2807 | 8419 | 1183 | 0 | 66 | True |
Protein-novelty curve
| representation | regime | model | test_pairs | roc_auc | pr_auc | mcc |
|---|---|---|---|---|---|---|
| AAC+CTD | R0 | lr | 12821 | 0.808 | 0.819 | 0.459 |
| AAC+CTD | R0 | rf | 12821 | 0.937 | 0.945 | 0.733 |
| AAC+CTD | R0 | mlp | 12821 | 0.962 | 0.969 | 0.819 |
| AAC+CTD | R1 | lr | 7966 | 0.811 | 0.804 | 0.460 |
| AAC+CTD | R1 | rf | 7966 | 0.937 | 0.939 | 0.735 |
| AAC+CTD | R1 | mlp | 7966 | 0.962 | 0.966 | 0.820 |
| AAC+CTD | R2 | lr | 20812 | 0.762 | 0.726 | 0.384 |
| AAC+CTD | R2 | rf | 20812 | 0.855 | 0.839 | 0.521 |
| AAC+CTD | R2 | mlp | 20812 | 0.859 | 0.836 | 0.529 |
| AAC+CTD | R3 | lr | 2807 | 0.704 | 0.636 | 0.287 |
| AAC+CTD | R3 | rf | 2807 | 0.743 | 0.689 | 0.327 |
| AAC+CTD | R3 | mlp | 2807 | 0.702 | 0.654 | 0.269 |
Topology-only and length-only controls
| feature | evaluated_on | roc_auc | pr_auc | mcc |
|---|---|---|---|---|
| degree | N0 | 0.849 | 0.853 | 0.524 |
| degree | N1 | 0.893 | 0.892 | 0.591 |
| degree | N2 | 0.528 | 0.545 | 0.025 |
| degree | N3 | 0.703 | 0.702 | 0.293 |
| degree | N5 | 0.528 | 0.540 | 0.024 |
| degree | N2-exact | 0.503 | 0.514 | -0.000 |
| degree | N2-nearest | 0.492 | 0.493 | -0.011 |
| degree | N2-species | 0.528 | 0.542 | 0.022 |
| length | N0 | 0.517 | 0.525 | 0.034 |
| length | N1 | 0.485 | 0.502 | -0.020 |
| length | N2 | 0.489 | 0.496 | -0.014 |
| length | N3 | 0.502 | 0.503 | -0.001 |
| length | N5 | 0.502 | 0.502 | 0.004 |
| length | N2-exact | 0.482 | 0.501 | -0.023 |
| length | N2-nearest | 0.499 | 0.505 | -0.001 |
| length | N2-species | 0.489 | 0.497 | -0.016 |
Consistent-negative revalidation
| representation | regime | negative_set | test_pairs | roc_auc | pr_auc | mcc |
|---|---|---|---|---|---|---|
| AAC+CTD | R0 | N0 | 12821 | 0.961 | 0.969 | 0.819 |
| AAC+CTD | R3 | N0 | 2807 | 0.702 | 0.654 | 0.269 |
| AAC+CTD | R0 | N2 | 12672 | 0.646 | 0.640 | 0.195 |
| AAC+CTD | R3 | N2 | 2420 | 0.584 | 0.574 | 0.111 |
| AAC+CTD | R0 | N5 | 12672 | 0.623 | 0.626 | 0.158 |
| AAC+CTD | R3 | N5 | 2420 | 0.602 | 0.607 | 0.113 |
| AAC+CTD | R0 | N2-species | 12668 | 0.559 | 0.563 | 0.081 |
| AAC+CTD | R3 | N2-species | 2419 | 0.539 | 0.536 | 0.056 |
Component-aware uncertainty (R3)
| representation | negative_set | n_test | n_components | roc_auc | boot_low | boot_high | jack_low | jack_high | boot_p_bh | jack_p_bh |
|---|---|---|---|---|---|---|---|---|---|---|
| AAC+CTD | N0 | 2807 | 66 | 0.702 | 0.654 | 0.839 | 0.484 | 0.920 | 0.000 | 0.069 |
| AAC+CTD | N2 | 2420 | 20 | 0.584 | 0.472 | 0.636 | 0.513 | 0.655 | 0.158 | 0.031 |
| AAC+CTD | N5 | 2420 | 17 | 0.602 | 0.422 | 0.702 | 0.538 | 0.667 | 0.158 | 0.008 |
| AAC+CTD | N2-species | 2419 | 18 | 0.539 | 0.513 | 0.630 | 0.524 | 0.554 | 0.012 | 0.000 |
Species composition
| species | proteins | positive_within | negative_within | positive_cross | negative_cross |
|---|---|---|---|---|---|
| dmelanogaster | 7041 | 21742 | 21046 | 49 | 440 |
| celegans | 2629 | 3950 | 3914 | 17 | 71 |
| ecoli | 1823 | 5907 | 6954 | 10 | 0 |
| other | 30 | 0 | 0 | 62 | 511 |
| unassigned | 6 | 2 | 0 | 16 | 0 |
Cross-species fraction
| set | n_pairs | cross_species | cross_species_fraction |
|---|---|---|---|
| positives | 31678 | 61 | 0.002 |
| N0 | 32425 | 511 | 0.016 |
| N1 | 31678 | 17443 | 0.551 |
| N2 | 31678 | 14353 | 0.453 |
| N3 | 31678 | 16432 | 0.519 |
| N5 | 31678 | 13583 | 0.429 |
| N2-exact | 30404 | 13473 | 0.443 |
| N2-nearest | 31678 | 14170 | 0.447 |
| N2-species | 31656 | 46 | 0.001 |
Same-species shortcut
| evaluated_on | n_evaluated | roc_auc |
|---|---|---|
| N0 | 12817 | 0.508 |
| N1 | 12665 | 0.773 |
| N2 | 12665 | 0.728 |
| N3 | 12667 | 0.760 |
| N5 | 12665 | 0.710 |
| N2-exact | 12409 | 0.722 |
| N2-nearest | 12667 | 0.725 |
| N2-species | 12663 | 0.500 |
Within-species controls
| species | negative_set | representation | model | test_pairs | roc_auc | pr_auc |
|---|---|---|---|---|---|---|
| dmelanogaster | N0 | Degree only | lr | 8559 | 0.830 | 0.831 |
| dmelanogaster | N0 | AAC+CTD | lr | 8559 | 0.834 | 0.859 |
| dmelanogaster | N0 | AAC+CTD | mlp | 8559 | 0.975 | 0.981 |
| dmelanogaster | N2 | Degree only | lr | 8698 | 0.536 | 0.539 |
| dmelanogaster | N2 | AAC+CTD | lr | 8698 | 0.555 | 0.546 |
| dmelanogaster | N2 | AAC+CTD | mlp | 8698 | 0.533 | 0.528 |
| dmelanogaster | N2-exact | Degree only | lr | 8557 | 0.520 | 0.530 |
| dmelanogaster | N2-exact | AAC+CTD | lr | 8557 | 0.546 | 0.552 |
| dmelanogaster | N2-exact | AAC+CTD | mlp | 8557 | 0.532 | 0.543 |
| dmelanogaster | N2-nearest | Degree only | lr | 8698 | 0.495 | 0.495 |
| dmelanogaster | N2-nearest | AAC+CTD | lr | 8698 | 0.553 | 0.552 |
| dmelanogaster | N2-nearest | AAC+CTD | mlp | 8698 | 0.546 | 0.545 |
| celegans | N0 | Degree only | lr | 1573 | 0.868 | 0.881 |
| celegans | N0 | AAC+CTD | lr | 1573 | 0.925 | 0.940 |
| celegans | N0 | AAC+CTD | mlp | 1573 | 0.979 | 0.985 |
| celegans | N2 | Degree only | lr | 1580 | 0.583 | 0.588 |
| celegans | N2 | AAC+CTD | lr | 1580 | 0.549 | 0.550 |
| celegans | N2 | AAC+CTD | mlp | 1580 | 0.535 | 0.550 |
| celegans | N2-exact | Degree only | lr | 1441 | 0.583 | 0.636 |
| celegans | N2-exact | AAC+CTD | lr | 1441 | 0.538 | 0.601 |
| celegans | N2-exact | AAC+CTD | mlp | 1441 | 0.541 | 0.603 |
| celegans | N2-nearest | Degree only | lr | 1580 | 0.502 | 0.528 |
| celegans | N2-nearest | AAC+CTD | lr | 1580 | 0.559 | 0.565 |
| celegans | N2-nearest | AAC+CTD | mlp | 1580 | 0.560 | 0.564 |
| ecoli | N0 | Degree only | lr | 2573 | 0.951 | 0.954 |
| ecoli | N0 | AAC+CTD | lr | 2573 | 0.936 | 0.944 |
| ecoli | N0 | AAC+CTD | mlp | 2573 | 0.966 | 0.973 |
| ecoli | N2 | Degree only | lr | 2364 | 0.583 | 0.569 |
| ecoli | N2 | AAC+CTD | lr | 2364 | 0.566 | 0.548 |
| ecoli | N2 | AAC+CTD | mlp | 2364 | 0.589 | 0.565 |
| ecoli | N2-exact | Degree only | lr | 2082 | 0.581 | 0.645 |
| ecoli | N2-exact | AAC+CTD | lr | 2082 | 0.565 | 0.628 |
| ecoli | N2-exact | AAC+CTD | mlp | 2082 | 0.572 | 0.641 |
| ecoli | N2-nearest | Degree only | lr | 2364 | 0.508 | 0.510 |
| ecoli | N2-nearest | AAC+CTD | lr | 2364 | 0.526 | 0.519 |
| ecoli | N2-nearest | AAC+CTD | mlp | 2364 | 0.561 | 0.540 |
Methods
The dataset (11,529 proteins, 65,918 pairs) was audited and canonicalized to 64,103 unique undirected pairs (31,678 positive, 32,425 negative). Following the protein-novelty and negative-sampling control framework, a random pair split (R0) and a matched protein-novelty curve (R1 both proteins seen, R2 one unseen, R3 both unseen; shared training set of 31,863 pairs) were built from one partition of identical-sequence groups, with automated leakage gates. Putative negative sets (N0, N1, N2, N3, N5, N2-exact, N2-nearest, N2-species) were constructed by one-sided substitution matched on positive-network degree and/or sequence length deciles. AAC+CTD descriptors (167-d) with symmetric pair fusion were used with lr, rf, mlp models. Degree-only and length-only classifiers were trained on the reference negatives and evaluated on each alternative set, and an MLP was re-evaluated with each negative definition used consistently for training and testing at R0 and R3. Uncertainty was quantified with a connected-component bootstrap (1000 replicates) and a delete-one-component jackknife, with Benjamini–Hochberg adjustment. Seed 42. Species diagnostics measured the cross-species fraction of each negative set, the ROC-AUC of a same-species indicator, species-matched degree negatives (N2-species), and within-species replication of the degree-only and sequence controls.