Mac binaries
[jabaws.git] / website / archive / binaries / mac / src / clustalw / src / multipleAlign / ProfileBase.h
diff --git a/website/archive/binaries/mac/src/clustalw/src/multipleAlign/ProfileBase.h b/website/archive/binaries/mac/src/clustalw/src/multipleAlign/ProfileBase.h
new file mode 100644 (file)
index 0000000..f022938
--- /dev/null
@@ -0,0 +1,78 @@
+/**
+ * Author: Mark Larkin
+ * 
+ * Copyright (c) 2007 Des Higgins, Julie Thompson and Toby Gibson.  
+ */
+/**
+ * The reason why we have 2 different types of profiles is because one of them 
+ * (ProfileWithSub) has the substitution matrix information already in it. This
+ * increases the performance when aligning 2 profile columns.
+ */
+#ifndef PROFILEBASE_H
+#define PROFILEBASE_H
+
+#include "../alignment/Alignment.h"
+
+namespace clustalw
+{
+
+class ProfileBase
+{
+    public:
+        /* Functions */
+        ProfileBase(int prfLen, int firstS, int lastS);
+        void calcGapCoeff(SeqArray* seqArray, vector<int>* gaps,  bool useStructPenalties,
+                          vector<char>* gapPenaltyMask, int gapCoef, int lenCoef);
+        const SeqArray* getProfilePtr(){return &profile;};
+        void resetProfile(){for(int i = 0; i < (int)profile.size();i++)
+                            {
+                                profile[i].clear();
+                            }
+                            profile.clear();
+                            };
+        /* Attributes */
+
+    protected:
+        /* Functions */
+        void calcVPenalties(SeqArray* aln, vector<int>* weight); 
+        void calcResidueSpecificPen(SeqArray* aln, vector<int>* weight); 
+        void calcHydrophilicPen(SeqArray* aln, vector<int>* weight); 
+        int localPenalty(int penalty, int n, vector<int>* resWeight, vector<int>* hydWeight,
+                         vector<int>* vWeight);  
+        float percentId(vector<int>* s1, vector<int>* s2);
+
+        /* Attributes */
+        vector<vector<int> > profile;
+
+        /* number of residues used for a window for the variable zone
+           penalties */
+        int vwindow;
+        /* vll is the lower limit for the variable zone penalties
+           (vll < pen < 1.0) */
+        int vll;
+
+        /* "Pascarella and Argos" residue specific gap modification
+           factors. See Table 1 in the ClustalW 1994 NAR paper
+           http://www.ncbi.nlm.nih.gov/pubmed/7984417
+        */
+        string pascarellaRes;
+        vector<int> pascarellaProb;
+
+        vector<vector<int> > vlut;
+        static const int numLetters = 26;
+        float reducedGap;
+        bool nVarPen;
+        bool nHydPen;
+        bool nPrefPen;
+        int gdist;
+        int prfLength;
+        int firstSeq, lastSeq;
+    private:
+        /* Functions */
+
+        /* Attributes */
+
+};
+
+}
+#endif