#ifndef VIENNA_RNA_PACKAGE_PART_FUNC_UP_H #define VIENNA_RNA_PACKAGE_PART_FUNC_UP_H #include #define RNA_UP_MODE_1 1U #define RNA_UP_MODE_2 2U #define RNA_UP_MODE_3 4U /** * @file part_func_up.h * @ingroup pf_fold cofold pf_cofold * @brief Implementations for accessibility and RNA-RNA interaction as a stepwise process */ /** * @addtogroup up_cofold * @brief RNA-RNA interaction as a stepwise process * * * In this approach to cofolding the interaction between two RNA molecules is * seen as a stepwise process. In a first step, the target molecule has to * adopt a structure in which a binding site is accessible. In a second step, * the ligand molecule will hybridize with a region accessible to an * interaction. Consequently the algorithm is designed as a two step process: * The first step is the calculation of the probability * that a region within the target is unpaired, or equivalently, the * calculation of the free energy needed to expose a region. In the second step * we compute the free energy of an interaction for every possible binding site. * @{ * @ingroup up_cofold */ /** * @brief Calculate the partition function over all unpaired regions * of a maximal length. * * You have to call function pf_fold() providing the same sequence before calling * pf_unstru(). If you want to calculate unpaired regions for a constrained structure, set * variable 'structure' in function 'pf_fold()' to the constrain string. * It returns a #pu_contrib struct containing four arrays of dimension * [i = 1 to length(sequence)][j = 0 to u-1] containing all possible contributions * to the probabilities of unpaired regions of maximum length u. * Each array in #pu_contrib contains one of the contributions to the * total probability of being unpaired: The probability of being unpaired * within an exterior loop is in array #pu_contrib->E, the probability * of being unpaired within a hairpin loop is in array #pu_contrib->H, * the probability of being unpaired within an interior loop is in array * #pu_contrib->I and probability of being unpaired within a multi-loop * is in array #pu_contrib->M. The total probability of being unpaired * is the sum of the four arrays of #pu_contrib. * * This function frees everything allocated automatically. To * free the output structure call free_pu_contrib(). * * @param sequence * @param max_w * @return */ pu_contrib *pf_unstru(char *sequence, int max_w); /** * @brief Calculates the probability of a local interaction between two sequences. * * The function considers the probability that the * region of interaction is unpaired within 's1' and 's2'. The * longer sequence has to be given as 's1'. The shorter sequence has to * be given as 's2'. Function pf_unstru() has to be called * for 's1' and 's2', where the probabilities of being unpaired * have to be given in 'p_c' and 'p_c2', respectively. If you do * not want to include the probabilities of being unpaired for 's2' set * 'p_c2' to NULL. If variable 'cstruc' is not NULL, * constrained folding is done: The available constrains for intermolecular * interaction are: '.' (no constrain), 'x' (the base has no intermolecular * interaction) and '|' (the corresponding base has to be paired * intermolecularily).\n * The parameter 'w' determines the maximal length of the interaction. The * parameters 'incr5' and 'incr3' allows inclusion of * unpaired residues left ('incr5') and right ('incr3') of the region * of interaction in 's1'. If the 'incr' options are used, function * pf_unstru() has to be called with * w=w+incr5+incr3 for the longer sequence 's1'. * * It returns a structure of type #interact which * contains the probability of the best local interaction including residue i * in Pi and the minimum free energy in Gi, where i is the position in sequence * 's1'. The member Gikjl of structure #interact is * the best interaction between region [k,i] k