4 * Copyright (c) 2007 Des Higgins, Julie Thompson and Toby Gibson.
7 * The reason why we have 2 different types of profiles is because one of them
8 * (ProfileWithSub) has the substitution matrix information already in it. This
9 * increases the performance when aligning 2 profile columns.
14 #include "../alignment/Alignment.h"
23 ProfileBase(int prfLen, int firstS, int lastS);
24 void calcGapCoeff(SeqArray* seqArray, vector<int>* gaps, bool useStructPenalties,
25 vector<char>* gapPenaltyMask, int gapCoef, int lenCoef);
26 const SeqArray* getProfilePtr(){return &profile;};
27 void resetProfile(){for(int i = 0; i < (int)profile.size();i++)
37 void calcVPenalties(SeqArray* aln, vector<int>* weight);
38 void calcResidueSpecificPen(SeqArray* aln, vector<int>* weight);
39 void calcHydrophilicPen(SeqArray* aln, vector<int>* weight);
40 int localPenalty(int penalty, int n, vector<int>* resWeight, vector<int>* hydWeight,
41 vector<int>* vWeight);
42 float percentId(vector<int>* s1, vector<int>* s2);
45 vector<vector<int> > profile;
47 /* number of residues used for a window for the variable zone
50 /* vll is the lower limit for the variable zone penalties
54 /* "Pascarella and Argos" residue specific gap modification
55 factors. See Table 1 in the ClustalW 1994 NAR paper
56 http://www.ncbi.nlm.nih.gov/pubmed/7984417
59 vector<int> pascarellaProb;
61 vector<vector<int> > vlut;
62 static const int numLetters = 26;
69 int firstSeq, lastSeq;