/*-------------------------------------------- Constants --------------------------------------------*/ #define __SPECTRUM_H__ #include #include #include #include #include // character handling #define DEBUG 0 #define NN 1000 #define KK 201 #define THETA 3 //NN is upper bound for sequence length of RNA //Nucleotide sequence a1,...,an is stored by //array with values (n,a1,a2,...,an); ie length is a[0] in array #define INF INT_MAX/2 #define MIN(x,y) ((x)<=(y) ? (x) : (y) ) #define MAX(x,y) ((x)>(y) ? (x) : (y) ) #define FF(i,j) (((j)-(i)+1)/(THETA+2)) /*-------------------------------------------- Type definitions --------------------------------------------*/ typedef int MatrixType[NN][NN][KK]; typedef int Triplet[3]; typedef Triplet TripletMatrixType[NN][NN][KK]; /*-------------------------------------------- Functional macros --------------------------------------------*/ #define BP(i,j,k) M[i][j][k] #define SS(i,j,k) S[i][j][k] /*-------------------------------------------- NOTE: 1) For 1<=i<=j<=n, and 0<=k<(j-i+1)/(THETA+2), M[i][j][k] is maximum number of basepairs in secondary str on a_i,...,a_j with k hairpin loops, each of threshold at least THETA --------------------------------------------*/ /*-------------------------------------------- Prototypes --------------------------------------------*/ //Functions from misc.c void error(char *); short *getRNA(char *flag, char *rna); int guPair(char, char); int auPair(char, char); int cgPair(char, char); int bondEnergy(int, int, char *); int basePair(char, char); int watsonCrick(char, char); void printMatrix(MatrixType,int); //Functions from energy.c void initializeParen(short [NN/2][NN],int); void initialize(MatrixType, TripletMatrixType, short*,short[NN][NN]); void initializeExistBP(MatrixType, TripletMatrixType, short*,short[NN][NN]); int backtrack(int,int,int,MatrixType,TripletMatrixType,short[NN][NN],char*,char[NN]); //Functions from backtrack.c void createLevelSecStr(short [NN/2][NN],int ,short *,MatrixType);