00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039 #ifndef __MMDB_MATH_Align__
00040 #define __MMDB_MATH_Align__
00041
00042 #include "mmdb_io_stream.h"
00043
00044 namespace mmdb {
00045
00046 namespace math {
00047
00048
00049
00050 DefineClass(AlignParams);
00051 DefineStreamFunctions(AlignParams);
00052
00053 class AlignParams : public io::Stream {
00054
00055 public :
00056
00057 realtype gapWeight,spaceWeight;
00058 realtype equalScore,nequalScore;
00059 int method;
00060
00061 AlignParams();
00062 AlignParams ( io::RPStream Object );
00063
00064 void write ( io::RFile f );
00065 void read ( io::RFile f );
00066
00067 protected :
00068 void InitAlignParams();
00069
00070 };
00071
00072
00073
00074
00075 DefineClass(Alignment);
00076
00077 enum ALIGN_METHOD {
00078 ALIGN_GLOBAL = 0,
00079 ALIGN_LOCAL = 1,
00080 ALIGN_GLOBLOC = 2,
00081 ALIGN_FREEENDS = 3
00082 };
00083
00084 class Alignment : public io::Stream {
00085
00086 public :
00087
00088 Alignment ();
00089 Alignment ( io::RPStream Object );
00090 ~Alignment ();
00091
00092 void SetAffineModel ( realtype WGap, realtype WSpace );
00093 void SetScores ( realtype SEqual, realtype SNEqual );
00094
00095 void Align ( cpstr S, cpstr T,
00096 ALIGN_METHOD Method=ALIGN_GLOBAL );
00097
00098 inline pstr GetAlignedS() { return AlgnS; }
00099 inline pstr GetAlignedT() { return AlgnT; }
00100 inline realtype GetScore () { return VAchieved; }
00101 inline char GetSpace () { return Space; }
00102
00103 realtype GetSimilarity();
00104 realtype GetSeqId ();
00105
00106 virtual void OutputResults ( io::RFile f, cpstr S, cpstr T );
00107
00108 void read ( io::RFile f );
00109 void write ( io::RFile f );
00110
00111 protected :
00112
00113 char Space;
00114 int AlignKey, SLen,TLen;
00115 rmatrix VT,ET,FT;
00116 pstr AlgnS,AlgnT;
00117 realtype VAchieved;
00118 realtype SEq,SNEq, Wg,Ws;
00119
00120 virtual void InitAlignment();
00121 virtual void FreeMemory ();
00122 virtual realtype Score ( char A, char B );
00123
00124 void BuildGATable ( cpstr S, cpstr T,
00125 bool FreeSEnd, bool FreeTEnd );
00126 void BuildLATable ( cpstr S, cpstr T );
00127 void Backtrace ( cpstr S, cpstr T, int J, int I,
00128 bool StopAtZero );
00129 void AdjustEnds ( cpstr S, cpstr T, int J, int I );
00130 void PrintVT ( cpstr S, cpstr T );
00131
00132 };
00133
00134
00135
00136
00137
00138 DefineClass(Alignment1);
00139
00140 class Alignment1 : public io::Stream {
00141
00142 public :
00143
00144 Alignment1 ();
00145 Alignment1 ( io::RPStream Object );
00146 ~Alignment1();
00147
00148 void SetAffineModel ( realtype WGap, realtype WSpace );
00149 void SetScores ( realtype SEqual, realtype SNEqual );
00150
00151 void Align ( ivector S, int SLength,
00152 ivector T, int TLength,
00153 ALIGN_METHOD Method=ALIGN_GLOBAL );
00154
00155 inline ivector GetAlignedS () { return AlgnS; }
00156 inline ivector GetAlignedT () { return AlgnT; }
00157 inline int GetAlignLength() { return AlgnLen; }
00158 inline realtype GetScore () { return VAchieved; }
00159
00160 realtype GetSimilarity();
00161
00162 virtual void OutputResults ( io::RFile f, ivector S, int lenS,
00163 ivector T, int lenT );
00164
00165 void read ( io::RFile f );
00166 void write ( io::RFile f );
00167
00168 protected :
00169
00170 int Space;
00171 int AlignKey, SLen,TLen, AlgnLen;
00172 rmatrix VT,ET,FT;
00173 ivector AlgnS,AlgnT;
00174 realtype VAchieved;
00175 realtype SEq,SNEq, Wg,Ws;
00176
00177 virtual void InitAlignment1();
00178 virtual void FreeMemory ();
00179 virtual realtype Score ( int A, int B );
00180
00181 void BuildGATable ( ivector S, ivector T,
00182 bool FreeSEnds, bool FreeTEnds );
00183 void BuildLATable ( ivector S, ivector T );
00184 void Backtrace ( ivector S, ivector T, int J, int I,
00185 bool StopAtZero );
00186 void AdjustEnds ( ivector S, ivector T, int J, int I );
00187 void PrintVT ( ivector S, ivector T );
00188
00189 };
00190
00191 }
00192
00193 }
00194
00195 #endif