Loading isis/src/control/objs/ControlNet/ControlNet.cpp +45 −28 Original line number Diff line number Diff line Loading @@ -12,6 +12,7 @@ #include <QPair> #include <QScopedPointer> #include <QSet> #include <QStringList> #include <QTime> #include <QVector> Loading Loading @@ -411,41 +412,57 @@ namespace Isis { QString ControlNet::GraphToString() const { QString graphString; typedef boost::graph_traits<Network>::edge_iterator edge_iter; edge_iter ei, ei_end; QStringList images = GetCubeSerials(); images.sort(); for (tie(ei, ei_end) = edges(m_controlGraph); ei != ei_end; ++ei) { ImageVertex sourceImage = source(*ei, m_controlGraph); ImageVertex targetImage = target(*ei, m_controlGraph); if (sourceImage != targetImage) { graphString.append(m_controlGraph[sourceImage].serial); graphString.append( " [" ); QList<ControlPoint*> sourcePoints = m_controlGraph[sourceImage].measures.keys(); for (int i=0; i < sourcePoints.size(); i++) { if (i>0) { graphString.append(", "); QHash<QString, QStringList> imagePointIds; foreach(QString imageSerial, images) { QList<ControlPoint *> imagePoints = m_controlGraph[m_vertexMap[imageSerial]].measures.keys(); QStringList pointIds; foreach(ControlPoint *point, imagePoints) { pointIds.append(point->GetId()); } pointIds.sort(); imagePointIds.insert(imageSerial, pointIds); } graphString.append(sourcePoints[i]->GetId()); foreach(QString imageSerial, images) { QStringList adjacentImages = getAdjacentImages(imageSerial); adjacentImages.sort(); foreach(QString adjacentSerial, adjacentImages) { if (QString::compare(adjacentSerial, imageSerial) < 0) { continue; } // graphString.append(QString::number(m_controlGraph[sourceImage].measures.size())); graphString.append("] --------- "); graphString.append(m_controlGraph[targetImage].serial); graphString.append(" ["); QList<ControlPoint*> targetPoints = m_controlGraph[targetImage].measures.keys(); for (int i=0; i < targetPoints.size(); i++) { if (i>0) { graphString.append(", "); QStringList commonPoints; QList<QString>::const_iterator imageIt = imagePointIds[imageSerial].cbegin(); QList<QString>::const_iterator adjacentIt = imagePointIds[adjacentSerial].cbegin(); while (imageIt != imagePointIds[imageSerial].cend() && adjacentIt != imagePointIds[adjacentSerial].cend()) { int stringDiff = QString::compare(*imageIt, *adjacentIt); if (stringDiff < 0) { imageIt++; } else if(stringDiff == 0) { commonPoints.append(*imageIt); imageIt++; adjacentIt++; } else { adjacentIt++; } graphString.append(targetPoints[i]->GetId()); } // graphString.append(QString::number(m_controlGraph[targetImage].measures.size())); graphString.append("]");// edge strength: ["); // graphString.append(QString::number(m_controlGraph[*ei].strength)); graphString.append(imageSerial); graphString.append(" ----["); graphString.append(commonPoints.join(",")); graphString.append("]---- "); graphString.append(adjacentSerial); graphString.append("\n"); } } return graphString; } Loading isis/src/control/objs/ControlNet/ControlNet.truth +22 −21 Original line number Diff line number Diff line UnitTest for ControlNet .... ******* test cube connection graph ************ ALPHA [p0] --------- BRAVO [p0] ALPHA ----[p0]---- BRAVO ALPHA [p0] --------- BRAVO [p0] ALPHA ----[p0]---- BRAVO ALPHA [p0] --------- BRAVO [p0] ALPHA ----[p0]---- BRAVO testing measure addition to point already in network... ALPHA [p0, p1] --------- BRAVO [p0] ALPHA ----[p0]---- BRAVO ALPHA [p0, p1] --------- BRAVO [p0, p1] ALPHA ----[p0,p1]---- BRAVO ALPHA [p0, p1] --------- BRAVO [p0, p1] CHARLIE [p1] --------- ALPHA [p0, p1] CHARLIE [p1] --------- BRAVO [p0, p1] ALPHA ----[p0,p1]---- BRAVO ALPHA ----[p1]---- CHARLIE BRAVO ----[p1]---- CHARLIE testing setting point to ignored....................... ALPHA [p0, p1] --------- BRAVO [p0, p1] ALPHA ----[p0,p1]---- BRAVO ALPHA [p0, p1] --------- BRAVO [p0, p1] ALPHA [p0, p1] --------- CHARLIE [p1] CHARLIE [p1] --------- BRAVO [p0, p1] ALPHA ----[p0,p1]---- BRAVO ALPHA ----[p1]---- CHARLIE BRAVO ----[p1]---- CHARLIE testing measure deletion & addition.................... ALPHA [p0, p1] --------- BRAVO [p1] ALPHA [p0, p1] --------- CHARLIE [p1] CHARLIE [p1] --------- BRAVO [p1] ALPHA ----[p1]---- BRAVO ALPHA ----[p1]---- CHARLIE BRAVO ----[p1]---- CHARLIE ALPHA [p0, p1] --------- BRAVO [p1] ALPHA [p0, p1] --------- CHARLIE [p1] CHARLIE [p1] --------- BRAVO [p1] DELTA [p0] --------- ALPHA [p0, p1] ALPHA ----[p1]---- BRAVO ALPHA ----[p1]---- CHARLIE ALPHA ----[p0]---- DELTA BRAVO ----[p1]---- CHARLIE testing FindClosest.................... Closest Point ID: p1 Loading @@ -41,8 +41,9 @@ Adjacent Images: BRAVO CHARLIE DELTA testing point deletion................................. DELTA [p0] --------- ALPHA [p0] ALPHA ----[p0]---- DELTA ******* Done testing cube graph *************** Loading Loading @@ -340,7 +341,7 @@ Read/Write of binary files OK. BRAVO CHARLIE DELTA DELTA [p0] --------- ALPHA [p0] ALPHA ----[p0]---- DELTA Testing getEdgeCount: 1 Loading isis/src/control/objs/ControlNet/unitTest.cpp +1 −3 Original line number Diff line number Diff line Loading @@ -162,9 +162,6 @@ cout << " " << "Island Count = " << islands.size() << endl; int main() { qsrand(42); // Set the global hash seed to ensure consistent vertex and edge ordering qSetGlobalQHashSeed(2255); Preference::Preferences(true); cout << "UnitTest for ControlNet ...." << endl << endl; Loading Loading @@ -240,6 +237,7 @@ int main() { foreach(QString serial, adjacentSerials) { cout << " " << serial << endl; } cout << endl; // test point deletion cout << "testing point deletion.................................\n"; Loading Loading
isis/src/control/objs/ControlNet/ControlNet.cpp +45 −28 Original line number Diff line number Diff line Loading @@ -12,6 +12,7 @@ #include <QPair> #include <QScopedPointer> #include <QSet> #include <QStringList> #include <QTime> #include <QVector> Loading Loading @@ -411,41 +412,57 @@ namespace Isis { QString ControlNet::GraphToString() const { QString graphString; typedef boost::graph_traits<Network>::edge_iterator edge_iter; edge_iter ei, ei_end; QStringList images = GetCubeSerials(); images.sort(); for (tie(ei, ei_end) = edges(m_controlGraph); ei != ei_end; ++ei) { ImageVertex sourceImage = source(*ei, m_controlGraph); ImageVertex targetImage = target(*ei, m_controlGraph); if (sourceImage != targetImage) { graphString.append(m_controlGraph[sourceImage].serial); graphString.append( " [" ); QList<ControlPoint*> sourcePoints = m_controlGraph[sourceImage].measures.keys(); for (int i=0; i < sourcePoints.size(); i++) { if (i>0) { graphString.append(", "); QHash<QString, QStringList> imagePointIds; foreach(QString imageSerial, images) { QList<ControlPoint *> imagePoints = m_controlGraph[m_vertexMap[imageSerial]].measures.keys(); QStringList pointIds; foreach(ControlPoint *point, imagePoints) { pointIds.append(point->GetId()); } pointIds.sort(); imagePointIds.insert(imageSerial, pointIds); } graphString.append(sourcePoints[i]->GetId()); foreach(QString imageSerial, images) { QStringList adjacentImages = getAdjacentImages(imageSerial); adjacentImages.sort(); foreach(QString adjacentSerial, adjacentImages) { if (QString::compare(adjacentSerial, imageSerial) < 0) { continue; } // graphString.append(QString::number(m_controlGraph[sourceImage].measures.size())); graphString.append("] --------- "); graphString.append(m_controlGraph[targetImage].serial); graphString.append(" ["); QList<ControlPoint*> targetPoints = m_controlGraph[targetImage].measures.keys(); for (int i=0; i < targetPoints.size(); i++) { if (i>0) { graphString.append(", "); QStringList commonPoints; QList<QString>::const_iterator imageIt = imagePointIds[imageSerial].cbegin(); QList<QString>::const_iterator adjacentIt = imagePointIds[adjacentSerial].cbegin(); while (imageIt != imagePointIds[imageSerial].cend() && adjacentIt != imagePointIds[adjacentSerial].cend()) { int stringDiff = QString::compare(*imageIt, *adjacentIt); if (stringDiff < 0) { imageIt++; } else if(stringDiff == 0) { commonPoints.append(*imageIt); imageIt++; adjacentIt++; } else { adjacentIt++; } graphString.append(targetPoints[i]->GetId()); } // graphString.append(QString::number(m_controlGraph[targetImage].measures.size())); graphString.append("]");// edge strength: ["); // graphString.append(QString::number(m_controlGraph[*ei].strength)); graphString.append(imageSerial); graphString.append(" ----["); graphString.append(commonPoints.join(",")); graphString.append("]---- "); graphString.append(adjacentSerial); graphString.append("\n"); } } return graphString; } Loading
isis/src/control/objs/ControlNet/ControlNet.truth +22 −21 Original line number Diff line number Diff line UnitTest for ControlNet .... ******* test cube connection graph ************ ALPHA [p0] --------- BRAVO [p0] ALPHA ----[p0]---- BRAVO ALPHA [p0] --------- BRAVO [p0] ALPHA ----[p0]---- BRAVO ALPHA [p0] --------- BRAVO [p0] ALPHA ----[p0]---- BRAVO testing measure addition to point already in network... ALPHA [p0, p1] --------- BRAVO [p0] ALPHA ----[p0]---- BRAVO ALPHA [p0, p1] --------- BRAVO [p0, p1] ALPHA ----[p0,p1]---- BRAVO ALPHA [p0, p1] --------- BRAVO [p0, p1] CHARLIE [p1] --------- ALPHA [p0, p1] CHARLIE [p1] --------- BRAVO [p0, p1] ALPHA ----[p0,p1]---- BRAVO ALPHA ----[p1]---- CHARLIE BRAVO ----[p1]---- CHARLIE testing setting point to ignored....................... ALPHA [p0, p1] --------- BRAVO [p0, p1] ALPHA ----[p0,p1]---- BRAVO ALPHA [p0, p1] --------- BRAVO [p0, p1] ALPHA [p0, p1] --------- CHARLIE [p1] CHARLIE [p1] --------- BRAVO [p0, p1] ALPHA ----[p0,p1]---- BRAVO ALPHA ----[p1]---- CHARLIE BRAVO ----[p1]---- CHARLIE testing measure deletion & addition.................... ALPHA [p0, p1] --------- BRAVO [p1] ALPHA [p0, p1] --------- CHARLIE [p1] CHARLIE [p1] --------- BRAVO [p1] ALPHA ----[p1]---- BRAVO ALPHA ----[p1]---- CHARLIE BRAVO ----[p1]---- CHARLIE ALPHA [p0, p1] --------- BRAVO [p1] ALPHA [p0, p1] --------- CHARLIE [p1] CHARLIE [p1] --------- BRAVO [p1] DELTA [p0] --------- ALPHA [p0, p1] ALPHA ----[p1]---- BRAVO ALPHA ----[p1]---- CHARLIE ALPHA ----[p0]---- DELTA BRAVO ----[p1]---- CHARLIE testing FindClosest.................... Closest Point ID: p1 Loading @@ -41,8 +41,9 @@ Adjacent Images: BRAVO CHARLIE DELTA testing point deletion................................. DELTA [p0] --------- ALPHA [p0] ALPHA ----[p0]---- DELTA ******* Done testing cube graph *************** Loading Loading @@ -340,7 +341,7 @@ Read/Write of binary files OK. BRAVO CHARLIE DELTA DELTA [p0] --------- ALPHA [p0] ALPHA ----[p0]---- DELTA Testing getEdgeCount: 1 Loading
isis/src/control/objs/ControlNet/unitTest.cpp +1 −3 Original line number Diff line number Diff line Loading @@ -162,9 +162,6 @@ cout << " " << "Island Count = " << islands.size() << endl; int main() { qsrand(42); // Set the global hash seed to ensure consistent vertex and edge ordering qSetGlobalQHashSeed(2255); Preference::Preferences(true); cout << "UnitTest for ControlNet ...." << endl << endl; Loading Loading @@ -240,6 +237,7 @@ int main() { foreach(QString serial, adjacentSerials) { cout << " " << serial << endl; } cout << endl; // test point deletion cout << "testing point deletion.................................\n"; Loading