multibranch_loops.h
Go to the documentation of this file.
#ifndef VIENNA_RNA_PACKAGE_MULTIBRANCH_LOOPS_H
#define VIENNA_RNA_PACKAGE_MULTIBRANCH_LOOPS_H
#include <ViennaRNA/utils.h>
#include <ViennaRNA/data_structures.h>
#include <ViennaRNA/params.h>
#ifdef __GNUC__
# define INLINE inline
#else
# define INLINE
#endif
PRIVATE INLINE int E_MLstem( int type,
int si1,
int sj1,
vrna_param_t *P);
PRIVATE INLINE FLT_OR_DBL exp_E_MLstem(int type,
int si1,
int sj1,
vrna_exp_param_t *P);
int E_mb_loop_stack(int i, int j, vrna_fold_compound_t *vc);
int
vrna_BT_mb_loop(vrna_fold_compound_t *vc,
int *i,
int *j,
int *k,
int en,
int *component1,
int *component2);
/*
#################################
# BEGIN OF FUNCTION DEFINITIONS #
#################################
*/
int
E_mb_loop_fast( int i,
int j,
vrna_fold_compound_t *vc,
int *dmli1,
int *dmli2);
int
E_mb_loop_stack(int i,
int j,
vrna_fold_compound_t *vc);
int
E_ml_rightmost_stem(int i,
int j,
vrna_fold_compound_t *vc);
int
E_ml_stems_fast(int i,
int j,
vrna_fold_compound_t *vc,
int *fmi,
int *dmli);
PRIVATE INLINE int E_MLstem(int type, int si1, int sj1, vrna_param_t *P){
int energy = 0;
if(si1 >= 0 && sj1 >= 0){
energy += P->mismatchM[type][si1][sj1];
}
else if (si1 >= 0){
energy += P->dangle5[type][si1];
}
else if (sj1 >= 0){
energy += P->dangle3[type][sj1];
}
if(type > 2)
energy += P->TerminalAU;
energy += P->MLintern[type];
return energy;
}
PRIVATE INLINE FLT_OR_DBL
exp_E_MLstem( int type,
int si1,
int sj1,
vrna_exp_param_t *P){
double energy = 1.0;
if(si1 >= 0 && sj1 >= 0){
energy = P->expmismatchM[type][si1][sj1];
}
else if(si1 >= 0){
energy = P->expdangle5[type][si1];
}
else if(sj1 >= 0){
energy = P->expdangle3[type][sj1];
}
if(type > 2)
energy *= P->expTermAU;
energy *= P->expMLintern[type];
return (FLT_OR_DBL)energy;
}
FLT_OR_DBL
vrna_exp_E_mb_loop_fast( vrna_fold_compound_t *vc,
int i,
int j,
FLT_OR_DBL *qqm1);
/*
#################################
# Backtracking functions below #
#################################
*/
int
vrna_BT_mb_loop_fake( vrna_fold_compound_t *vc,
int *u,
int *i,
int *j,
vrna_bp_stack_t *bp_stack,
int *stack_count);
int
vrna_BT_mb_loop_split(vrna_fold_compound_t *vc,
int *i,
int *j,
int *k,
int *l,
int *component1,
int *component2,
vrna_bp_stack_t *bp_stack,
int *stack_count);
int
vrna_BT_mb_loop(vrna_fold_compound_t *vc,
int *i,
int *j,
int *k,
int en,
int *component1,
int *component2);
#endif
FLT_OR_DBL
double FLT_OR_DBL
Typename for floating point number in partition function computations.
Definition: data_structures.h:39
vrna_fc_s
The most basic data structure required by many functions throughout the RNAlib.
Definition: data_structures.h:390
vrna_param_s
The datastructure that contains temperature scaled energy parameters.
Definition: params.h:50
utils.h
General utility- and helper-functions used throughout the ViennaRNA Package.
data_structures.h
E_mb_loop_stack
int E_mb_loop_stack(int i, int j, vrna_fold_compound_t *vc)
Evaluate energy of a multi branch helices stacking onto closing pair (i,j)
params.h
vrna_exp_param_s
The datastructure that contains temperature scaled Boltzmann weights of the energy parameters...
Definition: params.h:94
vrna_bp_stack_s
Base pair stack element.
Definition: data_structures.h:192
vrna_BT_mb_loop
int vrna_BT_mb_loop(vrna_fold_compound_t *vc, int *i, int *j, int *k, int en, int *component1, int *component2)
Backtrack the decomposition of a multi branch loop closed by .