#ifndef VIENNA_RNA_PACKAGE_INVERSE_H #define VIENNA_RNA_PACKAGE_INVERSE_H /** * @file inverse.h * @ingroup inverse_fold * @brief Inverse folding routines */ /** * @addtogroup inverse_fold * @brief RNA sequence design * * @{ * @ingroup inverse_fold */ /** * \brief This global variable points to the allowed bases, initially "AUGC". * It can be used to design sequences from reduced alphabets. */ extern char *symbolset; /** when to stop inverse_pf_fold() */ extern float final_cost; /** default 0: try to minimize structure distance even if no exact solution can be found */ extern int give_up; /** print out substructure on which inverse_fold() fails */ extern int inv_verbose; /** * \brief Find sequences with predefined structure * * This function searches for a sequence with minimum free energy structure * provided in the parameter 'target', starting with sequence 'start'. * It returns 0 if the search was successful, otherwise a structure distance * in terms of the energy difference between the search result and the actual * target 'target' is returned. The found sequence is returned in 'start'. * If #give_up is set to 1, the function will return as soon as it is * clear that the search will be unsuccessful, this speeds up the algorithm * if you are only interested in exact solutions. * * \param start The start sequence * \param target The target secondary structure in dot-bracket notation * \return The distance to the target in case a search was unsuccessful, 0 otherwise */ float inverse_fold( char *start, const char *target); /** * \brief Find sequence that maximizes probability of a predefined structure * * This function searches for a sequence with maximum probability to fold into * the provided structure 'target' using the partition function algorithm. * It returns \f$-kT \cdot \log(p)\f$ where \f$p\f$ is the frequency of 'target' in * the ensemble of possible structures. This is usually much slower than * inverse_fold(). * * \param start The start sequence * \param target The target secondary structure in dot-bracket notation * \return The distance to the target in case a search was unsuccessful, 0 otherwise */ float inverse_pf_fold(char *start, const char *target); /** * @} */ #endif