{
  "id": 565306,
  "title": "Starter notebooks by finetuning RibonanzaNet to predict 3D (updated with Rnet2 Alpha lb 0.3)",
  "url": "/competitions/stanford-rna-3d-folding/discussion/565306",
  "author_name": "Shujun",
  "post_date": "2025-02-27T22:15:28.495000",
  "votes": 82,
  "comment_count": 19,
  "views": 0,
  "content": "<p>Welcome to Stanford RNA 3D Folding! As a result of our previous competition Ribonanza, we developed RibonanzaNet, a foundation model which achieved SOTA performance in a number of RNA tasks such as RNA secondary structure, RNA degradation, and RNA chemical mapping dropout. Here I have created starter notebooks finetuning RibonanzaNet to directly predict xyz coordinates of RNA nucleotides:</p>\n<p>training:<br>\n<a href=\"https://www.kaggle.com/code/shujun717/ribonanzanet-3d-finetune\" target=\"_blank\">https://www.kaggle.com/code/shujun717/ribonanzanet-3d-finetune</a></p>\n<p>inference:<br>\n<a href=\"https://www.kaggle.com/code/shujun717/ribonanzanet-3d-inference\" target=\"_blank\">https://www.kaggle.com/code/shujun717/ribonanzanet-3d-inference</a></p>\n<p>Best of luck and have fun modeling! </p>\n<h3>update to the finetuning notebook with a structure module:</h3>\n<p>AF2 uses invariant point attention as their structure module to do iterative refinement, here we can do something similar with RIbonanzaNet.</p>\n<p>I have added a structure module that looks at the distance matrix and makes xyz updates to the finetuning notebook and it improves the score from 0.177 to 0.19.</p>\n<p>finetuning and inference notebooks with a structure module:<br>\n<a href=\"https://www.kaggle.com/code/shujun717/ribonanzanet-3d-finetune-add-structure-module\" target=\"_blank\">https://www.kaggle.com/code/shujun717/ribonanzanet-3d-finetune-add-structure-module</a><br>\n<a href=\"https://www.kaggle.com/code/shujun717/ribonanzanet-3d-inference-add-structure-module?scriptVersionId=228564059\" target=\"_blank\">https://www.kaggle.com/code/shujun717/ribonanzanet-3d-inference-add-structure-module?scriptVersionId=228564059</a></p>\n<h3>update with Rnet2 Alpha finetuning notebook with diffusion (lb 0.3):</h3>\n<p>Starter training notebook w Rnet2: <a href=\"https://www.kaggle.com/code/shujun717/ribonanzanet2-ddpm-training\" target=\"_blank\">https://www.kaggle.com/code/shujun717/ribonanzanet2-ddpm-training</a><br>\nStarter inference notebook w Rnet2 (after training for 50 epochs): <a href=\"https://www.kaggle.com/code/shujun717/ribonanzanet2-ddpm-inference\" target=\"_blank\">https://www.kaggle.com/code/shujun717/ribonanzanet2-ddpm-inference</a></p>\n<h3>links</h3>\n<p>link to our paper:<br>\n<a href=\"https://www.biorxiv.org/content/10.1101/2024.02.24.581671v1\" target=\"_blank\">https://www.biorxiv.org/content/10.1101/2024.02.24.581671v1</a></p>\n<p>previous competition:<br>\n<a href=\"https://www.kaggle.com/competitions/stanford-ribonanza-rna-folding\" target=\"_blank\">https://www.kaggle.com/competitions/stanford-ribonanza-rna-folding</a></p>",
  "messages": [
    {
      "id": 3135830,
      "postDate": "2025-02-27T22:15:28.497Z",
      "content": "<p>Welcome to Stanford RNA 3D Folding! As a result of our previous competition Ribonanza, we developed RibonanzaNet, a foundation model which achieved SOTA performance in a number of RNA tasks such as RNA secondary structure, RNA degradation, and RNA chemical mapping dropout. Here I have created starter notebooks finetuning RibonanzaNet to directly predict xyz coordinates of RNA nucleotides:</p>\n<p>training:<br>\n<a href=\"https://www.kaggle.com/code/shujun717/ribonanzanet-3d-finetune\" target=\"_blank\">https://www.kaggle.com/code/shujun717/ribonanzanet-3d-finetune</a></p>\n<p>inference:<br>\n<a href=\"https://www.kaggle.com/code/shujun717/ribonanzanet-3d-inference\" target=\"_blank\">https://www.kaggle.com/code/shujun717/ribonanzanet-3d-inference</a></p>\n<p>Best of luck and have fun modeling! </p>\n<h3>update to the finetuning notebook with a structure module:</h3>\n<p>AF2 uses invariant point attention as their structure module to do iterative refinement, here we can do something similar with RIbonanzaNet.</p>\n<p>I have added a structure module that looks at the distance matrix and makes xyz updates to the finetuning notebook and it improves the score from 0.177 to 0.19.</p>\n<p>finetuning and inference notebooks with a structure module:<br>\n<a href=\"https://www.kaggle.com/code/shujun717/ribonanzanet-3d-finetune-add-structure-module\" target=\"_blank\">https://www.kaggle.com/code/shujun717/ribonanzanet-3d-finetune-add-structure-module</a><br>\n<a href=\"https://www.kaggle.com/code/shujun717/ribonanzanet-3d-inference-add-structure-module?scriptVersionId=228564059\" target=\"_blank\">https://www.kaggle.com/code/shujun717/ribonanzanet-3d-inference-add-structure-module?scriptVersionId=228564059</a></p>\n<h3>update with Rnet2 Alpha finetuning notebook with diffusion (lb 0.3):</h3>\n<p>Starter training notebook w Rnet2: <a href=\"https://www.kaggle.com/code/shujun717/ribonanzanet2-ddpm-training\" target=\"_blank\">https://www.kaggle.com/code/shujun717/ribonanzanet2-ddpm-training</a><br>\nStarter inference notebook w Rnet2 (after training for 50 epochs): <a href=\"https://www.kaggle.com/code/shujun717/ribonanzanet2-ddpm-inference\" target=\"_blank\">https://www.kaggle.com/code/shujun717/ribonanzanet2-ddpm-inference</a></p>\n<h3>links</h3>\n<p>link to our paper:<br>\n<a href=\"https://www.biorxiv.org/content/10.1101/2024.02.24.581671v1\" target=\"_blank\">https://www.biorxiv.org/content/10.1101/2024.02.24.581671v1</a></p>\n<p>previous competition:<br>\n<a href=\"https://www.kaggle.com/competitions/stanford-ribonanza-rna-folding\" target=\"_blank\">https://www.kaggle.com/competitions/stanford-ribonanza-rna-folding</a></p>",
      "rawMarkdown": "Welcome to Stanford RNA 3D Folding! As a result of our previous competition Ribonanza, we developed RibonanzaNet, a foundation model which achieved SOTA performance in a number of RNA tasks such as RNA secondary structure, RNA degradation, and RNA chemical mapping dropout. Here I have created starter notebooks finetuning RibonanzaNet to directly predict xyz coordinates of RNA nucleotides:\n\ntraining:\n[https://www.kaggle.com/code/shujun717/ribonanzanet-3d-finetune](https://www.kaggle.com/code/shujun717/ribonanzanet-3d-finetune)\n\ninference:\n[https://www.kaggle.com/code/shujun717/ribonanzanet-3d-inference](https://www.kaggle.com/code/shujun717/ribonanzanet-3d-inference)\n\nBest of luck and have fun modeling! \n\n### update to the finetuning notebook with a structure module:\nAF2 uses invariant point attention as their structure module to do iterative refinement, here we can do something similar with RIbonanzaNet.\n\nI have added a structure module that looks at the distance matrix and makes xyz updates to the finetuning notebook and it improves the score from 0.177 to 0.19.\n\nfinetuning and inference notebooks with a structure module:\nhttps://www.kaggle.com/code/shujun717/ribonanzanet-3d-finetune-add-structure-module\nhttps://www.kaggle.com/code/shujun717/ribonanzanet-3d-inference-add-structure-module?scriptVersionId=228564059\n\n### update with Rnet2 Alpha finetuning notebook with diffusion (lb 0.3):\n\nStarter training notebook w Rnet2: https://www.kaggle.com/code/shujun717/ribonanzanet2-ddpm-training\nStarter inference notebook w Rnet2 (after training for 50 epochs): https://www.kaggle.com/code/shujun717/ribonanzanet2-ddpm-inference\n\n### links\nlink to our paper:\n[https://www.biorxiv.org/content/10.1101/2024.02.24.581671v1](https://www.biorxiv.org/content/10.1101/2024.02.24.581671v1)\n\nprevious competition:\n[https://www.kaggle.com/competitions/stanford-ribonanza-rna-folding](https://www.kaggle.com/competitions/stanford-ribonanza-rna-folding)",
      "votes": 82
    },
    {
      "id": 3149820,
      "postDate": "2025-03-14T18:03:00.667Z",
      "content": "<p><a href=\"https://www.kaggle.com/shujun717\" target=\"_blank\">@shujun717</a> does the sequence representation in <code>RibonanzaNet</code> play a similar role as the <code>MSA</code> representation in AlphaFold? </p>\n<p>AFAIK, AlphaFold searches against external databases while RibonanzaNet learns the embedding representations used for the sequence representation. Is my understanding correct?  Help is appreciated! </p>",
      "rawMarkdown": "@shujun717 does the sequence representation in `RibonanzaNet` play a similar role as the `MSA` representation in AlphaFold? \n\nAFAIK, AlphaFold searches against external databases while RibonanzaNet learns the embedding representations used for the sequence representation. Is my understanding correct?  Help is appreciated! ",
      "votes": 1
    },
    {
      "id": 3135835,
      "postDate": "2025-02-27T22:29:25.727Z",
      "content": "<p>Someone will probably do it soon, but it chould have been really great if you also submitted this inference notebook, demonstrating submission and establishing a public baseline.<br>\nAlso: nice to see you again, haha</p>",
      "rawMarkdown": "Someone will probably do it soon, but it chould have been really great if you also submitted this inference notebook, demonstrating submission and establishing a public baseline.\nAlso: nice to see you again, haha",
      "votes": 1,
      "replies": [
        {
          "id": 3135838,
          "postDate": "2025-02-27T22:34:51.580Z",
          "content": "<p>i could submit it but then I would show up on the lb 😀</p>",
          "rawMarkdown": "i could submit it but then I would show up on the lb 😀",
          "votes": 1,
          "replies": [
            {
              "id": 3135842,
              "postDate": "2025-02-27T22:50:06.347Z",
              "content": "<p>I see, so it's already ready for submission! Very good job. I have a huge appreciation for conpetitions that provide a solid baseline to start with.  <br>\nFor those wondering: It's 0.173, ~8 min for scoring.</p>",
              "rawMarkdown": "I see, so it's already ready for submission! Very good job. I have a huge appreciation for conpetitions that provide a solid baseline to start with.  \nFor those wondering: It's 0.173, ~8 min for scoring.",
              "votes": 5
            },
            {
              "id": 3135843,
              "postDate": "2025-02-27T22:50:56.163Z",
              "content": "<p>Thanks for submitting it!</p>",
              "rawMarkdown": "Thanks for submitting it!"
            },
            {
              "id": 3160532,
              "postDate": "2025-03-26T22:11:37.530Z",
              "content": "<p>How could I have overlooked this until now</p>",
              "rawMarkdown": "How could I have overlooked this until now",
              "votes": 13
            }
          ]
        },
        {
          "id": 3135937,
          "postDate": "2025-02-28T03:15:45.583Z",
          "content": "<p>Your shared code from before has many valuable lessons to learn from, and you come across as both passionate and humorous. I personally believe that you will put in tremendous effort for this competition and ultimately secure the gold medal. I would like to congratulate you in advance for becoming a Kaggle Competitions Grandmaster.</p>",
          "rawMarkdown": "Your shared code from before has many valuable lessons to learn from, and you come across as both passionate and humorous. I personally believe that you will put in tremendous effort for this competition and ultimately secure the gold medal. I would like to congratulate you in advance for becoming a Kaggle Competitions Grandmaster.",
          "votes": -3
        }
      ]
    },
    {
      "id": 3142676,
      "postDate": "2025-03-06T15:37:53.860Z",
      "content": "<p>I'll implement a GNN modification of RibonanzaNet.</p>",
      "rawMarkdown": "I'll implement a GNN modification of RibonanzaNet.",
      "votes": 1,
      "replies": [
        {
          "id": 3184133,
          "postDate": "2025-04-21T17:48:08.393Z",
          "rawMarkdown": "",
          "isDeleted": true
        }
      ]
    },
    {
      "id": 3201662,
      "postDate": "2025-05-14T08:11:07.600Z",
      "content": "<p>How do we use invoke RibonanzaNet on a training or test sequence and get the output (i.e. a secondary structure matrix)? As I understand it, the network should output something like a contact matrix of dimensions (len(seq),len(seq)), where elements [i,j] are high (near 1) when i and j likely form a base pair, and low (near 0) when they probably don't, which can then be used as an input to a 3D stage (whether this involves rigid-body positioning stems as coarse grained cylinders, all-atom refinement, or a second neural network). I imagine it's a NxN matrix because something 1D like dot-bracket notation is no good for representing pseudoknotted structures, and also can't represent low-confidence pairs that shouldn't get a full \"yes\". But my question is what does the function call look like to do this, once RibonanzaNet is imported into a notebook, and is the return type of this call in fact a NxN matrix of floats in [0,1], where N is the sequence length?  </p>",
      "rawMarkdown": "How do we use invoke RibonanzaNet on a training or test sequence and get the output (i.e. a secondary structure matrix)? As I understand it, the network should output something like a contact matrix of dimensions (len(seq),len(seq)), where elements [i,j] are high (near 1) when i and j likely form a base pair, and low (near 0) when they probably don't, which can then be used as an input to a 3D stage (whether this involves rigid-body positioning stems as coarse grained cylinders, all-atom refinement, or a second neural network). I imagine it's a NxN matrix because something 1D like dot-bracket notation is no good for representing pseudoknotted structures, and also can't represent low-confidence pairs that shouldn't get a full \"yes\". But my question is what does the function call look like to do this, once RibonanzaNet is imported into a notebook, and is the return type of this call in fact a NxN matrix of floats in [0,1], where N is the sequence length?  ",
      "replies": [
        {
          "id": 3202138,
          "postDate": "2025-05-14T22:56:54.747Z",
          "content": "<p>you may try using Rnet-2 finetuned to predict secondary structure. The notebook is here: <a href=\"https://www.kaggle.com/code/shujun717/rnet2-alpha-2d-structure-inference\" target=\"_blank\">https://www.kaggle.com/code/shujun717/rnet2-alpha-2d-structure-inference</a></p>",
          "rawMarkdown": "you may try using Rnet-2 finetuned to predict secondary structure. The notebook is here: https://www.kaggle.com/code/shujun717/rnet2-alpha-2d-structure-inference"
        },
        {
          "id": 3204787,
          "postDate": "2025-05-18T19:49:16.227Z",
          "content": "<p>This notebook contains detailed explaination of Ribonanza Net with architecture diagrams, might be useful to you. <a href=\"https://www.kaggle.com/code/siddhantoon/ribonanzanet-2-0-ddpm-explained\" target=\"_blank\">Here</a></p>",
          "rawMarkdown": "This notebook contains detailed explaination of Ribonanza Net with architecture diagrams, might be useful to you. [Here](https://www.kaggle.com/code/siddhantoon/ribonanzanet-2-0-ddpm-explained)"
        }
      ]
    },
    {
      "id": 3180433,
      "postDate": "2025-04-16T16:07:36.667Z",
      "content": "<p>Thank you for your work. I truly appreciate it.</p>",
      "rawMarkdown": "Thank you for your work. I truly appreciate it.",
      "isDeleted": true
    },
    {
      "id": 3148198,
      "postDate": "2025-03-12T20:24:05.427Z",
      "rawMarkdown": "",
      "isDeleted": true,
      "replies": [
        {
          "id": 3159045,
          "postDate": "2025-03-25T07:46:01.967Z",
          "content": "<p>Yes, you can absolutely do that! Just upload your modified .pt file to a new Kaggle dataset (or replace the one in /kaggle/input/ribonanzanet-3d-finetune), and in the inference notebook, update the torch.load() path to point to your new model file. Make sure the model architecture in the inference script matches what you used during training. Once that’s set, it should work smoothly</p>",
          "rawMarkdown": "Yes, you can absolutely do that! Just upload your modified .pt file to a new Kaggle dataset (or replace the one in /kaggle/input/ribonanzanet-3d-finetune), and in the inference notebook, update the torch.load() path to point to your new model file. Make sure the model architecture in the inference script matches what you used during training. Once that’s set, it should work smoothly"
        }
      ]
    },
    {
      "id": 3175690,
      "postDate": "2025-04-10T13:39:45.550Z",
      "content": "<p>Thank you!</p>",
      "rawMarkdown": "Thank you!",
      "votes": 2
    },
    {
      "id": 3198896,
      "postDate": "2025-05-10T06:42:36.003Z",
      "content": "<p>great!!!!!</p>",
      "rawMarkdown": "great!!!!!"
    },
    {
      "id": 3181809,
      "postDate": "2025-04-18T11:40:24.217Z",
      "content": "<p>Thank you for your work.</p>",
      "rawMarkdown": "Thank you for your work."
    },
    {
      "id": 3160441,
      "postDate": "2025-03-26T18:58:40.427Z",
      "content": "<p>Thank you!</p>",
      "rawMarkdown": "Thank you!"
    }
  ],
  "comments": [
    {
      "id": 3149820,
      "author_name": "moth",
      "author_url": "",
      "post_date": "2025-03-14T18:03:00.667000",
      "content": "<p><a href=\"https://www.kaggle.com/shujun717\" target=\"_blank\">@shujun717</a> does the sequence representation in <code>RibonanzaNet</code> play a similar role as the <code>MSA</code> representation in AlphaFold? </p>\n<p>AFAIK, AlphaFold searches against external databases while RibonanzaNet learns the embedding representations used for the sequence representation. Is my understanding correct?  Help is appreciated! </p>",
      "votes": 1,
      "replies": []
    },
    {
      "id": 3135835,
      "author_name": "greySnow",
      "author_url": "",
      "post_date": "2025-02-27T22:29:25.727000",
      "content": "<p>Someone will probably do it soon, but it chould have been really great if you also submitted this inference notebook, demonstrating submission and establishing a public baseline.<br>\nAlso: nice to see you again, haha</p>",
      "votes": 1,
      "replies": [
        {
          "id": 3135838,
          "author_name": "Shujun",
          "author_url": "",
          "post_date": "2025-02-27T22:34:51.580000",
          "content": "<p>i could submit it but then I would show up on the lb 😀</p>",
          "votes": 1,
          "replies": [
            {
              "id": 3135842,
              "author_name": "greySnow",
              "author_url": "",
              "post_date": "2025-02-27T22:50:06.347000",
              "content": "<p>I see, so it's already ready for submission! Very good job. I have a huge appreciation for conpetitions that provide a solid baseline to start with.  <br>\nFor those wondering: It's 0.173, ~8 min for scoring.</p>",
              "votes": 5,
              "replies": []
            },
            {
              "id": 3135843,
              "author_name": "Shujun",
              "author_url": "",
              "post_date": "2025-02-27T22:50:56.163000",
              "content": "<p>Thanks for submitting it!</p>",
              "votes": 0,
              "replies": []
            },
            {
              "id": 3160532,
              "author_name": "",
              "author_url": "",
              "post_date": "2025-03-26T22:11:37.530000",
              "content": "<p>How could I have overlooked this until now</p>",
              "votes": 13,
              "replies": []
            }
          ]
        },
        {
          "id": 3135937,
          "author_name": "bestwater",
          "author_url": "",
          "post_date": "2025-02-28T03:15:45.583000",
          "content": "<p>Your shared code from before has many valuable lessons to learn from, and you come across as both passionate and humorous. I personally believe that you will put in tremendous effort for this competition and ultimately secure the gold medal. I would like to congratulate you in advance for becoming a Kaggle Competitions Grandmaster.</p>",
          "votes": -3,
          "replies": []
        }
      ]
    },
    {
      "id": 3142676,
      "author_name": "Tom",
      "author_url": "",
      "post_date": "2025-03-06T15:37:53.860000",
      "content": "<p>I'll implement a GNN modification of RibonanzaNet.</p>",
      "votes": 1,
      "replies": [
        {
          "id": 3184133,
          "author_name": "",
          "author_url": "",
          "post_date": "2025-04-21T17:48:08.393000",
          "content": "",
          "votes": 0,
          "replies": []
        }
      ]
    },
    {
      "id": 3201662,
      "author_name": "Andrew Rosko",
      "author_url": "",
      "post_date": "2025-05-14T08:11:07.600000",
      "content": "<p>How do we use invoke RibonanzaNet on a training or test sequence and get the output (i.e. a secondary structure matrix)? As I understand it, the network should output something like a contact matrix of dimensions (len(seq),len(seq)), where elements [i,j] are high (near 1) when i and j likely form a base pair, and low (near 0) when they probably don't, which can then be used as an input to a 3D stage (whether this involves rigid-body positioning stems as coarse grained cylinders, all-atom refinement, or a second neural network). I imagine it's a NxN matrix because something 1D like dot-bracket notation is no good for representing pseudoknotted structures, and also can't represent low-confidence pairs that shouldn't get a full \"yes\". But my question is what does the function call look like to do this, once RibonanzaNet is imported into a notebook, and is the return type of this call in fact a NxN matrix of floats in [0,1], where N is the sequence length?  </p>",
      "votes": 0,
      "replies": [
        {
          "id": 3202138,
          "author_name": "Shujun",
          "author_url": "",
          "post_date": "2025-05-14T22:56:54.747000",
          "content": "<p>you may try using Rnet-2 finetuned to predict secondary structure. The notebook is here: <a href=\"https://www.kaggle.com/code/shujun717/rnet2-alpha-2d-structure-inference\" target=\"_blank\">https://www.kaggle.com/code/shujun717/rnet2-alpha-2d-structure-inference</a></p>",
          "votes": 0,
          "replies": []
        },
        {
          "id": 3204787,
          "author_name": "Siddhantoon",
          "author_url": "",
          "post_date": "2025-05-18T19:49:16.227000",
          "content": "<p>This notebook contains detailed explaination of Ribonanza Net with architecture diagrams, might be useful to you. <a href=\"https://www.kaggle.com/code/siddhantoon/ribonanzanet-2-0-ddpm-explained\" target=\"_blank\">Here</a></p>",
          "votes": 0,
          "replies": []
        }
      ]
    },
    {
      "id": 3180433,
      "author_name": "",
      "author_url": "",
      "post_date": "2025-04-16T16:07:36.667000",
      "content": "<p>Thank you for your work. I truly appreciate it.</p>",
      "votes": 0,
      "replies": []
    },
    {
      "id": 3148198,
      "author_name": "",
      "author_url": "",
      "post_date": "2025-03-12T20:24:05.427000",
      "content": "",
      "votes": 0,
      "replies": [
        {
          "id": 3159045,
          "author_name": "Fae Gaze",
          "author_url": "",
          "post_date": "2025-03-25T07:46:01.967000",
          "content": "<p>Yes, you can absolutely do that! Just upload your modified .pt file to a new Kaggle dataset (or replace the one in /kaggle/input/ribonanzanet-3d-finetune), and in the inference notebook, update the torch.load() path to point to your new model file. Make sure the model architecture in the inference script matches what you used during training. Once that’s set, it should work smoothly</p>",
          "votes": 0,
          "replies": []
        }
      ]
    },
    {
      "id": 3175690,
      "author_name": "",
      "author_url": "",
      "post_date": "2025-04-10T13:39:45.550000",
      "content": "<p>Thank you!</p>",
      "votes": 2,
      "replies": []
    },
    {
      "id": 3198896,
      "author_name": "Zhiai Fang",
      "author_url": "",
      "post_date": "2025-05-10T06:42:36.003000",
      "content": "<p>great!!!!!</p>",
      "votes": 0,
      "replies": []
    },
    {
      "id": 3181809,
      "author_name": "chencheng hua",
      "author_url": "",
      "post_date": "2025-04-18T11:40:24.217000",
      "content": "<p>Thank you for your work.</p>",
      "votes": 0,
      "replies": []
    },
    {
      "id": 3160441,
      "author_name": "Julia Iskandarova",
      "author_url": "",
      "post_date": "2025-03-26T18:58:40.427000",
      "content": "<p>Thank you!</p>",
      "votes": 0,
      "replies": []
    }
  ],
  "raw_markdown_by_id": {
    "3135830": "Welcome to Stanford RNA 3D Folding! As a result of our previous competition Ribonanza, we developed RibonanzaNet, a foundation model which achieved SOTA performance in a number of RNA tasks such as RNA secondary structure, RNA degradation, and RNA chemical mapping dropout. Here I have created starter notebooks finetuning RibonanzaNet to directly predict xyz coordinates of RNA nucleotides:\n\ntraining:\n[https://www.kaggle.com/code/shujun717/ribonanzanet-3d-finetune](https://www.kaggle.com/code/shujun717/ribonanzanet-3d-finetune)\n\ninference:\n[https://www.kaggle.com/code/shujun717/ribonanzanet-3d-inference](https://www.kaggle.com/code/shujun717/ribonanzanet-3d-inference)\n\nBest of luck and have fun modeling! \n\n### update to the finetuning notebook with a structure module:\nAF2 uses invariant point attention as their structure module to do iterative refinement, here we can do something similar with RIbonanzaNet.\n\nI have added a structure module that looks at the distance matrix and makes xyz updates to the finetuning notebook and it improves the score from 0.177 to 0.19.\n\nfinetuning and inference notebooks with a structure module:\nhttps://www.kaggle.com/code/shujun717/ribonanzanet-3d-finetune-add-structure-module\nhttps://www.kaggle.com/code/shujun717/ribonanzanet-3d-inference-add-structure-module?scriptVersionId=228564059\n\n### update with Rnet2 Alpha finetuning notebook with diffusion (lb 0.3):\n\nStarter training notebook w Rnet2: https://www.kaggle.com/code/shujun717/ribonanzanet2-ddpm-training\nStarter inference notebook w Rnet2 (after training for 50 epochs): https://www.kaggle.com/code/shujun717/ribonanzanet2-ddpm-inference\n\n### links\nlink to our paper:\n[https://www.biorxiv.org/content/10.1101/2024.02.24.581671v1](https://www.biorxiv.org/content/10.1101/2024.02.24.581671v1)\n\nprevious competition:\n[https://www.kaggle.com/competitions/stanford-ribonanza-rna-folding](https://www.kaggle.com/competitions/stanford-ribonanza-rna-folding)",
    "3149820": "@shujun717 does the sequence representation in `RibonanzaNet` play a similar role as the `MSA` representation in AlphaFold? \n\nAFAIK, AlphaFold searches against external databases while RibonanzaNet learns the embedding representations used for the sequence representation. Is my understanding correct?  Help is appreciated! ",
    "3135835": "Someone will probably do it soon, but it chould have been really great if you also submitted this inference notebook, demonstrating submission and establishing a public baseline.\nAlso: nice to see you again, haha",
    "3142676": "I'll implement a GNN modification of RibonanzaNet.",
    "3201662": "How do we use invoke RibonanzaNet on a training or test sequence and get the output (i.e. a secondary structure matrix)? As I understand it, the network should output something like a contact matrix of dimensions (len(seq),len(seq)), where elements [i,j] are high (near 1) when i and j likely form a base pair, and low (near 0) when they probably don't, which can then be used as an input to a 3D stage (whether this involves rigid-body positioning stems as coarse grained cylinders, all-atom refinement, or a second neural network). I imagine it's a NxN matrix because something 1D like dot-bracket notation is no good for representing pseudoknotted structures, and also can't represent low-confidence pairs that shouldn't get a full \"yes\". But my question is what does the function call look like to do this, once RibonanzaNet is imported into a notebook, and is the return type of this call in fact a NxN matrix of floats in [0,1], where N is the sequence length?  ",
    "3180433": "Thank you for your work. I truly appreciate it.",
    "3148198": "",
    "3175690": "Thank you!",
    "3198896": "great!!!!!",
    "3181809": "Thank you for your work.",
    "3160441": "Thank you!"
  }
}