1 #ifndef VIENNA_RNA_PACKAGE_LIGAND_H
2 #define VIENNA_RNA_PACKAGE_LIGAND_H
3 
4 /**
5  *  @file     constraints/ligand.h
6  *  @ingroup  ligand_binding
7  *  @brief    Functions for incorporation of ligands binding to hairpin and interior loop motifs using the soft constraints framework
8  */
9 
10 /**
11  *  @addtogroup constraints_ligand
12  *
13  *  @brief  Ligand binding to specific hairpin/interior loop like motifs using the @ref soft_constraints feature
14  *
15  *  Here is an example that adds a theophylline binding motif. Free energy
16  *  contribution is derived from @f$k_d = 0.32 \mu mol / l @f$, taken from
17  *  Jenison et al. 1994
18  *
19  *  @image html   theo_aptamer.svg
20  *  @image latex  theo_aptamer.eps
21  *
22  *  @code{.c}
23 vrna_sc_add_hi_motif(vc,
24                    "GAUACCAG&CCCUUGGCAGC",
25                    "(...((((&)...)))...)",
26                    -9.22, VRNA_OPTION_DEFAULT); @endcode
27  */
28 
29 
30 typedef struct vrna_sc_motif_s vrna_sc_motif_t;
31 
32 #include <ViennaRNA/datastructures/basic.h>
33 #include <ViennaRNA/fold_compound.h>
34 
35 struct vrna_sc_motif_s {
36   int i;
37   int j;
38   int k;
39   int l;
40   int number;
41 };
42 
43 
44 /**
45  *  @brief  Add soft constraints for hairpin or interior loop binding motif
46  *
47  *  @ingroup  constraints_ligand
48  *
49  *  @param  vc        The #vrna_fold_compound_t the motif is applied to
50  *  @param  seq       The sequence motif (may be interspaced by '&' character
51  *  @param  structure The structure motif (may be interspaced by '&' character
52  *  @param  energy    The free energy of the motif (e.g. binding free energy)
53  *  @param  options   Options
54  *  @return           non-zero value if application of the motif using soft constraints was successful
55  *
56  */
57 int
58 vrna_sc_add_hi_motif(vrna_fold_compound_t *vc,
59                      const char           *seq,
60                      const char           *structure,
61                      FLT_OR_DBL           energy,
62                      unsigned int         options);
63 
64 
65 vrna_sc_motif_t *
66 vrna_sc_ligand_detect_motifs(vrna_fold_compound_t *vc,
67                              const char           *structure);
68 
69 
70 vrna_sc_motif_t *
71 vrna_sc_ligand_get_all_motifs(vrna_fold_compound_t *vc);
72 
73 
74 #endif
75