/** * Author: Mark Larkin * * Copyright (c) 2007 Des Higgins, Julie Thompson and Toby Gibson. */ #ifndef MYERSMILLERPROFILEALIGN_H #define MYERSMILLERPROFILEALIGN_H #include #include "ProfileAlignAlgorithm.h" #include "ProfileStandard.h" #include "ProfileWithSub.h" namespace clustalw { class MyersMillerProfileAlign : public ProfileAlignAlgorithm { public: virtual ~MyersMillerProfileAlign(){}; /* Functions */ MyersMillerProfileAlign(); virtual int profileAlign(Alignment* alnPtr, DistMatrix* distMat, vector* group, int* aligned); /* Attributes */ private: /* Functions */ void addGGaps(Alignment* alnPtr, SeqArray* seqArray); void addGGapsMask(vector* mask,int len, vector* path1, vector* path2); int prfScore(int n, int m); int progTracepath(); void progDel(int k); void progAdd(int k); void progAlign(); int progDiff(int A, int B, int M, int N, int go1, int go2); int openPenalty1(int i, int j); int extPenalty1(int i, int j); int gapPenalty1(int i, int j, int k); int openPenalty2(int i, int j); int extPenalty2(int i, int j); int gapPenalty2(int i, int j, int k); /* Attributes */ ProfileWithSub* profileWithSub; ProfileStandard* profileStandard; int gapcoef1; int gapcoef2; int lencoef1; int lencoef2; vector displ; vector gS; vector HH; vector DD; vector RR; vector SS; vector alnPath1; vector alnPath2; int printPtr; int lastPrint; int matrix[32][32]; vector gaps; bool switchProfiles; const SeqArray* profile1; const SeqArray* profile2; int _gapPos1, _gapPos2; int alignmentLength; }; } #endif