JWS-112 Bumping version of T-Coffee to version 11.00.8cbe486.
[jabaws.git] / binaries / src / tcoffee / t_coffee_source / dp_lib / fsa_dp.h
diff --git a/binaries/src/tcoffee/t_coffee_source/dp_lib/fsa_dp.h b/binaries/src/tcoffee/t_coffee_source/dp_lib/fsa_dp.h
new file mode 100644 (file)
index 0000000..98f7a99
--- /dev/null
@@ -0,0 +1,189 @@
+/******************************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*******************************/
+#ifndef FSA_DP_H
+#define FSA_DP_H
+
+/*By convention, 0: START, 1: END*/
+
+struct Hmm
+{
+  
+  double freeT;           /*Free transition*/
+  double forbiden;        /*Forbiden transition*/
+  int start;              /*start, by convention: 0*/
+  int end;                /*end, by convention: 1*/
+
+  int nS;                 /*Number of states*/
+  int order;
+  struct HmmState  **S;   /*State List*/
+
+  /*Bounded HMM*/
+  double **T;             /*Transition matrix*/
+  int **fromM;            /*For any sate s, fromM[0]->number of states leading to s*/
+  int **toM;              /*For any sate s, toM[0]->number of s can go to*/
+                          /*End and Start are NOT included in toM and FromM*/
+  
+  
+};
+typedef struct Hmm Hmm;
+
+struct HmmAln
+{
+  Hmm *H;
+  int *state_list;
+};
+typedef struct HmmAln HmmAln;
+
+typedef double (*Generic_em_func)(struct Hmm*, struct HmmState*, int);
+
+struct HmmState
+{
+char name[100];
+int state;
+int DJ;
+int DI;
+
+  /*Pair HMM*/
+double em;
+Col_cost_func em_func;
+
+  /*Linear HMM*/
+double *em2;
+Generic_em_func em_func2;
+int nT;
+struct StateTrans **T;
+};
+typedef struct HmmState HmmState;
+
+struct StateTrans
+{
+  char name[101];
+  double tr;
+};
+typedef struct StateTrans StateTrans;
+
+struct MatState
+{
+  int i;
+  int j;
+  int st;
+  int pst;
+  double sc;
+  struct MatState *n;
+  struct MatState *p;
+  struct MatState *m; /*memory*/
+  struct MatState *s; /*memory of the start point*/
+  /*Heap Mamagement: Never copy*/
+  struct MatState *Hn;/*Heap Next*/ 
+  struct MatState *Hp;/*Heap Previous*/ 
+  
+  struct MatState *Mn;/*Marked Heap section*/ 
+  struct MatState *Mp;/*Marked Heap Section*/ 
+  int free;
+};
+typedef struct MatState MatState;
+
+
+/*********************************************************************************/
+/*                                                                               */
+/*                                                                               */
+/*                     simple HMM: Viterbi                                       */
+/*                                                                               */
+/*                                                                               */
+/*********************************************************************************/
+int seq_viterbi_pair_wise (Alignment *A,int*ns, int **ls,Constraint_list *CL);
+
+/*********************************************************************************/
+/*                                                                               */
+/*                                                                               */
+/*                     HMM: Viterbi                                              */
+/*                                                                               */
+/*                                                                               */
+/*********************************************************************************/
+
+int viterbi_pair_wise_OLD (Alignment *A,int*ns, int **ls,Constraint_list *CL);
+Alignment * viterbipath2aln (Alignment *A, int *ns,int **ls,int *tb, Hmm *H);
+double*** viterbi_hmm (Alignment *A,int *ns, int **ls, Hmm *H, Constraint_list *CL);
+int * viterbi2path (int l1,int l2, Hmm *H, double ***M);
+/*********************************************************************************/
+/*                                                                               */
+/*                                                                               */
+/*                      HMM modeling                                             */
+/*                                                                               */
+/*                                                                               */
+/*********************************************************************************/
+int viterbiL_pair_wise (Alignment *A,int*ns, int **ls,Constraint_list *CL);
+MatState* RviterbiL_hmm (Alignment *A,int *ns, int **ls, Hmm *H, Constraint_list *CL,MatState *S, MatState *E);
+MatState* viterbiL_hmm (Alignment *A,int *ns, int **ls, Hmm *H, Constraint_list *CL, MatState *S, MatState *E);
+
+int viterbiD_pair_wise (Alignment *A,int*ns, int **ls,Constraint_list *CL);
+double lu_RviterbiD_hmm (Alignment *A,int *ns, int **ls, Hmm *H, Constraint_list *CL,MatState *S, MatState *E, int **seg_list);
+MatState* RviterbiD_hmm (Alignment *A,int *ns, int **ls, Hmm *H, Constraint_list *CL,MatState *S, MatState *E, int **seg_list);
+MatState* viterbiD_hmm (Alignment *A,int *ns, int **ls, Hmm *H, Constraint_list *CL, MatState *S, MatState *E, int **seg_list);
+int **seglist2table ( int **seglist,int l1, int l2);
+int *seglist2line ( int **seglist, int line, int start, int end);
+int * traceback (Alignment *A,int *ns, int **ls, Hmm *H, Constraint_list *CL,MatState *S, MatState *E, int **seg_list);
+
+int viterbiDGL_pair_wise (Alignment *A,int*ns, int **ls,Constraint_list *CL);
+double lu_RviterbiDGL_hmm (Alignment *A,int *ns, int **ls, Hmm *H, Constraint_list *CL,MatState *S, MatState *E, int **seg_list);
+MatState* RviterbiDGL_hmm (Alignment *A,int *ns, int **ls, Hmm *H, Constraint_list *CL,MatState *S, MatState *E, int **seg_list);
+MatState* viterbiDGL_hmm (Alignment *A,int *ns, int **ls, Hmm *H, Constraint_list *CL,MatState *S, MatState *E, int **seg_list);
+
+
+/*********************************************************************************/
+/*                                                                               */
+/*                                                                               */
+/*                      HMM modeling                                             */
+/*                                                                               */
+/*                                                                               */
+/*********************************************************************************/
+int MatStateAreIdentical (MatState*I, MatState*O);
+int MaxDeltaMatState (MatState*I, MatState*O);
+int MinDeltaMatState (MatState*I, MatState*O);
+
+MatState * ManageMatState(int Mode, MatState *C);
+MatState* CopyMatState ( MatState*I, MatState*O);
+
+Hmm* read_hmm(char *file);
+Hmm* declare_hmm(int n);
+Hmm* free_Hmm(Hmm*H);
+void DisplayHmm ( Hmm *H);
+
+/*********************************************************************************/
+/*                                                                               */
+/*                                                                               */
+/*                      HMM Models                                               */
+/*                                                                               */
+/*                                                                               */
+/*********************************************************************************/
+Hmm* define_two_mat_model(Constraint_list *CL);
+Hmm* define_probcons_model(Constraint_list *CL);
+Hmm* define_simple_model(Constraint_list *CL);
+
+Hmm * bound_hmm ( Hmm *H);
+
+#endif // FSA_DP_H