#ifndef __MOVE_SET_H #define __MOVE_SET_H /** * @brief Data structure for energy_of_move() */ typedef struct _struct_en{ int energy; /* energy in 10kcal/mol*/ short *structure; /* structure in energy_of_move format*/ } struct_en; /* prints structure*/ void print_stren(FILE *out, struct_en *str); void print_str(FILE *out, short *str); /* copying functions*/ void copy_arr(short *dest, short *src); /*just copy*/ short *allocopy(short *src); /*copy and make space*/ enum MOVE_TYPE {GRADIENT, FIRST, ADAPTIVE}; /* walking methods (verbose_lvl 0-2, shifts = use shift moves? noLP = no lone pairs? (not compatible with shifts)) input: seq - sequence ptable - structure encoded with make_pair_table() from pair_mat.h s, s1 - sequence encoded with encode_sequence from pair_mat.h methods: deepest - lowest energy structure is used first - first found lower energy structure is used rand - random lower energy structure is used returns local minima structure in ptable and its energy in 10kcal/mol as output */ int move_gradient( char *seq, short *ptable, short *s, short *s1, int verbosity_level, int shifts, int noLP); int move_first( char *seq, short *ptable, short *s, short *s1, int verbosity_level, int shifts, int noLP); int move_adaptive( char *seq, short *ptable, short *s, short *s1, int verbosity_level); /* standardized method that encapsulates above "_pt" methods input: seq - sequence struc - structure in dot-bracket notation type - type of move selection according to MOVE_TYPE enum return: energy of LM structure of LM in struc in bracket-dot notation */ int move_standard(char *seq, char *struc, enum MOVE_TYPE type, int verbosity_level, int shifts, int noLP); /* browse_neighbours and perform funct function on each of them (used mainly for user specified flooding) input: seq - sequence ptable - structure encoded with make_pair_table() from pair_mat.h s, s1 - sequence encoded with encode_sequence from pair_mat.h funct - function (structure from neighbourhood, structure from input) toperform on every structure in neigbourhood (if the function returns non-zero, the iteration through neighbourhood stops.) returns energy of the structure funct sets as second argument*/ int browse_neighs_pt( char *seq, short *ptable, short *s, short *s1, int verbosity_level, int shifts, int noLP, int (*funct) (struct_en*, struct_en*)); int browse_neighs( char *seq, char *struc, int verbosity_level, int shifts, int noLP, int (*funct) (struct_en*, struct_en*)); #endif