You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
RNA training omits O2' atom — predicted 2'-OH positions are non-physical #4
rnapro/data/rna_dataset_allatom.py:75-103 defines ATOM_NAMES with 26 RNA atoms, but the docstring on line 140 says "Supports 27 standard RNA atoms". The missing atom is O2' (the ribose 2'-OH oxygen). Because this list is used to extract ground-truth coordinates from the training CSV (lines 401-417), the model receives no supervision for O2'. As a result, predicted O2' positions in inference output are non-physical and far from their parent ribose.
This affects all-atom geometric quality of every RNAPro RNA prediction.
Visualization
The image below shows the R1107(PDB id: 7QR3) prediction : backbone as gray sticks (cartoon overlay), all O2' atoms as red spheres. Many O2' atoms float far from any ribose:
Root cause
rnapro/data/rna_dataset_allatom.py:75-103:
ATOM_NAMES= [
"P", "OP1", "OP2", "O5'", "O3'",
"C1'", "C2'", "C3'", "C4'", "O4'", "C5'", # ← O2' missing here"N1", "C2", "O2", "N3", "C4", "N4", "C5", "C6", "O4",
"N9", "N7", "C8", "N6", "N2", "O6"
]
# len(ATOM_NAMES) == 26 but the docstring on line 140 says "Supports 27 standard RNA atoms"
Used to construct the per-residue GT coordinate tensor (lines 401-417):
Activity
rhiju commentedon Jun 2, 2026
@Buddha7771 Thanks for bringing up this issue with the O2' atoms -- looks like an oversight.
As a quick fix that would avoid re-training the weights, we could make available a helper script that wraps around Arena to fix the O2'.
I'm attaching a script
fix_o2prime.pythat should do the trick.@youhanl-nvidia can you help us include this in the code along with instructions for where to get Arena and install into the workflow?
Separately, we should work on a set of weights that properly model O2'!
fix_o2prime.py