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
|