80 int num_nodes = nodes.size();
85 for (
int i = num_nodes - 1;
i >= 0;
i--) {
93 CHit *hit1 = nodes[
i].hit;
94 double self_score = nodes[
i].best_score;
95 for (
int j =
i + 1; j < num_nodes; j++) {
97 CHit *hit2 = nodes[j].hit;
100 nodes[j].best_score + self_score > nodes[
i].best_score) {
102 nodes[
i].best_score = nodes[j].best_score + self_score;
103 nodes[
i].path_next = &(nodes[j]);
110 if (nodes[
i].best_score > best_score) {
111 best_score = nodes[
i].best_score;
112 best_node = &(nodes[
i]);
152 for (
int i = 0;
i < num_queries - 1;
i++) {
154 for (
int j =
i + 1; j < num_queries; j++) {
162 while (best_path !=
NULL) {
186 printf(
"Saved Segments:\n");
189 printf(
"query %2d %3d - %3d query %2d %3d - %3d score %d\n",
int Size() const
Retrieve number of hits in list.
void MakeCanonical()
Sort the list in a canonical form: first swap the indices and ranges on all hits and subhits so that ...
void SetKeepHit(int index, bool keep)
Set whether a hit in the hitlist will be scheduled for deletion.
CHit * GetHit(int index)
Retrieve a hit from the hitlist.
void PurgeUnwantedHits()
Delete all hits scheduled to be deleted.
A generalized representation of a pairwise alignment.
int m_Score
Score of alignment.
int m_SeqIndex1
Numerical identifier for first sequence in alignment.
int m_SeqIndex2
Numerical identifier for second sequence in alignment.
TRange m_SeqRange1
The range of offsets on the first sequence.
TRange m_SeqRange2
The range of offsets on the second sequence.
bool StrictlyBelow(const TThisType &r)
Test whether 'this' represents a sequence range strictly less than a given sequence range.
bool GetVerbose(void) const
Get verbose mode.
SGraphNode * x_FindBestPath(vector< SGraphNode > &nodes)
Find a maximum weight path in a directed acyclic graph.
struct CMultiAligner::SGraphNode SGraphNode
vector< CSequence > m_QueryData
void x_FindConsistentHitSubset(void)
Find consistent subset of pair-wise hits that can be used as alignment constraints.
CConstRef< CMultiAlignerOptions > m_Options
void x_FindAlignmentSubsets()
Interface for CMultiAligner.
#define END_NCBI_SCOPE
End previously defined NCBI scope.
#define END_SCOPE(ns)
End the previously defined scope.
#define BEGIN_NCBI_SCOPE
Define ncbi namespace.
#define BEGIN_SCOPE(ns)
Define a new scope.
TTo GetTo(void) const
Get the To member data.
TFrom GetFrom(void) const
Get the From member data.
#define INT4_MIN
Smallest (most negative) number represented by signed int.
struct SGraphNode * path_next
the optimal path node belongs to