-
-
-#define ENLARGEMENT_PER_STEP 50
-#define PROFILE_ENLARGEMENT 550
-
-// static char pos2aa[] = {'A','C','D','E','F','G','H','I','K','L','M','N','P','Q','R','S','T','V','W','Y'};
-
-
-/**
- * \brief Struct to save a diagonal
- *
- */
-typedef struct
-{
- ///Start of diagonal in seq1.
- int x;
- ///Start of diagonal in seq2.
- int y;
- ///Length of the diagonal.
- int length;
- ///expansion at the beginning;
- int front_exp;
- ///expansion at the end;
- int end_exp;
-}
-Diagonal;
-
-
-
-
-/**
- * \brief Struct to save all informations of a profile.
- *
- */
-typedef struct
-{
- /// Number of sequences in this profile
- int num_sequences;
- /// number of the profile
- int prf_number;
- ///0 = combination of two profiles, 1 = profile of a single sequence -> name1 = seq_name
- int is_leaf;
- ///length of the profile
- int length;
- ///weight of the sequence
- int weight;
- ///saves the amount of allocated memory
- int allocated_memory;
- ///the profile itself [alphabet_size][profile_length]
- int **prf;
- ///number_of_sequences
- int number_of_sequences;
-}
-Fastal_profile;
-
-/**
- * \brief Struct to save all parameters for fastal.
- *
- */
-typedef struct
-{
- /// size of alphabet_size
- int alphabet_size;
- /// converting char2position (for profile)
- int char2pos[256];
- /// converting pos2char (for profile)
- char pos2char[256];
- /// gap opening costs
- double gop;
- /// gap extension costs
- double gep;
- /// nomatch???
- int nomatch;
- ///method to align profile
- char method[20];
- ///scoring Matrix;
- int **M;
- ///saves the diag method -> move to sparse!
- char diag_method[30];
-}
-Fastal_param;
-
-/**
- * \brief Struct to save the parameters and memory for the sparse dynamic programming algorithm.
- */
-typedef struct
-{
- /// saves the diagonals
- int *diagonals;
- /// saves ....
- int *dig_length;
- /// list of points to be considered during the alignment process
- int **list;
- /// number of points in \a list
- int *list_length;
- char *file_name1;
- char *file_name2;
- // static char *file_name1 = vtmpnam(NULL);
-// static char *file_name2 = vtmpnam(NULL);
-}
-Sparse_dynamic_param;
-
-
-typedef struct
-{
- int window_length;
- int step_legnth;
- int threshold;
- int oligo_length;
- int distance;
-}
-Udisc_param;
-
-
-/**
- * \brief Struct to save the parameters and memory for the needleman-wunsch algorithm.
- */
-typedef struct
-{
- /// dynamic programming matrix
- double ** dyn_matrix;
- /// length of dimension 1
- int *length1;
- /// length of dimension 2
- int *length2;
- /// summed up version of profile
- int **sumup_prf;
- /// number of entries in \a sumup_prf
- int *sumup_length;
-}
-Nw_param;
-
-
-
-/**
- * \brief Struct to save the parameters and memory for the Gotoh algorithm.
- */
-typedef struct
-{
- /// dynamic programming matrix
- double ** m_matrix;
- /// dynamic programming matrix
- double ** i_matrix;
- /// dynamic programming matrix
- double ** d_matrix;
- /// length of dimension 1
- int *length1;
- /// length of dimension 2
- int *length2;
- /// summed up version of profile
- int **sumup_prf;
- /// number of entries in \a sumup_prf
- int *sumup_length;
- /// log saver
- double **log_saver;
-}
-Gotoh_param;
-
-
-
-
-typedef struct
-{
- int diagonal;
- int count;
- int start;
- int end;
-}
-Swift_diagonal;
-
-
-typedef struct
-{
- int diagonal;
- int count;
-}
-Diagonal_counter;
-
-//tree
-void generate_random_tree(int number);
-
-
-Fastal_profile* make_profile_of_sequence(char *seq_name, char *sequence, int number);
-
-
-
-//Definite use
-
-//********************* input/output **********************************
-void file2profile(FILE* profile_f, Fastal_profile *profile, int prf_number, Fastal_param *param_set);
-void file_pos2profile(FILE *seq_file, long off_set, Fastal_profile *profile, int prf_number, Fastal_param *param_set);
-void profile2file(Fastal_profile *profile, FILE* prf_f, Fastal_param *param_set);
-
-//index
-int make_index_of_file(char *file_name, long **result);
-
-
-//********************* pairwise alignment methods ************************
-
- //Needleman-Wunsch
- int prf_nw(Fastal_profile *profile1, Fastal_profile *profile2, double **prog_matrix, FILE *edit_file_name, int **sumup_prf, int *sumup_length, Fastal_param *param_set);
- int nw_matrix2edit_file(double **prog_matrix, Fastal_profile *profile1, Fastal_profile *profile2, FILE *edit_f, int **prf_field, int *field_length, Fastal_param *param_set);
- int** sumup_profile(Fastal_profile *profile, int **sumup_prf, Fastal_param *param_set);
- void write2file(int **sumup_prf, int length, FILE *file, int number, int num_sequences, Fastal_param *param_set);
-
- //Gotoh
- void free_gotoh(Gotoh_param* method_arguments_p, int alphabet_size);
- void fill_arguments_gotoh(Gotoh_param* method_arguments_p, int alphabet_size);
- int prf_gotoh(Fastal_profile *profile1, Fastal_profile *profile2, FILE *edit_file_name, Gotoh_param *arguments, Fastal_param *param_set);
-
- //Sparse dynamic programming
- void free_sparse(Sparse_dynamic_param* method_arguments_p);
- void fill_arguments_sparse(Sparse_dynamic_param* method_arguments_p);
- int **diagonals2int(int *diagonals, int num_diagonals, char *seq1, char *seq2, int *num_points, Fastal_param *param_set);
- int seq_pair2blast_diagonal(char *seq_file_name1, char *seq_file_name2, int **diagonals, int *dig_length, int l1, int l2, int is_dna);
- int sparse_dyn(Fastal_profile **profiles, Fastal_param *param_set, void *method_arguments_p, int is_dna, FILE *edit_file, FILE *prof_file, int number);
- char *profile2consensus(Fastal_profile *profile, Fastal_param *param_set);
- int ** diagonals2int_gap_test(int *diagonals, int num_diagonals, char *seq1, char *seq2, Fastal_profile *profile1, Fastal_profile *profile2, int *num_points, Fastal_param *param_set);
- int ** diagonals2int_euclidf(int *diagonals, int num_diagonals, char *seq1, char *seq2, Fastal_profile *profile1, Fastal_profile *profile2, int *num_points, Fastal_param *param_set);
- int ** diagonals2int_dot(int *diagonals, int num_diagonals, char *seq1, char *seq2, Fastal_profile *profile1, Fastal_profile *profile2, int *num_points, Fastal_param *param_set);
- int seq_pair2blastz_diagonal(char *seq_file_name1, char *seq_file_name2, int **diagonals, int *dig_length, int l1, int l2, int is_dna);
- int list2linked_pair_wise_fastal(Fastal_profile *prf1, Fastal_profile *prf2, Fastal_param *param_set, int **list, int n, FILE *edit_f, FILE *prof_f, int node_number);
-
-//edit_files 2 alignment
-void edit2alignment(FILE *sequence_file, long *seq_positions, FILE *edit_file, long *edit_positions, int node_number, int number_of_sequences, char *aligned_sequence, int alignment_length, FILE *edit_seq_file, int offset, FILE* alignment_file);
-void edit_seq2aligned_seq(char *aligned_sequence, FILE *sequence_file, long sequence_position, FILE *alignment_file);
-
-
-//main
-int fastal(int argc, char **argv);
-void alignment2files(Fastal_profile **profiles, Fastal_param *param_set,int **alignment, int alignment_length, FILE *edit_f, FILE *prof_f, int node_number);
-
-//toolbox
-double calculate_sum_of_pairs_score_affine(char *alignment_file_name, int **score_matrix, double gop, double gep);
-double calculate_sum_of_pairs_score_affine_test(char *alignment_file_name, int **score_matrix, double gop, double gep);
-void initiate_profile_files(FILE **profile_files);
-void initiate_profiles(Fastal_profile **profiles, Fastal_param *param_set);
-void free_fastal_profile(Fastal_profile *profile, int alphabet_size);
-double **resize_dyn_matrix(double **dyn_matrix, int old_length1, int old_length2, int length1, int length2);
-void free_dyn_matrix(int length1, double **dyn_matrix);
-void fill_parameters(int is_dna, Fastal_param *param_set, char *method, char *diag_method, char *mat);
-
-
-int seq_pair2diagonal_own(char *seq1, char *seq2, int **diagonals, int *dig_length, int l1, int l2, int is_dna, int word_length);
-
-
-
-
-
-
-
-typedef struct
-{
- ///field saving the positions [x1,y1,l1,x2,y2,l2,...]
- int *segments;
- /// points to the current used segment
- int *current_pos;
- /// saves the previous diagonal position.
- int prev_position;
- /// diagonal number
-// int diagonal_num;
-}
-Segment;
-
-
-Segment* extend_diagonals(Diagonal *diagonals, int *num_diagonals, int l1, int l2);
-int seq_pair2blast_diagonal2(char *seq_file_name1, char *seq_file_name2, Diagonal **diagonals, int *dig_length, int l1, int l2, int is_dna);
-
-int ** segments2int(Segment *diagonals, int num_diagonals, char *seq1, char *seq2, Fastal_profile *profile1, Fastal_profile *profile2, int *num_points, Fastal_param *param_set);
-// #include "string.h"
-
-struct Fastal_arguments
-{
-// char *args[2];
- //IO
-
-
- char *sequence_file;
- char *tree_file;
- char *output_file;
- int tree_out;
-
- char *method;
- int is_dna;
- double gop;
- double gep;
-
-
-
- char *diag_method;
-// Tree Computation
-// int retree;
- int gap_iterate;
- int tree_only;
- char *tree_method;
- int tree_param1;
- int tree_param2;
-
-
- //Scoring
- char *mat;
- int agreement_score;
- int evaluate;
- int score;
- int num_ref_aln;
- int num_seq_in_ref;
- char *aln_ref;
- char *aln2test;
-};
-
-
-
-
-void tree_parse(struct Fastal_arguments *arguments, char* param);
-
-
-
-void arg_parse (int argc, char **argv, struct Fastal_arguments *arguments);
-
-
-
-//sum of pairs score
-double calculate_sum_of_pairs_score_affine(char *alignment_file_name, int **score_matrix, double gop, double gep);
-
-
-//compare with reference alignment
-void make_ref_alignment(char *seq_file_name, char *tree_file_name, char *ref_aln_name, int num_seq_in_ref);
-double agreement_score(char *ref_file_name, char *aln_file_name);
-
-
-void seq2profile2(char *seq, Fastal_profile *prf, int *char2pos);
-void split_set(FILE *aln_file_name, Fastal_profile *gap_prf, Fastal_profile *no_gap_prf, char *seq, int index, int *char2pos, char* split_file_name);
-void iterate(Fastal_param *param, void *method_arguments_p, char *aln_file_name, char *out_file_name, int iteration_number);
-
-void edit2seq_pattern(FILE *edit_file, char *seq1, char *seq2);
-int *del_gap_from_profile(Fastal_profile *prf, int alphabet_size, int *gap_list, int *gap_list_length, int *num_gaps);
-
-void write_iterated_aln(char* old_aln_file_name, char* new_aln_file_name, char *gap_file_name, char *seq1, int *gap_list1, int num_gap1, char *seq2, int *gap_list2, int num_gap2);
/******************************COPYRIGHT NOTICE*******************************/
-/*© Centro de Regulacio Genomica */
-/*and */
-/*Cedric Notredame */
-/*Fri Feb 18 08:27:45 CET 2011 - Revision 596. */
-/*All rights reserved.*/
-/*This file is part of T-COFFEE.*/
-/**/
-/* T-COFFEE is free software; you can redistribute it and/or modify*/
-/* it under the terms of the GNU General Public License as published by*/
-/* the Free Software Foundation; either version 2 of the License, or*/
-/* (at your option) any later version.*/
-/**/
-/* T-COFFEE is distributed in the hope that it will be useful,*/
-/* but WITHOUT ANY WARRANTY; without even the implied warranty of*/
-/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the*/
-/* GNU General Public License for more details.*/
-/**/
-/* You should have received a copy of the GNU General Public License*/
-/* along with Foobar; if not, write to the Free Software*/
-/* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA*/
-/*............................................... |*/
-/* If you need some more information*/
-/* cedric.notredame@europe.com*/
-/*............................................... |*/
-/**/
-/**/
-/* */
+/* (c) Centro de Regulacio Genomica */
+/* and */
+/* Cedric Notredame */
+/* 12 Aug 2014 - 22:07. */
+/*All rights reserved. */
+/*This file is part of T-COFFEE. */
+/* */
+/* T-COFFEE is free software; you can redistribute it and/or modify */
+/* it under the terms of the GNU General Public License as published by */
+/* the Free Software Foundation; either version 2 of the License, or */
+/* (at your option) any later version. */
+/* */
+/* T-COFFEE is distributed in the hope that it will be useful, */
+/* but WITHOUT ANY WARRANTY; without even the implied warranty of */
+/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the */
+/* GNU General Public License for more details. */
+/* */
+/* You should have received a copy of the GNU General Public License */
+/* along with Foobar; if not, write to the Free Software */
+/* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
+/*............................................... */
+/* If you need some more information */
+/* cedric.notredame@europe.com */
+/*............................................... */
/******************************COPYRIGHT NOTICE*******************************/
+#ifndef FASTAL_LIB_HEADER_H
+#define FASTAL_LIB_HEADER_H
+
+#include "fastal/fastal.h"
+#include "fastal/diagonal.h"
+#include "fastal/fastal_opt_parsing.h"
+#include "fastal/scoring.h"
+#include "fastal/iteration.h"
+#include "fastal/parttree.h"
+#include "fastal/tree.h"
+
+#endif // FASTAL_LIB_HEADER_H