Readme file for the MultiRNAFold package - latest version is 2.0.
- last updated March 21st, 2009, by Mirela Andronescu

Authorship & reference
Disclaimer
What this package contains
Installation instructions
History
Platform & organization
A word for the user
A word for the programmer
Bugs
Contact


Authorship & reference

The MultiRNAFold package is copyrighted under GNU General Public Licence, by Mirela Andronescu, Zhi Chuan Zhang and Anne Condon, Computer Science UBC.

If you use this package to get results in your publications, please include the following reference:
Mirela Andronescu, Zhi Chuan Zhang and Anne Condon, "Secondary Structure Prediction of Interacting RNA Molecules", Journal of Molecular Biology, Vol 345/5 pp 987-1001.

If you use the new energy parameters provided with version 1.6+, please also cite:
M Andronescu, A Condon, H Hoos, D Mathews, K Murphy, "Efficient parameter estimation for RNA secondary structure prediction", Bioinformatics, 23(13): i19-i28.

Web page: www.rnasoft.ca/download.html


Disclaimer

Although the authors have made every effort to ensure that MultiRNAFold correctly implements the underlying models and fullfills the functions described in the documentation, neither the authors nor the University of British Columbia guarantee its correctness, fitness for a particular purpose, or future availability.



What this package contains

The MultiRNAFold package contains software for secondary structure prediction of one, two, or many interacting RNA or DNA molecules. It is composed of three pieces of software: SimFold, PairFold and MultiFold.

SimFold predicts the minimum free energy (MFE) secondary structure of a given input RNA or DNA sequence. The current implementation include suboptimal folding calculations, as well as partition functions, base pair probabilities and gradient computations.

PairFold predicts the MFE secondary structure of two interacting RNA or DNA molecules, and suboptimal structures. All suboptimal structures up to a specified free energy, or the first k suboptimal structures can be computed. Currently we have NOT implemented a way to return the suboptimal structures which differ significantly from each other, but all suboptimal structures in the specified range are returned. PairFold can be used to predict the MFE of a single given sequence, but it is slower than SimFold.

MultiFold predicts the MFE secondary structure of three or more RNA/DNA input sequences.
The current implementation does NOT include suboptimal folding calculations, however it can be adapted from PairFold's implementation. MultiFold can be used with two or one sequences as input, but it is slower than PairFold or SimFold.



Installation instructions

For Linux, you just have to type "make" to compile.

If you get something like:
        "make: *** No rule to make target `/usr/lib/gcc-lib/i386-redhat-linux/3.3.3/include/stddef.h', needed by `src/common/common.o'.  Stop.",
type "make depend", and then "make".

If you want to use only SimFold, PairFold, or MultiFold, run "csh get_code.csh", and it will tell you what arguments to type exactly, depending on what you want.
Then go to that new directory, and type "make".

NOTE (added on March 21, 2009): Since a lot of variables use the stack, you might get "Segmentation fault" when you try to run simple commands, particularly when you use suboptimals. If you get that, you can edit the file "include/constants.h" and set the constants MAXSUBSTR and/or MAXSLEN to a lower value. In a future version, I might reimplement parts of the code to use the heap instead of the stack, but I can't promise it.



History




Platform & organization

The MultiRNAFold package has been written in C++, on a Linux 2.6.5 platform, compiler g++  3.3.3.
Versions 1.1 and 1.0.3 are tested on both Linux and Windows. Version 1.0.2 has not been tested on Windows yet, however this version contains few modifications comparing to the previous one. Version 1.0.1 is valid for both Linux, and Windows (I used Visual C++ 6.0 on Windows 2K).

The following files and directories are contained in the package:
For versions 1.1 and 1.0.3, I'm also providing a built DLL (see the web page).
The version 1.0.1 compiles and works well on Windows (Visual C++ 6.0). However, I'm not providing a project file, a Makefile, a lib file or a dll file for Windows. You can do that very easily in Visual C++. Please let me know if I can help.



A word for the user

At this stage, the drivers are pretty rudimentary. You can create your own drivers by using the functions in the library. Please let me know if I can help.

To execute a driver in LINUX, first type make and then run simfold, pairfold, multifold or multirnafold without parameters to see a usage message.
If you are not interested in the source code, just remove the src/ directory, NOT before you typed make to get the library. Then, you need the directories params/ and include/, the library and the driver.

To compile the DLL on WINDOWS, first download both MultiRNAFold and MultiRNAFoldDLL archives for the last version, and place them in the same directory. Open the DLL workspace wih Visual C++. It should be able to find the source files by itself, in the MultiRNAFold directory. If it doesn't, add all the source files in src/, except timer.cpp and timer.h (these are specific to Linux, to measure the CPU time - you have to use some other way if you really want to measure the time in Windows). Then, add all the directories having header files (these are: include/, src/comon/, src/simfold/, src/pairfold/, src/multifold/) in Tools/Options/Directories/Show directories for include files.



A word for the programmer

This may not be the most efficient/clean/clear/elegant code in the world. Also, there are MANY redundancies, especially between simfold, pairfold and multifold. However, it should work. Please let me know if you find any bugs in the code, which would make the programs work improperly.

I placed comments in the code wherever I thought it's necessary. The classes, functions and variables should be pretty self-explanatory. Please let me know if you need help with understanding the code.



Bugs

I found and fixed so many bugs in this package that I can't find any more, while I'm pretty sure there still are :D. Please contact me if you find any.
The versions 1.0.x had several memory leaks. These have been fixed (as far as I know) in version 1.1.



Contact

We would like to know who is using our package, for what, if you think it's useful, and any other feedback you may have. We will appreciate you sending this information to us.

If you have any questions/suggestions/comments/concerns or you find bugs, please contact Mirela Andronescu: andrones at cs dot ubc dot ca.



Thanks for your interest in MultiRNAFold package!