RNAlib-2.5.1
fold_compound.h
Go to the documentation of this file.
1#ifndef VIENNA_RNA_PACKAGE_FOLD_COMPOUND_H
2#define VIENNA_RNA_PACKAGE_FOLD_COMPOUND_H
3
4#ifdef VRNA_WARN_DEPRECATED
5# if defined(__clang__)
6# define DEPRECATED(func, msg) func __attribute__ ((deprecated("", msg)))
7# elif defined(__GNUC__)
8# define DEPRECATED(func, msg) func __attribute__ ((deprecated(msg)))
9# else
10# define DEPRECATED(func, msg) func
11# endif
12#else
13# define DEPRECATED(func, msg) func
14#endif
15
39
58typedef void (vrna_callback_free_auxdata)(void *data);
59
78typedef void (vrna_callback_recursion_status)(unsigned char status,
79 void *data);
80
87#define VRNA_STATUS_MFE_PRE (unsigned char)1
88
95#define VRNA_STATUS_MFE_POST (unsigned char)2
96
102#define VRNA_STATUS_PF_PRE (unsigned char)3
103
109#define VRNA_STATUS_PF_POST (unsigned char)4
110
111
112#include <ViennaRNA/model.h>
114#include <ViennaRNA/sequence.h>
118#include <ViennaRNA/grammar.h>
121
122#ifdef VRNA_WITH_SVM
123#include <ViennaRNA/zscore.h>
124#endif
125
126
130typedef enum {
134
135
148struct vrna_fc_s {
160 unsigned int length;
161#ifndef VRNA_DISABLE_BACKWARD_COMPATIBILITY
162 DEPRECATED(int cutpoint,
163 "Use strand_* members instead");
167#endif
168 unsigned int *strand_number;
169 unsigned int *strand_order;
170 unsigned int *strand_order_uniq;
171 unsigned int *strand_start;
172 unsigned int *strand_end;
174 unsigned int strands;
186 int *iindx;
187 int *jindx;
200 void *auxdata;
215 /* data structure to adjust additional structural domains, such as G-quadruplexes */
218 /* data structure to adjust additional contributions to unpaired stretches, e.g. due to protein binding */
221 /* auxiliary (user-defined) extension to the folding grammar */
228#ifndef VRNA_DISABLE_C11_FEATURES
229 /* C11 support for unnamed unions/structs */
230 union {
231 struct {
232#endif
233
238 char *sequence;
245 short *encoding5;
246 short *encoding3;
247
248 short *sequence_encoding2;
249
250
251 char *ptype;
273#ifndef VRNA_DISABLE_C11_FEATURES
274 /* C11 support for unnamed unions/structs */
275};
276struct {
277#endif
278
283 char **sequences;
287 unsigned int n_seq;
290 char *cons_seq;
293 short *S_cons;
296 short **S;
299 short **S5;
302 short **S3;
305 char **Ss;
306 unsigned int **a2s;
307 int *pscore;
320 int oldAliEn;
321
325#ifndef VRNA_DISABLE_C11_FEATURES
326};
327};
328#endif
329
336 unsigned int maxD1;
337 unsigned int maxD2;
341 unsigned int *referenceBPs1;
342 unsigned int *referenceBPs2;
343 unsigned int *bpdist;
345 unsigned int *mm1;
346 unsigned int *mm2;
359 char **ptype_local;
360#ifdef VRNA_WITH_SVM
361 vrna_zsc_dat_t zscore_data;
362#endif
363
367};
368
369
370/* the definitions below should be used for functions that return/receive/destroy fold compound data structures */
371
375#define VRNA_OPTION_DEFAULT 0U
376
383#define VRNA_OPTION_MFE 1U
384
391#define VRNA_OPTION_PF 2U
392
396#define VRNA_OPTION_HYBRID 4U
397
407#define VRNA_OPTION_EVAL_ONLY 8U
408
412#define VRNA_OPTION_WINDOW 16U
413
452vrna_fold_compound(const char *sequence,
453 const vrna_md_t *md_p,
454 unsigned int options);
455
456
495vrna_fold_compound_comparative(const char **sequences,
496 vrna_md_t *md_p,
497 unsigned int options);
498
499
501vrna_fold_compound_comparative2(const char **sequences,
502 const char **names,
503 const unsigned char *orientation,
504 const unsigned long long *start,
505 const unsigned long long *genome_size,
506 vrna_md_t *md_p,
507 unsigned int options);
508
509
511vrna_fold_compound_TwoD(const char *sequence,
512 const char *s1,
513 const char *s2,
514 vrna_md_t *md_p,
515 unsigned int options);
516
517
518int
519vrna_fold_compound_prepare(vrna_fold_compound_t *fc,
520 unsigned int options);
521
522
530void
532
533
551void
553 void *data,
555
556
572void
575
576
581#endif
Functions to deal with standard dynamic programming (DP) matrices.
Implementations for the RNA folding grammar.
Definition: sequence.h:52
Data structure representing a nucleotide sequence.
Definition: sequence.h:41
Data structure to store all functionality for ligand binding.
Definition: unstructured_domains.h:228
Minimum Free Energy (MFE) Dynamic Programming (DP) matrices data structure required within the vrna_f...
Definition: dp_matrices.h:46
Partition function (PF) Dynamic Programming (DP) matrices data structure required within the vrna_fol...
Definition: dp_matrices.h:206
The data structure that contains temperature scaled Boltzmann weights of the energy parameters.
Definition: basic.h:103
The datastructure that contains temperature scaled energy parameters.
Definition: basic.h:57
vrna_msa_t * alignment
Set of alignments.
Definition: fold_compound.h:176
unsigned int * mm1
Maximum matching matrix, reference struct 1 disallowed.
Definition: fold_compound.h:345
int * pscore
Precomputed array of pair types expressed as pairing scores.
Definition: fold_compound.h:307
unsigned int * referenceBPs2
Matrix containing number of basepairs of reference structure2 in interval [i,j].
Definition: fold_compound.h:342
vrna_param_t * params
The precomputed free energy contributions for each type of loop.
Definition: fold_compound.h:183
void * auxdata
A pointer to auxiliary, user-defined data.
Definition: fold_compound.h:200
unsigned int * strand_number
The strand number a particular nucleotide is associated with.
Definition: fold_compound.h:168
char ** ptype_local
Pair type array (for local folding)
Definition: fold_compound.h:359
unsigned int maxD2
Maximum allowed base pair distance to second reference.
Definition: fold_compound.h:337
const vrna_fc_type_e type
The type of the vrna_fold_compound_t.
Definition: fold_compound.h:153
unsigned int * strand_order
The strand order, i.e. permutation of current concatenated sequence.
Definition: fold_compound.h:169
char * ptype
Pair type array.
Definition: fold_compound.h:251
unsigned int maxD1
Maximum allowed base pair distance to first reference.
Definition: fold_compound.h:336
vrna_gr_aux_t * aux_grammar
Additional decomposition grammar rules.
Definition: fold_compound.h:222
vrna_ud_t * domains_up
Additional unstructured domains.
Definition: fold_compound.h:219
int * jindx
DP matrix accessor
Definition: fold_compound.h:187
unsigned int * mm2
Maximum matching matrix, reference struct 2 disallowed.
Definition: fold_compound.h:346
unsigned int * strand_start
The start position of a particular strand within the current concatenated sequence.
Definition: fold_compound.h:171
unsigned int * bpdist
Matrix containing base pair distance of reference structure 1 and 2 on interval [i,...
Definition: fold_compound.h:343
unsigned int n_seq
The number of sequences in the alignment.
Definition: fold_compound.h:287
unsigned int * referenceBPs1
Matrix containing number of basepairs of reference structure1 in interval [i,j].
Definition: fold_compound.h:341
vrna_exp_param_t * exp_params
The precomputed free energy contributions as Boltzmann factors
Definition: fold_compound.h:184
short ** S5
S5[s][i] holds next base 5' of i in sequence s.
Definition: fold_compound.h:299
char * ptype_pf_compat
ptype array indexed via iindx
Definition: fold_compound.h:260
vrna_seq_t * nucleotides
Set of nucleotide sequences.
Definition: fold_compound.h:175
vrna_callback_recursion_status * stat_cb
Recursion status callback (usually called just before, and after recursive computations in the librar...
Definition: fold_compound.h:195
char * sequence
The input sequence string.
Definition: fold_compound.h:238
vrna_callback_free_auxdata * free_auxdata
A callback to free auxiliary user data whenever the fold_compound itself is free'd.
Definition: fold_compound.h:204
short * reference_pt2
A pairtable of the second reference structure.
Definition: fold_compound.h:339
unsigned int length
The length of the sequence (or sequence alignment)
Definition: fold_compound.h:160
char ** sequences
The aligned sequences.
Definition: fold_compound.h:283
short * sequence_encoding
Numerical encoding of the input sequence.
Definition: fold_compound.h:241
short * reference_pt1
A pairtable of the first reference structure.
Definition: fold_compound.h:338
short * S_cons
Numerical encoding of the consensus sequence.
Definition: fold_compound.h:293
unsigned int * strand_end
The end (last) position of a particular strand within the current concatenated sequence.
Definition: fold_compound.h:172
vrna_zsc_dat_t zscore_data
Data structure with settings for z-score computations.
Definition: fold_compound.h:361
short * pscore_pf_compat
Precomputed array of pair types expressed as pairing scores indexed via iindx.
Definition: fold_compound.h:313
vrna_sd_t * domains_struc
Additional structured domains.
Definition: fold_compound.h:216
vrna_sc_t ** scs
A set of soft constraints (for each sequence in the alignment)
Definition: fold_compound.h:317
char * cons_seq
The consensus sequence of the aligned sequences.
Definition: fold_compound.h:290
vrna_sc_t * sc
The soft constraints for usage in structure prediction and evaluation.
Definition: fold_compound.h:265
vrna_mx_mfe_t * matrices
The MFE DP matrices.
Definition: fold_compound.h:180
vrna_hc_t * hc
The hard constraints data structure used for structure prediction.
Definition: fold_compound.h:178
unsigned int strands
Number of interacting strands.
Definition: fold_compound.h:174
int ** pscore_local
Precomputed array of pair types expressed as pairing scores.
Definition: fold_compound.h:310
int window_size
window size for local folding sliding window approach
Definition: fold_compound.h:358
int cutpoint
The position of the (cofold) cutpoint within the provided sequence. If there is no cutpoint,...
Definition: fold_compound.h:163
short ** S
Numerical encoding of the sequences in the alignment.
Definition: fold_compound.h:296
unsigned int * strand_order_uniq
The strand order array where identical sequences have the same ID.
Definition: fold_compound.h:170
short ** S3
Sl[s][i] holds next base 3' of i in sequence s.
Definition: fold_compound.h:302
vrna_mx_pf_t * exp_matrices
The PF DP matrices
Definition: fold_compound.h:181
int * iindx
DP matrix accessor
Definition: fold_compound.h:186
vrna_fc_type_e
An enumerator that is used to specify the type of a vrna_fold_compound_t.
Definition: fold_compound.h:130
void vrna_fold_compound_free(vrna_fold_compound_t *fc)
Free memory occupied by a vrna_fold_compound_t.
void vrna_fold_compound_add_callback(vrna_fold_compound_t *fc, vrna_callback_recursion_status *f)
Add a recursion status callback to the vrna_fold_compound_t.
void() vrna_callback_free_auxdata(void *data)
Callback to free memory allocated for auxiliary user-provided data.
Definition: fold_compound.h:58
vrna_fold_compound_t * vrna_fold_compound(const char *sequence, const vrna_md_t *md_p, unsigned int options)
Retrieve a vrna_fold_compound_t data structure for single sequences and hybridizing sequences.
vrna_fold_compound_t * vrna_fold_compound_comparative(const char **sequences, vrna_md_t *md_p, unsigned int options)
Retrieve a vrna_fold_compound_t data structure for sequence alignments.
void() vrna_callback_recursion_status(unsigned char status, void *data)
Callback to perform specific user-defined actions before, or after recursive computations.
Definition: fold_compound.h:78
void vrna_fold_compound_add_auxdata(vrna_fold_compound_t *fc, void *data, vrna_callback_free_auxdata *f)
Add auxiliary data to the vrna_fold_compound_t.
@ VRNA_FC_TYPE_SINGLE
Definition: fold_compound.h:131
@ VRNA_FC_TYPE_COMPARATIVE
Definition: fold_compound.h:132
The most basic data structure required by many functions throughout the RNAlib.
Definition: fold_compound.h:148
Definition: grammar.h:53
The hard constraints data structure.
Definition: hard.h:368
The data structure that contains the complete model details used throughout the calculations.
Definition: model.h:180
The soft constraints data structure.
Definition: soft.h:171
Functions and data structures for handling of secondary structure hard constraints.
The model details data structure and its corresponding modifiers.
Functions to deal with sets of energy parameters.
Functions and data structures related to sequence representations ,.
Functions and data structures for secondary structure soft constraints.
This module provides interfaces that deal with additional structured domains in the folding grammar.
Definition: structured_domains.h:26
Functions to modify unstructured domains, e.g. to incorporate ligands binding to unpaired stretches.