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 67 68 69 70
|
/**
* Author: Mark Larkin
*
* Copyright (c) 2007 Des Higgins, Julie Thompson and Toby Gibson.
*/
#ifndef MYERSMILLERPROFILEALIGN_H
#define MYERSMILLERPROFILEALIGN_H
#include <vector>
#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<int>* group, int* aligned);
/* Attributes */
private:
/* Functions */
void addGGaps(Alignment* alnPtr, SeqArray* seqArray);
void addGGapsMask(vector<char>* mask,int len, vector<int>* path1, vector<int>* 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<int> displ;
vector<int> gS;
vector<int> HH;
vector<int> DD;
vector<int> RR;
vector<int> SS;
vector<int> alnPath1;
vector<int> alnPath2;
int printPtr;
int lastPrint;
int matrix[32][32];
vector<int> gaps;
bool switchProfiles;
const SeqArray* profile1;
const SeqArray* profile2;
int _gapPos1, _gapPos2;
int alignmentLength;
};
}
#endif
|