File size: 11,888 Bytes
becf8d9 508087f becf8d9 508087f becf8d9 508087f becf8d9 508087f becf8d9 508087f becf8d9 508087f becf8d9 508087f becf8d9 508087f becf8d9 508087f becf8d9 508087f becf8d9 508087f becf8d9 508087f becf8d9 508087f becf8d9 508087f becf8d9 508087f becf8d9 b2430ee becf8d9 508087f becf8d9 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 | ---
license: mit
tags:
- biology
- rna
- rna-design
- rna-generation
- de-novo-design
- generative-model
- language-model
- transformer
- gpt
- nucleotide
- bioinformatics
- computational-biology
- drug-discovery
- molecular-design
pipeline_tag: text-generation
---
# GenerRNA: A Generative Language Model for *de novo* RNA Design
[](https://doi.org/10.1371/journal.pone.0310814)
[](https://doi.org/10.1101/2024.02.01.578496)
[](./LICENSE)
[](https://huggingface.co/pfnet/GenerRNA)
**GenerRNA is a generative pre-trained language model for *de novo* RNA sequence design.** It is a Transformer (decoder-only, GPT-style) model that learns the "language" of RNA from millions of natural sequences and can generate novel, realistic RNA sequences **without any structural input, functional label, or sequence alignment**. To our knowledge, GenerRNA is the first application of a generative language model to RNA generation.
With GenerRNA you can:
- **Generate RNA in a zero-shot manner** to explore the RNA sequence space, or
- **Fine-tune on your own dataset** to generate RNAs belonging to a particular family or possessing specific characteristics (e.g., high binding affinity to a target protein).
> Developed by [Preferred Networks, Inc.](https://www.preferred.jp/en/) and The University of Tokyo. Introduced in *PLOS ONE* (2024): [GenerRNA: A generative pre-trained language model for *de novo* RNA design](https://doi.org/10.1371/journal.pone.0310814).
---
## Table of Contents
- [Model Summary](#model-summary)
- [Key Features](#key-features)
- [Model Details](#model-details)
- [Intended Use & Use Cases](#intended-use--use-cases)
- [Requirements](#requirements)
- [Quickstart](#quickstart)
- [Training & Fine-tuning](#training--fine-tuning)
- [Repository Structure](#repository-structure)
- [Training Data](#training-data)
- [Limitations](#limitations)
- [FAQ](#faq)
- [Citation](#citation)
- [License](#license)
---
## Model Summary
GenerRNA is a **Transformer decoder-only (GPT-style) language model** trained on RNA nucleotide sequences. By treating RNA as a sequence of tokens, it learns statistical and structural regularities of RNA directly from data and can then **sample entirely new sequences**. GenerRNA was pre-trained on ~16 million RNA sequences (16.09M), encompassing ~17.4 billion nucleotides. Generated RNAs are novel (distinct from training sequences) yet fold into stable secondary structures, and the model can be fine-tuned to design functional RNAs such as protein binders β all without requiring prior structural knowledge.
## Key Features
- 𧬠**De novo RNA generation** β create novel RNA sequences from scratch; no structure, label, or alignment required.
- π― **Zero-shot or fine-tuned** β explore RNA space out of the box, or specialize the model for a target family or function.
- π¬ **Structurally plausible outputs** β generated sequences fold into stable secondary structures (low minimum free energy).
- π§© **Transformer / GPT architecture** β a familiar, scalable decoder-only design (~350M parameters).
- β‘ **Two checkpoints provided** β an updated long-context model and the original historical model.
- π **Open & reproducible** β MIT-licensed code, tokenizer, checkpoints, and the data behind the paper's figures.
## Model Details
| | |
|---|---|
| **Model type** | Generative language model (decoder-only Transformer, GPT-style) |
| **Domain** | RNA / nucleotide sequences |
| **Parameters** | 350M (24 transformer layers, model dimension 1280) |
| **Context window** | 1024 tokens (~4000 nucleotides) |
| **Tokenizer** | Byte-Pair Encoding (BPE), vocabulary size 1024 |
| **Checkpoints** | `model_updated.pt` (recommended; longer context, deduplicated data) Β· original split model in `experiment_data/historical_version/` |
| **Framework** | PyTorch (β₯ 2.0) |
| **License** | MIT |
| **Paper** | *PLOS ONE* 19(10):e0310814 (2024) Β· [doi:10.1371/journal.pone.0310814](https://doi.org/10.1371/journal.pone.0310814) |
| **Developed by** | Preferred Networks, Inc. & The University of Tokyo |
## Intended Use & Use Cases
GenerRNA is intended for **research in RNA biology, synthetic biology, and RNA-based therapeutics / drug discovery**. Typical use cases include:
- Exploring the diversity of the RNA sequence space.
- Generating candidate RNAs from a target family by fine-tuning on family-specific data.
- Designing RNAs with desired functional properties, such as aptamers/binders with high affinity to a target protein (demonstrated for the RNA-binding proteins **ELAVL1** and **SRSF1** in the paper).
- Serving as a pre-trained backbone for downstream RNA modeling and design tasks.
## Requirements
A CUDA environment with a minimum of **8 GB VRAM** is required.
```
torch>=2.0
numpy
transformers==4.33.0.dev0
datasets==2.14.4
tqdm
```
## Quickstart
Clone the repository (it ships with the recommended checkpoint `model_updated.pt` and its `tokenizer/`):
```bash
git clone https://huggingface.co/pfnet/GenerRNA
cd GenerRNA
```
### De novo generation (zero-shot)
```bash
python sampling.py \
--out_path {output_file_path} \
--max_new_tokens 256 \
--ckpt_path model_updated.pt \
--tokenizer_path tokenizer
```
> **Want to use the original (historical) model instead?** It is stored as split files. Recombine it and use its dedicated tokenizer:
>
> ```bash
> cat experiment_data/historical_version/model.pt.part-* > model.pt
> python sampling.py \
> --out_path {output_file_path} \
> --max_new_tokens 256 \
> --ckpt_path model.pt \
> --tokenizer_path experiment_data/historical_version/tokenizer_bpe_1024
> ```
## Training & Fine-tuning
**1. Tokenize your sequences** (one sequence per line, no header):
```bash
python tokenization.py \
--data_dir {path_to_directory_containing_sequence_data} \
--file_name {file_name_of_sequence_data} \
--tokenizer_path tokenizer \
--out_dir {directory_to_save_tokenized_data} \
--block_size 256
```
**2. Create a config** based on `configs/example_pretraining.py` (training from scratch) or `configs/example_finetuning.py` (fine-tuning).
**3. Train / fine-tune:**
```bash
python train.py --config {path_to_your_config_file}
```
### Train your own tokenizer (optional)
```bash
python train_BPE.py \
--txt_file_path {path_to_training_file_one_sequence_per_line} \
--vocab_size 50256 \
--new_tokenizer_path {directory_to_save_trained_tokenizer}
```
## Repository Structure
```
.
βββ LICENSE
βββ README.md
βββ CITATION.cff # machine-readable citation metadata
βββ model.py # model architecture (decoder-only Transformer)
βββ sampling.py # generate sequences from a trained model
βββ tokenization.py # tokenize sequence data for training
βββ train.py # pre-training / fine-tuning entry point
βββ train_BPE.py # train a new BPE tokenizer
βββ model_updated.pt # recommended checkpoint (longer context, deduplicated data)
βββ tokenizer/ # BPE tokenizer for model_updated.pt
βββ configs/
β βββ example_pretraining.py
β βββ example_finetuning.py
βββ experiment_data/
βββ *.csv # data underlying the paper's figures
βββ pretraining_data.sh # how the pre-training corpus was built (RNAcentral + MMseqs2)
βββ historical_version/ # original model (split into parts) + its tokenizer
βββ model.pt.part-a{a,b,c,d}
βββ tokenizer_bpe_1024/
```
## Training Data
GenerRNA was pre-trained on RNA sequences from **[RNAcentral](https://rnacentral.org/)** (release 22, which aggregates 51 expert databases). Starting from **34.39 million** raw sequences, deduplication with **[MMseqs2](https://github.com/soedinglab/MMseqs2)** at **80% sequence identity** yielded a pre-training corpus of **~16 million sequences (16.09M), encompassing ~17.4 billion nucleotides**. GenerRNA has a context window of **1024 tokens (~4000 nucleotides)**. The pre-processing pipeline is in [`experiment_data/pretraining_data.sh`](experiment_data/pretraining_data.sh), and the data underlying the paper's figures is provided in `experiment_data/`. See the [paper](https://doi.org/10.1371/journal.pone.0310814) for full dataset details.
## Limitations
- GenerRNA models RNA **sequence**; it does not explicitly predict tertiary structure or function. Validate candidates with downstream structure/function tools and wet-lab experiments.
- A CUDA GPU is required for generation and training as provided.
- Zero-shot outputs reflect the natural distribution of the training data; targeting a specific family or property generally requires fine-tuning.
- Generated sequences are computational hypotheses and should be experimentally validated before any real-world application.
## FAQ
**What is GenerRNA?**
GenerRNA is a generative, pre-trained language model (a decoder-only Transformer) that designs novel RNA sequences *de novo*, without requiring structural information, functional labels, or sequence alignments.
**How is GenerRNA different from other RNA models?**
Most RNA models are *discriminative* β they predict structure or properties from a given sequence. GenerRNA is *generative*: it samples entirely new sequences. To our knowledge, it is the first application of a generative language model to RNA generation.
**Do I need RNA structure or alignments as input?**
No. GenerRNA generates sequences directly from its learned distribution; no structure or alignment is needed.
**Can I generate RNAs from a specific family or with a specific function?**
Yes. Fine-tune GenerRNA on a family- or function-specific dataset. The paper demonstrates designing RNAs with high binding affinity to the proteins ELAVL1 and SRSF1.
**Which checkpoint should I use?**
Use `model_updated.pt` (longer context, trained on deduplicated data). The original split model is kept in `experiment_data/historical_version/` for reproducibility.
**Is GenerRNA free to use?**
Yes. The code and weights are released under the MIT License. Please cite the paper if you use GenerRNA in your work.
**How do I cite GenerRNA?**
See [Citation](#citation) below.
## Citation
If you use GenerRNA, its checkpoints, or this repository in your research, please cite:
```bibtex
@article{zhao2024generrna,
title = {GenerRNA: A generative pre-trained language model for de novo RNA design},
author = {Zhao, Yichong and Oono, Kenta and Takizawa, Hiroki and Kotera, Masaaki},
journal = {PLOS ONE},
volume = {19},
number = {10},
pages = {e0310814},
year = {2024},
doi = {10.1371/journal.pone.0310814},
publisher = {Public Library of Science}
}
```
**Plain text:** Zhao Y, Oono K, Takizawa H, Kotera M (2024) GenerRNA: A generative pre-trained language model for *de novo* RNA design. PLOS ONE 19(10): e0310814. https://doi.org/10.1371/journal.pone.0310814
- π **Paper (PLOS ONE):** https://doi.org/10.1371/journal.pone.0310814
- π **Preprint (bioRxiv):** https://doi.org/10.1101/2024.02.01.578496
- π€ **Model:** https://huggingface.co/pfnet/GenerRNA
- π» **Code (GitHub):** https://github.com/ekkkkki/GenerRNA
- π **Project page:** https://ekkkkki.github.io/GenerRNA/
## License
The source code is licensed under the **MIT License** β see [`LICENSE`](LICENSE). Β© 2024 Yichong Zhao, Masaaki Kotera, Kenta Oono, Hiroki Takizawa.
|