352 { 0, 2, 2, 2, 2, 1, 1},
353 { 2, 0, 2, 2, 2,
INF,
INF},
354 { 2, 2, 0, 1, 2,
INF,
INF},
355 { 2, 2, 1, 0, 2,
INF,
INF},
356 { 2, 2, 2, 2, 0,
INF,
INF},
362 { 0, 100, 5, 5, 75, 5, 5},
363 { 100, 0, 8, 8, 8,
INF,
INF},
364 { 5, 8, 0, 3, 8,
INF,
INF},
365 { 5, 8, 3, 0, 8,
INF,
INF},
366 { 75, 8, 8, 8, 0,
INF,
INF},
371 The lower matrix uses the costs given in @cite shapiro:1990.
372 All distance functions use the following global variables:
389 @see utils.h, dist_vars.h and stringdist.h
for more details
391 <h3>Functions
for Tree Edit Distances</h3>
409 @see dist_vars.h and treedist.h
for prototypes and more detailed descriptions
411 <h3>Functions
for String Alignment</h3>
424 @see dist_vars.h and stringdist.h
for prototypes and more detailed descriptions
426 <h3>Functions
for Comparison of Base Pair Probabilities</h3>
428 For comparison of base pair probability matrices, the matrices are first
429 condensed into probability profiles which are the compared by alignment.
443 @see ProfileDist.h
for prototypes and more details of the above functions
445 @ref mp_utils
"Next Page: Utilities"
447 @page mp_utils Utilities - Odds and Ends
451 <h3>Table of Contents</h3>
463 @section utils_ss Producing secondary structure graphs
516 Two low-level functions provide direct access to the graph lauyouting
527 int naview_xy_coordinates (
short *pair_table,
531 @copybrief naview_xy_coordinates()
533 @see PS_dot.h and naview.h
for more detailed descriptions.
537 <a href=
"#toc">Table of Contents</a>
541 @section utils_dot Producing (colored) dot plots for base pair probabilities
544 int PS_color_dot_plot (
char *
string,
548 @copybrief PS_color_dot_plot()
551 int PS_color_dot_plot_turn (
char *seq,
556 @copybrief PS_color_dot_plot_turn()
568 int PS_dot_plot_turn (
char *seq,
573 @copybrief PS_dot_plot_turn()
575 @see PS_dot.h for more detailed descriptions.
577 @section utils_aln Producing (colored) alignments
581 const
char *structure,
582 const
char *filename,
586 @copybrief PS_color_aln()
590 <a href="
#toc">Table of Contents</a>
594 @section utils_seq RNA sequence related utilities
596 Several functions provide useful applications to RNA sequences
600 const char symbols[])
622 <a href=
"#toc">Table of Contents</a>
626 @section utils_struc RNA secondary structure related utilities
650 <a href=
"#toc">Table of Contents</a>
654 @section utils_misc Miscellaneous Utilities
662 void print_tty_constraint_full (
void)
664 @copybrief print_tty_constraint_full()
667 void print_tty_constraint (
unsigned int option)
669 @copybrief print_tty_constraint()
672 int *get_iindx (
unsigned int length)
674 @copybrief get_iindx()
677 int *get_indx (
unsigned int length)
679 @copybrief get_indx()
682 void constrain_ptypes (
683 const char *constraint,
688 unsigned int idx_type)
690 @copybrief constrain_ptypes()
702 unsigned int options);
717 void nrerror (
const char message[])
727 unsigned short xsubi[3];
742 void *
space (
unsigned size)
752 @see utils.h
for a complete overview and detailed description of the utility functions
756 <a href=
"#toc">Table of Contents</a>
760 @ref mp_example
"Next Page: Examples"
762 @page mp_example Example - A Small Example Program
764 The following program exercises most commonly used functions of the library.
765 The program folds two sequences
using both the mfe and partition
function
766 algorithms and calculates the tree edit and profile distance of the
767 resulting structures and base pairing probabilities.
786 char *seq1=
"CGCAGGGAUACCCGCG", *seq2=
"GCGCCCAUAGGGACGC",
787 *struct1,* struct2,* xstruc;
788 float e1, e2, tree_dist, string_dist, profile_dist, kT;
797 struct1 = (
char* )
space(
sizeof(
char)*(strlen(seq1)+1));
798 e1 =
fold(seq1, struct1);
800 struct2 = (
char* )
space(
sizeof(
char)*(strlen(seq2)+1));
801 e2 =
fold(seq2, struct2);
826 printf(
"%s mfe=%5.2f\n%s mfe=%5.2f dist=%3.2f\n",
832 pf_scale = exp(-e1/kT/strlen(seq1));
848 printf(
"%s free energy=%5.2f\n%s free energy=%5.2f dist=%3.2f\n",
855 In a typical Unix environment you would compile
this program
using:
857 cc ${OPENMP_CFLAGS} -c example.c -I${hpath}
861 cc ${OPENMP_CFLAGS} -o example -L${lpath} -lRNA -lm
863 where @e ${hpath} and @e ${lpath} point to the location of the header
864 files and library, respectively.
865 @note As
default, the RNAlib is compiled with build-in @e OpenMP multithreading
866 support. Thus, when linking your own
object files to the library you have to pass
867 the compiler specific @e ${OPENMP_CFLAGS} (e.g.
'-fopenmp' for @b gcc) even
if your code does not
868 use openmp specific code. However, in that
case the @e OpenMP flags may be ommited when compiling
Tree * make_tree(char *struc)
Constructs a Tree ( essentially the postorder list ) of the structure 'struc', for use in tree_edit_d...
Functions for String Alignment.
float string_edit_distance(swString *T1, swString *T2)
Calculate the string edit distance of T1 and T2.
int simple_xy_coordinates(short *pair_table, float *X, float *Y)
Calculate nucleotide coordinates for secondary structure plot the Simple way
char * get_line(FILE *fp)
Read a line of arbitrary length from a stream.
swString * Make_swString(char *string)
Convert a structure into a format suitable for string_edit_distance().
int hamming(const char *s1, const char *s2)
Calculate hamming distance between two sequences.
void init_rand(void)
Make random number seeds.
MFE calculations for single RNA sequences.
void free_tree(Tree *t)
Free the memory allocated for Tree t.
int edit_backtrack
Produce an alignment of the two structures being compared by tracing the editing path giving the mini...
float profile_edit_distance(const float *T1, const float *T2)
Align the 2 probability profiles T1, T2 .
void free_profile(float *T)
free space allocated in Make_bp_profile
char * expand_Full(const char *structure)
Convert the full structure from bracket notation to the expanded notation including root...
double urn(void)
get a random number from [0..1]
void * xrealloc(void *p, unsigned size)
Reallocate space safely.
int int_urn(int from, int to)
Generates a pseudo random integer in a specified range.
void unexpand_aligned_F(char *align[2])
Converts two aligned structures in expanded notation.
float fold(const char *sequence, char *structure)
Compute minimum free energy and an appropriate secondary structure of an RNA sequence.
void * space(unsigned size)
Allocate space safely.
Definition: dist_vars.h:46
int ssv_rna_plot(char *string, char *structure, char *ssfile)
Produce a secondary structure graph in SStructView format.
Functions for Tree Edit Distances.
int cost_matrix
Specify the cost matrix to be used for distance calculations.
General utility- and helper-functions used throughout the ViennaRNA Package.
Parsing and Coarse Graining of Structures.
float tree_edit_distance(Tree *T1, Tree *T2)
Calculates the edit distance of the two trees.
int rna_plot_type
Switch for changing the secondary structure layout algorithm.
short * make_pair_table(const char *structure)
Create a pair table of a secondary structure.
int PS_rna_plot(char *string, char *structure, char *file)
Produce a secondary structure graph in PostScript and write it to 'filename'.
unsigned int read_record(char **header, char **sequence, char ***rest, unsigned int options)
Get a data record from stdin.
float pf_fold(const char *sequence, char *structure)
Compute the partition function of an RNA sequence.
char * random_string(int l, const char symbols[])
Create a random string using characters from a specified symbol set.
FLT_OR_DBL * export_bppm(void)
Get a pointer to the base pair probability arrayAccessing the base pair probabilities for a pair (i...
this datastructure is used as input parameter in functions of PS_dot.h and others ...
Definition: data_structures.h:45
char * time_stamp(void)
Get a timestamp.
void warn_user(const char message[])
Print a warning message.
#define INF
Definition: energy_const.h:16
char * aligned_line[4]
Contains the two aligned structures after a call to one of the distance functions with edit_backtrack...
short * copy_pair_table(const short *pt)
Get an exact copy of a pair table.
void free_pf_arrays(void)
Free arrays for the partition function recursions.
void nrerror(const char message[])
Die with an error message.
Definition: dist_vars.h:41
int svg_rna_plot(char *string, char *structure, char *ssfile)
Produce a secondary structure plot in SVG format and write it to a file.
Partition function of single RNA sequences.
int PS_rna_plot_a(char *string, char *structure, char *file, char *pre, char *post)
Produce a secondary structure graph in PostScript including additional annotation macros and write it...
Inverse folding routines.
float * Make_bp_profile_bppm(FLT_OR_DBL *bppm, int length)
condense pair probability matrix into a vector containing probabilities for unpaired, upstream paired and downstream paired.
int gmlRNA(char *string, char *structure, char *ssfile, char option)
Produce a secondary structure graph in Graph Meta Language (gml) and write it to a file...
this datastructure is used as input parameter in functions of PS_dot.c
Definition: data_structures.h:55
void str_uppercase(char *sequence)
Convert an input sequence to uppercase.
double temperature
Rescale energy parameters to a temperature in degC.
char * unpack_structure(const char *packed)
Unpack secondary structure previously packed with pack_structure()
char * pack_structure(const char *struc)
Pack secondary secondary structure, 5:1 compression using base 3 encoding.
double pf_scale
A scaling factor used by pf_fold() to avoid overflows.
Here all all declarations of the global variables used throughout RNAlib.
int PS_dot_plot_list(char *seq, char *filename, plist *pl, plist *mf, char *comment)
Produce a postscript dot-plot from two pair lists.
void print_tty_input_seq(void)
Print a line to stdout that asks for an input sequence.
void str_DNA2RNA(char *sequence)
Convert a DNA input sequence to RNA alphabet.
unsigned short xsubi[3]
Current 48 bit random number.
void free_arrays(void)
Free arrays for mfe folding.
int xrna_plot(char *string, char *structure, char *ssfile)
Produce a secondary structure plot for further editing in XRNA.