8 #include "io_lib_header.h"
9 #include "util_lib_header.h"
10 #include "dp_lib_header.h"
11 #include "define_header.h"
14 static char * get_seq_type_from_cl (int argc, char **argv);
15 static char *get_defaults(char *buf, char *type);
16 static char *get_evaluate_defaults(char *buf, char *type);
17 static char *get_genome_defaults(char *buf, char *type);
18 static char *get_dali_defaults(char *buf, char *type);
19 static char *get_mcoffee_defaults(char *buf, char *type);
20 static char *get_fmcoffee_defaults(char *buf, char *type);
21 static char *get_t_coffee_defaults(char *buf, char *type);
23 static char *get_dmcoffee_defaults(char *buf, char *type);
24 static char *get_rcoffee_consan_defaults(char *buf, char *type);
25 static char *get_rmcoffee_defaults(char *buf, char *type);//Original R-Coffee Paper
26 static char *get_rcoffee_defaults(char *buf, char *type);//Original R-Coffee Paper
27 static char *get_rmcoffee_defaults_old(char *buf, char *type);//Original R-Coffee Paper
28 static char *get_rcoffee_defaults_old(char *buf, char *type);//Original R-Coffee Paper
29 static char *get_best4RNA_defaults(char *buf, char *type);
31 static char *get_very_fast_defaults(char *buf, char *type);
32 static char *get_precomputed_defaults(char *buf, char *type);
33 static char *get_3dcoffee_defaults(char *buf, char *type);
34 static char *get_expresso_defaults(char *buf, char *type);
36 static char *get_accurate_defaults(char *buf, char *type);
37 static char *get_accurate4PROTEIN_defaults(char *buf, char *type);
38 static char *get_accurate4DNA_defaults(char *buf, char *type);
39 static char *get_accurate4RNA_defaults(char *buf, char *type);
41 static char *get_procoffee_defaults(char *buf, char *type);
42 static char *get_blastr_defaults(char *buf, char *type);
43 static char *get_psicoffee_defaults(char *buf, char *type);
44 static char *get_dna_defaults(char *buf, char *type);
45 static char *get_cdna_defaults(char *buf, char *type);
46 static char *get_repeat_defaults(char *buf, char *type);
47 static char *get_low_memory_defaults( char *buf, char *type);
49 static char *get_genepredx_defaults(char *buf, char *type);
50 static char *get_genepredpx_defaults(char *buf, char *type);
52 static int set_methods_limits (char **method_limits,int n_methods_limit,char **list_file, int n_list, int *maxnseq, int *maxlen);
53 static FILE *t_coffee_tip (FILE *fp,char *mode);
55 static int run_other_pg(int argc, char *argv[]);
57 static Sequence* prepare_master (char *seq,Sequence *S,Constraint_list *CL, char *dmode);
59 #define is_a_seq_file(file) (!is_matrix(file) && !is_matrix(file+1) && !is_method (file) && !is_method (file+1) &&(check_file_exists(file) || check_file_exists(file+1)))
60 static int NO_METHODS_IN_CL;
61 int batch_main ( int argc, char **argv);
62 int main (int argc, char *argv[])
66 if (argc>=2 && strcmp (argv[1], "-batch")==0)
69 list=file2lines (argv[2]);
70 for (a=1; a<atoi (list[0]); a++)
73 com=string2list (list[a]);
74 r=batch_main (atoi (com[0])-1, com+1);
80 r=batch_main (argc, argv);
84 int batch_main ( int argc, char **argv)
96 Alignment *A=NULL, *EA=NULL;
107 int check_configuration;
112 char *t_coffee_defaults;
113 int t_coffee_defaults_flag;
124 int nseq_for_quadruplet;
125 char **seq_name_for_quadruplet;
146 char **template_file_list;
149 char **template_mode_list;
154 int remove_template_file;
156 char **profile_template_file_list;
157 int n_profile_template_file;
161 int pdb_start, pdb_end;
178 int cosmetic_penalty,gop,f_gop, gep,f_gep, nomatch;
185 char *distance_matrix_mode;
186 char *distance_matrix_sim_mode;
192 char **out_aln_format;
193 int n_out_aln_format;
198 char *profile_comparison;
215 char *output_res_num;
226 char *method_evaluate_mode;
232 char *clean_evaluate_mode;
233 /*Profile Alignment*/
242 char **method_limits;
245 char **aln_file_list;
248 char **lib_file_list;
257 /*Domain Parameters*/
262 int domain_interactive;
263 /* extended matrix analysis*/
264 int do_extended_matrix;
265 /*Action Parameters*/
271 char *genepred_score;
275 /*Thread parameters*/
285 char *prot_blast_server;
286 char *pdb_blast_server;
295 char *dna_blast_server;
312 char *align_pdb_param_file;
313 char *align_pdb_hasch_mode;
319 Sequence *MASTER_SEQ=NULL;
320 Sequence *TEMP_SEQ=NULL;
328 int split_nseq_thres;
329 int split_score_thres;
330 char split_name[1000];
331 char split_format[1000];
332 Alignment *SPLIT_ALN;
334 int check_pdb_status;
337 Sequence *trim_subS=NULL;
338 Sequence *trim_S=NULL;
339 Sequence *SEQ_TO_KEEP=NULL;
341 char trim_format[1000];
345 char **special_mode_list;
347 char **special_mode_list1;
349 char **special_mode_list2;
353 char *dpa_master_aln;
357 int dpa_keep_tmpfile;
367 char *prune_lib_mode;
372 int run_local_script;
379 char **overaln_param;
380 char n_overaln_param;
381 char * exon_boundaries;
389 int overaln_threshold;
395 argv=standard_initialisation (argv, &argc);
396 set_string_variable ("t_coffee", argv[0]);
398 /*Running other programs via T-Coffee*/
399 if (argc>=3 && strm (argv[1], "-other_pg"))
401 //standard_initialisation (NULL,NULL);
402 return run_other_pg (argc-2, argv+2);
405 /*PARAMETER PROTOTYPE: READ PARAMETER FILE */
410 /*Name*/ "-no_error_report" ,\
413 /*OPTIONAL?*/ OPTIONAL ,\
415 /*DOC*/ "Limit the maximum memory usage (in Megabytes). 0: no limit" ,\
416 /*Parameter*/ &no_error_report ,\
419 /*Min_value*/ "any" ,\
420 /*Max Value*/ "any" \
423 /*PARAMETER PROTOTYPE: READ PARAMETER FILE */
424 declare_name (parameters);
429 /*Name*/ "-parameters" ,\
432 /*OPTIONAL?*/ OPTIONAL ,\
434 /*DOC*/ "get bottom parameters" ,\
435 /*Parameter*/ ¶meters ,\
438 /*Min_value*/ "any" ,\
439 /*Max Value*/ "any" \
443 special_mode_list1=declare_char (100, STRING);
445 n_special_mode1=get_cl_param( \
452 /*OPTIONAL?*/ OPTIONAL ,\
454 /*DOC*/ "specifies a special mode: genome, quickaln, dali, 3dcoffee" ,\
455 /*Parameter*/ special_mode_list1 ,\
456 /*Def 1*/ "unspecified" ,\
457 /*Def 2*/ "HARD_CODED" ,\
458 /*Min_value*/ "any" ,\
459 /*Max Value*/ "any" \
463 special_mode_list2=declare_char (100, STRING);
464 n_special_mode2=get_cl_param(\
468 /*Name*/ "-special_mode" ,\
471 /*OPTIONAL?*/ OPTIONAL ,\
473 /*DOC*/ "[DEPRECATED ** -special_mode is deprected use -mode instead]" ,\
474 /*Parameter*/ special_mode_list2 ,\
475 /*Def 1*/ "unspecified" ,\
476 /*Def 2*/ "HARD_CODED" ,\
477 /*Min_value*/ "any" ,\
478 /*Max Value*/ "any" \
481 special_mode_list=declare_char (n_special_mode1+n_special_mode2, STRING);
483 for (a=0; a<n_special_mode1; a++)
484 if (!strm (special_mode_list1[a], "unspecified"))sprintf ( special_mode_list[n_special_mode++], "%s", special_mode_list1[a]);
485 for (a=0; a<n_special_mode2; a++)
486 if (!strm (special_mode_list2[a], "unspecified"))sprintf ( special_mode_list[n_special_mode++], "%s", special_mode_list2[a]);
487 free_char (special_mode_list1, -1);
488 free_char (special_mode_list2, -1);
490 declare_name (t_coffee_defaults);
495 /*Name*/ "-t_coffee_defaults" ,\
496 /*Flag*/ &t_coffee_defaults_flag ,\
498 /*OPTIONAL?*/ OPTIONAL ,\
500 /*DOC*/ "get top parameters" ,\
501 /*Parameter*/ &t_coffee_defaults ,\
504 /*Min_value*/ "any" ,\
505 /*Max Value*/ "any" \
507 /*PARAMETER PROTOTYPE: -type_only: must stay here: needed by special_mode */
512 /*Name*/ "-type_only" ,\
513 /*Flag*/ &type_only ,\
515 /*OPTIONAL?*/ OPTIONAL ,\
517 /*DOC*/ "exit after checking the type and returning it to the stdout",\
518 /*Parameter*/ &type_only ,\
521 /*Min_value*/ "any" ,\
522 /*Max Value*/ "any" \
525 /*PARAMETER PROTOTYPE: CHECK_TYPE */
530 /*Name*/ "-check_type" , \
531 /*Flag*/ &check_type , \
533 /*OPTIONAL?*/ OPTIONAL , \
535 /*DOC*/ "Make sure that -type and the real type of the sequences agree" , \
536 /*Parameter*/ &check_type , \
539 /*Min_value*/ "any" , \
540 /*Max Value*/ "any" \
542 /*PARAMETER PROTOTYPE: INFILE */
549 /*Flag*/ &garbage , \
551 /*OPTIONAL?*/ OPTIONAL , \
553 /*DOC*/ "PROTEIN, DNA or RNA. Automatically set, but can be forced with this flag" , \
554 /*Parameter*/ &type , \
557 /*Min_value*/ "any" , \
558 /*Max Value*/ "any" \
562 /* extra>prompt>special>parameters>defaults*/
563 argv=break_list ( argv, &argc, "=;, \n");
564 argv=merge_list ( argv, &argc);
565 if (argc>1 && argv[1][0]!='-')argv=push_string ("-seq ", argv, &argc, 1);
567 if ( name_is_in_list ("-method",argv, argc,100)==-1)
572 if (t_coffee_defaults_flag)
576 pname=getenv ( "TCOFFEE_DEFAULTS");
578 if (check_file_exists ( t_coffee_defaults))pname=t_coffee_defaults;
579 else if ( getenv ( "TCOFFEE_DEFAULTS"))
581 pname=getenv ( "TCOFFEE_DEFAULTS");
582 if (check_file_exists(pname));
587 declare_name(pname);sprintf (pname, "%s/.t_coffee_defaults",getenv ( "HOME") );
588 if (!check_file_exists (pname)){vfree(pname);pname=NULL;}
593 argv=push_string (file2string(pname), argv, &argc, 1);
594 t_coffee_defaults=pname;
598 t_coffee_defaults=NULL;
602 if ( parameters && parameters[0])argv=push_string (file2string (parameters), argv, &argc, 1);
605 if (n_special_mode && !type_only)
609 declare_name(lseq_type);
610 if (type && !strm (type, ""))
611 sprintf (lseq_type,"%s",type);
613 sprintf (lseq_type,"%s",get_seq_type_from_cl (argc, argv));
615 for ( a=0; a< n_special_mode; a++)
619 special_mode=special_mode_list[a];
621 store_mode (special_mode);
624 if (special_mode && !special_mode[0]);
625 else if ( strm (special_mode, "genepredx"))new_arg=get_genepredx_defaults(NULL,lseq_type);
626 else if ( strm (special_mode, "genepredpx"))new_arg=get_genepredpx_defaults(NULL,lseq_type);
628 else if ( strm (special_mode, "regular") || strm (special_mode, "regular_fast")|| strm (special_mode, "default"))new_arg=get_defaults (NULL,lseq_type);
629 else if ( strm (special_mode, "genome"))new_arg=get_genome_defaults(NULL,lseq_type);
630 else if ( strm (special_mode, "quickaln"))new_arg=get_very_fast_defaults(NULL,lseq_type);
631 else if ( strm (special_mode, "dali"))new_arg=get_dali_defaults(NULL,lseq_type);
632 else if ( strm (special_mode, "evaluate"))new_arg=get_evaluate_defaults(NULL,lseq_type);
633 else if ( strm (special_mode, "precomputed"))new_arg=get_precomputed_defaults(NULL,lseq_type);
634 else if ( strm (special_mode, "3dcoffee"))new_arg=get_3dcoffee_defaults(NULL,lseq_type);
635 else if ( strm (special_mode, "expresso"))new_arg=get_expresso_defaults(NULL,lseq_type);
636 else if ( strm (special_mode, "repeats"))new_arg=get_repeat_defaults(NULL,lseq_type);
637 else if ( strm (special_mode, "psicoffee"))new_arg=get_psicoffee_defaults(NULL,lseq_type);
638 else if ( strm (special_mode, "procoffee"))new_arg=get_procoffee_defaults(NULL,lseq_type);
639 else if ( strm (special_mode, "blastr"))new_arg=get_blastr_defaults(NULL,lseq_type);
641 else if ( strm (special_mode, "accurate") || strm (special_mode, "accurate_slow") || strm (special_mode, "psicoffee_expresso"))new_arg=get_accurate_defaults(NULL, lseq_type);
642 else if ( strm (special_mode, "accurate4DNA"))new_arg=get_accurate4DNA_defaults(NULL,lseq_type);
643 else if ( strm (special_mode, "accurate4RNA"))new_arg=get_accurate4RNA_defaults(NULL,lseq_type);
644 else if ( strm (special_mode, "best4RNA"))new_arg=get_best4RNA_defaults(NULL,lseq_type);
645 else if ( strm (special_mode, "accurate4PROTEIN"))new_arg=get_accurate4PROTEIN_defaults(NULL,lseq_type);
647 else if ( strm (special_mode, "low_memory") || strm (special_mode, "memory"))new_arg=get_low_memory_defaults(NULL,lseq_type);
650 else if ( strm (special_mode, "dna"))new_arg=get_dna_defaults(NULL,lseq_type);
651 else if ( strm (special_mode, "cdna"))new_arg=get_dna_defaults(NULL,lseq_type);
652 else if ( strm (special_mode, "protein"))new_arg=get_low_memory_defaults(NULL,lseq_type);
653 else if ( strm (special_mode, "mcoffee"))new_arg=get_mcoffee_defaults(NULL,lseq_type);
654 else if ( strm (special_mode, "dmcoffee"))new_arg=get_dmcoffee_defaults(NULL,lseq_type);
655 else if ( strm (special_mode, "fmcoffee"))new_arg=get_fmcoffee_defaults(NULL,lseq_type);
657 else if ( strm (special_mode, "rcoffee_consan"))new_arg=get_rcoffee_consan_defaults(NULL,lseq_type);
658 else if ( strm (special_mode, "rmcoffee") ||strm (special_mode, "mrcoffee") )new_arg=get_rmcoffee_defaults(NULL,lseq_type);
659 else if ( strm (special_mode, "rcoffee"))new_arg=get_rcoffee_defaults(NULL,lseq_type);
661 else if ( strm (special_mode, "rcoffee_slow_accurate"))new_arg=get_rcoffee_consan_defaults(NULL,lseq_type);
662 else if ( strm (special_mode, "rcoffee_fast_approximate"))new_arg=get_rmcoffee_defaults(NULL,lseq_type);
663 else if ( strm (special_mode, "t_coffee"))new_arg=get_t_coffee_defaults(NULL,lseq_type);
666 else if ( strm (special_mode, "unspecified"));
669 fprintf ( stderr, "\nERROR: special_mode %s is unknown [FATAL:%s]\n",special_mode, PROGRAM);
670 myexit (EXIT_FAILURE);
673 if (new_arg)argv=push_string (new_arg, argv, &argc, 1);
677 if ( getenv ("TCOFFEE_EXTRA_PARAM"))argv=push_string (getenv ("TCOFFEE_EXTRA_PARAM"), argv, &argc, argc);
680 argv=break_list ( argv, &argc, "=;, \n");
681 argv=merge_list ( argv, &argc);
682 /*check_cl4t_coffee ( argc, argv); */
685 /*PARAMETER PROTOTYPE: VERSION */
690 /*Name*/ "-version" ,\
691 /*Flag*/ &do_version ,\
693 /*OPTIONAL?*/ OPTIONAL ,\
695 /*DOC*/ "forces the program to output the version number and exit" ,\
696 /*Parameter*/ &do_version ,\
705 /*PARAMETER PROTOTYPE: DO EVALUATE */
711 /*Flag*/ &do_evaluate ,\
713 /*OPTIONAL?*/ OPTIONAL ,\
715 /*DOC*/ "DEPRECATED: use -special_mode evaluate instead " ,\
716 /*Parameter*/ &do_evaluate ,\
724 /*PARAMETER PROTOTYPE: DO EVALUATE */
729 /*Name*/ "-evaluate" ,\
730 /*Flag*/ &do_evaluate ,\
732 /*OPTIONAL?*/ OPTIONAL ,\
734 /*DOC*/ "Use -special_mode evaluate for a default behavior " ,\
735 /*Parameter*/ &do_evaluate ,\
742 /*PARAMETER PROTOTYPE: DO EVALUATE */
747 /*Name*/ "-genepred" ,\
748 /*Flag*/ &do_genepred ,\
750 /*OPTIONAL?*/ OPTIONAL ,\
752 /*DOC*/ "Use -special_mode genepred for a default behavior " ,\
753 /*Parameter*/ &do_genepred ,\
759 /*PARAMETER PROTOTYPE: DO FORMAT */
764 /*Name*/ "-convert" ,\
765 /*Flag*/ &do_convert ,\
767 /*OPTIONAL?*/ OPTIONAL ,\
769 /*DOC*/ "forces the program to make a conversion" ,\
770 /*Parameter*/ &do_convert ,\
779 /*PARAMETER PROTOTYPE*/
781 declare_name (se_name);
789 /*OPTIONAL?*/ OPTIONAL ,\
791 /*DOC*/ "Defines the file in which the log output is written" ,\
792 /*Parameter*/ &se_name ,\
793 /*Def 1*/ "stderr" ,\
794 /*Def 2*/ "/dev/null" ,\
795 /*Min_value*/ "any" ,\
796 /*Max Value*/ "any" \
798 if (type_only==1)sprintf ( se_name, "/dev/null");
800 /*PARAMETER PROTOTYPE: DO FORMAT */
805 /*Name*/ "-check_configuration" ,\
806 /*Flag*/ &check_configuration ,\
808 /*OPTIONAL?*/ OPTIONAL ,\
810 /*DOC*/ "checks that the required programs are installed" ,\
811 /*Parameter*/ &check_configuration ,\
817 /*PARAMETER PROTOTYPE: UPDATE */
822 /*Name*/ "-update" ,\
825 /*OPTIONAL?*/ OPTIONAL ,\
827 /*DOC*/ "checks the existence of an updated version" ,\
828 /*Parameter*/ &update ,\
837 if ( check_configuration)
840 check_configuration4program();
846 myexit (check_for_update(DISTRIBUTION_ADDRESS));
850 fprintf ( stdout, "PROGRAM: %s (%s)\n",PROGRAM,VERSION);
855 le=vfopen ( se_name, "w");
856 fprintf ( le, "\nPROGRAM: %s (%s)\n",PROGRAM,VERSION);
858 /*PARAMETER PROTOTYPE: RUN NAME*/
859 declare_name (full_log);
864 /*Name*/ "-full_log" ,\
867 /*OPTIONAL?*/ OPTIONAL ,\
869 /*DOC*/ "Sets the prefix of all the output files" ,\
870 /*Parameter*/ &full_log ,\
872 /*Def 2*/ "full_log" ,\
873 /*Min_value*/ "any" ,\
874 /*Max Value*/ "any" \
877 /*PARAMETER PROTOTYPE: RUN NAME*/
878 declare_name (genepred_score);
883 /*Name*/ "-genepred_score" ,\
886 /*OPTIONAL?*/ OPTIONAL ,\
888 /*DOC*/ "nsd,tot, <seq_name>" ,\
889 /*Parameter*/ &genepred_score ,\
892 /*Min_value*/ "any" ,\
893 /*Max Value*/ "any" \
895 /*PARAMETER PROTOTYPE: RUN NAME*/
896 declare_name (run_name);
901 /*Name*/ "-run_name" ,\
904 /*OPTIONAL?*/ OPTIONAL ,\
906 /*DOC*/ "Sets the prefix of all the output files" ,\
907 /*Parameter*/ &run_name ,\
910 /*Min_value*/ "any" ,\
911 /*Max Value*/ "any" \
914 /*PARAMETER PROTOTYPE: MEM MODE*/
915 declare_name(mem_mode);
920 /*Name*/ "-mem_mode" ,\
923 /*OPTIONAL?*/ OPTIONAL ,\
925 /*DOC*/ "Deprecated" ,\
926 /*Parameter*/ &mem_mode ,\
929 /*Min_value*/ "any" ,\
930 /*Max Value*/ "any" \
933 /*PARAMETER PROTOTYPE: EXTEND */
938 /*Name*/ "-extend" ,\
939 /*Flag*/ &do_extend ,\
941 /*OPTIONAL?*/ OPTIONAL ,\
943 /*DOC*/ "Do Library Extention On the Fly" ,\
944 /*Parameter*/ &do_extend ,\
947 /*Min_value*/ "any" ,\
948 /*Max Value*/ "any" \
950 /*PARAMETER PROTOTYPE: EXTEND */
951 declare_name (extend_mode);
956 /*Name*/ "-extend_mode" ,\
959 /*OPTIONAL?*/ OPTIONAL ,\
961 /*DOC*/ "Library extension mode" ,\
962 /*Parameter*/ &extend_mode ,\
963 /*Def 1*/ "very_fast_triplet" ,\
965 /*Min_value*/ "any" ,\
966 /*Max Value*/ "any" \
968 /*PARAMETER PROTOTYPE: EXTEND */
973 /*Name*/ "-max_n_pair" ,\
976 /*OPTIONAL?*/ OPTIONAL ,\
978 /*DOC*/ "Indicates the Number of Pairs to Compare when making prf Vs prf. 0<=>every pair " ,\
979 /*Parameter*/ &max_n_pair ,\
982 /*Min_value*/ "any" ,\
983 /*Max Value*/ "any" \
986 /*PARAMETER PROTOTYPE: SEQUENCES TO EXTEND */
987 seq_name_for_quadruplet=declare_char ( 200, STRING);
988 nseq_for_quadruplet=get_cl_param(\
992 /*Name*/ "-seq_name_for_quadruplet" ,\
995 /*OPTIONAL?*/ OPTIONAL ,\
997 /*DOC*/ "Indicates which sequence must be used to compute quadruplets" ,\
998 /*Parameter*/ seq_name_for_quadruplet ,\
1001 /*Min_value*/ "any" ,\
1002 /*Max Value*/ "any" \
1004 /*PARAMETER PROTOTYPE: COMPACT */
1005 declare_name (compact_mode);
1010 /*Name*/ "-compact" ,\
1011 /*Flag*/ &do_compact ,\
1013 /*OPTIONAL?*/ OPTIONAL ,\
1015 /*DOC*/ "Deprecated" ,\
1016 /*Parameter*/ &compact_mode ,\
1017 /*Def 1*/ "default" ,\
1018 /*Def 2*/ "default" ,\
1019 /*Min_value*/ "0" ,\
1024 /*PARAMETER PROTOTYPE: CLEAN*/
1025 declare_name ( clean_mode);
1030 /*Name*/ "-clean" ,\
1031 /*Flag*/ &do_clean ,\
1033 /*OPTIONAL?*/ OPTIONAL ,\
1035 /*DOC*/ "Deprecated" ,\
1036 /*Parameter*/ &clean_mode ,\
1038 /*Def 2*/ "shadow" ,\
1039 /*Min_value*/ "any" ,\
1040 /*Max Value*/ "any" \
1043 /*PARAMETER PROTOTYPE: DO SELF */
1048 /*Name*/ "-do_self" ,\
1049 /*Flag*/ &do_self ,\
1051 /*OPTIONAL?*/ OPTIONAL ,\
1053 /*DOC*/ "Make self extension. Used by Mocca" ,\
1054 /*Parameter*/ &do_self ,\
1057 /*Min_value*/ "0" ,\
1061 /*PARAMETER PROTOTYPE: DO NORMALISE */
1066 /*Name*/ "-do_normalise" ,\
1067 /*Flag*/ &garbage ,\
1069 /*OPTIONAL?*/ OPTIONAL ,\
1071 /*DOC*/ "Normalisation factor when computing scores" ,\
1072 /*Parameter*/ &do_normalise ,\
1075 /*Min_value*/ "-10000" ,\
1076 /*Max Value*/ "10000" \
1078 /*PARAMETER PROTOTYPE: IN */
1079 template_file_list=declare_char (100, STRING);
1080 n_template_file=get_cl_param( \
1084 /*Name*/ "-template_file" ,\
1085 /*Flag*/ &garbage ,\
1087 /*OPTIONAL?*/ OPTIONAL ,\
1088 /*MAX Nval*/ 1000 ,\
1089 /*DOC*/ "List of templates file for the sequences",\
1090 /*Parameter*/ template_file_list , \
1092 /*Def 2*/ "stdin" ,\
1093 /*Min_value*/ "any" ,\
1094 /*Max Value*/ "any" \
1097 /*PARAMETER PROTOTYPE: VERSION */
1098 setenv_list=declare_char (100, STRING);
1099 n_setenv=get_cl_param(\
1103 /*Name*/ "-setenv" ,\
1104 /*Flag*/ &do_version ,\
1106 /*OPTIONAL?*/ OPTIONAL ,\
1108 /*DOC*/ "Declares a parameter variable" ,\
1109 /*Parameter*/ setenv_list , \
1112 /*Min_value*/ "0" ,\
1115 /*PARAMETER PROTOTYPE: IN */
1116 template_mode_list=declare_char (100, STRING);
1117 n_template_mode=get_cl_param( \
1121 /*Name*/ "-template_mode" ,\
1122 /*Flag*/ &garbage ,\
1124 /*OPTIONAL?*/ OPTIONAL ,\
1125 /*MAX Nval*/ 1000 ,\
1126 /*DOC*/ "List of template procedures",\
1127 /*Parameter*/ template_mode_list , \
1129 /*Def 2*/ "stdin" ,\
1130 /*Min_value*/ "any" ,\
1131 /*Max Value*/ "any" \
1133 for (a=0; a<n_template_mode; a++)
1135 sprintf (template_file_list[n_template_file++], "%s", template_mode_list [a]);
1137 /*PARAMETER PROTOTYPE: remove_template_file*/
1143 /*Name*/ "-remove_template_file" ,\
1144 /*Flag*/ &remove_template_file ,\
1146 /*OPTIONAL?*/ OPTIONAL ,\
1148 /*DOC*/ "Remove all the template files: 0 keep all, 1: only remove the template files 2: remove template files AND template lists " ,\
1149 /*Parameter*/ &remove_template_file ,\
1152 /*Min_value*/ "any" ,\
1153 /*Max Value*/ "any" \
1155 set_int_variable ("remove_template_file", remove_template_file);
1157 /*PARAMETER PROTOTYPE: IN */
1158 profile_template_file_list=declare_char (100, STRING);
1159 n_profile_template_file=get_cl_param( \
1163 /*Name*/ "-profile_template_file" ,\
1164 /*Flag*/ &garbage ,\
1166 /*OPTIONAL?*/ OPTIONAL ,\
1167 /*MAX Nval*/ 1000 ,\
1168 /*DOC*/ "List of templates files asscoaciated with profiles",\
1169 /*Parameter*/ profile_template_file_list , \
1171 /*Def 2*/ "stdin" ,\
1172 /*Min_value*/ "any" ,\
1173 /*Max Value*/ "any" \
1176 /*PARAMETER PROTOTYPE: IN */
1177 list_file=declare_char (2000, STRING);
1178 n_list=get_cl_param(\
1183 /*Flag*/ &garbage ,\
1185 /*OPTIONAL?*/ OPTIONAL ,\
1186 /*MAX Nval*/ 2000 ,\
1187 /*DOC*/ "Reads the Ssequences, Mmethods, Llibraries,Xmatrices,Rprofiles,Pstructures,AAlignments" ,\
1188 /*Parameter*/ list_file ,\
1190 /*Def 2*/ "stdin" ,\
1191 /*Min_value*/ "any" ,\
1192 /*Max Value*/ "any" \
1196 /*PARAMETER PROTOTYPE: IN */
1197 seq_list=declare_char (1000, STRING);
1198 n_seq_list=get_cl_param( \
1203 /*Flag*/ &garbage , \
1205 /*OPTIONAL?*/ OPTIONAL , \
1206 /*MAX Nval*/ 1000 , \
1207 /*DOC*/ "List of sequences in any acceptable format", \
1208 /*Parameter*/ seq_list , \
1210 /*Def 2*/ "stdin" , \
1211 /*Min_value*/ "any" , \
1212 /*Max Value*/ "any" \
1214 aln_file_list=declare_char (1000, STRING);
1215 n_aln_file_list=get_cl_param( \
1220 /*Flag*/ &garbage , \
1222 /*OPTIONAL?*/ OPTIONAL , \
1223 /*MAX Nval*/ 1000 , \
1224 /*DOC*/ "List of sequences in any acceptable format", \
1225 /*Parameter*/ aln_file_list , \
1227 /*Def 2*/ "stdin" , \
1228 /*Min_value*/ "any" , \
1229 /*Max Value*/ "any" \
1231 method_limits=declare_char (1000, STRING);
1232 n_method_limits=get_cl_param( \
1236 /*Name*/ "-method_limits" , \
1237 /*Flag*/ &garbage , \
1239 /*OPTIONAL?*/ OPTIONAL , \
1240 /*MAX Nval*/ 1000 , \
1241 /*DOC*/ "List of limits for selected methods: method maxnseq maxlen (-1 = nolimit)", \
1242 /*Parameter*/ method_limits , \
1245 /*Min_value*/ "any" , \
1246 /*Max Value*/ "any" \
1248 method_list=declare_char (1000, STRING);
1249 n_method_list=get_cl_param( \
1253 /*Name*/ "-method" , \
1254 /*Flag*/ &garbage , \
1256 /*OPTIONAL?*/ OPTIONAL , \
1257 /*MAX Nval*/ 1000 , \
1258 /*DOC*/ "List of sequences in any acceptable format", \
1259 /*Parameter*/ method_list , \
1262 /*Min_value*/ "any" , \
1263 /*Max Value*/ "any" \
1265 lib_file_list=declare_char (1000, STRING);
1266 n_lib_file_list=get_cl_param( \
1271 /*Flag*/ &garbage , \
1273 /*OPTIONAL?*/ OPTIONAL , \
1274 /*MAX Nval*/ 1000 , \
1275 /*DOC*/ "List of sequences in any acceptable format", \
1276 /*Parameter*/ lib_file_list , \
1278 /*Def 2*/ "stdin" , \
1279 /*Min_value*/ "any" , \
1280 /*Max Value*/ "any" \
1282 profile_list=declare_char ( 2000, STRING);
1283 n_profile_list=get_cl_param( \
1287 /*Name*/ "-profile" ,\
1288 /*Flag*/ &garbage ,\
1290 /*OPTIONAL?*/ OPTIONAL ,\
1291 /*MAX Nval*/ 2000 ,\
1292 /*DOC*/ "Input one or many MSA that will be treated as profiles" ,\
1293 /*Parameter*/ profile_list ,\
1296 /*Min_value*/ "any" ,\
1297 /*Max Value*/ "any" \
1299 declare_name (profile1);
1304 /*Name*/ "-profile1" ,\
1305 /*Flag*/ &garbage ,\
1307 /*OPTIONAL?*/ OPTIONAL ,\
1309 /*DOC*/ "Input one profile (ClustalW option)" ,\
1310 /*Parameter*/ &profile1 ,\
1313 /*Min_value*/ "any" ,\
1314 /*Max Value*/ "any" \
1316 declare_name (profile2);
1321 /*Name*/ "-profile2" ,\
1322 /*Flag*/ &garbage ,\
1324 /*OPTIONAL?*/ OPTIONAL ,\
1326 /*DOC*/ "Input a profile (ClustalW option)" ,\
1327 /*Parameter*/ &profile2 ,\
1330 /*Min_value*/ "any" ,\
1331 /*Max Value*/ "any" \
1334 pdb_list=declare_char ( 200, STRING);
1335 n_pdb=get_cl_param(\
1340 /*Flag*/ &garbage ,\
1342 /*OPTIONAL?*/ OPTIONAL ,\
1344 /*DOC*/ "Reads/fetch a pdb file: PDBID(PDB_CHAIN)[opt] (FIRST,LAST)[opt]," ,\
1345 /*Parameter*/ pdb_list ,\
1348 /*Min_value*/ "any" ,\
1349 /*Max Value*/ "any" \
1352 /*PARAMETER PROTOTYPE: OUT_LIB */
1358 /*Name*/ "-relax_lib" ,\
1359 /*Flag*/ &garbage ,\
1361 /*OPTIONAL?*/ OPTIONAL ,\
1363 /*DOC*/ "self extend the library, without adding new positions", \
1364 /*Parameter*/&relax_lib ,\
1367 /*Min_value*/ "any" ,\
1368 /*Max Value*/ "any" \
1370 /*PARAMETER PROTOTYPE: OUT_LIB */
1376 /*Name*/ "-filter_lib" ,\
1377 /*Flag*/ &garbage ,\
1379 /*OPTIONAL?*/ OPTIONAL ,\
1381 /*DOC*/ "Removes from the library every value below the threshold",\
1382 /*Parameter*/&filter_lib ,\
1385 /*Min_value*/ "any" ,\
1386 /*Max Value*/ "any" \
1388 /*PARAMETER PROTOTYPE: SHRINK_LIB */
1394 /*Name*/ "-shrink_lib" ,\
1395 /*Flag*/ &garbage ,\
1397 /*OPTIONAL?*/ OPTIONAL ,\
1399 /*DOC*/ "Runks linked_pairwise on the lib to remove every useless diagonal" ,\
1400 /*Parameter*/&shrink_lib ,\
1403 /*Min_value*/ "any" ,\
1404 /*Max Value*/ "any" \
1406 /*PARAMETER PROTOTYPE: OUT_LIB */
1407 declare_name (out_lib);
1412 /*Name*/ "-out_lib" ,\
1413 /*Flag*/ &garbage ,\
1415 /*OPTIONAL?*/ OPTIONAL ,\
1417 /*DOC*/ "Prompts the program to write the computed library file" ,\
1418 /*Parameter*/&out_lib ,\
1420 /*Def 2*/ "default" ,\
1421 /*Min_value*/ "any" ,\
1422 /*Max Value*/ "any" \
1424 /*PARAMETER PROTOTYPE: OUT_LIB_MODE */
1425 declare_name (out_lib_mode);
1430 /*Name*/ "-out_lib_mode" ,\
1431 /*Flag*/ &garbage ,\
1433 /*OPTIONAL?*/ OPTIONAL ,\
1435 /*DOC*/ "Save the primary or the extended library:[primary|extende]extended_[pair|lib]_[raw|pc]" ,\
1436 /*Parameter*/&out_lib_mode ,\
1437 /*Def 1*/ "primary" ,\
1438 /*Def 2*/ "extended",\
1439 /*Min_value*/ "any" ,\
1440 /*Max Value*/ "any" \
1442 /*PARAMETER PROTOTYPE: LIB_ONLY */
1448 /*Name*/ "-lib_only" ,\
1449 /*Flag*/ &garbage ,\
1451 /*OPTIONAL?*/ OPTIONAL ,\
1453 /*DOC*/ "Only Compute the library",\
1454 /*Parameter*/&lib_only ,\
1457 /*Min_value*/ "any" ,\
1458 /*Max Value*/ "any" \
1461 /*PARAMETER PROTOTYPE: OUT_LIB */
1462 declare_name (outseqweight);
1467 /*Name*/ "-outseqweight" ,\
1468 /*Flag*/ &garbage ,\
1470 /*OPTIONAL?*/ OPTIONAL ,\
1472 /*DOC*/ "Prompts the program to write the sequuence weight values" ,\
1473 /*Parameter*/&outseqweight ,\
1475 /*Def 2*/ "default" ,\
1476 /*Min_value*/ "any" ,\
1477 /*Max Value*/ "any" \
1479 /*PARAMETER PROTOTYPE: DPA */
1487 /*OPTIONAL?*/ OPTIONAL ,\
1489 /*DOC*/ "Use DPA mode" ,\
1490 /*Parameter*/ &dpa ,\
1493 /*Min_value*/ "any" ,\
1494 /*Max Value*/ "any" \
1497 /*PARAMETER PROTOTYPE: SEQ TO ALIGN */
1498 declare_name (seq_source);
1503 /*Name*/ "-seq_source",\
1504 /*Flag*/ &garbage ,\
1506 /*OPTIONAL?*/ OPTIONAL ,\
1508 /*DOC*/ "Indicates the files that will be used as sequence sources, important for dpa. With the default mode alignments must be provided with the Sflag as well as tye Aflag if they contribute novel sequences",\
1509 /*Parameter*/ &seq_source ,\
1512 /*Min_value*/ "any" ,\
1513 /*Max Value*/ "any" \
1516 /*PARAMETER PROTOTYPE: COSMETIC PENALTY */
1521 /*Name*/ "-cosmetic_penalty" ,\
1522 /*Flag*/ &garbage ,\
1524 /*OPTIONAL?*/ OPTIONAL ,\
1526 /*DOC*/ "A very low Gap Opening Penalty.It only affects the non stable portions of the alignmnent.Negative values penalize gaps, positive values reward them" ,\
1527 /*Parameter*/ &cosmetic_penalty ,\
1530 /*Min_value*/ "any" ,\
1531 /*Max Value*/ "any" \
1533 /*PARAMETER PROTOTYPE: GAPOPEN */
1538 /*Name*/ "-gapopen" ,\
1539 /*Flag*/ &garbage ,\
1541 /*OPTIONAL?*/ OPTIONAL ,\
1543 /*DOC*/ "Gap opening penalty. Must be negative, best matches get a score of 1000" ,\
1544 /*Parameter*/ &gop ,\
1547 /*Min_value*/ "any" ,\
1548 /*Max Value*/ "any" \
1551 /*PARAMETER PROTOTYPE: GAPEXT */
1556 /*Name*/ "-gapext" ,\
1557 /*Flag*/ &garbage ,\
1559 /*OPTIONAL?*/ OPTIONAL ,\
1561 /*DOC*/ "Gap Extension Penalty. Positive values give rewards to gaps and prevent the alignment of unrelated segments" ,\
1562 /*Parameter*/ &gep ,\
1565 /*Min_value*/ "any" ,\
1566 /*Max Value*/ "any" \
1569 /*PARAMETER PROTOTYPE: F_GAPOPEN */
1574 /*Name*/ "-fgapopen" ,\
1575 /*Flag*/ &garbage ,\
1577 /*OPTIONAL?*/ OPTIONAL ,\
1579 /*DOC*/ "Deprecated" ,\
1580 /*Parameter*/ &f_gop ,\
1583 /*Min_value*/ "any" ,\
1584 /*Max Value*/ "any" \
1586 /*PARAMETER PROTOTYPE: F_GAPEXT */
1591 /*Name*/ "-fgapext" ,\
1592 /*Flag*/ &garbage ,\
1594 /*OPTIONAL?*/ OPTIONAL ,\
1596 /*DOC*/ "Deprecated" ,\
1597 /*Parameter*/ &f_gep ,\
1600 /*Min_value*/ "any" ,\
1601 /*Max Value*/ "any" \
1603 /*PARAMETER PROTOTYPE: NEW_TREE */
1608 /*Name*/ "-nomatch" ,\
1609 /*Flag*/ &garbage ,\
1611 /*OPTIONAL?*/ OPTIONAL ,\
1613 /*DOC*/ "Deprecated" ,\
1614 /*Parameter*/ &nomatch ,\
1617 /*Min_value*/ "any" ,\
1618 /*Max Value*/ "any" \
1620 declare_name ( tree_file);
1625 /*Name*/ "-newtree" ,\
1626 /*Flag*/ &garbage ,\
1628 /*OPTIONAL?*/ OPTIONAL ,\
1630 /*DOC*/ "Name of the output guide tree" ,\
1631 /*Parameter*/&tree_file ,\
1632 /*Def 1*/ "default" ,\
1634 /*Min_value*/ "any" ,\
1635 /*Max Value*/ "any" \
1637 declare_name ( ph_tree_file);
1643 /*Flag*/ &garbage ,\
1645 /*OPTIONAL?*/ OPTIONAL ,\
1647 /*DOC*/ "Name of the output guide tree" ,\
1648 /*Parameter*/&ph_tree_file ,\
1650 /*Def 2*/ "default" ,\
1651 /*Min_value*/ "any" ,\
1652 /*Max Value*/ "any" \
1655 /*PARAMETER PROTOTYPE: USETREE */
1656 declare_name ( use_tree);
1661 /*Name*/ "-usetree",\
1662 /*Flag*/ &garbage ,\
1664 /*OPTIONAL?*/ OPTIONAL ,\
1666 /*DOC*/ "Use an existing guide tree" ,\
1667 /*Parameter*/ &use_tree ,\
1670 /*Min_value*/ "any" ,\
1671 /*Max Value*/ "any" \
1673 /*PARAMETER PROTOTYPE: */
1674 declare_name ( tree_mode);
1679 /*Name*/ "-tree_mode" ,\
1680 /*Flag*/ &garbage ,\
1682 /*OPTIONAL?*/ OPTIONAL ,\
1684 /*DOC*/ "nj, upgma, cwph",\
1685 /*Parameter*/ &tree_mode ,\
1688 /*Min_value*/ "1" ,\
1691 /*PARAMETER PROTOTYPE: OUT_LIB */
1692 declare_name ( distance_matrix_mode);
1697 /*Name*/ "-distance_matrix_mode" ,\
1698 /*Flag*/ &garbage ,\
1700 /*OPTIONAL?*/ OPTIONAL ,\
1702 /*DOC*/ "Computation of the distances for the tree: slow, fast, very_fast, ktup" ,\
1703 /*Parameter*/ &distance_matrix_mode ,\
1705 /*Def 2*/ "idscore" ,\
1706 /*Min_value*/ "any" ,\
1707 /*Max Value*/ "any" \
1709 /*PARAMETER PROTOTYPE: OUT_LIB */
1710 declare_name ( distance_matrix_sim_mode);
1715 /*Name*/ "-distance_matrix_sim_mode" ,\
1716 /*Flag*/ &garbage ,\
1718 /*OPTIONAL?*/ OPTIONAL ,\
1720 /*DOC*/ "Choice of the distance measure: <mat>_sim1, _sim2, _sim3, _cov, _gap" ,\
1721 /*Parameter*/ &distance_matrix_sim_mode ,\
1722 /*Def 1*/ "idmat_sim1" ,\
1723 /*Def 2*/ "idmat_sim1" ,\
1724 /*Min_value*/ "any" ,\
1725 /*Max Value*/ "any" \
1727 /*PARAMETER PROTOTYPE: OUT_LIB */
1732 /*Name*/ "-quicktree" ,\
1733 /*Flag*/ &quicktree ,\
1735 /*OPTIONAL?*/ OPTIONAL ,\
1737 /*DOC*/ "Use distance_matrix_mode=very_fast" ,\
1738 /*Parameter*/ &quicktree ,\
1741 /*Min_value*/ "any" ,\
1742 /*Max Value*/ "any" \
1744 if ( quicktree)sprintf ( distance_matrix_mode, "very_fast");
1745 /*PARAMETER PROTOTYPE: OUTFILE */
1746 declare_name ( out_aln);
1747 tot_out_aln=declare_char (200, STRING);
1752 /*Name*/ "-outfile" ,\
1753 /*Flag*/ &garbage ,\
1755 /*OPTIONAL?*/ OPTIONAL ,\
1757 /*DOC*/ "Name of the output alignment" ,\
1758 /*Parameter*/ &out_aln ,\
1759 /*Def 1*/ "default" ,\
1761 /*Min_value*/ "any" ,\
1762 /*Max Value*/ "any" \
1765 /*PARAMETER PROTOTYPE: MAXIMISE */
1770 /*Name*/ "-maximise" ,\
1771 /*Flag*/ &maximise ,\
1773 /*OPTIONAL?*/ OPTIONAL ,\
1775 /*DOC*/ "Deprecated" ,\
1776 /*Parameter*/ &maximise ,\
1779 /*Min_value*/ "any" ,\
1780 /*Max Value*/ "any" \
1783 /*PARAMETER PROTOTYPE: OUTPUT_FORMAT */
1784 out_aln_format=declare_char ( 200, STRING);
1785 n_out_aln_format=get_cl_param(\
1789 /*Name*/ "-output" ,\
1790 /*Flag*/ &garbage ,\
1792 /*OPTIONAL?*/ OPTIONAL ,\
1794 /*DOC*/ "Specifies one or many formats that must be output: clustalw_aln, msf_aln. The file extension is the output format" ,\
1795 /*Parameter*/ out_aln_format,\
1796 /*Def 1*/ "aln,html" ,\
1798 /*Min_value*/ "any" ,\
1799 /*Max Value*/ "any" \
1801 /*PARAMETER PROTOTYPE: INFILE */
1802 declare_name (infile);
1807 /*Name*/ "-infile" ,\
1808 /*Flag*/ &garbage ,\
1810 /*OPTIONAL?*/ OPTIONAL ,\
1812 /*DOC*/ "input a pre-computed alignment, or a file to reformat" ,\
1813 /*Parameter*/ &infile ,\
1816 /*Min_value*/ "any" ,\
1817 /*Max Value*/ "any" \
1820 /*PARAMETER PROTOTYPE: INFILE */
1821 declare_name (matrix);
1826 /*Name*/ "-matrix" ,\
1827 /*Flag*/ &garbage ,\
1829 /*OPTIONAL?*/ OPTIONAL ,\
1831 /*DOC*/ "Specifies the substitution matrix.",\
1832 /*Parameter*/ &matrix ,\
1833 /*Def 1*/ "default" ,\
1834 /*Def 2*/ "default" ,\
1835 /*Min_value*/ "any" ,\
1836 /*Max Value*/ "any" \
1838 /*PARAMETER PROTOTYPE: TG_MODE */
1844 /*Name*/ "-tg_mode" ,\
1845 /*Flag*/ &garbage ,\
1847 /*OPTIONAL?*/ OPTIONAL ,\
1849 /*DOC*/ "0: Penalise Term gap with gapopen and gapext\n1: gapopen only\n2: No penalty\n",\
1850 /*Parameter*/ &tg_mode ,\
1853 /*Min_value*/ "any" ,\
1854 /*Max Value*/ "any" \
1856 /*PARAMETER PROTOTYPE: DP_MODE */
1857 declare_name (profile_mode);
1862 /*Name*/ "-profile_mode" ,\
1863 /*Flag*/ &garbage ,\
1865 /*OPTIONAL?*/ OPTIONAL ,\
1867 /*DOC*/ "Function used to compute profile2profile scores",\
1868 /*Parameter*/ &profile_mode ,\
1869 /*Def 1*/ "cw_profile_profile",\
1870 /*Def 2*/ "cw_profile_profile",\
1871 /*Min_value*/ "any" ,\
1872 /*Max Value*/ "any" \
1875 declare_name (profile_comparison);
1880 /*Name*/ "-profile_comparison" ,\
1881 /*Flag*/ &garbage ,\
1883 /*OPTIONAL?*/ OPTIONAL ,\
1885 /*DOC*/ "Method used to compare two profiles: full<N>: compares <every | N best> pair of sequence and every pair of structure if a structure method is used,profile: compares only the profiles. ",\
1886 /*Parameter*/ &profile_comparison ,\
1887 /*Def 1*/ "profile",\
1888 /*Def 2*/ "full50",\
1889 /*Min_value*/ "any" ,\
1890 /*Max Value*/ "any" \
1892 /*PARAMETER PROTOTYPE: DP_MODE */
1893 declare_name (dp_mode);
1898 /*Name*/ "-dp_mode" ,\
1899 /*Flag*/ &garbage ,\
1901 /*OPTIONAL?*/ OPTIONAL ,\
1903 /*DOC*/ "Type of alignment algorithm used by T-Coffee: gotoh_pair_wise, myers_millers_pair_wise, " ,\
1904 /*Parameter*/ &dp_mode ,\
1905 /*Def 1*/ "linked_pair_wise",\
1906 /*Def 2*/ "cfasta_pair_wise",\
1907 /*Min_value*/ "any" ,\
1908 /*Max Value*/ "any" \
1910 /*PARAMETER PROTOTYPE: KTUP */
1915 /*Name*/ "-ktuple" ,\
1916 /*Flag*/ &garbage ,\
1918 /*OPTIONAL?*/ OPTIONAL ,\
1920 /*DOC*/ "Word size when using the heursitic dynamic programming modes fasta_pair_wise and cfasta_pair_wise " ,\
1921 /*Parameter*/ &ktup ,\
1924 /*Min_value*/ "any" ,\
1925 /*Max Value*/ "any" \
1927 /*PARAMETER PROTOTYPE: FASTA_STEP */
1932 /*Name*/ "-ndiag" ,\
1933 /*Flag*/ &garbage ,\
1935 /*OPTIONAL?*/ OPTIONAL ,\
1937 /*DOC*/ "Number of diagonals to consider when using the heursitic dynamic programming modes fasta_pair_wise and cfasta_pair_wise" ,\
1938 /*Parameter*/ &fasta_step ,\
1941 /*Min_value*/ "any" ,\
1942 /*Max Value*/ "any" \
1944 /*PARAMETER PROTOTYPE: FASTA_STEP */
1949 /*Name*/ "-diag_threshold" ,\
1950 /*Flag*/ &garbage ,\
1952 /*OPTIONAL?*/ OPTIONAL ,\
1955 /*Parameter*/ &diag_threshold ,\
1958 /*Min_value*/ "any" ,\
1959 /*Max Value*/ "any" \
1961 /*PARAMETER PROTOTYPE: diag_mode */
1966 /*Name*/ "-diag_mode" ,\
1967 /*Flag*/ &garbage ,\
1969 /*OPTIONAL?*/ OPTIONAL ,\
1971 /*DOC*/ "0: Use the whole Diag\n1: Use the best match\n" ,\
1972 /*Parameter*/ &diag_mode ,\
1975 /*Min_value*/ "any" ,\
1976 /*Max Value*/ "any" \
1978 /*PARAMETER PROTOTYPE: SIM_MATRIX */
1979 declare_name (sim_matrix);
1984 /*Name*/ "-sim_matrix" ,\
1985 /*Flag*/ &garbage ,\
1987 /*OPTIONAL?*/ OPTIONAL ,\
1989 /*DOC*/ "Degenerated matrix used to compute a similarity" ,\
1990 /*Parameter*/ &sim_matrix ,\
1991 /*Def 1*/ "vasiliky",\
1993 /*Min_value*/ "any" ,\
1994 /*Max Value*/ "any" \
1997 /*PARAMETER PROTOTYPE: INFILE */
1998 declare_name (transform);
2003 /*Name*/ "-transform" ,\
2004 /*Flag*/ &garbage ,\
2006 /*OPTIONAL?*/ OPTIONAL ,\
2008 /*DOC*/ "dna2rna, rna2dna, dna2prot", \
2009 /*Parameter*/ &transform ,\
2012 /*Min_value*/ "any" ,\
2013 /*Max Value*/ "any" \
2015 /*PARAMETER PROTOTYPE: INFILE */
2020 /*Name*/ "-extend_seq" ,\
2021 /*Flag*/ &extend_seq ,\
2023 /*OPTIONAL?*/ OPTIONAL ,\
2025 /*DOC*/ "extend the sequences", \
2026 /*Parameter*/ &extend_seq ,\
2029 /*Min_value*/ "any" ,\
2030 /*Max Value*/ "any" \
2033 /*PARAMETER PROTOTYPE: INFILE */
2034 declare_name (outorder);
2039 /*Name*/ "-outorder" ,\
2040 /*Flag*/ &garbage ,\
2042 /*OPTIONAL?*/ OPTIONAL ,\
2044 /*DOC*/ "Specifies the order of the sequences in the msa: input or aligned" ,\
2045 /*Parameter*/ &outorder ,\
2046 /*Def 1*/ "input" ,\
2047 /*Def 2*/ "input" ,\
2048 /*Min_value*/ "any" ,\
2049 /*Max Value*/ "any" \
2052 /*PARAMETER PROTOTYPE: INFILE */
2053 declare_name (inorder);
2058 /*Name*/ "-inorder" ,\
2059 /*Flag*/ &garbage ,\
2061 /*OPTIONAL?*/ OPTIONAL ,\
2063 /*DOC*/ "aligned: sort the sequences in alphabetic order before starting thus making the input order irrelevant but delivering a library in arbitratry order, keep: input order is used in the library but results become input order dependant" ,\
2064 /*Parameter*/ &inorder ,\
2065 /*Def 1*/ "aligned" ,\
2066 /*Def 2*/ "input" ,\
2067 /*Min_value*/ "any" ,\
2068 /*Max Value*/ "any" \
2071 /*PARAMETER PROTOTYPE: INFILE */
2072 declare_name (output_res_num);
2077 /*Name*/ "-seqnos" ,\
2078 /*Flag*/ &garbage ,\
2080 /*OPTIONAL?*/ OPTIONAL ,\
2082 /*DOC*/ "Adds Residue Numbers to the MSA" ,\
2083 /*Parameter*/ &output_res_num ,\
2086 /*Min_value*/ "any" ,\
2087 /*Max Value*/ "any" \
2089 /*PARAMETER PROTOTYPE: INFILE */
2090 declare_name (residue_case);
2096 /*Flag*/ &garbage ,\
2098 /*OPTIONAL?*/ OPTIONAL ,\
2100 /*DOC*/ "Causes the case to be: kept:lower:upper." ,\
2101 /*Parameter*/ &residue_case ,\
2103 /*Def 2*/ "upper" ,\
2104 /*Min_value*/ "any" ,\
2105 /*Max Value*/ "any" \
2108 /*PARAMETER PROTOTYPE: CPU */
2115 /*Flag*/ &garbage ,\
2117 /*OPTIONAL?*/ OPTIONAL ,\
2119 /*DOC*/ "Makes it possible to add a pre-specified amount of cpu time to the measured usage" ,\
2120 /*Parameter*/ &extra_cpu ,\
2123 /*Min_value*/ "any" ,\
2124 /*Max Value*/ "any" \
2127 /*PARAMETER PROTOTYPE: MAXNSEQ */
2133 /*Name*/ "-maxnseq" ,\
2134 /*Flag*/ &garbage ,\
2136 /*OPTIONAL?*/ OPTIONAL ,\
2138 /*DOC*/ "Maximum number of sequences (-1=no max)" ,\
2139 /*Parameter*/ &maxnseq ,\
2142 /*Min_value*/ "any" ,\
2143 /*Max Value*/ "any" \
2146 /*PARAMETER PROTOTYPE: MAXLEN */
2152 /*Name*/ "-maxlen" ,\
2153 /*Flag*/ &garbage ,\
2155 /*OPTIONAL?*/ OPTIONAL ,\
2157 /*DOC*/ "Maximum length of a sequence (-1=no max)" ,\
2158 /*Parameter*/ &maxlen ,\
2161 /*Min_value*/ "any" ,\
2162 /*Max Value*/ "any" \
2164 /*PARAMETER PROTOTYPE: WEIGHT */
2170 /*Name*/ "-sample_dp" ,\
2171 /*Flag*/ &garbage ,\
2173 /*OPTIONAL?*/ OPTIONAL ,\
2175 /*DOC*/ "defines the tie breaking strategy (only with gotoh_pair_wise)" ,\
2176 /*Parameter*/ &sample_dp ,\
2179 /*Min_value*/ "0" ,\
2182 if ( sample_dp)cputenv ("SAMPLE_DP_4_TCOFFEE=%d", sample_dp);
2185 /*PARAMETER PROTOTYPE: WEIGHT */
2186 declare_name ( weight);
2191 /*Name*/ "-weight" ,\
2192 /*Flag*/ &garbage ,\
2194 /*OPTIONAL?*/ OPTIONAL ,\
2196 /*DOC*/ "Defines the library weight: sim OR sim_(matrix) OR winsim" ,\
2197 /*Parameter*/ &weight ,\
2198 /*Def 1*/ "default" ,\
2200 /*Min_value*/ "any" ,\
2201 /*Max Value*/ "any" \
2202 ); /*PARAMETER PROTOTYPE: WEIGHT */
2203 declare_name ( seq_weight);
2209 /*Name*/ "-seq_weight" ,\
2210 /*Flag*/ &garbage ,\
2212 /*OPTIONAL?*/ OPTIONAL ,\
2214 /*DOC*/ "Defines the sequences weighting scheme t_coffee" ,\
2215 /*Parameter*/ &seq_weight ,\
2216 /*Def 1*/ "t_coffee" ,\
2217 /*Def 2*/ "t_coffee" ,\
2218 /*Min_value*/ "any" ,\
2219 /*Max Value*/ "any" \
2222 /*PARAMETER PROTOTYPE: DO ALIGN */
2227 /*Name*/ "-align" ,\
2228 /*Flag*/ &do_align ,\
2230 /*OPTIONAL?*/ OPTIONAL ,\
2232 /*DOC*/ "forces the program to make the alignment" ,\
2233 /*Parameter*/ &do_align ,\
2236 /*Min_value*/ "any" ,\
2237 /*Max Value*/ "any" \
2239 /*PARAMETER PROTOTYPE: DO DOMAIN */
2244 /*Name*/ "-mocca" ,\
2245 /*Flag*/ &do_domain ,\
2247 /*OPTIONAL?*/ OPTIONAL ,\
2249 /*DOC*/ "forces the program to extract domains" ,\
2250 /*Parameter*/ &do_domain ,\
2253 /*Min_value*/ "any" ,\
2254 /*Max Value*/ "any" \
2258 /*PARAMETER PROTOTYPE: DO DOMAIN */
2263 /*Name*/ "-domain" ,\
2264 /*Flag*/ &do_domain ,\
2266 /*OPTIONAL?*/ OPTIONAL ,\
2268 /*DOC*/ "forces the program to extract domains" ,\
2269 /*Parameter*/ &do_domain ,\
2272 /*Min_value*/ "any" ,\
2273 /*Max Value*/ "any" \
2276 /*PARAMETER PROTOTYPE: Domain Param */
2281 /*Name*/ "-start" ,\
2282 /*Flag*/ &domain_start ,\
2284 /*OPTIONAL?*/ OPTIONAL ,\
2286 /*DOC*/ "start of the master domain in the mocca mode" ,\
2287 /*Parameter*/ &domain_start ,\
2290 /*Min_value*/ "any" ,\
2291 /*Max Value*/ "any" \
2298 /*Flag*/ &domain_len ,\
2300 /*OPTIONAL?*/ OPTIONAL ,\
2302 /*DOC*/ "length of the master domain in the mocca mode" ,\
2303 /*Parameter*/ &domain_len ,\
2306 /*Min_value*/ "any" ,\
2307 /*Max Value*/ "any" \
2314 /*Name*/ "-scale" ,\
2315 /*Flag*/ &domain_scale ,\
2317 /*OPTIONAL?*/ OPTIONAL ,\
2319 /*DOC*/ "Decreases the t_coffee score by Scale, so that non match get negative values" ,\
2320 /*Parameter*/ &domain_scale ,\
2323 /*Min_value*/ "any" ,\
2324 /*Max Value*/ "any" \
2330 /*Name*/ "-mocca_interactive" ,\
2331 /*Flag*/ &domain_interactive ,\
2333 /*OPTIONAL?*/ OPTIONAL ,\
2335 /*DOC*/ "Runs Mocca in an interactive manneer" ,\
2336 /*Parameter*/ &domain_interactive,\
2339 /*Min_value*/ "any" ,\
2340 /*Max Value*/ "any" \
2342 /*PARAMETER PROTOTYPE: WEIGHT */
2343 declare_name (method_evaluate_mode);
2348 /*Name*/ "-method_evaluate_mode" ,\
2349 /*Flag*/ &garbage ,\
2351 /*OPTIONAL?*/ OPTIONAL ,\
2353 /*DOC*/ "Specifies which method should be used to evaluate the score at the pairwise level" ,\
2354 /*Parameter*/ &method_evaluate_mode ,\
2355 /*Def 1*/ "default" ,\
2356 /*Def 2*/ "default" ,\
2357 /*Min_value*/ "any" ,\
2358 /*Max Value*/ "any" \
2360 /*PARAMETER PROTOTYPE: WEIGHT */
2361 declare_name (evaluate_mode);
2366 /*Name*/ "-evaluate_mode" ,\
2367 /*Flag*/ &garbage ,\
2369 /*OPTIONAL?*/ OPTIONAL ,\
2371 /*DOC*/ "Mode used to produce the color output:t_coffee_fast,t_coffee_slow " ,\
2372 /*Parameter*/ &evaluate_mode ,\
2373 /*Def 1*/ "triplet" ,\
2375 /*Min_value*/ "any" ,\
2376 /*Max Value*/ "any" \
2382 /*Name*/ "-get_type" ,\
2383 /*Flag*/ &get_type ,\
2385 /*OPTIONAL?*/ OPTIONAL ,\
2387 /*DOC*/ "forces t_coffee top get the type of the sequences" ,\
2388 /*Parameter*/ &get_type ,\
2391 /*Min_value*/ "0" ,\
2399 /*Name*/ "-clean_aln" ,\
2400 /*Flag*/ &clean_aln ,\
2402 /*OPTIONAL?*/ OPTIONAL ,\
2404 /*DOC*/ "Forces weak portion of aln to be realigned" ,\
2405 /*Parameter*/ &clean_aln ,\
2408 /*Min_value*/ "0" ,\
2415 /*Name*/ "-clean_threshold" ,\
2416 /*Flag*/ &clean_threshold ,\
2418 /*OPTIONAL?*/ OPTIONAL ,\
2420 /*DOC*/ "Threshold for the portions of the MSA that will are realigned by '-clean_evaluate_mode'. The threshold refers to the CORE score set by '-evaluate_mode'" ,\
2421 /*Parameter*/ &clean_threshold ,\
2424 /*Min_value*/ "any" ,\
2425 /*Max Value*/ "any" \
2431 /*Name*/ "-clean_iteration" ,\
2432 /*Flag*/ &clean_iteration ,\
2434 /*OPTIONAL?*/ OPTIONAL ,\
2436 /*DOC*/ "Number of rounds for '-clean_aln'" ,\
2437 /*Parameter*/ &clean_iteration ,\
2440 /*Min_value*/ "any" ,\
2441 /*Max Value*/ "any" \
2443 declare_name (clean_evaluate_mode);
2448 /*Name*/ "-clean_evaluate_mode" ,\
2449 /*Flag*/ &garbage ,\
2451 /*OPTIONAL?*/ OPTIONAL ,\
2453 /*DOC*/ "Mode used to score residues (see evaluate_mode)" ,\
2454 /*Parameter*/ &clean_evaluate_mode ,\
2455 /*Def 1*/ "t_coffee_fast" ,\
2456 /*Def 2*/ "t_coffee_fast" ,\
2457 /*Min_value*/ "any" ,\
2458 /*Max Value*/ "any" \
2461 /*PARAMETER PROTOTYPE: DO EXTENDED MATRIX */
2466 /*Name*/ "-extend_matrix" ,\
2467 /*Flag*/ &do_extended_matrix ,\
2469 /*OPTIONAL?*/ OPTIONAL ,\
2471 /*DOC*/ "Deprecated" ,\
2472 /*Parameter*/ &do_extended_matrix ,\
2475 /*Min_value*/ "any" ,\
2476 /*Max Value*/ "any" \
2482 /*Name*/ "-prot_min_sim" ,\
2483 /*Flag*/ &prot_min_sim ,\
2485 /*OPTIONAL?*/ OPTIONAL ,\
2487 /*DOC*/ "Minimum similarity between a sequence and its BLAST relatives" ,\
2488 /*Parameter*/ &prot_min_sim ,\
2491 /*Min_value*/ "any" ,\
2492 /*Max Value*/ "any" \
2494 set_int_variable ("prot_min_sim", prot_min_sim);
2500 /*Name*/ "-prot_max_sim" ,\
2501 /*Flag*/ &prot_max_sim ,\
2503 /*OPTIONAL?*/ OPTIONAL ,\
2505 /*DOC*/ "Maximum similarity between a sequence and its BLAST relatives" ,\
2506 /*Parameter*/ &prot_max_sim ,\
2509 /*Min_value*/ "any" ,\
2510 /*Max Value*/ "any" \
2512 set_int_variable ("prot_max_sim", prot_max_sim);
2518 /*Name*/ "-prot_min_cov" ,\
2519 /*Flag*/ &prot_min_cov ,\
2521 /*OPTIONAL?*/ OPTIONAL ,\
2523 /*DOC*/ "Minimum coverage of a sequence by its BLAST relatives" ,\
2524 /*Parameter*/ &prot_min_cov ,\
2527 /*Min_value*/ "any" ,\
2528 /*Max Value*/ "any" \
2530 set_int_variable ("prot_min_cov", prot_min_cov);
2531 declare_name(pdb_type);
2536 /*Name*/ "-pdb_type" ,\
2537 /*Flag*/ &pdb_min_sim ,\
2539 /*OPTIONAL?*/ OPTIONAL ,\
2541 /*DOC*/ "d: diffraction, n: nmr, m:model" ,\
2542 /*Parameter*/ &pdb_type ,\
2545 /*Min_value*/ "any" ,\
2546 /*Max Value*/ "any" \
2548 set_string_variable ("pdb_type", pdb_type);
2553 /*Name*/ "-pdb_min_sim" ,\
2554 /*Flag*/ &pdb_min_sim ,\
2556 /*OPTIONAL?*/ OPTIONAL ,\
2558 /*DOC*/ "Minimum similarity between a sequence and its PDB target" ,\
2559 /*Parameter*/ &pdb_min_sim ,\
2562 /*Min_value*/ "any" ,\
2563 /*Max Value*/ "any" \
2566 set_int_variable ("pdb_min_sim", pdb_min_sim);
2571 /*Name*/ "-pdb_max_sim" ,\
2572 /*Flag*/ &pdb_max_sim ,\
2574 /*OPTIONAL?*/ OPTIONAL ,\
2576 /*DOC*/ "Maximum similarity between a sequence and its PDB target" ,\
2577 /*Parameter*/ &pdb_max_sim ,\
2580 /*Min_value*/ "any" ,\
2581 /*Max Value*/ "any" \
2583 set_int_variable ("pdb_max_sim", pdb_max_sim);
2588 /*Name*/ "-pdb_min_cov" ,\
2589 /*Flag*/ &pdb_min_cov ,\
2591 /*OPTIONAL?*/ OPTIONAL ,\
2593 /*DOC*/ "Minimum coverage of a sequence by its PDB target" ,\
2594 /*Parameter*/ &pdb_min_cov ,\
2597 /*Min_value*/ "any" ,\
2598 /*Max Value*/ "any" \
2600 set_int_variable ("pdb_min_cov", pdb_min_cov);
2604 declare_name (pdb_blast_server);
2609 /*Name*/ "-pdb_blast_server" ,\
2610 /*Flag*/ &garbage ,\
2612 /*OPTIONAL?*/ OPTIONAL ,\
2615 /*Parameter*/&pdb_blast_server ,\
2617 /*Def 2*/ "default" ,\
2618 /*Min_value*/ "any" ,\
2619 /*Max Value*/ "any" \
2621 declare_name (prot_blast_server);
2626 /*Name*/ "-blast" ,\
2627 /*Flag*/ &garbage ,\
2629 /*OPTIONAL?*/ OPTIONAL ,\
2632 /*Parameter*/&prot_blast_server ,\
2635 /*Min_value*/ "any" ,\
2636 /*Max Value*/ "any" \
2638 //make sure that -blast and -blast_server are both supported blast>blast_server
2639 if ( !prot_blast_server[0])
2645 /*Name*/ "-blast_server" ,\
2646 /*Flag*/ &garbage ,\
2648 /*OPTIONAL?*/ OPTIONAL ,\
2651 /*Parameter*/&prot_blast_server ,\
2653 /*Def 2*/ "default" ,\
2654 /*Min_value*/ "any" ,\
2655 /*Max Value*/ "any" \
2658 // HERE ("%s", blast_server);
2659 if ( strm (prot_blast_server, "env"))prot_blast_server=get_env_variable ("blast_server_4_TCOFFEE",IS_FATAL);
2660 set_string_variable ("blast_server", prot_blast_server);
2664 declare_name (pdb_db);
2669 /*Name*/ "-pdb_db" ,\
2670 /*Flag*/ &garbage ,\
2672 /*OPTIONAL?*/ OPTIONAL ,\
2674 /*DOC*/ "Non Redundant PDB database" ,\
2675 /*Parameter*/&pdb_db ,\
2677 /*Def 2*/ "default" ,\
2678 /*Min_value*/ "any" ,\
2679 /*Max Value*/ "any" \
2681 if ( strm (pdb_db, "env"))pdb_db=get_env_variable ("pdb_db_4_TCOFFEE", IS_FATAL);
2682 set_string_variable ("pdb_db", pdb_db);
2685 declare_name (prot_db);
2690 /*Name*/ "-protein_db" ,\
2691 /*Flag*/ &garbage ,\
2693 /*OPTIONAL?*/ OPTIONAL ,\
2696 /*Parameter*/&prot_db ,\
2697 /*Def 1*/ "uniprot" ,\
2698 /*Def 2*/ "default" ,\
2699 /*Min_value*/ "any" ,\
2700 /*Max Value*/ "any" \
2702 if ( strm (prot_db, "env"))prot_db=get_env_variable ("protein_db_4_TCOFFEE", IS_FATAL);
2703 set_string_variable ("prot_db", prot_db);
2705 declare_name (method_log);
2710 /*Name*/ "-method_log" ,\
2711 /*Flag*/ &garbage ,\
2713 /*OPTIONAL?*/ OPTIONAL ,\
2716 /*Parameter*/&method_log ,\
2718 /*Def 2*/ "default" ,\
2719 /*Min_value*/ "any" ,\
2720 /*Max Value*/ "any" \
2722 /*PARAMETER PROTOTYPE: IN */
2723 struc_to_use=declare_char ( 200, STRING);
2724 n_struc_to_use=get_cl_param(\
2728 /*Name*/ "-struc_to_use" ,\
2729 /*Flag*/ &garbage ,\
2731 /*OPTIONAL?*/ OPTIONAL ,\
2733 /*DOC*/ "Specifies the structures that must be used when combining sequences and structures. The default is to use all the structures." ,\
2734 /*Parameter*/ struc_to_use ,\
2736 /*Def 2*/ "stdin" ,\
2737 /*Min_value*/ "any" ,\
2738 /*Max Value*/ "any" \
2741 declare_name (cache);
2746 /*Name*/ "-cache" ,\
2747 /*Flag*/ &garbage ,\
2749 /*OPTIONAL?*/ OPTIONAL ,\
2751 /*DOC*/ "Specifies that a cache must be used to save the structures and their comparison, as well as the blast searches.\navailable modes are: use,ignore,update,local, directory name" ,\
2752 /*Parameter*/ &cache ,\
2754 /*Def 2*/ "update" ,\
2755 /*Min_value*/ "any" ,\
2756 /*Max Value*/ "any" \
2758 declare_name (align_pdb_param_file);
2763 /*Name*/ "-align_pdb_param_file" ,\
2764 /*Flag*/ &garbage ,\
2766 /*OPTIONAL?*/ OPTIONAL ,\
2768 /*DOC*/ "parameter_file" ,\
2769 /*Parameter*/ &align_pdb_param_file ,\
2772 /*Min_value*/ "any" ,\
2773 /*Max Value*/ "any" \
2775 declare_name (align_pdb_hasch_mode);
2780 /*Name*/ "-align_pdb_hasch_mode" ,\
2781 /*Flag*/ &garbage ,\
2783 /*OPTIONAL?*/ OPTIONAL ,\
2785 /*DOC*/ "parameter_file" ,\
2786 /*Parameter*/ &align_pdb_hasch_mode ,\
2787 /*Def 1*/ "hasch_ca_trace_bubble" ,\
2788 /*Def 2*/ "hasch_ca_trace_bubble" ,\
2789 /*Min_value*/ "any" ,\
2790 /*Max Value*/ "any" \
2792 declare_name (use_seqan);
2797 /*Name*/ "-external_aligner" ,\
2798 /*Flag*/ &garbage ,\
2800 /*OPTIONAL?*/ OPTIONAL ,\
2802 /*DOC*/ "Use seqan to compute the MSA",\
2803 /*Parameter*/ &use_seqan ,\
2805 /*Def 2*/ "seqan_tcoffee" ,\
2806 /*Min_value*/ "any" ,\
2807 /*Max Value*/ "any" \
2809 declare_name (msa_mode);
2814 /*Name*/ "-msa_mode" ,\
2815 /*Flag*/ &garbage ,\
2817 /*OPTIONAL?*/ OPTIONAL ,\
2819 /*DOC*/ "Algorithm used to compute the MSA: tree | graph" ,\
2820 /*Parameter*/ &msa_mode ,\
2823 /*Min_value*/ "any" ,\
2824 /*Max Value*/ "any" \
2827 declare_name (master_mode);
2832 /*Name*/ "-master" ,\
2833 /*Flag*/ &garbage ,\
2835 /*OPTIONAL?*/ OPTIONAL ,\
2837 /*DOC*/ "Align all the sequences to the master sequences: file or number" ,\
2838 /*Parameter*/ &master_mode ,\
2840 /*Def 2*/ "_LONG_N_10" ,\
2841 /*Min_value*/ "any" ,\
2842 /*Max Value*/ "any" \
2848 /*Name*/ "-blast_nseq" ,\
2849 /*Flag*/ &garbage ,\
2851 /*OPTIONAL?*/ OPTIONAL ,\
2853 /*DOC*/ "Maximum number of querries for BLAST (0: all)" ,\
2854 /*Parameter*/ &blast_maxnseq ,\
2857 /*Min_value*/ "0" ,\
2858 /*Max Value*/ "any" \
2864 /*Name*/ "-lalign_n_top" ,\
2865 /*Flag*/ &garbage ,\
2867 /*OPTIONAL?*/ OPTIONAL ,\
2869 /*DOC*/ "Number of local alignments reported by the local method (lalign) when building the library" ,\
2870 /*Parameter*/ &lalign_n_top ,\
2873 /*Min_value*/ "any" ,\
2874 /*Max Value*/ "any" \
2880 /*Name*/ "-iterate" ,\
2881 /*Flag*/ &garbage ,\
2883 /*OPTIONAL?*/ OPTIONAL ,\
2885 /*DOC*/ "NUmber of iteration on the progressive alignment [0: no iteration, -1: Nseq iterations]",\
2886 /*Parameter*/ &iterate ,\
2889 /*Min_value*/ "any" ,\
2890 /*Max Value*/ "any" \
2898 /*Flag*/ &garbage ,\
2900 /*OPTIONAL?*/ OPTIONAL ,\
2902 /*DOC*/ "trim dataset",\
2903 /*Parameter*/ &trim ,\
2906 /*Min_value*/ "any" ,\
2907 /*Max Value*/ "any" \
2913 /*Name*/ "-split" ,\
2914 /*Flag*/ &garbage ,\
2916 /*OPTIONAL?*/ OPTIONAL ,\
2918 /*DOC*/ "split dataset",\
2919 /*Parameter*/ &split ,\
2922 /*Min_value*/ "any" ,\
2923 /*Max Value*/ "any" \
2925 declare_name(trimfile);
2930 /*Name*/ "-trimfile" ,\
2931 /*Flag*/ &garbage ,\
2933 /*OPTIONAL?*/ OPTIONAL ,\
2935 /*DOC*/ "trim dataset filename",\
2936 /*Parameter*/ &trimfile ,\
2937 /*Def 1*/ "default" ,\
2939 /*Min_value*/ "any" ,\
2940 /*Max Value*/ "any" \
2946 /*Name*/ "-split" ,\
2947 /*Flag*/ &garbage ,\
2949 /*OPTIONAL?*/ OPTIONAL ,\
2951 /*DOC*/ "split dataset",\
2952 /*Parameter*/ &split ,\
2955 /*Min_value*/ "any" ,\
2956 /*Max Value*/ "any" \
2959 if (trim && !split)split=trim;
2965 /*Name*/ "-split_nseq_thres" ,\
2966 /*Flag*/ &garbage ,\
2968 /*OPTIONAL?*/ OPTIONAL ,\
2970 /*DOC*/ "Maximum Number of sequences within a subgroup",\
2971 /*Parameter*/ &split_nseq_thres ,\
2974 /*Min_value*/ "any" ,\
2975 /*Max Value*/ "any" \
2981 /*Name*/ "-split_score_thres" ,\
2982 /*Flag*/ &garbage ,\
2984 /*OPTIONAL?*/ OPTIONAL ,\
2986 /*DOC*/ "Minimum score within a split dataset",\
2987 /*Parameter*/ &split_score_thres ,\
2990 /*Min_value*/ "any" ,\
2991 /*Max Value*/ "any" \
2997 /*Name*/ "-check_pdb_status" ,\
2998 /*Flag*/ &garbage ,\
3000 /*OPTIONAL?*/ OPTIONAL ,\
3002 /*DOC*/ "Reports the existance of a PDB file",\
3003 /*Parameter*/ &check_pdb_status ,\
3006 /*Min_value*/ "any" ,\
3007 /*Max Value*/ "any" \
3013 /*Name*/ "-clean_seq_name" ,\
3014 /*Flag*/ &garbage ,\
3016 /*OPTIONAL?*/ OPTIONAL ,\
3018 /*DOC*/ "Remove Special Char from sequence names",\
3019 /*Parameter*/ &clean_seq_name ,\
3022 /*Min_value*/ "any" ,\
3023 /*Max Value*/ "any" \
3027 /*PARAMETER PROTOTYPE: SEQ TO ALIGN */
3028 seq_to_keep=declare_char ( 2000, STRING);
3029 n_seq_to_keep=get_cl_param(\
3033 /*Name*/ "-seq_to_keep",\
3034 /*Flag*/ &garbage ,\
3036 /*OPTIONAL?*/ OPTIONAL ,\
3038 /*DOC*/ "File containing the name of the sequences to keep when triming OR a list of names)",\
3039 /*Parameter*/ seq_to_keep ,\
3042 /*Min_value*/ "any" ,\
3043 /*Max Value*/ "any" \
3045 /*******************************************************************************************************/
3047 /* TCoffee_dpa Parameter:START */
3049 /*******************************************************************************************************/
3050 /*PARAMETER PROTOTYPE: dpa_master_aln */
3051 declare_name (dpa_master_aln);
3056 /*Name*/ "-dpa_master_aln",\
3057 /*Flag*/ &garbage ,\
3059 /*OPTIONAL?*/ OPTIONAL ,\
3061 /*DOC*/ "Approximate Alignment: File|method",\
3062 /*Parameter*/ &dpa_master_aln ,\
3065 /*Min_value*/ "any" ,\
3066 /*Max Value*/ "any" \
3068 /*PARAMETER PROTOTYPE: dpa_maxnseq */
3074 /*Name*/ "-dpa_maxnseq",\
3075 /*Flag*/ &garbage ,\
3077 /*OPTIONAL?*/ OPTIONAL ,\
3079 /*DOC*/ "Maximum number of sequences to be aligned with DPA",\
3080 /*Parameter*/ &dpa_maxnseq ,\
3083 /*Min_value*/ "any" ,\
3084 /*Max Value*/ "any" \
3086 /*PARAMETER PROTOTYPE: dpa_min_score1 */
3092 /*Name*/ "-dpa_min_score1",\
3093 /*Flag*/ &garbage ,\
3095 /*OPTIONAL?*/ OPTIONAL ,\
3097 /*DOC*/ "Minimum percent ID to merge sequences in the approximate alignment",\
3098 /*Parameter*/ &dpa_min_score1 ,\
3101 /*Min_value*/ "0" ,\
3102 /*Max Value*/ "100" \
3104 /*PARAMETER PROTOTYPE: dpa_min_score2 */
3110 /*Name*/ "-dpa_min_score2",\
3111 /*Flag*/ &garbage ,\
3113 /*OPTIONAL?*/ OPTIONAL ,\
3115 /*DOC*/ "Threshold for aligning a group in the slow double progressive alignment (automatically readjusted)",\
3116 /*Parameter*/ &dpa_min_score2 ,\
3119 /*Min_value*/ "0" ,\
3120 /*Max Value*/ "100" \
3122 /*PARAMETER PROTOTYPE: dpa_keep_tmp_file */
3127 /*Name*/ "-dpa_keep_tmpfile" ,\
3128 /*Flag*/ &dpa_keep_tmpfile ,\
3130 /*OPTIONAL?*/ OPTIONAL ,\
3132 /*DOC*/ "Prevents deletion of the tmpfile generated by t_coffee_dpa",\
3133 /*Parameter*/ &do_version ,\
3136 /*Min_value*/ "0" ,\
3140 /*PARAMETER PROTOTYPE: dpa_debug */
3145 /*Name*/ "-dpa_debug" ,\
3146 /*Flag*/ &dpa_debug ,\
3148 /*OPTIONAL?*/ OPTIONAL ,\
3150 /*DOC*/ "DEbug mode for DPA ( causes dpa tmp files to be kept)",\
3151 /*Parameter*/ &do_version ,\
3154 /*Min_value*/ "0" ,\
3159 /*PARAMETER PROTOTYPE: multi_core */
3160 declare_name (multi_core);
3165 /*Name*/ "-multi_core",\
3166 /*Flag*/ &garbage ,\
3168 /*OPTIONAL?*/ OPTIONAL ,\
3170 /*DOC*/ "Multi core: template_jobs_relax_[msa|pairwise]_evaluate",\
3171 /*Parameter*/ &multi_core ,\
3172 /*Def 1*/ "templates_jobs_relax_msa_evaluate" ,\
3173 /*Def 2*/ "templates_jobs_relax_msa_evaluate" ,\
3174 /*Min_value*/ "0" ,\
3175 /*Max Value*/ "100" \
3177 if (multi_core[0])set_string_variable ("multi_core",multi_core);
3178 /*PARAMETER PROTOTYPE: multi_core */
3183 /*Name*/ "-n_core",\
3184 /*Flag*/ &garbage ,\
3186 /*OPTIONAL?*/ OPTIONAL ,\
3188 /*DOC*/ "Number of cores to be used by machine [default=0 => all those defined in the environement]",\
3189 /*Parameter*/ &n_core ,\
3192 /*Min_value*/ "0" ,\
3193 /*Max Value*/ "100" \
3195 if (n_core)set_int_variable ("n_core",n_core);
3198 /*PARAMETER PROTOTYPE: lib_list */
3199 declare_name (lib_list);
3204 /*Name*/ "-lib_list",\
3205 /*Flag*/ &garbage ,\
3207 /*OPTIONAL?*/ OPTIONAL ,\
3209 /*DOC*/ "A File that contains every pair/group of sequence to process when computing the lib, Format:<nseq> <index1><index2>",\
3210 /*Parameter*/ &lib_list ,\
3212 /*Def 2*/ "default" ,\
3213 /*Min_value*/ "0" ,\
3214 /*Max Value*/ "100" \
3217 /*PARAMETER PROTOTYPE: lib_list */
3218 declare_name (prune_lib_mode);
3223 /*Name*/ "-prune_lib_mode",\
3224 /*Flag*/ &garbage ,\
3226 /*OPTIONAL?*/ OPTIONAL ,\
3228 /*DOC*/ "A File that contains every pair/group of sequence to process when computing the lib, Format:<nseq> <index1><index2>",\
3229 /*Parameter*/ &prune_lib_mode ,\
3232 /*Min_value*/ "0" ,\
3233 /*Max Value*/ "100" \
3235 set_string_variable ("prune_lib_mode",prune_lib_mode);
3237 /*PARAMETER PROTOTYPE: multi_thread */
3244 /*Flag*/ &garbage ,\
3246 /*OPTIONAL?*/ OPTIONAL ,\
3248 /*DOC*/ "Controls The Output of A TIP When Computation is over [one,all,none]",\
3249 /*Parameter*/ &tip ,\
3252 /*Min_value*/ "any" ,\
3253 /*Max Value*/ "any" \
3255 /*PARAMETER PROTOTYPE: RNA LIB */
3256 declare_name (rna_lib);
3261 /*Name*/ "-rna_lib",\
3262 /*Flag*/ &garbage ,\
3264 /*OPTIONAL?*/ OPTIONAL ,\
3267 /*Parameter*/ &rna_lib ,\
3270 /*Min_value*/ "any" ,\
3271 /*Max Value*/ "any" \
3277 /*Name*/ "-no_warning",\
3278 /*Flag*/ &garbage ,\
3280 /*OPTIONAL?*/ OPTIONAL ,\
3282 /*DOC*/ "Suppresses all Warnings",\
3283 /*Parameter*/ &no_warning ,\
3286 /*Min_value*/ "0" ,\
3293 /*Name*/ "-run_local_script",\
3294 /*Flag*/ &garbage , \
3296 /*OPTIONAL?*/ OPTIONAL , \
3298 /*DOC*/ "Run Local Script if in current directory", \
3299 /*Parameter*/ &run_local_script , \
3302 /*Min_value*/ "0" , \
3305 set_int_variable ("run_local_script", run_local_script);
3306 declare_name (plugins);
3311 /*Name*/ "-plugins",\
3312 /*Flag*/ &garbage , \
3314 /*OPTIONAL?*/ OPTIONAL , \
3316 /*DOC*/ "Set the directory containing the plugins [no if no plugin]", \
3317 /*Parameter*/ &plugins , \
3318 /*Def 1*/ "default" , \
3320 /*Min_value*/ "any" , \
3321 /*Max Value*/ "any" \
3326 declare_name (proxy);
3332 /*Flag*/ &garbage ,\
3334 /*OPTIONAL?*/ OPTIONAL ,\
3336 /*DOC*/ "proxy used to access to webservices, when required",\
3337 /*Parameter*/ &proxy ,\
3338 /*Def 1*/ "unset" ,\
3340 /*Min_value*/ "any" ,\
3341 /*Max Value*/ "any" \
3343 if ( !strm (proxy, "unset"))set_string_variable ("cl_proxy",proxy);
3344 declare_name (email);
3350 /*Flag*/ &garbage ,\
3352 /*OPTIONAL?*/ OPTIONAL ,\
3354 /*DOC*/ "email provided to webservices, when required",\
3355 /*Parameter*/ &email ,\
3358 /*Min_value*/ "any" ,\
3359 /*Max Value*/ "any" \
3361 if ( strstr (email, "@"))
3363 set_string_variable ("email", email);
3364 set_string_variable ("cl_email", email);
3371 /*Name*/ "-clean_overaln",\
3372 /*Flag*/ &garbage ,\
3374 /*OPTIONAL?*/ OPTIONAL ,\
3376 /*DOC*/ "Ratio between overaligned exon id Vs legitimates *100",\
3377 /*Parameter*/ &clean_overaln ,\
3380 /*Min_value*/ "any" ,\
3381 /*Max Value*/ "any" \
3383 overaln_param=declare_char ( 10, STRING);
3384 n_overaln_param=get_cl_param( \
3388 /*Name*/ "-overaln_param",\
3389 /*Flag*/ &garbage ,\
3391 /*OPTIONAL?*/ OPTIONAL ,\
3393 /*DOC*/ "Parameters for the overaln",\
3394 /*Parameter*/ overaln_param ,\
3397 /*Min_value*/ "any" ,\
3398 /*Max Value*/ "any" \
3400 declare_name (overaln_mode);
3405 /*Name*/ "-overaln_mode",\
3406 /*Flag*/ &garbage ,\
3408 /*OPTIONAL?*/ OPTIONAL ,\
3410 /*DOC*/ "lower || uanlaign",\
3411 /*Parameter*/ &overaln_mode ,\
3414 /*Min_value*/ "any" ,\
3415 /*Max Value*/ "any" \
3417 if (overaln_mode[0])set_string_variable ("overaln_mode", overaln_mode);
3418 declare_name (overaln_model);
3423 /*Name*/ "-overaln_model",\
3424 /*Flag*/ &garbage ,\
3426 /*OPTIONAL?*/ OPTIONAL ,\
3428 /*DOC*/ "fsa1 (no exon boundaries), fsa2 (exon boundaries)",\
3429 /*Parameter*/ &overaln_model ,\
3432 /*Min_value*/ "any" ,\
3433 /*Max Value*/ "any" \
3435 if (overaln_mode[0])set_string_variable ("overaln_model", overaln_model);
3441 /*Name*/ "-overaln_threshold",\
3442 /*Flag*/ &garbage ,\
3444 /*OPTIONAL?*/ OPTIONAL ,\
3446 /*DOC*/ "Ratio between overaligned exon id Vs legitimates *100",\
3447 /*Parameter*/ &overaln_threshold ,\
3450 /*Min_value*/ "any" ,\
3451 /*Max Value*/ "any" \
3453 set_int_variable ("overaln_threshold", overaln_threshold);
3459 /*Name*/ "-overaln_target",\
3460 /*Flag*/ &garbage ,\
3462 /*OPTIONAL?*/ OPTIONAL ,\
3464 /*DOC*/ "Ratio between overaligned exon id Vs legitimates *100",\
3465 /*Parameter*/ &overaln_target ,\
3468 /*Min_value*/ "any" ,\
3469 /*Max Value*/ "any" \
3471 set_int_variable ("overaln_target", overaln_threshold);
3477 /*Name*/ "-overaln_P1",\
3478 /*Flag*/ &garbage ,\
3480 /*OPTIONAL?*/ OPTIONAL ,\
3482 /*DOC*/ "Ratio between overaligned exon id Vs legitimates *100",\
3483 /*Parameter*/ &overaln_P1 ,\
3486 /*Min_value*/ "any" ,\
3487 /*Max Value*/ "any" \
3489 if (overaln_P1)set_int_variable ("overaln_P1", overaln_P1);
3495 /*Name*/ "-overaln_P2",\
3496 /*Flag*/ &garbage ,\
3498 /*OPTIONAL?*/ OPTIONAL ,\
3500 /*DOC*/ "Ratio between overaligned exon id Vs legitimates *100",\
3501 /*Parameter*/ &overaln_P2 ,\
3504 /*Min_value*/ "any" ,\
3505 /*Max Value*/ "any" \
3507 if (overaln_P2)set_int_variable ("overaln_P2", overaln_P2);
3513 /*Name*/ "-overaln_P3",\
3514 /*Flag*/ &garbage ,\
3516 /*OPTIONAL?*/ OPTIONAL ,\
3518 /*DOC*/ "Ratio between overaligned exon id Vs legitimates *100",\
3519 /*Parameter*/ &overaln_P3 ,\
3522 /*Min_value*/ "any" ,\
3523 /*Max Value*/ "any" \
3525 if (overaln_P3)set_int_variable ("overaln_P3", overaln_P3);
3531 /*Name*/ "-overaln_P4",\
3532 /*Flag*/ &garbage ,\
3534 /*OPTIONAL?*/ OPTIONAL ,\
3536 /*DOC*/ "Ratio between overaligned exon id Vs legitimates *100",\
3537 /*Parameter*/ &overaln_P4 ,\
3540 /*Min_value*/ "any" ,\
3541 /*Max Value*/ "any" \
3543 if (overaln_P4)set_int_variable ("overaln_P4", overaln_P4);
3546 declare_name (exon_boundaries);
3551 /*Name*/ "-exon_boundaries",\
3552 /*Flag*/ &garbage ,\
3554 /*OPTIONAL?*/ OPTIONAL ,\
3556 /*DOC*/ "exon_boundaries [EBI boj format]",\
3557 /*Parameter*/ &exon_boundaries ,\
3560 /*Min_value*/ "any" ,\
3561 /*Max Value*/ "any" \
3563 if ( exon_boundaries[0])set_string_variable ("exon_boundaries", exon_boundaries);
3565 declare_name (dump);
3571 /*Flag*/ &garbage ,\
3573 /*OPTIONAL?*/ OPTIONAL ,\
3576 /*Parameter*/ &dump ,\
3579 /*Min_value*/ "any" ,\
3580 /*Max Value*/ "any" \
3583 if (!strm (dump, "no"))
3585 set_string_variable ("dump_output_file", vtmpnam (NULL));
3586 set_string_variable ("dump_output_file_list", vtmpnam (NULL));
3588 set_string_variable ("dump",dump);
3593 /*******************************************************************************************************/
3595 /* TCoffee_dpa Parameter:END */
3597 /*******************************************************************************************************/
3603 display_method_names ("display", stdout);
3604 return EXIT_SUCCESS;
3606 get_cl_param( argc, argv,&le, NULL,NULL,NULL,0,0,NULL);
3607 prepare_cache (cache);
3608 /*******************************************************************************************************/
3610 /* FILL list_file (contains seq, aln and meth) */
3612 /*******************************************************************************************************/
3616 /*Re-introduce the sequences introduced with -infile*/
3619 if ( infile[0] && !do_evaluate)
3621 sprintf ( list_file[n_list++], "%s",infile);
3623 /*DO EVALUATE: The aln to evaluate must be provided via -infile*/
3624 else if (do_evaluate)
3626 if (!infile[0] || !(main_read_aln ( infile, NULL)))
3628 fprintf ( stderr,"\nERROR: When using -evaluate, Provide a multiple sequence alignment via the -infile flag [FATAL:%s]\n", PROGRAM);
3629 myexit (EXIT_FAILURE);
3631 else if (! main_read_aln ( infile,NULL))
3633 fprintf ( stderr,"\nERROR: FILE %s is NOT a valid alignment [FATAL:%s]\n", infile, PROGRAM);
3634 myexit (EXIT_FAILURE);
3636 else if ( infile[0]=='A' ||infile[0]=='S')
3638 sprintf ( list_file[n_list++], "S%s",infile+1);
3640 else sprintf ( list_file[n_list++], "S%s",infile);
3645 /*Make Sure -infile is set*/
3646 if (!infile[0]&& (do_evaluate || do_convert))
3649 if ( do_evaluate || do_convert)sprintf ( infile, "%s",seq_list[0]);
3653 /*Introduce the sequences from the -profile flag*/
3654 if ( profile1 && profile1[0])
3656 sprintf ( list_file[n_list++], "R%s",profile1);
3658 if ( profile2 && profile2[0])
3660 sprintf ( list_file[n_list++], "R%s",profile2);
3663 for ( a=0; a< n_profile_list; a++)
3666 if ( (fp=find_token_in_file (profile_list[a], NULL, "FILE_LIST"))!=NULL)
3671 fp=vfopen (profile_list[a], "r");
3673 while ( (z=fgetc(fp))!=EOF)
3676 fscanf (fp, "%s\n", rname);
3677 if ( check_file_exists(rname))sprintf ( list_file[n_list++], "R%s", rname);
3681 else if (format_is_conc_aln (profile_list[a]))
3686 P=input_conc_aln (profile_list[a],NULL);
3689 cname=vtmpnam (NULL);
3690 output_fasta_aln (cname, P);
3692 sprintf ( list_file[n_list++], "R%s",cname);
3699 sprintf ( list_file[n_list++], "R%s",profile_list[a]);
3702 /*Introduce the sequences from the -seq flag*/
3703 for (a=0; a<n_seq_list; a++)
3705 if (check_file_exists(seq_list[a]))
3706 sprintf (list_file[n_list++], "S%s",seq_list[a]);
3707 else if ( check_file_exists (seq_list[a]+1))
3708 sprintf (list_file[n_list++], "%s",seq_list[a]);
3710 /*introduce the alignments from the -aln flag*/
3711 //Importnat: Must be introduced AFTER the profiles
3712 for (a=0; a<n_aln_file_list; a++)
3714 sprintf (list_file[n_list++], "A%s",aln_file_list[a]);
3716 /*introduce the alignments from the -method flag*/
3717 for (a=0; a<n_method_list; a++)
3719 sprintf (list_file[n_list++], "M%s",method_list[a]);
3721 /*introduce the alignments from the -library flag*/
3722 for (a=0; a<n_lib_file_list; a++)
3724 sprintf (list_file[n_list++], "L%s",lib_file_list[a]);
3726 /*introduce sequences from the exon_boundaries flag flag*/
3727 if ( exon_boundaries && exon_boundaries[0] && check_file_exists (exon_boundaries))
3732 //make sure boundaries do not get into the sequences*/
3734 ExS=main_read_seq (exon_boundaries);
3735 ExS=seq2clean_seq (ExS, "BOJboj");
3736 main_output_fasta_seq (tmpf=vtmpnam (NULL),ExA=seq2aln (ExS,NULL,RM_GAP), NO_HEADER);
3737 sprintf (list_file[n_list++], "S%s",tmpf);
3738 free_sequence (ExS, ExS->nseq);
3741 /*FETCH THE STRUCTURES INTRODUCED WITH -pdb and add them to -in*/
3744 for ( a=0; a< n_pdb; a++)
3746 if ( is_number (pdb_list[a]));
3749 pdb_start=pdb_end=0;
3750 if ( a+1< n_pdb && is_number (pdb_list[a+1]))pdb_start=atoi (pdb_list[a+1]);
3751 if ( a+2< n_pdb && is_number (pdb_list[a+2]))pdb_end=atoi (pdb_list[a+2]);
3753 pdb_name=get_pdb_struc ( pdb_list[a],pdb_start, pdb_end);
3754 if (pdb_name){sprintf (list_file[n_list++], "P%s", pdb_name);}
3755 /*Warning: do not free pdb_name: it is statically allocated by get_pdb_struc*/
3760 /*Check That Enough Methods/Libraries/Alignments Have been Chiped in*/
3765 nn=vcalloc ( 256, sizeof (int));
3766 for (a=0; a<n_list; a++)
3768 if ( !check_file_exists(list_file[a]))nn[(int)list_file[a][0]]++;
3771 if (is_seq (list_file[a]))nn['S']++;
3772 else if ( is_aln (list_file[a]))nn['A']++;
3773 else if ( is_lib (list_file[a]))nn['L']++;
3774 else if ( is_method (list_file[a]))nn['M']++;
3776 add_warning (stderr, "\nWARNING: File %s was not properly tagged. Potential ambiguity\n",list_file[a]);
3781 if ( (nn['A']+nn['L']+nn['M'])==0)
3783 sprintf ( list_file[n_list++], "Mproba_pair"); //new default
3784 //sprintf ( list_file[n_list++], "Mlalign_id_pair");
3785 //sprintf ( list_file[n_list++], "Mslow_pair");
3790 /*FILL THE F STRUCTURE (Contains Information for Output names For the defaults)*/
3791 if (n_list==0 || argc<=1)
3793 fprintf ( stderr, "\nERROR: You have NOT provided enough arguments [FATAL:%s]", PROGRAM);
3794 myexit (EXIT_FAILURE);
3798 else if ( argv[1][0]!='-' && (check_file_exists( argv[1]) || check_file_exists(argv[1]+1)))
3800 if (check_file_exists(argv[1]))F=parse_fname(argv[1]);
3801 else if ( check_file_exists(argv[1]+1))F=parse_fname(argv[1]+1);
3807 if ( check_file_exists (infile))F=parse_fname(infile);
3808 else if (check_file_exists (infile+1))F =parse_fname(infile+1);
3810 else if ( exon_boundaries && exon_boundaries[0])
3812 if ( check_file_exists (exon_boundaries))F=parse_fname(exon_boundaries);
3813 else if (check_file_exists (exon_boundaries+1))F =parse_fname(exon_boundaries+1);
3818 for ( a=0; a< n_list; a++)
3820 if (!is_method(list_file[a]))
3824 if ( check_file_exists( list_file[a])){F=parse_fname(list_file[a]);break;}
3825 else if ( is_in_set ( list_file[a][0], "ASLX") && check_file_exists( list_file[a]+1)){F=parse_fname(list_file[a]+1);break;}
3826 else if ( is_in_set ( list_file[a][0], "R") && check_file_exists( list_file[a]+1))
3829 F=parse_fname(list_file[a]+1);
3830 sprintf ( lname, "%s_1", F->name);
3831 sprintf ( F->name, "%s", lname);
3835 else if ( is_in_set ( list_file[a][0], "P") && is_pdb_struc (list_file[a]+1))
3837 F=parse_fname(is_pdb_struc (list_file[a]+1));break;
3847 for ( a=0; a< n_list; a++)
3849 if ( list_file[a][0]=='P' && !check_file_exists(list_file[a]))
3852 sprintf(buf, "%s", list_file[a]+1);
3853 sprintf(list_file[a], "P%s",is_pdb_struc (buf));
3857 /*FATAL: NO SEQUENCES*/
3860 myexit (fprintf_error(stderr,"You have not provided any sequence"));
3862 if (run_name)F=parse_fname(run_name);
3863 else F->path[0]='\0';
3866 identify_list_format (list_file, n_list);
3869 fprintf (le, "\nINPUT FILES\n");
3870 for ( a=0; a< n_list; a++)
3872 fprintf (le, "\tInput File (%c) %s ",list_file[a][0],list_file[a]+1);
3873 if ( list_file[a][0]=='A' || list_file[a][0]=='S' || list_file[a][0]=='P'|| list_file[a][0]=='R' )
3875 fprintf (le, " Format %s\n", f=identify_seq_format ( list_file[a]+1));
3877 if (!f || f[0]=='\0')
3879 myexit (fprintf_error(stderr,"The format of %s is not supported", list_file[a]+1));
3884 else fprintf (le, "\n");
3888 /*CONVERT, ALIGN OR EVALUATE: CHOSE THE RIGHT VERB*/
3889 /*Set the Hierarchy of the verbs*/
3890 /*The first one decides...*/
3893 do_list=vcalloc ( 100, sizeof (int*));
3895 do_list[n_do++]=&do_genepred;
3896 do_list[n_do++]=&do_extended_matrix;
3897 do_list[n_do++]=&do_convert;
3898 do_list[n_do++]=&do_evaluate;
3899 do_list[n_do++]=&do_domain;
3900 do_list[n_do++]=&do_align;
3903 for ( a=0; a< n_do; a++)
3907 for ( b=0; b< n_do; b++)if ( b!=a)do_list[b][0]=0;
3914 /*SET THE DEFAULT NAMES*/
3917 if ( strm (tree_file, "default"))sprintf ( tree_file, "no");
3924 sprintf ( out_lib, "no");
3925 sprintf ( tree_file, "no");
3930 sprintf ( tree_file, "no");
3934 if ( F && strm ( tree_file, "default"))sprintf ( tree_file ,"%s%s.dnd",F->path ,F->name);
3935 if ( F && strm ( ph_tree_file, "default"))sprintf ( ph_tree_file ,"%s%s.ph",F->path ,F->name);
3937 for (a=0; a< n_out_aln_format; a++)
3939 if (is_out_format_list (out_aln_format[a]));
3942 fprintf (stderr, "\n%s is not a valid format [FATAL:%s]\n", out_aln_format[a], PROGRAM);
3943 myexit (EXIT_FAILURE);
3947 for (a=0; a<n_out_aln_format; a++)
3949 out_aln_format[a]=format_name2aln_format_name(out_aln_format[a]);
3952 if ( F && strm ( out_aln , "default"))
3954 for (a=0; a< n_out_aln_format; a++)
3957 sprintf ( tot_out_aln[a] ,"%s%s.%s" ,F->path,F->name,out_aln_format[a]);
3962 sprintf ( tot_out_aln[0], "%s", out_aln);
3963 for (a=1; a< n_out_aln_format; a++)
3964 sprintf ( tot_out_aln[a] ,"%s%s.%s", F->path ,out_aln, out_aln_format[a]);
3969 if ( F && strm ( out_lib , "default"))sprintf ( out_lib ,"%s%s.tc_lib",F->path , F->name);
3971 if ( type && type[0])
3973 if (strm2 (type,"Protein", "protein"))sprintf ( type, "PROTEIN");
3974 if (strm2 (type,"DNA", "dna"))sprintf ( type, "DNA");
3975 if (strm2 (type,"RNA", "rna"))sprintf ( type, "RNA");
3980 if ( !use_tree && check_file_exists (tree_file))vremove (tree_file);
3981 else if ( !use_tree || (use_tree && strm (use_tree, "default")));
3982 else sprintf ( tree_file, "%s", use_tree);
3985 /*******************************************************************************************************/
3987 /* Input Sequences and Library */
3989 /*******************************************************************************************************/
3991 set_methods_limits (method_limits,n_method_limits,list_file, n_list, &maxnseq, &maxlen);
3992 /*Set Global Values*/
3998 /*1 READ THE SEQUENCES*/
4000 S=read_seq_in_n_list (list_file, n_list, type,seq_source);
4004 if (!strm (S->type, get_array_type (S->nseq, S->seq)))
4006 fprintf ( stderr, "\nINCORRECT SEQUENCE TYPE (USE %s ONLY) [FATAL:%s]", S->type, PROGRAM);
4007 myexit (EXIT_FAILURE);
4011 if (S->nseq<=1 && !do_domain)
4013 printf_exit (EXIT_FAILURE,stderr, "\nERROR: Your Dataset Contains %d Sequence. For multiple alignments you need at least 2 sequences[FATAL:%s]", S->nseq,PROGRAM);
4016 store_seq_type (S->type);
4020 fprintf ( stdout, "%s", S->type);
4021 return EXIT_SUCCESS;
4023 /*Translate Sequences*/
4024 if ( transform && transform[0])
4026 S=transform_sequence (S, transform);
4029 /*Abort if the sequences are too long */
4030 if (maxlen!=-1 && S->max_len>maxlen)
4032 fprintf ( stderr, "\nSEQUENCES TOO LONG [Longuest=%d][MAX=%d][FATAL:%s]\n", S->max_len,maxlen, PROGRAM);
4033 myexit (EXIT_FAILURE);
4041 /* Get the Templates*/
4053 S=get_sequence_type (S);
4054 fprintf ( stdout , "%s\n", S->type);
4055 free_sequence(S, S->nseq);
4060 /*Reorder the sequences*/
4061 new_order=duplicate_char (S->name, -1, -1);
4062 if ( strm (inorder, "aligned"))new_order=sort_string_array (new_order, S->nseq);
4064 initial_order=duplicate_char (S->name, -1, -1);
4065 S=reorder_seq(S,new_order,S->nseq);
4066 free_char (new_order, -1);
4070 /*3 PREPARE THE CONSTRAINT LIST*/
4072 CL=declare_constraint_list ( S,NULL, NULL, 0,(strm(mem_mode, "disk"))?tmpfile():NULL, NULL);
4074 sprintf ( CL->method_evaluate_mode, "%s", method_evaluate_mode);
4076 (CL->TC)->use_seqan=use_seqan;
4077 CL->local_stderr=le;
4078 /*set the genepred parameters*/
4079 sprintf ( CL->genepred_score, "%s", genepred_score);
4080 /*Estimate the distance Matrix*/
4083 if (extend_seq)extend_seqaln(CL->S,NULL);
4084 CL->DM=cl2distance_matrix ( CL,NOALN,distance_matrix_mode, distance_matrix_sim_mode,1);
4085 if (extend_seq)unextend_seqaln(CL->S,NULL);
4089 /*one to all alignment*/
4090 MASTER_SEQ=prepare_master(master_mode,S,CL, "ktup");
4091 if (!blast_maxnseq)CL->o2a_byte=(CL->S)->nseq;
4092 else CL->o2a_byte=blast_maxnseq;
4095 //Intercept Master Sequences
4103 if ( n_template_file)
4105 fprintf ( le, "\nLooking For Sequence Templates:\n");
4106 for ( a=0; a< n_template_file; a++)
4108 //correct for missing extension modes
4109 if (strm (template_file_list[a],"RNA") && !strstr (extend_mode, "rna"))sprintf ( extend_mode, "rna2");
4112 fprintf ( le, "\n\tTemplate Type: [%s] Mode Or File: [%s] [Start", template_type2type_name(template_file_list[a]), template_file_list[a]);
4113 S=seq2template_seq(S, template_file_list[a], F);
4118 add_warning (stderr, "\nImpossible to find %s Templates\nCheck that your blast server is properly installed [See documentation][FATAL:%s]\n", template_file_list[a],PROGRAM);
4119 myexit (EXIT_FAILURE);
4123 if (seq2n_X_template ( S, "_*_"))
4126 sprintf (S->template_file, "%s",seq2template_file (S, NULL));
4132 for ( a=0; a<S->nseq; a++)
4134 if ( seq_has_template ( S, a, "_P_"))ptf=1;
4139 sprintf ( S->template_file ,"%s%s.template_file",F->path , F->name);
4140 seq2template_file (S,S->template_file);
4141 display_output_filename ( stdout, "Template_List","fasta_seq", S->template_file, STORE);
4146 if (n_profile_template_file)
4148 fprintf ( le, "\nLooking For Profile Templates");
4149 for ( a=0; a< n_profile_template_file; a++)
4151 fprintf ( le, "\n\tTemplate Type: [%s] Mode Or File: [%s] [Start", template_type2type_name(profile_template_file_list[a]), profile_template_file_list[a]);
4152 S=profile_seq2template_seq(S, profile_template_file_list[a], F);
4156 add_warning(stderr, "Impossible to find %s Templates\nCheck that your blast server is properly installed [See documentation][FATAL:%s]\n",profile_template_file_list[a], PROGRAM);
4157 myexit (EXIT_FAILURE);
4165 //Release Master Sequences
4170 for (a=0; a< MASTER_SEQ->nseq; a++)
4171 if ((i=name_is_in_list (MASTER_SEQ->name[a], S->name, S->nseq, 100))!=-1)
4173 S->T[i]=MASTER_SEQ->T[a];
4176 S=seq2template_seq(S, "SELF_S_",F);
4177 S=seq2template_type (S);
4179 le=display_sequences_names ( S, le, check_pdb_status, TEMPLATES);
4180 /*4 GET TEMPLATES: DONE*/
4185 if ( matrix && matrix[0])
4187 sprintf ( CL->method_matrix,"%s", matrix);
4190 /*Set the filtering*/
4191 CL->filter_lib=filter_lib;
4192 /*Set the evaluation Functions*/
4193 CL->profile_mode=get_profile_mode_function (profile_mode, NULL);
4194 sprintf ( CL->profile_comparison, "%s", profile_comparison);
4195 if ( n_struc_to_use)
4197 CL->STRUC_LIST=declare_sequence (1,1,n_struc_to_use);
4198 CL->STRUC_LIST->nseq=0;
4199 for ( a=0; a< n_struc_to_use; a++)
4202 sprintf ( (CL->STRUC_LIST)->name[(CL->STRUC_LIST)->nseq++],"%s",struc_to_use[a]);
4205 sprintf (CL->align_pdb_param_file, "%s", align_pdb_param_file);
4206 sprintf (CL->align_pdb_hasch_mode, "%s", align_pdb_hasch_mode);
4210 /*Blast Parameters*/
4211 (CL->Prot_Blast)->min_id=prot_min_sim;
4212 (CL->Prot_Blast)->max_id=prot_max_sim;
4213 (CL->Prot_Blast)->min_cov=prot_min_cov;
4214 sprintf ( (CL->Prot_Blast)->blast_server, "%s", prot_blast_server);
4215 sprintf ( (CL->Prot_Blast)->db, "%s", prot_db);
4217 (CL->Pdb_Blast)->min_id=pdb_min_sim;
4219 (CL->Pdb_Blast)->max_id=pdb_max_sim;
4220 (CL->Pdb_Blast)->min_cov=pdb_min_cov;
4221 sprintf ( (CL->Pdb_Blast)->blast_server, "%s", pdb_blast_server);
4222 sprintf ( (CL->Pdb_Blast)->db, "%s", pdb_db);
4223 CL->check_pdb_status=check_pdb_status;
4224 /*split parameters */
4226 CL->split_nseq_thres=split_nseq_thres;
4227 CL->split_score_thres=split_score_thres;
4229 (CL->DNA_Blast)->min_id=dna_min_sim;
4230 (CL->DNA_Blast)->max_id=dna_max_sim;
4231 (CL->DNA_Blast)->min_cov=dna_min_cov;
4232 sprintf ( (CL->DNA_Blast)->blast_server, "%s", dna_blast_server);
4233 sprintf ( (CL->DNA_Blast)->db, "%s", dna_db);
4238 if ( strm (method_log, "default"))
4240 sprintf ( CL->method_log, "%s%s.method_log",F->path, F->name);
4242 else if ( !strm (method_log, "no"))
4244 sprintf ( CL->method_log, "%s", method_log);
4246 set_string_variable ("method_log", method_log);
4250 CL->lalign_n_top=lalign_n_top;
4251 sprintf ( CL->multi_thread, "%s", multi_core);
4253 sprintf ( CL->lib_list, "%s", lib_list);
4254 sprintf (CL->rna_lib, "%s", rna_lib);
4255 /* Important: This is where the library is compiled!!!!*/
4257 if ((CL->S)->nseq>1 && !do_convert)
4259 CL=read_n_constraint_list (list_file,n_list,NULL, mem_mode,weight,type, le, CL, seq_source);
4260 //CL=post_process_constraint_list (CL); //needed when constraints are added, for instance the RNA modes
4262 else if ( do_convert && out_lib[0])
4265 {sprintf (list_file[0], "%s", name2type_name(infile));
4266 CL=read_n_constraint_list (list_file,1,NULL, mem_mode,weight,type, le, CL, seq_source);
4270 CL=read_n_constraint_list (list_file,n_list,NULL, mem_mode,weight,type, le, CL, seq_source);
4273 if ( CL->M)clean_aln=0;
4275 if ( is_number (weight))set_weight4constraint_list (CL, atoi(weight));
4277 free_pair_wise ();//Free ststic memory allocated in some of the pairwise functions
4280 //Shrink: re-run slow_pair using the library, remove everything
4283 /*If the List is empty*/
4284 if ( (CL->S)->nseq>1 && CL->ne==0 && !CL->M &&!(do_convert && n_list>0))
4286 fprintf ( stderr, "\n******************ERROR*****************************************\n");
4288 fprintf ( stderr, "\nYou have not provided any method or enough Sequences[FATAL]");
4289 fprintf ( stderr, "\nIf you have used the '-in' Flag, ADD the methods you wish to use:");
4290 fprintf ( stderr, "\n\t-in <your sequences> Mlalign_id_pair Mfast_pair\n");
4291 fprintf ( stderr, "\nAnd make sure you provide at least TWO sequences\n");
4292 for ( a=0; a< argc; a++)fprintf ( stderr, "%s ", argv[a]);
4293 fprintf ( stderr, "\n*****************************************************************\n");
4294 myexit(EXIT_FAILURE);
4298 CL->normalise=do_normalise;
4300 if ( type && type[0])sprintf ( (CL->S)->type, "%s", type);
4301 CL->extend_jit=(do_extend>0)?1:0;
4303 CL->extend_threshold=(do_extend==1)?0:do_extend;
4304 CL->do_self=do_self;
4305 sprintf (CL->extend_clean_mode, "%s", clean_mode);
4306 sprintf (CL->extend_compact_mode, "%s", compact_mode);
4307 if ( CL->extend_jit && CL->extend_threshold !=0)filter_constraint_list (CL,WE,CL->extend_threshold);
4308 CL->pw_parameters_set=1;
4312 CL->nomatch=nomatch;
4313 set_int_variable ("nomatch", nomatch);
4315 if ( !gep && !gop && CL->M)
4317 CL->gop=get_avg_matrix_mm ( CL->M, (strm3((CL->S)->type,"PROTEIN", "Protein", "protein")?AA_ALPHABET:"gcuta"))*10;
4319 fprintf ( CL->local_stderr, "\nAUTOMATIC PENALTIES: gapopen=%d gapext=%d", CL->gop, CL->gep);
4321 else if ( !CL->M && cosmetic_penalty && !gep && !gop)
4324 CL->gop=cosmetic_penalty;
4330 fprintf ( CL->local_stderr, "\nMANUAL PENALTIES: gapopen=%d gapext=%d", CL->gop, CL->gep);
4338 CL->maximise=maximise;
4340 if (strm(retrieve_seq_type(),"DNA")|| strm(retrieve_seq_type(),"RNA") )
4341 CL->ktup=MAX(2,ktup);
4345 CL->use_fragments=diag_mode;
4346 CL->fasta_step=fasta_step;
4347 CL->diagonal_threshold=diag_threshold;
4349 sprintf ( CL->matrix_for_aa_group, "%s", sim_matrix);
4350 sprintf ( CL->dp_mode, "%s", dp_mode);
4351 CL->TG_MODE=tg_mode;
4353 sprintf ( CL->evaluate_mode, "%s", evaluate_mode);
4354 fprintf (le, "\n\n\tLibrary Total Size: [%d]\n", CL->ne);
4357 CL=choose_extension_mode (extend_mode, CL);
4358 CL->max_n_pair=max_n_pair;
4361 //use the L, vener touch it again
4364 if (CL->ne>0 && out_lib[0]!='\0' && !strm (out_lib, "no"))
4367 if (strstr (out_lib_mode, "extended"))
4371 //Do the processing before saving the extended lib*/
4373 if ( filter_lib) CL=filter_constraint_list (CL,CL->weight_field, filter_lib);
4374 for (a=0; a<relax_lib; a++)CL=relax_constraint_list (CL);
4375 for (a=0; a<shrink_lib; a++)CL=shrink_constraint_list (CL);
4376 sprintf ( emode, "lib_%s", out_lib_mode);
4378 OUT=vfopen (out_lib, "w");
4379 OUT=save_extended_constraint_list(CL,emode,OUT);
4383 OUT=save_constraint_list ( CL, 0, CL->ne, out_lib, NULL, "ascii",CL->S);
4386 CL->local_stderr=display_output_filename (le, "TCLIB","tc_lib_format_01",out_lib, CHECK);
4390 if ( lib_only)return EXIT_SUCCESS;
4392 //fprintf ( stderr, "AVG LINK: %3f", constraint_list2connectivity (CL); exit (0);
4395 if ( filter_lib) CL=filter_constraint_list (CL,CL->weight_field, filter_lib);
4396 if (atoigetenv ("EXTEND4TC")==1)CL=extend_constraint_list(CL);
4397 for (a=0; a<relax_lib; a++)CL=relax_constraint_list (CL);
4398 for (a=0; a<shrink_lib; a++)CL=shrink_constraint_list (CL);
4401 CL=evaluate_constraint_list_reference (CL);
4402 sprintf ( CL->distance_matrix_mode, "%s", distance_matrix_mode);
4403 sprintf ( CL->distance_matrix_sim_mode, "%s", distance_matrix_sim_mode);
4405 sprintf ( CL->tree_mode, "%s", tree_mode);
4406 //Re-estimate the distance matrix with consistency//
4407 if ( strm ("cscore", distance_matrix_mode))
4409 CL->DM=cl2distance_matrix ( CL,NOALN,distance_matrix_mode, distance_matrix_sim_mode,1);
4411 /*WEIGHT CONSTRAINT LIST*/
4416 CL->DM=cl2distance_matrix (CL, NOALN, NULL, NULL,0);
4418 CL=weight_constraint_list(CL, seq_weight);
4420 if (output_seq_weights (CL->W, outseqweight))
4421 CL->local_stderr=display_output_filename( CL->local_stderr,"WEIGHT","tc_weight",outseqweight, CHECK);
4422 le=display_weights(CL->W, le);
4427 /*Prepare quadruplets*/
4428 if ( nseq_for_quadruplet && !strm(seq_name_for_quadruplet[0], "all"))
4430 CL->nseq_for_quadruplet=nseq_for_quadruplet;
4431 CL->seq_for_quadruplet=vcalloc ((CL->S)->nseq, sizeof (int));
4432 for (a=0; a< CL->nseq_for_quadruplet; a++)
4434 printf ( "\nquad: %s", seq_name_for_quadruplet[a]);
4435 if ( (b=name_is_in_list (seq_name_for_quadruplet[a],(CL->S)->name,(CL->S)->nseq, 100))!=-1)CL->seq_for_quadruplet[b]=1;
4436 else add_warning ( stderr, "\nWARNING: Sequence %s is not in the set and cannot be used for quadruplet extension\n",seq_name_for_quadruplet[a]);
4439 else if ( nseq_for_quadruplet && strm(seq_name_for_quadruplet[0], "all"))
4442 CL->nseq_for_quadruplet=(CL->S)->nseq;
4443 CL->seq_for_quadruplet=vcalloc ((CL->S)->nseq, sizeof (int));
4444 for (a=0; a< CL->nseq_for_quadruplet; a++)
4446 CL->seq_for_quadruplet[a]=1;
4450 /*******************************************************************************************************/
4452 /* Prepare The Alignment */
4454 /*******************************************************************************************************/
4460 A=seq2aln ((CL->S),NULL,1);
4461 ungap_array(A->seq_al,A->nseq);
4463 /*Chose the right Mode for evaluating Columns*/
4466 else if ( strm ( msa_mode, "seq_aln"))
4468 A=seq_aln (A,(CL->S)->nseq, CL);
4470 else if ( strm ( msa_mode, "sorted_aln"))
4472 A=sorted_aln (A, CL);
4474 else if ( strm ( msa_mode, "full_sorted_aln"))
4476 full_sorted_aln (A, CL);
4477 output_constraints (out_lib, "sim", A);
4478 CL->local_stderr=display_output_filename (le, "TCLIB","tc_lib_format_01",out_lib, CHECK);
4479 return EXIT_SUCCESS;
4482 else if ( strm ( msa_mode, "profile_aln"))
4484 A=iterative_tree_aln (A, 0, CL);
4485 A=profile_aln (A, CL);
4487 else if ( strm ( msa_mode, "iterative_aln"))
4489 A=iterative_tree_aln (A, 0, CL);
4490 A=iterative_aln (A,10, CL);
4492 else if ( strm ( msa_mode, "iterative_tree_aln"))
4494 A=iterative_tree_aln (A,1, CL);
4496 else if ( strm ( msa_mode, "dpa_aln"))
4500 else if ( strm ( msa_mode, "new_dpa_aln"))
4502 A=new_dpa_aln (A, CL);
4504 else if ( strm ( msa_mode, "delayed_tree_aln"))
4506 A=make_delayed_tree_aln (A,2, CL);
4508 else if ( strm ( msa_mode, "groups"))
4510 A=seq2aln_group (A,dpa_maxnseq, CL);
4511 out_aln_format[0]="conc_aln";
4514 else if ( strm ( msa_mode, "upgma"))
4516 A=upgma_tree_aln (A, A->nseq, CL);
4518 else if ( strm ( msa_mode, "graph"))
4520 fprintf ( stderr, "\nDO GRAPH ALIGNMENT");
4521 A=graph_aln ( A, CL, (CL->S));
4523 else if ( strm ( msa_mode, "tsp"))
4525 fprintf ( stderr, "\nDO TSP ALIGNMENT");
4526 A=tsp_aln ( A, CL, (CL->S));
4528 else if ( strm ( msa_mode, "precomputed"))
4530 if (infile[0]) {free_aln (A);A=main_read_aln ( infile, declare_aln(CL->S));}
4531 else{fprintf ( stderr, "\nERROR: distance_matrix_mode=aln requires an aln passed via the -infile flag [FATAL:%s]", PROGRAM);crash ("");}
4533 sprintf ( CL->dp_mode, "precomputed_pair_wise");
4534 sprintf ( CL->distance_matrix_mode, "aln");
4535 CL->tree_aln=A=reorder_aln ( A, (CL->S)->name,(CL->S)->nseq);
4538 if ( strm (tree_file, "default") || !check_file_exists (tree_file))
4539 T=make_tree ( A,CL,gop, gep,(CL->S),pc, maximise);
4540 else if ( strm (tree_file, "no"))
4541 T=make_tree ( A,CL,gop, gep,(CL->S),NULL, maximise);
4544 T=read_tree (pc,&tot_node,(CL->S)->nseq, (CL->S)->name);
4547 SNL=tree_aln ((T[3][0])->left,(T[3][0])->right,A,(CL->S)->nseq, CL);
4549 else if ( strm ( msa_mode, "tree"))
4551 if ( strm (CL->distance_matrix_mode, "aln"))
4553 if (infile[0]) {free_aln (A);A=main_read_aln ( infile, declare_aln(CL->S));}
4554 else{fprintf ( stderr, "\nERROR: distance_matrix_mode=aln requires an aln passed via the -infile flag [FATAL:%s]", PROGRAM);crash ("");}
4558 if ( strm (tree_file, "default") || !check_file_exists (tree_file))
4559 T=make_tree ( A,CL,gop, gep,(CL->S),pc,maximise);
4560 else if ( strm (tree_file, "no"))
4561 T=make_tree ( A,CL,gop, gep,(CL->S),NULL, maximise);
4564 fprintf ( le, "\nREAD PRECOMPUTED TREE: %s\n", pc);
4565 T=read_tree (pc,&tot_node,(CL->S)->nseq, (CL->S)->name);
4567 SNL=tree_aln ((T[3][0])->left,(T[3][0])->right,A,(CL->S)->nseq, CL);
4568 A->nseq=(CL->S)->nseq;
4573 fprintf ( stderr, "\nERROR: msa_mode %s is unknown [%s:FATAL]\n", msa_mode, PROGRAM);
4578 else if ( (do_evaluate || do_convert))
4582 A=(infile[0])?main_read_aln ( infile, declare_aln(CL->S)):NULL;
4584 if (!A)A=seq2aln((CL->S), NULL,0);
4588 A->nseq=(CL->S)->nseq;
4592 else if ( do_genepred)
4595 A1=seq2aln(CL->S, NULL, 1);
4597 A2=coffee_seq_evaluate_output (A1, CL);
4598 if (!A2->score_res)myexit(0);
4599 for ( b=0; b< n_out_aln_format; b++)
4603 OUT=copy_aln (A2,NULL);
4604 output_format_aln (out_aln_format[b],OUT,NULL, tot_out_aln[b]);
4605 le=display_output_filename( le,"MSA",out_aln_format[b], tot_out_aln[b], CHECK);
4608 return EXIT_SUCCESS;
4613 CL->moca=vcalloc ( 1, sizeof ( Moca));
4614 if (strm ( "cfasta_pair_wise", dp_mode))sprintf (CL->dp_mode, "%s","domain_pair_wise");
4615 (CL->moca)->moca_start=domain_start;
4616 (CL->moca)->moca_len =domain_len;
4617 (CL->moca)->moca_scale=(domain_scale==0)?-(CL->normalise/20):domain_scale;
4618 (CL->moca)->moca_interactive=domain_interactive;
4622 if (!cosmetic_penalty && !gep && !gop)
4628 CL=prepare_cl_for_moca (CL);
4629 aln_list=moca_aln (CL);
4630 free_int ( CL->packed_seq_lu, -1);
4631 CL->packed_seq_lu=NULL;
4634 while ( aln_list[a])
4636 for ( b=0; b< n_out_aln_format; b++)
4639 output_format_aln (out_aln_format[b],aln_list[a],EA=fast_coffee_evaluate_output(aln_list[a], CL), tot_out_aln[b]);
4640 le=display_output_filename( le,"MSA",out_aln_format[b], tot_out_aln[b], CHECK);
4644 return EXIT_SUCCESS;
4646 else if ( do_extended_matrix)
4648 A=seq2aln(CL->S, NULL, 1);
4650 for ( a=0; a< n_out_aln_format; a++)
4652 output_format_aln (out_aln_format[a],A,EA, tot_out_aln[a]);
4653 le=display_output_filename( le,"MSA",out_aln_format[a], tot_out_aln[a], CHECK);
4656 return EXIT_SUCCESS;
4660 /*******************************************************************************************************/
4662 /* PREPARE THE ALIGNMENT FOR OUTPUT */
4664 /*******************************************************************************************************/
4669 for ( a=0; a< A->nseq; a++)
4671 for ( b=0; b< A->len_aln ; b++)
4672 if ( A->seq_al[a][b]=='O' || A->seq_al[a][b]=='o')A->seq_al[a][b]='-';
4679 if ( check_file_exists(outorder))
4682 OS=get_fasta_sequence (outorder, NULL);
4683 if ( prf_in_seq (CL->S))A->expanded_order=OS->name;
4684 else A=reorder_aln ( A,OS->name,A->nseq);
4686 else if ( strm(outorder, "aligned") && T)
4688 A=reorder_aln ( A,A->tree_order,A->nseq);
4694 A=reorder_aln ( A, (CL->S)->name,(CL->S)->nseq);
4695 A=reorder_aln ( A, initial_order,(CL->S)->nseq);
4699 A->output_res_num=strm3 ( output_res_num, "on", "On", "ON");
4701 if ( strm2 (residue_case, "keep", "retain"))A->residue_case=KEEP_CASE;
4702 else if (strm3 (residue_case, "upper", "Upper", "UPPER"))A->residue_case=UPPER_CASE;
4703 else if (strm3 (residue_case, "lower", "Lower", "LOWER"))A->residue_case=LOWER_CASE;
4704 else A->residue_case=1;
4713 A=iterate_aln (A, iterate, CL);
4719 EA=main_coffee_evaluate_output(A, CL,clean_evaluate_mode);
4720 A=clean_maln(A, EA,clean_threshold,clean_iteration);
4729 over_aln_tmp=vtmpnam(NULL);
4730 output_format_aln ("overaln", A, NULL, over_aln_tmp);
4731 A=main_read_aln (over_aln_tmp,A);
4734 EA=main_coffee_evaluate_output(A, CL, evaluate_mode);
4736 //correct ascii file
4739 EA=overlay_alignment_evaluation (A,EA);
4744 if (!strm2(out_aln, "stdout", "stderr") && le==stderr && !do_convert)output_format_aln ("aln",A,NULL,"stdout");
4748 for ( a=0; a< n_out_aln_format; a++)
4749 if ( !strstr ( out_aln_format[a], "expand"))output_format_aln (out_aln_format[a],A,EA, tot_out_aln[a]);
4750 for ( a=0; a< n_out_aln_format; a++)
4751 if ( strstr (out_aln_format[a], "expand"))output_format_aln (out_aln_format[a],A,EA, tot_out_aln[a]);
4755 fprintf (le, "\n\nOUTPUT RESULTS");
4756 if ((CL->S)->nseq>2)
4757 le=display_output_filename (le, "GUIDE_TREE","newick", tree_file, CHECK);
4759 for ( a=0; a< n_out_aln_format; a++)
4760 le=display_output_filename( le,"MSA",out_aln_format[a], tot_out_aln[a], CHECK);
4761 if (CL->ne>0 && out_lib[0]!='\0' && !strm (out_lib, "no"))
4762 CL->local_stderr=display_output_filename (le, "TCLIB","tc_lib_format_01",out_lib, CHECK);
4764 if (!strm (ph_tree_file, "NO") && A->nseq>2)
4769 tmode=declare_char (2, 100);
4770 sprintf (tmode[0], "nj");
4771 T=tree_compute (A, 1, tmode);
4772 tfp=vfopen (ph_tree_file, "w");
4773 tfp=print_tree (T, "newick", tfp);
4775 le=display_output_filename (le, "PHYLOGENIC_TREE","newick", ph_tree_file, CHECK);
4783 if (trim && n_seq_to_keep)
4785 if (n_seq_to_keep==1 && check_file_exists (seq_to_keep[0]))
4788 SEQ_TO_KEEP=read_sequences (seq_to_keep[0]);
4793 SEQ_TO_KEEP=declare_sequence ( 1, 1,n_seq_to_keep);
4794 for ( a=0; a< n_seq_to_keep; a++)sprintf ( SEQ_TO_KEEP->name[a], "%s", seq_to_keep[a]);
4798 sprintf ( CL->dp_mode, "precomputed_pair_wise");
4799 sprintf ( CL->distance_matrix_mode, "aln");
4803 CL->tree_aln=A=reorder_aln ( A, (CL->S)->name,(CL->S)->nseq);
4810 if ( strm (tree_file, "default") || !check_file_exists (tree_file))
4811 T=make_tree ( A,CL,gop, gep,(CL->S),pc, maximise);
4812 else if ( strm (tree_file, "no"))
4813 T=make_tree ( A,CL,gop, gep,(CL->S),NULL, maximise);
4816 T=read_tree (pc,&tot_node,(CL->S)->nseq, (CL->S)->name);
4820 SNL=tree_aln ((T[3][0])->left,(T[3][0])->right,A,(CL->S)->nseq, CL);
4823 for ( a=0, b=0; a<A->nseq; a++)b+=(SNL[a])?1:0;
4824 fprintf ( le, "\n\nSPLIT DATASET: %d Groups\n", b);
4825 /*Display Group Names*/
4827 if ( trim && SEQ_TO_KEEP)
4829 for ( a=0; a< SEQ_TO_KEEP->nseq; a++)
4832 trim_subS=extract_one_seq(SEQ_TO_KEEP->name[a],0,0,A,KEEP_NAME);
4833 trim_S=add_sequence (trim_subS,trim_S,0);
4836 for ( a=0, b=0; a<A->nseq; a++)
4842 fprintf ( le, "\n\tSPLIT_GROUP %d ; Nseq %d ; Score %d ; List ",b, (SNL[a])->nseq, (int)(SNL[a])->score);
4843 for ( c=0; c< (SNL[a])->nseq; c++)
4845 fprintf ( le, "%s ",(CL->S)->name[(SNL[a])->lseq[c]]);
4848 SPLIT_ALN=extract_sub_aln (A, (SNL[a])->nseq,(SNL[a])->lseq);
4850 ungap_aln (SPLIT_ALN);
4854 sprintf ( split_format, "%s", "clustalw");
4855 sprintf ( split_name, "%s.split.%d.%s", F->name, b,split_format);
4856 fprintf ( le, " ; File %s", split_name);
4857 output_format_aln (split_format,SPLIT_ALN,NULL,split_name);
4858 le=display_output_filename( le,"SPLIT_SEQ",split_format,split_name, CHECK);
4862 t=aln2most_similar_sequence(SPLIT_ALN, "idmat");
4863 trim_subS=extract_one_seq(SPLIT_ALN->name[t],0,0,SPLIT_ALN,KEEP_NAME);
4864 trim_S=add_sequence (trim_subS,trim_S,0);
4865 fprintf ( le, "\n\tTRIM_SEQ: Kept sequence %s",SPLIT_ALN->name[t]);
4867 free_aln (SPLIT_ALN);
4876 SPLIT_ALN=seq2aln (trim_S,NULL, KEEP_GAP);
4877 ungap_aln (SPLIT_ALN);
4878 sprintf ( trim_format, "%s", "fasta_aln");
4879 if ( strm (trimfile, "default"))sprintf ( trimfile, "%s.trim.%s", F->name,trim_format);
4881 output_format_aln (trim_format,SPLIT_ALN,NULL,trimfile);
4882 le=display_output_filename( le,"TRIM_SEQ",trim_format,trimfile, CHECK);
4886 if (remove_template_file){S=vremove_seq_template_files(S);}
4889 S=display_seq_template_files (S);
4892 //fLUSH OUT THE NAME OF ALL THE FILES THAT HAVE BEEN PRODUCED
4894 le=display_output_filename (le, NULL, NULL, NULL, FLUSH);
4897 fprintf (le, "\n\n");
4899 free_char (list_file, -1);
4901 free_Alignment (EA);
4904 S=free_constraint_list (CL);
4905 free_sequence (S, S->nseq);
4913 le=t_coffee_tip (le, tip);
4914 le=print_command_line ( le);
4915 //le=print_mem_usage (le, PROGRAM);
4916 //le=print_cpu_usage(le, PROGRAM);
4917 le=print_program_information (le, NULL);
4920 if (full_log && full_log[0])log_function(full_log);
4922 return EXIT_SUCCESS;
4925 /*Specialized set of Parameters*/
4926 char *get_defaults (char *buf, char *type)
4930 char *get_precomputed_defaults(char *buf, char *type)
4933 if (buf==NULL)buf=vcalloc (1000, sizeof (char));
4935 buf=strcat (buf," -msa_mode=precomputed ");
4936 buf=strcat (buf," -seq_weight=no ");
4937 buf=strcat (buf," -evaluate_mode no ");
4938 buf=strcat (buf," -in Xpam250mt ");
4941 char *get_evaluate_defaults(char *buf, char *type)
4944 if (buf==NULL)buf=vcalloc (1000, sizeof (char));
4946 buf=strcat (buf," -quiet=stdout ");
4947 /*buf=strcat (buf," -seq_weight=no ");*/
4948 buf=strcat (buf," -output score_ascii html ");
4949 buf=strcat (buf," -iterate 0 ");
4951 buf=strcat (buf," -evaluate ");
4957 char *get_genome_defaults(char *buf, char *type)
4960 if (buf==NULL)buf=vcalloc (1000, sizeof (char));
4962 buf=strcat (buf," -seq_weight=no ");
4963 buf=strcat (buf," -dp_mode sim_pair_wise_lalign ");
4964 buf=strcat (buf," -output glalign ");
4965 buf=strcat (buf," -iterate 0 ");
4966 buf=strcat (buf," -distance_matrix_mode ktup ");
4967 buf=strcat (buf," -evaluate_mode t_coffee_slow ");
4968 buf=strcat (buf," -gapopen 100 -gapext 20 -nomatch 30 ");
4969 buf=strcat (buf," -clean_aln 0 ");
4970 buf=strcat (buf,"-output clustalw,score_ascii ");
4975 char *get_dali_defaults(char *buf, char *type)
4978 if (buf==NULL)buf=vcalloc (1000, sizeof (char));
4980 buf=strcat (buf,"-cosmetic_penalty=-50 ");
4981 buf=strcat (buf,"-distance_matrix_mode=slow ");
4982 buf=strcat (buf,"-output clustalw,score_ascii ");
4983 buf=strcat (buf,"-evaluate_mode=non_extended_t_coffee ");
4984 buf=strcat (buf,"-clean_aln 0 ");
4989 char *get_very_fast_defaults(char *buf, char *type)
4992 if (buf==NULL)buf=vcalloc (1000, sizeof (char));
4994 buf=strcat (buf,"-in Xblosum62mt ");
4995 buf=strcat (buf,"-distance_matrix_mode ktup ");
4996 buf=strcat (buf,"-maxnseq 10000 ");
4997 buf=strcat (buf,"-dpa_maxnseq 0 ");
4998 buf=strcat (buf,"-dp_mode fasta_pair_wise ");
4999 buf=strcat (buf,"-extend_mode matrix ");
5000 buf=strcat (buf,"-gapopen -10 ");
5001 buf=strcat (buf,"-gapext -1 ");
5002 buf=strcat (buf,"-iterate 0 ");
5003 /*buf=strcat (buf,"-in ");*/
5008 char *get_low_memory_defaults(char *buf, char *type)
5010 if (buf==NULL)buf=vcalloc (1000, sizeof (char));
5012 if (NO_METHODS_IN_CL)buf=strcat (buf,"-distance_matrix_mode=idscore -method lalign_id_pair slow_pair -dp_mode=linked_pair_wise ");
5013 else buf=strcat (buf,"-distance_matrix_mode=idscore -dp_mode=linked_pair_wise ");
5016 char *get_dna_defaults(char *buf, char *type)
5021 char *get_cdna_defaults(char *buf, char *type)
5023 buf=strcat (buf,"-distance_matrix_mode=idscore -dp_mode=fasta_cdna_pair_wise ");
5026 char *get_3dcoffee_defaults(char *buf, char *type)
5028 if (buf==NULL)buf=vcalloc (1000, sizeof (char));
5030 buf=strcat (buf,"-in Msap_pair -template_file SELF_P_ -profile_template_file SELF_P_");
5031 /*buf=strcat (buf,"-in ");*/
5035 char *get_expresso_defaults(char *buf, char *type)
5038 if (buf==NULL)buf=vcalloc (1000, sizeof (char));
5040 buf=strcat (buf,"-method sap_pair -template_file EXPRESSO -profile_template_file EXPRESSO");
5042 /*buf=strcat (buf,"-in ");*/
5046 char *get_procoffee_defaults(char *buf, char *type)
5049 if (buf==NULL)buf=vcalloc (1000, sizeof (char));
5051 buf=strcat (buf,"-in Mpromo_pair -extend_seq ");
5052 /*buf=strcat (buf,"-in ");*/
5056 char *get_blastr_defaults(char *buf, char *type)
5059 if (buf==NULL)buf=vcalloc (1000, sizeof (char));
5061 buf=strcat (buf,"-in Mblastr_pair -extend_seq ");
5062 /*buf=strcat (buf,"-in ");*/
5066 char *get_psicoffee_defaults(char *buf, char *type)
5069 if (buf==NULL)buf=vcalloc (1000, sizeof (char));
5071 buf=strcat (buf,"-in Mproba_pair -template_file BLAST ");
5072 /*buf=strcat (buf,"-in ");*/
5076 char *get_accurate_defaults ( char *buf, char *type)
5079 if ( strm (type, "PROTEIN")) return get_accurate4PROTEIN_defaults(buf, type);
5080 else if ( strm (type, "DNA")) return get_accurate4DNA_defaults(buf, type);
5081 else if ( strm (type, "RNA")) return get_accurate4RNA_defaults(buf, type);
5082 else return get_defaults(buf, type);
5084 char *get_accurate4PROTEIN_defaults(char *buf, char *type)
5086 if (buf==NULL)buf=vcalloc (1000, sizeof (char));
5087 if (NO_METHODS_IN_CL)buf=strcat (buf,"-in Mbest_pair4prot -template_file BLAST -template_file EXPRESSO ");
5088 else buf=strcat (buf,"-template_file BLAST -template_file EXPRESSO ");
5089 buf=strcat (buf,"-output aln, expanded_fasta_aln ");
5097 char *get_accurate4DNA_defaults(char *buf, char *type)
5099 return get_low_memory_defaults (buf,type);
5101 char *get_accurate4RNA_defaults(char *buf, char *type)
5103 return get_rcoffee_defaults (buf,type);
5105 char *get_t_coffee_defaults(char *buf, char *type)
5109 char *get_fmcoffee_defaults(char *buf, char *type)
5112 if (buf==NULL)buf=vcalloc (1000, sizeof (char));
5114 if (NO_METHODS_IN_CL) buf=strcat (buf,"-in Mkalign_msa Mmuscle_msa Mmafft_msa -multi_core methods_relax_msa");
5116 /*buf=strcat (buf,"-in ");*/
5121 char *get_mcoffee_defaults(char *buf, char *type)
5124 if (buf==NULL)buf=vcalloc (1000, sizeof (char));
5127 if (NO_METHODS_IN_CL) buf=strcat (buf,"-in Mclustalw2_msa Mt_coffee_msa Mpoa_msa Mmuscle_msa Mmafft_msa Mdialignt_msa Mpcma_msa Mprobcons_msa -multi_core methods_relax_msa ");
5128 /*buf=strcat (buf,"-in ");*/
5131 char *get_dmcoffee_defaults(char *buf, char *type)
5134 if (buf==NULL)buf=vcalloc (1000, sizeof (char));
5136 if (NO_METHODS_IN_CL)buf=strcat (buf,"-in Mkalign_msa Mt_coffee_msa Mpoa_msa Mmuscle_msa Mmafft_msa Mdialignt_msa Mprobcons_msa Mamap_msa -multi_core methods_relax_msa");
5137 /*buf=strcat (buf,"-in ");*/
5141 char *get_rcoffee_consan_defaults(char *buf, char *type)
5144 if (buf==NULL)buf=vcalloc (1000, sizeof (char));
5146 check_program_is_installed (RNAPLFOLD_4_TCOFFEE,NULL, NULL,RNAPLFOLD_ADDRESS, INSTALL_OR_DIE);
5147 if (NO_METHODS_IN_CL)buf=strcat (buf,"-in Mconsan_pair -multi_core templates_relax_msa -dp_mode myers_miller_pair_wise -extend_mode rna2 -template_file RCOFFEE -transform dna2rna -type DNA -relax_lib 0");
5148 else buf=strcat (buf,"-dp_mode myers_miller_pair_wise -extend_mode rna2 -template_file RCOFFEE -transform dna2rna -type DNA -relax_lib 0");
5149 /*buf=strcat (buf,"-in ");*/
5153 char *get_rmcoffee_defaults(char *buf, char *type)
5156 if (buf==NULL)buf=vcalloc (1000, sizeof (char));
5158 check_program_is_installed (RNAPLFOLD_4_TCOFFEE,NULL, NULL,RNAPLFOLD_ADDRESS, INSTALL_OR_DIE);
5159 if (NO_METHODS_IN_CL)buf=strcat (buf,"-in Mprobcons_msa Mmafft_msa Mmuscle_msa -extend_mode rna2 -template_file RCOFFEE -transform dna2rna -check_type -type DNA -relax_lib 0");
5160 else buf=strcat (buf,"-extend_mode rna2 -template_file RCOFFEE -transform dna2rna -check_type -type DNA -relax_lib 0");
5161 /*buf=strcat (buf,"-in ");*/
5166 // if (NO_METHODS_IN_CL)buf=strcat (buf,"-in Mbest_pair4prot -template_file BLAST -template_file EXPRESSO ");
5167 char *get_best4RNA_defaults(char *buf, char *type)
5170 if (buf==NULL)buf=vcalloc (1000, sizeof (char));
5172 check_program_is_installed (RNAPLFOLD_4_TCOFFEE,NULL, NULL,RNAPLFOLD_ADDRESS, INSTALL_OR_DIE);
5173 buf=strcat (buf," -extend_mode rna2 -template_file PDB,RNA -in Mbest_pair4rna -transform dna2rna -relax_lib 0");
5174 /*buf=strcat (buf,"-in ");*/
5179 char *get_rcoffee_defaults(char *buf, char *type)
5182 if (buf==NULL)buf=vcalloc (1000, sizeof (char));
5184 check_program_is_installed (RNAPLFOLD_4_TCOFFEE,NULL, NULL,RNAPLFOLD_ADDRESS, INSTALL_OR_DIE);
5185 buf=strcat (buf," -extend_mode rna2 -template_file RCOFFEE -transform dna2rna -check_type -type DNA -relax_lib 0");
5186 /*buf=strcat (buf,"-in ");*/
5190 char *get_genepredx_defaults(char *buf, char *type)
5193 if (buf==NULL)buf=vcalloc (1000, sizeof (char));
5195 buf=strcat (buf, "-method tblastx_msa -evaluate_mode sequences -genepred -relax_lib 0 -output fasta_seq,exons,texons,wexons -seq_weight no -check_type -type DNA -out_lib");
5198 char *get_genepredpx_defaults(char *buf, char *type)
5201 if (buf==NULL)buf=vcalloc (1000, sizeof (char));
5203 buf=strcat (buf, "-method tblastpx_msa -evaluate_mode sequences -genepred -relax_lib 0 -output fasta_seq,exons,texons,wexons -seq_weight no -check_type -type DNA -out_lib");
5207 char *get_repeat_defaults(char *buf, char *type)
5210 if (buf==NULL)buf=vcalloc (1000, sizeof (char));
5212 buf=strcat (buf,"-in slow_pair -matrix idmat -out_lib -profile_comparison profile -profile_mode channel_profile_profile -dp_mode myers_miller_pair_wise ");
5213 /*buf=strcat (buf,"-in ");*/
5218 int check_configuration4program()
5224 /*Chose the right Mode for comparing residues*/
5231 c2=vcalloc ( 100, sizeof (char));
5233 sprintf (command, "cat hmgt_mouseVsnrl3d.blast_result |blast_aln2fasta_aln.pl | fasta_aln2fasta_aln_unique_name.pl > my_test");
5235 fprintf ( stderr, "C1: %d, C2:%d", is_dynamic_memory (c2), is_dynamic_memory (c2));
5241 int run_other_pg ( int argc, char *argv[])
5243 //make minimum initialization
5246 if ( strm (argv[0], "seq_reformat") || strm (argv[0], "saltt"))
5248 return seq_reformat (argc, argv);
5250 else if ( strm (argv[0], "aln_compare"))
5252 return aln_compare (argc, argv);
5254 else if ( strm (argv[0], "analyse_pdb") || strm (argv[0], "apdb") || strm (argv[0], "irmsd") || strm (argv[0], "trmsd"))
5256 return apdb ( argc, argv);
5258 else if ( strm (argv[0], "quantile"))
5260 return quantile ( argc, argv);
5262 else if ( strstr ( argv[0], "unpack_"))
5264 unpack_all_perl_script (argv[0]+strlen ("unpack_"));
5266 else if ( strstr ( argv[0], "fastal"))
5268 return fastal_main(argc, argv);
5272 return my_system_cl (argc, argv);
5274 return EXIT_FAILURE;
5277 FILE * t_coffee_tip (FILE *fp,char *mode)
5284 tip=declare_char ( 100, 300);
5285 sprintf ( tip[n++],"Get the most accurate protein alignments with: t_coffee <yourseq> -special_mode accurate [Slow]\n");
5286 sprintf ( tip[n++],"Change the Width of your MSA with the environement variable ALN_LINE_LENGTH (all formats)");
5287 sprintf ( tip[n++],"Align 2 or more profiles with -profiles= aln1, aln2");
5288 sprintf ( tip[n++],"-special_mode=expresso to fetch your structures automatically");
5289 sprintf ( tip[n++],"-special_mode=psicoffee to expand your sequences");
5290 sprintf ( tip[n++],"-special_mode=accurate The best we can do [slow]");
5292 sprintf ( tip[n++],"-special_mode=3dcoffee to combine sequences and structures");
5293 sprintf ( tip[n++],"-special_mode=mcoffee to combine alternative msa methods");
5294 sprintf ( tip[n++],"-special_mode=dmcoffee to combine alternative msa methods on debian");
5296 sprintf ( tip[n++],"-usetree=<file> to use your own guide tree");
5297 sprintf ( tip[n++],"-infile=<aln> -special_mode=evaluate to evaluate your own alignment");
5298 sprintf ( tip[n++],"-other_pg seq_reformat to access seq_reformat");
5299 sprintf ( tip[n++],"-other_pg extract_from_pdb to use our pdb retriever");
5300 sprintf ( tip[n++],"All the latest versions on www.tcoffee.org");
5301 sprintf ( tip[n++],"-version to check for updates");
5302 sprintf ( tip[n++],"-output=html will produce a colored output");
5303 sprintf ( tip[n++],"-outorder=aligned will order the sequences according to the guide tree in newick");
5304 sprintf ( tip[n++],"-special_mode=quickaln will produce fast/low accuracy alignments");
5305 sprintf ( tip[n++],"-other_pg seq_reformat -in <aln> -action +trim %%50 Will reduce the redundancy of your MSA");
5306 sprintf ( tip[n++],"-tip=all to see all the tips, tip=no will prevent them all");
5307 sprintf ( tip[n++],"-other_pg unpack_all will unpack all the perl scripts within t_coffee");
5310 if ( strm (mode, "none"))return fp;
5312 fprintf ( fp, "\n# TIP :See The Full Documentation on www.tcoffee.org\n");
5314 if (strm ( mode, "all"))
5316 for ( a=0; a< n; a++)
5318 fprintf (fp, "# TIP %d: %s\n", a+1,tip[a]);
5321 else if ( strm ( mode, "one"))
5326 fprintf (fp, "# TIP %2s: %s","1", tip[0]);
5327 fprintf (fp, "# TIP %2d: %s\n", b+1, tip[b]);
5331 fprintf ( fp, "\n");
5337 Sequence* prepare_master (char *seq, Sequence *S, Constraint_list *CL, char *dmode)
5342 CL->master=vcalloc (S->nseq+1, sizeof(int));
5344 if ( S->nseq==2 || strm (seq, "no") || strm (seq, "default"))
5346 for (a=0; a<S->nseq; a++)CL->master[a]=1;
5349 else if ( check_file_exists (seq))
5352 L=main_read_seq (seq);
5353 for (a=0; a< L->nseq; a++)
5354 if ( (b=name_is_in_list (L->name[a], S->name,S->nseq, 100))!=-1)CL->master[b]=1;
5359 if ( strstr (seq, "_P_"))
5361 for (a=0; a<S->nseq; a++)
5363 if (seq_has_template (S, a, "_P_"))CL->master[a]=1;
5366 if ( is_number (seq) || strstr (seq, "_N_"))
5370 Alignment *A=NULL, *SA=NULL;
5371 if ( strstr (seq, "_N_")){nseq=atoi (strstr(seq, "_N_")+strlen ("_N_"));}
5372 else nseq=atoi (seq);
5374 nseq=((float)S->nseq*((float)nseq/(float)100.0)*(float)-1);
5376 nseq=MIN(nseq,S->nseq);
5379 for (a=0; a<(CL->S)->nseq; a++)CL->master[a]=1;
5387 A=(strm (dmode, "msa"))?(very_fast_aln (seq2aln (S, NULL, RM_GAP), 0, NULL)):(seq2aln (S, NULL, RM_GAP));
5388 sim=(strm (dmode, "ktup") && CL->DM)?(CL->DM)->similarity_matrix:NULL;
5390 sprintf (tmode, "_aln_n%d", nseq);
5391 SA=simple_trimseq (A, NULL, tmode, NULL, NULL);
5394 for (a=0; a<nseq;a++)
5396 if (nseq==(CL->S)->nseq)CL->master[a]=1;
5397 else if ((b=name_is_in_list (name[a], S->name,S->nseq, 100))!=-1)CL->master[b]=1;
5403 if ( strstr (seq, "_LONG_"))
5407 for (a=0; a< (CL->S)->nseq; a++)
5409 int l=strlen ((CL->S)->seq[a]);
5410 if (l>ml){ml=l;ls=a;}
5412 CL->master[ls]=1; //keep the longest seqquence
5417 fprintf ( CL->local_stderr, "\n");
5418 for (b=0,a=0; a<S->nseq; a++)
5422 fprintf (CL->local_stderr, "\tMaster_sequence: %s\n", S->name[a]);
5428 printf_exit (EXIT_FAILURE, stderr, "ERROR: %s is neither a file nor a method nor a number for -master [FATAL:%s]\n",seq,PROGRAM);
5431 if (b!=(CL->S)->nseq)
5434 T=duplicate_sequence (CL->S);
5435 for(a=0; a<T->nseq; a++)
5437 if (!CL->master[a]){vfree (T->seq[a]); T->seq[a]=NULL;}
5439 MS=duplicate_sequence (T);
5440 free_sequence (T, -1);
5446 int set_methods_limits (char ** method,int nl,char **list, int n, int *maxnseq, int *maxlen)
5452 for (a=0; a<nl; a+=3)
5455 sprintf ( string, "M%s", method[a]);
5456 if ( name_is_in_list (string,list, n, 100)!=-1)
5459 ns=atoi(method[a+1]);
5460 ml=atoi(method[a+2]);
5462 if (ns!=-1 && (maxnseq[0]==-1 || maxnseq[0]>ns))maxnseq[0]=ns;
5463 if (ml!=-1 && (maxlen[0]==-1 || maxlen[0]>ml))maxlen[0]=ml;
5472 char * get_seq_type_from_cl (int argc, char **argv)
5479 sprintf (file, "%d.tmp", rand()%10000);
5480 buf=vcalloc ( 1000, sizeof (char));
5481 sprintf ( buf, "%s ", get_string_variable ("t_coffee"));
5482 for (a=1, seq=0; a<argc; a++)
5484 if ( check_file_exists (argv[a]))seq=1;
5486 if (!seq) return "";
5488 for (a=1; a< argc; a++)
5490 buf=strcat (buf, argv[a]);
5491 buf=strcat (buf, " ");
5494 buf=strcat (buf, " -type_only >");
5495 buf=strcat (buf, file);
5499 r=file2string (file);
5503 /******************************COPYRIGHT NOTICE*******************************/
5504 /*© Centro de Regulacio Genomica */
5506 /*Cedric Notredame */
5507 /*Fri Feb 18 08:27:45 CET 2011 - Revision 596. */
5508 /*All rights reserved.*/
5509 /*This file is part of T-COFFEE.*/
5511 /* T-COFFEE is free software; you can redistribute it and/or modify*/
5512 /* it under the terms of the GNU General Public License as published by*/
5513 /* the Free Software Foundation; either version 2 of the License, or*/
5514 /* (at your option) any later version.*/
5516 /* T-COFFEE is distributed in the hope that it will be useful,*/
5517 /* but WITHOUT ANY WARRANTY; without even the implied warranty of*/
5518 /* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the*/
5519 /* GNU General Public License for more details.*/
5521 /* You should have received a copy of the GNU General Public License*/
5522 /* along with Foobar; if not, write to the Free Software*/
5523 /* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA*/
5524 /*............................................... |*/
5525 /* If you need some more information*/
5526 /* cedric.notredame@europe.com*/
5527 /*............................................... |*/
5531 /******************************COPYRIGHT NOTICE*******************************/