/******************************COPYRIGHT NOTICE*******************************/ /* (c) Centro de Regulacio Genomica */ /* and */ /* Cedric Notredame */ /* 12 Aug 2014 - 22:07. */ /*All rights reserved. */ /*This file is part of T-COFFEE. */ /* */ /* T-COFFEE is free software; you can redistribute it and/or modify */ /* it under the terms of the GNU General Public License as published by */ /* the Free Software Foundation; either version 2 of the License, or */ /* (at your option) any later version. */ /* */ /* T-COFFEE is distributed in the hope that it will be useful, */ /* but WITHOUT ANY WARRANTY; without even the implied warranty of */ /* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the */ /* GNU General Public License for more details. */ /* */ /* You should have received a copy of the GNU General Public License */ /* along with Foobar; if not, write to the Free Software */ /* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ /*............................................... */ /* If you need some more information */ /* cedric.notredame@europe.com */ /*............................................... */ /******************************COPYRIGHT NOTICE*******************************/ #ifndef COFFEE_DEFINES_H #define COFFEE_DEFINES_H /*DEBUGGING*/ /*#include "mshell.h"*/ /*MEMORY MANAGEMENT*/ #include #define MY_EPS 1000*DBL_EPSILON //Maximum number of tries for interactibve things #define MAX_N_TRIES 3 #define MAX_NSEQ_4_DISPLAY 50 //Maximum CACHE and Temporary file size and age (Mb and days, 0: unlimited) #define TMP_MAX_SIZE 0 #define TMP_MAX_KEEP 10 #define CACHE_MAX_SIZE 2000 #define CACHE_MAX_KEEP 180 #define MAX_N_PID 260000 //Importnat Values Affecting the Program Behavior #define O2A_BYTE 50 #define SCORE_K 10 #define NORM_F 1000 #define PAVIE_MAT_FACTOR 1000 #define MAXID 100 #define CLEAN_FUNCTION NULL #define MINSIM_4_TCOFFEE 25 //The minimum similarity between a sequence and its PDB template #define MINCOV_4_TCOFFEE 25 //The minimum similarity between a sequence and its PDB template #define TRACE_TYPE int #define MAX_LEN_FOR_DP 600 #define GIVE_MEMORY_BACK 0 #define MEMSET0 1 #define NO_MEMSET0 0 /*OUTPUT DEFINITIONS*/ #define NO_COLOR_RESIDUE 127 #define NO_COLOR_GAP 126 #define CLOSE_HTML_SPAN -1 /*SPECIAL_CODES*/ #define GAP_CODE 60 /*TYPE DEFINITIONS*/ //Formats #define BLAST_XML 100 #define BLAST_TXT 101 /*SWITCHES*/ #define USED 1 #define UNUSED 2 #define TEMPLATES 1 #define NOTEMPLATES 0 #define EXTEND 1 #define RESIZE 2 #define SEN 0 #define SPE 1 #define REC 2 #define SEN2 2 #define ALL 1 #define SEGMENTS 2 #define DIAGONALS 3 #define START_STATE 0 #define END_STATE 1 #define KEEP_CASE 2 /*Hard set in several places*/ #define LOWER_CASE 0 #define UPPER_CASE 1 #define CHANGE_CASE 3 #define KEEP_GAP 0 #define RM_GAP 1 #define KEEP_NAME 1 #define CHECK 0 #define NO_CHECK 1 #define FORCE 2 #define STORE 3 #define FLUSH 4 #define DUMP 5 #define ON 8 #define OFF 9 #define LOCKED_ON 10 #define LOCKED_OFF 11 #define YES 12 #define NO 13 #define MAYBE 14 #define NEVER 15 #define ALWAYS 16 #define SOMETIMES 17 #define UPPER 18 #define LOWER 19 #define DELETE 20 #define SWITCHCASE 21 #define VECTOR 22 #define NON_VECTOR 23 #define NON_PROFILE 24 #define BOOTSTRAP 25 #define HEADER 26 #define NO_HEADER 27 #define VERY_VERBOSE 28 #define VERBOSE 29 #define SHORT 30 #define VERY_SHORT 31 #define OVERLAP 32 #define NO_OVERLAP 33 #define PRINT 34 #define NO_PRINT 35 #define FREE_ALN 36 #define DECLARE_ALN 37 #define EXTRACT_ALN 38 #define CLEAN 39 #define INTERACTIVE 40 #define NON_INTERACTIVE 41 #define PAD 42 #define NO_PAD 43 #define SET 44 #define UNSET 45 #define RESET 48 #define ISSET 49 #define GET 50 #define ENV 52 #define LLOCK 53 #define LERROR 54 #define LWARNING 55 #define LSET 56 #define LRESET 57 #define LCHECK 58 #define LREAD 59 #define LRELEASE 60 #define RETURN_ON_FAILURE 61 #define EXIT_ON_FAILURE 62 #define IGNORE_FAILURE 63 #define _START 64 #define _TERM 65 #define PROFILE 66 #define SEQUENCE 67 #define GOP 0 #define GCP 1 #define GEP 2 #define BOTTOM 0 #define TOP 1 #define FORWARD -1 #define BACKWARD 1 #define GO_LEFT -1 #define GO_RIGHT 1 #define LOCAL 1 #define GLOBAL 2 #define LALIGN 3 #define MOCCA 4 #define TRUE 1 #define FALSE 0 #define NEW 1 #define OLD 0 #define RANDOM 0 #define DETERMINISTIC 1 #define GREEDY 1 #define NON_GREEDY 0 #define IS_FATAL 1 #define IS_NOT_FATAL 0 #define NO_REPORT 2 #define INSTALL 3 #define INSTALL_OR_DIE 4 #define OPTIONAL 1 #define NON_OPTIONAL 0 #define GV_MAXIMISE 1 #define GV_MINIMISE 0 #define MAXIMISE 1 #define MINIMISE 0 #define ALLOWED 0 #define FORBIDEN -99999999 #define END_ARRAY -99999990 #define SOFT_COPY 1 #define HARD_COPY 2 #define VERY_SLOW 0 #define SLOW 1 #define FAST 2 #define VERY_FAST 3 #define SUPER_FAST 4 #define ULTRA_FAST 5 #define CODE 1 #define DECODE 2 #define CODELIST 3 /*Identity measure*/ #define UNGAPED_POSITIONS 1 #define ALIGNED_POSITIONS 2 #define AVERAGE_POSITIONS 3 #define NOMATRIX NULL #define NOGROUP NULL #define NOALN NULL /*SIZE DEFINITIONS*/ #define SIZE_OF_INT 10 #define UNDEFINED FORBIDEN #define UNDEFINED_INT UNDEFINED #define UNDEFINED_FLOAT UNDEFINED #define UNDEFINED_DOUBLE UNDEFINED #define UNDEFINED_CHAR 125 #define UNDEFINED_SHORT -125 #define UNDEFINED_2 0 #define UNDEFINED_RESIDUE '>' #define FACTOR 1 #define MAX_N_SEQ 1 #define MAX_N_ALN 1 #define MAX_LEN_ALN 1 #define MAX_N_LIST 100 #define COMMENT_SIZE 1000 #define MAXNAMES 100 #define FILENAMELEN 500 /* Max. file name length */ #define MAX_N_PARAM 2000 #define MAX_PARAM_LEN 200 #define MAX_LINE_LENGTH 10000 #define ALN_LINE_LENGTH 50 #define SHORT_STRING 10 #define STRING 300 #define LONG_STRING 1000 #define VERY_LONG_STRING 10000 #define AA_ALPHABET "acdefghiklmnpqrstvwy-ACDEFGHIKLMNPQRSTVWY" #define DNA_ALPHABET "AGCTUNRYMKSWHBVD-agctunrymkswhbvd" #define RNAONLY_ALPHABET "Uu" #define BLAST_AA_ALPHABET "arndcqeghilkmfpstwyvbzx*" #define NAMES_ALPHABET "1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_|�-!%@&#-+=." #define SIZEOF_AA_MAT 60 #define GAP_LIST "-.#*~" #define SSPACE " " #define MATCH 1 #define UNALIGNED 2 #define GAP 3 #define MNE 3 #define CODE4PROTEINS 10 #define CODE4DNA 20 #define STOCKHOLM_CHAR 'z' #define STOCKHOLM_STRING "z" /*CODE SHORT CUTS*/ /*1-COMMAND LINE PROCESSING*/ #define GET_COMMAND_LINE_INFO ((strncmp ( argv[1], "-h",2)==0)||(strncmp ( argv[1], "-man",4)==0)||(strncmp ( argv[1], "-",1)!=0)) #define NEXT_ARG_IS_FLAG ((argc<=(a+1)) ||(( argv[a+1][0]=='-') && !(is_number(argv[a+1])))) /*UTIL MACROS*/ #define BORDER(p1,l1,p2,l2) ((p1==0 || p2==0 || p1==l1 || p2==l2)?1:0) #define GET_CASE(f,c) ((f==UPPER_CASE)?toupper(c):((f==LOWER_CASE)?tolower(c):c)) #define SWAP(x,y) {x=x+y;y=x+y; x=y-x; y=y-2*x;} #define SWAPP(x,y,tp) {tp=y;y=x;x=tp;} #define MAX(x, y) (((x) >(y)) ? (x):(y)) #define MAX2(x, y) (((x) >(y)) ? (x):(y)) #define MAX3(x,y,z) (MAX(MAX(x,y),z)) #define MAX4(a,b,c,d) (MAX(MAX(a,b),MAX(c,d))) #define MAX5(a,b,c,d,e) (MAX2((MAX3(a,b,c)),(MAX2(d,e)))) #define MAX6(a,b,c,d,e,f) (MAX2((MAX3(a,b,c)),(MAX3(c,d,e)))) #define MIN(x, y) (((x) <(y)) ? (x):(y)) #define FABS(x) ((x<0)?(-x):(x)) #define is_defined(x) ((x==UNDEFINED)?0:1) #define a_better_than_b(x,y,m) ((m==1)?(((x)>(y))?1:0):(((x)<(y))?1:0)) #define is_in_range(x,min,max) ((x>=min && x<=max)?1:0) /*#define bod_a_b(x,y,m) ((m==1)?(MAX((x),(y))):(MIN((x),(y)))) #define bo_a_b(x,y,m) ((x==UNEFINED)?y:((y==UNDEFINED)?x:bod_a_b(y,y,m))) #define best_of_a_b(x,y,m) ((x==UNDEFINED && y==UNDEFINED)?(UNDEFINED):(bo_a_b(x,y,m))) */ #define DIE(x) HERE(x);exit(0); #define best_of_a_b(x,y,m) ((m==1)?(MAX((x),(y))):(MIN((x),(y)))) #define strm(x,y) ((vstrcmp((x),(y))==0)?1:0) #define strnm(x,y,n) ((vstrncmp((x),(y),(n))==0)?1:0) #define strm2(a,b,c) (strm(a,b) || strm(a,c)) #define strm3(a,b,c,d) (strm2(a,b,c) || strm(a,d)) #define strm4(a,b,c,d,e) (strm2(a,b,c) || strm2(a,d,e)) #define strm5(a,b,c,d,e,f) (strm2(a,b,c) || strm3(a,d,e,f)) #define strm6(a,b,c,d,e,f,g) (strm3(a,b,c,d) || strm3(a,e,f,g)) #define declare_name(x) (x=(char*)vcalloc (MAX(FILENAMELEN,L_tmpnam)+1, sizeof (char))) #define is_parameter(x) (x[0]=='-' && !isdigit(x[1])) /*Freing functions*/ #define free_2(a, b) free(a);free(b) #define free_1(a) free(a) #define free_3(a, b, c) free_2(a,b);free_1(c) #define free_4(a, b, c,d) free_2(a,b);free_2(c,d) #define free_5(a, b, c,d,e) free_3(a,b,e);free_2(c,d) #define free_6(a, b, c,d,e,f) free_3(a,b,e);free_3(c,d,f) #define free_7(a, b, c,d,e,f,g) free_3(a,b,e);free_4(c,d,f,g) /*2-FILE PARSING*/ #define SEPARATORS "\n \t,;" #define LINE_SEPARATOR "\n#TC_LINE_SEPARATOR\n" #define TC_REC_SEPARATOR "#### TC REC SEPARATOR ###" /*END 1-*/ /*WIDOWS/UNIX DISTINCTIONS #if defined(_WIN32) || defined(__WIN32__) || defined(__WINDOWS__) || defined(__MSDOS__) || defined(__DOS__) || defined(__NT__) || defined(__WIN32__) #define WIN32 #define TO_NULL_DEVICE " >nul" #define NULL_DEVICE "nul" #define CWF "/" #else #define TO_NULL_DEVICE " >/dev/null 2>&1" #define NULL_DEVICE "/dev/null" */ #if defined(_WIN32) || defined(__WIN32__) || defined(__WINDOWS__) || defined(__MSDOS__) || defined(__DOS__) || defined(__NT__) || defined(__WIN32__) #define WIN32 #define TO_NULL_DEVICE " >>t_coffee.log" #define NULL_DEVICE "t_coffee.log" #define CWF "/" /*ClustalW Flag*/ #else #define TO_NULL_DEVICE " >>/dev/null 2>&1" #define NULL_DEVICE "/dev/null" #define CWF "-" /*ClustaW Flag*/ #endif /*Generic Data*/ #define EMAIL "cedric.notredame@gmail.com" #define URL "http://www.tcoffee.org" #define PERL_HEADER "#!/usr/bin/env perl" //Optimize the Score Computation in DP #define TC_SCORE_2(x,y) (SCORE_K*CL->M[Aln->seq_al[l_s[0][0]][x]-'A'][Aln->seq_al[l_s[1][0]][y]-'A']-SCORE_K*CL->nomatch) #define TC_SCORE_N(x,y) ((CL->get_dp_cost)(Aln, pos, ns[0], l_s[0], x, pos, ns[1], l_s[1], y, CL)) #define TC_SCORE(x,y) ((CL->get_dp_cost==slow_get_dp_cost && CL->evaluate_residue_pair==evaluate_matrix_score && ns[0]+ns[1]==2 && x>=0 && j>=0)? (TC_SCORE_2(x,y)):(TC_SCORE_N(x,y))) #define NULL_2 NULL,NULL #define NULL_3 NULL_2,NULL #define NULL_4 NULL_2,NULL_2 #define NULL_5 NULL_3,NULL_2 #define NULL_6 NULL_4,NULL_2 #define NULL_7 NULL_5,NULL_2 #endif // -- COFFEE_DEFINES_H