{
  "id": 382695,
  "title": "Draft Solution",
  "content": "<p>Uploading my notebook and relevant files. I will try to write something up more fully when I get the time. Summary:</p>\n<p>I've made two categories of models basic (only using SMILES given) and basic-plus (using SMILES plus Id number). Basic-plus (in my mind) has a fairly similar architecture to basic and <em>should</em> have performed similarly, if Id wasn't a significant factor. However, the best (and latest) basic model got a score of 0.08981 and the best (and the one on leaderboard #6) got a score of 0.11536--a fairly wide delta.</p>\n<p><strong>Basic-plus:</strong><br>\nLeaderboard submission is basic-plus (notebook attached, relevant file <a href=\"https://drive.google.com/file/d/1rBCAxlrbaWF983gBckcPQW2BMtzel1jS/view?usp=sharing)\" target=\"_blank\">https://drive.google.com/file/d/1rBCAxlrbaWF983gBckcPQW2BMtzel1jS/view?usp=sharing)</a>.</p>\n<p><strong>Basic</strong><br>\nThe best basic model (0.08981) is a slight modification of the approach presented in the discussion post (<a href=\"https://www.kaggle.com/code/davidoloren/getting-score-0-11353-multi-representation-model/notebook\" target=\"_blank\">https://www.kaggle.com/code/davidoloren/getting-score-0-11353-multi-representation-model/notebook</a>) which ended with a private score of 0.07443.</p>\n<p>… I think the situation is very much complicated by noise in the underlying, and I would further share that to my knowledge the basic models are fairly representative of high-quality molecular property predictors, and similar models have scored very highly on the therapeutic data commons dataset</p>",
  "comments": [
    {
      "id": 2124962,
      "author_name": "Bernhard Rohde",
      "author_url": "",
      "post_date": "2023-02-01T10:21:25.407000",
      "content": "<p><a href=\"https://www.kaggle.com/davidoloren\" target=\"_blank\">@davidoloren</a> Looks like your basic-plus model was catching some of the plate structure. Have you tried using an explicitly guessed plate number (as in my solution <a href=\"https://www.kaggle.com/code/bernhardrohde/plate-row-column-model-with-clogp-for-solubility\" target=\"_blank\">https://www.kaggle.com/code/bernhardrohde/plate-row-column-model-with-clogp-for-solubility</a>) as a descriptor?</p>\n<pre>import re\n# Assuming 16 columns by 22 rows, which is a flipped format\nNCOLS = 16\nNROWS = 22\n\ndef ID2Coordinates(id) :\n    # returns a tripple of plate, row, column indexes inferred from the EOS id\n    intID = int(re.search(r'\\d+', id).group())\n    if intID &gt; 100000 : # top-up run\n        plate = 280 + (intID-100001)//352\n        row = (intID-100001)%352//NCOLS\n        column = (intID-100001)%352%NCOLS\n    else :\n        plate = (intID-1)//352\n        row = (intID-1)%352//NCOLS\n        column = (intID-1)%352%NCOLS\n    return plate, row, column\n</pre>",
      "votes": 1,
      "replies": [
        {
          "id": 2128668,
          "author_name": "DHuang",
          "author_url": "",
          "post_date": "2023-02-03T23:16:15.103000",
          "content": "<p>Nope you were way ahead of me on that one, I thought your guess was particularly insightful, I had seen similar trends based on a moving average of proportion of 0/1/2, but hadn't thought to explicitly demarcate them by an explicitly guessed plate number. Interestingly, for visualization I'd settled on using a moving average window of 400, similar to the 352, but I hadn't made to final leap (and I suspect that that actually is the main difference between the score you'd achieved and basic-plus).</p>",
          "votes": 2,
          "replies": [
            {
              "id": 2128994,
              "author_name": "Bernhard Rohde",
              "author_url": "",
              "post_date": "2023-02-04T08:37:11.140000",
              "content": "<p>I guess listening to the scientists doing the actual experiments for many years actually paid off here. Looks like experience (30+ years) can beat fancy methods at times ;-).</p>",
              "votes": 1,
              "replies": []
            }
          ]
        }
      ]
    }
  ],
  "comment_count": 3,
  "messages": [
    {
      "id": 2124029,
      "postDate": "2023-01-31T19:54:38.453Z",
      "content": "<p>Uploading my notebook and relevant files. I will try to write something up more fully when I get the time. Summary:</p>\n<p>I've made two categories of models basic (only using SMILES given) and basic-plus (using SMILES plus Id number). Basic-plus (in my mind) has a fairly similar architecture to basic and <em>should</em> have performed similarly, if Id wasn't a significant factor. However, the best (and latest) basic model got a score of 0.08981 and the best (and the one on leaderboard #6) got a score of 0.11536--a fairly wide delta.</p>\n<p><strong>Basic-plus:</strong><br>\nLeaderboard submission is basic-plus (notebook attached, relevant file <a href=\"https://drive.google.com/file/d/1rBCAxlrbaWF983gBckcPQW2BMtzel1jS/view?usp=sharing)\" target=\"_blank\">https://drive.google.com/file/d/1rBCAxlrbaWF983gBckcPQW2BMtzel1jS/view?usp=sharing)</a>.</p>\n<p><strong>Basic</strong><br>\nThe best basic model (0.08981) is a slight modification of the approach presented in the discussion post (<a href=\"https://www.kaggle.com/code/davidoloren/getting-score-0-11353-multi-representation-model/notebook\" target=\"_blank\">https://www.kaggle.com/code/davidoloren/getting-score-0-11353-multi-representation-model/notebook</a>) which ended with a private score of 0.07443.</p>\n<p>… I think the situation is very much complicated by noise in the underlying, and I would further share that to my knowledge the basic models are fairly representative of high-quality molecular property predictors, and similar models have scored very highly on the therapeutic data commons dataset</p>",
      "rawMarkdown": "Uploading my notebook and relevant files. I will try to write something up more fully when I get the time. Summary:\n\nI've made two categories of models basic (only using SMILES given) and basic-plus (using SMILES plus Id number). Basic-plus (in my mind) has a fairly similar architecture to basic and *should* have performed similarly, if Id wasn't a significant factor. However, the best (and latest) basic model got a score of 0.08981 and the best (and the one on leaderboard #6) got a score of 0.11536--a fairly wide delta.\n\n**Basic-plus:**\nLeaderboard submission is basic-plus (notebook attached, relevant file https://drive.google.com/file/d/1rBCAxlrbaWF983gBckcPQW2BMtzel1jS/view?usp=sharing).\n\n**Basic**\nThe best basic model (0.08981) is a slight modification of the approach presented in the discussion post (https://www.kaggle.com/code/davidoloren/getting-score-0-11353-multi-representation-model/notebook) which ended with a private score of 0.07443.\n\n... I think the situation is very much complicated by noise in the underlying, and I would further share that to my knowledge the basic models are fairly representative of high-quality molecular property predictors, and similar models have scored very highly on the therapeutic data commons dataset",
      "votes": 5
    },
    {
      "id": 2124962,
      "postDate": "2023-02-01T10:21:25.407Z",
      "content": "<p><a href=\"https://www.kaggle.com/davidoloren\" target=\"_blank\">@davidoloren</a> Looks like your basic-plus model was catching some of the plate structure. Have you tried using an explicitly guessed plate number (as in my solution <a href=\"https://www.kaggle.com/code/bernhardrohde/plate-row-column-model-with-clogp-for-solubility\" target=\"_blank\">https://www.kaggle.com/code/bernhardrohde/plate-row-column-model-with-clogp-for-solubility</a>) as a descriptor?</p>\n<pre>import re\n# Assuming 16 columns by 22 rows, which is a flipped format\nNCOLS = 16\nNROWS = 22\n\ndef ID2Coordinates(id) :\n    # returns a tripple of plate, row, column indexes inferred from the EOS id\n    intID = int(re.search(r'\\d+', id).group())\n    if intID &gt; 100000 : # top-up run\n        plate = 280 + (intID-100001)//352\n        row = (intID-100001)%352//NCOLS\n        column = (intID-100001)%352%NCOLS\n    else :\n        plate = (intID-1)//352\n        row = (intID-1)%352//NCOLS\n        column = (intID-1)%352%NCOLS\n    return plate, row, column\n</pre>",
      "rawMarkdown": "@davidoloren Looks like your basic-plus model was catching some of the plate structure. Have you tried using an explicitly guessed plate number (as in my solution https://www.kaggle.com/code/bernhardrohde/plate-row-column-model-with-clogp-for-solubility) as a descriptor?\n<pre>\nimport re\n# Assuming 16 columns by 22 rows, which is a flipped format\nNCOLS = 16\nNROWS = 22\n\ndef ID2Coordinates(id) :\n    # returns a tripple of plate, row, column indexes inferred from the EOS id\n    intID = int(re.search(r'\\d+', id).group())\n    if intID > 100000 : # top-up run\n        plate = 280 + (intID-100001)//352\n        row = (intID-100001)%352//NCOLS\n        column = (intID-100001)%352%NCOLS\n    else :\n        plate = (intID-1)//352\n        row = (intID-1)%352//NCOLS\n        column = (intID-1)%352%NCOLS\n    return plate, row, column\n</pre>",
      "votes": 1,
      "replies": [
        {
          "id": 2128668,
          "postDate": "2023-02-03T23:16:15.103Z",
          "content": "<p>Nope you were way ahead of me on that one, I thought your guess was particularly insightful, I had seen similar trends based on a moving average of proportion of 0/1/2, but hadn't thought to explicitly demarcate them by an explicitly guessed plate number. Interestingly, for visualization I'd settled on using a moving average window of 400, similar to the 352, but I hadn't made to final leap (and I suspect that that actually is the main difference between the score you'd achieved and basic-plus).</p>",
          "rawMarkdown": "Nope you were way ahead of me on that one, I thought your guess was particularly insightful, I had seen similar trends based on a moving average of proportion of 0/1/2, but hadn't thought to explicitly demarcate them by an explicitly guessed plate number. Interestingly, for visualization I'd settled on using a moving average window of 400, similar to the 352, but I hadn't made to final leap (and I suspect that that actually is the main difference between the score you'd achieved and basic-plus).",
          "votes": 2,
          "replies": [
            {
              "id": 2128994,
              "postDate": "2023-02-04T08:37:11.140Z",
              "content": "<p>I guess listening to the scientists doing the actual experiments for many years actually paid off here. Looks like experience (30+ years) can beat fancy methods at times ;-).</p>",
              "rawMarkdown": "I guess listening to the scientists doing the actual experiments for many years actually paid off here. Looks like experience (30+ years) can beat fancy methods at times ;-).",
              "votes": 1
            }
          ]
        }
      ]
    }
  ],
  "complete": true,
  "source": "live",
  "fetched_at": "2026-10-19T16:45:15Z",
  "competition_id": 38158,
  "competition_slug": "euos-slas",
  "team_id": 9187375,
  "solution_url": "/competitions/euos-slas/writeups/david-huang-draft-solution"
}