Giter Site home page Giter Site logo

viennarna / rnablueprint Goto Github PK

View Code? Open in Web Editor NEW
8.0 8.0 3.0 2.17 MB

RNAblueprint library for uniform sampling of RNA sequences given structural and sequence constraints

Home Page: http://www.tbi.univie.ac.at

License: GNU General Public License v3.0

Shell 0.01% TeX 0.82% C++ 67.92% Makefile 3.08% M4 27.03% SWIG 1.15%
design inverse-folding nupack riboswitch rna-design rna-structure rnablueprint-library viennarna

rnablueprint's Introduction

GitHub release Build Status Github All Releases Conda Conda Downloads AUR

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


Table of Contents

  1. Availability
  2. Documentation
  3. Installation
  4. Configuration
  5. Executable Programs
  6. Energy Parameters
  7. References
  8. License
  9. Contact

Availability

The most recent source code should always be available through the official ViennaRNA website and through github.


Documentation

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 at our official website and at ReadTheDocs.


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 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.6.4.tar.gz
cd ViennaRNA-2.6.4
./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.31.tar.gz
cd ..
  1. Unpack the dlib archive to allow for concentration dependency computations with the program RNAmultifold:
cd src
tar -xjf dlib-19.24.tar.bz2
cd ..
  1. 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)
    • yacc, flex and flex-devel (to generate sources for RNAforester)
    • vim-common (for the xxd program)
    • swig (to generate the scripting language interfaces)
    • liblapacke (for RNAxplorer)
    • liblapack (for RNAxplorer)
    • A fortran compiler, e.g. gcc-gfortran (for RNAxplorer)
  2. 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

Binary packages for several Linux-based platforms, Microsoft Windows, and Mac OS X are available at our official website.

Bioconda

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

Python interface only

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

Building a Python 3 sdist or wheel package

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.

Howto prepare the Python 3 sdist/wheel build from git repository

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.


Configuration

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.


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
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, 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), "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.


Energy Parameters

Default Parameters

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.

Deprecated Parameters

For backward compatibility we also provide energy parameters from Turner et al. 1999 in the file rna_turner1999.par.

Trained Parameters

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.

DNA Parameters

To predict secondary structures for DNA, we additionally include two DNA parameter sets:

RNA Base Modifications

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

Paramers Set Availability

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.


License

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.


Contact

We need your feedback! Send your comments, suggestions, and questions to [email protected]

Ivo Hofacker, Spring 2006

rnablueprint's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

rnablueprint's Issues

'configure' error

Hello,
I am trying to install this software and getting the following error:

Screen Shot 2019-10-28 at 11 23 22

I am not well-versed in C++, but perhaps the configure file should be checking for prerequisites to adjacency_list.hpp instead of doing an explicit pre-processor check on it? I'd appreciate your help with this issue. Thanks!

Unit tests fail in conda env: undefined reference to clock_gettime()

When running the unit tests via make check inside a conda environment, the linking of testRNAblueprint fails with the following error message:

/home/felix/miniconda3/envs/rnablueprint/bin/../lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/../../../../x86_64-conda_cos6-linux-gnu/bin/ld: testRNAblueprint-main.o: in function `boost::unit_test::timer::timer::elapsed() const':
main.cc:(.text._ZNK5boost9unit_test5timer5timer7elapsedEv[_ZNK5boost9unit_test5timer5timer7elapsedEv]+0x45): undefined reference to `clock_gettime'
/home/felix/miniconda3/envs/rnablueprint/bin/../lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/../../../../x86_64-conda_cos6-linux-gnu/bin/ld: testRNAblueprint-main.o: in function `boost::unit_test::framework::state::execute_test_tree(unsigned long, unsigned long, boost::unit_test::framework::state::random_generator_helper const*)':
main.cc:(.text._ZN5boost9unit_test9framework5state17execute_test_treeEmmPKNS2_23random_generator_helperE[_ZN5boost9unit_test9framework5state17execute_test_treeEmmPKNS2_23random_generator_helperE]+0x5b3): undefined reference to `clock_gettime'
collect2: error: ld returned 1 exit status
Makefile:674: recipe for target 'testRNAblueprint' failed
make[2]: *** [testRNAblueprint] Error 1

My conda env was created using the following command:

conda create -n rnablueprint c-compiler python boost cxx-compiler perl swig automake autoconf libtool m4

The problem seems to be that clock_gettime needs to be linked with -lrt, cf. man clock_gettime. There it sais " Link with -lrt (only for glibc versions before 2.17)." Adding -lrt to testRNAblueprint_LDADD in tests/Makefile.am solves this problem. librt is part of the Linux Standard Base specification, so it should be present everywhere (?).

Installation (lib/lib64)

During installation two lib folders are created: lib and lib64

  1. Installation Guide: Hint: in case of a local installation both must be added to the PYTHONPATH
  2. Code update: merge them to only one lib

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.