- 23 Apr, 2015 1 commit
-
-
Tiago Peixoto authored
-
- 08 Jan, 2015 1 commit
-
-
Tiago Peixoto authored
-
- 16 Oct, 2014 1 commit
-
-
Tiago Peixoto authored
This fixes a bug where equal edge descriptors would be considered unequal. Additionally, now Vertex and Edges can be ordered (via >, <, >=, <=).
-
- 08 Oct, 2014 1 commit
-
-
Tiago Peixoto authored
-
- 02 Sep, 2014 1 commit
-
-
Tiago Peixoto authored
The new format fully supports all property map types present in graph-tool and should be much faster and produce smaller files than the other text-based formats.
-
- 06 Aug, 2014 1 commit
-
-
Tiago Peixoto authored
-
- 02 Jan, 2014 1 commit
-
-
Tiago Peixoto authored
-
- 10 Nov, 2013 1 commit
-
-
Tiago Peixoto authored
-
- 11 Feb, 2013 1 commit
-
-
Tiago Peixoto authored
Dumping boost::adjacency_list<> improves memory usage by a factor of two, and also slightly improves performance in some cases.
-
- 06 Jan, 2013 1 commit
-
-
Tiago Peixoto authored
-
- 02 Dec, 2012 1 commit
-
-
Tiago Peixoto authored
-
- 27 Oct, 2012 1 commit
-
-
Tiago Peixoto authored
-
- 09 Jul, 2012 1 commit
-
-
Tiago Peixoto authored
-
- 02 May, 2012 1 commit
-
-
Tiago Peixoto authored
-
- 31 Mar, 2012 1 commit
-
-
Tiago Peixoto authored
This fixes the edge invalidation check, when either the source of the target vertex is removed.
-
- 21 Mar, 2012 2 commits
-
-
Tiago Peixoto authored
This also makes all Edge classes inherit from the same base class of the same name. This fixes tickets #94 and #95
-
Tiago Peixoto authored
This works around a regression introduced in boost 1.48, relating to the edge descriptors of reversed graphs. See: https://svn.boost.org/trac/boost/ticket/6391
-
- 01 Jun, 2011 1 commit
-
-
Tiago Peixoto authored
Now properties can be copied from vertices which are not identical (e.g. from unfiltered to filtered graphs, etc). This fixes a problem with graph copying and pruning, where the properties were not correclty copied.
-
- 10 Feb, 2011 1 commit
-
-
Tiago Peixoto authored
-
- 02 Feb, 2011 1 commit
-
-
Tiago Peixoto authored
This implements a GraphView class which allows for convenient, independent filtering graphs.
-
- 04 Dec, 2010 1 commit
-
-
Tiago Peixoto authored
Now an explicit conversion to a compatible python type is attempted if the value being set in a property map cannot be converted directly to a C++ type. This also fixes a bug with vector-valued property maps.
-
- 13 Nov, 2010 1 commit
-
-
Tiago Peixoto authored
-
- 07 Mar, 2010 1 commit
-
-
Tiago Peixoto authored
-
- 05 Nov, 2009 1 commit
-
-
Tiago Peixoto authored
This fixes a crash when a "valid" copy of an invalid edge descriptor is removed from the graph. Now the invalidity of the descriptor is detected and exposed.
-
- 18 Sep, 2009 1 commit
-
-
Tiago Peixoto authored
This fixes an obvious problem, where the graph gets deleted, and the descriptors are still lying around. Usage of orphaned descriptors will now just raise a ValueError. The __repr__ function of Edge, Vertex, and PropertyMap now give something more informative about each object.
-
- 21 Aug, 2009 1 commit
-
-
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.
-
- 16 Aug, 2009 1 commit
-
-
Tiago Peixoto authored
This also includes convenience property map checks.
-
- 13 Aug, 2009 1 commit
-
-
Tiago Peixoto authored
No longer only thrown GraphError upon any error, but instead throw specific exceptions which are more meaninful and are mapped to standard python exceptions, such as IOError, ValueError and RuntimeError.
-
- 15 May, 2009 1 commit
-
-
Tiago Peixoto authored
The following conversions are now possible: int(v) and tuple(e), where v and e are Vertex and Edge instances, respectively.
-
- 10 Mar, 2009 1 commit
-
-
Tiago Peixoto authored
Thins changes the graph filtering code slightly to wrap graph types with GraphWrap, which automatically updates the edge index list when edges are removed and added to the graph. This also changes how graphs are passed to algorithms, which is now by reference instead of pointer. (hence this touches lots of code, but changes are trivial)
-
- 06 Feb, 2009 3 commits
-
-
Tiago Peixoto authored
This includes the missing function declarations for edge and graph properties. Property maps of value type "string" do not return an array, since the numpy string and std::string are different things.
-
Tiago Peixoto authored
This includes a new vector property map type (fast_vector_property_map) which has optional disabling of bounds checking, through its associate map type (unchecked_fast_vector_property_map). This should improve performance on algorithms which depend on tight loops which access property maps. Bounds checking is only disabled locally just before the algorithms run, and proper care is taken for bounds checking _beforehand_. The property maps exposed to python still have internal bounds checking.
-
Tiago Peixoto authored
A property map object has now a get_array() member which returns an internally owned array pointing to the property values.
-
- 02 Dec, 2008 1 commit
-
-
Tiago Peixoto authored
This makes operations on graphs more flexible in some circumstances.
-
- 17 Jun, 2008 1 commit
-
-
Tiago Peixoto authored
This commit removes the internal property maps from the GraphInterface class, and makes all property maps external by default. The internal property maps were moved to the python layer.
-
- 06 May, 2008 1 commit
-
-
Tiago Peixoto authored
This fixes the representation of property maps which don't have a value type included in the value_types list, such as index properties.
-
- 10 Apr, 2008 1 commit
-
-
Tiago Peixoto authored
The whole histogram code has been redone, and the code has been simplified. The three-point vertex-edge-vertex correlation has been scrapped, since it's not frequently used, and would make compilation even more expensive. This also adds some missing files to the generation routine.
-
- 27 Mar, 2008 1 commit
-
-
Tiago Peixoto authored
Now graphml files properly contain all the supported value types, which are all perfectly preserved when read (floating point data is now saved in hexadecimal format). Several other improvements were made, such as the ability to read and write to python file-like objects. It is also now possible to have arbitrary python object properties, and store them persistently (which is done internally with the pickling interface). vector<bool> was totally abolished, since its implementation is quite broken. See: http://www.gotw.ca/publications/N1211.pdf and http://www.gotw.ca/publications/N1185.pdf Now a uint8_t (aka. char) is used in graph properties instead of a bool. Graph types can now be fully pickled (this may not be feasible memory-wise if the graph is too large, since the whole XML representation is dumped to a string before it is saved on disc).
-
- 17 Feb, 2008 1 commit
-
-
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
-
- 10 Feb, 2008 1 commit
-
-
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.
-