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, orthrough 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 typefold_compound
. The parameterFILE
has default value ofNULL
and can be omitted. See e.g.RNA.fold_compound.mfe_window()
in the Python API.
See also
vrna_fold_compound(), vrna_mfe_window_zscore(), vrna_mfe(), vrna_Lfold(), vrna_Lfoldz(), VRNA_OPTION_WINDOW, vrna_md_t.max_bp_span, vrna_md_t.window_size
- 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 typefold_compound
. The parameterdata
has default value ofNULL
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 typefold_compound
. The parameterFILE
has default value ofNULL
and can be omitted. See e.g.RNA.fold_compound.mfe_window_zscore()
in the Python API.
See also
vrna_fold_compound(), vrna_mfe_window_zscore(), vrna_mfe(), vrna_Lfold(), vrna_Lfoldz(), VRNA_OPTION_WINDOW, vrna_md_t.max_bp_span, vrna_md_t.window_size
- 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 typefold_compound
. The parameterdata
has default value ofNULL
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 parameterfile
defaults toNULL
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 parameterdata
defaults toNULL
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 parameterdata
defaults toNULL
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 parameterfp
defaults toNULL
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 parameterdata
defaults toNULL
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.
See also
- 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>
-
float vrna_mfe_window(vrna_fold_compound_t *fc, FILE *file)