JWS-112 Bumping version of T-Coffee to version 11.00.8cbe486.
[jabaws.git] / binaries / src / tcoffee / t_coffee_source / util_lib / util_constraints_list.h
diff --git a/binaries/src/tcoffee/t_coffee_source/util_lib/util_constraints_list.h b/binaries/src/tcoffee/t_coffee_source/util_lib/util_constraints_list.h
new file mode 100644 (file)
index 0000000..3af539f
--- /dev/null
@@ -0,0 +1,720 @@
+/******************************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*******************************/
+
+#define SEQ2 0
+#define R2   1
+#define WE   2
+#define CONS 3
+#define MISC 4
+#define SEQ1 5
+#define R1   6
+#define INDEX 7
+
+#define ICHUNK 5
+
+#define LIST_N_FIELDS 7
+#define CLIST_TYPE int
+
+/**
+ * \file util_constraints_list.h
+ * Introduces the ::Constraint_list and other important structs.
+ *
+ * Ignore the function definitions in here because they are not complete
+ * (in fact, not all functions are defined in the header file).
+ *
+ * \attention For functions, see util_constraints_list.c!
+ */
+
+/*********************************************************************************************/
+/*                                                                                           */
+/*         FUNCTIONS Typedef                                                                 */
+/*                                                                                           */
+/*********************************************************************************************/
+typedef int (*Profile_cost_func) (int*, int *,struct Constraint_list *);
+typedef int (*Col_cost_func)(Alignment*, int **, int, int*, int, int **, int, int*, int, struct Constraint_list *);
+typedef int (*Pair_cost_func)(struct Constraint_list *, int, int, int, int);
+typedef int (*Pwfunc) (Alignment *, int*, int **,struct Constraint_list *);
+
+/*********************************************************************************************/
+/*                                                                                           */
+/*         STRUCTURES FOR PDB ANALYSIS                                                       */
+/*                                                                                           */
+/*********************************************************************************************/
+typedef struct
+    {
+      char *use_seqan;
+}
+TC_param;
+typedef struct
+    {
+      char blast_server[FILENAMELEN+1];
+      char db[FILENAMELEN+1];
+      int min_cov;
+      int min_id;
+      int max_id;
+}
+Blast_param;
+
+typedef struct
+{
+      int   n_excluded_nb;
+      
+      float similarity_threshold;
+      float rmsd_threshold;
+      float md_threshold;
+      int   distance_on_request;
+      char  *comparison_io;
+      int    print_rapdb;
+      float maximum_distance;/*Diameter of the bubble used to identify the Calpha Neighborhood*/
+      int   N_ca;            /*Number of Calpha to be looked at on both side*/
+      float max_delta ;      /*Maximum value for delta to be positive*/
+      char *local_mode;
+      int   scale;             /*Value substracted to the pdb score in the bubble mode*/
+      int   n_extra_param;
+      char **extra_param;
+      char  *evaluate_mode;
+      char  *color_mode;
+      float filter;
+      int filter_aln;
+      int irmsd_graph;
+      int nirmsd_graph;
+
+
+    }
+Pdb_param;
+
+struct Atom
+{
+      int num;
+      int res_num;/*Residue number from 1 to N*/
+      char res[10];
+      char type[10];
+      float r; //Van Der Wall Radius in Angstrom
+      float  x;
+      float  y;
+      float  z;
+      struct Atom *N;//Next Atom in a Chain of Atoms
+      struct Atom *L;//List of Atoms linked to CA or C3'
+};
+typedef struct Atom Atom;
+
+
+typedef struct
+    {
+
+      Atom*CA;
+      Atom *C;
+      Atom *N;
+      Atom *CB;
+    }
+Amino_acid;
+
+
+typedef struct
+    {
+    /*Distances used for the Neighbour mode*/
+       int    **nb;       /*Neighbors of each Ca ( sorted by distance) given as atoms*/
+                          /*nb[x][0] contains the number of neighbor atoms*/
+       float  **d_nb;     /* contains the distances between atom y=nb[x][5] and Ca x*/
+                          /* !!!d_nb[x][0] is empty, the array starts at +1 to folow nb*/
+       int max_nb;        /* Largest neigborhood*/
+}
+Struct_nb;
+
+typedef struct
+    {
+
+       int   len;         /*Number of Calpha Carbons*/
+       int   n_atom;      /*Number of atoms*/
+       char  *name;       /*Name of the sequence*/
+       char  *seq;        /*Sequence ( Complete)*/
+       Atom  **structure; /*Atoms*/
+        Atom  **ca;        /*List of pointers to the Calpha Atoms from 0 to N-1*/
+        Amino_acid **peptide_chain;/*List of pointers to the Calpha Atoms from 0 to N-1*/
+
+
+        Struct_nb *Chain;
+        Struct_nb *Bubble;
+        Struct_nb *Transversal;
+
+        float ** ca_dist;
+       Pdb_param *pdb_param;
+}
+
+Ca_trace;
+/*********************************************************************************************/
+/*                                                                                           */
+/*         MOCA: Data structure for domains and alignments                                   */
+/*                                                                                           */
+/*********************************************************************************************/
+struct Moca
+{
+  /*Normalisation factor: value by which each constraint weight is decreased*/
+      int moca_scale;
+  /*Functions used for domain extraction:*/
+      /*Function for evaluating the score of a domain: returns 0 if not acceptable, value if OK*/
+      int (*evaluate_domain)(Alignment*,struct Constraint_list *);
+      int moca_threshold;
+
+      /*Function for hiding previously used residues*/
+      int  ** (*cache_cl_with_domain)(Alignment*, struct Constraint_list *);
+      int  **forbiden_residues; /*List of residues already used for domain construction*/
+
+
+      /*Function for trunkating the result into a non-overlapping alignment*/
+      Alignment* (*make_nol_aln)(Alignment*, struct Constraint_list *);
+
+      /*Parameters Coordinates of the first motif to extract*/
+      int moca_start;
+      int moca_len;
+      int moca_interactive;
+
+};
+typedef struct Moca Moca;
+/*********************************************************************************************/
+/*                                                                                           */
+/*         CONSTRAINT LISTS                                                                  */
+/*                                                                                           */
+/*********************************************************************************************/
+struct Distance_matrix
+{
+  char mode[100];
+  char sim_mode[100];
+  char nseq;
+  int     **similarity_matrix; /*Pairwise ID levels: 1-10000*/
+  int     **score_similarity_matrix; /*Pairwise ID levels: 1-10000*/
+  int     **distance_matrix; /*Pairwise ID levels: 1-10000*/
+};
+typedef struct Distance_matrix Distance_matrix;
+
+
+/**
+ * The central data structure (library) containing nearly all information to produce an alignment.
+ *
+ * \todo Document this
+ *
+ */
+struct Constraint_list
+    {
+      /*In Case of Modif, synchronize with:
+               util_declare/declare_constraint_list
+               util_declare/cache_dp_value4constraint_list
+               util_declare/duplicate_constraint_list
+               util_declare/free_constraint_list
+      */
+
+      //Generic parameters
+      TC_param *TC;
+
+      int copy_mode;
+      struct Constraint_list *pCL;
+
+      /**
+       * ::Sequence object, containing several sequences and parameters.
+       */
+      Sequence *S;
+      int *master; //Sequences used as master sequences
+      int o2a_byte; // number of one to all provided in one go.
+      Sequence *STRUC_LIST; /*Name of the sequences with a Structure*/
+      char align_pdb_param_file[FILENAMELEN+1];
+      char align_pdb_hasch_mode[FILENAMELEN+1];
+
+
+      Weights  *W;         /*Sequence Weights*/
+      Distance_matrix *DM; /*Accurate Distance Matrix*/
+      Distance_matrix *ktupDM; /*Fast Distance Matrix*/
+      Fname *RunName;
+
+      int *translation;
+      char **  out_aln_format;
+      int    n_out_aln_format;
+
+
+      /*Packing Sequence: To use with domain analysis*/
+      int **packed_seq_lu;
+
+      /*DATA*/
+      FILE *fp;           /*File used for i/o if disk being used*/
+      //int *L;            /*Array used for storing Lib if mem being used*/
+      int **M;            /*substitution matrix*/
+      char rna_lib[FILENAMELEN+1];  /*name of a file containing the RNA libraries*/
+
+      /*List Information*/
+      int ne;             /*Number of elements in the list*/
+      char list_name[1000];    /*Name of the list*/
+      int  entry_len;     /*Size of an entry in el_size*/
+      size_t el_size;     /*Size of each elements in an entry in bytes*/
+
+      /*Normalisation information*/
+      int normalise;
+      int max_ext_value;                       /**< Maximum sum of edges going out from a single nucleotide. See ::evaluate_constraint_list_reference */
+      int max_value;                           /**< Overall maximum edge constraint. See ::evaluate_constraint_list_reference */
+      int overweight;
+      int filter_lib;                          /**< Threshold to filter the Constraint_list. Is set in ::batch_main. See ::filter_constraint_list */
+
+      /*Pair wise alignment method*/
+      int   pw_parameters_set;
+      int   gop;
+      int   gep;
+      int   f_gop;
+      int   f_gep;
+      int   nm_gop;
+      int   nm_gep;
+
+      int   nomatch;
+
+      int   TG_MODE;
+      int   F_TG_MODE;
+
+      char  dp_mode[FILENAMELEN+1];
+      int   reverse_seq;//Used for HoT
+      int   extend_seq; //Used for RNA or Promoter Alignments
+      int   maximise;
+      char  matrix_for_aa_group[FILENAMELEN+1];
+      char  method_matrix[FILENAMELEN+1];
+      float diagonal_threshold;
+      int ktup;
+      int use_fragments;
+      int fasta_step;
+      int lalign_n_top;
+      int sw_min_dist;
+      char **matrices_list;
+      int n_matrices;
+      char tree_mode[FILENAMELEN+1];
+
+      char distance_matrix_mode[FILENAMELEN+1];
+      char distance_matrix_sim_mode[FILENAMELEN+1];
+
+      Alignment *tree_aln;
+
+      /*Functions used for dynamic programming and Evaluation*/
+      int no_overaln;
+
+      Col_cost_func get_dp_cost;                       /**< Function for evaluating the cost of a column*/
+      Profile_cost_func profile_mode;
+      char profile_comparison [FILENAMELEN+1];
+
+      Pair_cost_func evaluate_residue_pair;    /**< Function for evaluating the cost of a pair of residues */
+      Pwfunc pair_wise;                                        /**< Function for making dynamic programming*/
+
+      /*
+      int (*get_dp_cost)(Alignment*, int **, int, int*, int, int **, int, int*, int, struct Constraint_list *);
+      int (*evaluate_residue_pair)(struct Constraint_list *, int, int, int, int);
+      int (*pair_wise)(Alignment *, int*, int **,struct Constraint_list *);
+      */
+
+      int weight_field;
+      int max_n_pair; /**< Maximum number of pairs when aligning two profiles*/
+
+      /*Extend a sequence against itself*/
+
+      /*Threading parameters*/
+      Blast_param *Prot_Blast;
+      Blast_param *Pdb_Blast;
+      Blast_param *DNA_Blast;
+      /*Split parameters*/
+      int split;
+      int split_nseq_thres;
+      int split_score_thres;
+      /*Check Structural Status*/
+      int check_pdb_status;
+      /*log*/
+      char method_log[1000];
+      char evaluate_mode[1000];
+      char method_evaluate_mode[100];
+      /*Gene Prediction Parameter*/
+      char genepred_score[100];
+
+      /*Parameters for domain extraction*/
+      Moca *moca;
+      /*Functions for hiding forbiden pairs of residues*/
+      int ****forbiden_pair_list;     /* pair_list[S1][S2][L1][L2]=1 ->forbiden*/
+      /* pair_list[S1][S2][L1][L2]=0 ->allowed*/
+      /* pair_list[S1][S2][L1]=NULL  ->all pairs S1L1, S2 allowed */
+      /* S-> sequences, 0..N   */
+      /* L-> residues , 1..L-1 */
+
+      /*extention properties:  copy*/
+      int *seq_for_quadruplet;
+      int nseq_for_quadruplet;
+
+      /*extention properties: Do Not copy*/
+      int extend_jit;               /*Extend only on request*/
+      int extend_threshold;         /*Do not extend pairs below the Theshold*/
+      int do_self;                  /*Extend a sequence against itself*/
+      char extend_clean_mode[100];
+      char extend_compact_mode[100];
+
+      /*Lookup table parameteres*/
+      /* !!!!!do not copy in duplication*/
+      /*Residue Index contains residue_index[nseq][seq_len][0]->number of links*/
+      /*[seq][res][x  ]->target seq (0->N-1)*/
+      /*[seq][res][x+1]->traget res (1->len*/
+      /*[seq][res][x+2]->target weight */
+      /*It is automatically recomputed when L residue_indexed is set to 0*/
+
+      int residue_indexed;
+
+      /**
+       * Central structure containing the constraints/edges between residues.
+       *
+       * The residue index bla bla bla
+       * \todo document the residue index!
+       */
+      int ***residue_index;
+      int ** freeze;
+      int residue_field;
+
+      /*Index of the pairs of sequences within L*/
+      int seq_indexed;
+      int **start_index;
+      int **end_index;
+      int max_L_len;
+      int chunk;
+
+
+
+      /*PDB STRUCTURE ALIGNMENTS*/
+      Ca_trace ** T;   /*This structure contains the PDB trace for sequences with a known Struc T[Nseq]*/
+
+      /*MISC*/
+      int cpu;
+      FILE *local_stderr;
+      char  multi_thread[100];
+      char  lib_list[FILENAMELEN+1];
+      char *comment;
+};
+
+typedef struct Constraint_list Constraint_list;
+
+struct TC_method
+{
+
+  char executable[FILENAMELEN+1];
+  char executable2[FILENAMELEN+1];
+  char in_flag[FILENAMELEN+1];
+  char in_flag2[FILENAMELEN+1];
+  char out_flag[FILENAMELEN+1];
+  char aln_mode[FILENAMELEN+1];
+  char out_mode[FILENAMELEN+1];
+  char seq_type[FILENAMELEN+1];
+  char weight[FILENAMELEN+1];
+  char matrix[FILENAMELEN+1];
+  int gop;
+  int gep;
+  int minid;
+  int maxid;
+  char param[1000];
+  char param1[1000];
+  char param2[1000];
+  int extend_seq;
+  int reverse_seq;
+  Constraint_list *PW_CL;
+};
+typedef struct TC_method TC_method;
+
+
+
+
+
+/**
+ * @cond INCLUDE_WITH_DOXYGEN
+ *
+ * Doxygen:
+ *
+ * Do not document these functions in the *.h file.
+ *
+ * They will be documented in the *.c file.
+ *
+ *
+ */
+
+
+
+/*********************************************************************/
+/*                                                                   */
+/*                         PRODUCE IN LIST                             */
+/*                                                                   */
+/*                                                                   */
+/*********************************************************************/
+Constraint_list *produce_list ( Constraint_list *CL, Sequence *S, char * method,char *weight,char *mem_mode);
+Job_TC* method2job_list ( char *method, Sequence *S,char *weight, char *lib_list, Distance_matrix *DM, Constraint_list *CL);
+
+Job_TC *job_list2multi_thread_job_list (Job_TC* ojob, char *mt, Constraint_list *CL);
+Job_TC *retrieve_lib_job ( Job_TC *job);
+Job_TC *submit_lib_job ( Job_TC *job);
+int add_method_output2method_log (char *l, char *command,Alignment *A, Constraint_list *CL, char *iofile);
+
+int check_seq_type (TC_method *M, char *slist,Sequence *S);
+int check_profile_seq_type (Sequence *S, int i, char t);
+char **method_list2method4dna_list ( char **list, int n);
+int is_in_pre_set_method_list (char *fname);
+char *** display_method_names (char *mode, FILE *fp);
+
+char *method_name2method_file (char *method);
+char *make_aln_command(TC_method *m, char *seq, char *aln);
+struct TC_method* method_file2TC_method ( char *fname);
+char *method_file_tag2value (char *method, char *tag);
+int TC_method2method_file( struct TC_method*, char *fname );
+/*********************************************************************/
+/*                                                                   */
+/*                         WRITE IN LIST                             */
+/*                                                                   */
+/*                                                                   */
+/*********************************************************************/
+Constraint_list *  empty_constraint_list (Constraint_list *CL);
+Constraint_list *  unfreeze_constraint_list (Constraint_list *CL);
+Constraint_list *  freeze_constraint_list (Constraint_list *CL);
+Constraint_list *  undump_constraint_list (Constraint_list *CL, char *file);
+int   dump_constraint_list (Constraint_list *CL, char *file,char *mode);
+int   safe_dump_constraint_list (Constraint_list *CL, char *file,char *mode, Sequence *RS);
+FILE* display_constraint_list (Constraint_list *CL, FILE *fp, char *tag);
+
+
+Constraint_list *index_constraint_list ( Constraint_list *CL);
+Constraint_list *index_res_constraint_list ( Constraint_list *CL, int field);
+Constraint_list * progressive_index_res_constraint_list ( Alignment *A, int *ns, int **ls, Constraint_list *CL);
+char ** reindex_constraint_list (char **profile, int np,char **list, int *inL, Sequence *S);
+/*********************************************************************/
+/*                                                                   */
+/*                         ENTRY MANIPULATION                        */
+/*                                                                   */
+/*                                                                   */
+/*********************************************************************/
+Constraint_list * add_list_entry2list (Constraint_list *CL, int n_para, ...);
+Constraint_list * evaluate_constraint_list_reference ( Constraint_list *CL);
+
+int CLisCompacted (Constraint_list *CL, char *t);
+int checkCL( Constraint_list *CL, char *t);
+Constraint_list *add_entry2list ( CLIST_TYPE *entry, Constraint_list *CL);
+Constraint_list *add_entry2list2 ( CLIST_TYPE *entry, Constraint_list *CL);
+int *extract_entry (Constraint_list *CL);
+/*********************************************************************/
+/*                                                                   */
+/*                         LIST EXTENTION                            */
+/*                                                                   */
+/*                                                                   */
+/*********************************************************************/
+Constraint_list *extend_list_pair (Constraint_list *CLin,char *store_mode, int s1, int s2);
+Constraint_list *extend_list (Constraint_list *CLin, char *store_mode,char *clean_mode, char *compact_mode,int do_self, Sequence *SUBSET);
+void get_bounds (Constraint_list *CL, int s1, int s2, int *start, int *end);
+int ** fill_pos_matrix (Constraint_list *CL, int beg, int end, int slen, int **pos, int *len, int mirrored);
+
+/*********************************************************************/
+/*                                                                   */
+/*                         SEARCH IN LIST (ARRAY AND FILE)           */
+/*                                                                   */
+/*                                                                   */
+/*********************************************************************/
+FILE * compare_list (FILE *OUT, Constraint_list *CL1,Constraint_list *CL2);
+//CLIST_TYPE *search_in_list_constraint(int *key, int k_len, int **L, int ne, int ***start_index, int ***end_index);
+CLIST_TYPE *main_search_in_list_constraint ( int *key,int *p,int k_len,Constraint_list *CL);
+Constraint_list *sort_constraint_list_inv (Constraint_list *CL, int start, int len);
+Constraint_list *invert_constraint_list (Constraint_list *CL, int start,int len);
+Constraint_list * sort_constraint_list (Constraint_list *CL, int start, int len);
+Constraint_list * sort_constraint_list_on_n_fields (Constraint_list *CL, int start, int len, int first_field, int n_fields);
+
+/*********************************************************************/
+/*                                                                   */
+/*                         INPUT/OUTPUT                              */
+/*                                                                   */
+/*                                                                   */
+/*********************************************************************/
+Constraint_list* read_n_constraint_list(char **fname,int n_list, char *in_mode,char *mem_mode,char *weight_mode,char *type, FILE *local_stderr, Constraint_list *CL, char *seq_source); /**< See util_constraints_list.c::read_n_constraint_list */
+Constraint_list* read_constraint_list(Constraint_list *CL,char *fname,char *in_mode,char *mem_mode,char *weight_mode);
+Constraint_list * read_constraint_list_raw_file(Constraint_list *CL, char *fname);
+
+int        read_cpu_in_n_list(char **fname, int n);
+Sequence *precompute_blast_db (Sequence *S, char **ml, int n);
+int read_seq_in_list ( char *fname,  int *nseq, char ***sequences, char ***seq_name, Genomic_info **genome_co);
+
+Sequence * read_seq_in_n_list(char **fname, int n, char *type, char *SeqMode);
+
+int        read_cpu_in_list ( char *fname);
+int ** read_list ( char *fname, int **list,int *ne, int *nseq, int *cpu, char ***sequences, char ***seq_name);
+
+char * expand_constraint_list_file ( char *file);
+Constraint_list * read_constraint_list_file(Constraint_list *CL, char *fname);
+Constraint_list * fast_read_constraint_list_file(Constraint_list *CL, char *fname);
+
+/*********************************************************************/
+/*                                                                   */
+/*                         EXTENDED LIST OUTPUT                      */
+/*                                                                   */
+/*                                                                   */
+/*********************************************************************/
+FILE * save_extended_constraint_list      (  Constraint_list *CL, char *mode, FILE *fp) ;
+FILE * save_extended_constraint_list_pair (  Constraint_list *CL, char *mode, char* seq1, char * seq2,FILE *fp);
+
+/*********************************************************************/
+/*                                                                   */
+/*                         LIST OUTPUT                               */
+/*                                                                   */
+/*                                                                   */
+/*********************************************************************/
+int constraint_list2raw_file ( Constraint_list *CL, char *fname, char *fmode);
+FILE * save_raw_constraint_list   ( FILE *fp,Constraint_list *CL, int start,int len, int *translation);
+int save_contact_constraint_list (Constraint_list *CL, char *name);
+
+FILE * save_constraint_list ( Constraint_list *CL,int start, int len, char *fname, FILE *fp,char *mode,Sequence *S);
+FILE * save_sub_list_header ( FILE *OUT, int n, char **name, Constraint_list *CL);
+FILE * save_list_header ( FILE *OUT,Constraint_list *CL);
+FILE * save_list_footer (FILE *OUT,Constraint_list *CL);
+FILE * save_constraint_list_ascii ( FILE *OUT,Constraint_list *CL, int start,int len, int *translation);
+FILE * save_constraint_list_bin   ( FILE *OUT,Constraint_list *CL, int start,int len, int *translation);
+
+/*********************************************************************/
+/*                                                                   */
+/*                         LIST CONVERTION                           */
+/*                                                                   */
+/*                                                                   */
+/*********************************************************************/
+Constraint_list * expand_constraint_list (Constraint_list *CL, int T);
+Constraint_list * shrink_constraint_list_indexed (Constraint_list *CL, int T);
+Constraint_list * shrink_constraint_list (Constraint_list *CL);
+Constraint_list * extend_constraint_list ( Constraint_list *CL);
+Constraint_list * relax_constraint_list (Constraint_list *CL);
+Constraint_list * relax_constraint_list_4gp (Constraint_list *CL);
+
+Constraint_list * expand_constraint_list_4gp (Constraint_list *CL, int T);
+
+Constraint_list * constraint_list2sub_constraint_list (Constraint_list *CL, Sequence *SMALL);
+Constraint_list * filter_constraint_list (Constraint_list *CL, int field, int T);
+int constraint_list_is_connected ( Constraint_list *CL);
+int constraint_list2avg ( Constraint_list *CL);
+float constraint_list2connectivity ( Constraint_list *CL);
+
+int constraint_list2fraction_covered ( Constraint_list *CL);
+
+int *seqpair2weight (int s1, int s2, Alignment *A,Constraint_list *CL, char *weight_mode, int *weight);
+Constraint_list *aln_file2constraint_list (char *alname, Constraint_list *CL,char *weight_mode);
+Constraint_list *aln2constraint_list            (Alignment *A, Constraint_list *CL,char *weight_mode);
+Constraint_list *aln2constraint_list_full       (Alignment *A, Constraint_list *CL,char *weight_mode);
+Constraint_list *aln2constraint_list_generic    (Alignment *A, Constraint_list *CL,char *weight_mode, int top);
+
+double **list2mat (Constraint_list *CL,int s1,int s2, double *min, double *max);
+Constraint_list * constraint_list2bin_file(Constraint_list *clist);
+FILE * bin_file2constraint_list ( Constraint_list *CL, FILE *fp, char *name);
+
+int **list2residue_total_weight ( Constraint_list *CL);
+int **list2residue_total_extended_weight ( Constraint_list *CL);
+int **list2residue_partial_extended_weight ( Constraint_list *CL);
+/*******************************************************************************************/
+/*                                                                                         */
+/*                                                                                         */
+/*                              clean functions                                            */
+/*                                                                                         */
+/*                                                                                         */
+/*                                                                                         */
+/*******************************************************************************************/
+Constraint_list *clean ( char *clean_mode,Constraint_list *C,int start, int len);
+Constraint_list * clean_shadow ( Constraint_list *CL, int start, int len);
+
+/*********************************************************************/
+/*                                                                   */
+/*                         LIST FUNCTIONS                            */
+/*                                                                   */
+/*                                                                   */
+/*********************************************************************/
+Constraint_list *merge_constraint_list   ( Constraint_list *SL, Constraint_list *ML, char *mode);
+Constraint_list *modify_weight( Constraint_list *CL,int start, int end,  char *modify_mode);
+Constraint_list *compact_list (Constraint_list *CL, char *compact_mode);
+Constraint_list *rescale_list_simple (Constraint_list *CL,int start, int len,int new_min, int new_max);
+Constraint_list *rescale_list (Constraint_list *CL,int start, int len,int max1, int max2);
+Constraint_list* filter_list (Constraint_list *CL, int start, int len,int T);
+Constraint_list *undefine_list (Constraint_list *CL);
+int ** seq2defined_residues ( Sequence *S, Constraint_list *CL);
+int ** aln2defined_residues ( Alignment *A, Constraint_list *CL);
+/*********************************************************************/
+/*          DEBUG                                                    */
+/*                                                                   */
+/*********************************************************************/
+void print_CL_mem(Constraint_list *CL, char *function);
+int constraint_list_is_sorted ( Constraint_list *CL);
+void check_seq_pair_in_list(Constraint_list *CL,int seq1, int seq2);
+/******************************************************************/
+/*                    NEW METHODS                                 */
+/*                                                                */
+/*                                                                */
+/******************************************************************/
+
+Constraint_list * align_coding_nucleotides (char *seq, char *method, char *weight, char *mem_mode, Constraint_list *CL);
+/*********************************************************************************************/
+/*                                                                                           */
+/*         FUNCTION FOR PRUNING THE LIST                                                   */
+/*                                                                                           */
+/*********************************************************************************************/
+char * list2prune_list (Sequence *S, int **sm);
+/*********************************************************************************************/
+/*                                                                                           */
+/*         FUNCTION FOR WEIGHTING THE LIST                                                   */
+/*                                                                                           */
+/*********************************************************************************************/
+Constraint_list *weight_constraint_list(Constraint_list * CL, char *seq_weight);
+Weights* compute_t_coffee_weight(Constraint_list * CL);
+Constraint_list *re_weight_constraint_list(Constraint_list * CL,Weights *W);
+Constraint_list *set_weight4constraint_list(Constraint_list * CL,int w);
+
+Distance_matrix *cl2distance_matrix (Constraint_list *CL, Alignment *A,  char *mode, char *sim_mode, int print);
+Distance_matrix *seq2distance_matrix (Constraint_list *CL, Alignment *A,  char *mode, char *sim_mode, int print);
+
+/*********************************************************************************************/
+/*                                                                                           */
+/*         MULTI_THREAD                                                                      */
+/*                                                                                           */
+/*********************************************************************************************/
+int run_multi_thread_file (char *fname, char *config);
+/*********************************************************************/
+/*                                                                   */
+/*                        RNA FUNCTIONS                              */
+/*                                                                   */
+/*                                                                   */
+/*********************************************************************/
+char * seq2rna_lib ( Sequence *S, char *name);
+Constraint_list *read_contact_lib ( Sequence *S, char *fname, Constraint_list *R);
+Constraint_list *rna_lib_extension ( Constraint_list *CL, Constraint_list *R);
+char *** produce_method_file ( char *method);
+/*********************************************************************/
+/*                                                                   */
+/*                        SCALED CONSISTENCY                          */
+/*                                                                   */
+/*                                                                   */
+/*********************************************************************/
+Constraint_list * plib_msa (Constraint_list *CL);
+int cl2worst_seq (Constraint_list *CL, int *list, int n);
+Constraint_list *add_seq2cl(int s, Constraint_list *CL);
+
+
+
+
+/**
+ * Doxygen
+ *
+ * @endcond
+ *
+ */
+