Skip to content

Generate the branching polytope for a specified RNA sequence

Notifications You must be signed in to change notification settings

gtDMMB/pmfe2023

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Synopsis

pmfe determines the sensitivity of RNA folding to multibranch-loop-related parameters. It relies on an implementation of Zucker's dynamic-programming algorithm for RNA secondary structure prediction, using adapted code from the gtmfe program from the GTFold project.

DOI

Docker container

This project is available as a Docker container. If you wish to run pmfe but do not need to modify and recompile the code, we recommend this approach, as it makes it easy to ensure you have all the dependencies.

Note that the image is no longer being updated and corresponds to latest code as of September 2015. As of June 2018, the only updates have been to the test suite. Therefore, the Docker container remains a good choice for users who only need to generate polytopes from RNA sequences.

You can download the latest image by running the following in your shell:

docker pull agdphd/pmfe

This command can be used in the future to update your image to the latest version.

You can then enter the image by running the following in your shell:

docker run -it agdphd/pmfe

This will give you a shell in the pmfe directory with the binaries built and ready to go.

WARNING: Each time you call docker run […], you get a clean new copy of the image! Any data you produced in previous runs will not be present. Thus, be sure to copy out anything important before exiting the image.

Getting started with code

If you want to modify the source and compile pmfe yourself, the source is available here. This project is under active development, so we recommend downloading it using Git. To do this, run the following in your terminal:

git clone https://github.com/AMS-MRC-disc-math-bio/pmfe.git

This will download the code and extract it into a directory called pmfe.

Dependencies

This project depends on the CGAL computational geometry library, several libraries from the Boost project, and the GMP arbitrary-precision arithmetic library. To install the required dependencies on a Debian system, run

sudo apt-get install libgmp-dev libboost-filesystem-dev libboost-program-options-dev libboost-log-dev libcgal-dev

To install the required dependencies on OSX using Homebrew, run

sudo brew install boost cgal gmp

This project also depends on the Catch unit testing library. It has been included here under the terms of the Boost Software License.

Building the project code

Next, you will need to build our custom version of GTFold and the parametrizer. To do so, simply run make from the pmfe directory. If you have multiple cores or processors, you can build in parallel by running

nice make -j

instead. The resulting binaries can be found in the base directory with the pmfe- prefix.

Updating

If you used Git to download your copy of this software, you can update it easily. Just run git pull in a terminal from anywhere inside the repository to fetch the latest version. Afterwards, run make again to build the new version.

Usage

This project builds programs that perform a variety of tasks.

pmfe-findmfe

Given a FASTA file representing an RNA sequence and (optionally) some modified values for the Turner99 multibranch loop parameters, the pmfe-findmfe program will generate a secondary structure which minimizes free energy. For example, to use it on the sequence in test_seq/tRNA/c.diphtheriae_tRNA.fasta with parameters A, B, C, and D, type

pmfe-findmfe test_seq/tRNA/c.diphtheriae_tRNA.fasta -a A -b B -c C -d D

The result will be printed to your terminal.

pmfe-subopt

Given a FASTA file representing an RNA sequence, an energy gap δ, and (optionally) some modified values for the Turner99 multibranch loop parameters, the pmfe-subopt program will generate all secondary structures with energy within δ of the minimum. To use it on the sequence in test_seq/tRNA/c.diphtheriae_tRNA.fasta with parameters A, B, C, and D and energy gap δ, type

pmfe-subopt test_seq/tRNA/c.diphtheriae_tRNA.fasta -a A -b B -c C -d D --delta δ

The result will be saved in test_seq/tRNA/c.diphtheriae_tRNA.rnasubopt.

Transformation

Both pmfe and subopt also have options to operate in the transformed space defined by the transformation $(x, y, z, w) \rightarrow (x, y, z-3x, w)$. The option -I tells pmfe that the input parameters come from the transformed space. The option -O tells pmfe the output should be in the transformed space. Using them both means both input and output should be in the transformed space.

pmfe-parametrizer

Given a FASTA file representing an RNA sequence, the pmfe-parametrizer program will generate the polytope which is the convex hull of all secondary structures on that sequence in ℚ⁴. To use it on the sequence in test_seq/tRNA/c.diphtheriae_tRNA.fasta, type

pmfe-parametrizer test_seq/tRNA/c.diphtheriae_tRNA.fasta

The result will be saved in test_seq/tRNA/c.diphtheriae_tRNA.rnapoly, which can be read directly or used with rna_poly.py to produce a Sage polytope for further investigation.

To calculate one b-slice of the polytope use the -b tag with a string to represent the value of the b parameter. i.e. -b 1/3

pmfe-tests

The pmfe-tests program runs a suite of unit tests.

iB4e

This project includes "BBPolytope.h", a headers-only implementation of Huggins' iB4e algorithm. It can be found in the iB4e subdirectory. Note that it requires a replacement for one header file in the CGAL library; this is a small but necessary modification to support the algorithm. In the future, this will be updated to use the new Triangulations library in CGAL, and the modification will no longer be necessary.

License

The source for pmfe is released under the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

About

Generate the branching polytope for a specified RNA sequence

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C++ 98.5%
  • Python 1.1%
  • Other 0.4%