{"id":21282461,"url":"https://github.com/cgoliver/rnaglib","last_synced_at":"2025-07-11T10:34:21.083Z","repository":{"id":75177688,"uuid":"555397426","full_name":"cgoliver/rnaglib","owner":"cgoliver","description":"Deep learning datasets for RNA 3D and 2.5D structures.","archived":false,"fork":false,"pushed_at":"2024-11-12T15:45:19.000Z","size":141560,"stargazers_count":15,"open_issues_count":5,"forks_count":3,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-11-12T16:36:22.380Z","etag":null,"topics":["bioinformatics","deep-learning","ml","rna","structural-biology"],"latest_commit_sha":null,"homepage":"https://rnaglib.org","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cgoliver.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-10-21T13:53:50.000Z","updated_at":"2024-11-12T15:45:24.000Z","dependencies_parsed_at":"2024-05-16T04:03:34.463Z","dependency_job_id":"cd26b157-34fa-4883-b37f-6f1f927d12af","html_url":"https://github.com/cgoliver/rnaglib","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cgoliver%2Frnaglib","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cgoliver%2Frnaglib/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cgoliver%2Frnaglib/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cgoliver%2Frnaglib/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cgoliver","download_url":"https://codeload.github.com/cgoliver/rnaglib/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":225715910,"owners_count":17512909,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bioinformatics","deep-learning","ml","rna","structural-biology"],"created_at":"2024-11-21T10:54:45.434Z","updated_at":"2025-07-11T10:34:21.069Z","avatar_url":"https://github.com/cgoliver.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n\u003cimg src=\"https://raw.githubusercontent.com/cgoliver/rnaglib/master/images/rgl.png#gh-light-mode-only\" width=\"30%\"\u003e\n\u003c/p\u003e\n\n# RNA Geometric Library (`rnaglib`)\n\n\u003cdiv align=\"center\"\u003e\n\n![build](https://img.shields.io/github/actions/workflow/status/cgoliver/rnaglib/build.yml)\n[![pypi](https://img.shields.io/pypi/v/rnaglib?)](https://pypi.org/project/rnaglib/)\n[![docs](https://img.shields.io/readthedocs/rnaglib)](https://rnaglib.readthedocs.io/en/latest/?badge=latest)\n[![codecov](https://codecov.io/gh/cgoliver/rnaglib/graph/badge.svg?token=AOQIF59SFT)](https://codecov.io/gh/cgoliver/rnaglib)\n\u003c/div\u003e\n\n`RNAglib` is a Python package for studying RNA 2.5D and 3D structures. Functionality includes automated data loading,\nanalysis, visualization, ML model building and benchmarking.\n\n![](https://github.com/cgoliver/cgoliver.github.io/blob/b0746409caf7d2d2f5de67cf6aef99ba5ff19cd2/assets/tty_slow.gif)\n\nA web-based documentation is available at [**rnaglib.org**](https://rnaglib.org).\n\nWe host RNAs annotated with molecule, base pair, and nucleotide level attributes. These include, but are not limited to:\n\n* Secondary structure and 3D coordinates\n* Leontis-Westhof base pair geometry classification\n* Protein binding, small molecule binding, chemical modifications...\n\nTo install the tool, follow the steps in [INSTALL.md](INSTALL.md).\n\n![Example graph](https://raw.githubusercontent.com/cgoliver/rnaglib/master/images/rgl_fig.png)\n\n## What can you do with `rnaglib`?\n\nA quickstart and tutorials are available in our online documentation: [**rnaglib.org**](https://rnaglib.org).\nIn this readme we briefly review the functionality of rnaglib:\n\n- [Benchmark ML models](#benchmark-ml-models-on-rna-3d-structures-new)\n- [Get annotated RNA 3D structures](#get-annotated-rna-3d-structures)\n    - [Fetch and browse annotated RNA 3D structures](#fetch-and-browse-annotated-rna-3D-structures)\n    - [Dowloading whole RNA structure databases](#Dowloading-whole-RNA-structure-databases)\n    - [Annotate your own structures](#Annotate-your-own-structures)\n- [Additional functionalities](#Additional-functionalities)\n    - [Quick visualization of 2.5D graphs](#Quick-visualization-of-2.5D-graphs)\n    - [2.5D graph comparison and alignment](#2.5D-graph-comparison-and-alignment)\n- [Citing the tool](#citation)\n- [Around RNAglib](#Around-RNAglib)\n\n## Benchmark ML models on RNA 3D structures (**new**)\n\nWe now provide datasets of RNA 3D structures ready-to-use for machine learning model benchmarking in seven\nbiologically relevant tasks.\nMoreover, we provide many tools to create your own new tasks.\nA more detailed description is provided in the [Tasks' README ](src/rnaglib/tasks/README.md) and in the\n[documentation](https://rnaglib.org/en/latest/tutorials/tuto_tasks.html). \n\nEverything you need to train and evaluate a model is built on 3 basic ingredients:\n\n1. A ``rnaglib.Task`` object with holds all the relevant data, splits and functionality.\n2. A ``rnaglib.Representation`` object which converts raw RNAs to tensor formats.\n3. A model of your choosing, though we provide a basic one to get started ``rnaglib.learning.PyGmodel``\n\n```python\nfrom rnaglib.tasks import ChemicalModification\nfrom rnaglib.transforms import GraphRepresentation\nfrom rnaglib.learning.task_models import PygModel\n\n# Load task, representation, and get loaders\ntask = ChemicalModification(root=\"my_root\")\nmodel = PygModel.from_task(task)\npyg_rep = GraphRepresentation(framework=\"pyg\")\n\ntask.add_representation(pyg_rep)\ntrain_loader, val_loader, test_loader = task.get_split_loaders(batch_size=8)\n\nfor batch in train_loader:\n    batch = batch['graph'].to(model.device)\n    output = model(batch)\n\ntest_metrics = model.evaluate(task, split='test')\n```\n\n## Get annotated RNA 3D structures\n\n### Fetch and browse annotated RNA 3D structures\n\nCurrent release contains annotations generated by x3dna-dssr as well as some additional ones that we added for all\navailable PDBs at the time of release.\n\nEach RNA is stored as a networkx graph where nodes are residues and edges are backbone and base pairing edges.\nThe networkx graph object has graph-level, node-level and edge-level attributes.\n[Here](https://rnaglib.org/en/latest/rna_ref.html) is a reference for all the annotations currently\navailable.\n\n```python\n\n\u003e\u003e\u003e from rnaglib.dataset import rna_from_pdbid\n\u003e\u003e\u003e rna_dict = rna_from_pdbid('1fmn')  # fetch from local database or RCSB if not found\n\u003e\u003e\u003e rna_dict['rna'].graph  # display graph-level features\n{'name': '1fmn', 'pdbid': '1fmn', 'ligand_to_smiles': {'FMN': 'Cc1cc2c(cc1C)N(C3=NC(=O)NC(=O)C3=N2)CC(C(C(COP(=O)(O)O)O)O)O'}, 'ss': {'A': '..(((((......(((....))).....)))))..'}, 'seq': {'A': 'GGCGUGUAGGAUAUGCUUCGGCAGAAGGACACGCC'}}\n```\n\n## Dowloading whole RNA structure databases\n\nIn addition to analysing RNA data, RNAglib also distributes available parsed RNA structures.\nDatabases of annotated structures can be downloaded directly from [Zenodo](https://zenodo.org/records/14625192).\n\n| Version | Date     | Total RNAs | Total Non-Redundant | Non-redundant version | `rnaglib` commit |\n---------|----------|------------|---------------------|-----------------------|------------------|\n 2.0.2   | 25-02-25 | 8441       | 2921                | 3.375                 | ac303c7          |\n 2.0.0   | 12-01-25 | 8305       | 2877                | 3.369                 | 33a9e989         |\n 1.0.0   | 15-02-23 | 5759       | 1176                | 3.269                 | 5446ae2c         |\n 0.0.0   | 20-07-21 | 3739       | 899                 | 3.186                 | eb25dabd         |\n\nThey can also be obtained through the provided command line utility, where you can specify the version and redundancy.\n\n```\n$ rnaglib_download -r all|nr\n```\n\n## Annotate your own structures\n\nYou can extract Leontis-Westhof interactions and convert 3D structures to 2.5D graphs.\nWe wrap a fork of [fr3d-python](https://github.com/cgoliver/fr3d-python) to support this functionality.\n\n```python\nfrom rnaglib.prepare_data import fr3d_to_graph\n\nG = fr3d_to_graph(\"../data/structures/1fmn.cif\")\n```\n\nWarning: this method currently does not support non-standard residues. Support coming soon. Up to version 1.0.0 of the\nRNA database were created using x3dna-dssr which do contain non-standard residues.\n\n## Additional functionalities\n\n### Quick visualization of 2.5D graphs\n\nWe customize networkx graph drawing functionalities to give some convenient visualization of 2.5D base pairing networks.\nThis is not a dedicated visualization tool, it is only intended for quick debugging. We point you\nto [VARNA]()https://varna.lisn.upsaclay.fr/ or [RNAscape](https://academic.oup.com/nar/article/52/W1/W354/7648766) for a\nfull-featured visualizer.\n\n```python\nfrom rnaglib.drawing import rna_draw\n\nrna_draw(G, show=True, layout=\"spring\")\n```\n\n![](https://raw.githubusercontent.com/cgoliver/rnaglib/master/images/g.png)\n\n### 2.5D graph comparison and alignment\n\nWhen dealing with 3D structures as 2.5D graphs we support graph-level comparison through the graph edit distance.\n\n```python\nfrom rnaglib.algorithms import graph_edit_distance\nfrom rnaglib.dataset import rna_from_pdbid\n\nG = rna_from_pdbid(\"4nlf\")[\"rna\"]\nprint(graph_edit_distance(G, G))  # 0.0\n```\n\n## Citation\n\n```\n@article{mallet2022rnaglib,\n  title={RNAglib: a python package for RNA 2.5 D graphs},\n  author={Mallet, Vincent and Oliver, Carlos and Broadbent, Jonathan and Hamilton, William L and Waldisp{\\\"u}hl, J{\\'e}r{\\^o}me},\n  journal={Bioinformatics},\n  volume={38},\n  number={5},\n  pages={1458--1459},\n  year={2022},\n  publisher={Oxford University Press}\n}\n```\n\n## Around RNAglib\n\n### Projects using `rnaglib`\n\nIf you use rnaglib in one of your projects, please cite and feel free to make a pull request so we can list your project\nhere.\n\n* [RNAMigos2](https://github.com/cgoliver/RNAmigos2)\n* [Structure-and Function-Aware Substitution Matrices](https://github.com/BorgwardtLab/GraphMatchingSubstitutionMatrices)\n* [MultiModRLBP: A Deep Learning Approach for RNA-Small Molecule Ligand Binding Site Prediction using Multi-modal features](https://github.com/lennylv/MultiModRLBP)\n* [VeRNAl](https://github.com/cgoliver/vernal)\n* [RNAMigos](https://github.com/cgoliver/RNAmigos)\n\n### Resources\n\n* [Documentation](https://rnaglib.readthedocs.io/en/latest/?badge=latest)\n* [Twitter](https://twitter.com/rnaglib)\n* Contact: `rnaglib@cs.mcgill.ca`\n\n### References\n\n1. Leontis, N. B., \u0026 Zirbel, C. L. (2012). Nonredundant 3D Structure Datasets for RNA Knowledge Extraction and\n   Benchmarking. In RNA 3D Structure Analysis and Prediction N. Leontis \u0026 E. Westhof (Eds.), (Vol. 27, pp. 281–298).\n   Springer Berlin Heidelberg. doi:10.1007/978-3-642-25740-7\\_13\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcgoliver%2Frnaglib","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcgoliver%2Frnaglib","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcgoliver%2Frnaglib/lists"}