Graph-NewmanGirvan

 view release on metacpan or  search on metacpan

NewmanGirvan.xs  view on Meta::CPAN

      nodeToCluster.insert(std::pair<node, int>(i->first, contrNodeToCluster[nodeToContr[i->first]]));
    }

    // refine decontracted clustering
    std::map< node, std::list<edge> > nodeToEdge;

    for (std::list<node>::const_iterator i = nodes.begin(); i != nodes.end(); ++i) {
      nodeToEdge.insert(std::pair<node, std::list<edge> >(*i, std::list<edge>()));
    }
    for (std::list<edge>::const_iterator i = edges.begin(); i != edges.end(); ++i) {
      nodeToEdge[i->src].push_back(*i);
    }

    refine(nodeToCluster, nodeToEdge, atedges, atpairs);

    return nodeToCluster;
}

std::map<node, int>
NewmanGirvan::execute(std::list<node>& nodes, std::list<edge>& edges, bool ignoreLoops) {

  // compute atedgeCnt and atpairCnt
  double atedgeCnt = 0.0; 
  for (std::list<edge>::const_iterator i = edges.begin(); i != edges.end(); ++i) {
    if (!ignoreLoops || !(i->src == i->dst)) { 
      atedgeCnt += i->weight;
    }
  }

  double atpairCnt = 0.0; 
  for (std::list<node>::const_iterator i = nodes.begin(); i != nodes.end(); ++i) {
    atpairCnt += i->weight;
  }
  atpairCnt *= atpairCnt;
  if (ignoreLoops) { 
    for (std::list<node>::const_iterator i = nodes.begin(); i != nodes.end(); ++i) {
      atpairCnt -= i->weight * i->weight;
    }
  }
        
  // compute clustering
  return cluster(nodes, edges, atedgeCnt, atpairCnt);
}



MODULE = Graph::NewmanGirvan          PACKAGE = Graph::NewmanGirvan

NewmanGirvan *
NewmanGirvan::new()

void
NewmanGirvan::add_edge(const char* src, const char* dst, double weight)

void
NewmanGirvan::set_vertex_weight(const char* vertex, double weight)

void
NewmanGirvan::compute()
  PREINIT:
  PPCODE:
    std::map<std::string, int> result = THIS->run();
    for (std::map<std::string, int>::const_iterator i = result.begin(); i != result.end(); ++i) {
      mXPUSHs(newSVpvn(i->first.c_str(), i->first.size()));
      mXPUSHs(newSVnv(i->second));
    }

void
NewmanGirvan::DESTROY()



( run in 2.687 seconds using v1.01-cache-2.11-cpan-71847e10f99 )