JWS-112 Bumping version of T-Coffee to version 11.00.8cbe486.
[jabaws.git] / binaries / src / tcoffee / t_coffee_source / io_lib_header.h
index dd44ef5..a90db83 100644 (file)
-/*DEBUGGING*/
-/*#include "mshell.h"*/
-/*MEMORY MANAGEMENT*/
-#include <float.h>
-#define MY_EPS 1000*DBL_EPSILON
-//Maximum number of tries for interactibve things
-#define MAX_N_TRIES 3
-
-//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 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=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@europe.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
-typedef struct
-    {
-    char *mode;
-    char *comments;
-    int nseq;
-    char **seq_name;
-    float **PW_SD;
-    float **PW_ID;
-    float *SEQ_W;
-    }Weights;
-
-typedef struct
-    {
-    int **list;
-    int tot_list;
-    int **stem;
-    int tot_stem;
-    int n_fields;
-    int nseq;
-    int *len;
-    int ***struc;
-    struct Sequence *S;  
-    }Structure;
-
-struct Sequence
-    {
-      char **file;          /* file[Nseq][FILENAMELEN] name of the file that contributed each sequence*/
-      char **seq_comment;     /* seq_comment[Nseq][LONG_STRING] comment read in the file */
-      char **aln_comment;  /*id*/
-      char **seq;          /*seq[Nseq][sequence] sequences*/
-      int *len;            /*len[Nseq] length of each sequence*/
-      int max_len;         /*Lenght of the longest seq */
-      int min_len;         /*Length of the shortest seq*/
-      int nseq;            /*nseq*/
-      int max_nseq;        /*Maximum number of sequences in the datastruct*/
-      char **name;         /*name[Nseq][MAXNAMELEN]*/
-      int **dc;         /*coordinates on the disk. Coordinates set if seq[i]==NULL*/
-/*Constraint list*/
-      struct Constraint_list *CL;
-      int contains_gap;   /*set to 1 if gaps are to be kept*/
-      char *type;         /*PROTEIN, DNA*/
-      Weights *W;         /*Associated weights*/
-      char template_file[FILENAMELEN+1];
-      struct Template **T;
-      
-      
-};
-typedef struct Sequence Sequence;
-
-//_E_
-struct Template
-{
-  char seq_type[10];
-  struct X_template *P;//PDB structure
-  struct X_template *F;//RNA secondary structure
-  struct X_template *S;//sequence
-  struct X_template *R;//Profile
-  struct X_template *G;//Genomic structure
-  struct X_template *T;//transmembrane
-  struct X_template *E;//secondary structure
-  struct X_template *U;//Unicode, strings
-  
-  struct X_template *RB;
-};
-typedef struct Template Template;
-//_E_
-struct X_template 
-{
-  char seq_name[FILENAMELEN+1];
-  char template_type[FILENAMELEN+1];
-  char template_format[100];
-  char template_name[FILENAMELEN+1];
-  char template_file[FILENAMELEN+1];
-  
-  struct P_template *VP; 
-  struct F_template *VF;
-  struct S_template *VS;
-  struct R_template *VR;
-  struct G_template *VG;
-  struct T_template *VT;
-  struct E_template *VE;
-  struct U_template *VU;
-  
-  
-};
-typedef struct X_template X_template;
-
-//
-struct P_template
-{
-  char pdb_id[100];
-};
-typedef struct P_template P_template;
-
-//RNA secondary Structure
-struct F_template
-{
-  int l;
-};
-typedef struct F_template F_template;
-
-
-struct S_template
-{
-  Sequence *S;
-};
-typedef struct S_template S_template;
-
-//Prile associated with a sequence
-struct R_template
-{
-  struct Alignment *A;
-};
-typedef struct R_template R_template;
-
-//Genomic Information
-struct G_template
-{
-  Sequence *S;
-};
-typedef struct G_template G_template;
-
-
-struct T_template
-{
-  Sequence *S;
-};
-typedef struct T_template T_template;
-
-//_E_
-struct E_template
-{
-  Sequence *S;
-};
-typedef struct E_template E_template;
-
-struct U_template
-{
-  int *list;
-};
-typedef struct U_template U_template;
-
-
-typedef struct
-    {
-    int max_len;
-    int alp_size;
-    char *alphabet;
-    int **count3;  
-    int **count;
-    int **count2;  
-    }Profile;
-
-struct Alignment
-    {
-/*Size*/
-    int max_len;
-    int min_len;   
-    int *  len;
-      //int *weight;  
-    int declared_len;
-    int max_n_seq;
-    int nseq;
-    int len_aln;
-/*Generic Information*/
-      char *generic_comment;
-/*Sequence Information*/
-    char **file;
-    char **seq_comment;
-    char **aln_comment;
-    char **name;
-      
-    char **expanded_order;
-    char **tree_order;
-    char **seq_al;
-    
-    int  **order;
-    Profile *P;
-    Sequence *S;
-    struct Dp_Result *Dp_result;
-    struct Constraint_list *CL;
-
-    int **seq_cache; /*Contains the index of the residues:
-                      The sequence Numbering is relative to the sequences, and not to the alignmnent
-                      
-                      seq_cache[0][1]=3
-                      indicates that in the aln residue (0)1 corresponds to [order[0][0]][3]
-                      residues: 1...N
-                      Sequences 0...M
-                    */
-    int **cdna_cache; /*Contains the information about wheather a nucleotide is coding or not*/
-                     /*Only defined if used */
-
-
-/*Weight*/   
-      float *col_weight;
-      float *seq_weight;
-      float **res_weight;
-/*Score*/
-    int *  score_seq;
-    int ** score_res;
-    int score_aln;
-    int score;
-    int ibit;  
-    int cpu;
-    int finished;
-
-/*Input/Output Options*/
-    int output_res_num;
-    int residue_case; /*1 for lower, 0 for Upper, 2 for keeping unchanged*/
-      int expand;
-    int output_tm;
-/*Must Not be copied*/
-     int used;
-     int num;     
-     int **pos; 
-/*For linked lists*/      
-    struct Alignment * A;  
-      /*Misc*/
-    int random_tag;
-     
-    };
-    
-typedef struct Alignment Alignment;
-typedef struct
-    {
-    int in_seq;        
-    FILE *fp;
-    int font;
-    int x0;
-    int y0;
-    int x;
-    int y;
-    int n_pages;
-    int max_line_ppage;
-    int n_line;
-    int line;
-    int eop;
-    int in_html_span;
-    char previous_html_color[100];
-   
-    }
-FILE_format;
-
-typedef struct
-    {
-    float r;
-    float g;
-    float b;
-    char html_color[30];
-    char html_color_class[30]; 
-    int ascii_value;
-    }
-Color;
-
-
-Sequence * fill_sequence_struc ( int nseq, char **sequences, char **seq_name);
-Sequence * cw_read_sequences ( char *seq_name);
-Sequence * get_sequence_type (Sequence *S);
-char     * get_array_type (int n, char **s);
-Alignment* get_aln_type (Alignment *A);
-
-char     * get_string_type   (char *string);
-
-char *store_mode (char *val);
-char *retrieve_mode ();
-char *unset_mode ();
-char *set_mode (int mode, char *val);
-
-char *store_seq_type (char *val);
-char *retrieve_seq_type ();
-char *unset_seq_type ();
-char *set_seq_type (int mode, char *val);
-
-void get_sequence (char *seq_file,int *NSEQ, char ***SEQ, char ***SN, int **sl, int *min, int *max);
-
-int ** get_matrix   ( char *name, char *format);
-int ** read_matrice (char *mat_name);
-int **neg_matrix2pos_matrix ( int **matrix);   
-
-
-void   print_aln ( Alignment *B);
-
-int       output_reliability_ps     ( Alignment *B,Alignment *S, char *name);
-int       output_reliability_pdf    ( Alignment *B,Alignment *S, char *name);
-int       output_reliability_html   ( Alignment *B,Alignment *S, char *name);
-int       output_color_ps     ( Alignment *B,Alignment *S, char *name);
-int       output_color_pdf    ( Alignment *B,Alignment *S, char *name);
-int       output_color_html   ( Alignment *B,Alignment *S, char *name);
-int       output_hit_color_html   (Alignment *B, float **ffPScoreTable, int nl, char *name);   //JM_ADD
-void     output_hit_matrix(char *fileName, float **ffpHitScoreMatrix, int nl);         //JM_ADD
-void      get_rgb_values(int val, Color *C);
-int       output_reliability_format ( Alignment *B,Alignment *S, char *name, \
-FILE_format *(*vfopen_format)          ( char *),\
-FILE_format *(*print_format_string)    ( char * ,Color *, Color *, FILE_format*),\
-FILE_format *(*print_format_char)      ( int    ,Color *, Color *, FILE_format*),\
-void         (*get_rgb_values_format)  ( int    ,Color *),\
-FILE_format* (*vfclose_format)         ( FILE_format *));
-int       output_score_format ( Alignment *B,Alignment *S, char *name, \
-FILE_format *(*vfopen_format)          ( char *),\
-FILE_format *(*print_format_string)    ( char * ,Color *, Color *, FILE_format*),\
-FILE_format *(*print_format_char)      ( int    ,Color *, Color *, FILE_format*),\
-void         (*get_rgb_values_format)  ( int    ,Color *),\
-FILE_format* (*vfclose_format)         ( FILE_format *));
-
-
-FILE_format * print_ps_string      ( char *s , Color *box, Color *ink, FILE_format *f);
-FILE_format * print_ps_char        ( int   c,    Color *box, Color *ink, FILE_format *f);
-
-
-
-void get_rgb_values_ps ( int val, Color *C);
-FILE_format* vfopen_ps ( char *name);
-FILE_format* vfclose_ps ( FILE_format *fps);
-
-FILE_format *print_html_string( char *s, Color *box, Color *ink, FILE_format *fhtml);
-FILE_format * print_html_char ( int c, Color *box, Color *ink, FILE_format *f);
-void get_rgb_values_html ( int val, Color *C);
-FILE_format* vfopen_html ( char *name);
-FILE_format* vfclose_html ( FILE_format *fhtml);
-
-int       output_reliability_ascii     ( Alignment *B,Alignment *S, char *name);
-int       output_color_ascii           ( Alignment *B,Alignment *S, char *name);
-
-FILE_format *print_ascii_string( char *s, Color *box, Color *ink, FILE_format *fascii);
-FILE_format * print_ascii_char ( int c, Color *box, Color *ink, FILE_format *f);
-void get_rgb_values_ascii ( int val, Color *C);
-
-FILE_format* vfopen_ascii ( char *name);
-FILE_format* vfclose_ascii ( FILE_format *fascii);
-int       output_seq_reliability_ascii     ( Alignment *B,Alignment *S, char *name);
-/*********************CLUSTALW.H*********************************************/
-/****************************************************************************/
-
-   /*
-   Main header file for ClustalW.  Uncomment ONE of the following 4 lines
-   depending on which compiler you wish to use.
-   */
-
-#define VMS 1                 /*VAX or ALPHA VMS */
-
-/*#define MAC 1                 Think_C for MacIntosh */
-
-/*#define MSDOS 1               Turbo C for PC's */
-
-/*#define UNIX 1                Ultrix/Decstation, Gnu C for 
-                                Sun, IRIX/SGI, OSF1/ALPHA */
-
-/***************************************************************************/
-/***************************************************************************/
-
-
-
-
-
-#define MAXTITLES              60      /* Title length */
-
-       
-#define UNKNOWN   0
-#define EMBLSWISS 1
-#define PIR      2
-#define PEARSON   3
-#define GDE              4
-#define CLUSTAL   5    /* DES */
-#define MSF       6 /* DES */
-#define USER      7    /* DES */
-
-#define PAGE_LEN       22   /* Number of lines of help sent to screen */
-
-#ifdef VMS                                             /* Defaults for VAX VMS */
-#define DIRDELIM ']'           /* Last character before file name in full file 
-                                                          specs */
-#define SEQ_MAX_LEN            10000   /* Max Sequence Length */
-#define MAXN           500             /* Max Number of Sequences */
-#define FSIZE       25000   /* Work space for pairwise alignments */
-#define MAXTREE                5000    /* Max Nodes for phylogenetic tree */
-#define LINELENGTH     60  /* Output line length */
-#define GCG_LINELENGTH         50  /* Output line length for GCG output */
-
-#elif MAC
-#define DIRDELIM ':'
-#define SEQ_MAX_LEN            1000
-#define MAXN           30
-#define FSIZE       5000
-#define MAXTREE                1000
-#define LINELENGTH             50
-#define GCG_LINELENGTH         50
-
+/******************************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 IO_LIB_HEADER_H
+#define IO_LIB_HEADER_H
 
-#elif MSDOS
-#define DIRDELIM '\\'
-#define SEQ_MAX_LEN            1300
-#define MAXN           30
-#define FSIZE           5000
-#define MAXTREE                1000
-#define LINELENGTH             50
-#define GCG_LINELENGTH         50
+#include "io_lib/io_structures.h"
+#include "io_lib/io_func.h"
+#include "io_lib/pb_util_read_sequence.h"
+#include "io_lib/tree_util.h"
+#include "io_lib/pb_util_read_sequence2.h"
 
-#elif UNIX
-#define DIRDELIM '/'
-#define SEQ_MAX_LEN            10000
-#define MAXN           500
-#define FSIZE           25000
-#define MAXTREE                5000
-#define LINELENGTH             60
-#define GCG_LINELENGTH         50
 #endif
-
-#define NUMRES 26              /* max size of comparison matrix */
-
-#define INPUT 0
-#define ALIGNED 1
-
-#define LEFT 1
-#define RIGHT 2
-
-#define NODE 0
-#define LEAF 1
-
-#define GAPCOL 32              /* position of gap open penalty in profile */
-#define LENCOL 33              /* position of gap extension penalty in profile */
-
-typedef struct node {          /* phylogenetic tree structure */
-        struct node *left;
-        struct node *right;
-        struct node *parent;
-        float dist;
-        int  leaf;
-        int order;
-        char name[64];
-} stree, *treeptr;
-
-void           *ckalloc(size_t);
-void           * ckvrealloc(void *,size_t);
-void           ckfree(void *);
-
-int readseqs(char *saga_file,char ***SAGA_SEQ, char*** SAGA_NAMES, int ***SAGA_LEN) ;/*first_seq is the #no. of the first seq. to read */
-
-
-typedef struct treesim{
-  float w;
-  float uw;
-  float d;
-  
-  float max_w;
-  float max_uw;
-  float max_d;
-  
-  int rf;
-  int n;//n nodes;
-  int nseq;// nseq in the common subset
-    }Tree_sim;
-
-
-typedef struct tnode *NT_node;
-
-/**
-* Node of a tree
-*/
-typedef struct tnode{
-  int visited;
-  char *name;
-  char *file;
-  
-  ///The parent node
-  NT_node parent;
-  ///Left child node
-  NT_node left;
-  ///Right child node
-  NT_node right;
-  NT_node bot;
-  /// is leaf?
-  int isseq;
-  int seq;
-  int maxnseq;
-  int nseq;
-  
-  ///contains a list of the sequences
-  int *lseq; 
-  ///contains a coded version of the node: 10010101
-  int *lseq2;
-  ///contains distances to the root, in nodes
-  int *idist;
-  ///contains real distances *1000
-  int *ldist;
-  float dist;
-  float bootstrap;
-  float dp;
-  int order;
-  int aligned;
-  ///Number of leave below the considered node
-  int leaf;
-  ///Number of nodes below the considered node
-  int node;
-  int group;
-  float score;
-  int align;
-  char *seqal;
-  int index;
-  int fork;
-    }Treenode;
-
-typedef struct split_struc Split;
-
-typedef struct split_struc{
-  char *split;
-  int n;
-  int tot;
-  float score;
-  char **tlist;//Not used yet
-  Sequence *S;
-  NT_node *L;
-}Split_struc;
-
-NT_node main_prune_tree ( NT_node T, Sequence *S);
-NT_node prune_tree ( NT_node T, Sequence *S);
-/*********************************************************************/
-/*                                                                   */
-/*                                   dpa_tree_manipulation           */
-/*                                                                   */
-/*                                                                   */
-/*********************************************************************/
-char *tree2Ngroup (Alignment *A, NT_node T, int max_n, char *fname, char *mat4dist);
-int tree2group_file ( NT_node T,Sequence *S, int maxnseq, int minsim, char *name);
-
-NT_node seq2dpa_tree  (Sequence *S, char *align_mode);
-NT_node tree2dpa_tree (NT_node T, Alignment *A, char *matrix4distance);
-FILE * tree2group ( NT_node T,Sequence *S,int maxnseq, int mindist,char *name, FILE *fp);
-
-
-NT_node  tree2collapsed_tree (NT_node T, int n, char **string);
-
-/*********************************************************************/
-/*                                                                   */
-/*                                   tree comparison                 */
-/*                                                                   */
-/*                                                                   */
-/*********************************************************************/
-int main_compare_cog_tree (NT_node T1, char *cogfile);
-int main_compare_aln_tree (NT_node T1, Alignment *A, FILE *fp);
-int compare_aln_tree (NT_node T, Alignment *A, int *n, FILE *fp);
-
-int main_compare_splits (NT_node T1, NT_node T2, char *mode, FILE *fp);
-Tree_sim * tree_cmp( NT_node T1, NT_node T2);
-NT_node tree_scan (Alignment *A,NT_node RT, char *pscan, char *ptree);
-
-int print_node_list (NT_node T, Sequence *S);
-NT_node main_compare_trees ( NT_node T1, NT_node T2, FILE *fp);
-NT_node main_compare_trees_list ( NT_node T1, Sequence *S, FILE *fp);
-
-float compare_trees ( NT_node T1, NT_node T2, int nseq, int mode);
-float search_node ( NT_node B, NT_node T, int nseq, int mode);
-float evaluate_node_similarity ( NT_node B, NT_node T, int nseq, int mode);
-
-int compare_node ( int *b1, int *b2, int n);
-void display_node (NT_node N, char *string,int nseq);
-NT_node index_tree_node    (NT_node T);
-NT_node simple_recode_tree (NT_node T, int nseq);
-NT_node recode_tree ( NT_node T, Sequence *S);
-int compare_branch2 ( int *b1, int *b2, int n);
-
-/*********************************************************************/
-/*                                                                   */
-/*                                   FJ_tree Computation             */
-/*                                                                   */
-/*                                                                   */
-/*********************************************************************/
-NT_node similarities_file2tree (char *mat);
-NT_node tree_compute ( Alignment *A, int n, char ** arg_list);
-static NT_node compute_std_tree (Alignment *A, int n, char **arg_list);
-NT_node compute_std_tree_2 (Alignment *A, int **s, char *arg_list);
-NT_node aln2fj_tree(NT_node T, Alignment *A, int limit,char* mode);
-Alignment * filter_aln4tree (Alignment *A, int n,int fg,char* mode);
-
-/*********************************************************************/
-/*                                                                   */
-/*                                   Tree Filters and MAnipulation   */
-/*                                                                   */
-/*                                                                   */
-/*********************************************************************/
-int  tree2star_nodes (NT_node R, int n_max);
-NT_node aln2tree (Alignment *A);
-NT_node reset_boot_tree ( NT_node R, int n);
-NT_node tree_dist2normalized_tree_dist ( NT_node R, float max);
-NT_node reset_dist_tree ( NT_node R, float n);
-NT_node* free_treelist  ( NT_node *R);
-NT_node free_tree  ( NT_node R);
-NT_node realloc_tree( NT_node R, int n);
-NT_node free_tree_node ( NT_node R);
-
-Sequence * tree2seq    (NT_node R, Sequence *S);
-NT_node  rename_seq_in_tree ( NT_node R, char ***list);
-
-NT_node balance_tree (NT_node);
-int tree2nseq ( NT_node R);
-int tree_file2nseq ( char *file);
-
-int tree2nleaf ( NT_node R);
-int tree2nnode ( NT_node R);
-int tree2_nnode_unresolved (NT_node R, int *l);
-
-FILE* display_tree ( NT_node R, int n, FILE *fp);
-void clear_tree (NT_node T);
-int display_leaf ( NT_node T, FILE *fp);
-int display_leaf_below_node ( NT_node T, FILE *fp);
-NT_node display_leaf_nb (NT_node T, int n, FILE *fp, char *name);
-NT_node display_splits (NT_node T,Sequence *S, FILE *fp);
-int tree2split_list (NT_node T, int nseq, int **split_list, int *n);
-
-NT_node reroot_tree ( NT_node TREE, NT_node T);
-NT_node straighten_tree ( NT_node P, NT_node C, float new_dist);
-NT_node unroot_tree ( NT_node T);
-FILE* print_tree_list ( NT_node *T,char *format, FILE *fp);
-FILE* print_tree ( NT_node T,char *format, FILE *fp);
-char *tree2string (NT_node T);
-char *tree2file   (NT_node T, char *name, char *mode);
-
-int print_newick_tree ( NT_node T, char *name);
-FILE * rec_print_tree ( NT_node T, FILE *fp);
-
-
-NT_node find_longest_branch ( NT_node T, NT_node L);
-NT_node shift_root ( NT_node R);
-
-int ** tree2cluster (NT_node T, float thres);
-int ** make_sub_tree_list ( NT_node **T, int nseq, int n_node);
-void make_all_sub_tree_list ( NT_node N, int **list, int *n);
-void make_one_sub_tree_list ( NT_node T, int *list);
-NT_node main_read_tree(char *treefile);
-
-NT_node new_read_tree ( char *teefile);
-NT_node new_get_node (NT_node T, FILE *fp);
-
-
-NT_node** simple_read_tree(char *treefile);
-void free_read_tree (NT_node **BT);
-NT_node** read_tree(char *treefile, int *nnodes,int nseq, char **seq_names);
-FILE * create_linear_tree ( char **name, int n, FILE *fp);
-FILE * create_tree(NT_node ptree, NT_node parent,int *numseq,int  *ntotal,int  *nnodes,NT_node **lu, FILE *fp);
-NT_node declare_tree_node (int nseq);
-void set_info(NT_node p, NT_node parent, int pleaf, char *pname, float pdist, float bootstrap);
-NT_node insert_tree_node(NT_node pptr);
-FILE * skip_space(FILE *fd);
-void create_tree_node(NT_node pptr, NT_node parent);
-float calc_mean(NT_node nptr, float *maxdist, int nseq,NT_node **lu);
-NT_node insert_root(NT_node p, float diff);
-float calc_root_mean(NT_node root, float *maxdist, int neq, NT_node **lu);
-NT_node reroot(NT_node ptree, int nseq, int ntotal, int nnodes, NT_node **lu);
-
-
-Alignment *seq2seq_chain (Alignment *A,Alignment *B, char *arg);
-
-float display_avg_bootstrap ( NT_node T);
-float tree2tot_dist ( NT_node T, int mode);
-int tree2n_branches(NT_node T, int mode);
-int **display_tree_from_node (NT_node T, int up, int down, int **array);
-NT_node tree2node ( char *name, NT_node T);
-NT_node * tree2node_list (NT_node T, NT_node *L);
-NT_node tree2root ( NT_node T);
-int new_tree_sort ( char *name, NT_node T);
-
-
-NT_node split2tree ( NT_node RT,Sequence *LIST, char *param);
-NT_node * read_tree_list (Sequence *S);
-
-int count_groups( Sequence *S, char *s);
-
-Split ** count_splits( NT_node RT, Sequence *S, char *s);
-NT_node *treelist2prune_treelist (Sequence *S, Sequence *TS, FILE *out);
-int** treelist2groups (Sequence *S, Sequence *ST, char *depth, FILE *out);
-int treelist2splits (Sequence *S, Sequence *ST);
-int treelist2leafgroup ( Sequence *S, Sequence *TS, char *taxon);
-int ***tree2dist ( NT_node T, Sequence *S, int ***d);
-int treelist2frame (Sequence *S, Sequence *TS);
-int** treelist2lti ( Sequence *S, Sequence *TS, int nb, FILE *out);
-
-float simple_tree_cmp (NT_node T1, NT_node T2,Sequence *S, int mode);
-
-int treelist2dmat ( Sequence *S);
-NT_node new_declare_tree_node ();
-int count_tree_groups( Sequence *LIST, char *group_file);
-int node_sort ( char *name, NT_node T);
-int    treelist2n (NT_node *L);
-int ** treelist2avg_treecmp (NT_node *L, char *file);
-NT_node treelist2bootstrap ( NT_node *L, char *file);
-NT_node treelist2filtered_bootstrap ( NT_node *L, char *file, int **score,float f);
-
-Sequence * treelist2seq ( Sequence *S);
-Sequence * treelist2sub_seq ( Sequence *S, int f);
-
-int treelist_file2consense (char *tree_file, char *outtree, char *outfile);
-/* General purpose header file - rf 12/90 */
-
-#ifndef _H_general
-#define _H_general
-
-
-
-#define pint int                       /* cast ints in printf statements as pint */
-typedef int Boolean;                   /* Is already defined in THINK_C */
-
-#undef TRUE                                            
-#undef FALSE
-#define TRUE 1
-#define FALSE 0
-
-#define EOS '\0'                               /* End-Of-String */
-#define MAXLINE 512                    /* Max. line length */
-
-
-#endif /* ifndef _H_general */
-/******************************COPYRIGHT NOTICE*******************************/
-/*© Centro de Regulacio Genomica */
-/*and */
-/*Cedric Notredame */
-/*Fri Feb 18 08:27:45 CET 2011 - Revision 596. */
-/*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*******************************/