Skip to content
Commits on Source (3)
# ignore other autotools generated content
Makefile
Makefile.in
configure
aclocal.m4
autom4te.cache
autoscan.log
depcomp
missing
compile
install-sh
config
config.*
.deps
stamp-h1
.dirstamp
ylwrap
tests/test-env.sh
src/ViennaRNA/vrna_config.h
libtool
# ignore libtoolize generated files
m4/libtool.m4
m4/lt*.m4
# ignore all tar.gz archives
*.tar.gz
# except the libsvm sources
!libsvm*.tar.gz
# logfiles of test suites
*.log
# libtool generated files
.libs
*.la
*.lo
*.o
# ignore pkg-config file
RNAlib2.pc
# ignore all postscript files that might be generated
*.ps
dist: xenial
compiler:
- gcc
- clang
addons:
apt:
sources:
- ubuntu-toolchain-r-test
packages:
- gcc
- g++
- clang
- gengetopt
- flex
- help2man
- libgsl-dev
- doxygen
- doxygen-latex
- libperl-dev
- python-dev
- python3-dev
- graphviz
- texlive-latex-base
- texlive-latex-recommended
- texlive-latex-extra
- latex-beamer
- check
- texinfo
- diffutils
before_script:
- autoreconf -i
install:
- wget https://github.com/swig/swig/archive/rel-3.0.12.tar.gz
- tar -xzvf rel-3.0.12.tar.gz
- pushd swig-rel-3.0.12 && ./autogen.sh && ./configure --prefix=/usr && make && sudo make install && popd
script:
- cd src && tar xzf libsvm-3.23.tar.gz && cd ..
- ./configure --with-cluster --with-kinwalker --disable-lto
- make -j${CPU_COUNT}
- make check
before_deploy:
- make dist-gzip
- make dist-zip
- export DIST_GZIP=$(ls ViennaRNA-*.tar.gz)
- export DIST_ZIP=$(ls ViennaRNA-*.zip)
- echo "Deploying Changelog and autoconf's dists (${DIST_GZIP} and ${DIST_ZIP}) to GitHub releases"
deploy:
provider: releases
api-key:
secure: OxTdQiX3QnfRvz34HsS1XYpxNVnTYEvmlFVln/KHAx1LbU94qD3YNuGQuhOYO11CH3OUU+PM02sAUXQW6gth9tgDIBj1uRmWhP0KU7UccfkK/8Q7OuaelaySvK4kZpHJOKWwRHxzA7KuVlSApLgvWIcqYxdY7HxJcceB14lBUDFzDd6YETWEiTdEQ/dRVHJFg6lejz0JWxEYSeOiGGwv6fMrLBviG3ct/WftVl1I+tK5ZpmeyJ3BkRKOb0UOSmFKJEgp8XYe+3pPaHP0jHB7t+6y/eVK2hi/2DeL2xvRCctjMU8HuGdBputAsyyE6TgafCPv5fccygyg1cIA+639siOkHJ8hidLR6YGk3TvMJAOcDhtqs85UtvrfPUirD66vd6HNnvJMfoHuSwYQ61/t2jKvPGKzr3OJzZrPNWrt0rVVO+Q9lQ0+HPvp0rn79NN39JntxM4Fxy5YQd+DuPRdlvtEzcA3XWKLAH1L7urYlVlok5Ep1W8o5yE4FfNWjRj6BFivw7EhX7gS898B6Qx45pNUdHWQZVWxytNKSv5i1tkCvMbBHaJgk59luun/wlppfl7/KYyT8wsGYfC1AE1+aiT7R/tsW9mm9QDwRN2VETTLUZyQDlzVEgv3jKqNkUfZPGdKMxD60Pipdxv4qn0ZeSF2ol1rO8SP09QYgPuOCwY=
skip_cleanup: true
file_glob: true
overwrite: true
file:
- "${DIST_GZIP}"
- "${DIST_ZIP}"
- CHANGELOG.md
on:
repo: ViennaRNA/ViennaRNA
tags: true
This diff is collapsed.
# Contributing
If you wish to contribute to this project, please first discuss any proposed changes
with the owners and main developers. You may do that either through making an issue
at our official GitHub presence https://github.com/ViennaRNA/ViennaRNA, by email
(rna@tbi.univie.ac.at), or any other personal communication with the core developer
team.
Please note that we have a code of conduct. Please follow it in all your interactions
with this project.
## Reporting Bugs
1. Please make an issue at GitHub or notify us by emailing to rna@tbi.univie.ac.at
2. In your report, include as much information as possible, such that we are able
to reproduce it. If possible, find a minimal example that triggers the bug.
3. Include the version number for the ViennaRNA Package you experience the bug with.
4. Include at least some minimal information regarding your operating system (Linux,
Mac OS X, Windows, etc.)
## Pull Request Process
1. Ensure that you have not checked-in any files that are automatically build!
2. When contributing C source code, follow our code formatting guide lines. You
may use the tool `uncrustify` together with our config located in `misc/uncrustify.cfg`
to accomplish that.
3. Only expose symbols (functions, variables, etc.) to the libraries interface that are
absolutely necessary! Hide all other symbols in the corresponding object file(s) by
declaring them as `static`.
4. Use the prefixes `vrna_` for any symbol you add to the API of our library! Preprocessor
macros in header files require the prefix in capital letters, i.e. `VRNA_`.
5. Use C-style comments at any place necessary to make sure your implementation can still
be understood and followed in the future.
6. Add test cases for any new implementation! The test suite is located in the `tests`
directory and is split into tests for the C-library, executable programs, and the
individual scripting language interfaces.
7. Run `make check` to ensure that all other test suites still run properly with your
applied changes!
8. When contributing via GitHub, make a personal fork of our project and create a separate
branch for your changes. Then make a pull request to our `user-contrib` branch.
Pull requests to the `master` branch will be rejected to keep its history clean.
9. Pull requests that have been successfully merged into the `user-contrib` branch
usually find their way into the next release of the ViennaRNA Package. However, please
note that the core developers may decide to include your changes in a later version.
......@@ -14,6 +14,4 @@ University of Vienna.
If you want to include this software in a commercial product, please contact
the authors.
Note that the file ./lib/naview.c has its own copyright attached.
The ./Readseq/ directory contains a modified version of Don Gilbert's
public domain readseq program.
Note that the file ./src/ViennaRNA/plotting/naview.c has its own copyright attached.
This diff is collapsed.
Basic Installation
==================
These are generic installation instructions.
The `configure' shell script attempts to guess correct values for
various system-dependent variables used during compilation. It uses
those values to create a `Makefile' in each directory of the package.
It may also create one or more `.h' files containing system-dependent
definitions. Finally, it creates a shell script `config.status' that
you can run in the future to recreate the current configuration, a file
`config.cache' that saves the results of its tests to speed up
reconfiguring, and a file `config.log' containing compiler output
(useful mainly for debugging `configure').
If you need to do unusual things to compile the package, please try
to figure out how `configure' could check whether to do them, and mail
diffs or instructions to the address given in the `README' so they can
be considered for the next release. If at some point `config.cache'
contains results you don't want to keep, you may remove or edit it.
The file `configure.in' is used to create `configure' by a program
called `autoconf'. You only need `configure.in' if you want to change
it or regenerate `configure' using a newer version of `autoconf'.
The simplest way to compile this package is:
1. `cd' to the directory containing the package's source code and type
`./configure' to configure the package for your system. If you're
using `csh' on an old version of System V, you might need to type
`sh ./configure' instead to prevent `csh' from trying to execute
`configure' itself.
Running `configure' takes awhile. While running, it prints some
messages telling which features it is checking for.
2. Type `make' to compile the package.
3. Optionally, type `make check' to run any self-tests that come with
the package.
4. Type `make install' to install the programs and any data files and
documentation.
5. You can remove the program binaries and object files from the
source code directory by typing `make clean'. To also remove the
files that `configure' created (so you can compile the package for
a different kind of computer), type `make distclean'. There is
also a `make maintainer-clean' target, but that is intended mainly
for the package's developers. If you use it, you may have to get
all sorts of other programs in order to regenerate files that came
with the distribution.
Compilers and Options
=====================
Some systems require unusual options for compilation or linking that
the `configure' script does not know about. You can give `configure'
initial values for variables by setting them in the environment. Using
a Bourne-compatible shell, you can do that on the command line like
this:
CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure
Or on systems that have the `env' program, you can do it like this:
env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure
Compiling For Multiple Architectures
====================================
You can compile the package for more than one kind of computer at the
same time, by placing the object files for each architecture in their
own directory. To do this, you must use a version of `make' that
supports the `VPATH' variable, such as GNU `make'. `cd' to the
directory where you want the object files and executables to go and run
the `configure' script. `configure' automatically checks for the
source code in the directory that `configure' is in and in `..'.
If you have to use a `make' that does not supports the `VPATH'
variable, you have to compile the package for one architecture at a time
in the source code directory. After you have installed the package for
one architecture, use `make distclean' before reconfiguring for another
architecture.
Installation Names
==================
By default, `make install' will install the package's files in
`/usr/local/bin', `/usr/local/man', etc. You can specify an
installation prefix other than `/usr/local' by giving `configure' the
option `--prefix=PATH'.
You can specify separate installation prefixes for
architecture-specific files and architecture-independent files. If you
give `configure' the option `--exec-prefix=PATH', the package will use
PATH as the prefix for installing programs and libraries.
Documentation and other data files will still use the regular prefix.
In addition, if you use an unusual directory layout you can give
options like `--bindir=PATH' to specify different values for particular
kinds of files. Run `configure --help' for a list of the directories
you can set and what kinds of files go in them.
If the package supports it, you can cause programs to be installed
with an extra prefix or suffix on their names by giving `configure' the
option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
Optional Features
=================
Some packages pay attention to `--enable-FEATURE' options to
`configure', where FEATURE indicates an optional part of the package.
They may also pay attention to `--with-PACKAGE' options, where PACKAGE
is something like `gnu-as' or `x' (for the X Window System). The
`README' should mention any `--enable-' and `--with-' options that the
package recognizes.
For packages that use the X Window System, `configure' can usually
find the X include and library files automatically, but if it doesn't,
you can use the `configure' options `--x-includes=DIR' and
`--x-libraries=DIR' to specify their locations.
Specifying the System Type
==========================
There may be some features `configure' can not figure out
automatically, but needs to determine by the type of host the package
will run on. Usually `configure' can figure that out, but if it prints
a message saying it can not guess the host type, give it the
`--host=TYPE' option. TYPE can either be a short name for the system
type, such as `sun4', or a canonical name with three fields:
CPU-COMPANY-SYSTEM
See the file `config.sub' for the possible values of each field. If
`config.sub' isn't included in this package, then this package doesn't
need to know the host type.
If you are building compiler tools for cross-compiling, you can also
use the `--target=TYPE' option to select the type of system they will
produce code for and the `--build=TYPE' option to select the type of
system on which you are compiling the package.
Sharing Defaults
================
If you want to set default values for `configure' scripts to share,
you can create a site shell script called `config.site' that gives
default values for variables like `CC', `cache_file', and `prefix'.
`configure' looks for `PREFIX/share/config.site' if it exists, then
`PREFIX/etc/config.site' if it exists. Or, you can set the
`CONFIG_SITE' environment variable to the location of the site script.
A warning: not all `configure' scripts look for a site script.
Operation Controls
==================
`configure' recognizes the following options to control how it
operates.
`--cache-file=FILE'
Use and save the results of the tests in FILE instead of
`./config.cache'. Set FILE to `/dev/null' to disable caching, for
debugging `configure'.
`--help'
Print a summary of the options to `configure', and exit.
`--quiet'
`--silent'
`-q'
Do not print messages saying which checks are being made. To
suppress all normal output, redirect it to `/dev/null' (any error
messages will still be shown).
`--srcdir=DIR'
Look for the package's source code in directory DIR. Usually
`configure' can determine that directory automatically.
`--version'
Print the version of Autoconf used to generate the `configure'
script, and exit.
`configure' also accepts some other, not widely useful, options.
AUTOMAKE_OPTIONS = subdir-objects
AUTOMAKE_OPTIONS = foreign subdir-objects
ACLOCAL_AMFLAGS = -I m4
AM_DISTCHECK_CONFIGURE_FLAGS = --with-cluster --without-forester --with-python3 --with-kinwalker --disable-silent-rules
SUBDIRS = src man misc doc RNA-Tutorial interfaces @subdirs@ tests packaging/macosx
SUBDIRS = src man misc doc RNA-Tutorial interfaces @subdirs@ tests examples packaging/macosx
pkgconfigdir = $(libdir)/pkgconfig
pkgconfig_DATA = RNAlib2.pc
EXTRA_DIST = INSTALL.configure \
examples \
packaging/debian \
EXTRA_DIST = packaging/debian \
packaging/make_windows_installer.sh \
license.txt
license.txt \
README.md \
CHANGELOG.md
This diff is collapsed.
See Changelog for details.
Version 2.4.0
-------------
With version 2.4 sliding-window structure prediction receives the constraint framework!
Starting with this version, the sliding-window secondary structure prediction implementations
as available through RNALfold, RNAplfold, and RNALalifold are constraints-aware. Thus, they
can readily incorporate RNA structure probing data, such as from SHAPE experiments, etc.
See the Changelog for version 2.4.0 for a complete list of new features and bugfixes.
Version 2.3.0
-------------
This version introduces the unstructured domain extension of the RNA folding grammar! This
extension adds RNA-ligand interactions, e.g. RNA-protein, for unpaired stretches in RNA
secondary structures. The feature is easy to use through the command file interface in RNAfold.
See the Changelog for version 2.3.0 for a complete list of new features and bugfixes.
Version 2.2.0
-------------
After almost a year without a new release, we are happy to announce many new features. This
version officially introduces (generic) hard- and soft-constraints for many of the folding
algorithms. Thus, chemical probing constraints, such as derived from SHAPE experiments, can
be easily incorporated into RNAfold, RNAalifold, and RNAsubopt. Furthermore, RNAfold and the
RNAlib interface allow for a simple way to incorporate ligand binding to specific hairpin- or
interior-loop motifs. This version also introduces the new v3.0 API of the RNAlib C-library,
that will eventually replace the current interface in the future.
See the Changelog for version 2.2.0 for a complete list of new features and bugfixes.
Version 2.1.9
-------------
This is a major bugfix release that changes the way how the ViennaRNA Package handles
dangling end and terminal mismatch contributions for exterior-, and multibranch loops. We strongly
recommend upgrading your installation to this or a newer version to obtain predictions that are
better comparable to RNAstructure or UNAFold.
Please see the Changelog for version 2.1.9 for further details on the actual changes to the
underlying energy parameters.
Version 2.1.7
-------------
For a long time, Mac OS X users were not able to correctly build the Perl/Python interface of the
ViennaRNA Package. Starting with v2.1.7, this limitation has been removed, and the interface should
compile and work as expected.
Please see the Install Notes for Mac OS X users for further details.
Version 2.1.0
-------------
Since ViennaRNA Package Version 2.1.0 we have enabled G-Quadruplex prediction support into
RNAfold, RNAcofold, RNALfold, RNAalifold, RNAeval and RNAplot.
See the changelog for details.
## Older news
Version 2.0
------------
......
[![Build Status](https://travis-ci.org/ViennaRNA/ViennaRNA.svg?branch=master)](https://travis-ci.org/ViennaRNA/ViennaRNA)
# ViennaRNA Package
## Version 2.4.6
See the [NEWS](NEWS) and [ChangeLog](ChangeLog) files for changes between versions.
## About
The ViennaRNA Package consists of a few stand alone programs and a
library that you can link your own programs with.
Together with this version we distribute the programs
- Kinfold,
- RNAforester,
- RNAlocmin, and
- Kinwalker
See the README files in the respective sub-directories.
The package allows you to
- predict minimum free energy secondary structures
- calculate the partition function for the ensemble of structures
- 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 hybridization structures of two RNA molecules
The package includes Perl5, Python 2, and Python 3 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).
## Copyright
Please read the copyright notice in the file [COPYING](COPYING)!
If you're a commercial user and find these programs useful, please consider
supporting further developments with a donation.
## Availability
The most recent source code and documentation should always be available through
the [official ViennaRNA website](https://www.tbi.univie.ac.at/RNA) and through
[github](https://github.com/ViennaRNA/ViennaRNA).
## Compatibility
The package should be easily portable. It is known to compile without
modifications at least under
SunOS 5.x, IRIX 5.x and 6.x, Linux, and MS Windows with the Cygwin environment.
Other UNIX flavors should present no problems.
You need a compiler that understands ANSI C. See the [INSTALL](INSTALL) file for details.
## Executable Programs
The following executable programs are provided:
- `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
- `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
- `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
```
## References
If you use our software package, you may want to cite
[R. Lorenz et al. (2004)](https://almob.biomedcentral.com/articles/10.1186/1748-7188-6-26),
"ViennaRNA Package 2.0", Algorithms for Molecular Biology, 6:26
and
[I.L. Hofacker (1994)](https://link.springer.com/article/10.1007/BF00818163),
"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.*
### Energy Parameters
Since version 2.0 the build-in energy parameters, also available as parameter
file [rna_turner2004.par](misc/rna_turner2004.par), are taken from:
[D.H. Mathews et al. (2004)](https://doi.org/10.1073/pnas.0401799101),
"Incorporating chemical modification constraints into a dynamic programming
algorithm for prediction of RNA secondary structure",
Proc. Natl. Acad. Sci. USA: 101, pp 7287-7292
and
[D.H. Turner et al. (2009)](https://dx.doi.org/10.1093/nar/gkp892),
"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](misc/rna_turner1999.par). Additionally,
a set of trained RNA energy parameters from Andronescou et al. 2007,
[rna_andronescou2007.par](misc/rna_andronescou2007.par), a set of RNA energy
parameters obtained by graft and grow genetic programming from Langdon
et al. 2018, [rna_langdon2018.par](misc/rna_langdon2018.par), and two sets
of DNA parameters, [dna_mathews1999.par](misc/dna_mathews1999.par) and
[dna_mathews2004.par](misc/dna_mathews2004.par), are included
in the package as well.
## Contact
We need your feedback! Send your comments, suggestions, and questions to
rna@tbi.univie.ac.at
Ivo Hofacker, Spring 2006
[![GitHub release](https://img.shields.io/github/release/ViennaRNA/ViennaRNA.svg)](https://www.tbi.univie.ac.at/RNA/#download)
[![Build Status](https://travis-ci.org/ViennaRNA/ViennaRNA.svg?branch=master)](https://travis-ci.org/ViennaRNA/ViennaRNA)
[![Github All Releases](https://img.shields.io/github/downloads/ViennaRNA/ViennaRNA/total.svg)](https://github.com/ViennaRNA/ViennaRNA/releases)
[![Conda](https://img.shields.io/conda/v/bioconda/viennarna.svg)](https://anaconda.org/bioconda/viennarna)
[![AUR](https://img.shields.io/aur/version/viennarna.svg)](https://aur.archlinux.org/packages/viennarna/)
# ViennaRNA Package
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 hybridization structures of two RNA molecules
The package includes `Perl 5`, `Python 2`, and `Python 3` 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](NEWS) and [CHANGELOG.md](CHANGELOG.md) files for changes between versions.
----
## Table of Contents
1. [Availability](#availability)
2. [Installation](#installation)
3. [Configuration](#configuration)
4. [Executable Programs](#executable-programs)
5. [Energy Parameters](#energy-parameters)
6. [References](#references)
7. [License](#license)
8. [Contact](#contact)
----
## Availability
The most recent source code and documentation should always be available through
the [official ViennaRNA website](https://www.tbi.univie.ac.at/RNA) and through
[github](https://github.com/ViennaRNA/ViennaRNA).
----
## Installation
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](INSTALL) for a more detailed description of the build
and installation process.*
#### Quick Start
Usually you'll simply unpack the distribution tarball, configure and make:
```
tar -zxvf ViennaRNA-2.4.13.tar.gz
cd ViennaRNA-2.4.13
./configure
make
sudo make install
```
#### User-dir Installation
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.*
#### Install from git repository
If you attempt to build and install from our git repository, you need to
perform some additional steps __before__ actually running the `./configure`
script:
1. Unpack the `libsvm` archive to allow for SVM Z-score regression with the
program `RNALfold`:
```
cd src
tar -xzf libsvm-3.23.tar.gz
cd ..
```
2. Install the additional maintainer tools `gengetopt`, `help2man`,`flex`,`xxd`,
and `swig` 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)
- `flex` and `flex-devel` (to generate sources for RNAforester)
- `vim-common` (for the `xxd` program)
- `swig` (to generate the scripting language interfaces)
3. 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.
----
## Configuration
This release includes the `RNAforester`, `Kinfold`, `Kinwalker`, and `RNAlocmin`
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.
#### Cluster Analysis
The programs `AnalyseSeqs` and `AnalyseDists` offer some cluster analysis tools
(split decomposition, statistical geometry, neighbor joining, Ward's method) for
sequences and distance data. To also build these programs add `--with-cluster`
to your configure options.
#### Kinfold
The `kinfold` program can be used to simulate the folding dynamics of an RNA
molecule, and is compiled by default. Use the `--without-kinfold` option to
skip compilation and installation of Kinfold.
#### RNAforester
The `RNAforester` program is used for comparing secondary structures using tree
alignment. Similar to Kinfold, use the `--without-forester` option to skip
compilation and installation of RNAforester.
#### Kinwalker
The `kinwalker` algorithm performs co-transcriptional folding of RNAs, starting
at a user specified structure (default: open chain) and ending at the minimum
free energy structure. Compilation and installation of this program is
deactivated by default. Use the `--with-kinwalker` option to enable building and
installation of Kinwalker.
#### RNAlocmin
The `RNAlocmin` program is part of the `Basin Hopping Graph` Framework and reads
secondary structures and searches for local minima by performing a gradient walk
from each of those structures. It then outputs an energetically sorted list of
local minima with their energies and number of hits to particular minimum, which
corresponds to a size of a gradient basin. Additional output consists of barrier
trees and Arhenius rates to compute various kinetic aspects. Compilation and
installation of this program is activated by default. Use the
`--without-rnalocmin` option to disable building and installation of RNAlocmin.
#### Scripting Interfaces
The ViennaRNA Package comes with scripting language interfaces for `Perl 5`,
`Python 2`, and `Python 3` (provided by `swig`), that allow one to use the
implemented algorithms directly without the need of calling an executable
program. The necessary requirements are determined at configure time and
particular languages may be deactivated automatically, if the requirements are
not met. You may also switch-off particular languages by passing the
`--without-perl`, `--without-python`, and/or `--without-python3` configure
options, e.g.
```
./configure --without-perl --without-python
```
will turn-off the `Perl 5` and `Python 2` interfaces.
Disabling the entire scripting language support alltogether can be accomplished
with the `--without-swig` switch.
#### Streaming SIMD Extension support
Our latest version contains code that implements a faster multibranch loop
decomposition in global MFE predictions, as used e.g. in `RNAfold`. This
implementation makes use of modern processors capability to execute particular
instructions on multiple data simultaneously (SIMD - single instruction multiple
data, thanks to W. B. Langdon for providing the modified code). Consequently,
the time required to assess the minimum of all multibranch loop decompositions
is reduced up to about one half compared to the runtime of the original
implementation. This feature is enabled by default since version 2.4.11 and a
dispatcher ensures that the correct implementation will be selected at runtime.
If for any reason you want to disable this feature at compile-time use the
following configure flag
```
./configure --disable-simd
```
#### Link Time Optimization (LTO)
To increase the performance of our implementations, the ViennaRNA Package tries
to make use of the Link Time Optimization (LTO) feature of modern C-compilers.
If you are experiencing any troubles at make-time or run-time, or the configure
script for some reason detects that your compiler supports this feature although
it doesn't, you can deactivate it using the flag
```
./configure --disable-lto
```
#### OpenMP support
To enable concurrent computation of our implementations and in some cases
parallelization of the algorithms we make use of the OpenMP API. This interface
is well understood by most modern compilers. However, in some cases it might be
necessary to deactivate OpenMP support and therefore transform RNAlib into a
C-library that is not entirely thread-safe. To do so, add the following
configure option
```
./configure --disable-openmp
```
#### POSIX threads (pthread) support
To enable concurrent computation of multiple input data in `RNAfold`,
`RNAcofold`, `RNAalifold`, and for our implementation of the concurrent
unordered insert, ordered output flush data structure `vrna_ostream_t` we make
use of POSIX threads. This should be supported on all modern platforms and
usually does not pose any problems. In case you want to compile without POSIX
threads support for any reason, add the following configure option
```
./configure --disable-pthreads
```
#### SVM Z-score filter in RNALfold
By default, `RNALfold` that comes with the ViennaRNA Package allows for z-score
filtering of its predicted results using a support vector machine (SVM).
However, the library we use to implement this feature (`libsvm`) is statically
linked to our own RNAlib. If this introduces any problems for your own
third-party programs that link against RNAlib, you can safely switch off the
z-scoring implementation using
```
./configure --without-svm
```
#### GNU Scientific Library
The new program `RNApvmin` computes a pseudo-energy pertubation vector that aims
to minimize the discrepancy of predicted, and observed pairing probabilities.
For that purpose it implements several methods to solve the optimization
problem. Many of them are provided by the GNU Scientific Library, which is why
the `RNApvmin` program, and the RNAlib C-library are required to be linked
against `libgsl`. If this introduces any problems in your own third-party
programs that link against RNAlib, you can turn off a larger protion of
available minimizers in `RNApvmin` and linking against `libgsl` alltogether,
using the switch
```
./configure --without-gsl
```
#### Help
For a complete list of all `./configure` options and important environment
variables, type
```
./configure --help
```
----
## Executable Programs
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 |
| `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 |
| `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`, and
- `kinwalker`
See the README files in the respective sub-directories.
----
## References
If you use our software package, you may want to cite the follwing publications:
- [R. Lorenz et al. (2011)](https://almob.biomedcentral.com/articles/10.1186/1748-7188-6-26),
"ViennaRNA Package 2.0", Algorithms for Molecular Biology, 6:26
- [I.L. Hofacker (1994)](https://link.springer.com/article/10.1007/BF00818163),
"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.*
----
## Energy Parameters
Since version 2.0.0 the build-in energy parameters, also available as parameter
file [rna_turner2004.par](misc/rna_turner2004.par), are taken from:
- [D.H. Mathews et al. (2004)](https://doi.org/10.1073/pnas.0401799101),
"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)](https://dx.doi.org/10.1093/nar/gkp892),
"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](misc/rna_turner1999.par).
Additionally, a set of trained RNA energy parameters from Andronescou et al.
2007, [rna_andronescou2007.par](misc/rna_andronescou2007.par), a set of RNA
energy parameters obtained by graft and grow genetic programming from Langdon
et al. 2018, [rna_langdon2018.par](misc/rna_langdon2018.par), and two sets of
DNA parameters, [dna_mathews1999.par](misc/dna_mathews1999.par) and
[dna_mathews2004.par](misc/dna_mathews2004.par), are included in the package as
well.
----
## License
Please read the copyright notice in the file [COPYING](COPYING)!
If you're a commercial user and find these programs useful, please consider
supporting further developments with a donation.
----
## Contact
We need your feedback! Send your comments, suggestions, and questions to
rna@tbi.univie.ac.at
Ivo Hofacker, Spring 2006
*.aux
*.dvi
*.log
*~
*.png
*.html
*-eps-converted-to.pdf