A C code library and several stand-alone programs for the prediction and comparison of RNA secondary structures.
Amongst other things, our implementations allow you to:
- predict minimum free energy secondary structures
- calculate the partition function for the ensemble of structures
- compute various equilibrium probabilities
- calculate suboptimal structures in a given energy range
- compute local structures in long sequences
- predict consensus secondary structures from a multiple sequence alignment
- predict melting curves
- search for sequences folding into a given structure
- compare two secondary structures
- predict interactions between multiple RNA molecules
The package includes Perl 5
and Python
modules that give access to almost
all functions of the C library from within the respective scripting languages.
There is also a set of programs for analyzing sequence and distance data using split decomposition, statistical geometry, and cluster methods. They are not maintained any more and not built by default.
The code very rarely uses static arrays, and all programs should work for sequences up to a length of 32,700 (if you have huge amounts of memory that is).
See the NEWS and CHANGELOG.md files for changes between versions.
- Availability
- Documentation
- Installation
- Configuration
- Executable Programs
- Energy Parameters
- References
- License
- Contact
The most recent source code should always be available through the official ViennaRNA website and through github.
Executable programs shipped with the ViennaRNA Package are documented by corresponding man pages, use e.g.:
man RNAfold
in a UNIX terminal to obtain the documentation for the RNAfold
program.
HTML translations of all man pages can be found at our official homepage.
We maintain a reference manual describing the RNAlib
API that is automatically
generated with doxygen. The HTML version of this reference
manual is available here.
In addition, the description of the RNAlib
Python API can be found at
Read the Docs.
For best portability the ViennaRNA package uses the GNU autoconf and automake tools. The instructions below are for installing the ViennaRNA package from source.
See the file INSTALL for a more detailed description of the build and installation process.
Usually you'll simply unpack the distribution tarball, configure and make:
tar -zxvf ViennaRNA-2.6.3.tar.gz
cd ViennaRNA-2.6.3
./configure
make
sudo make install
If you do not have root privileges on your computer, you might want to install
the ViennaRNA Package to a location where you actually have write access to.
Use the --prefix
option to set the installation prefix like so:
./configure --prefix=/home/username/ViennaRNA
make install
This will install everything into a new directory ViennaRNA
directly into
the home directory of user username
.
Note, that the actual install destination paths are listed at the end
of the ./configure
output.
If you attempt to build and install from our git repository, you need to
perform some additional steps before actually running the ./configure
script:
- Unpack the
libsvm
archive to allow for SVM Z-score regression with the programRNALfold
:
cd src
tar -xzf libsvm-3.31.tar.gz
cd ..
- Unpack the
dlib
archive to allow for concentration dependency computations with the programRNAmultifold
:
cd src
tar -xjf dlib-19.24.tar.bz2
cd ..
-
Install the additional maintainer tools
gengetopt
,help2man
,flex
,xxd
, andswig
if necessary. For instance, in RedHat based distributions, the following packages need to be installed:gengetopt
(to generate command line parameter parsers)help2man
(to generate the man pages)yacc
,flex
andflex-devel
(to generate sources for RNAforester)vim-common
(for thexxd
program)swig
(to generate the scripting language interfaces)liblapacke
(forRNAxplorer
)liblapack
(forRNAxplorer
)- A fortran compiler, e.g.
gcc-gfortran
(forRNAxplorer
)
-
Finally, run the autoconf/automake toolchain:
autoreconf -i
After that, you can compile and install the ViennaRNA Package as if obtained from the distribution tarball.
Binary packages for several Linux-based platforms, Microsoft Windows, and Mac OS X are available at our official website.
Installation is also possible through bioconda. After successfully setting up the bioconda channels
conda config --add channels defaults
conda config --add channels bioconda
conda config --add channels conda-forge
conda config --set channel_priority strict
you can install the viennarna bioconda package through
conda install viennarna
The Python 3 interface for the ViennaRNA Package library is
available at PyPI and can
be installed independently using Python's pip
:
python -m pip install viennarna
Our source tree allows for building/installing the Python 3
interface separately. For that, we provide the necessary packaging
files pyproject.toml
, setup.cfg
, setup.py
and MANIFEST.in
.
These files are created by our autoconf
toolchain after a run
of ./configure
. Particular default compile-time features may be
(de-)activated by setting the corresponding boolean flags in
setup.cfg
. See below for additional steps when building the
Python interface from a clean git clone.
Running
python -m build
will then create a source distribution (sdist
) and a binary
package (wheel
) in the dist/
directory. These files can be
easily installed via Python's pip
.
If you are about to create the Python interface from a fresh
clone of our git repository, you require additional steps after
running ./configure
as described above. In particular, some
autogenerated static files that are compiled into RNAlib must
be generated. To do so, run
cd src/ViennaRNA/static
make
cd ../../..
Additionally, if building the reference manual is not explicitly turned off, the Python interface requires docstrings to be generated. They are taken from the doxygen xml output which can be created by
cd doc
make refman-html
cd ..
Finally, the swig wrapper must be build using
cd interfaces/Python
make RNA/RNA.py
cd ../..
After these steps, the Python sdist and wheel packages can be build as usual.
This release includes the RNAforester
, Kinfold
, Kinwalker
, RNAlocmin
,
and RNAxplorer
programs, which can also be obtained as independent packages.
Running ./configure
in the ViennaRNA directory will configure these packages
as well.
However, for detailed information and compile time options, see the README and
INSTALL files in the respective subdirectories.
A comprehensive description of configure options is available at our reference manual.
See also
./configure --help
for a complete list of all ./configure
options and important environment
variables.
The ViennaRNA Package includes the following executable programs:
Program | Description |
---|---|
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 |
RNAdos |
Compute the density of states for the conformation space of a given RNA sequence |
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 |
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 |
RNAmultifold |
Compute secondary structures and probabilities for multiple interacting 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 |
RNApvmin |
Calculate a perturbation vector that minimizes discripancies between predicted and observed pairing probabilities |
RNAsnoop |
Find targets of a query H/ACA snoRNA |
RNAsubopt |
Calculate suboptimal secondary structures of RNAs |
RNAup |
Calculate the thermodynamics of RNA-RNA interactions |
AnalyseSeqs |
Analyse sequence data |
AnalyseDists |
Analyse distance matrices |
A couple of useful utilities can be found in the src/Utils directory.
All executables read from stdin and write to stdout and use command line switches rather than menus to be easily usable in pipes. For more detailed information see the man pages. Perl utilities contain POD documentation that can be read by typing e.g.
perldoc relplot.pl
Together with this version we also distribute the programs
kinfold
,RNAforester
,RNAlocmin
,RNAxlorer
, andkinwalker
See the README files in the respective sub-directories.
If you use our software package, you may want to cite the follwing publications:
-
R. Lorenz et al. (2011), "ViennaRNA Package 2.0", Algorithms for Molecular Biology, 6:26
-
I.L. Hofacker (1994), "Fast folding and comparison of RNA secondary structures", Monatshefte fuer Chemie, Volume 125, Issue 2, pp 167-188
Note, that the individual executable programs state their own list of references in the corresponding man-pages.
Since version 2.0.0 the build-in energy parameters, also available as parameter file rna_turner2004.par, are taken from:
-
D.H. Mathews et al. (2004), "Incorporating chemical modification constraints into a dynamic programming algorithm for prediction of RNA secondary structure", Proc. Natl. Acad. Sci. USA: 101, pp 7287-7292
-
D.H. Turner et al. (2009), "NNDB: The nearest neighbor parameter database for predicting stability of nucleic acid secondary structure", Nucleic Acids Research: 38, pp 280-282.
For backward compatibility we also provide energy parameters from Turner et al. 1999 in the file rna_turner1999.par.
A set of trained RNA energy parameters from Andronescou et al. 2007, rna_andronescou2007.par, a set of RNA energy parameters obtained by graft and grow genetic programming from Langdon et al. 2018, rna_langdon2018.par are also included.
To predict secondary structures for DNA, we additionally include two DNA parameter sets:
Since version 2.6.0 several programs received support to predict structures for sequences with modified bases. The corresponding energy parameters are incomplete and mostly restricted to base pair stacking. The ViennaRNA package currently includes paraneter sets for
Energy parameter files are mostly provided for use with our executable
programs. All parameter sets are compiled-in to our RNAlib
C-library.
Thus, when building upon our library, either through C/C++ or the
scripting language interface, these data are available through dedicated
functions and as constant strings. See, e.g.
here and here.
Please read the copyright notice in the file COPYING!
If you're a commercial user and find these programs useful, please consider supporting further developments with a donation.
We need your feedback! Send your comments, suggestions, and questions to rna@tbi.univie.ac.at
Ivo Hofacker, Spring 2006