Local (sliding window) MFE Prediction

Variations of the local (sliding window) Minimum Free Energy (MFE) prediction algorithm.

We provide implementations for the local (sliding window) MFE prediction algorithm for

  • Single sequences,

  • Multiple sequence alignments (MSA), and

Note, that our implementation scans an RNA sequence (or MSA) from the 3’ to the 5’ end, and reports back locally optimal (consensus) structures, the corresponding free energy, and the position of the sliding window in global coordinates.

For any particular RNA sequence (or MSA) multiple locally optimal (consensus) secondary structures may be predicted. Thus, we tried to implement an interface that allows for an effortless conversion of the corresponding hits into any target data structure. As a consequence, we provide two distinct ways to retrieve the corresponding predictions, either

  • through directly writing to an open FILE stream on-the-fly, or

  • through a callback function mechanism.

The latter allows one to store the results in any possible target data structure. Our implementations then pass the results through the user-implemented callback as soon as the prediction for a particular window is finished.

Basic local (sliding window) MFE prediction interface

float vrna_mfe_window(vrna_fold_compound_t *fc, FILE *file)
#include <ViennaRNA/mfe_window.h>

Local MFE prediction using a sliding window approach.

Computes minimum free energy structures using a sliding window approach, where base pairs may not span outside the window. In contrast to vrna_mfe(), where a maximum base pair span may be set using the vrna_md_t.max_bp_span attribute and one globally optimal structure is predicted, this function uses a sliding window to retrieve all locally optimal structures within each window. The size of the sliding window is set in the vrna_md_t.window_size attribute, prior to the retrieval of the vrna_fold_compound_t using vrna_fold_compound() with option VRNA_OPTION_WINDOW

The predicted structures are written on-the-fly, either to stdout, if a NULL pointer is passed as file parameter, or to the corresponding filehandle.

SWIG Wrapper Notes:

This function is attached as overloaded method mfe_window() to objects of type fold_compound. The parameter FILE has default value of NULL and can be omitted. See e.g. RNA.fold_compound.mfe_window() in the Python API.

Parameters:
  • fc – The vrna_fold_compound_t with preallocated memory for the DP matrices

  • file – The output file handle where predictions are written to (maybe NULL)

float vrna_mfe_window_cb(vrna_fold_compound_t *fc, vrna_mfe_window_f cb, void *data)
#include <ViennaRNA/mfe_window.h>

SWIG Wrapper Notes:

This function is attached as overloaded method mfe_window_cb() to objects of type fold_compound. The parameter data has default value of NULL and can be omitted. See e.g. RNA.fold_compound.mfe_window_cb() in the Python API.

float vrna_mfe_window_zscore(vrna_fold_compound_t *fc, double min_z, FILE *file)
#include <ViennaRNA/mfe_window.h>

Local MFE prediction using a sliding window approach (with z-score cut-off)

Computes minimum free energy structures using a sliding window approach, where base pairs may not span outside the window. This function is the z-score version of vrna_mfe_window(), i.e. only predictions above a certain z-score cut-off value are printed. As for vrna_mfe_window(), the size of the sliding window is set in the vrna_md_t.window_size attribute, prior to the retrieval of the vrna_fold_compound_t using vrna_fold_compound() with option VRNA_OPTION_WINDOW.

The predicted structures are written on-the-fly, either to stdout, if a NULL pointer is passed as file parameter, or to the corresponding filehandle.

SWIG Wrapper Notes:

This function is attached as overloaded method mfe_window_zscore() to objects of type fold_compound. The parameter FILE has default value of NULL and can be omitted. See e.g. RNA.fold_compound.mfe_window_zscore() in the Python API.

Parameters:
  • fc – The vrna_fold_compound_t with preallocated memory for the DP matrices

  • min_z – The minimal z-score for a predicted structure to appear in the output

  • file – The output file handle where predictions are written to (maybe NULL)

float vrna_mfe_window_zscore_cb(vrna_fold_compound_t *fc, double min_z, vrna_mfe_window_zscore_f cb, void *data)
#include <ViennaRNA/mfe_window.h>

SWIG Wrapper Notes:

This function is attached as overloaded method mfe_window_zscore_cb() to objects of type fold_compound. The parameter data has default value of NULL and can be omitted. See e.g. RNA.fold_compound.mfe_window_zscore() in the Python API.

Simplified local MFE prediction using sequence(s) or multiple sequence alignment(s)

float vrna_Lfold(const char *string, int window_size, FILE *file)
#include <ViennaRNA/mfe_window.h>

Local MFE prediction using a sliding window approach (simplified interface)

This simplified interface to vrna_mfe_window() computes the MFE and locally optimal secondary structure using default options. Structures are predicted using a sliding window approach, where base pairs may not span outside the window. Memory required for dynamic programming (DP) matrices will be allocated and free’d on-the-fly. Hence, after return of this function, the recursively filled matrices are not available any more for any post-processing.

SWIG Wrapper Notes:

This function is available as overloaded function Lfold() in the global namespace. The parameter file defaults to NULL and may be omitted. See e.g. RNA.Lfold() in the Python API.

Note

In case you want to use the filled DP matrices for any subsequent post-processing step, or you require other conditions than specified by the default model details, use vrna_mfe_window(), and the data structure vrna_fold_compound_t instead.

Parameters:
  • string – The nucleic acid sequence

  • window_size – The window size for locally optimal structures

  • file – The output file handle where predictions are written to (if NULL, output is written to stdout)

float vrna_Lfold_cb(const char *string, int window_size, vrna_mfe_window_f cb, void *data)
#include <ViennaRNA/mfe_window.h>

SWIG Wrapper Notes:

This function is available as overloaded function Lfold_cb() in the global namespace. The parameter data defaults to NULL and may be omitted. See e.g. RNA.Lfold_cb() in the Python API.

float vrna_Lfoldz(const char *string, int window_size, double min_z, FILE *file)
#include <ViennaRNA/mfe_window.h>

Local MFE prediction using a sliding window approach with z-score cut-off (simplified interface)

This simplified interface to vrna_mfe_window_zscore() computes the MFE and locally optimal secondary structure using default options. Structures are predicted using a sliding window approach, where base pairs may not span outside the window. Memory required for dynamic programming (DP) matrices will be allocated and free’d on-the-fly. Hence, after return of this function, the recursively filled matrices are not available any more for any post-processing. This function is the z-score version of vrna_Lfold(), i.e. only predictions above a certain z-score cut-off value are printed.

Note

In case you want to use the filled DP matrices for any subsequent post-processing step, or you require other conditions than specified by the default model details, use vrna_mfe_window(), and the data structure vrna_fold_compound_t instead.

Parameters:
  • string – The nucleic acid sequence

  • window_size – The window size for locally optimal structures

  • min_z – The minimal z-score for a predicted structure to appear in the output

  • file – The output file handle where predictions are written to (if NULL, output is written to stdout)

float vrna_Lfoldz_cb(const char *string, int window_size, double min_z, vrna_mfe_window_zscore_f cb, void *data)
#include <ViennaRNA/mfe_window.h>

SWIG Wrapper Notes:

This function is available as overloaded function Lfoldz_cb() in the global namespace. The parameter data defaults to NULL and may be omitted. See e.g. RNA.Lfoldz_cb() in the Python API.

float vrna_aliLfold(const char **alignment, int maxdist, FILE *fp)
#include <ViennaRNA/mfe_window.h>

SWIG Wrapper Notes:

This function is available as overloaded function aliLfold() in the global namespace. The parameter fp defaults to NULL and may be omitted. See e.g. RNA.aliLfold() in the Python API.

float vrna_aliLfold_cb(const char **alignment, int maxdist, vrna_mfe_window_f cb, void *data)
#include <ViennaRNA/mfe_window.h>

SWIG Wrapper Notes:

This function is available as overloaded function aliLfold_cb() in the global namespace. The parameter data defaults to NULL and may be omitted. See e.g. RNA.aliLfold_cb() in the Python API.

Typedefs

typedef void (*vrna_mfe_window_f)(int start, int end, const char *structure, float en, void *data)
#include <ViennaRNA/mfe_window.h>

The default callback for sliding window MFE structure predictions.

Notes on Callback Functions:

This function will be called for each hit in a sliding window MFE prediction.

Param start:

provides the first position of the hit (1-based, relative to entire sequence/alignment)

Param end:

provides the last position of the hit (1-based, relative to the entire sequence/alignment)

Param structure:

provides the (sub)structure in dot-bracket notation

Param en:

is the free energy of the structure hit in kcal/mol

Param data:

is some arbitrary data pointer passed through by the function executing the callback

void() vrna_mfe_window_callback (int start, int end, const char *structure, float en, void *data)
#include <ViennaRNA/mfe_window.h>
typedef void (*vrna_mfe_window_zscore_f)(int start, int end, const char *structure, float en, float zscore, void *data)
#include <ViennaRNA/mfe_window.h>
void() vrna_mfe_window_zscore_callback (int start, int end, const char *structure, float en, float zscore, void *data)
#include <ViennaRNA/mfe_window.h>