# Suboptimal Structures within an Energy Band around the MFE

  Typedefs

  typedef void (*vrna_subopt_result_f)(const char *stucture, float energy, void *data)
    #include <ViennaRNA/subopt.h>

    Callback for vrna_subopt_cb()

    Notes on Callback Functions:

      This function will be called for each suboptimal secondary structure that is successfully backtraced.

    See also

    vrna_subopt_cb()

    Param structure:

      The suboptimal secondary structure in dot-bracket notation

    Param energy:

      The free energy of the secondary structure in kcal/mol

    Param data:

      Some arbitrary, auxiliary data address as passed to vrna_subopt_cb()

  Functions

  vrna_subopt_solution_t *vrna_subopt(vrna_fold_compound_t *fc, int delta, int sorted, FILE *fp)
    #include <ViennaRNA/subopt.h>

    Returns list of subopt structures or writes to fp.

    This function produces all suboptimal secondary structures within ‘delta’ * 0.01 kcal/mol of the optimum, see Wuchty et al. [1999] . The results are either directly written to a ‘fp’ (if ‘fp’ is not NULL), or (fp==NULL) returned in a vrna_subopt_solution_t * list terminated by an entry were the ‘structure’ member is NULL.

    SWIG Wrapper Notes:

      This function is attached as method subopt() to objects of type `fold_compound`. See, e.g. `RNA.fold_compound.subopt()` in the Python API.

    See also

    vrna_subopt_cb(), vrna_subopt_zuker()

    Note

    This function requires all multibranch loop DP matrices for unique multibranch loop backtracing. Therefore, the supplied vrna_fold_compound_t `fc` (argument 1) must be initialized with vrna_md_t.uniq_ML = 1, for instance like this:

        vrna_md_t md;
        vrna_md_set_default(&md);
        md.uniq_ML = 1;

        vrna_fold_compound_t *fc=vrna_fold_compound("GGGGGGAAAAAACCCCCC", &md, VRNA_OPTION_DEFAULT);

    Parameters:

      - fc –

      - delta –

      - sorted – Sort results by energy in ascending order

      - fp –

    Returns:

  void vrna_subopt_cb(vrna_fold_compound_t *fc, int delta, vrna_subopt_result_f cb, void *data)
    #include <ViennaRNA/subopt.h>

    Generate suboptimal structures within an energy band arround the MFE.

    This is the most generic implementation of the suboptimal structure generator according to Wuchty et al. [1999] . Identical to vrna_subopt(), it computes all secondary structures within an energy band `delta` arround the MFE. However, this function does not print the resulting structures and their corresponding free energies to a file pointer, or returns them as a list. Instead, it calls a user-provided callback function which it passes the structure in dot-bracket format, the corresponding free energy in kcal/mol, and a user-provided data structure each time a structure was backtracked successfully. This function indicates the final output, i.e. the end of the backtracking procedure by passing NULL instead of an actual dot-bracket string to the callback.

    SWIG Wrapper Notes:

      This function is attached as method subopt_cb() to objects of type `fold_compound`. See, e.g. `RNA.fold_compound.subopt_cb()` in the Python API.

    See also

    vrna_subopt_result_f, vrna_subopt(), vrna_subopt_zuker()

    Note

    This function requires all multibranch loop DP matrices for unique multibranch loop backtracing. Therefore, the supplied vrna_fold_compound_t `fc` (argument 1) must be initialized with vrna_md_t.uniq_ML = 1, for instance like this:

        vrna_md_t md;
        vrna_md_set_default(&md);
        md.uniq_ML = 1;

        vrna_fold_compound_t *fc=vrna_fold_compound("GGGGGGAAAAAACCCCCC", &md, VRNA_OPTION_DEFAULT);

    Parameters:

      - fc – fold compount with the sequence data

      - delta – Energy band arround the MFE in 10cal/mol, i.e. deka-calories

      - cb – Pointer to a callback function that handles the backtracked structure and its free energy in kcal/mol

      - data – Pointer to some data structure that is passed along to the callback

  SOLUTION *subopt(char *seq, char *structure, int delta, FILE *fp)
    #include <ViennaRNA/subopt.h>

    Returns list of subopt structures or writes to fp.

    This function produces all suboptimal secondary structures within ‘delta’ * 0.01 kcal/mol of the optimum. The results are either directly written to a ‘fp’ (if ‘fp’ is not NULL), or (fp==NULL) returned in a SOLUTION * list terminated by an entry were the ‘structure’ pointer is NULL.

    Parameters:

      - seq –

      - structure –

      - delta –

      - fp –

    Returns:

  SOLUTION *subopt_par(char *seq, char *structure, vrna_param_t *parameters, int delta, int is_constrained, int is_circular, FILE *fp)
    #include <ViennaRNA/subopt.h>

    Returns list of subopt structures or writes to fp.

  SOLUTION *subopt_circ(char *seq, char *sequence, int delta, FILE *fp)
    #include <ViennaRNA/subopt.h>

    Returns list of circular subopt structures or writes to fp.

    This function is similar to subopt() but calculates secondary structures assuming the RNA sequence to be circular instead of linear

    Parameters:

      - seq –

      - sequence –

      - delta –

      - fp –

    Returns:

  Variables

  double print_energy

    printing threshold for use with logML

  int subopt_sorted

    Sort output by energy.