# dsRBPBind - A model for modeling the interplay of double-stranded binding proteins and nucleic acid secondary structure The following programs execute the model described in the publication entitled "Modelling the effect of RNA secondary structure on double stranded RNA-protein binding". The instructions below describe the functions that set the parameters for the model. This tool was developed at The Ohio State University by Elan Shatoff and Ralf Bundschuh. ## Introduction dsRBPBind is a modification of the ViennaRNA package that incorporates double-stranded RNA binding proteins into RNA secondary structure partition function calculations. ### Prerequisites dsRBPBind is implemented in C (as is the ViennaRNA package) and has the same prerequistes as the ViennaRNA package. ### Installation To install, download the provided source file and configure using the normal ViennaRNA installation instructions: tar -zxvf dsRBPBind.tar.gz cd dsRBPBind ./configure make sudo make install ## Usage ### Overview dsRBPBind utilizes a number of get/set functions to control the parameters of the model, namely protein concentration, principal protein KD, footprint size, cooperativity, and overlap scheme. A list of the get/set methods and their inputs/outputs is shown below: vrna_fold_compound_set_concentration(vrna_fold_compound_t *fc, FLT_OR_DBL conc) : Sets the protein concentration. Takes as inputs a fold_compound data structure and a float indicating the protein concentration in nanoMolar. Returns nothing. Default value is 0. If 0 the tool will return the same results as the unmodified ViennaRNA package. vrna_fold_compound_get_concentration(vrna_fold_compound_t *fc) : Gets the protein concentration. Takes as input a fold_compound data structure and returns the protein concentration in nanoMolar. vrna_fold_compound_set_KD(vrna_fold_compound_t *fc, FLT_OR_DBL kd) : Sets the protein protein KD. Takes as inputs a fold_compound data structure and a float indicating the principal protein KD in nanoMolar. Returns nothing. Default value is 0. If 0 the tool will return the same results as the unmodified ViennaRNA package. vrna_fold_compound_get_KD(vrna_fold_compound_t *fc) : Gets the principal protein KD. Takes as input a fold_compound data structure and returns the principal protein KD. vrna_fold_compound_set_footprint(vrna_fold_compound_t *fc, unsigned int fp) : Sets the protein footprint. Takes as inputs a fold_compound data structure and an integer indicating the protein footprint in nucleotides. Returns nothing. Default value is 0. If 0 the tool will return the same results as the unmodified ViennaRNA package. vrna_fold_compound_get_footprint(vrna_fold_compound_t *fc) : Gets the protein footprint. Takes as input a fold_compound data structure and returns an integer indicating the protein footpring in nucleotides. vrna_fold_compound_set_cooperativity(vrna_fold_compound_t *fc, FLT_OR_DBL cp) : Sets the cooperativity between overlapping proteins. Takes as inputs a fold_compound data structure and a float indicating the Boltzmann factor contribution for each protein overlap. Returns nothing. Default is 1. If overlap is not set cooperativity will make no contribution. vrna_fold_compound_get_cooperativity(vrna_fold_compound_t *fc) : Gets the cooperativity between overlapping nucleotides. Takes as input a fold_compound data structure and returns the Boltzmann factor contribution for each protein overlap. vrna_fold_compound_set_overlap(vrna_fold_compound_t *fc, unsigned int oln, unsigned int *ols) : Sets the overlap rule of the tool. Takes as input a fold_compound data structure, an integer indicating the number of allowed overlaps, and an array of integers with the allowed overlaps between consecutive proteins in nucleotides. Default is no allowed overlaps. vrna_fold_compound_get_number_of_overlaps(vrna_fold_compound_t *fc) : Gets the number of allowed overlaps of the tool. Takes as input a fold_compound data structure and returns an integer indicating the number of allowed overlaps the tool, with 0 indicating that overlaps are not allowed. vrna_fold_compound_get_overlap(vrna_fold_compound_t *fc, unsigned int n) : Gets the nth allowed overlap of the tool. Takes as input a fold_compound data structure and the (zero-based) number of the allowed overlap and returns an integer indicating the nth allowed overlap in nucleotide. n must be less than the number of overlaps determined by `vrna_fold_compound_get_number_of_overlaps`. ### Partition Function To obtain a partition function that includes dsRBP binding, set the appropriate parameters using the methods given above, then call the normal Vienna library function for partition function calculation as: float vrna_pf (vrna_fold_compound_t *fc, char *structure) : Function in the ViennaRNA package that takes a fold_compound data structure and a pointer that contains on return a string containing the letters " . , | { } ( ) " denoting bases that are essentially unpaired, weakly paired, strongly paired without preference, weakly upstream (downstream) paired, or strongly up- (down-)stream paired bases, respectively. Returns the ensemble free energy in kcal/mol. ### dsRBPBind KDs The source file also includes a test/example C script that returns the effective binding affinity of a specified protein for a given RNA sequence. The usage for this script is: ./dsRBPBind_KDs [ [ ...]] A test case corresponding to figure 3 in "dsRBPBind: Modeling the effect of RNA secondarystructure on double stranded RNA-protein binding" by Shatoff and Bundschuh is ./dsRBPBind_KDs GGUCAGCAGUGCCUUAGCAGCACGUAAAUAUUGGCGUUAAGACCUUCGGGUCUUAACGCCAAUAUUUACGUGCUGCUAAGGCACUGCUGACC 12 2000 1.0 6 and should result in an effective KD of 50.7.