1 #ifndef VIENNA_RNA_PACKAGE_PROFILEDIST_H
2 #define VIENNA_RNA_PACKAGE_PROFILEDIST_H
3 
4 #ifdef VRNA_WARN_DEPRECATED
5 # if defined(__clang__)
6 #  define DEPRECATED(func, msg) func __attribute__ ((deprecated("", msg)))
7 # elif defined(__GNUC__)
8 #  define DEPRECATED(func, msg) func __attribute__ ((deprecated(msg)))
9 # else
10 #  define DEPRECATED(func, msg) func
11 # endif
12 #else
13 # define DEPRECATED(func, msg) func
14 #endif
15 
16 #include <ViennaRNA/datastructures/basic.h>
17 
18 /** \file profiledist.h  */
19 
20 #ifndef VRNA_DISABLE_BACKWARD_COMPATIBILITY
21 
22 /**
23  *  \brief Align the 2 probability profiles T1, T2\n
24  *
25  *  This is like a Needleman-Wunsch alignment,
26  *  we should really use affine gap-costs ala Gotoh
27  */
28 float profile_edit_distance(const float *T1,
29                             const float *T2);
30 
31 
32 /**
33  *  \brief condense pair probability matrix into a vector containing probabilities
34  *  for unpaired, upstream paired and downstream paired.
35  *
36  *  This resulting probability profile is used as input for profile_edit_distance
37  *
38  *  \param bppm   A pointer to the base pair probability matrix
39  *  \param length The length of the sequence
40  *  \returns      The bp profile
41  */
42 float *Make_bp_profile_bppm(FLT_OR_DBL  *bppm,
43                             int         length);
44 
45 
46 /**
47  *  \brief print string representation of probability profile
48  */
49 void  print_bppm(const float *T);
50 
51 
52 /**
53  *  \brief free space allocated in Make_bp_profile
54  *
55  *  Backward compatibility only. You can just use plain free()
56  */
57 void  free_profile(float *T);
58 
59 
60 /**
61  *  \note This function is NOT threadsafe
62  *
63  *  \see Make_bp_profile_bppm()
64  *
65  *  \deprecated This function is deprecated and will be removed soon! See \ref Make_bp_profile_bppm() for a replacement
66  *
67  */
68 DEPRECATED(float *Make_bp_profile(int length),
69 "Use Make_bp_profile_bppm() instead");
70 
71 #endif
72 
73 #endif
74