Energy Evaluation for Individual Loops
To assess the free energy contribution of a particular loop \(L\) within a secondary structure, two variants are provided
The bare free energy \(E_L\) (usually in units of deka-calories, i.e. multiples of \(10 \text{cal} \cdot \text{mol}^{-1}\), and
The Boltzmann weight \(q = exp(-\beta E_L)\) of the free energy \(E_L\) (with \(\beta = \frac{1}{RT}\), gas constant \(R\) and temperature \(T\))
The latter is usually required for partition function computations.
Table of Contents
General
Functions to evaluate the free energy of particular types of loops.
Functions
-
int vrna_eval_loop_pt(vrna_fold_compound_t *fc, int i, const short *pt)
- #include <ViennaRNA/eval.h>
Calculate energy of a loop.
- SWIG Wrapper Notes:
This function is attached as method
eval_loop_pt()
to objects of typefold_compound
. See, e.g.RNA.fold_compound.eval_loop_pt()
in the Python API .
- Parameters
fc – A vrna_fold_compound_t containing the energy parameters and model details
i – position of covering base pair
pt – the pair table of the secondary structure
- Returns
free energy of the loop in 10cal/mol
-
int vrna_eval_loop_pt_v(vrna_fold_compound_t *fc, int i, const short *pt, int verbosity_level)
- #include <ViennaRNA/eval.h>
Calculate energy of a loop.
- Parameters
fc – A vrna_fold_compound_t containing the energy parameters and model details
i – position of covering base pair
pt – the pair table of the secondary structure
verbosity_level – The level of verbosity of this function
- Returns
free energy of the loop in 10cal/mol
-
int vrna_eval_loop_pt(vrna_fold_compound_t *fc, int i, const short *pt)
Exterior Loops
Functions to evaluate the free energy contributions for exterior (external) loops.
Boltzmann weight (partition function) interface
-
typedef struct vrna_mx_pf_aux_el_s *vrna_mx_pf_aux_el_t
- #include <ViennaRNA/loops/external.h>
Auxiliary helper arrays for fast exterior loop computations.
See also
vrna_exp_E_ext_fast_init(), vrna_exp_E_ext_fast_rotate(), vrna_exp_E_ext_fast_free(), vrna_exp_E_ext_fast()
-
FLT_OR_DBL vrna_exp_E_ext_stem(unsigned int type, int n5d, int n3d, vrna_exp_param_t *p)
- #include <ViennaRNA/loops/external.h>
Evaluate a stem branching off the exterior loop (Boltzmann factor version)
Given a base pair \((i,j)\) encoded by type, compute the energy contribution including dangling-end/terminal-mismatch contributions. Instead of returning the energy contribution per-se, this function returns the corresponding Boltzmann factor. If either of the adjacent nucleotides \((i - 1)\) and \((j+1)\) must not contribute stacking energy, the corresponding encoding must be \(-1\).
See also
- Parameters
type – The base pair encoding
n5d – The encoded nucleotide directly adjacent at the 5’ side of the base pair (may be -1)
n3d – The encoded nucleotide directly adjacent at the 3’ side of the base pair (may be -1)
p – The pre-computed energy parameters (Boltzmann factor version)
- Returns
The Boltzmann weighted energy contribution of the introduced exterior-loop stem
-
vrna_mx_pf_aux_el_t vrna_exp_E_ext_fast_init(vrna_fold_compound_t *fc)
- #include <ViennaRNA/loops/external.h>
-
void vrna_exp_E_ext_fast_rotate(vrna_mx_pf_aux_el_t aux_mx)
- #include <ViennaRNA/loops/external.h>
-
void vrna_exp_E_ext_fast_free(vrna_mx_pf_aux_el_t aux_mx)
- #include <ViennaRNA/loops/external.h>
-
FLT_OR_DBL vrna_exp_E_ext_fast(vrna_fold_compound_t *fc, int i, int j, vrna_mx_pf_aux_el_t aux_mx)
- #include <ViennaRNA/loops/external.h>
-
void vrna_exp_E_ext_fast_update(vrna_fold_compound_t *fc, int j, vrna_mx_pf_aux_el_t aux_mx)
- #include <ViennaRNA/loops/external.h>
Basic free energy interface
-
int vrna_E_ext_stem(unsigned int type, int n5d, int n3d, vrna_param_t *p)
- #include <ViennaRNA/loops/external.h>
Evaluate a stem branching off the exterior loop.
Given a base pair \((i,j)\) encoded by type, compute the energy contribution including dangling-end/terminal-mismatch contributions. Instead of returning the energy contribution per-se, this function returns the corresponding Boltzmann factor. If either of the adjacent nucleotides \((i - 1)\) and \((j+1)\) must not contribute stacking energy, the corresponding encoding must be \(-1\).
See also
vrna_E_exp_stem()
- Parameters
type – The base pair encoding
n5d – The encoded nucleotide directly adjacent at the 5’ side of the base pair (may be -1)
n3d – The encoded nucleotide directly adjacent at the 3’ side of the base pair (may be -1)
p – The pre-computed energy parameters
- Returns
The energy contribution of the introduced exterior-loop stem
-
int vrna_eval_ext_stem(vrna_fold_compound_t *fc, int i, int j)
- #include <ViennaRNA/loops/external.h>
Evaluate the free energy of a base pair in the exterior loop.
Evalue the free energy of a base pair connecting two nucleotides in the exterior loop and take hard constraints into account.
Typically, this is simply dangling end contributions of the adjacent nucleotides, potentially a terminal A-U mismatch penalty, and maybe some generic soft constraint contribution for that decomposition.
Note
For dangles == 1 || 3 this function also evaluates the three additional pairs (i + 1, j), (i, j - 1), and (i + 1, j - 1) and returns the minimum for all four possibilities in total.
- Parameters
fc – Fold compound to work on (defines the model and parameters)
i – 5’ position of the base pair
j – 3’ position of the base pair
- Returns
Free energy contribution that arises when this pair is formed in the exterior loop
-
int vrna_E_ext_loop_5(vrna_fold_compound_t *fc)
- #include <ViennaRNA/loops/external.h>
-
int vrna_E_ext_loop_3(vrna_fold_compound_t *fc, int i)
- #include <ViennaRNA/loops/external.h>
-
typedef struct vrna_mx_pf_aux_el_s *vrna_mx_pf_aux_el_t
Hairpin Loops
Functions to evaluate the free energy contributions for hairpin loops.
Basic free energy interface
-
int vrna_E_hp_loop(vrna_fold_compound_t *fc, int i, int j)
- #include <ViennaRNA/loops/hairpin.h>
Evaluate the free energy of a hairpin loop and consider hard constraints if they apply.
This function evaluates the free energy of a hairpin loop
In case the base pair is not allowed due to a constraint conflict, this function returns INF.
Note
This function is polymorphic! The provided vrna_fold_compound_t may be of type VRNA_FC_TYPE_SINGLE or VRNA_FC_TYPE_COMPARATIVE
- Parameters
fc – The vrna_fold_compound_t that stores all relevant model settings
i – The 5’ nucleotide of the base pair (3’ to evaluate the pair as exterior hairpin loop)
j – The 3’ nucleotide of the base pair (5’ to evaluate the pair as exterior hairpin loop)
- Returns
The free energy of the hairpin loop in 10cal/mol
-
int vrna_E_ext_hp_loop(vrna_fold_compound_t *fc, int i, int j)
- #include <ViennaRNA/loops/hairpin.h>
Evaluate the free energy of an exterior hairpin loop and consider possible hard constraints.
Note
This function is polymorphic! The provided vrna_fold_compound_t may be of type VRNA_FC_TYPE_SINGLE or VRNA_FC_TYPE_COMPARATIVE
-
int vrna_eval_ext_hp_loop(vrna_fold_compound_t *fc, int i, int j)
- #include <ViennaRNA/loops/hairpin.h>
Evaluate free energy of an exterior hairpin loop.
-
int vrna_eval_hp_loop(vrna_fold_compound_t *fc, int i, int j)
- #include <ViennaRNA/loops/hairpin.h>
Evaluate free energy of a hairpin loop.
- SWIG Wrapper Notes:
This function is attached as method
eval_hp_loop()
to objects of typefold_compound
. See, e.g.RNA.fold_compound.eval_hp_loop()
in the Python API .
Note
This function is polymorphic! The provided vrna_fold_compound_t may be of type VRNA_FC_TYPE_SINGLE or VRNA_FC_TYPE_COMPARATIVE
- Parameters
fc – The vrna_fold_compound_t for the particular energy evaluation
i – 5’-position of the base pair
j – 3’-position of the base pair
- Returns
Free energy of the hairpin loop closed by \( (i,j) \) in deka-kal/mol
-
static int E_Hairpin(int size, int type, int si1, int sj1, const char *string, vrna_param_t *P)
- #include <ViennaRNA/loops/hairpin.h>
Compute the Energy of a hairpin-loop.
To evaluate the free energy of a hairpin-loop, several parameters have to be known. A general hairpin-loop has this structure: where X-Y marks the closing pair [e.g. a (G,C) pair]. The length of this loop is 6 as there are six unpaired nucleotides (a1-a6) enclosed by (X,Y). The 5’ mismatching nucleotide is a1 while the 3’ mismatch is a6. The nucleotide sequence of this loop is “a1.a2.a3.a4.a5.a6”
See also
Note
The parameter sequence should contain the sequence of the loop in capital letters of the nucleic acid alphabet if the loop size is below 7. This is useful for unusually stable tri-, tetra- and hexa-loops which are treated differently (based on experimental data) if they are tabulated.
Warning
Not (really) thread safe! A threadsafe implementation will replace this function in a future release!
Energy evaluation may change due to updates in global variable “tetra_loop”
- Parameters
size – The size of the loop (number of unpaired nucleotides)
type – The pair type of the base pair closing the hairpin
si1 – The 5’-mismatching nucleotide
sj1 – The 3’-mismatching nucleotide
string – The sequence of the loop (May be
NULL
, otherwise mst be at least \(size + 2\) long)P – The datastructure containing scaled energy parameters
- Returns
The Free energy of the Hairpin-loop in dcal/mol
Boltzmann weight (partition function) interface
-
static FLT_OR_DBL exp_E_Hairpin(int u, int type, short si1, short sj1, const char *string, vrna_exp_param_t *P)
- #include <ViennaRNA/loops/hairpin.h>
Compute Boltzmann weight \(e^{-\Delta G/kT} \) of a hairpin loop.
See also
get_scaled_pf_parameters(), vrna_exp_param_t, E_Hairpin()
Note
multiply by scale[u+2]
Warning
Not (really) thread safe! A threadsafe implementation will replace this function in a future release!
Energy evaluation may change due to updates in global variable “tetra_loop”
- Parameters
u – The size of the loop (number of unpaired nucleotides)
type – The pair type of the base pair closing the hairpin
si1 – The 5’-mismatching nucleotide
sj1 – The 3’-mismatching nucleotide
string – The sequence of the loop (May be
NULL
, otherwise mst be at least \(size + 2\) long)P – The datastructure containing scaled Boltzmann weights of the energy parameters
- Returns
The Boltzmann weight of the Hairpin-loop
-
FLT_OR_DBL vrna_exp_E_hp_loop(vrna_fold_compound_t *fc, int i, int j)
- #include <ViennaRNA/loops/hairpin.h>
High-Level function for hairpin loop energy evaluation (partition function variant)
See also
vrna_E_hp_loop() for it’s free energy counterpart
Note
This function is polymorphic! The provided vrna_fold_compound_t may be of type VRNA_FC_TYPE_SINGLE or VRNA_FC_TYPE_COMPARATIVE
-
int vrna_E_hp_loop(vrna_fold_compound_t *fc, int i, int j)
Internal Loops
Functions to evaluate the free energy contributions for internal (interior) loops.
Basic free energy interface
-
int vrna_E_int_loop(vrna_fold_compound_t *fc, int i, int j)
- #include <ViennaRNA/loops/internal.h>
-
int vrna_eval_int_loop(vrna_fold_compound_t *fc, int i, int j, int k, int l)
- #include <ViennaRNA/loops/internal.h>
Evaluate the free energy contribution of an interior loop with delimiting base pairs \((i,j)\) and \((k,l)\).
- SWIG Wrapper Notes:
This function is attached as method
eval_int_loop()
to objects of typefold_compound
. See, e.g.RNA.fold_compound.eval_int_loop()
in the Python API .
Note
This function is polymorphic, i.e. it accepts vrna_fold_compound_t of type VRNA_FC_TYPE_SINGLE as well as VRNA_FC_TYPE_COMPARATIVE
-
int vrna_E_ext_int_loop(vrna_fold_compound_t *fc, int i, int j, int *ip, int *iq)
- #include <ViennaRNA/loops/internal.h>
-
int vrna_E_stack(vrna_fold_compound_t *fc, int i, int j)
- #include <ViennaRNA/loops/internal.h>
Boltzmann weight (partition function) interface
-
FLT_OR_DBL vrna_exp_E_int_loop(vrna_fold_compound_t *fc, int i, int j)
- #include <ViennaRNA/loops/internal.h>
-
FLT_OR_DBL vrna_exp_E_interior_loop(vrna_fold_compound_t *fc, int i, int j, int k, int l)
- #include <ViennaRNA/loops/internal.h>
-
int vrna_E_int_loop(vrna_fold_compound_t *fc, int i, int j)
Multibranch Loops
Functions to evaluate the free energy contributions for mutlibranch loops.
Boltzmann weight (partition function) interface
-
typedef struct vrna_mx_pf_aux_ml_s *vrna_mx_pf_aux_ml_t
- #include <ViennaRNA/loops/multibranch.h>
Auxiliary helper arrays for fast exterior loop computations.
See also
vrna_exp_E_ml_fast_init(), vrna_exp_E_ml_fast_rotate(), vrna_exp_E_ml_fast_free(), vrna_exp_E_ml_fast()
-
FLT_OR_DBL vrna_exp_E_mb_loop_fast(vrna_fold_compound_t *fc, int i, int j, vrna_mx_pf_aux_ml_t aux_mx)
- #include <ViennaRNA/loops/multibranch.h>
-
vrna_mx_pf_aux_ml_t vrna_exp_E_ml_fast_init(vrna_fold_compound_t *fc)
- #include <ViennaRNA/loops/multibranch.h>
-
void vrna_exp_E_ml_fast_rotate(vrna_mx_pf_aux_ml_t aux_mx)
- #include <ViennaRNA/loops/multibranch.h>
-
void vrna_exp_E_ml_fast_free(vrna_mx_pf_aux_ml_t aux_mx)
- #include <ViennaRNA/loops/multibranch.h>
-
const FLT_OR_DBL *vrna_exp_E_ml_fast_qqm(vrna_mx_pf_aux_ml_t aux_mx)
- #include <ViennaRNA/loops/multibranch.h>
-
const FLT_OR_DBL *vrna_exp_E_ml_fast_qqm1(vrna_mx_pf_aux_ml_t aux_mx)
- #include <ViennaRNA/loops/multibranch.h>
-
FLT_OR_DBL vrna_exp_E_ml_fast(vrna_fold_compound_t *fc, int i, int j, vrna_mx_pf_aux_ml_t aux_mx)
- #include <ViennaRNA/loops/multibranch.h>
Basic free energy interface
-
int vrna_E_mb_loop_stack(vrna_fold_compound_t *fc, int i, int j)
- #include <ViennaRNA/loops/multibranch.h>
Evaluate energy of a multi branch helices stacking onto closing pair (i,j)
Computes total free energy for coaxial stacking of (i.j) with (i+1.k) or (k+1.j-1)
-
int vrna_E_mb_loop_fast(vrna_fold_compound_t *fc, int i, int j, int *dmli1, int *dmli2)
- #include <ViennaRNA/loops/multibranch.h>
-
int E_ml_rightmost_stem(int i, int j, vrna_fold_compound_t *fc)
- #include <ViennaRNA/loops/multibranch.h>
-
int vrna_E_ml_stems_fast(vrna_fold_compound_t *fc, int i, int j, int *fmi, int *dmli)
- #include <ViennaRNA/loops/multibranch.h>
-
typedef struct vrna_mx_pf_aux_ml_s *vrna_mx_pf_aux_ml_t