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
|
#if UCHIMES
#include "dp.h"
#include "seq.h"
static AlnParams g_AP;
static bool g_APInitDone = false;
bool GlobalAlign(const SeqData &Query, const SeqData &Target, PathData &PD)
{
if (!g_APInitDone)
{
g_AP.InitFromCmdLine(true);
g_APInitDone = true;
}
ViterbiFast(Query.Seq, Query.L, Target.Seq, Target.L, g_AP, PD);
return true;
}
bool GlobalAlign(const SeqData &Query, const SeqData &Target, string &Path)
{
PathData PD;
GlobalAlign(Query, Target, PD);
Path = string(PD.Start);
return true;
}
bool GlobalAlign(const SeqData &Query, const SeqData &Target, const AlnParams &/*AP*/,
const AlnHeuristics &AH, HSPFinder &/*HF*/, float /*MinFractId*/, float &/*HSPId*/, PathData &PD)
{
PD.Clear();
string Path;
bool Found = GlobalAlign(Query, Target, Path);
if (!Found)
return false;
unsigned n = SIZE(Path);
PD.Alloc(n+1);
memcpy(PD.Front, Path.c_str(), n);
PD.Start = PD.Front;
PD.Start[n] = 0;
return true;
}
#endif // UCHIMES
|