#ifndef VIENNA_RNA_PACKAGE_CENTROID_H #define VIENNA_RNA_PACKAGE_CENTROID_H #include #ifdef DEPRECATION_WARNINGS # ifdef __GNUC__ # define DEPRECATED(func) func __attribute__ ((deprecated)) # else # define DEPRECATED(func) func # endif #else # define DEPRECATED(func) func #endif /* make this interface backward compatible with RNAlib < 2.2.0 */ #define VRNA_BACKWARD_COMPAT /** * @file centroid.h * @ingroup subopt_and_representatives * @brief Centroid structure computation */ /** * @brief Get the centroid structure of the ensemble * * The centroid is the structure with the minimal average distance to all other structures * \n @f$ = \sum_{(i,j) \in S} (1-p_{ij}) + \sum_{(i,j) \notin S} p_{ij} @f$ \n * Thus, the centroid is simply the structure containing all pairs with @f$p_ij>0.5@f$ * The distance of the centroid to the ensemble is written to the memory adressed by @a dist. * * @ingroup centroid_fold * @param[in] vc The fold compound data structure * @param[out] dist A pointer to the distance variable where the centroid distance will be written to * @return The centroid structure of the ensemble in dot-bracket notation */ char *vrna_centroid(vrna_fold_compound_t *vc, double *dist); /** * @brief Get the centroid structure of the ensemble * * This function is a threadsafe replacement for @ref centroid() with a #vrna_plist_t input * * The centroid is the structure with the minimal average distance to all other structures * \n @f$ = \sum_{(i,j) \in S} (1-p_{ij}) + \sum_{(i,j) \notin S} p_{ij} @f$ \n * Thus, the centroid is simply the structure containing all pairs with @f$p_ij>0.5@f$ * The distance of the centroid to the ensemble is written to the memory adressed by @a dist. * * @ingroup centroid_fold * @param[in] length The length of the sequence * @param[out] dist A pointer to the distance variable where the centroid distance will be written to * @param[in] pl A pair list containing base pair probability information about the ensemble * @return The centroid structure of the ensemble in dot-bracket notation */ char *vrna_centroid_from_plist(int length, double *dist, vrna_plist_t *pl); /** * @brief Get the centroid structure of the ensemble * * This function is a threadsafe replacement for @ref centroid() with a probability array input * * The centroid is the structure with the minimal average distance to all other structures * \n @f$ = \sum_{(i,j) \in S} (1-p_{ij}) + \sum_{(i,j) \notin S} p_{ij} @f$ \n * Thus, the centroid is simply the structure containing all pairs with @f$p_ij>0.5@f$ * The distance of the centroid to the ensemble is written to the memory adressed by @a dist. * * @ingroup centroid_fold * @param[in] length The length of the sequence * @param[out] dist A pointer to the distance variable where the centroid distance will be written to * @param[in] probs An upper triangular matrix containing base pair probabilities (access via iindx @ref vrna_idx_row_wise() ) * @return The centroid structure of the ensemble in dot-bracket notation */ char *vrna_centroid_from_probs(int length, double *dist, FLT_OR_DBL *probs); #ifdef VRNA_BACKWARD_COMPAT /** * @brief Get the centroid structure of the ensemble * * @deprecated This function was renamed to vrna_centroid_from_plist() */ DEPRECATED(char *get_centroid_struct_pl(int length, double *dist, vrna_plist_t *pl)); /** * @brief Get the centroid structure of the ensemble * * @deprecated This function was renamed to vrna_centroid_from_probs() */ DEPRECATED(char *get_centroid_struct_pr(int length, double *dist, FLT_OR_DBL *pr)); #endif #endif