1. 29 Apr, 2012 2 commits
  2. 26 Aug, 2011 1 commit
  3. 24 Aug, 2011 1 commit
    • Tiago Peixoto's avatar
      Several improvements to random_rewire() / random_graph() · 8240714e
      Tiago Peixoto authored
      This introduces several simplifications and corrections to the graph
      rewire algorithm, to guarantee unbiased sampling.
      
      Now a move is outright rejected if it produces a
      self-loop/parallel-edge, instead of retried. This also adds a
      "non-sweep" mode, where edges are rewired randomly, possibly with
      repetition.
      
      The edge moves are now simplified to the target of the edges only,
      since swaping sources is redundant.
      
      The number of iterations can now be explicitly modified, so it is not
      necessary to call the function more than once, and it is emphasized in
      the documentation that only after sufficiently many iterations can the
      graph be guaranteed to be fully mixed.
      8240714e
  4. 10 Feb, 2011 1 commit
  5. 13 Nov, 2010 2 commits
  6. 04 Oct, 2010 1 commit
  7. 03 May, 2010 1 commit
  8. 07 Mar, 2010 1 commit
  9. 20 Feb, 2010 1 commit
    • Tiago Peixoto's avatar
      Refactor random_graph() · 1f28345e
      Tiago Peixoto authored
      Now the degree sequence is verified with Erdös-Gallai inequalities, and
      the edges are connected in a deterministic fashion. The edges then are
      rewired with the random_rewire() function.
      1f28345e
  10. 10 Jan, 2010 1 commit
  11. 06 Dec, 2009 1 commit
  12. 06 Sep, 2009 1 commit
  13. 27 Aug, 2009 1 commit
  14. 21 Aug, 2009 1 commit
    • Tiago Peixoto's avatar
      Dump lambda::bind in favor of boost::bind · 7fb5d71d
      Tiago Peixoto authored
      This is a large commit which replaces lambda::bind with boost::bind in
      most parts of the code. This improves compilation time, and slightly
      decreases compilation memory usage in some cases.
      7fb5d71d
  15. 17 Aug, 2009 1 commit
  16. 04 Aug, 2009 1 commit
  17. 15 Jul, 2009 1 commit
    • Tiago Peixoto's avatar
      Improve correlated graph generation · e1dd1665
      Tiago Peixoto authored
      random_graph() now uses a modified algorithm for generation of
      correlated graphs, which is more efficient. Instead of giving a function
      which returns a sample of the correlated target degree, the user must
      give a function which will just compute its probability. This
      probability will then be used to choose the edges.
      e1dd1665
  18. 23 May, 2009 1 commit
  19. 06 Apr, 2008 1 commit
  20. 17 Feb, 2008 1 commit
    • Tiago Peixoto's avatar
      Split libgraph_tool into sub-modules and add test cases · 3cfff0cb
      Tiago Peixoto authored
      This commit splits libraph_tool into different libraries:
       
         - libgraph_tool_core
         - libgraph_tool_clustering (*)
         - libgraph_tool_community (*)
         - libgraph_tool_correlations (*)
         - libgraph_tool_distance (*)
         - libgraph_tool_generation (*)
         - libgraph_tool_layout (*)
         - libgraph_tool_misc (*)
         - libgraph_tool_stats (*)
      
      It also adds the python sub-module 'test', which provides extensive unit
      testing of the core functionality. The core library is fully functional
      and all test pass successfully.
      
      (*) -> module needs to be ported to new refactoring, and does not yet build
      3cfff0cb
  21. 10 Feb, 2008 1 commit
    • Tiago Peixoto's avatar
      Refactor metaprogramming engine · 0b66e272
      Tiago Peixoto authored
      This is a huge commit which completely refactors the metaprogramming
      engine which generates and selects (at run time) the graph view type and
      the desired algorithm implementation (template instantiation) that runs
      on it.
      
      Things are laid out now as following. There exists a main underlying
      graph type (GraphInterface::multigraph_t) and several other template
      classes that mask it some way or another, in a hierarchic fashion:
      
           multigraph_t -> filtered_graph (edges only, vertices only, both)
               |                               |           |           |
               |                               |           |           |
               |-------(reversed_graph)--------|-----------|-----------|
               |                               |           |           |
               \------(UndirectedAdaptor)------------------------------/
      
      The filtered_graph filters out edges and/or vertices from the graph
      based on some scalar boolean property. The reversed_graph reversed the
      direction of the edges and, finally, the UndirectedAdaptor treats the
      original directed graphs as undirected, transversing the in- and
      out-edges of each vertex indifferently. Thus, the total number of graph
      view types is 12. (The option --disable-graph-filtering can be passed to
      the configure script, which will disable graph filtering altogether and
      bring the total number down to 3, to reduce compile time and memory
      usage)
      
      In general, some specific algorithm, implemented as a template function
      object, needs to be instantiated for each of those types. Furthermore,
      the algorithm may also depend on other types, such as specific
      property_maps. Thus, the following scheme is used:
      
          struct my_algorithm // algorithm to be implemented
          {
              template <class Graph, class PropertyMap>
              void operator()(Graph *g, PropertyMap p, double& result) const
              {
                  // ...
              }
          };
      
          // in order for the above code to be instantiated at compile time
          // and selected at run time, the run_action template function object
          // is used from a member function of the GraphInterface class:
      
          double GraphInterface::MyAlgorithm(string prop_name)
          {
              double result;
              boost::any vprop = prop(property, _vertex_index, _properties);
              run_action<>()(*this, bind<void>(my_algorithm(), _1, _2,
                                               var(result)),
                             vertex_scalar_properties())(vprop);
              return result;
          }
      
      The whole code was changed to reflect this scheme, but now things are
      more centralized and less ad-hoc code needed to be
      written. Unfortunately, due to GCC's high memory usage during template
      instantiations, some of the code (namely all the degree correlation
      things) had to be split in multiple compilation units... Maybe this will
      change in the future if GCC gets optimized.
      
      This commit also touches other parts of code. More specifically, the way
      filtering gets done is very different. Now we only filter on boolean
      properties, and with the above scheme, the desired implementation runs
      with the correct chosen type, and no implicit type conversions should
      ever happen, which would have a bad impact on performance.
      0b66e272
  22. 13 Dec, 2007 1 commit
  23. 26 Nov, 2007 1 commit
    • Tiago Peixoto's avatar
      Further improvement of python interface · 06358b7c
      Tiago Peixoto authored
      Vertices and edges can be accessed from the graph class, as such:
      
          import graph_tool
          g = graph_tool.Graph()
          for v in g.vertices():
              for e in v.out_edges():
                 # do something...
      
      Additionally, the --edit-{vertex|edge|graph}-property was ported to the
      new interface, and is working again, as it used to.
      
      The Vertex and Edge class no longer have the 'get_property' and
      'set_property' method. They'll be replaced by a new method of accessing
      property maps.
      06358b7c
  24. 04 Nov, 2007 1 commit
  25. 11 Jul, 2007 1 commit
    • Tiago Peixoto's avatar
      · 32990eb6
      Tiago Peixoto authored
              * ChangeLog: updated ChangeLog file with svn history
      
              * src/graph/graph_filtering.hh: added add_edge() and remove_edge() functions for filtered graphs
      
              * src/graph/shared_map.hh: included SharedContainer
      
              * src/graph/graph_rewiring.cc: initial support for random graph rewiring
      
      
      
      git-svn-id: https://svn.forked.de/graph-tool/trunk@114 d4600afd-f417-0410-95de-beed9576f240
      32990eb6
  26. 30 Jun, 2007 1 commit
  27. 15 Nov, 2006 1 commit
  28. 14 Nov, 2006 1 commit
  29. 05 Oct, 2006 1 commit
  30. 30 Jul, 2006 1 commit
  31. 24 Jul, 2006 1 commit
  32. 10 Jul, 2006 1 commit