yhoogstrate / segmentation-fold

:triangular_ruler: segmentation-fold: RNA folding including K-turns

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Build Status


 _______  _______  _______  _______  _______  _       _________ _______ __________________ _______  _       
(  ____ \(  ____ \(  ____ \(       )(  ____ \( (    /|\__   __/(  ___  )\__   __/\__   __/(  ___  )( (    /|
| (    \/| (    \/| (    \/| () () || (    \/|  \  ( |   ) (   | (   ) |   ) (      ) (   | (   ) ||  \  ( |
| (_____ | (__    | |      | || || || (__    |   \ | |   | |   | (___) |   | |      | |   | |   | ||   \ | |
(_____  )|  __)   | | ____ | |(_)| ||  __)   | (\ \) |   | |   |  ___  |   | |      | |   | |   | || (\ \) |
      ) || (      | | \_  )| |   | || (      | | \   |   | |   | (   ) |   | |      | |   | |   | || | \   |
/\____) || (____/\| (___) || )   ( || (____/\| )  \  |   | |   | )   ( |   | |   ___) (___| (___) || )  \  |
\_______)(_______/(_______)|/     \|(_______/|/    )_)   )_(   |/     \|   )_(   \_______/(_______)|/    )_)
                                                                                                            
                                                     _____                                                  
                                                    (_____)                                                 
                                                                                                            
                                       _______  _______  _        ______                                    
                                      (  ____ \(  ___  )( \      (  __  \                                   
                                      | (    \/| (   ) || (      | (  \  )                                  
                                      | (__    | |   | || |      | |   ) |                                  
                                      |  __)   | |   | || |      | |   | |                                  
                                      | (      | |   | || |      | |   ) |                                  
                                      | )      | (___) || (____/\| (__/  )                                  
                                      |/       (_______)(_______/(______/                                   

INTRODUCTION

segmentation-fold is a bioinformatics application that predicts RNA 2D-structure with an extended version of the Zuker algorithm. This modification contains a two new "structure elements", the segment and segmentloop which are capable of folding pre-defined substructure containing multiple canonical and/or non-canonical pairings.

This allows predicting structures containing sub-structures like K-turns and loop-E-motifs, which are also part of the implemented free energy tables segments.xml. These parameters (free Gibbs energy) have been estimated using in silico predictions but lack accuracy due to the limited number of available datapoints. In order to add novel structures to segmentation-fold, the segments.xml file needs to be modified.

We have made a set of utilities using segmentation-fold available at ./scripts/energy-estimation-utilities/. Details on the utilities can be found at https://github.com/yhoogstrate/segmentation-fold/blob/master/scripts/energy-estimation-utility/README.md.

INSTALLATION

Prerequisites

Segmentation-fold does not install out of the box because it depends on two additional libraries and a tool required for building:

cmake
boost library (-system)
boost library (-test)
boost library (-xml)

In Debian and Ubuntu you can install these dependencies with the following command:

sudo apt-get install cmake libboost-system-dev libboost-test-dev libboost-filesystem-dev

In Arch linux you can install these packages with the folllowing command:

sudo pacman -S git cmake boost boost-libs

Recommended packages

To create the corresponding documentation, you should have installed the following package:

doxygen (>= 1.8.3)

The doxygen package is version specific because Markdown support is implemented in 1.8.3 and above.

To make the style of the syntax of (novel) code automatically identical to existing code, you should have installed the package:

astyle

You can install the recommended packages in Ubuntu or Debian with:

sudo apt-get install doxygen astyle

You can install the recommanded packages in Arch with:

sudo pacman -S doxygen astyle

Details on running doxygen and astyle are given in the sections Get the documentation and CONTRIBUTING.

Build and install

After having the prerequisites installed, you can downadload, compile and install segmentation-fold with following commands:

 $ git clone https://github.com/yhoogstrate/segmentation-fold
 $ cd segmentation-fold
 $ cmake -DCMAKE_BUILD_TYPE=release .
 $ make
 $ make test
 $ sudo make install

In case you do not have administrator rights on a particular machine, you can install as follows:

 $ git clone https://github.com/yhoogstrate/segmentation-fold
 $ cd segmentation-fold
 $ cmake -DCMAKE_BUILD_TYPE=release -DCMAKE_INSTALL_PREFIX=~/.local .
 $ make
 $ make test
 $ make install

You will then find the binary in the directory: /.local/bin/

If you want to run segmentation-fold for anything else than development, you should compile with the -DCMAKE_BUILD_TYPE=release flag because by default compiling is done with the 'debug' flag. The two differences between debug and release are that (1) debug contains certain (unneccesairy if all code behaves as expected) checks on variables and (2) has no optimized, but faster, compilation. Therefore, debug mode will produce a binary that has a slower performance, but a higher level of safety.

If you are using a compiled version of segmentation-fold and you don't known the original compilation settings, you should run:

segmentation-fold --version

This will report the version number, the git commit-SHA1 and the build type.

Get the documentation

Run the following commands to get the latest version of the documentation:

cmake .
make readme
make doc

The first command, "cmake ." creates the doxygen description file from its template and sets e.g. the package version variable. Then "make readme" creates the latests version of README.md based on the Markdown files present in this project. Then "make doc" creates the documentation from all the doxygen comments within the code, including the latest README.md as main page.

USAGE

Usage: segmentation-fold -s [SEQUENCE]
Usage: segmentation-fold -f [FASTA_FILE]
   * Note: If FASTA_FILE and SEQUENCE are not provided,
           the program will read from STDIN.


The following parameters can be used:
  -s SEQUENCE                Specific RNA SEQUENCE (overrules -f)
  -f FASTA_FILE              Location to FASTA_FILE that contains the sequence

  -p                  [1/0]  Enable/disable segment prediction functionality

  -h HAIRPINSIZE      [1,N}  Minimum hairpin size, default: 3
  -x SEGMENTS_XML_FILE       Use custom  "segments.xml"-syntaxed file

  -t NUM_THREADS      [0,N}  Number of threads; 0 = maximum available, default: 3.

  -V                         Shows the version and license


If you encounter problems with this software, please send bug-reports to:
   <https://github.com/yhoogstrate/segmentation-fold/issues>

galaxy

segmentation-fold with utilities is available for galaxy at the following url: https://toolshed.g2.bx.psu.edu/view/yhoogstrate/segmentation_fold/, and the code is maintained at: https://github.com/ErasmusMC-Bioinformatics/segmentation_fold_galaxy_wrapper

AUTHORS

All people that have contributed to the development of segmentation-fold are:

  • Youri Hoogstrate

CONTRIBUTING

We encourage users, researchers and programmers to contribute to this free and open source project. This can be achieved by reporting bugs and commiting code to the github repository https://github.com/yhoogstrate/segmentation-fold. To streamline and archive communication in an univocal way, we encourge contributors to only use this channel, Github, to contribute to segmentation-fold. To contribute to segmentation-fold, please make use the following documentation standard: http://www.stack.nl/~dimitri/doxygen/index.html.

Tidy

All source-code is formatted using Asteric Style: http://astyle.sourceforge.net/. The corresponding configuration file is available at 'share/.astylerc'. If you want to contribute to the code you should have it installed to 'beautify' the code, by simply running:

make tidy

Cmake will make use of the correct syntax file and beautify all C++ and hpp files in src/, include/, and test/.

Tests

To simplify the reviewing process of submitted code the project contains unit and functional tests. These tests have to be passed in order to get a positive review. These tests also inspect memory leaks using valgrind. To run the test on (your copy of the) code before doing a pull request, run:

cmake .
make clean
make readme
make
make test
ctest -V -T memcheck

This will re-build the readme, re-compile the code, and does testing with and without memory leak checking. If you can't get it working but you still believe your change is worth submitting, don't worry. Whenever you do a pull request TravisCI will automatically run the tests for you.

About

:triangular_ruler: segmentation-fold: RNA folding including K-turns

License:GNU General Public License v3.0


Languages

Language:C++ 93.9%Language:Python 5.1%Language:CMake 1.0%