# (Re-)folding Paths, Saddle Points, Energy Barriers, and Local Minima

API for various RNA folding path algorithms.

This part of our API allows for generating RNA secondary structure (re-)folding paths between two secondary structures or simply starting from a single structure.

This is most important if an estimate of the refolding energy barrier between two structures is required, or a structure’s corresponding local minimum needs to be determined, e.g. through a gradient-descent walk.

This part of the interface is further split into the following sections:

- Direct Refolding Paths between two Secondary Structures, and

- Folding Paths that start at a single Secondary Structure

  Defines

  VRNA_PATH_TYPE_DOT_BRACKET
    #include <ViennaRNA/landscape/paths.h>

    Flag to indicate producing a (re-)folding path as list of dot-bracket structures.

    See also

    vrna_path_t, vrna_path_options_findpath(), vrna_path_direct(), vrna_path_direct_ub()

  VRNA_PATH_TYPE_MOVES
    #include <ViennaRNA/landscape/paths.h>

    Flag to indicate producing a (re-)folding path as list of transition moves.

    See also

    vrna_path_t, vrna_path_options_findpath(), vrna_path_direct(), vrna_path_direct_ub()

  Typedefs

  typedef struct vrna_path_s vrna_path_t
    #include <ViennaRNA/landscape/paths.h>

    Typename for the refolding path data structure vrna_path_s.

  typedef struct vrna_path_options_s *vrna_path_options_t
    #include <ViennaRNA/landscape/paths.h>

    Options data structure for (re-)folding path implementations.

  Functions

  void vrna_path_free(vrna_path_t *path)
    #include <ViennaRNA/landscape/paths.h>

    Release (free) memory occupied by a (re-)folding path.

    See also

    vrna_path_direct(), vrna_path_direct_ub(), vrna_path_findpath(), vrna_path_findpath_ub()

    Parameters:

      - path – The refolding path to be free’d

  void vrna_path_options_free(vrna_path_options_t options)
    #include <ViennaRNA/landscape/paths.h>

    Release (free) memory occupied by an options data structure for (re-)folding path implementations.

    See also

    vrna_path_options_findpath(), vrna_path_direct(), vrna_path_direct_ub()

    Parameters:

      - options – The options data structure to be free’d

  struct vrna_path_s
    #include <ViennaRNA/landscape/paths.h>

    An element of a refolding path list.

    Usually, one has to deal with an array of vrna_path_s, e.g. returned from one of the refolding-path algorithms.

    Since in most cases the length of the list is not known in advance, such lists have an end-of-list marker, which is either:

    - a value of NULL for vrna_path_s::s if vrna_path_s::type = VRNA_PATH_TYPE_DOT_BRACKET, or

    - a vrna_path_s::move with zero in both fields vrna_move_t::pos_5 and vrna_move_t::pos_3 if vrna_path_s::type = VRNA_PATH_TYPE_MOVES.

    In the following we show an example for how to cover both cases of iteration:

        vrna_path_t *ptr = path; // path was returned from one of the refolding path functions, e.g. vrna_path_direct()

        if (ptr) {
          if (ptr->type == VRNA_PATH_TYPE_DOT_BRACKET) {
            for (; ptr->s; ptr++)
              printf("%s [%6.2f]\n", ptr->s, ptr->en);
          } else if (ptr->type == VRNA_PATH_TYPE_MOVES) {
            for (; ptr->move.pos_5 != 0; ptr++)
              printf("move %d:%d, dG = %6.2f\n", ptr->move.pos_5, ptr->move.pos_3, ptr->en);
          }
        }

    See also

    vrna_path_free()

    Public Members

    unsigned int type

      The type of the path element.

      A value of VRNA_PATH_TYPE_DOT_BRACKET indicates that vrna_path_s::s consists of the secondary structure in dot-bracket notation, and vrna_path_s::en

      the corresponding free energy.

      On the other hand, if the value is

      VRNA_PATH_TYPE_MOVES, vrna_path_s::s is NULL and vrna_path_s::move is set to the transition move that transforms a previous structure into it’s neighbor along the path. In this case, the attribute vrna_path_s::en states the change in free energy with respect to the structure before application of vrna_path_s::move.
    double en

      Free energy of current structure.

    char *s

      Secondary structure in dot-bracket notation.

    vrna_move_t move

      Move that transforms the previous structure into it’s next neighbor along the path.