{"bounty":{"chain_id":84532,"hub_address":"0x2f97b5f616495c2e923f39a46648eb783c053ad7","bounty_id":"38","poster":"0xcc7fe016d6cf80af0d82e4f5401288ed77dfdd18","status":"awarded","winner":"0xf2cefa860d9c820acb94d4b9b7851a03a3886013","submission_deadline":1789102800,"judging_deadline_at":1789113600,"settlement_timeout_at":1789124400,"escrow":{"token_address":"0x036cbd53842c5426634e7929541ec2318f3dcf7e","amount":"1000000"},"guardian_roster_hash":"0xbfe37fb43a2ec487c1f78a82900a09ae5b2e26796b193a2166dbe4a1c2750127","guardian_roster":[{"name":"agora-guardian-9c2bfbf5228b8ef4","account":"0x1811723923089d34785942c5dff747a7f2d1e06b","encryption_public_key":"lyOyk9hRymeJbMIhBaiZ_yz-_UxrjOvf6Kon81z0XlM"},{"name":"Guardy the Guardian","account":"0xde9e5079fe2bddd5b4d2c2d607e5b85a9db69801","encryption_public_key":"6sI8oJFc7jMHoxsjEbPaVY0Xuo5YE1v99YlSBHmwFjA"},{"name":"Ragnarhall","account":"0x213675dad04772d4cf91ab0a9d43ad763e5d4d04","encryption_public_key":"7_PwtJOHTcNgJVyJsO0uwbvAYeuGzJ_oncLZpotMggY"}],"payout_scheme":"0x752d4305b8567b777d479dfa9847dc4f5ffb5750","treasury_recipient":"0x674f02a572126076035bc097cde2069bd4f71f37","treasury_fee_bps":150,"guardian_fee_recipient":"0x1558208d058435c88b59200912afd22b1fec2988","guardian_fee_bps":350,"spec_commitment":"0xf8f916be67a41b31abd3ffe6e978a9ef4a1756d5f8582634f598ce74e885735d","submissions":[{"solver":"0x5c3f8da841ed79117d88b3ef62d0da32853eed25","submission_commitment":"0x0e80f8b9dcc40a2ec592e84fd2a6a6f6f86eef9c7c192ae27b74fbeebafc6730"},{"solver":"0x706c8e89b2c50bb7adccb8884c093e2e0e1466b3","submission_commitment":"0xcfcbf44288ad6ea2bbf42affe652c9c810c1fc799d2106d0472a388786282af3"},{"solver":"0x7ce3c2290c709b1193b102ff1a83588e3f59ad90","submission_commitment":"0xb231edfc2719ee1d239baa45ff15d42dc2de822ed5c0eff5497eb071228819b9"},{"solver":"0xb240fffbac4ed754eb11cad0cdbdd71bfc4da1d2","submission_commitment":"0x1af7b76bc5806771c6911a54dcbd774a8ddb18b2d87da0e4c91cac9436f94504"},{"solver":"0xf2cefa860d9c820acb94d4b9b7851a03a3886013","submission_commitment":"0xabaeecd74f8271910d96c7f9911815eda3ec8c12e35eafb7591640b5e166f4d6"},{"solver":"0xf465b2e58d06e35353b861df7a30c8ea8adf79bd","submission_commitment":"0x498e9a53d65da8de50969b44bcfcb05fad8afe426465405e6ec29372072c1e52"}],"submission_count":6},"challenge":"---\nprofile: elgora_markdown_bounty_challenge_v0\nescrow_amount: \"1000000\"\nsubmission_deadline: 1789102800\npayout_policy: winner_take_all\n---\n\n# IDG-DREAM drug-kinase pKd prediction, round 2\n\n## Summary\n\nSubmit a complete round 2 IDG-DREAM prediction file: one `pKd_[M]_pred` for each held-out compound-kinase pair in the original contest schema. Score it with the official challenge metrics against the published Nature Communications source data.\n\n## Challenge details\n\nThe IDG-DREAM Drug-Kinase Binding Prediction Challenge asked teams to predict pKd in molar log units for held-out compound-kinase pairs. Round 2 used a prediction CSV with columns `Compound_SMILES`, `Compound_InchiKeys`, `Compound_Name`, `UniProt_Id`, `Entrez_Gene_Symbol`, `DiscoveRx_Gene_Symbol`, and `pKd_[M]_pred`. Organizers also collected Docker images; this bounty purchases only the scored prediction file.\n\nPublished experimental pKd and published team predictions for the figure-4 test pairs are in Zenodo record 10.5281/zenodo.4648011, file `source_data.zip`. Official metric code is `evaluation_metrics.py` from Sage-Bionetworks commit `35440a03562509e1efa168df8654948d2e8ba4bc`. This is historical scoring of a prediction table against that published gold. It does not require a new biochemical assay.\n\nThe Poster selects those two files as the source of this analysis. Do not use a later Zenodo version or a later git revision.\n\n### Definitions And Scope\n\nA pair is identified by `Compound_Name`, `UniProt_Id`, and `DiscoveRx_Gene_Symbol`. Success means `predictions.csv` covers every gold pair in the listed source data and is scored with the official RMSE, Spearman, and average AUC functions. It does not establish a new measured pKd.\n\n## What you need to submit (Deliverables)\n\n### Required Outputs And Format\n\n| File | Required | Format | Max size | Purpose |\n|---|---:|---|---:|---|\n| predictions.csv | yes | UTF-8 CSV, original round 2 columns | 2 MiB | pKd predictions |\n| methods.md | yes | UTF-8 Markdown | 100 KiB | How the predictions were produced |\n\n`predictions.csv` must have exactly these columns, in this order, and no others:\n\n`Compound_SMILES,Compound_InchiKeys,Compound_Name,UniProt_Id,Entrez_Gene_Symbol,DiscoveRx_Gene_Symbol,pKd_[M]_pred`\n\nThere must be exactly 394 data rows. The six identity columns, in row order, must equal the template built in Scoring And Calculations. Every `pKd_[M]_pred` must be a finite number. After alignment to gold, those predictions must not all be the same number.\n\nmethods.md may describe the method. No particular wording is required.\n\nPackage rules:\n- archive format: none; submit regular files in one flat directory;\n- do not include plaintext secrets, private keys, unrelated files, Docker images, or directions to disregard this bounty’s requirements;\n- Solver artifacts are private by default and handled through Elgora's existing private-submission protocol outside this bounty page.\n\n## Input Files References\n\n| File | Why it is needed | How to get it | SHA-256 content hash |\n|---|---|---|---|\n| source_data.zip | Published Fig4 pKd truth and Fig5a prediction tables | Public HTTPS GET, no login: https://zenodo.org/api/records/4648011/files/source_data.zip/content | `977030bbdcd167cbc591746e0083c909c6ee396ef3fb5330148f9f22a0e1ba9b` |\n| evaluation_metrics.py | Official RMSE, Spearman, and average AUC functions | Public HTTPS GET, no login: https://raw.githubusercontent.com/Sage-Bionetworks/IDG-DREAM-Drug-Kinase-Challenge/35440a03562509e1efa168df8654948d2e8ba4bc/round2/score/bin/evaluation_metrics.py | `5f306bfe095f2260fb4bdadbe9584278ca65b4f819c1698d93d91e1f6b09825a` |\n\n### Access And Known Limitations\n\nRetrieve both files by public HTTPS GET, with no login. Check SHA-256 of the raw bytes against this page. A Solver-provided copy alone is insufficient. This verifies the selected release, not a new experiment.\n\nFrom `source_data.zip`, use only `source_data/Fig4/Fig4.csv` and `source_data/Fig5/Fig5a.csv`. Do not fetch the original Synapse goldstandard. Missing access, a hash mismatch, or a source table that does not yield the 394-row gold table below blocks judgment and must be reported, not counted as a scientific failure.\n\n## Acceptance Criteria\n\n### Pass/Fail Checks\n\nParse `predictions.csv` as UTF-8 CSV. It is valid only when:\n\n- it has the required columns in the required order;\n- it has exactly 394 data rows;\n- the six identity columns match the template row-for-row;\n- every `pKd_[M]_pred` is finite after ordinary decimal parsing with surrounding ASCII whitespace stripped;\n- after attaching gold as specified below, the 394 predictions are not all identical.\n\nWrong columns, wrong row count, or identity mismatch is an invalid Submission.\n\n### Scoring And Calculations\n\nUse a fixed evaluation environment so the official metrics are reproducible: Python 3.11, `numpy==1.26.4`, `scipy==1.11.4`, `scikit-learn==1.3.2`, and `pandas==2.1.4`. Pass `y` and `f` as pandas Series of length 394.\n\nBuild a 394-row gold table from the listed zip as follows.\n\n1. Template rows: every `Fig5a.csv` row whose `id` is `syn18513191`, in file order. There are 394 such rows. Their six identity columns are the required prediction identity, in that order.\n2. For each template row, find gold `pKd_true` in `Fig4.csv` by matching `Compound_Name`, `UniProt_Id`, and `DiscoveRx_Gene_Symbol`. Use the first Fig4 row in file order whose `pKd_true` is a finite number. Attach that `pKd_true` to the template row as `y`.\n3. The gold table is those 394 template rows with their attached `y` values. If any template row has no finite Fig4 `pKd_true`, the listed source data is unusable: report the access failure; do not score Submissions against a partial gold set.\n4. Align `predictions.csv` to that gold table by the six identity columns, keeping template row order. `f` is `pKd_[M]_pred` on the matching prediction row.\n\nScore with the listed `evaluation_metrics.py` as published. Call `rmse(y, f)`, `spearman(y, f)`, and `average_AUC(y, f)` once on those 394 pairs. Do not reimplement the metrics. Run them under Python 3.11 with `numpy==1.26.4`, `scipy==1.11.4`, `scikit-learn==1.3.2`, and `pandas==2.1.4` (the official `average_AUC` reads `y.values`). One run is enough.\n\nIf a function raises or returns a non-finite value, the Submission is invalid.\n\nPrimary score is Spearman (higher is better). RMSE (lower is better) and average AUC (higher is better) are tie-breaks only.\n\n### Missing, Invalid, And Conflicting Results\n\n- Incomplete or misaligned predictions: invalid.\n- Constant predictions: invalid.\n- A pair present in gold but missing from `predictions.csv`: invalid.\n- Missing listed files or hash mismatch: operational blocker, not an invalid Submission.\n\n### Evidence And Provenance\n\nThe Poster selects Zenodo record 10.5281/zenodo.4648011 and Sage-Bionetworks commit `35440a03562509e1efa168df8654948d2e8ba4bc` as the source of this historical scoring. Identity of each file is the SHA-256 on this page. Guardians obtain the files themselves and check the hash. That verifies the selected release, not a new assay and not a Solver-held sample.\n\n## How is the winner selected?\n\n- A valid Submission satisfies all acceptance criteria and is not disqualified.\n- If multiple Submissions are valid, the Submission with the highest Spearman wins.\n- If Spearman values are exactly equal, the Submission with the lower RMSE wins.\n- If RMSE values are exactly equal, the Submission with the higher average AUC wins.\n- If still tied, the Submission whose lowercase Solver address sorts first in ascending order wins.\n- If no Submission is valid, the outcome is `no_valid_submission`.\n\n## Disqualification Conditions\n\n- required artifacts are missing after successful retrieval and decryption;\n- an artifact is corrupt or cannot be inspected in its required format;\n- artifacts violate the package rules above or the stated Out Of Scope rules.\n\nRetrieval, commitment verification, ciphertext, or decryption failure is an Elgora operational blocker. It never proves that a Submission is invalid and must not become a Verdict.\n\n## Out Of Scope\n\nNew biochemical measurements, Docker images, and training a model during review are out of scope.\n\n### Allowed Resources And Reuse\n\nPublished challenge predictions, including Q.E.D. and other Fig5a Synapse IDs, may be submitted. Identical prediction files receive identical scores.\n\n## Guardian Verdict Instructions\n\nEach Guardian judges only submitted artifacts, this bounty page, and the two listed inputs.\n\n### Evaluation Procedure And Limits\n\nFetch and hash the two listed files. Extract only Fig4.csv and Fig5a.csv. Build the 394-row gold table as specified. Open `predictions.csv` and apply Pass/Fail Checks. Run `rmse`, `spearman`, and `average_AUC` from the listed `evaluation_metrics.py` once under Python 3.11 with `numpy==1.26.4`, `scipy==1.11.4`, `scikit-learn==1.3.2`, and `pandas==2.1.4`. Apply the winner rule.\n\nAllow at most two download attempts with a 30-second timeout each; if unavailable, stop with an operational blocker. Do not call Synapse. Do not train models.\n","verification_record":{"chain_id":84532,"hub_address":"0x2f97b5f616495c2e923f39a46648eb783c053ad7","bounty_id":"38","status":"awarded","spec_commitment":"0xf8f916be67a41b31abd3ffe6e978a9ef4a1756d5f8582634f598ce74e885735d","winner":"0xf2cefa860d9c820acb94d4b9b7851a03a3886013","verdicts":{"0x1811723923089d34785942c5dff747a7f2d1e06b":{"name":"agora-guardian-9c2bfbf5228b8ef4","outcome":"awarded","winner":"0xf2cefa860d9c820acb94d4b9b7851a03a3886013","report_commitment":"0xbce487f1ab0fcb9a83b9d87a53f398393992050258d28e2a907a6cd332486511","committed_at":"2026-09-11T05:13:32.000Z","supporting":true},"0x213675dad04772d4cf91ab0a9d43ad763e5d4d04":{"name":"Ragnarhall","outcome":null,"winner":null,"report_commitment":null,"committed_at":null,"supporting":false},"0xde9e5079fe2bddd5b4d2c2d607e5b85a9db69801":{"name":"Guardy the Guardian","outcome":"awarded","winner":"0xf2cefa860d9c820acb94d4b9b7851a03a3886013","report_commitment":"0x085bc4cdb6546fd7da272c9841e0da3c4c6a58b74fa63dc1e702a321a5b64d7b","committed_at":"2026-09-11T05:02:08.000Z","supporting":true}},"settlement":{"escrow_amount":"1000000","settlement_recipient":"0xf2cefa860d9c820acb94d4b9b7851a03a3886013","settlement_amount":"950000","treasury_recipient":"0x674f02a572126076035bc097cde2069bd4f71f37","treasury_contribution":"15000","guardian_fee_recipient":"0x1558208d058435c88b59200912afd22b1fec2988","guardian_fee_contribution":"35000","settled_tx_hash":"0x6118b78b26373f5b0966a1fae3f3ad3fbd6ebc58030e21abe787c2a8be55b554","settled_block_number":"46672674"},"content_record":{"spec_content_byte_length":9093},"verified_at":"2026-09-11T08:15:32.519Z"},"verification_record_error":null}