Wrapper for Clustal Omega.
[jabaws.git] / binaries / src / clustalo / src / hhalign / hhhalfalignment.h
diff --git a/binaries/src/clustalo/src/hhalign/hhhalfalignment.h b/binaries/src/clustalo/src/hhalign/hhhalfalignment.h
new file mode 100644 (file)
index 0000000..5284e54
--- /dev/null
@@ -0,0 +1,101 @@
+/* -*- mode: c; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */
+
+/*********************************************************************
+ * Clustal Omega - Multiple sequence alignment
+ *
+ * Copyright (C) 2010 University College Dublin
+ *
+ * Clustal-Omega 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.
+ *
+ * This file is part of Clustal-Omega.
+ *
+ ********************************************************************/
+
+/*
+ * RCS $Id: hhhalfalignment.h 143 2010-10-14 13:11:14Z andreas $
+ */
+
+/////////////////////////////////////////////////////////////////////////////////////
+// Class representing a2m/a3m-formatted alignment corresponding to one HMM
+/////////////////////////////////////////////////////////////////////////////////////
+
+
+class HalfAlignment
+{
+public:
+  HalfAlignment(int maxseqdis=MAXSEQDIS);
+  ~HalfAlignment();
+
+  // Initialize HalfAlignment; create index arrays s [],l[], m[]
+  void Set(char* name, char** seq_in, char** sname_in, int n_in, int L_in, int n1, int n2, int n3, int n4, int nc, int L_in2/*<--FS*/);
+
+  // Free memory in HalfAlignment arrays s[][], l[][], and m[][]
+  void Unset();
+
+  // Align query (HalfAlignment) to template (i.e. hit) match state structure
+  void AlignToTemplate(Hit& hit); 
+
+  // Write the a2m/a3m query alignment into alnfile 
+  void Print(char* outfile);
+
+  // Fill in insert states following match state i
+  void AddInserts(int i);
+
+  // Fill up alignment with gaps '.' to generate flush end (all h[k] equal)
+  void FillUpGaps();
+
+  // Fill in insert states following match state i and fill up gaps with '.' 
+  void AddInsertsAndFillUpGaps(int i);
+
+  // Add gap column '.' or character column
+  void AddChar(char c);
+
+  // Add match state column i as is
+  void AddColumn(int i);
+
+  // Add match state column i as insert state
+  void AddColumnAsInsert(int i);
+
+  // Build alignment in FASTA format
+  void BuildFASTA();
+
+  // Build alignment in A2M format
+  void BuildA2M();
+
+  // Build alignment in A3M format
+  void BuildA3M();
+
+  // Transform alignment sequences from A2M to FASTA ( lowercase to uppercase and '.' to '-')
+  void ToFASTA();
+
+  // Remove all characters c from template sequences
+  void RemoveChars(char c);
+
+private:
+  friend class FullAlignment;
+
+  int n;           //number of sequences in half-alignment
+  char** seq;      //sequences (in ASCII) in alignment
+  char** sname;    //names of sequences in alignment
+  int nss_dssp;    //index of sequence with dssp sec structure states
+  int nsa_dssp;    //index of sequence with dssp solvent accessiblity states
+  int nss_pred;    //index of sequence with predicted sec structure states
+  int nss_conf;    //index of sequence with prediction confidence values
+  int ncons;       //index of consensus sequence
+    
+  int pos;         //After FillUpGaps() all h[k] have value pos 
+  int L;           //number of match states in corresponding profile
+  int* h;          //h[k] = next position of sequence k to be written
+  char** s;        //s[k][h] = column h, sequence k of output alignment
+  int** l;         //counts non-gap residues: l[k][i] = index of last residue AT OR BEFORE match state i in seq k 
+  int** m;         //counts positions:        m[k][i] = position of match state i in string seq[k]
+/*   int h[MAXSEQ];   //h[k] = next position of sequence k to be written */
+/*   char* s[MAXSEQ]; //s[k][h] = column h, sequence k of output alignment */
+/*   int* l[MAXSEQ];  //counts non-gap residues: l[k][i] = index of last residue AT OR BEFORE match state i in seq k  */
+/*   int* m[MAXSEQ];  //counts positions:        m[k][i] = position of match state i in string seq[k] */
+};
+
+