Examples of DNVGraph


Examples of net.wigis.graph.dnv.DNVGraph

    System.out.println( "-----------Parser Test------------" );
    System.out.println( "start..." );
    // String bztestdata = "C:\\Users\\jod\\Desktop\\ben-facebook-data\\" +
    // FILENAME + ".txt";
    String bstestdata = "C:\\Users\\jod\\Desktop\\coverage-graphiris.data.tup";
    DNVGraph g = SimpleEdgeTuplesToDNVGraph.read( bstestdata, " " );
    // note- just for testing. writing is usually done elsewhere
    g.writeGraph( "C:\\graphs\\BSMYTH-" + FILENAME + ".dnv" );
    System.out.println( "...done.   check DNV file." );
  }
View Full Code Here

Examples of net.wigis.graph.dnv.DNVGraph

    // --------------------------
    // generate a dnvgraph object
    // --------------------------

    DNVGraph dnvGraph = new DNVGraph();
    DNVNode fromNode;
    DNVNode toNode;
    // int id = 0;
    int edge_id = OFFSET_DIFFERENCE;
    try
    {
      line = br.readLine();
      while( line != null )
      {
        edge_id += OFFSET_DIFFERENCE;
        String[] a = line.split( "[\\s,',']+" );

        // check type- we accept int or hex ids
        int fromId = 0;
        int toId = 0;
        if( a[0].trim().length() == 32 )
        { // check for a 32 bit string
          fromId = Math.abs( hex2decimal( a[0] ) );
          toId = Math.abs( hex2decimal( a[1] ) );
        }
        else
        {
          fromId = Math.abs( Integer.parseInt( a[0] ) );
          toId = Math.abs( Integer.parseInt( a[1] ) );
        }
        // check if the node already exists in the graph
        fromNode = (DNVNode)dnvGraph.getNodeById( fromId );
        if( fromNode == null )
        {
          fromNode = new DNVNode( new Vector2D( (float)Math.random(), (float)Math.random() ), dnvGraph );
          fromNode.setLevel( 0 );
          fromNode.setId( new Integer( fromId ) );
          fromNode.setLabel( "" + fromId );
          dnvGraph.addNode( 0, fromNode );
        }
        toNode = (DNVNode)dnvGraph.getNodeById( toId );
        if( toNode == null )
        {
          toNode = new DNVNode( new Vector2D( (float)Math.random(), (float)Math.random() ), dnvGraph );
          toNode.setLevel( 0 );
          toNode.setId( new Integer( toId ) );
          toNode.setLabel( "" + toId );
          dnvGraph.addNode( 0, toNode );
        }

        DNVEdge dnvEdge = new DNVEdge( dnvGraph );
        dnvEdge.setFrom( fromNode );
        dnvEdge.setId( new Integer( edge_id + 10000000 ) );
        dnvEdge.setTo( toNode );
        dnvGraph.addNode( 0, dnvEdge );
        line = br.readLine();
      }
    }
    catch( NullPointerException npe )
    {
View Full Code Here

Examples of net.wigis.graph.dnv.DNVGraph

  {
    GraphsPathFilter.init();

    String inputFile = Settings.GRAPHS_PATH + "userReverts.txt";

    DNVGraph graph = createGraph( inputFile );

    graph.writeGraph( inputFile + ".dnv" );
  }
View Full Code Here

Examples of net.wigis.graph.dnv.DNVGraph

   */
  private static DNVGraph createGraph( String inputFile )
  {
    File file = new File( inputFile );

    DNVGraph graph = null;
    if( file.exists() )
    {
      graph = new DNVGraph();

      FileReader fr;
      try
      {
        fr = new FileReader( file );
View Full Code Here

Examples of net.wigis.graph.dnv.DNVGraph

  public static String generateRandomGraphToFile( int numberOfVertices, int numberOfEdges )
  {
    String fileName = Settings.GRAPHS_PATH + "Random_" + numberOfVertices + "_" + numberOfEdges + ".dnv";

    DNVGraph graph = new DNVGraph();
    List<DNVNode> unconnectedNodes = new ArrayList<DNVNode>( 1000000 );

    Timer timer = new Timer( Timer.MILLISECONDS );
    DNVNode tempNode;
    Vector3D color = new Vector3D( 1, 0, 1 );
    timer.setStart();
    for( int i = 0; i < numberOfVertices; i++ )
    {
      tempNode = new DNVNode( new Vector2D( (float)Math.random(), (float)Math.random() ), graph );
      tempNode.setColor( color );
      unconnectedNodes.add( tempNode );
      graph.addNode( 0, tempNode );
      if( ( i + 1 ) % 10000 == 0 )
      {
        timer.setEnd();
        System.out.println( "node " + ( i + 1 ) + " - Total time: " + timer.getTotalTime( Timer.SECONDS ) + " seconds. Last segment: "
            + timer.getLastSegment( Timer.SECONDS ) + " seconds." );
        timer.setStart();
      }
    }

    DNVEdge tempEdge;
    DNVNode tempNode2;
    int tempIndex;
    for( int i = 0; i < numberOfEdges; i++ )
    {
      tempIndex = (int)( Math.random() * graph.getGraphSize( 0 ) );
      tempNode = graph.getNodes( 0 ).get( tempIndex );
      if( unconnectedNodes.size() > 0 )
      {
        tempIndex = (int)( Math.random() * unconnectedNodes.size() );
        tempNode2 = unconnectedNodes.get( tempIndex );
        while( tempNode2.equals( tempNode ) )
        {
          tempIndex = (int)( Math.random() * unconnectedNodes.size() );
          tempNode2 = unconnectedNodes.get( tempIndex );
        }
        unconnectedNodes.remove( tempIndex );
      }
      else
      {
        tempIndex = (int)( Math.random() * graph.getGraphSize( 0 ) );
        tempNode2 = graph.getNodes( 0 ).get( tempIndex );
        while( tempNode2.equals( tempNode ) )
        {
          tempIndex = (int)( Math.random() * unconnectedNodes.size() );
          tempNode2 = graph.getNodes( 0 ).get( tempIndex );
        }
      }

      tempEdge = new DNVEdge( 0, DNVEdge.DEFAULT_RESTING_DISTANCE, false, tempNode, tempNode2, graph );
      graph.addNode( 0, tempEdge );
      if( ( i + 1 ) % 10000 == 0 )
      {
        timer.setEnd();
        System.out.println( "edge " + ( i + 1 ) + " - Total time: " + timer.getTotalTime( Timer.SECONDS ) + " seconds. Last segment: "
            + timer.getLastSegment( Timer.SECONDS ) + " seconds." );
        timer.setStart();
      }
    }

    graph.writeGraph( fileName );

    return fileName;
  }
View Full Code Here

Examples of net.wigis.graph.dnv.DNVGraph

   */
  public static void generateWattsAndStrogatzGraphToFile( int numberOfNodes, int meanDegree, double rewireProbability )
  {
    System.out.println( "Generating Watts and Strogatz graph with " + numberOfNodes + " nodes and " + meanDegree + " mean degree." );
    System.out.println( "Rewiring probability is " + rewireProbability );
    DNVGraph graph = new DNVGraph();
    DNVNode tempNode;
    for( int i = 0; i < numberOfNodes; i++ )
    {
      tempNode = new DNVNode( new Vector2D( (float)Math.random(), (float)Math.random() ), graph );
      tempNode.setId( i );
      graph.addNode( 0, tempNode );
    }

    int degreeBy2 = meanDegree / 2;
    DNVNode tempNode2;
    DNVEdge tempEdge;
    int edgeId = numberOfNodes;
    HashMap<String, DNVEdge> edgeMap = new HashMap<String, DNVEdge>();
    System.out.println( "Generating nodes and edges..." );
    for( int i = 0; i < numberOfNodes; i++ )
    {
      if( i % 10000 == 0 )
      {
        System.out.println( 1 + " : " + i );
      }
      tempNode = (DNVNode)graph.getNodeById( i );
      for( int j = i - degreeBy2; j <= i + degreeBy2; j++ )
      {
        int index = j % numberOfNodes;
        if( index < 0 )
        {
          index += numberOfNodes;
        }
        if( index != i )
        {
          tempNode2 = (DNVNode)graph.getNodeById( index );
          tempEdge = edgeMap.get( i + "_" + index );
          if( tempEdge == null )
          {
            tempEdge = edgeMap.get( index + "_" + i );
            if( tempEdge == null )
            {
              tempEdge = new DNVEdge( tempNode, tempNode2, graph );
              tempEdge.setId( edgeId++ );
              graph.addNode( 0, tempEdge );
              edgeMap.put( i + "_" + index, tempEdge );
              edgeMap.put( index + "_" + i, tempEdge );
            }
          }
        }
      }
    }

    System.out.println( "Rewiring edges..." );
    for( int i = 0; i < numberOfNodes; i++ )
    {
      if( i % 10000 == 0 )
      {
        System.out.println( 2 + " : " + i );
      }
      tempNode = (DNVNode)graph.getNodeById( i );
      for( int j = i + 1; j < numberOfNodes; j++ )
      {
        if( Math.random() < rewireProbability )
        {
          tempEdge = edgeMap.remove( i + "_" + j );
          edgeMap.remove( j + "_" + i );
          if( tempEdge != null )
          {
            graph.removeNode( 0, tempEdge );
            int index = (int)( Math.random() * numberOfNodes );
            while( index == i )
              index = (int)( Math.random() * numberOfNodes );
            tempNode2 = (DNVNode)graph.getNodeById( index );
            tempEdge = new DNVEdge( tempNode, tempNode2, graph );
            tempEdge.setId( edgeId++ );
            graph.addNode( 0, tempEdge );
          }
        }
      }
    }

    graph.writeGraph( Settings.GRAPHS_PATH + "WS_" + numberOfNodes + "_" + graph.getEdges( 0 ).size() + "_" + rewireProbability + ".dnv" );
  }
View Full Code Here

Examples of net.wigis.graph.dnv.DNVGraph

  }

 
  public static DNVGraph generateSmallworldGraph( int nNodes, int nEdges, boolean writeCSV) throws IOException
  {
    return generateSmallworldGraph( nNodes, nEdges, writeCSV, new DNVGraph(), true );
  }
View Full Code Here

Examples of net.wigis.graph.dnv.DNVGraph

  {
    return mergeGraphs( 0, graph1, graph2 );
  }
  public static DNVGraph mergeGraphs( int level, DNVGraph graph1, DNVGraph graph2 )
  {
    DNVGraph newGraph = new DNVGraph();
   
    addAllNodesAndEdges( level, graph1, newGraph );
    addAllNodesAndEdges( level, graph2, newGraph );
   
    return newGraph;
View Full Code Here

Examples of net.wigis.graph.dnv.DNVGraph

    {
      GraphProperties gp = graphProperties[i];
      String path = Settings.GRAPHS_PATH + "UserStudy/testGraphs/";
      if( !( new File( path + gp.getFilename() ) ).exists() )
      {
        DNVGraph entireGraph = new DNVGraph();
        DNVGraph tempGraph;
        for( int j = 0; j < gp.getNumberOfClusters(); j++ )
        {
          tempGraph = new DNVGraph();
          tempGraph.getIdGenerator().setNextId( entireGraph.getIdGenerator().getNextId() );
          int numberOfNodes = (j+1) * gp.getMinNodesPerCluster();
          int numberOfEdges = numberOfNodes * gp.getEdgesPerNode();
          tempGraph = generateSmallworldGraph( numberOfNodes, numberOfEdges, false, tempGraph, true );
          entireGraph = mergeGraphs( tempGraph, entireGraph );
          System.out.println( "SIZE: " + entireGraph.getGraphSize( 0 ) );
View Full Code Here

Examples of net.wigis.graph.dnv.DNVGraph

  {
    List<DNVNode> untraveledNode = graph.getNodes(level);
    List<DNVEdge> untraveledEdge = graph.getEdges(level);
   
    Dk3Calc dk3Calc = new Dk3Calc(graph, level);
    DNVGraph compressedGraph = new DNVGraph();
   
    List triangles = hashTableSort.sortKeyDesc(dk3Calc.getTriangles());
    List lines = hashTableSort.sortKeyDesc(dk3Calc.getLines());
   
   
    HashMap<DNVNode, Triangle> parentToTriangle = new HashMap<DNVNode, Triangle>();
    HashMap<DNVNode, Line> parentToLine = new HashMap<DNVNode, Line>();
   
    HashMap<Triangle, DNVNode> triangleToParent = new HashMap<Triangle, DNVNode>();
    HashMap<Line, DNVNode> lineToParent = new HashMap<Line, DNVNode>();
   
    HashMap<DNVNode, ArrayList<Triangle>> nodeToTriangles = new HashMap<DNVNode, ArrayList<Triangle>>();
    HashMap<DNVNode, ArrayList<Line>> nodeToLines = new HashMap<DNVNode, ArrayList<Line>>();
   
//    Ideally each node can have multiple parents to average its initial position   
//    HashMap<DNVNode, ArrayList<DNVNode>> nodeToParent = new HashMap<DNVNode, ArrayList<DNVNode>>();
   
    HashMap<DNVNode, DNVNode> nodeToParent = new HashMap<DNVNode, DNVNode>();
   
    for(Object obj : triangles){     
      Triangle tri = (Triangle)obj;
      untraveledEdge.removeAll(tri.edges);
      boolean buildNewNode = false;
      //map each node to the triangle it belongs to and see if need to build a new node
      for(DNVNode node : tri.vertices){
        if(!nodeToTriangles.containsKey(node)){
          nodeToTriangles.put(node, new ArrayList<Triangle>());
        }
        nodeToTriangles.get(node).add(tri);
        if(!nodeToParent.containsKey(node)){
          buildNewNode = true;
        }
      }
      //build a new node, assign parent to the nodes in the triangle
      if(buildNewNode){
        DNVNode parent = new DNVNode(compressedGraph);
        parentToTriangle.put(parent, tri);
        triangleToParent.put(tri,parent);
        compressedGraph.addNode(0, parent);
        for(DNVNode node : tri.vertices){
          nodeToParent.put(node, parent);
          untraveledNode.remove(node);
        }
      }
     
    }
    //do the same thing for lines
    for(Object obj : lines){
      Line line = (Line)obj;
      untraveledEdge.removeAll(line.edges);
      //map each node to the triangle it belongs to and see if need to build a new node
      for(DNVNode node : line.vertices){
        if(!nodeToLines.containsKey(node)){
          nodeToLines.put(node, new ArrayList<Line>());
        }
        nodeToLines.get(node).add(line);
        untraveledNode.remove(node);
      }
      //build a new node, assign parent to the nodes in the triangle
      if(!nodeToParent.containsKey(line.nodes.getMiddle())){
        //System.out.println("add new node");
        DNVNode parent = new DNVNode(compressedGraph);
        parentToLine.put(parent, line);
        lineToParent.put(line,parent);
        compressedGraph.addNode(0, parent);
        for(DNVNode node : line.vertices){
          nodeToParent.put(node, parent);       
        }
      }else{
        DNVNode nodeLeft = line.nodes.getLeft();
        DNVNode nodeRight = line.nodes.getRight();
        DNVNode middleParent = nodeToParent.get(line.nodes.getMiddle());
        if(!nodeToParent.containsKey(nodeLeft) && nodeLeft.getConnectivity() == 1){
          nodeToParent.put(nodeLeft, middleParent);   
          untraveledNode.remove(nodeLeft);
        }
        if(!nodeToParent.containsKey(nodeRight) && nodeRight.getConnectivity() == 1){
          nodeToParent.put(nodeRight, middleParent)
          untraveledNode.remove(nodeRight);
        }
      }
    }
    //start building edges for the parent nodes
    /*List<DNVNode> newNodes = compressedGraph.getNodes(0);
    for(int i = 0; i < newNodes.size(); i++){
      for(int j = 1; j < newNodes.size(); j++){       
        DNVNode p1 = newNodes.get(i);
        DNVNode p2 = newNodes.get(j);
        if(p1.getNeighbors().contains(p2) || p2.getNeighbors().contains(p1)){
          continue;
        }
        Triangle p1Tri = parentToTriangle.get(p1);
        Triangle p2Tri = parentToTriangle.get(p2);
        Line p1Line = parentToLine.get(p1);
        Line p2Line = parentToLine.get(p2);
        if(p1Tri != null){
          if(p2Tri != null){
            if(p1Tri.share(p2Tri)){
              DNVEdge edge = new DNVEdge(compressedGraph);
              edge.setTo(p1);
              edge.setFrom(p2);
              compressedGraph.addEdge(0, edge);
              continue;
            }
          }
          if(p2Line != null){
            if(p1Tri.share(p2Line)){
              DNVEdge edge = new DNVEdge(compressedGraph);
              edge.setTo(p1);
              edge.setFrom(p2);
              compressedGraph.addEdge(0, edge);
              continue;
            }
          }
        }
       
        if(p1Line != null){
          if(p2Tri != null){
            if(p1Line.share(p2Tri)){
              DNVEdge edge = new DNVEdge(compressedGraph);
              edge.setTo(p1);
              edge.setFrom(p2);
              compressedGraph.addEdge(0, edge);
              continue;
            }
          }
          if(p2Line != null){
            if(p1Line.share(p2Line)){
              DNVEdge edge = new DNVEdge(compressedGraph);
              edge.setTo(p1);
              edge.setFrom(p2);
              compressedGraph.addEdge(0, edge);
              continue;
            }
          }
        }
      }
    }*/
    for(DNVNode parent : compressedGraph.getNodes(0)){
      Triangle tri = parentToTriangle.get(parent);
      if(tri != null){
        for(DNVNode node : tri.vertices){
          if(nodeToTriangles.get(node) != null){
            for(Triangle newTri : nodeToTriangles.get(node)){
              if(newTri != tri){
                DNVNode otherNode = triangleToParent.get(newTri);
                if(otherNode != null && !parent.getAllNeighbors().contains(otherNode) && !parent.shareNeighbors(otherNode)){
                  DNVEdge edge = new DNVEdge(compressedGraph);
                  edge.setTo(parent);
                  edge.setFrom(otherNode);
                  compressedGraph.addEdge(0, edge);
                }
              }
            }
          }
          if(nodeToLines.get(node) != null){
            for(Line newLine: nodeToLines.get(node)){
              DNVNode otherNode = lineToParent.get(newLine);
              if(otherNode != null && !parent.getAllNeighbors().contains(otherNode) && !parent.shareNeighbors(otherNode)){
                DNVEdge edge = new DNVEdge(compressedGraph);
                edge.setTo(parent);
                edge.setFrom(otherNode);
                compressedGraph.addEdge(0, edge);
              }
            }
          }
        }
      }
     
      Line line = parentToLine.get(parent);
      if(line != null){
        for(DNVNode node : line.vertices){
          if(nodeToTriangles.get(node) != null){
            for(Triangle newTri : nodeToTriangles.get(node)){
              DNVNode otherNode = triangleToParent.get(newTri);
              if(otherNode != null && !parent.getAllNeighbors().contains(otherNode) && !parent.shareNeighbors(otherNode)){
                DNVEdge edge = new DNVEdge(compressedGraph);
                edge.setTo(parent);
                edge.setFrom(otherNode);
                compressedGraph.addEdge(0, edge);
              }
            }
          }
          if(nodeToLines.get(node) != null){
            for(Line newLine: nodeToLines.get(node)){
              if(newLine != line){
                DNVNode otherNode = lineToParent.get(newLine);
                if(otherNode != null && !parent.getAllNeighbors().contains(otherNode) && !parent.shareNeighbors(otherNode)){
                  //if(!parent.getNeighbors().contains(otherNode) && !otherNode.getNeighbors().contains(parent)){
                    DNVEdge edge = new DNVEdge(compressedGraph);
                    edge.setTo(parent);
                    edge.setFrom(otherNode);
                    compressedGraph.addEdge(0, edge);
                }
              }
            }
          }
        }
      }
    }
    //put in the disconnected nodes
    for(DNVNode node : untraveledNode){
      if(node.getConnectivity() > 1){
        System.out.println("connectivity > 1, shouldn't be happening");
      }
      DNVNode parent = new DNVNode(compressedGraph);
      compressedGraph.addNode(0, parent);
      nodeToParent.put(node, parent);
    }
    for(DNVEdge edge : untraveledEdge){
      if(! (edge.getFrom().getConnectivity() == 1 && edge.getTo().getConnectivity() == 1)){
        System.out.println("weird edge");
        continue;
      }
      DNVNode p1 = nodeToParent.get(edge.getFrom());
      DNVNode p2 = nodeToParent.get(edge.getTo());
      if(p1 == null){
        System.out.println("p1 is null");
      }
      if(p2 == null){
        System.out.println("p2 is null " + edge.getFrom().getConnectivity() + " " + edge.getTo().getConnectivity());
        DNVNode node = edge.getTo();
        if(nodeToTriangles.get(node) == null){
          System.out.println("no triangle");
        }else{
          System.out.println("belong to triangle");
        }
        if(nodeToLines.get(node) == null){
          System.out.println("no line");
        }else{
          System.out.println("belong to line");
        }
      }
      DNVEdge pedge = new DNVEdge(compressedGraph);
      pedge.setFrom(p1);
      pedge.setTo(p2);
      compressedGraph.addEdge(0, pedge);
    }
    compressedGraph.writeGraph(Settings.GRAPHS_PATH + "fb1000_level1.dnv");
    System.out.println("this level contains " + compressedGraph.getGraphSize(0) + " nodes " + compressedGraph.getEdges(0).size() + " edges");
  }
View Full Code Here
TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.