SeaWolf-AI commited on
Commit
2b82572
ยท
verified ยท
1 Parent(s): 0228ae9

submit: reject wrong-shaped predictions with a clear message

Browse files
Files changed (2) hide show
  1. app.py +17 -0
  2. i18n.js +2 -0
app.py CHANGED
@@ -492,6 +492,23 @@ def submit(s: Submission, request: Request):
492
  if got < n:
493
  raise HTTPException(400, "์˜ˆ์ธก์ด %d๊ฐœ ํ•„์š”ํ•œ๋ฐ %d๊ฐœ๋‹ค. ๋นˆ ํ•ญ๋ชฉ์€ ์ฑ„์›Œ ๋ณด๋‚ด๋ผ "
494
  "- ์ž„์˜๋กœ ๋ฉ”์šฐ๋ฉด ๊ทธ ๊ฐ’์ด ์ ์ˆ˜์— ๋“ค์–ด๊ฐ„๋‹ค" % (n, got))
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
495
  sid = hashlib.sha256(("%s|%s|%s|%f" % (s.board, u["user"], s.method, time.time()))
496
  .encode()).hexdigest()[:16].upper()
497
  rec = {"submission_id": sid, "board": s.board, "hf_user": u["user"],
 
492
  if got < n:
493
  raise HTTPException(400, "์˜ˆ์ธก์ด %d๊ฐœ ํ•„์š”ํ•œ๋ฐ %d๊ฐœ๋‹ค. ๋นˆ ํ•ญ๋ชฉ์€ ์ฑ„์›Œ ๋ณด๋‚ด๋ผ "
494
  "- ์ž„์˜๋กœ ๋ฉ”์šฐ๋ฉด ๊ทธ ๊ฐ’์ด ์ ์ˆ˜์— ๋“ค์–ด๊ฐ„๋‹ค" % (n, got))
495
+ # **๋ชจ์–‘๋„ ๋ณธ๋‹ค.** ์ถ•์ด ์—ฌ๋Ÿฟ์ธ ๋ถ€๋ฌธ์— ์ˆซ์ž ํ•˜๋‚˜๋ฅผ ๋ณด๋‚ด๋ฉด ์ฑ„์ ๊ธฐ๋Š” ์ „๋ถ€ missing ์œผ๋กœ
496
+ # ์ฒ˜๋ฆฌํ•˜๊ณ  ์ ์ˆ˜๊ฐ€ ๋น„์–ด์„œ ๋Œ์•„์˜จ๋‹ค - ์ฐธ๊ฐ€์ž๋Š” ๋ฌด์—‡์ด ํ‹€๋ ธ๋Š”์ง€ ์•Œ ๊ธธ์ด ์—†๋‹ค.
497
+ # ๊ฐœ์ˆ˜๋งŒ ์„ธ๊ณ  ํ†ต๊ณผ์‹œํ‚ค๋ฉด ๊ทธ ์นจ๋ฌต์ด ์šฐ๋ฆฌ ๋ชซ์ด ๋œ๋‹ค.
498
+ ax = b.get("axes")
499
+ if ax:
500
+ bad = [k for k, v in (s.predictions or {}).items()
501
+ if not (isinstance(v, (list, tuple)) and len(v) == ax)]
502
+ if bad:
503
+ raise HTTPException(400, "์ด ๋ถ€๋ฌธ์€ ํ™”ํ•ฉ๋ฌผ๋งˆ๋‹ค ์ˆซ์ž %d๊ฐœ์งœ๋ฆฌ ๋ฐฐ์—ด์ด ํ•„์š”ํ•˜๋‹ค. "
504
+ "%d๊ฑด์ด ๊ทธ ๋ชจ์–‘์ด ์•„๋‹ˆ๋‹ค (์˜ˆ: %s). ํ˜•์‹์€ ๋ถ€๋ฌธ ์•ˆ๋‚ด๋ฅผ ๋ณด๋ผ"
505
+ % (ax, len(bad), bad[0]))
506
+ else:
507
+ bad = [k for k, v in (s.predictions or {}).items()
508
+ if isinstance(v, (list, tuple))]
509
+ if bad:
510
+ raise HTTPException(400, "์ด ๋ถ€๋ฌธ์€ ํ™”ํ•ฉ๋ฌผ๋งˆ๋‹ค ์ˆซ์ž ํ•˜๋‚˜๊ฐ€ ํ•„์š”ํ•œ๋ฐ ๋ฐฐ์—ด์ด ์™”๋‹ค "
511
+ "(%d๊ฑด, ์˜ˆ: %s)" % (len(bad), bad[0]))
512
  sid = hashlib.sha256(("%s|%s|%s|%f" % (s.board, u["user"], s.method, time.time()))
513
  .encode()).hexdigest()[:16].upper()
514
  rec = {"submission_id": sid, "board": s.board, "hf_user": u["user"],
i18n.js CHANGED
@@ -97,6 +97,7 @@ ko: {
97
  fMethod: "๋ฐฉ๋ฒ• ์ด๋ฆ„", fMethodH: "์ˆœ์œ„ํ‘œ์— ํ‘œ์‹œ๋  ๋ช…์นญ",
98
  fTrain: "ํ•™์Šต์— ์‚ฌ์šฉํ•œ ๋ฐ์ดํ„ฐ", fTrainH: "5์กฐ ๋ˆ„์ถœ ๊ฒ€์‚ฌ์— ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค",
99
  fPred: "์˜ˆ์ธก๊ฐ’", fPredH: "JSON ๋˜๋Š” CSV (compound_id, prediction)",
 
100
  drop: "ํŒŒ์ผ์„ ๋Œ์–ด๋‹ค ๋†“๊ฑฐ๋‚˜ ํด๋ฆญํ•˜์—ฌ ์„ ํƒ",
101
  send: "์ œ์ถœ", needLogin: "์ œ์ถœํ•˜๋ ค๋ฉด HF ๊ณ„์ • ๋กœ๊ทธ์ธ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.",
102
  step3d: "๋ชจ๋ธ๊ณผ ์ถ”๋ก  ํ™˜๊ฒฝ์„ ํ•จ๊ป˜ ์ œ์ถœํ•˜๋ฉด ์ง์ ‘ ์žฌ์‹คํ–‰ํ•˜์—ฌ ๋™์ผ ๊ฒฐ๊ณผ๋ฅผ ํ™•์ธํ•˜๊ณ  " +
@@ -296,6 +297,7 @@ en: {
296
  fMethod: "Method name", fMethodH: "as it will appear on the leaderboard",
297
  fTrain: "Training data used", fTrainH: "used for the clause 5 leakage screen",
298
  fPred: "Predictions", fPredH: "JSON or CSV (compound_id, prediction)",
 
299
  drop: "Drop a file here, or click to choose",
300
  send: "Submit", needLogin: "Signing in with a Hugging Face account is required to submit.",
301
  step3d: "Submit the model with its inference environment and we re-execute it, confirm the " +
 
97
  fMethod: "๋ฐฉ๋ฒ• ์ด๋ฆ„", fMethodH: "์ˆœ์œ„ํ‘œ์— ํ‘œ์‹œ๋  ๋ช…์นญ",
98
  fTrain: "ํ•™์Šต์— ์‚ฌ์šฉํ•œ ๋ฐ์ดํ„ฐ", fTrainH: "5์กฐ ๋ˆ„์ถœ ๊ฒ€์‚ฌ์— ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค",
99
  fPred: "์˜ˆ์ธก๊ฐ’", fPredH: "JSON ๋˜๋Š” CSV (compound_id, prediction)",
100
+ fPredAx: n => `์ด ๋ถ€๋ฌธ์€ ์ถ•์ด ${n}๊ฐœ๋‹ค โ€” ํ™”ํ•ฉ๋ฌผ๋งˆ๋‹ค ์ˆซ์ž ${n}๊ฐœ์งœ๋ฆฌ ๋ฐฐ์—ด์„ JSON ์œผ๋กœ ์˜ฌ๋ฆฐ๋‹ค`,
101
  drop: "ํŒŒ์ผ์„ ๋Œ์–ด๋‹ค ๋†“๊ฑฐ๋‚˜ ํด๋ฆญํ•˜์—ฌ ์„ ํƒ",
102
  send: "์ œ์ถœ", needLogin: "์ œ์ถœํ•˜๋ ค๋ฉด HF ๊ณ„์ • ๋กœ๊ทธ์ธ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.",
103
  step3d: "๋ชจ๋ธ๊ณผ ์ถ”๋ก  ํ™˜๊ฒฝ์„ ํ•จ๊ป˜ ์ œ์ถœํ•˜๋ฉด ์ง์ ‘ ์žฌ์‹คํ–‰ํ•˜์—ฌ ๋™์ผ ๊ฒฐ๊ณผ๋ฅผ ํ™•์ธํ•˜๊ณ  " +
 
297
  fMethod: "Method name", fMethodH: "as it will appear on the leaderboard",
298
  fTrain: "Training data used", fTrainH: "used for the clause 5 leakage screen",
299
  fPred: "Predictions", fPredH: "JSON or CSV (compound_id, prediction)",
300
+ fPredAx: n => `This board has ${n} axes โ€” upload JSON with an array of ${n} numbers per compound`,
301
  drop: "Drop a file here, or click to choose",
302
  send: "Submit", needLogin: "Signing in with a Hugging Face account is required to submit.",
303
  step3d: "Submit the model with its inference environment and we re-execute it, confirm the " +