boltz icon indicating copy to clipboard operation
boltz copied to clipboard

Enforcing contacts on RNA

Open Vincentx15 opened this issue 4 months ago • 3 comments

Hello,

Thanks for the amazing tool. I'm struggling to understand if RNA contacts can be enforced ? All examples are on protein contacts (if I'm not mistaken). I created the following yaml with a toy example:

version: 1
sequences:
  - rna:
      id: "rna"
      sequence: "GGCAGUCUACACAGCUACAGUGUUGACGC"
contacts:
  - molecules: ["rna"]
    residue_contacts:
      - residue1: ["rna", 5]
        residue2: ["rna", 15]
        max_distance: 4
        force: true

and then ran boltz predict rna_input.yaml. But in the output, nt 5 and 15 are far away...

Image

Can you please clarify is this functionality is supposed to work on RNA and if it is the case, what I did wrong ?

Thanks a lot in advance !

PS: I have tried using both the 2.0 version installed with pip and fresh install with pip install . on the cloned repo. Both resulted in a similar prediction.

Vincentx15 avatar Aug 14 '25 15:08 Vincentx15

Hi @Vincentx15, are you sure that Boltz didn't use a preprocessed config? Can you run the prediction in a fresh folder or make sure that you delete the preprocessed files?

gcorso avatar Aug 15 '25 10:08 gcorso

Hi, I’d like to raise this issue again using a slightly different RNA sequence:

GCUUUUCGCACACAGCUACAGUGUUGAGC

ViennaRNA predicts multiple conformations for this sequence, for example:

((((...((((.........)))).)))) (−4.86 kcal/mol)
((((..(((...........)))..)))) (−4.49 kcal/mol)
((.....)).(.((((......)))).). (−2.91 kcal/mol)
((.....))...((((......))))... (−3.92 kcal/mol)

In the last two structures, there are clear contacts between nt 1–9 and nt 2–8. So in principle, it should be very easy for the model to adopt those conformations once those contacts are enforced.

However, the model still predicts nt 1 near the last nucleotide, even when both of these contacts are enforced. It looks as if RNA contact constraints are simply being ignored.

mosayebi avatar Aug 15 '25 17:08 mosayebi

Thanks for your answer, I confirm that this behavior persists in a fresh folder. Can't you reproduce it ?

I can post a pip freeze output if you want to, but I think the bug most likely originates from a problem with argument parsing or handling rather than cuda versions...

Vincentx15 avatar Aug 18 '25 09:08 Vincentx15