Below, you'll find some more or less simple C programs showing first steps into using RNAlib. A complete list of example C programs can be found in the C Examples section.
Simple MFE prediction for a given sequence
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
int
main()
{
char *seq = "GAGUAGUGGAACCAGGCUAUGUUUGUGACUCGCAGACUAACA";
char *structure = (
char *)
vrna_alloc(
sizeof(
char) * (strlen(seq) + 1));
printf("%s\n%s [ %6.2f ]\n", seq, structure, mfe);
free(structure);
return 0;
}
- See also
examples/helloworld_mfe.c
in the source code tarball
Simple MFE prediction for a multiple sequence alignment
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
int
main()
{
const char *sequences[] = {
"CUGCCUCACAACGUUUGUGCCUCAGUUACCCGUAGAUGUAGUGAGGGU",
"CUGCCUCACAACAUUUGUGCCUCAGUUACUCAUAGAUGUAGUGAGGGU",
"---CUCGACACCACU---GCCUCGGUUACCCAUCGGUGCAGUGCGGGU",
NULL
};
char *cons = consensus(sequences);
char *structure = (
char *)
vrna_alloc(
sizeof(
char) * (strlen(sequences[0]) + 1));
printf("%s\n%s [ %6.2f ]\n", cons, structure, mfe);
free(cons);
free(structure);
return 0;
}
- See also
examples/helloworld_mfe_comparative.c
in the source code tarball
Simple Base Pair Probability computation
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
int
main()
{
char *seq = "GAGUAGUGGAACCAGGCUAUGUUUGUGACUCGCAGACUAACA";
char *propensity = (
char *)
vrna_alloc(
sizeof(
char) * (strlen(seq) + 1));
float en =
vrna_pf_fold(seq, propensity, &pair_probabilities);
printf("%s\n%s [ %6.2f ]\n", seq, propensity, en);
for (ptr = pair_probabilities; ptr->
i != 0; ptr++)
printf(
"p(%d, %d) = %g\n", ptr->
i, ptr->
j, ptr->
p);
free(pair_probabilities);
free(propensity);
return 0;
}
- See also
examples/helloworld_probabilities.c
in the source code tarball
Deviating from the Default Model
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
int
main()
{
char *structure = (
char *)
vrna_alloc(
sizeof(
char) * (strlen(seq) + 1));
printf("%s\n%s [ %6.2f ]\n", seq, structure, mfe);
free(structure);
return 0;
}
- See also
examples/fold_compound_md.c
in the source code tarball
The model details data structure and its corresponding modifiers.
Data structure representing a single entry of an element probability list (e.g. list of pair probabil...
Definition: structures.h:453
int gquad
Include G-quadruplexes in structure prediction.
Definition: model.h:214
Various utility- and helper-functions for sequence alignments and comparative structure prediction.
void vrna_fold_compound_free(vrna_fold_compound_t *fc)
Free memory occupied by a vrna_fold_compound_t.
Functions for comparative structure prediction using RNA sequence alignments.
char * vrna_random_string(int l, const char symbols[])
Create a random string using characters from a specified symbol set.
void vrna_init_rand(void)
Initialize seed for random number generator.
double temperature
The temperature used to scale the thermodynamic parameters.
Definition: model.h:181
float p
Probability of the element.
Definition: structures.h:456
General utility- and helper-functions used throughout the ViennaRNA Package.
void vrna_md_set_default(vrna_md_t *md)
Apply default model details to a provided vrna_md_t data structure.
float vrna_fold(const char *sequence, char *structure)
Compute Minimum Free Energy (MFE), and a corresponding secondary structure for an RNA sequence.
General utility- and helper-functions for RNA sequence and structure strings used throughout the Vien...
The data structure that contains the complete model details used throughout the calculations.
Definition: model.h:180
The most basic data structure required by many functions throughout the RNAlib.
Definition: fold_compound.h:132
Compute Minimum Free energy (MFE) and backtrace corresponding secondary structures from RNA sequence ...
float vrna_pf_fold(const char *sequence, char *structure, vrna_ep_t **pl)
Compute Partition function (and base pair probabilities) for an RNA sequence using a comparative met...
#define VRNA_OPTION_DEFAULT
Option flag to specify default settings/requirements.
Definition: fold_compound.h:346
float vrna_alifold(const char **sequences, char *structure)
Compute Minimum Free Energy (MFE), and a corresponding consensus secondary structure for an RNA seque...
float vrna_mfe(vrna_fold_compound_t *vc, char *structure)
Compute minimum free energy and an appropriate secondary structure of an RNA sequence,...
MFE calculations for single RNA sequences.
int i
Start position (usually 5' nucleotide that starts the element, e.g. base pair)
Definition: structures.h:454
Partition function implementations.
vrna_fold_compound_t * vrna_fold_compound(const char *sequence, vrna_md_t *md_p, unsigned int options)
Retrieve a vrna_fold_compound_t data structure for single sequences and hybridizing sequences.
The Basic Fold Compound API.
int j
End position (usually 3' nucleotide that ends the element, e.g. base pair)
Definition: structures.h:455
void * vrna_alloc(unsigned size)
Allocate space safely.