# ViennaRNA Package

The ViennaRNA Package is software, a set of standalone programs and libraries used for predicting and analysing RNA nucleic acid secondary structures. The source code for the package is released as free and open-source software and compiled binaries are available for the operating systems Linux, macOS, and Windows. The original paper has been cited over 2,000 times.

## Background

The three dimensional structure of biological macromolecules like proteins and nucleic acids play a critical role in determining their functional role. This process of decoding function from the sequence is an experimentally and computationally challenging question addressed widely. RNA structures form complex secondary and tertiary structures compared to DNA which form duplexes with full complementarity between two strands. This is partly because the extra oxygen in RNA increases the propensity for hydrogen bonding in the nucleic acid backbone. The base pairing and base stacking interactions of RNA play critical role in formation of ribosome, spliceosome, or tRNA.
Secondary structure prediction is commonly done using approaches like dynamic programming, energy minimisation (for most stable structure) and generating suboptimal structures. Many structure prediction tools have been implemented also.

## Development

The first version of the ViennaRNA Package was published by Hofacker et al. in 1994. The package distributed tools to compute either minimum free energy structures or partition functions of RNA molecules; both using the idea of dynamic programming. Non-thermodynamic criterion like formation of maximum matching or various versions of kinetic folding along with an inverse folding heuristic to determine structurally neutral sequences were implemented. Additionally, the package also contained a statistics suite with routines for cluster analysis, statistical geometry, and split decomposition.
The package was made available as library and a set of standalone routines.

### Version 2.0

A number of major systemic changes were introduced in this version with the use of a new parametrized energy model (Turner 2004), restructuring of the RNAlib to support concurrent computations in thread-safe manner, improvements to the application programming interface (API), and inclusion of several new auxiliary tools. For example, tools to assess RNA-RNA interactions and restricted ensembles of structures. Further, other features included additional output information such as centroid structures and maximum expected accuracy structures derived from base pairing probabilities, or z-scores for locally stable secondary structures, and support for input in FASTA format. The updates, however, are compatible with earlier versions without affecting the computational efficiency of the core algorithms.

### Web server

The tools provided by the ViennaRNA Package are also available for public use through a web interface.

## Tools

In addition to prediction and analysis tools, the ViennaRNA Package contains several scripts and utilities for plotting and input-output processing. A summary of the available programs is collected in the table below (an exhaustive list with examples can be found in the official documentation).
| Program | Description |
| AnalyseDists | Analyse a distance matrix |
| AnalyseSeqs | Analyse a set of sequences of common length |
| Kinfold | Simulate kinetic folding of RNA secondary structures |
| RNA2Dfold | Compute MFE structure, partition function and representative sample structures of k,l neighborhoods |
| RNAaliduplex | Predict conserved RNA-RNA interactions between two alignments |
| RNAalifold | Calculate secondary structures for a set of aligned RNA sequences |
| RNAcofold | Calculate secondary structures of two RNAs with dimerization |
| RNAdistance | Calculate distances between RNA secondary structures |
| RNAduplex | Compute the structure upon hybridization of two RNA strands |
| RNAeval | Evaluate free energy of RNA sequences with given secondary structure |
| RNAfold | Calculate minimum free energy secondary structures and partition function of RNAs |
| RNAforester | Compare RNA secondary structures via forest alignment |
| RNAheat | Calculate the specific heat (melting curve) of an RNA sequence |
| RNAinverse | Find RNA sequences with given secondary structure (sequence design) |
| RNALalifold | Calculate locally stable secondary structures for a set of aligned RNAs |
| RNALfold | Calculate locally stable secondary structures of long RNAs |
| RNApaln | RNA alignment based on sequence base pairing propensities |
| RNApdist | Calculate distances between thermodynamic RNA secondary structures ensembles |
| RNAparconv | Convert energy parameter files from ViennaRNA 1.8 to 2.0 format |
| RNAPKplex | Predict RNA secondary structures including pseudoknots |
| RNAplex | Find targets of a query RNA |
| RNAplfold | Calculate average pair probabilities for locally stable secondary structures |
| RNAplot | Draw RNA Secondary Structures in PostScript, SVG, or GML |
| RNAsnoop | Find targets of a query H/ACA snoRNA |
| RNAsubopt | Calculate suboptimal secondary structures of RNAs |
| RNAup | Calculate the thermodynamics of RNA-RNA interactions |