1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
  
     | 
    
      /**
 * Author: Mark Larkin
 * 
 * Copyright (c) 2007 Des Higgins, Julie Thompson and Toby Gibson.  
 */
#ifndef FULLPAIRWISEALIGN_H
#define FULLPAIRWISEALIGN_H
#include "PairwiseAlignBase.h"
namespace clustalw
{
class FullPairwiseAlign : public PairwiseAlignBase
{
    public:
        /* Functions */
        FullPairwiseAlign();
	virtual ~FullPairwiseAlign(){};
        virtual void pairwiseAlign(Alignment *alignPtr, DistMatrix *distMat, int iStart, 
                                   int iEnd, int jStart, int jEnd); 
        /* Attributes */
    private:
        /* Functions */
        void add(int v);
        int calcScore(int iat, int jat, int v1, int v2); 
        float tracePath(int tsb1, int tsb2);
        void forwardPass(const vector<int>* seq1, const vector<int>* seq2, int n, int m);
        void reversePass(const vector<int>* ia, const vector<int>* ib);
        int diff(int A, int B, int M, int N, int tb, int te);
        void del(int k);
        int gap(int k);
        int tbgap(int k, int tb);
        int tegap(int k, int te);
        /* Attributes */
        // I have constant pointers to the data. This allows for the fastest access.
        const vector<int>* _ptrToSeq1;
        const vector<int>* _ptrToSeq2;
        int _maxAlnLength;
        int intScale;
        float mmScore;
        int printPtr;
        int lastPrint;
        vector<int> displ;
        vector<int> HH;
        vector<int> DD;
        vector<int> RR;
        vector<int> SS;
        int _gapOpen; // scaled to be an integer, this is not a mistake
        int _gapExtend; // scaled to be an integer, not a mistake
        int seq1;
        int seq2;
        int matrix[NUMRES][NUMRES];
        int maxScore;
        int sb1;
        int sb2;
        int se1;
        int se2;
};
}
#endif
 
     |