WSTester updated to work plus hopefully all the other changes that need to go into...
[jabaws.git] / binaries / src / ViennaRNA / H / LPfold.h
diff --git a/binaries/src/ViennaRNA/H/LPfold.h b/binaries/src/ViennaRNA/H/LPfold.h
new file mode 100644 (file)
index 0000000..40b9563
--- /dev/null
@@ -0,0 +1,164 @@
+#ifndef __VIENNA_RNA_PACKAGE_LPFOLD_H__
+#define __VIENNA_RNA_PACKAGE_LPFOLD_H__
+
+#include "data_structures.h"
+
+#ifdef __GNUC__
+#define DEPRECATED(func) func __attribute__ ((deprecated))
+#else
+#define DEPRECATED(func) func
+#endif
+
+/**
+ *  \addtogroup local_pf_fold
+ *  @{
+ *    \file LPfold.h
+ *    \brief Function declarations of partition function variants of the Lfold algorithm
+ *
+ *  @}
+ */
+
+
+/**
+ *  \brief
+ *
+ *  \ingroup local_pf_fold
+ * 
+ *  \param  length
+ */
+void update_pf_paramsLP(int length);
+
+/**
+ *  \brief
+ *
+ *  \ingroup local_pf_fold
+ * 
+ */
+void update_pf_paramsLP_par(int length, pf_paramT *parameters);
+
+/**
+ *  \brief Compute partition functions for locally stable secondary structures
+ * 
+ *  pfl_fold computes partition functions for every window of size
+ *  'winSize' possible in a RNA molecule, allowing only pairs with a span
+ *  smaller than 'pairSize'. It returns the mean pair probabilities averaged
+ *  over all windows containing the pair in 'pl'. 'winSize' should
+ *  always be >= 'pairSize'. Note that in contrast to Lfold(),
+ *  bases outside of the window do not influence the structure at all. Only
+ *  probabilities higher than 'cutoffb' are kept.
+ * 
+ *  If 'pU' is supplied (i.e is not the NULL pointer), pfl_fold()
+ *  will also compute the mean probability that regions of length 'u' and smaller are 
+ *  unpaired. The parameter 'u' is supplied in 'pup[0][0]'. On return
+ *  the 'pup' array will contain these probabilities, with the entry on
+ *  'pup[x][y]' containing the mean probability that x and the y-1
+ *  preceding bases are unpaired. The 'pU' array needs to be large
+ *  enough to hold n+1 float* entries, where n is the sequence length.
+ * 
+ *  If an array dpp2 is supplied, the probability of base pair (i,j)
+ *  given that there already exists a base pair (i+1,j-1) is also
+ *  computed and saved in this array. If pUfp is given (i.e. not NULL), pU
+ *  is not saved but put out imediately. If spup is given (i.e. is not NULL),
+ *  the pair probabilities in pl are not saved but put out imediately.
+ *
+ *  \ingroup local_pf_fold
+ * 
+ *  \param  sequence  RNA sequence
+ *  \param  winSize   size of the window
+ *  \param  pairSize  maximum size of base pair
+ *  \param  cutoffb   cutoffb for base pairs
+ *  \param  pU        array holding all unpaired probabilities   
+ *  \param  dpp2  array of dependent pair probabilities    
+ *  \param  pUfp     file pointer for pU 
+ *  \param  spup     file pointer for pair probabilities   
+ *  \return list of pair probabilities       
+ */
+plist *pfl_fold(char *sequence,
+                int winSize,
+                int pairSize,
+                float cutoffb,
+                double **pU,
+                struct plist **dpp2,
+                FILE *pUfp,
+                FILE *spup);
+
+/**
+ *  \brief Compute partition functions for locally stable secondary structures
+ * 
+ *  \ingroup local_pf_fold
+ * 
+ */
+plist *pfl_fold_par(char *sequence,
+                    int winSize,
+                    int pairSize,
+                    float cutoffb,
+                    double **pU,
+                    struct plist **dpp2,
+                    FILE *pUfp,
+                    FILE *spup,
+                    pf_paramT *parameters);
+
+
+void putoutpU_prob_par( double **pU,
+                        int length,
+                        int ulength,
+                        FILE *fp,
+                        int energies,
+                        pf_paramT *parameters);
+
+
+/**
+ *  \brief Writes the unpaired probabilities (pU) or opening energies into a file
+ * 
+ *  Can write either the unpaired probabilities (accessibilities) pU or
+ *  the opening energies -log(pU)kT into a file
+ * 
+ *  \ingroup local_pf_fold
+ * 
+ *  \param  pU       pair probabilities
+ *  \param  length   length of RNA sequence 
+ *  \param  ulength  maximum length of unpaired stretch 
+ *  \param  fp file pointer of destination file       
+ *  \param  energies  switch to put out as  opening energies 
+ */
+void    putoutpU_prob(double **pU,
+                      int length,
+                      int ulength,
+                      FILE *fp,
+                      int energies);
+
+void putoutpU_prob_bin_par( double **pU,
+                            int length,
+                            int ulength,
+                            FILE *fp,
+                            int energies,
+                            pf_paramT *parameters);
+
+/**
+ *  \brief Writes the unpaired probabilities (pU) or opening energies into a binary file 
+ * 
+ *  Can write either the unpaired probabilities (accessibilities) pU or
+ *  the opening energies -log(pU)kT into a file
+ * 
+ *  \ingroup local_pf_fold
+ * 
+ *  \param  pU       pair probabilities
+ *  \param  length   length of RNA sequence 
+ *  \param  ulength  maximum length of unpaired stretch 
+ *  \param  fp file pointer of destination file       
+ *  \param  energies  switch to put out as  opening energies 
+ */
+void    putoutpU_prob_bin(double **pU,
+                          int length,
+                          int ulength,
+                          FILE *fp,
+                          int energies);
+
+/**
+ *  Dunno if this function was ever used by external programs linking to RNAlib, but it
+ *  was declared PUBLIC before.
+ *  Anyway, never use this function as it will be removed soon and does nothing at all
+ */
+DEPRECATED(void init_pf_foldLP(int length));
+
+#endif