Commit 55c8863e authored by Jesse Mapel's avatar Jesse Mapel
Browse files

Modified ControlNet GraphToString to always output sorted.

parent f6e93bd3
Loading
Loading
Loading
Loading
+45 −28
Original line number Diff line number Diff line
@@ -12,6 +12,7 @@
#include <QPair>
#include <QScopedPointer>
#include <QSet>
#include <QStringList>
#include <QTime>
#include <QVector>

@@ -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;
   }

+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
@@ -41,8 +41,9 @@ Adjacent Images:
  BRAVO
  CHARLIE
  DELTA

testing point deletion.................................
DELTA [p0] --------- ALPHA [p0]
ALPHA ----[p0]---- DELTA

******* Done testing cube graph ***************

@@ -340,7 +341,7 @@ Read/Write of binary files OK.
    BRAVO
    CHARLIE
    DELTA
DELTA [p0] --------- ALPHA [p0]
ALPHA ----[p0]---- DELTA


Testing getEdgeCount: 1
+1 −3
Original line number Diff line number Diff line
@@ -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;

@@ -240,6 +237,7 @@ int main() {
  foreach(QString serial, adjacentSerials) {
    cout << "  " << serial << endl;
  }
  cout << endl;

  // test point deletion
  cout << "testing point deletion.................................\n";