#ifndef __VIENNA_RNA_PACKAGE_FOLD_VARS_H__ #define __VIENNA_RNA_PACKAGE_FOLD_VARS_H__ #include "data_structures.h" /** * \file fold_vars.h * \brief Here all all declarations of the global variables used throughout RNAlib */ #define PUBLIC #define PRIVATE static /** * \brief Global switch to activate/deactivate folding with structure constraints */ extern int fold_constrained; /** * \brief Global switch to avoid/allow helices of length 1 * * Disallow all pairs which can only occur as lonely pairs (i.e. as helix * of length 1). This avoids lonely base pairs in the predicted structures in * most cases. */ extern int noLonelyPairs; /** * \brief Switch the energy model for dangling end contributions (0, 1, 2, 3) * * If set to 0 no stabilizing energies are assigned to bases adjacent to * helices in free ends and multiloops (so called dangling ends). Normally * (dangles = 1) dangling end energies are assigned only to unpaired * bases and a base cannot participate simultaneously in two dangling ends. In * the partition function algorithm pf_fold() these checks are neglected. * If #dangles is set to 2, all folding routines will follow this convention. * This treatment of dangling ends gives more favorable energies to helices * directly adjacent to one another, which can be beneficial since such * helices often do engage in stabilizing interactions through co-axial * stacking.\n * If dangles = 3 co-axial stacking is explicitly included for * adjacent helices in mutli-loops. The option affects only mfe folding * and energy evaluation (fold() and energy_of_structure()), as * well as suboptimal folding (subopt()) via re-evaluation of energies. * Co-axial stacking with one intervening mismatch is not considered so far. * * Default is 2 in most algorithms, partition function algorithms can only handle 0 and 2 */ extern int dangles; /** * \brief Global switch to forbid/allow GU base pairs at all */ extern int noGU; /** * \brief GU allowed only inside stacks if set to 1 */ extern int no_closingGU; /** * \brief Include special stabilizing energies for some tri-, tetra- and hexa-loops; * * default is 1. */ extern int tetra_loop; /** * \brief 0 = BP; 1=any mit GC; 2=any mit AU-parameter * * If set to 1 or 2: fold sequences from an artificial alphabet ABCD..., where A * pairs B, C pairs D, etc. using either GC (1) or AU parameters (2); * default is 0, you probably don't want to change it. */ extern int energy_set; /** * \brief backward compatibility variable.. this does not effect anything */ extern int circ; /** * \brief generate comma seperated output */ extern int csv; /** * use old alifold energies (with gaps) */ extern int oldAliEn; /** * use ribosum matrices */ extern int ribo; /** * warning this variable will vanish in the future * ribosums will be compiled in instead */ extern char *RibosumFile; /** * \brief contains allowed non standard base pairs * * Lists additional base pairs that will be allowed to form in addition to * GC, CG, AU, UA, GU and UG. Nonstandard base pairs are given a stacking * energy of 0. */ extern char *nonstandards; /** * \brief Rescale energy parameters to a temperature in degC. * * Default is 37C. You have to call the update_..._params() functions after * changing this parameter. */ extern double temperature; /** * interior loops of size 2 get energy 0.8Kcal and * no mismatches, default 1 */ extern int james_rule; /** * use logarithmic multiloop energy function */ extern int logML; /** * \brief Marks the position (starting from 1) of the first * nucleotide of the second molecule within the concatenated sequence. * * To evaluate the energy of a duplex structure (a structure formed by two * strands), concatenate the to sequences and set it to the * first base of the second strand in the concatenated sequence. * The default value of -1 stands for single molecule folding. The * cut_point variable is also used by PS_rna_plot() and * PS_dot_plot() to mark the chain break in postscript plots. */ extern int cut_point; /** * \brief Contains a list of base pairs after a call to fold(). * * base_pair[0].i contains the total number of pairs. * \deprecated Do not use this variable anymore! */ extern bondT *base_pair; /** * \brief A pointer to the base pair probability matrix * * \deprecated Do not use this variable anymore! */ extern FLT_OR_DBL *pr; /** * \brief index array to move through pr. * * The probability for base i and j to form a pair is in pr[iindx[i]-j]. * \deprecated Do not use this variable anymore! */ extern int *iindx; /** * \brief A scaling factor used by pf_fold() to avoid overflows. * * Should be set to approximately \f$exp{((-F/kT)/length)}\f$, where \f$F\f$ is an estimate * for the ensemble free energy, for example the minimum free energy. You must * call update_pf_params() after changing this parameter.\n * If pf_scale is -1 (the default) , an estimate will be provided * automatically when computing partition functions, e.g. pf_fold() * The automatic estimate is usually insufficient for sequences more * than a few hundred bases long. */ extern double pf_scale; /** * \brief do backtracking, i.e. compute secondary structures or base pair probabilities * * If 0, do not calculate pair probabilities in pf_fold(); this is about * twice as fast. Default is 1. */ extern int do_backtrack; /** * \brief A backtrack array marker for inverse_fold() * * If set to 'C': force (1,N) to be paired, * 'M' fold as if the sequence were inside a multi-loop. Otherwise ('F') the * usual mfe structure is computed. */ extern char backtrack_type; /** * \brief Allow G-quadruplex formation */ extern int gquad; char * option_string(void); /** * \brief Set default model details * * Use this function if you wish to initialize a #model_detailsT data structure with * its default values, i.e. the global model settings * * \see * * \param md A pointer to the data structure that shall be initialized */ void set_model_details(model_detailsT *md); #endif