pyFuRNAce is an open-source Python package and web-based design engine for creating complex RNA nanostructures using the co-transcriptional RNA origami approach. It streamlines the entire design pipeline — from structural motif assembly to sequence generation and primer design — into an intuitive, user-friendly platform.
WebApp: pyfurnace.de
GitHub: Biophysical-Engineering-Group/pyFuRNAce
PyPI: pyfurnace
Script API examples: Code Examples
Documentation: Read the Docs
- 🧩 Motif-based assembly: Build RNA structures using a rich, expandable library of motifs including stems, dovetails, kissing loops, aptamers, and ribozymes.
- 🎨 GUI & Real-time 3D Visualization: Interactive blueprint editor and real-time 3D rendering via Streamlit and oxView.
- 🔄 Integrated Workflow: Design, generate, convert, and prepare your RNA origami in one unified interface.
- 🧬 Sequence Generation & Optimization: Built-in support for sequence folding (Revolvr + ViennaRNA).
- 🧪 Primer & Template Design: Includes tools for DNA conversion, promoter addition, and primer calculations.
- 💻 Python Scripting API: Automate complex designs or build at scale using a programmable interface.
- Python 3.10 or later
- Operating System: Linux, macOS, or Windows
- dependencies are listed in
requirements.txt
; with stable versions recommended instable_requirements.txt
Typical installation time: 5 minutes
Note: pyFuRNAce requires Python 3.10 or later, and the local installation always includes the GUI via Streamlit.
Install the latest stable version of pyFuRNAce from PyPI using pip (and OAT from GitHub):
pip install pyfurnace
Install the latest development version of pyFuRNAce (and OAT) directly from the GitHub repository:
pip install "git+https://github.com/Biophysical-Engineering-Group/pyFuRNAce.git"
Note: The pyFuRNAce installation does not include the oxDNA analysis tools (OAT).
The OAT package is used to convert 3D structures from/to PDB files and write oxDNA force files.
To install the OAT package, you can use the following command (the git command is required, you can install it via anaconda with conda install git
):
pip install "git+https://github.com/lorenzo-rovigatti/oxDNA.git#subdirectory=analysis"
To run sequence generation, a Perl
interpreter is required by the Revolvr script from ROAD. It is usually installed by default on most systems. If not, you can install it via Anaconda with conda install bioconda-legacy::perl
.
To run the web application locally after installation, use the following command:
pyfurnace
Or alternatively python -m pyfurnace
.
This will lunch the GUI in your default web browser. You can also use the hosted version at pyfurnace.de. The WebApp is built using Streamlit and can be run locally or on a server. You can access the webapp directly at pyfurnace.streamlit.app.
- Design: Create and edit RNA structure blueprints. Visualize assembled structures in 3D. Define custom motifs via GUI or scripting.
- Generate: use inverse folding (Revolvr) to produce RNA sequences matching the target structure. Evaluate folding energies and structural ensemble diversity.
- Convert: Translate RNA sequences to DNA templates. Add transcriptional promoters (e.g., T7). Analyze sequence properties (e.g., GC content, dimers).
- Prepare: Design PCR primers with melting temperature calculations. Generate input files for molecular dynamics simulations with oxRNA.
import pyfurnace as pf
line1 = [pf.TetraLoop(),
pf.Stem(7),
pf.Dovetail(-2, up_cross=False),
pf.Stem(6),
pf.KissingDimer(),
pf.Stem(6),
pf.Dovetail(-2, up_cross=False),
pf.Stem(7),
pf.TetraLoop(True),
]
line2 = [pf.TetraLoop(),
pf.Stem(7),
pf.Dovetail(-2, down_cross=False),
pf.Stem(10),
pf.start_end_stem(),
pf.Stem(10),
pf.Dovetail(-2, down_cross=False),
pf.Stem(7),
pf.TetraLoop(True),
]
origami = pf.Origami(line1, line2, aling='center')
print(origami)
print(origami.structure)
print(origami.sequence)
╭───────╮
╭CGNNNKNNN──SS──NKNNNNAA┼─NNNNNN╯╭─ANNKNNN──SS──NNNKNNNUU╮
│ ┊┊┊┊┊┊┊ ┊┊ ┊┊┊┊┊┊ │ ┊┊┊┊┊┊ │ ┊┊┊┊┊┊ ┊┊ ┊┊┊┊┊┊┊ │
╰UUNNNKNNN──SS╮╭NKNNNNA─╯╭NNNNNN─┼AANNKNNN──SS╮╭NNNKNNNGC╯
││ ╰───────╯ ││
╭───╯│ ╭────╯│
│╭───╯ │╭────╯
↑↓ ↑↓
╭CGNKNKNNN╯╰SS──NKNNNKNNNN─3 5─NNNKNNNKNN╯╰SS──NKNNKNNUU╮
│ ┊┊┊┊┊┊┊ ┊┊ ┊┊┊┊┊┊┊┊┊┊ ┊┊┊┊┊┊┊┊┊┊ ┊┊ ┊┊┊┊┊┊┊ │
╰UUNKNKNNN──SS──NKNNNKNNNN─────NNNKNNNKNN──SS──NKNNKNNGC╯
((((((((((((((((((..[[[[[[.))))))))(((((((....)))))))(((((((((....)))))))))))))))))))(((((((((((((((((((....)))))))(((((((((....)))))))))((((((..]]]]]].))))))))))))))))))
NNNKNNNKNNSSNNNKNNAANNNNNNANNKNNNSSNNNKNNNUUCGNNNKNNNSSNKNNKNNUUCGNNKNNKNSSNNKNNNKNNNNNNNKNNNKNSSNNNKNKNUUCGNKNKNNNSSNNNKNNNUUCGNNNKNNNSSNKNNNNAANNNNNNANNNNKNSSNKNNNKNNNN
Explore tutorials and example notebooks in the examples directory.
Code is licensed under the GNU General Public License v3.0 (GPL-3.0)
If you use pyFuRNAce in your research, please cite: Monari, L., Braun, I., Poppleton, E. & Göpfrich, K. PyFuRNAce: An integrated design engine for RNA origami (2025) doi:10.1101/2025.04.17.647389.
Supported by the ERC Starting Grant “ENSYNC”, DFG, HFSP, and Max Planck Society. Developed by Luca Monari, Ina Braun, Erik Poppleton, and Kerstin Göpfrich.