ViennaRNA
A library for the prediction and comparison of RNA secondary structures.
What it is and what it does
ViennaRNA is a Python interface to a mature C library for RNA secondary structure prediction and analysis. It lets you compute minimum free energy structures, ensemble partition functions, equilibrium probabilities, suboptimal structures, and local structures in long sequences. The package also supports consensus structure prediction from alignments, melting curve prediction, and interaction prediction between multiple RNA molecules.
The library is designed for computational biology and bioinformatics workflows where you need to model RNA folding thermodynamics. It has no runtime dependencies beyond Python itself (the C code is compiled into the wheel), making it straightforward to integrate into analysis pipelines. The package is actively maintained, supports current Python versions, and carries no known security vulnerabilities.
Use it for:
- Predict the most stable secondary structure of an RNA sequence to understand its likely biological conformation.
- Calculate the partition function and ensemble probabilities to study RNA structural heterogeneity and dynamics.
- Find suboptimal structures within a specified energy range to explore alternative conformations.
- Predict consensus structures from multiple sequence alignments to identify conserved structural motifs.
- Compare two RNA secondary structures to quantify their similarity or dissimilarity.
- Search for sequences that fold into a target structure for synthetic biology or aptamer design.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
ViennaRNA provides Python bindings to a C library for predicting and analyzing RNA secondary structures, including minimum free energy folding, partition function calculations, and structure comparison.
Yes, with conditions. Install if you need RNA secondary structure prediction in Python and can work with the custom, non-standard license. The package is actively maintained, has no known vulnerabilities, and provides pre-built wheels for common platforms, making installation straightforward. The main friction point is the ambiguous license terms for commercial use—verify with the authors if you plan to redistribute or embed the package in proprietary software.
Install
viennarna on PyPI
pip
pip install viennarnauv
uv add viennarnapoetry
poetry add viennarnaInstalling ViennaRNA
Before you install
Medium install friction due to compiled C extension wheels. The package provides pre-built wheels for Python 3.10–3.12 across macOS (Intel and ARM), Linux (glibc and musl), and Windows, reducing build-time complexity. Actively maintained with recent commits and no known vulnerabilities.
License in practice
License is custom and non-standard (not SPDX-identified). It permits research, educational, and commercial use with modification, provided no redistribution fee is charged beyond media costs and proper credit is given. Commercial inclusion requires author contact. This ambiguity may create friction in some corporate or open-source contexts.
Quickstart
pip install viennarna
import viennarna
# Use the library for RNA structure prediction
Requires Python >=3.8; pre-built wheels available for Python 3.10–3.12 on common platforms, but older or uncommon Python versions may require compilation.
Verify before relying
- Whether the custom license permits unrestricted redistribution in derivative works or closed-source applications without explicit author approval.
- Performance characteristics and typical runtime for large RNA sequences (e.g., sequences approaching the stated 32,700 length limit).
- Specific API surface and function names available in the Python interface.
Package facts
| License | Disclaimer and Copyright The programs, library and source code of the Vienna RNA Package are free software. They are distributed in the hope that they will be useful but WITHOUT ANY WARRANTY; without… (full text in the JSON record) (unclear) |
| Python support | supports the current Python release (>=3.8) |
| Install friction | medium — platform-specific wheel |
| Runtime dependencies | none |
| Maintenance | actively maintained — 227 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 109,273/month — #12,523 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: viennarna-2.7.2-cp310-cp310-macosx_10_14_x86_64.whl; viennarna-2.7.2-cp310-cp310-macosx_11_0_arm64.whl; viennarna-2.7.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl; viennarna-2.7.2-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl; viennarna-2.7.2-cp310-cp310-musllinux_1_2_aarch64.whl; viennarna-2.7.2-cp310-cp310-musllinux_1_2_x86_64.whl; viennarna-2.7.2-cp310-cp310-win_amd64.whl; viennarna-2.7.2-cp311-cp311-macosx_10_14_x86_64.whl; viennarna-2.7.2-cp311-cp311-macosx_11_0_arm64.whl; viennarna-2.7.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl; viennarna-2.7.2-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl; viennarna-2.7.2-cp311-cp311-musllinux_1_2_aarch64.whl; viennarna-2.7.2-cp311-cp311-musllinux_1_2_x86_64.whl; viennarna-2.7.2-cp311-cp311-win_amd64.whl; viennarna-2.7.2-cp312-cp312-macosx_10_14_x86_64.whl; viennarna-2.7.2-cp312-cp312-macosx_11_0_arm64.whl; viennarna-2.7.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl; viennarna-2.7.2-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl; viennarna-2.7.2-cp312-cp312-musllinux_1_2_aarch64.whl; viennarna-2.7.2-cp312-cp312-musllinux_1_2_x86_64.whl
Keywords: synthetic, computational, biology, genetic, DNA, RNA, secondary, structure, prediction, minimum, free, energy, centroid, subopt, mfe, ViennaRNA, dynamic, partition function, modified base, constraints, programming
Tags
More Scientific/Engineering packages
NumPy provides an N-dimensional array object…
permissive · top 100 on PyPI
pandaspandas provides fast, flexible data structures…
permissive · top 100 on PyPI
scipyscipy provides numerical algorithms for…
permissive · top 100 on PyPI
scikit-learnscikit-learn provides a comprehensive Python…
permissive · top 1,000 on PyPI
dilldill extends Python's pickle module to…
permissive · top 1,000 on PyPI
multiprocessMultiprocess is an enhanced fork of Python's…
permissive · top 1,000 on PyPI
pydeseq2PyDESeq2 performs differential expression…
permissive · top 15,000 on PyPI
pydsspPyDSSP assigns protein secondary structure…
permissive · top 15,000 on PyPI
mdtrajMDTraj reads, writes, and analyzes molecular…
copyleft · top 15,000 on PyPI
chgnetCHGNet is a pretrained graph neural network…
permissive · top 15,000 on PyPI
prolifProLIF generates interaction fingerprints from…
permissive · top 15,000 on PyPI
biotiteBiotite provides a unified Python library for…
permissive · top 5,000 on PyPI
pdb2pqrPDB2PQR prepares protein structures from PDB…
permissive · top 15,000 on PyPI
leidenalgImplements the Leiden community detection…
copyleft · top 15,000 on PyPI
swiglpkswiglpk provides direct Python bindings to the…
copyleft · top 15,000 on PyPI
pymbarpymbar implements the multistate Bennett…
permissive · top 15,000 on PyPI