(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:
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.
-
VRNA_PATH_TYPE_MOVES
- #include <ViennaRNA/landscape/paths.h>
Flag to indicate producing a (re-)folding path as list of transition moves.
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.
- 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.
- 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
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.
-
VRNA_PATH_TYPE_DOT_BRACKET