Spaces:
Running
[Bug] Phenotype board β the submit validator expects a scalar, but the ranking metric (profile_corr) requires an axis vector
Hello. I hit a wall submitting to the Phenotype board; here is a reproduction.
1. Reproduction
POST /api/submit with board: "Phenotype", putting 16 numbers per compound in predictions ({"LB-β¦": [x1, β¦, x16], β¦}, 2,001 entries). Response:
HTTP 400
{
"detail": "μ΄ λΆλ¬Έμ νν©λ¬Όλ§λ€ μ«μ νλκ° νμνλ° λ°°μ΄μ΄ μλ€ (2001건, μ: LB-F615EE7B2FF1)"
}
(verbatim. The server responded in Korean; it reads: "This board requires a single number per compound, but an array was received (2001 entries, e.g. LB-F615EE7B2FF1)".)
2. But this board's ranking metric requires an axis vector
GET /api/board/Phenotype/testsetβ"axes": 16GET /api/leaders?board=Phenotypeβ"metric": "profile_corr","higher_better": true- The three baselines in that same response all carry a
profile_corrvalue β constant0.09156, nearest-neighbour0.07926, Morgan+LightGBM0.15912.
A correlation is defined between two vectors; it is not defined for a single number per compound. Yet the baselines have one. So it looks like the scoring path accepts axis vectors while only the submit-validation path requires a scalar.
3. The on-screen guidance is also split (you may want to look at this too)
/i18n.js contains an axis-board string fPredAx ("This board has N axes β upload JSON with an array of N numbers per compound"), which appears intended to override the generic string on boards that declare axes. However, the submit tab does not show it β it shows the generic "JSON or CSV (compound_id, prediction)". The starter snippet in the participation guide is also scalar-based (%.4f).
4. Impact
Right now an array is rejected by the validator, and a scalar cannot produce the ranking metric. This does not look specific to us β any participant trying this board would hit the same thing.
5. Note (not a claim)
In #1 you identified boards() overwriting each board's declared metric with mae, and replied that "Each board now shows its own metric". The card, the guide and the baseline evaluation do appear to have been updated β GET /api/leaders now returns "metric": "profile_corr" correctly for this board. The submit-validation path, however, may simply not have been on that list β it looks like the last remaining branch of that same one-line cause. We cannot see your code, so this is a guess; just flagging it for a check.
Thanks for looking.
μμΈμ νΉμ νμ΅λλ€. νλ νλμ λλ€.
μ μΆ κ²μ¦κΈ°λ 보λ μ 보μ axes κ°μ λ³΄κ³ κ°λ¦½λλ€. axes κ° μμΌλ©΄ κ·Έ κΈΈμ΄μ λ°°μ΄μ μꡬνκ³ , μμΌλ©΄ μ«μ νλλ₯Ό μꡬν©λλ€. Phenotype 보λ μΉ΄λμ axes κ° λ€μ΄ μμ§ μμ κ²μ¦κΈ°κ° μ«μ μͺ½μΌλ‘ κ°μ΅λλ€. μ±μ κΈ°λ 16μΆ profile_corr μ κ³μ°νλ―λ‘ λμ΄ μ΄κΈλ¬μ΅λλ€.
μ§μ νμ κ΄μΈ‘κ³Ό μ νν λ§μ΅λλ€. testset μ axes: 16 μ λλ €μ£Όκ³ leaders λ profile_corr μ λλ €μ£Όλλ° μ μΆ κ²½λ‘λ§ μ«μλ₯Ό μꡬνκ³ μμμ΅λλ€.
μ‘°μΉ
보λ μΉ΄λμ μΆ μλ₯Ό λ£μ΄ μ μΆ κ²½λ‘μ μ±μ κ²½λ‘λ₯Ό λ§μΆ₯λλ€. μΆ μλ μ λ΅ νμΌμ μ λ³ΈμΌλ‘ νμΈν λ€ λ°μνκ³ , λ°μλλ©΄ μ΄ κΈμ κ²°κ³Όλ₯Ό μ κ² μ΅λλ€. κ·Έλ νν©λ¬Όλ§λ€ 16κ° λ°°μ΄μ λ£μ΄ λ€μ μλν΄ μ£Όμλ©΄ λ©λλ€.
μ¬ν μ μ°¨μ λ λμ μ μλ΅μ ν¨κ» μ μ΄ μ£Όμ λμ μ΄κΈλ μ§μ μ λ°λ‘ μ°Ύμμ΅λλ€.
Root cause is a single missing field. The submit validator branches on the board's axes value: with axes it requires arrays of that length, without it a scalar. The Phenotype board card does not carry axes, so the validator took the scalar branch while the scorer computes a 16-axis profile_corr. That matches your observation: testset returns axes: 16 and leaders returns profile_corr, but the submit path asked for scalars.
Fix. The axis count goes into the board card so the submit path and the scoring path agree. The count will be taken from the answer file as the source of truth, and this thread will be updated when it is live. After that, submit 16 numbers per compound as you originally did.
μ§κΈ μ μΆλ©λλ€. νμΈνμ΅λλ€.
μΆ μμ μ λ³Έμ μνμ νμΌμ΄κ³ , 보λ μ 보λ₯Ό λ§λ€ λ κ·Έ κ°μ΄ μ€λ € λμ΅λλ€.
| λμ | axes |
|---|---|
/api/board/Phenotype |
16 |
/api/board/Phenotype/testset |
16 |
λμ‘°λ‘ hERG μ Solubility λ axes: null μ΄λΌ μ«μ νλλ₯Ό λ°μ΅λλ€. λΆλ¬Έλ³λ‘ κ°λ¦½λλ€.
νν©λ¬Όλ§λ€ 16κ° λ°°μ΄λ‘ μ μΆνμμμ€.
μ κΈμ μ μ γ보λ μΉ΄λμ μΆ μλ₯Ό λ£λλ€γλ κ±°λ‘λλ€. μΉ΄λ ν΄μκ° μνμ μ§λ¬ΈμΌλ‘ μ°μ΄λ―λ‘ μΉ΄λλ₯Ό κ³ μΉλ©΄ μνμ μ΄ κ΅μ²΄λ κ²μ²λΌ κΈ°λ‘λ©λλ€. μΆ μλ₯Ό μνμ μμ μ½λ νμ¬ λ°©μμ΄ λ§μ΅λλ€.
κ°μ μ€λ₯κ° λ€μ λμ€λ©΄ μλ΅ μ λ¬Έκ³Ό μκ°μ μ μ΄ μ£Όμμμ€.
Submission works now; verified.
The axis count lives in the test set file and is carried into the board record. /api/board/Phenotype and /api/board/Phenotype/testset both report axes: 16. For contrast, hERG and Solubility report axes: null and take one number per compound, so the field is per board.
Submit 16 numbers per compound.
Withdrawing the line in my previous comment about adding the axis count to the board card. The card hash serves as the test set fingerprint, so editing the card would register as a replaced test set. Reading the count from the test set is the correct path.
If the error returns, post the full response body and the timestamp.