Skip to main content

An integrated design engine for RNA origami

Project description

Alt Text

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.

Downloads/MONTH PyPI Downloads

pyFuRNAce design API coverage:

codecov

WebApp: pyfurnace.de
GitHub: Biophysical-Engineering-Group/pyFuRNAce
PyPI: pyfurnace
Script API examples: Code Examples
Documentation: Read the Docs

Alt Text


🚀 Features

  • 🧩 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.

System requirements

  • Python 3.10 or later
  • Operating System: Linux, macOS, or Windows
  • dependencies are listed in requirements.txt; with stable versions recommended in stable_requirements.txt

📦 Installation

Typical installation time: 5 minutes

Pyfurnace

Note: pyFuRNAce requires Python 3.10 or later, and the local installation always includes the GUI via Streamlit.

Install from PyPI

Install or upgrade the latest stable version of pyFuRNAce from PyPI using pip (and OAT from GitHub):

pip install --upgrade pyfurnace

Install from GitHub

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"

Extra Dependencies

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.

🖥️ Running the Web Application

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.

Streamlit App

🎛 Modules

  1. Design: Create and edit RNA structure blueprints. Visualize assembled structures in 3D. Define custom motifs via GUI or scripting.
  2. Generate: use inverse folding (Revolvr) to produce RNA sequences matching the target structure. Evaluate folding energies and structural ensemble diversity.
  3. Convert: Translate RNA sequences to DNA templates. Add transcriptional promoters (e.g., T7). Analyze sequence properties (e.g., GC content, dimers).
  4. Prepare: Design PCR primers with melting temperature calculations. Generate input files for molecular dynamics simulations with oxRNA.

🧑‍💻 Using the Python API

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)

-> Output:

                        ╭───────╮
╭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

📚 Examples

Explore tutorials and example notebooks in the examples directory.

📜 License

Code is licensed under the GNU General Public License v3.0 (GPL-3.0)

License: GPL-3.0

📜 Logo Copyright & Permission

The pyFuRNAce logo is original artwork created by Luca Monari.

Luca Monari retains full copyright ownership of the logo.

Permission is granted to reproduce the logo in academic, scientific, or educational materials that reference or use pyFuRNAce, including publications, presentations, and documentation (whether commercial or non-commercial).

Any other use of the logo requires prior written permission from the copyright holder.

🧠 Citation

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.

🙏 Acknowledgements

This work was supported by the ERC Starting Grant ENSYNC (No. 101076997) and Deutsche Forschungsgemeinschaft (DFG, German Research Foundation) under CRC 392 and CRC 1638. This work was supported by a Research Grant from HFSP (Ref.-No: RGP003/2023, DOI: https://doi.org/10.52044/HFSP.RGP0032023.pc.gr.168589). The authors thank the Max Planck Society for access to computational resources and the Alfried Krupp von Bohlen und Halbach Foundation. E.P. was supported through state funds approved by the State Parliament of Baden-Württemberg for the Innovation Campus Health + Life Science Alliance Heidelberg Mannheim. We thank Cody Geary for his feedback on the user interface design. We thank Dominic Kempf for his feedback on software development and testing.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pyfurnace-1.1.1.tar.gz (377.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pyfurnace-1.1.1-py3-none-any.whl (409.6 kB view details)

Uploaded Python 3

File details

Details for the file pyfurnace-1.1.1.tar.gz.

File metadata

  • Download URL: pyfurnace-1.1.1.tar.gz
  • Upload date:
  • Size: 377.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for pyfurnace-1.1.1.tar.gz
Algorithm Hash digest
SHA256 41d73c4ba436e946a46cab3254b94b9386d57ef2134b61911ccc2a87f232463e
MD5 2819315c2ed2a2a7be16568b8504f5b2
BLAKE2b-256 5a76c0938ccc0e6fea2aea355600d4169f78c2167f6504312e52ae47574d84b9

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyfurnace-1.1.1.tar.gz:

Publisher: pypi_publish.yml on Biophysical-Engineering-Group/pyFuRNAce

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyfurnace-1.1.1-py3-none-any.whl.

File metadata

  • Download URL: pyfurnace-1.1.1-py3-none-any.whl
  • Upload date:
  • Size: 409.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for pyfurnace-1.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 1de19da59a2310988ab31f2fdf217bd377880af515ff422af85f7d340ddef24d
MD5 f97ec1b911d7f61367feffa3a31a48bb
BLAKE2b-256 04de0274dd693904d65d2e18f6e11eb88e6c9c106ec501193df37629296a7b33

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyfurnace-1.1.1-py3-none-any.whl:

Publisher: pypi_publish.yml on Biophysical-Engineering-Group/pyFuRNAce

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page