# (Abstract) Data Structures

All datastructures and typedefs shared among the ViennaRNA Package can be found here.

Specialized Modules:

- The Fold Compound
- The Dynamic Programming Matrices
- Hash Tables
- Heaps
- Arrays
- Strings
- Buffers

  Typedefs

  typedef struct vrna_basepair_s vrna_basepair_t
    #include <ViennaRNA/datastructures/basic.h>

    Typename for the base pair repesenting data structure vrna_basepair_s.

  typedef struct vrna_elem_prob_s vrna_plist_t
    #include <ViennaRNA/datastructures/basic.h>

    Typename for the base pair list repesenting data structure vrna_elem_prob_s.

  typedef struct vrna_bp_stack_s vrna_bp_stack_t
    #include <ViennaRNA/datastructures/basic.h>

    Typename for the base pair stack repesenting data structure vrna_bp_stack_s.

  typedef struct vrna_cpair_s vrna_cpair_t
    #include <ViennaRNA/datastructures/basic.h>

    Typename for data structure vrna_cpair_s.

  typedef struct vrna_sect_s vrna_sect_t
    #include <ViennaRNA/datastructures/basic.h>

    Typename for stack of partial structures vrna_sect_s.

  typedef struct vrna_data_linear_s vrna_data_lin_t
    #include <ViennaRNA/datastructures/basic.h>
  typedef struct vrna_color_s vrna_color_t
    #include <ViennaRNA/datastructures/basic.h>
  typedef double FLT_OR_DBL
    #include <ViennaRNA/datastructures/basic.h>

    Typename for floating point number in partition function computations.

  typedef struct vrna_basepair_s PAIR
    #include <ViennaRNA/datastructures/basic.h>

    Old typename of vrna_basepair_s.

    Deprecated:

      Use vrna_basepair_t instead!

  typedef struct vrna_elem_prob_s plist
    #include <ViennaRNA/datastructures/basic.h>

    Old typename of vrna_elem_prob_s.

    Deprecated:

      Use vrna_ep_t or vrna_elem_prob_s instead!

  typedef struct vrna_cpair_s cpair
    #include <ViennaRNA/datastructures/basic.h>

    Old typename of vrna_cpair_s.

    Deprecated:

      Use vrna_cpair_t instead!

  typedef struct vrna_sect_s sect
    #include <ViennaRNA/datastructures/basic.h>

    Old typename of vrna_sect_s.

    Deprecated:

      Use vrna_sect_t instead!

  typedef struct vrna_bp_stack_s bondT
    #include <ViennaRNA/datastructures/basic.h>

    Old typename of vrna_bp_stack_s.

    Deprecated:

      Use vrna_bp_stack_t instead!

  typedef struct pu_contrib pu_contrib
    #include <ViennaRNA/datastructures/basic.h>

    contributions to p_u

  typedef struct interact interact
    #include <ViennaRNA/datastructures/basic.h>

    interaction data structure for RNAup

  typedef struct pu_out pu_out
    #include <ViennaRNA/datastructures/basic.h>

    Collection of all free_energy of beeing unpaired values for output.

  typedef struct constrain constrain
    #include <ViennaRNA/datastructures/basic.h>

    constraints for cofolding

  typedef struct node folden
    #include <ViennaRNA/datastructures/basic.h>

    Data structure for RNAsnoop (fold energy list)

  typedef struct dupVar dupVar
    #include <ViennaRNA/datastructures/basic.h>

    Data structure used in RNApkplex.

  Functions

  void vrna_C11_features(void)
    #include <ViennaRNA/datastructures/basic.h>

    Dummy symbol to check whether the library was build using C11/C++11 features.

    By default, several data structures of our new v3.0 API use C11/C++11 features, such as unnamed unions, unnamed structs. However, these features can be deactivated at compile time to allow building the library and executables with compilers that do not support these features.

    Now, the problem arises that once our static library is compiled and a third-party application is supposed to link against it, it needs to know, at compile time, how to correctly address particular data structures. This is usually implicitely taken care of through the API exposed in our header files. Unfortunately, we had some preprocessor directives in our header files that changed the API depending on the capabilities of the compiler the third-party application is build with. This in turn prohibited the use of an RNAlib compiled without C11/C++11 support in a program that compiles/links with enabled C11/C++11 support and vice-versa.

    Therefore, we introduce this dummy symbol which can be used to check, whether the static library was build with C11/C++11 features.

    Since

      v2.2.9

    Note

    If the symbol is present, the library was build with enabled C11/C++11 features support and no action is required. However, if the symbol is missing in RNAlib >= 2.2.9, programs that link to RNAlib must define a pre-processor identifier VRNA_DISABLE_C11_FEATURES before including any ViennaRNA Package header file, for instance by adding a CPPFLAG

        CPPFLAGS+=-DVRNA_DISABLE_C11_FEATURES

  struct vrna_basepair_s
    #include <ViennaRNA/datastructures/basic.h>

    Base pair data structure used in subopt.c.

    Public Members

    int i
    int j
  struct vrna_cpair_s
    #include <ViennaRNA/datastructures/basic.h>

    this datastructure is used as input parameter in functions of PS_dot.c

    Public Members

    int i
    int j
    int mfe
    float p
    float hue
    float sat
    int type
  struct vrna_color_s

    Public Members

    float hue
    float sat
    float bri
  struct vrna_data_linear_s

    Public Members

    unsigned int position
    float value
    vrna_color_t color
  struct vrna_sect_s
    #include <ViennaRNA/datastructures/basic.h>

    Stack of partial structures for backtracking.

    Public Members

    int i
    int j
    int ml
  struct vrna_bp_stack_s
    #include <ViennaRNA/datastructures/basic.h>

    Base pair stack element.

    Public Members

    unsigned int i
    unsigned int j
  struct pu_contrib
    #include <ViennaRNA/datastructures/basic.h>

    contributions to p_u

    Public Members

    double **H

      hairpin loops

    double **I

      interior loops

    double **M

      multi loops

    double **E

      exterior loop

    int length

      length of the input sequence

    int w

      longest unpaired region

  struct interact
    #include <ViennaRNA/datastructures/basic.h>

    interaction data structure for RNAup

    Public Members

    double *Pi

      probabilities of interaction

    double *Gi

      free energies of interaction

    double Gikjl

      full free energy for interaction between [k,i] k<i in longer seq and [j,l] j<l in shorter seq

    double Gikjl_wo

      Gikjl without contributions for prob_unpaired.

    int i

      k<i in longer seq

    int k

      k<i in longer seq

    int j

      j<l in shorter seq

    int l

      j<l in shorter seq

    int length

      length of longer sequence

  struct pu_out
    #include <ViennaRNA/datastructures/basic.h>

    Collection of all free_energy of beeing unpaired values for output.

    Public Members

    int len

      sequence length

    int u_vals

      number of different -u values

    int contribs

      [-c “SHIME”]

    char **header

      header line

    double **u_values

      (the -u values * [-c “SHIME”]) * seq len

  struct constrain
    #include <ViennaRNA/datastructures/basic.h>

    constraints for cofolding

    Public Members

    int *indx
    char *ptype
  struct duplexT
    #include <ViennaRNA/datastructures/basic.h>

    Data structure for RNAduplex.

    Public Members

    int i
    int j
    int end
    char *structure
    double energy
    double energy_backtrack
    double opening_backtrack_x
    double opening_backtrack_y
    int offset
    double dG1
    double dG2
    double ddG
    int tb
    int te
    int qb
    int qe
  struct node
    #include <ViennaRNA/datastructures/basic.h>

    Data structure for RNAsnoop (fold energy list)

    Public Members

    int k
    int energy
    struct node *next
  struct snoopT
    #include <ViennaRNA/datastructures/basic.h>

    Data structure for RNAsnoop.

    Public Members

    int i
    int j
    int u
    char *structure
    float energy
    float Duplex_El
    float Duplex_Er
    float Loop_E
    float Loop_D
    float pscd
    float psct
    float pscg
    float Duplex_Ol
    float Duplex_Or
    float Duplex_Ot
    float fullStemEnergy
  struct dupVar
    #include <ViennaRNA/datastructures/basic.h>

    Data structure used in RNApkplex.

    Public Members

    int i
    int j
    int end
    char *pk_helix
    char *structure
    double energy
    int offset
    double dG1
    double dG2
    double ddG
    int tb
    int te
    int qb
    int qe
    int inactive
    int processed