JWS-112 Bumping version of T-Coffee to version 11.00.8cbe486.
[jabaws.git] / binaries / src / tcoffee / t_coffee_source / util_lib / aln_convertion_util.h
1 /******************************COPYRIGHT NOTICE*******************************/
2 /*  (c) Centro de Regulacio Genomica                                                        */
3 /*  and                                                                                     */
4 /*  Cedric Notredame                                                                        */
5 /*  12 Aug 2014 - 22:07.                                                                    */
6 /*All rights reserved.                                                                      */
7 /*This file is part of T-COFFEE.                                                            */
8 /*                                                                                          */
9 /*    T-COFFEE is free software; you can redistribute it and/or modify                      */
10 /*    it under the terms of the GNU General Public License as published by                  */
11 /*    the Free Software Foundation; either version 2 of the License, or                     */
12 /*    (at your option) any later version.                                                   */
13 /*                                                                                          */
14 /*    T-COFFEE is distributed in the hope that it will be useful,                           */
15 /*    but WITHOUT ANY WARRANTY; without even the implied warranty of                        */
16 /*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the                         */
17 /*    GNU General Public License for more details.                                          */
18 /*                                                                                          */
19 /*    You should have received a copy of the GNU General Public License                     */
20 /*    along with Foobar; if not, write to the Free Software                                 */
21 /*    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA             */
22 /*...............................................                                           */
23 /*  If you need some more information                                                       */
24 /*  cedric.notredame@europe.com                                                             */
25 /*...............................................                                           */
26 /******************************COPYRIGHT NOTICE*******************************/
27 typedef struct
28     {
29       int   p1;
30       int   p2;
31       int   p3;
32       int   p4;
33       int   t;
34       int   f;
35       char  mode[20];//lower, unalign
36       char  model[20];//fsa1 fsa2
37 }
38 OveralnP;
39
40 //RNA
41 Constraint_list * seq2contacts (Sequence *S, Sequence *T,Constraint_list *CL, char *mode);
42 Constraint_list * pdb2contacts (Sequence *S, Sequence *T,Constraint_list *CL, char *mode, float maxD);
43 int vienna2template_file (char *outfile, Sequence *R, Sequence *ST);
44 Constraint_list * vienna2tc_lib (char *outfile, Sequence *R, Sequence *ST);
45
46
47 int ** alifold_list2cov_list (Alignment *A, int **list);
48 int ** update_RNAfold_list (Alignment *A, int **pos, int s, int **l);
49 int ** vienna2list ( char *seq);
50 Alignment *compare_RNA_fold ( Alignment *A, Alignment *B);
51 Alignment *trim_RNA (Alignment *RNA, Sequence *ST, int max);
52 Alignment *sp3_evaluate (Alignment *A, Sequence *S);
53 Alignment *alifold2analyze (Alignment *A, Alignment *ST, char *mode);
54 Alignment *alifold2cov_aln (Alignment *A, int **l, int ug);
55 Alignment *alifold2cov_stat (Alignment *A, int **l, int ug);
56 Alignment *alifold2cov_list (Alignment *A, int **l, int ug);
57 Alignment *alifold2cov_cache (Alignment *inA,  int **l, int ug);
58
59
60 Alignment *add_alifold2aln  (Alignment *A, Alignment *ST);
61 Alignment *aln2alifold(Alignment *A);
62
63 //end
64 Alignment * aln2bootstrap (Alignment *A, int n);
65 Alignment * aln2sample    (Alignment *A, int n);
66 Alignment * aln2random_aln(Alignment *A, char *mode);
67 Alignment * aln2scale     (Alignment *A, char *offset);
68 Alignment * aln2case_aln  (Alignment *A, char *upper, char *lower);
69 Alignment * aln2gap_cache (Alignment *A, int val);
70 Alignment * score_aln2score_ascii_aln (Alignment *A, Alignment *C);
71 int **aln2resindex ( Alignment *A, Alignment *B, FILE *fp);
72 int **index_seq_res      ( Sequence *S1, Sequence *S2, int **name_index);
73 int **index_seq_name ( Sequence *S1, Sequence *S2);
74 int *get_name_index (char **l1, int n1, char **l2, int n2);
75
76 int* get_res_index (char *seq1, char *seq2);
77 int * pos2list (int * pos, int len, int *nl);
78   int *list2pos (int *list, int nl, int len);
79
80
81 int change_residue_coordinate ( char *in_seq1, char *in_seq2, int v);
82
83 int ** minimise_repeat_coor (int **coor, int nseq, Sequence *S);
84 int ** get_nol_seq( Constraint_list *CL,int **coor, int nseq, Sequence *S);
85
86
87 int compare_pos_column( int **pos1,int p1, int **pos2,int p2, int nseq);
88 char  * seq2alphabet (Sequence *S);
89 double* seq2diaa (char *buf, double *v);
90 double* seq2triaa(char *buf, double *v);
91 double* seq2tetraa(char *buf, double *v);
92
93 char *aln2alphabet (Alignment *A);
94 char *array2alphabet (char **array, int n, char *forbiden);
95
96
97
98
99 //TM Predictions
100 char* alnpos2hmmtop_pred (Alignment *A, Alignment *Pred, int pos, int mode);
101 Alignment * aln2hmmtop_pred (Alignment *A);
102 char * seq2tmstruc ( char *seq);
103
104 void set_blast_default_values();
105 char      *  seq2pdb   ( Sequence *S);
106 Alignment *  seq2blast ( Sequence *S);
107
108 Sequence * seq2unique_name_seq ( Sequence *S);
109 Alignment * aln2unique_name_aln ( Alignment *S);
110 int name_list2unique_name_list (int n, char **name);
111 Sequence *seq2clean_seq ( Sequence *S, char *alp);//remove all alp characters from seq
112 char**gene2exons    (char **seq, int nseq);
113
114 int       ** seq2aln_pos      (Alignment *A, int *n, int **ls);
115 Alignment *padd_aln ( Alignment *A);
116 char **padd_string ( char **string, int n,char pad);
117
118 Alignment *local_maln2global_maln (char *seq, Alignment *A);
119
120 Alignment * seq2profile (Sequence *S, int index);
121
122 Sequence *remove_empty_sequence (Sequence *S);
123 Alignment *  aln2profile (Alignment * A);
124 Alignment * aln2collapsed_aln (Alignment * A, int n, char **string);
125 Alignment* remove_seq_from_aln (Alignment *A, char *seq);
126
127 Alignment* aln2sub_aln_file (Alignment *A, int n, char **string);
128 Alignment* aln2sub_seq (Alignment *A, int n, char **string);
129
130 int       ** aln2inv_pos  (Alignment *A);
131 int        * seq2inv_pos ( char *seq);
132 int       ** aln2pos_simple   (Alignment *A, int n_nseq, ...);
133 int       ** aln2pos_simple_2 (Alignment *A);
134 Alignment ** split_seq_in_aln_list ( Alignment **aln, Sequence *S, int l_seq, char **seq_list);
135
136 Sequence * fill_sequence_struc ( int nseq, char **sequences, char **seq_name, Genomic_info *genome_co);
137
138 int  seq_list2in_file ( TC_method *M, Sequence *S, char *list, char *file);
139 int  seq_list2fasta_file( Sequence *S,  char *list, char *file, char *outmode);
140 Structure * seq2struc    ( Sequence *S, Structure *ST);
141 Alignment *strings2aln (int nseq,...);
142
143 Alignment * seq2aln      ( Sequence *S, Alignment *A,int rm_gap);
144 Alignment  *seq_coor2aln ( Sequence *S, Alignment *A, int **coor, int nseq);
145
146 Alignment *stack_aln (Alignment *A, Alignment *B);
147 Alignment *chseqIaln(char *name, int seq_n, int start,int len,Sequence *S, int seqIaln, Alignment *A);
148
149
150 char *dna_aln2cons_seq ( Alignment *A);
151 char *aln2cons_seq ( Alignment *A, int ns, int *ls, int n_groups, char **group_list);
152 char *aln2cons_maj ( Alignment *A, int ns, int *ls, int n_groups, char **group_list);
153 Alignment *aln2conservation ( Alignment *A, int threshold,char *seq);
154
155 char *sub_aln2cons_seq_mat ( Alignment *A,int ns, int *ls, char *mat_name);
156 char *aln2cons_seq_mat ( Alignment*A, char *mat_name);
157 Alignment *aln2short_aln( Alignment *A, char *list, char *nnew, int spacer);
158 Sequence  *keep_residues_in_seq ( Sequence *S,char *list, char replacement);
159 Alignment *keep_residues_in_aln ( Alignment *A,char *list, char replacement);
160 Alignment *filter_keep_residues_in_aln ( Alignment *A,Alignment *ST, int use_cons, int value, char *list, char replacement);
161
162 Alignment *aln_convert (Alignment *A, Alignment *ST, int use_cons, int value,int n, ...);
163 Alignment *aln2number (Alignment *A);
164 Alignment * filter_aln ( Alignment *A, Alignment *ST, int value);
165 Alignment * filter_aln_lower_upper ( Alignment *A, Alignment *ST,int use_cons, int value);
166 Alignment * filter_aln_upper_lower ( Alignment *A, Alignment *ST, int use_cons,int value);
167 Alignment * filter_aln_switchcase ( Alignment *A, Alignment *ST, int use_cons, int value);
168
169 Alignment * STseq2STaln ( Alignment *A, Alignment *ST);
170 Alignment * merge_annotation   ( Alignment *A, Alignment *ST, char *seq);
171 Alignment * filter_aln_convert ( Alignment *A, Alignment *ST, int use_cons,int value, int n_symbol,char** symbol_list);
172 int aln2ngap (Alignment *A);
173
174 int  * count_in_aln ( Alignment *A, Alignment *ST, int value, int n_symbol,char **symbol_list, int *table);
175 void count_misc (Alignment*A, Alignment *B);
176
177 Alignment * trim_aln_with_seq ( Alignment *S, Alignment *P);
178 Alignment * add_align_seq2aln ( Alignment *A, char *seq, char *seq_name);
179 Alignment * aln2X (Alignment *A, int x);
180 Sequence  * aln2seq    ( Alignment *A);
181 Sequence  * aln2seq_main    ( Alignment *A, int mode);
182 Alignment * thread_profile_files2aln (Alignment *A, char *template_file, Fname *F);
183 Alignment * expand_aln (Alignment *A);
184 Alignment * aln2expanded_aln (Alignment *A);
185 Alignment * expand_number_aln (Alignment *A,Alignment *EA);
186 Alignment * remove_gap_column ( Alignment *A, char *mode);
187 Alignment*  ungap_sub_aln        ( Alignment *A, int nseq, int *ls);
188 Sequence *  ungap_seq       ( Sequence *A);
189 Alignment * insert_gap_col (Alignment *A, int p, int l);
190 Alignment * unalign_residues (Alignment *A, int i1, int i2);
191 Alignment * unalign_aln_2 (Alignment *A, Alignment *C, int t);
192 Alignment * unalign_aln (Alignment *A, Alignment *C, int t);
193 Alignment * unalign_aln_pos (Alignment *A, int s, int p, int l);
194
195 Alignment *degap_aln (Alignment *A);
196
197 Alignment * RmLowerInAln (Alignment *A, char *gap);
198 Alignment * ungap_aln_n        ( Alignment *A, int n);
199 Alignment * ungap_aln        ( Alignment *A);
200 void compress_aln     ( Alignment *A);
201 Alignment* condense_aln (Alignment *A);
202
203 Alignment * probabilistic_rm_aa ( Alignment *A, int pos, int len);
204 Alignment * aln_gap2random_aa(Alignment *A);
205 Alignment * make_random_aln(Alignment *A,int nseq, int len, char *alphabet);
206 Alignment * add_random_sequence2aln( Alignment *A, char *alphabet);
207
208 int ** trim_aln_borders            ( char **seq1, char **seq2, int nseq);
209 Sequence * trim_aln_seq      ( Alignment  *A, Alignment *B);
210 Sequence * trim_aln_seq_name ( Alignment  *A, Alignment *B);
211 Sequence *get_defined_residues( Alignment *A);
212
213
214 Alignment *thread_defined_residues_on_aln ( Alignment *A, Sequence *S1);
215 Sequence *seq2number (Sequence *S);
216 Sequence * merge_seq    ( Sequence *IN, Sequence *OUT);
217 char * seq_name2coor ( char *s, int *start, int *end, char sep);
218 Alignment *seq_name2removed_seq_name(Sequence *S, Alignment *NA, float **diff);
219 int seq_name2index (char *name, Sequence *S);
220
221 Sequence *extract_one_seq(char *n,int start, int end, Alignment *S,int keep_name);
222 Sequence  * extract_sub_seq( Sequence  *COOR, Sequence *S);
223
224
225 Sequence * add_prf2seq  (char *alnfile, Sequence *S);
226 int prf_in_seq ( Sequence *S);
227 Sequence * add_sequence ( Sequence *IN, Sequence *OUT, int i);
228 Sequence  * trim_seq     ( Sequence   *A, Sequence  *B);
229 Sequence  * reorder_seq  ( Sequence   *A, char **name, int nseq);
230 Sequence  * reorder_seq_2  ( Sequence   *A, int **name,int field, int nseq);
231
232 char * concatenate_seq ( Sequence *S, char *conc, int *order);
233 Sequence * swap_header ( Sequence *S, Sequence *H);
234
235 Alignment *aln2jacknife (Alignment *A, int nseq, int len);
236 char ** name2random_subset (char **in_name, int n_in, int n_out);
237 Alignment * aln2random_order   ( Alignment  *A);
238 Alignment * aln2scramble_seq  ( Alignment  *A);
239
240 Alignment * reorder_aln        ( Alignment  *A, char **name, int nseq);
241
242 char ** rm_name_tag (char **name, int nseq, char *tag);
243
244 /******************************************************************************/
245 /*                          TEMPLATE MANAGEMENENT                             */
246 /******************************************************************************/
247 char * string_contains_template_tag (char *string);
248 Sequence * seq2template_type(Sequence *Seq);
249
250 Sequence * vremove_seq_template_files (Sequence *S);
251 Sequence * display_seq_template_files (Sequence *S);
252 Sequence * handle_seq_template_file (Sequence *S, char *mode);
253 int handle_X_template_files ( X_template *T, char *mode);
254
255
256 Sequence * seq2template_seq ( Sequence *S, char *template_file, Fname *F);
257 char * seq2template_file (Sequence *S, char *file);
258 int seq2template_file2 (Sequence *S, char *file, char *mode);
259
260 Sequence * profile_seq2template_seq ( Sequence *S, char *template_file, Fname *F);
261 int seq2n_X_template ( Sequence *S, char *type);
262
263 struct X_template *fill_X_template (char *name, char *p, char *type);
264 FILE * display_seq_template (Sequence *S, FILE *io);
265 char *template_type2type_name (char *type);
266 char *template_type2short_type_name (char *type);
267
268
269 FILE * display_sequence_templates ( Sequence *S, int i, FILE *io);
270 FILE * display_X_template (struct X_template *X, FILE *io);
271
272 struct X_template* free_X_template ( struct X_template *X);
273
274 struct X_template *fill_P_template (char *name, char *p, Sequence *S);
275 struct X_template *fill_F_template (char *name, char *p, Sequence *S);
276 struct X_template *fill_S_template ( char *name,char *p, Sequence *S);
277 struct X_template *fill_R_template (char *name, char *p, Sequence *S);
278 struct X_template *fill_G_template (char *name, char *p, Sequence *S);
279 struct X_template *fill_T_template (char *name, char *p, Sequence *S);
280 struct X_template *fill_E_template (char *name, char *p, Sequence *S);
281 struct X_template *fill_U_template (char *name, char *p, Sequence *S);
282
283 char *seq2T_value ( Sequence *S, int i, char *param_name, char *template_type);
284 char *profile2P_template_file (Sequence *S, int n);
285 Alignment * seq2R_template_profile (Sequence *S, int n);
286 char *seq2P_pdb_id (Sequence *S, int n);
287 char      * seq2P_template_file (Sequence *S, int n);
288 char      * seq2T_template_string (Sequence *S, int n);
289 char      * seq2E_template_string (Sequence *S, int n);
290 int       * seq2U_template (Sequence *S, int n);
291
292
293 int seq2n_template (Sequence *S, char *type);
294 struct X_template * seq_has_template ( Sequence *S, int n, char *type);
295
296 /******************************************************************************/
297 /*                          ALIGNMENT MANIPULATION                            */
298 /******************************************************************************/
299
300 char *aln_column2string (Alignment *A, int p);
301 int **fix_seq_aln (Sequence *S, Alignment*A, int **cache);
302 int **fix_seq_seq ( Sequence *S1, Sequence *S2);
303 int **fix_aln_seq_new (Alignment *S1, Sequence *S2);
304
305 Alignment * fix_aln_seq  ( Alignment *A, Sequence *S);
306 Alignment * rotate_aln ( Alignment *A, char *name);
307 Alignment * invert_aln ( Alignment *A);
308 Sequence  * invert_seq2 ( Sequence  *A);
309 int invert_seq_file (char *seq);
310 int invert_aln_file (char *seq);
311
312
313 char * complement_string (char *s);
314 Alignment * complement_aln ( Alignment *A);
315 Alignment * extract_nol_local_aln( Alignment *A, int start, int max_end);
316 Alignment * aln2block   (Alignment  *A, int start, int end, Alignment *B);
317 Alignment * alnpos2block   (Alignment  *A, int*pos, Alignment *B);
318
319 Alignment * extract_aln          ( Alignment *A, int start, int end);
320 Alignment * extract_aln2          ( Alignment *A, int start, int end, char *seq_name);
321 Alignment * extract_aln3          ( Alignment *A, char *filename);
322 Alignment * alnpos_list2block (Alignment *A, int n, char **in_list);
323
324 Alignment * trunkate_local_aln   ( Alignment *A);
325 int get_nol_aln_border ( Alignment *A, int start, int direction);
326 Alignment ** trim_local_aln ( Alignment *A, int **List, int ne, int **residue_list, Sequence *S);
327
328 Alignment * aln_cat ( Alignment *A, Alignment *B);
329 Alignment * concatenate_aln ( Alignment *A, Alignment *B, char *sep);
330 char * extract_defined_seq ( char *in, int in_of, int in_start, int *aa_def, int dir, int *out_start, char *out_seq);
331 int verify_aln ( Alignment *A, Sequence *S, char * error);
332 Alignment * remove_end (Alignment *A);
333 Alignment * orthologous_concatenate_aln (Alignment *A, Sequence *S, char *mode);
334 Alignment * aln2N_replicate (Alignment *A, char *nn, char *name);
335 FILE *aln2replicate (Alignment *A, FILE *fp);
336
337 Alignment * voronoi_concatenate_aln (Alignment *A, Sequence *S);
338
339 Alignment *adjust_est_aln ( Alignment *PW, Alignment *M, int s);
340 Alignment * rename_seq_in_aln (Alignment *A, char ***list);
341 Sequence * rename_seq_in_seq (Sequence *A, char ***list);
342 /********************************************************************/
343 /*                                                                  */
344 /*                   FLOAT SIMILARITIES                             */
345 /*                                                                  */
346 /*                                                                  */
347 /*                                                                  */
348 /********************************************************************/
349 float get_seq_fsim ( char *string1, char *string2, char *ignore, char *similarity_groups, int **matrix, int mode);
350 float get_seq_fsim2 ( char *string1, char *string2, char *ignore, char *in_mode);
351 float ** get_fsim_aln_array ( Alignment *A, char *mode);
352 /********************************************************************/
353 /*                                                                  */
354 /*                   ALIGNMENT ANALYSES                             */
355 /*                                                                  */
356 /*                                                                  */
357 /*                                                                  */
358 /********************************************************************/
359 int **sim_array2dist_array ( int **p, int max);
360 int **dist_array2sim_array ( int **p, int max);
361 int **normalize_array (int **p, int max, int norm);
362
363 int aln2most_similar_sequence ( Alignment *A, char *mode);
364 int aln2coverage ( Alignment *A, int ref_seq);
365
366 double aln2entropy (Alignment *A, int *in_ls, int in_ns, float gap_threshold);
367 int sub_aln2sim ( Alignment *A, int *ns, int **ls, char *mode);
368 int sub_aln2max_sim ( Alignment *A, int *ns, int **ls, char *mode);
369 int aln2sim2    ( Alignment *A);
370 int aln2sim     ( Alignment *A, char *mode);
371 int seq2idscore_sim ( char *seq1, char *seq2);
372
373 int aln_is_aligned ( Alignment *A);
374 int* get_cdna_seq_winsim ( int *cache, char *string1, char *string2, char *ignore, char *mode, int *w);
375 int  get_cdna_seq_sim    ( int *cache, char *string1, char *string2, char *ignore, char *mode);
376
377 int seq2aln2sim    (char *seq1, char *seq2, char *mode_aln, char *mode_id);
378 int* get_seq_winsim( char *string1, char *string2, char *ignore, char *mode, int *w);
379 int  get_seq_sim ( char *string1, char *string2, char *ignore, char *mode);
380 int  get_seq_sim_2 ( char *string1, char *string2, char *ignore, char **gr, int ng);
381 int  get_seq_sim_3 ( char *string1, char *string2, char *ignore, int **mat);
382
383
384 int *** get_winsim_aln_array ( Alignment *A, char *mode, int ***w);
385 int ** get_sim_master_aln_array ( Alignment *A,int n, char *mode);
386
387 int ** seq2sim_mat (Sequence *S, char *mode);
388 int ** seq2cov_mat (Sequence *S, char *mode);
389 int ** seq2comp_mat (Sequence *S, char *mode, char *comp_mode);
390
391 int logid_score (int sim, int len);
392 int ** fast_aln2sim_mat (Alignment *A, char *mode);
393 int ** fast_aln2sim_list (Alignment *A, char *mode, int *ns, int **ls);
394
395 int ** aln2dist_mat(Alignment *A);
396 int ** aln2dist_mat_gap (Alignment *A);
397 int ** aln2sim_mat_km (Alignment *A, char *mode);
398 int ** aln2sim_mat    (Alignment *A, char *mode);
399 int **aln2cov (Alignment *A);
400 int ** get_dist_aln_array ( Alignment *A, char *mode);
401 int ** get_raw_sim_aln_array ( Alignment *A, char *mode);
402 int ** get_sim_aln_array ( Alignment *A, char *mode);
403 int generic_get_seq_sim  ( char *seq1, char *seq2, int *cache, char *mode);
404 Alignment * grep_seq (Alignment *S,char *field, char *mode, char *string);
405 Alignment* modify_seq (Alignment *S,char *field, char *string1, char *string2);
406
407 Sequence * seq2filter (Sequence *S_in, int min, int max);
408 int ** get_cov_aln_array ( Alignment *A, char *mode);
409 int ** get_cov_master_aln_array ( Alignment *A,int n, char *mode);
410
411
412 int * get_aln_col_weight ( Alignment *A, char *mode);
413 int analyse_aln_column   ( Alignment *B, int col);
414
415 int sub_aln2nseq_prf ( Alignment *A, int ns, int *ls);
416 int **aln2count_mat   (Alignment *A);
417 int **sub_aln2count_mat2   (Alignment *A, int ns, int *ls);
418 int **sub_aln2count_mat3   (char **al, int n);
419 int **aln2count_mat2   (Alignment *A);
420 char *aln2random_seq (Alignment *A, int noise1, int noise2, int noise3, int gap_noise);
421
422 int * km2centroids (Alignment *A, int k, char *mode,int *keep);
423 Alignment* km_seq (Alignment *S, int k, char *mode,char*name );
424 Alignment** seq2kmeans_subset (Alignment *A, int k, int *n, char *mode);
425 Alignment** seq2id_subset (Alignment *A, int k, int *n, char *mode);
426
427 int* seq2kmeans_class  (Alignment *A, int k, char *mode);
428
429 int aln2gap_trimmed (Alignment *A, int n, char *alnf, char *seqf);
430 Alignment *gap_trim (Alignment *A, int f);
431 Alignment * master_trimseq( Alignment *A, Sequence *S,char *mode);
432 Alignment * trimseq( Alignment *A, Sequence *S, char *mode);
433 Alignment *simple_trimseq (Alignment *A,Alignment*K, char *mode, char *seq, int **sim);
434 Alignment *sim_filter (Alignment *A, char *in_mode, char *seq_list);
435
436 Sequence  * seq_weight2species_weight (Alignment *A, Sequence *S);
437 Alignment * aln2voronoi_weights (Alignment *A);
438 float ** get_weight ( Alignment *A, Sequence *S, char *mode);
439 float **seq2pwsim (        Alignment *A, Sequence *S, char *mode);
440 Alignment * trimseq( Alignment *A, Sequence *S,char *mode);
441 Alignment * tc_trimseq( Alignment *A, Sequence *S,char *mode);
442 Alignment* seq2subseq3( Alignment *A, Sequence *S,int use_aln, int lower_sim,int upper_sim, int min_nseq, int trim_direction, char *weight_mode, float ***sim_weight, int *seq_list);
443 Alignment* seq2subseq2( Alignment *A, Sequence *S,int use_aln, int lower_sim,int upper_sim, int max_nseq, int trim_direction, char *weight_mode, float ***weight_table, int *seq_list);
444 float extreme_seq (int direction, Alignment *A,float **sim_weight,int *seq_list, int *seq_index);
445
446
447 Alignment* seq2subseq1( Alignment *A, Sequence *S,int use_aln, int percent,int max_nseq,int max_diff, char *weight_mode);
448 /********************************************************************/
449 /*                                                                  */
450 /*                      AMINO ACID FUNCTIONS                        */
451 /*                                                                  */
452 /*                                                                  */
453 /*                                                                  */
454 /********************************************************************/
455 char** string2alphabet (char *string, int depth, int *falp_size);
456 int is_in_same_group_aa ( char r1, char r2, int n_group, char **gl, char *mode);
457 int find_group_aa_distribution (char *col, int nseq,int n_group, char **gl,  int *distrib, char *mode );
458 char** make_group_aa (int *ngroup, char *mode);
459 char** make_group_aa_upgma (char *mat, int max_size);
460
461
462 char * test_gene2prot (Constraint_list *CL, int s1);
463 Alignment* gene2prot (Alignment *A);
464 Alignment * dna_aln2_3frame_cdna_aln(Alignment *A,int *ns,int **l_s);
465
466 int ** get_sim_aln_array_normal_distribution ( Alignment *A, char *mode, int *STD, int *CENTER);
467 double normal(double x, double mean, double std);
468 int generic_get_seq_sim_normal_distribution ( char *seq1, char *seq2, int*cache, char *mode, int *STD, int *CENTER);
469 int get_seq_sim_distribution ( char *string1, char *string2, char *ignore, char *in_mode, int *STD, int *CENTER);
470
471 Alignment *aln2clean_pw_aln (Alignment *A,OveralnP *F);
472 char **pw_aln2clean_pw_aln (char ** aln,OveralnP *F);
473 int  * pw_aln2clean_aln_weight ( char *seq1, char *seq2, int w, OveralnP *F);
474
475 float* aln2pred  ( Alignment *A, Alignment*B, char *mode);
476 float* analyze_overaln ( Alignment *A, Alignment *B, char *mode, int f,int p1,int p2, int p3,int filter);
477
478
479 Alignment * mark_exon_boundaries  (Alignment *A, Alignment *E);
480 //simple_trimseq2
481 //Creates Clusters
482 //In each cluser there is a path between every pair of sequence
483 //A path is made of edges connecting tow nodes with w>min_sim
484 int ** simple_trimseq2 (int n, int **sim, int min_sim);