# Global MFE Prediction

Variations of the global Minimum Free Energy (MFE) prediction algorithm.

We provide implementations of the global MFE prediction algorithm for

- Single sequences,

- Multiple sequence alignments (MSA), and

- RNA-RNA hybrids

## API Symbols

  Basic global MFE prediction interface

  float vrna_mfe(vrna_fold_compound_t *fc, char *structure)
    #include <ViennaRNA/mfe.h>

    Compute minimum free energy and an appropriate secondary structure of an RNA sequence, or RNA sequence alignment.

    Depending on the type of the provided vrna_fold_compound_t, this function predicts the MFE for a single sequence (or connected component of multiple sequences), or an averaged MFE for a sequence alignment. If backtracking is activated, it also constructs the corresponding secondary structure, or consensus structure. Therefore, the second parameter, structure, has to point to an allocated block of memory with a size of at least \(\mathrm{strlen}(\mathrm{sequence})+1\) to store the backtracked MFE structure. (For consensus structures, this is the length of the alignment + 1. If `NULL` is passed, no backtracking will be performed.

    SWIG Wrapper Notes:

      This function is attached as method `mfe()` to objects of type `fold_compound`. The parameter `structure` is returned along with the MFE und must not be provided. See e.g. `RNA.fold_compound.mfe()` in the Python API.

    See also

    vrna_fold_compound_t, vrna_fold_compound(), vrna_fold(), vrna_circfold(), vrna_fold_compound_comparative(), vrna_alifold(), vrna_circalifold()

    Note

    This function is polymorphic. It accepts vrna_fold_compound_t of type VRNA_FC_TYPE_SINGLE, and VRNA_FC_TYPE_COMPARATIVE.

    Parameters:

      - fc – fold compound

      - structure – A pointer to the character array where the secondary structure in dot-bracket notation will be written to (Maybe NULL)

    Returns:

      the minimum free energy (MFE) in kcal/mol

  float vrna_mfe_dimer(vrna_fold_compound_t *fc, char *structure)
    #include <ViennaRNA/mfe.h>

    Compute the minimum free energy of two interacting RNA molecules.

    The code is analog to the vrna_mfe() function.

    Deprecated:

      This function is obsolete since vrna_mfe() can handle complexes multiple sequences since v2.5.0. Use vrna_mfe() for connected component MFE instead and compute MFEs of unconnected states separately.

    SWIG Wrapper Notes:

      This function is attached as method `mfe_dimer()` to objects of type `fold_compound`. The parameter `structure` is returned along with the MFE und must not be provided. See e.g. `RNA.fold_compound.mfe_dimer()` in the Python API.

    See also

    vrna_mfe()

    Parameters:

      - fc – fold compound

      - structure – Will hold the barcket dot structure of the dimer molecule

    Returns:

      minimum free energy of the structure

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

  float vrna_fold(const char *sequence, char *structure)
    #include <ViennaRNA/mfe.h>

    Compute Minimum Free Energy (MFE), and a corresponding secondary structure for an RNA sequence.

    This simplified interface to vrna_mfe() computes the MFE and, if required, a secondary structure for an RNA sequence using default options. 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, e.g. suboptimal backtracking, etc.

    SWIG Wrapper Notes:

      This function is available as function `fold()` in the global namespace. The parameter `structure` is returned along with the MFE und must not be provided. See e.g. `RNA.fold()` in the Python API.

    See also

    vrna_circfold(), vrna_mfe()

    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(), and the data structure vrna_fold_compound_t instead.

    Parameters:

      - sequence – RNA sequence

      - structure – A pointer to the character array where the secondary structure in dot-bracket notation will be written to

    Returns:

      the minimum free energy (MFE) in kcal/mol

  float vrna_circfold(const char *sequence, char *structure)
    #include <ViennaRNA/mfe.h>

    Compute Minimum Free Energy (MFE), and a corresponding secondary structure for a circular RNA sequence.

    This simplified interface to vrna_mfe() computes the MFE and, if required, a secondary structure for a circular RNA sequence using default options. 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, e.g. suboptimal backtracking, etc.

    Folding of circular RNA sequences is handled as a post-processing step of the forward recursions. See Hofacker and Stadler [2006] for further details.

    SWIG Wrapper Notes:

      This function is available as function `circfold()` in the global namespace. The parameter `structure` is returned along with the MFE und must not be provided. See e.g. `RNA.circfold()` in the Python API.

    See also

    vrna_fold(), vrna_mfe()

    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(), and the data structure vrna_fold_compound_t instead.

    Parameters:

      - sequence – RNA sequence

      - structure – A pointer to the character array where the secondary structure in dot-bracket notation will be written to

    Returns:

      the minimum free energy (MFE) in kcal/mol

  float vrna_alifold(const char **sequences, char *structure)
    #include <ViennaRNA/mfe.h>

    Compute Minimum Free Energy (MFE), and a corresponding consensus secondary structure for an RNA sequence alignment using a comparative method.

    This simplified interface to vrna_mfe() computes the MFE and, if required, a consensus secondary structure for an RNA sequence alignment using default options. 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, e.g. suboptimal backtracking, etc.

    SWIG Wrapper Notes:

      This function is available as function `alifold()` in the global namespace. The parameter `structure` is returned along with the MFE und must not be provided. See e.g. `RNA.alifold()` in the Python API.

    See also

    vrna_circalifold(), vrna_mfe()

    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(), and the data structure vrna_fold_compound_t instead.

    Parameters:

      - sequences – RNA sequence alignment

      - structure – A pointer to the character array where the secondary structure in dot-bracket notation will be written to

    Returns:

      the minimum free energy (MFE) in kcal/mol

  float vrna_circalifold(const char **sequences, char *structure)
    #include <ViennaRNA/mfe.h>

    Compute Minimum Free Energy (MFE), and a corresponding consensus secondary structure for a sequence alignment of circular RNAs using a comparative method.

    This simplified interface to vrna_mfe() computes the MFE and, if required, a consensus secondary structure for an RNA sequence alignment using default options. 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, e.g. suboptimal backtracking, etc.

    Folding of circular RNA sequences is handled as a post-processing step of the forward recursions. See Hofacker and Stadler [2006] for further details.

    SWIG Wrapper Notes:

      This function is available as function `circalifold()` in the global namespace. The parameter `structure` is returned along with the MFE und must not be provided. See e.g. `RNA.circalifold()` in the Python API.

    See also

    vrna_alifold(), vrna_mfe()

    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(), and the data structure vrna_fold_compound_t instead.

    Parameters:

      - sequences – Sequence alignment of circular RNAs

      - structure – A pointer to the character array where the secondary structure in dot-bracket notation will be written to

    Returns:

      the minimum free energy (MFE) in kcal/mol

  float vrna_cofold(const char *sequence, char *structure)
    #include <ViennaRNA/mfe.h>

    Compute Minimum Free Energy (MFE), and a corresponding secondary structure for two dimerized RNA sequences.

    This simplified interface to vrna_mfe() computes the MFE and, if required, a secondary structure for two RNA sequences upon dimerization using default options. 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, e.g. suboptimal backtracking, etc.

    Deprecated:

      This function is obsolete since vrna_mfe()/vrna_fold() can handle complexes multiple sequences since v2.5.0. Use vrna_mfe()/vrna_fold() for connected component MFE instead and compute MFEs of unconnected states separately.

    SWIG Wrapper Notes:

      This function is available as function `cofold()` in the global namespace. The parameter `structure` is returned along with the MFE und must not be provided. See e.g. `RNA.cofold()` in the Python API.

    See also

    vrna_fold(), vrna_mfe(), vrna_fold_compound(), vrna_fold_compound_t, vrna_cut_point_insert()

    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(), and the data structure vrna_fold_compound_t instead.

    Parameters:

      - sequence – two RNA sequences separated by the ‘&’ character

      - structure – A pointer to the character array where the secondary structure in dot-bracket notation will be written to

    Returns:

      the minimum free energy (MFE) in kcal/mol