327 { 0, 2, 2, 2, 2, 1, 1},
328 { 2, 0, 2, 2, 2, INF, INF},
329 { 2, 2, 0, 1, 2, INF, INF},
330 { 2, 2, 1, 0, 2, INF, INF},
331 { 2, 2, 2, 2, 0, INF, INF},
332 { 1, INF, INF, INF, INF, 0, INF},
333 { 1, INF, INF, INF, INF, INF, 0},
337 { 0, 100, 5, 5, 75, 5, 5},
338 { 100, 0, 8, 8, 8, INF, INF},
339 { 5, 8, 0, 3, 8, INF, INF},
340 { 5, 8, 3, 0, 8, INF, INF},
341 { 75, 8, 8, 8, 0, INF, INF},
342 { 5, INF, INF, INF, INF, 0, INF},
343 { 5, INF, INF, INF, INF, INF, 0},
346The lower matrix uses the costs given in \cite shapiro:1990.
347All distance functions use the following global variables:
352\copybrief cost_matrix
357\copybrief edit_backtrack
362\copybrief aligned_line
364\see utils.h, dist_vars.h and stringdist.h
for more details
366<h3>Functions
for Tree Edit Distances</h3>
384\see dist_vars.h and treedist.h
for prototypes and more detailed descriptions
386<h3>Functions
for String Alignment</h3>
399\see dist_vars.h and stringdist.h
for prototypes and more detailed descriptions
401<h3>Functions
for Comparison of Base Pair Probabilities</h3>
403For comparison of base pair probability matrices, the matrices are first
404condensed into probability profiles which are the compared by alignment.
418\see ProfileDist.h
for prototypes and more details of the above functions
420\ref mp_utils
"Next Page: Utilities"
422\page mp_utils Utilities - Odds and Ends
426<h3>Table of Contents</h3>
438\section utils_ss Producing secondary structure graphs
491Two low-level functions provide direct access to the graph lauyouting
502int naview_xy_coordinates (
short *pair_table,
506\copybrief naview_xy_coordinates()
508\see PS_dot.h and naview.h
for more detailed descriptions.
512<a href=
"#toc">Table of Contents</a>
516\section utils_dot Producing (colored) dot plots
for base pair probabilities
519int PS_color_dot_plot (
char *
string,
523\copybrief PS_color_dot_plot()
526int PS_color_dot_plot_turn (
char *seq,
531\copybrief PS_color_dot_plot_turn()
543int PS_dot_plot_turn (
char *seq,
548\copybrief PS_dot_plot_turn()
550\see PS_dot.h
for more detailed descriptions.
552\section utils_aln Producing (colored) alignments
556 const char *structure,
557 const char *filename,
561\copybrief PS_color_aln()
565<a href=
"#toc">Table of Contents</a>
569\section utils_seq RNA sequence related utilities
571Several functions provide useful applications to RNA sequences
575 const char symbols[])
597<a href=
"#toc">Table of Contents</a>
601\section utils_struc RNA secondary structure related utilities
625<a href=
"#toc">Table of Contents</a>
629\section utils_misc Miscellaneous Utilities
658 const char *constraint,
663 unsigned int idx_type)
677 unsigned int options);
692void nrerror (
const char message[])
702unsigned short xsubi[3];
717void *
space (
unsigned size)
727\see utils.h
for a complete overview and detailed description of the utility functions
731<a href=
"#toc">Table of Contents</a>
735\ref mp_example
"Next Page: Examples"
737\page mp_example Example - A Small Example Program
739The following program exercises most commonly used functions of the library.
740The program folds two sequences
using both the mfe and partition function
741algorithms and calculates the tree edit and profile distance of the
742resulting structures and base pairing probabilities.
761 char *seq1=
"CGCAGGGAUACCCGCG", *seq2=
"GCGCCCAUAGGGACGC",
762 *struct1,* struct2,* xstruc;
763 float e1, e2, tree_dist, string_dist, profile_dist, kT;
772 struct1 = (
char* )
space(
sizeof(
char)*(strlen(seq1)+1));
773 e1 =
fold(seq1, struct1);
775 struct2 = (
char* )
space(
sizeof(
char)*(strlen(seq2)+1));
776 e2 =
fold(seq2, struct2);
801 printf(
"%s mfe=%5.2f\n%s mfe=%5.2f dist=%3.2f\n",
807 pf_scale = exp(-e1/kT/strlen(seq1));
823 printf(
"%s free energy=%5.2f\n%s free energy=%5.2f dist=%3.2f\n",
830In a typical Unix environment you would compile
this program
using:
832cc ${OPENMP_CFLAGS} -c example.c -I${hpath}
836cc ${OPENMP_CFLAGS} -o example -L${lpath} -lRNA -lm
838where \e ${hpath} and \e ${lpath} point to the location of the header
839files and library, respectively.
840\note As
default, the RNAlib is compiled with build-in \e OpenMP multithreading
841support. Thus, when linking your own
object files to the library you have to pass
842the compiler specific \e ${OPENMP_CFLAGS} (e.g.
'-fopenmp' for \b gcc) even
if your code does not
843use openmp specific code. However, in that
case the \e OpenMP flags may be ommited when compiling
int PS_dot_plot_list(char *seq, char *filename, plist *pl, plist *mf, char *comment)
Produce a postscript dot-plot from two pair lists.
int PS_rna_plot(char *string, char *structure, char *file)
Produce a secondary structure graph in PostScript and write it to 'filename'.
int xrna_plot(char *string, char *structure, char *ssfile)
Produce a secondary structure plot for further editing in XRNA.
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...
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.
int ssv_rna_plot(char *string, char *structure, char *ssfile)
Produce a secondary structure graph in SStructView format.
int svg_rna_plot(char *string, char *structure, char *ssfile)
Produce a secondary structure plot in SVG format and write it to a file.
Parsing and Coarse Graining of Structures.
void unexpand_aligned_F(char *align[2])
Converts two aligned structures in expanded notation.
char * expand_Full(const char *structure)
Convert the full structure from bracket notation to the expanded notation including root.
int edit_backtrack
Produce an alignment of the two structures being compared by tracing the editing path giving the mini...
int cost_matrix
Specify the cost matrix to be used for distance calculations.
char * aligned_line[4]
Contains the two aligned structures after a call to one of the distance functions with edit_backtrack...
MFE calculations and energy evaluations for single RNA sequences.
Here all all declarations of the global variables used throughout RNAlib.
double temperature
Rescale energy parameters to a temperature in degC.
double pf_scale
A scaling factor used by pf_fold() to avoid overflows.
void free_arrays(void)
Free arrays for mfe folding.
float fold(const char *sequence, char *structure)
Compute minimum free energy and an appropriate secondary structure of an RNA sequence.
double * export_bppm(void)
Get a pointer to the base pair probability array.
float pf_fold(const char *sequence, char *structure)
Compute the partition function of an RNA sequence.
void free_pf_arrays(void)
Free arrays for the partition function recursions.
Inverse folding routines.
Partition function of single RNA sequences.
int rna_plot_type
Switch for changing the secondary structure layout algorithm.
int simple_xy_coordinates(short *pair_table, float *X, float *Y)
Calculate nucleotide coordinates for secondary structure plot the Simple way
float * Make_bp_profile_bppm(double *bppm, int length)
condense pair probability matrix into a vector containing probabilities for unpaired,...
void free_profile(float *T)
free space allocated in Make_bp_profile
float profile_edit_distance(const float *T1, const float *T2)
Align the 2 probability profiles T1, T2 .
Functions for String Alignment.
swString * Make_swString(char *string)
Convert a structure into a format suitable for string_edit_distance().
float string_edit_distance(swString *T1, swString *T2)
Calculate the string edit distance of T1 and T2.
Definition dist_vars.h:41
this datastructure is used as input parameter in functions of PS_dot.c
Definition data_structures.h:58
this datastructure is used as input parameter in functions of PS_dot.h and others
Definition data_structures.h:48
Definition dist_vars.h:46
Functions for Tree Edit Distances.
Tree * make_tree(char *struc)
Constructs a Tree ( essentially the postorder list ) of the structure 'struc', for use in tree_edit_d...
float tree_edit_distance(Tree *T1, Tree *T2)
Calculates the edit distance of the two trees.
void free_tree(Tree *t)
Free the memory allocated for Tree t.
Various utility- and helper-functions used throughout the Vienna RNA package.
int * get_iindx(unsigned int length)
Get an index mapper array (iindx) for accessing the energy matrices, e.g. in partition function relat...
void str_uppercase(char *sequence)
Convert an input sequence to uppercase.
short * copy_pair_table(const short *pt)
Get an exact copy of a pair table.
char * unpack_structure(const char *packed)
Unpack secondary structure previously packed with pack_structure()
void constrain_ptypes(const char *constraint, unsigned int length, char *ptype, int *BP, int min_loop_size, unsigned int idx_type)
Insert constraining pair types according to constraint structure string.
void print_tty_constraint(unsigned int option)
Print structure constraint characters to stdout. (constraint support is specified by option parameter...
char * time_stamp(void)
Get a timestamp.
int int_urn(int from, int to)
Generates a pseudo random integer in a specified range.
void print_tty_input_seq(void)
Print a line to stdout that asks for an input sequence.
void * space(unsigned size)
Allocate space safely.
void * xrealloc(void *p, unsigned size)
Reallocate space safely.
void init_rand(void)
Make random number seeds.
char * pack_structure(const char *struc)
Pack secondary secondary structure, 5:1 compression using base 3 encoding.
char * get_line(FILE *fp)
Read a line of arbitrary length from a stream.
double urn(void)
get a random number from [0..1]
short * make_pair_table(const char *structure)
Create a pair table of a secondary structure.
void str_DNA2RNA(char *sequence)
Convert a DNA input sequence to RNA alphabet.
char * random_string(int l, const char symbols[])
Create a random string using characters from a specified symbol set.
int hamming(const char *s1, const char *s2)
Calculate hamming distance between two sequences.
int * get_indx(unsigned int length)
Get an index mapper array (indx) for accessing the energy matrices, e.g. in MFE related functions.
void print_tty_constraint_full(void)
Print structure constraint characters to stdout (full constraint support)
void warn_user(const char message[])
Print a warning message.
unsigned short xsubi[3]
Current 48 bit random number.
unsigned int read_record(char **header, char **sequence, char ***rest, unsigned int options)