--- /dev/null
+/******************************COPYRIGHT NOTICE*******************************/
+/* (c) Centro de Regulacio Genomica */
+/* and */
+/* Cedric Notredame */
+/* 12 Aug 2014 - 22:07. */
+/*All rights reserved. */
+/*This file is part of T-COFFEE. */
+/* */
+/* T-COFFEE is free software; you can redistribute it and/or modify */
+/* it under the terms of the GNU General Public License as published by */
+/* the Free Software Foundation; either version 2 of the License, or */
+/* (at your option) any later version. */
+/* */
+/* T-COFFEE is distributed in the hope that it will be useful, */
+/* but WITHOUT ANY WARRANTY; without even the implied warranty of */
+/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the */
+/* GNU General Public License for more details. */
+/* */
+/* You should have received a copy of the GNU General Public License */
+/* along with Foobar; if not, write to the Free Software */
+/* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
+/*............................................... */
+/* If you need some more information */
+/* cedric.notredame@europe.com */
+/*............................................... */
+/******************************COPYRIGHT NOTICE*******************************/
+/*********************************************************************************************/
+/* */
+/* FUNCTIONS FOR EVALUATING THE CONSISTENCY BETWEEN ALN AND CL */
+/* */
+/*********************************************************************************************/
+Alignment * overlay_alignment_evaluation ( Alignment *I, Alignment *O);
+Alignment * main_coffee_evaluate_output ( Alignment *IN,Constraint_list *CL, const char *mode );
+int aln2ecl_raw_score (Alignment *A, Constraint_list *C);
+int sub_aln2ecl_raw_score (Alignment *A, Constraint_list *CL, int ns, int *ls);
+int sub_aln2sub_aln_raw_score ( Alignment *IN,Constraint_list *CL, const char *mode, int *ns, int **ls);
+int node2sub_aln_score(Alignment *A,Constraint_list *CL, char *mode, NT_node T);
+int sub_aln2sub_aln_score ( Alignment *IN,Constraint_list *CL, const char *mode, int *ns, int **ls);
+Alignment * main_coffee_evaluate_output_sub_aln ( Alignment *IN,Constraint_list *CL, const char *mode, int *ns, int **ls);
+
+Alignment * categories_evaluate_output ( Alignment *IN,Constraint_list *CL);
+Alignment * matrix_evaluate_output ( Alignment *IN,Constraint_list *CL);
+Alignment * sar_evaluate_output ( Alignment *IN,Constraint_list *CL);
+Alignment * boxshade_evaluate_output ( Alignment *IN,Constraint_list *CL, int T);
+Alignment * triplet_coffee_evaluate_output ( Alignment *IN,Constraint_list *CL);
+Alignment * fast_coffee_evaluate_output ( Alignment *IN,Constraint_list *CL);
+Alignment * sp3_evaluate4tcoffee (Alignment *RNA, Constraint_list *CLin);
+Alignment * distance_evaluate4tcoffee (Alignment *A, Constraint_list *CL, float max, float delta, int enb);
+Alignment * strike_evaluate4tcoffee (Alignment *A, Constraint_list *CL,char *matrix);
+Alignment * struc_evaluate4tcoffee (Alignment *A, Constraint_list *CL,char *mode,float max, int enb,char *in_matrix_name);
+Alignment * evaluate_tree_group (Alignment *T, Sequence *G);
+Alignment *treealn_evaluate4tcoffee (Alignment *A, Sequence *G);
+
+int slow_coffee_evaluate_sub_aln ( Alignment *IN,int *ns, int **ls, Constraint_list *CL);
+Alignment * slow_coffee_evaluate_output ( Alignment *IN,Constraint_list *CL);
+Alignment * non_extended_t_coffee_evaluate_output( Alignment *IN,Constraint_list *CL);
+Alignment * heuristic_coffee_evaluate_output ( Alignment *IN,Constraint_list *CL);
+Alignment *coffee_seq_evaluate_output ( Alignment *IN, Constraint_list *CL);
+/*Old Function: To deprecate*/
+Alignment * coffee_evaluate_output ( Alignment *IN,Constraint_list *CL);
+
+/*********************************************************************************************/
+/* */
+/* PROFILE/PRofile Functions */
+/* */
+/*********************************************************************************************/
+Profile_cost_func get_profile_mode_function (char *name, Profile_cost_func func);
+int generic_evaluate_profile_score (Constraint_list *CL,Alignment *Prf1, int s1, int r1, Alignment *Prf2, int s2, int r2, Profile_cost_func prf_prf);
+int cw_profile_profile (int *prf1, int *prf2, Constraint_list *CL);
+int muscle_profile_profile (int *prf1, int *prf2, Constraint_list *CL);
+
+/*********************************************************************************************/
+/* */
+/* FUNCTIONS FOR GETING THE COST : (Sequences) ->evaluate_residue_pair */
+/* */
+/*********************************************************************************************/
+int initialize_scoring_scheme (Constraint_list *CL);
+int evaluate_blast_profile_score (Constraint_list *CL, int s1, int r1, int s2, int r2);
+int evaluate_aln_profile_score (Constraint_list *CL, int s1, int r1, int s2, int r2);
+
+int evaluate_profile_score ( Constraint_list *CL,Alignment *Prf1, int s1, int r1, Alignment *Prf2, int s2, int r2);
+int evaluate_cdna_matrix_score ( Constraint_list *CL, int s1, int r1, int s2, int r2);
+int evaluate_diaa_matrix_score ( Constraint_list *CL, int s1, int r1, int s2, int r2);
+int evaluate_monoaa_matrix_score ( Constraint_list *CL, int s1, int r1, int s2, int r2);
+int evaluate_matrix_score ( Constraint_list *CL, int s1, int r1, int s2, int r2);
+int evaluate_tm_matrix_score ( Constraint_list *CL, int s1, int r1, int s2, int r2);
+int evaluate_ssp_matrix_score ( Constraint_list *CL, int s1, int r1, int s2, int r2);
+int evaluate_curvature_score ( Constraint_list *CL, int s1, int r1, int s2, int r2);
+
+int evaluate_combined_matrix_score ( Constraint_list *CL, int s1, int r1, int s2, int r2);
+int evaluate_physico_score ( Constraint_list *CL, int s1, int r1, int s2, int r2);
+int residue_pair_non_extended_list ( Constraint_list *CL, int s1, int r1, int s2, int r2);
+
+int residue_pair_extended_list4rna1 ( Constraint_list *CL, int s1, int r1, int s2, int r2);
+int residue_pair_extended_list4rna2 ( Constraint_list *CL, int s1, int r1, int s2, int r2);
+int residue_pair_extended_list4rna3 ( Constraint_list *CL, int s1, int r1, int s2, int r2);
+int residue_pair_extended_list4rna4 ( Constraint_list *CL, int s1, int r1, int s2, int r2);
+int residue_pair_extended_list4rna ( Constraint_list *CL, Constraint_list *R, int s1, int r1, int s2, int r2);
+
+int residue_pair_extended_list_raw ( Constraint_list *CL, int s1, int r1, int s2, int r2);
+int residue_pair_extended_list_pc ( Constraint_list *CL, int s1, int r1, int s2, int r2);
+int residue_pair_extended_list_4gp ( Constraint_list *CL, int s1, int r1, int s2, int r2);
+int residue_pair_extended_list ( Constraint_list *CL, int s1, int r1, int s2, int r2);
+
+
+
+
+int residue_pair_extended_list_g_coffee_quadruplet ( Constraint_list *CL, int s1, int r1, int s2, int r2);
+int residue_pair_extended_list_g_coffee ( Constraint_list *CL, int s1, int r1, int s2, int r2);
+int residue_pair_extended_list_quadruplet ( Constraint_list *CL, int s1, int r1, int s2, int r2);
+int residue_pair_extended_list_mixt ( Constraint_list *CL, int s1, int r1, int s2, int r2);
+int residue_pair_test_function ( Constraint_list *CL, int s1, int r1, int s2, int r2);
+int extend_residue_pair ( Constraint_list *CL, int s1, int r1, int s2, int r2);
+
+int residue_pair_relative_extended_list ( Constraint_list *CL, int s1, int r1, int s2, int r2 );
+/*********************************************************************************************/
+/* */
+/* FUNCTIONS FOR GETTING THE PW COST : CL->get_dp_cost */
+/* */
+/*********************************************************************************************/
+int get_dp_cost_blosum_matrix (Alignment *A, int**pos1, int ns1, int*list1, int col1, int**pos2, int ns2, int*list2, int col2, Constraint_list *CL);
+int get_dp_cost_pam_matrix (Alignment *A, int**pos1, int ns1, int*list1, int col1, int**pos2, int ns2, int*list2, int col2, Constraint_list *CL);
+int get_dp_cost_pw_matrix (Alignment *A, int**pos1, int ns1, int*list1, int col1, int**pos2, int ns2, int*list2, int col2, Constraint_list *CL);
+
+int get_cdna_best_frame_dp_cost ( Alignment *A, int**pos1, int ns1, int*list1, int col1, int**pos2, int ns2, int*list2, int col2, Constraint_list *CL);
+int get_dp_cost ( Alignment *A, int**pos1, int ns1, int*list1, int col1, int**pos2, int ns2, int*list2, int col2, Constraint_list *CL);
+int get_dp_cost_quadruplet ( Alignment *A, int**pos1, int ns1, int*list1, int col1, int**pos2, int ns2, int*list2, int col2, Constraint_list *CL);
+
+
+int very_fast_get_dp_cost ( Alignment *A, int**pos1, int ns1, int*list1, int col1, int**pos2, int ns2, int*list2, int col2, Constraint_list *CL);
+
+int cw_profile_get_dp_cost ( Alignment *A, int**pos1, int ns1, int*list1, int col1, int**pos2, int ns2, int*list2, int col2, Constraint_list *CL);
+int cw_profile_get_dp_cost_window ( Alignment *A, int**pos1, int ns1, int*list1, int col1, int**pos2, int ns2, int*list2, int col2, Constraint_list *CL);
+
+int consensus_get_dp_cost ( Alignment *A, int**pos1, int ns1, int*list1, int col1, int**pos2, int ns2, int*list2, int col2, Constraint_list *CL);
+
+int fast_get_dp_cost ( Alignment *A, int**pos1, int ns1, int*list1, int col1, int**pos2, int ns2, int*list2, int col2, Constraint_list *CL);
+int fast_get_dp_cost_2 ( Alignment *A, int**pos1, int ns1, int*list1, int col1, int**pos2, int ns2, int*list2, int col2, Constraint_list *CL);
+int fast_get_dp_cost_3 ( Alignment *A, int**pos1, int ns1, int*list1, int col1, int**pos2, int ns2, int*list2, int col2, Constraint_list *CL);
+
+int fast_get_dp_cost_quadruplet ( Alignment *A, int**pos1, int ns1, int*list1, int col1, int**pos2, int ns2, int*list2, int col2, Constraint_list *CL);
+
+int check_fast_profile_mode (Alignment *A, int ns1,int *list1,int ns2, int *list2, Constraint_list *CL);
+int check_fast_mode (Alignment *A, int ns1,int *list1,int ns2, int *list2, Constraint_list *CL);
+
+
+int slow_get_dp_cost ( Alignment *A, int**pos1, int ns1, int*list1, int col1, int**pos2, int ns2, int*list2, int col2, Constraint_list *CL);
+int slow_get_dp_cost_pc ( Alignment *A, int**pos1, int ns1, int*list1, int col1, int**pos2, int ns2, int*list2, int col2, Constraint_list *CL);
+int slow_get_dp_cost_test ( Alignment *A, int**pos1, int ns1, int*list1, int col1, int**pos2, int ns2, int*list2, int col2, Constraint_list *CL);
+
+int sw_get_dp_cost ( Alignment *A, int**pos1, int ns1, int*list1, int col1, int**pos2, int ns2, int*list2, int col2, Constraint_list *CL);
+int get_domain_dp_cost ( Alignment *A, int**pos1, int ns1, int*list1, int col1, int**pos2, int ns2, int*list2, int col2,Constraint_list *CL , int scale , int gop, int gep);
+
+/*********************************************************************************************/
+/* */
+/* FUNCTIONS FOR ANALYSING AL OR MATRIX */
+/* */
+/*********************************************************************************************/
+float ** initialise_aa_physico_chemical_property_table (int *n);
+int aln2n_res ( Alignment *A, int start, int end);
+float get_gop_scaling_factor ( int **matrix,float id, int l1, int l2);
+float get_avg_matrix_mm ( int **matrix, char *alphabet);
+float get_avg_matrix_match ( int **matrix, char *alphabet);
+float get_avg_matrix_diff ( int **matrix1,int **matrix2, char *alphabet);
+float measure_matrix_enthropy (int **matrix,char *alphabet);
+float measure_matrix_pos_avg (int **matrix,char *alphabet);
+float evaluate_random_match (char *matrix, int n, int len,char *alp);
+float compare_two_mat (char *mat1,char*mat2, int n, int len,char *alp);
+float compare_two_mat_array (int **matrix1,int **matrix2, int n, int len,char *alp);
+int ** rescale_two_mat (char *mat1,char*mat2, int n, int len,char *alp);
+int ** rescale_matrix ( int **mat, float lambda, char *alp);
+int **mat2inverted_mat (int **matrix, char *alp);
+void output_matrix_header ( char *name, int **matrix, char *alp);
+float evaluate_random_match2 (int **matrix, int n, int len,char *alp);
+float measure_lambda2(char *mat1,char*mat2, int n, int len,char *alp);
+float measure_lambda(char *mat1,char*mat2, int n, int len,char *alp);
+Constraint_list * choose_extension_mode ( char *extend_mode, Constraint_list *CL);
+int ** combine_two_matrices ( int **mat1, int **mat2);
+/*********************************************************************************************/
+/* */
+/* OFF THE SHELVES EVALUATION */
+/* */
+/*********************************************************************************************/
+float sum_pair ( Alignment*A,char *mat_name, int gap_op, int gap_ext);
+int lat_sum_pair (Alignment *A, char *mat);