WSTester updated to work plus hopefully all the other changes that need to go into...
[jabaws.git] / binaries / src / ViennaRNA / H / part_func_up.h
diff --git a/binaries/src/ViennaRNA/H/part_func_up.h b/binaries/src/ViennaRNA/H/part_func_up.h
new file mode 100644 (file)
index 0000000..b68b7d4
--- /dev/null
@@ -0,0 +1,141 @@
+#ifndef __VIENNA_RNA_PACKAGE_PART_FUNC_UP_H__
+#define __VIENNA_RNA_PACKAGE_PART_FUNC_UP_H__
+
+#include "data_structures.h"
+
+#define   RNA_UP_MODE_1   1U
+#define   RNA_UP_MODE_2   2U
+#define   RNA_UP_MODE_3   4U
+
+/**
+ *  \addtogroup up_cofold
+ *  \brief  Partition Function Cofolding as a stepwise process
+ *
+ *  @{
+ *  \file part_func_up.h
+ *  \brief Partition Function Cofolding as 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.
+ */
+
+/**
+ *  \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<i in longer sequence
+ *  's1' and region [j,l] j<l in 's2'. Gikjl_wo is Gikjl without the
+ *  probability of beeing unpaired.\n
+ *  Use free_interact() to free the returned structure, all
+ *  other stuff is freed inside pf_interact().
+ * 
+ *  \param  s1
+ *  \param  s2
+ *  \param  p_c
+ *  \param  p_c2
+ *  \param  max_w
+ *  \param  cstruc
+ *  \param  incr3
+ *  \param  incr5
+ *  \return
+ */
+interact *pf_interact(const char *s1,
+                      const char *s2,
+                      pu_contrib *p_c,
+                      pu_contrib *p_c2,
+                      int max_w,
+                      char *cstruc,
+                      int incr3,
+                      int incr5);
+
+/**
+ *  \brief Frees the output of function pf_interact().
+ */
+void free_interact(interact *pin);
+
+/**
+ *  \brief
+ */
+int Up_plot(pu_contrib *p_c,
+            pu_contrib *p_c_sh,
+            interact *pint,
+            char *ofile,
+            int **unpaired_values,
+            char *select_contrib,
+            char *head,
+            unsigned int mode);
+
+/**
+ *  \brief
+ */
+pu_contrib  *get_pu_contrib_struct( unsigned int n,
+                                    unsigned int w);
+
+/**
+ *  \brief Frees the output of function pf_unstru().
+ */
+void        free_pu_contrib_struct(pu_contrib *pu);
+
+/**
+ * @}
+ */
+
+#endif