RNAlib-2.6.3
 
Loading...
Searching...
No Matches
hard.h
Go to the documentation of this file.
1#ifndef VIENNA_RNA_PACKAGE_CONSTRAINTS_HARD_H
2#define VIENNA_RNA_PACKAGE_CONSTRAINTS_HARD_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
16
34typedef struct vrna_hc_s vrna_hc_t;
35
41
42typedef struct vrna_hc_depot_s vrna_hc_depot_t;
43
46
78typedef unsigned char (*vrna_hc_eval_f)(int i,
79 int j,
80 int k,
81 int l,
82 unsigned char d,
83 void *data);
84
85DEPRECATED(typedef unsigned char (vrna_callback_hc_evaluate)(int i,
86 int j,
87 int k,
88 int l,
89 unsigned char d,
90 void *data),
91 "Use vrna_hc_eval_f instead!");
92
93
99#define VRNA_CONSTRAINT_NO_HEADER 0
100
109#define VRNA_CONSTRAINT_DB 16384U
110
122#define VRNA_CONSTRAINT_DB_ENFORCE_BP 32768U
123
135#define VRNA_CONSTRAINT_DB_PIPE 65536U
136
145#define VRNA_CONSTRAINT_DB_DOT 131072U
154#define VRNA_CONSTRAINT_DB_X 262144U
161#define VRNA_CONSTRAINT_DB_ANG_BRACK 524288U
170#define VRNA_CONSTRAINT_DB_RND_BRACK 1048576U
171
183#define VRNA_CONSTRAINT_DB_INTRAMOL 2097152U
184
196#define VRNA_CONSTRAINT_DB_INTERMOL 4194304U
197
208#define VRNA_CONSTRAINT_DB_GQUAD 8388608U
209
210#define VRNA_CONSTRAINT_DB_CANONICAL_BP 16777216U
211
220#define VRNA_CONSTRAINT_DB_WUSS 33554432U
221
222
234#define VRNA_CONSTRAINT_DB_DEFAULT \
235 (VRNA_CONSTRAINT_DB \
236 | VRNA_CONSTRAINT_DB_PIPE \
237 | VRNA_CONSTRAINT_DB_DOT \
238 | VRNA_CONSTRAINT_DB_X \
239 | VRNA_CONSTRAINT_DB_ANG_BRACK \
240 | VRNA_CONSTRAINT_DB_RND_BRACK \
241 | VRNA_CONSTRAINT_DB_INTRAMOL \
242 | VRNA_CONSTRAINT_DB_INTERMOL \
243 | VRNA_CONSTRAINT_DB_GQUAD \
244 )
245
252#define VRNA_CONSTRAINT_CONTEXT_EXT_LOOP (unsigned char)0x01
253
260#define VRNA_CONSTRAINT_CONTEXT_HP_LOOP (unsigned char)0x02
261
268#define VRNA_CONSTRAINT_CONTEXT_INT_LOOP (unsigned char)0x04
269
276#define VRNA_CONSTRAINT_CONTEXT_INT_LOOP_ENC (unsigned char)0x08
277
284#define VRNA_CONSTRAINT_CONTEXT_MB_LOOP (unsigned char)0x10
285
292#define VRNA_CONSTRAINT_CONTEXT_MB_LOOP_ENC (unsigned char)0x20
293
297#define VRNA_CONSTRAINT_CONTEXT_ENFORCE (unsigned char)0x40
298
302#define VRNA_CONSTRAINT_CONTEXT_NO_REMOVE (unsigned char)0x80
303
304
308#define VRNA_CONSTRAINT_CONTEXT_NONE (unsigned char)0
309
313#define VRNA_CONSTRAINT_CONTEXT_CLOSING_LOOPS (unsigned char)(VRNA_CONSTRAINT_CONTEXT_EXT_LOOP | \
314 VRNA_CONSTRAINT_CONTEXT_HP_LOOP | \
315 VRNA_CONSTRAINT_CONTEXT_INT_LOOP | \
316 VRNA_CONSTRAINT_CONTEXT_MB_LOOP)
317
321#define VRNA_CONSTRAINT_CONTEXT_ENCLOSED_LOOPS (unsigned char)(VRNA_CONSTRAINT_CONTEXT_INT_LOOP_ENC | \
322 VRNA_CONSTRAINT_CONTEXT_MB_LOOP_ENC)
323
330#define VRNA_CONSTRAINT_CONTEXT_ALL_LOOPS (unsigned char)(VRNA_CONSTRAINT_CONTEXT_CLOSING_LOOPS | \
331 VRNA_CONSTRAINT_CONTEXT_ENCLOSED_LOOPS)
332
333
340typedef enum {
347
348
373struct vrna_hc_s {
374 vrna_hc_type_e type;
375 unsigned int n;
376
377 unsigned char state;
378
379#ifndef VRNA_DISABLE_C11_FEATURES
380 /* C11 support for unnamed unions/structs */
381 union {
382 struct {
383#endif
384 unsigned char *mx;
385#ifndef VRNA_DISABLE_C11_FEATURES
386};
387struct {
388#endif
389 unsigned char **matrix_local;
390#ifndef VRNA_DISABLE_C11_FEATURES
391};
392};
393#endif
394
395 int *up_ext;
398 int *up_hp;
401 int *up_int;
404 int *up_ml;
412 void *data;
428 vrna_hc_depot_t *depot;
429};
430
438 int strand;
439 unsigned char options;
440};
441
464void
466
467
478void
480
481
496void
498
499
500void
501vrna_hc_init_window(vrna_fold_compound_t *fc);
502
503
504int
505vrna_hc_prepare(vrna_fold_compound_t *fc,
506 unsigned int options);
507
508
509void
510vrna_hc_update(vrna_fold_compound_t *fc,
511 unsigned int i,
512 unsigned int options);
513
514
529void
531 int i,
532 unsigned char option);
533
534
535int
536vrna_hc_add_up_strand(vrna_fold_compound_t *fc,
537 unsigned int i,
538 unsigned int strand,
539 unsigned char option);
540
541
551int
553 vrna_hc_up_t *constraints);
554
555
556int
557vrna_hc_add_up_strand_batch(vrna_fold_compound_t *fc,
558 vrna_hc_up_t *constraints);
559
560
577int
579 int i,
580 int j,
581 unsigned char option);
582
583
584int
585vrna_hc_add_bp_strand(vrna_fold_compound_t *fc,
586 unsigned int i,
587 unsigned int strand_i,
588 unsigned int j,
589 unsigned int strand_j,
590 unsigned char option);
591
592
610void
612 int i,
613 int d,
614 unsigned char option);
615
616
628void
630
631
636void
639
640
652void
654 void *data,
656
657
676int
678 const char *constraint,
679 unsigned int options);
680
681
682#ifndef VRNA_DISABLE_BACKWARD_COMPATIBILITY
683
691DEPRECATED(void
692 print_tty_constraint(unsigned int option),
693 "Use vrna_message_constraint_options() instead");
694
701DEPRECATED(void
703 "Use vrna_message_constraint_options_all() instead");
704
717DEPRECATED(void
718 constrain_ptypes(const char *constraint,
719 unsigned int length,
720 char *ptype,
721 int *BP,
722 int min_loop_size,
723 unsigned int idx_type),
724 "Use the new API and the hard constraint framework instead");
725
726#endif
727
728#endif
Functions and data structures for constraining secondary structure predictions and evaluation.
The Basic Fold Compound API.
void vrna_message_constraint_options(unsigned int option)
Print a help message for pseudo dot-bracket structure constraint characters to stdout....
void vrna_message_constraint_options_all(void)
Print structure constraint characters to stdout (full constraint support)
void(* vrna_auxdata_free_f)(void *data)
Callback to free memory allocated for auxiliary user-provided data.
Definition fold_compound.h:58
The most basic data structure required by many functions throughout the RNAlib.
Definition fold_compound.h:168
int * up_int
A linear array that holds the number of allowed unpaired nucleotides in an interior loop.
Definition hard.h:401
unsigned char options
The hard constraint option
Definition hard.h:439
int * up_ext
A linear array that holds the number of allowed unpaired nucleotides in an exterior loop.
Definition hard.h:395
int position
The sequence position (1-based)
Definition hard.h:437
int * up_hp
A linear array that holds the number of allowed unpaired nucleotides in a hairpin loop.
Definition hard.h:398
int * up_ml
A linear array that holds the number of allowed unpaired nucleotides in a multi branched loop.
Definition hard.h:404
vrna_auxdata_free_f free_data
A pointer to a function to free memory occupied by auxiliary data.
Definition hard.h:417
vrna_hc_eval_f f
A function pointer that returns whether or not a certain decomposition may be evaluated.
Definition hard.h:408
void * data
A pointer to some structure where the user may store necessary data to evaluate its generic hard cons...
Definition hard.h:412
unsigned char(* vrna_hc_eval_f)(int i, int j, int k, int l, unsigned char d, void *data)
Callback to evaluate whether or not a particular decomposition step is contributing to the solution s...
Definition hard.h:78
void vrna_hc_init(vrna_fold_compound_t *fc)
Initialize/Reset hard constraints to default values.
void vrna_hc_free(vrna_hc_t *hc)
Free the memory allocated by a vrna_hc_t data structure.
void vrna_hc_add_up(vrna_fold_compound_t *fc, int i, unsigned char option)
Make a certain nucleotide unpaired.
void vrna_hc_add_bp_nonspecific(vrna_fold_compound_t *fc, int i, int d, unsigned char option)
Enforce a nucleotide to be paired (upstream/downstream)
int vrna_hc_add_bp(vrna_fold_compound_t *fc, int i, int j, unsigned char option)
Favorize/Enforce a certain base pair (i,j)
int vrna_hc_add_from_db(vrna_fold_compound_t *fc, const char *constraint, unsigned int options)
Add hard constraints from pseudo dot-bracket notation.
int vrna_hc_add_up_batch(vrna_fold_compound_t *fc, vrna_hc_up_t *constraints)
Apply a list of hard constraints for single nucleotides.
The hard constraints data structure.
Definition hard.h:373
A single hard constraint for a single nucleotide.
Definition hard.h:436
vrna_hc_type_e
The hard constraints type.
Definition hard.h:340
@ VRNA_HC_DEFAULT
Default Hard Constraints.
Definition hard.h:341
@ VRNA_HC_WINDOW
Hard Constraints suitable for local structure prediction using window approach.
Definition hard.h:342
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...
void vrna_hc_add_data(vrna_fold_compound_t *fc, void *data, vrna_auxdata_free_f f)
Add an auxiliary data structure for the generic hard constraints callback function.
void vrna_hc_add_f(vrna_fold_compound_t *fc, vrna_hc_eval_f f)
Add a function pointer pointer for the generic hard constraint feature.
void print_tty_constraint_full(void)
Print structure constraint characters to stdout (full constraint support)