8 const float BAD_SCORE = -9e9f;
\r
12 unsigned TargetIndex;
\r
16 float RawScore; // SOMETIMES USED FOR BIT SCORE!!!
\r
17 // unsigned TargetLength;
\r
21 Log("lo %u, hi %u, frame %d, score %.1f\n",
\r
22 TargetLo, TargetHi, QueryFrame, RawScore);
\r
28 unsigned LastHSPIndex;
\r
37 HSPData **m_HSPs; // memory owned elsewhere
\r
38 unsigned m_HSPCount;
\r
39 unsigned m_MaxHSPCount;
\r
43 unsigned *m_PrevHSPIndexes; // Predecessor in chain
\r
44 float *m_HSPIndexToChainScore;
\r
46 list<unsigned> m_Chains; // Live HSP indexes
\r
52 void Clear(bool ctor = false);
\r
53 float Chain(HSPData **HSPs, unsigned HSPCount, HSPData **OptChain,
\r
54 unsigned &OptChainLength);
\r
55 bool ResolveOverlaps(const SeqData &SA, const SeqData &SB, double MinScore,
\r
56 const float * const *SubstMx, HSPData **InHSPs, unsigned InHSPCount,
\r
57 HSPData **OutHSPs, unsigned &OutHSPCount);
\r
58 void ResolveOverlap(HSPData &HSP1, HSPData &HSP2);
\r
60 float ChainBrute(HSPData **HSPs, unsigned HSPCount, HSPData **OptChain,
\r
61 unsigned &OptChainLength);
\r
63 void LogHSPs(HSPData **HSPs, unsigned HSPCount) const;
\r
64 void LogBPs() const;
\r
66 static bool IsValidChain(HSPData **HSPs, unsigned HSPCount);
\r
67 static void AssertValidChain(HSPData **HSPs, unsigned HSPCount);
\r
68 static void LogChain(HSPData **HSPs, unsigned HSPCount);
\r
69 static void LogChain2(HSPData **HSPs, unsigned HSPCount);
\r
70 static float GetChainScore(HSPData **HSPs, unsigned HSPCount);
\r
73 void AllocHSPCount(unsigned MaxHSPCount);
\r
76 unsigned FindBestChainLT(unsigned Ahi, unsigned Bhi);
\r