- 13 Nov, 2010 1 commit
-
-
Tiago Peixoto authored
-
- 30 Jul, 2010 1 commit
-
-
Tiago Peixoto authored
These functions/properties provide more information and control about edge indexing, which might be useful.
-
- 28 Jul, 2010 1 commit
-
-
Tiago Peixoto authored
The reserved size for the array was set to g.num_edges(), but it should be set to the maximum edge index + 1, since some edges might have been deleted.
-
- 21 May, 2010 1 commit
-
-
Tiago Peixoto authored
Now vector types of property maps can be accessed as arrays with the get_array() and 'a' property, just like scalar property maps.
-
- 07 Mar, 2010 1 commit
-
-
Tiago Peixoto authored
-
- 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.
-
- 03 Sep, 2009 1 commit
-
-
Tiago Peixoto authored
These functions group several scalar properties into one vector properties, and ungroup a vector property into several scalar properties.
-
- 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.
-
- 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.
-
- 02 Aug, 2009 1 commit
-
-
Tiago Peixoto authored
This prints useful library information.
-
- 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 4 commits
-
-
Tiago Peixoto authored
Now inline() automatically converts known variables (such as property maps) and defaults to boost::python objects, instead of scxx objects. The code now is only generated for the current filtered, reversed and/or directed status of the graph, reducing compile time and binary size. Edge modification (remove and add) is now protected by a GraphWrap class, which takes care of the edge index housekeeping, which does not need to be done by hand anymore. The function is also no longer bound to one graph, and can take an arbitrary number of variables of known or unknown types, including graphs.
-
Tiago Peixoto authored
Now all symbols are exported by default, except those strictly marked as hidden.
-
Tiago Peixoto authored
i.e. g.degree_property_map("in") will create and return a vertex property map which corresponds to the in-degrees of the vertices. This is useful for temporarily modifying or getting an array of degrees.
-
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.
-
- 21 Jul, 2008 1 commit
-
-
Tiago Peixoto authored
Also, get rid of g.underlying_graph(), and rely on "private" variable g._Graph__graph instead.
-
- 15 Jul, 2008 1 commit
-
-
Tiago Peixoto authored
-
- 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
Other objects are now automatically converted (tuple, lists, dicts, str).
-
- 01 May, 2008 1 commit
-
-
Tiago Peixoto authored
-
- 15 Apr, 2008 1 commit
-
-
Tiago Peixoto authored
-
- 14 Apr, 2008 1 commit
-
-
Tiago Peixoto authored
A couple of bugs fixed. Local frame dict is read-only in python, so the updated arguments are returned in a dict instead.
-
- 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.
-
- 21 Dec, 2007 1 commit
-
-
Tiago Peixoto authored
Everything was moved into the graph_tool directory, which should have, after installation, the following structure: graph_tool/ Top-level package __init__.py Initialize the graph_tool package libgraph_tool.so libgraph_tool submodule libgraph_tool.la libtool file for libgraph_tool include/ C++ include files for dynamically compiled code
-
- 13 Dec, 2007 1 commit
-
-
Tiago Peixoto authored
-
- 30 Nov, 2007 1 commit
-
-
Tiago Peixoto authored
Property maps can now be obtained as such: weight = g.edge_properties['weight'] print weight[v] # v is a Vertex object weight[v] = 2.0 # and so on... The list of properties is obtained from g.vertex_properties, g.edge_properties and g.graph_properties, which can be read as dictionaries. The last can be set also, as such: g.graph_properties = {foo:"bar", baz:42} Functions to add and remove vertices or adges were also added (add_{vertex|edge}, remove_{vertex|edgge}). Vertex and Edge types can also now be printed for convenience, as such: for v in g.vertices(): print v for e in g.edges(): print e which results, for example, in: 0 1 2 3 4 5 6 (0,1) (1,2) (2,6) (3,4) (4,5) (4,2) (5,6) (6,1) (this also adds the forgotten graph_tool.py file, which was previously on .gitignore)
-
- 26 Nov, 2007 1 commit
-
-
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.
-
- 04 Nov, 2007 1 commit
-
-
Tiago Peixoto authored
Line breaks at column 80 were added, and all trailing whitespace was deleted. Code comments were modified and some more were added.
-
- 23 Oct, 2007 1 commit
-
- 12 Oct, 2007 1 commit
-
-
Tiago Peixoto authored
Filtered vertices and edges can be permanently removed from the graph with --purge-vertices and --purge-edges, respectively. The edge or vertex filter is automatically removed, afterwards. This is useful if maximum speed is necessary, and saving and reloading the graph without filtering is not desired. (this commit also removes some trailing whitespaces)
-
- 10 Oct, 2007 1 commit
-
-
Tiago Peixoto authored
-
- 07 Oct, 2007 2 commits
-
-
Tiago Peixoto authored
Remove graph rewiring for now, since it's quite buggy. It will be re-commited when ready.
-
Tiago Peixoto authored
Complete overhaul of command line parsing, and support for loading graph-tool as whole as a python module The command line parsing was completely rewritten. It now supports better parsing of sub-options, with type checking and grouping support. Error reporting was also significantly improved, and it now warns of invalid options and option values, before the option is executed. Some syntax has changed, such as range filtering: --[vertex|edge]-range-filter was replaced by --exclude-[vertex|edge]-range and --keep-[vertex|edge]-range, which should have a clearer meaning. Ranges can also be specified now by comparison operators (>,<,>=,<=,=), such as ">=10", to indicate a range of (10, inf). In addition, ranges can now be easily open or closed at either end, by suffixing the specific end with '*', to indicate it is closed, ex: "10 700*" means (10,700]. The graph-tool script can now be loaded as a python module (it must be renamed first to 'something.py'). All the command line options (except 'for' and 'history' which become irrelevant) are available as functions, with full description and optional parameter support. In addition, pure function objects can be given as parameters where expressions are asked, instead of strings and files, which enables convenient extension of graph-tool.
-
- 04 Oct, 2007 1 commit
-
-
Tiago Peixoto authored
Simplify range filtering, and definitely remove python filtering Simplify range filtering of vertices and edges, by always filtering both at once, even if all vertices or edges are being considered. This severely reduces compilation time and memory, at a small potential cost in run-time speed, which will probably be overshadowed by other things, such as dynamic_map look-ups ("premature optimization is the root of all evil"). Also, remove python-filtering, since, in the end, it is just code bloat, since it is quite slow for most uses and can be replaced, generally, by python property editing + range filtering.
-
- 12 Sep, 2007 1 commit
-
-
Tiago Peixoto authored
-
- 09 Aug, 2007 1 commit
-
-
Tiago Peixoto authored
* src/boost-workaround/boost/graph/kamada_kawai_spring_layout.hpp: annotated code with openmp constructs. * src/graph/graph_adaptor.hh: graph_type should be a typedef to the original graph. * src/graph/graph_properties.hh, src/graph/graph_properties.cc: added pos_t type. * src/boost-workaround/boost/graph/fruchterman_reingold.hpp: annotated code with openmp constructs. * src/graph/graph_layout.cc: new file with graph layout routines. * src/graph/graph.cc: removed graph layout routines. * src/graph/graph_community_network.cc (struct get_community_network): fixed inversion of directedness test. * src/graph/graph.cc (GraphInterface::LabelComponents): use vector_property_map instead of HashedDescriptor. Don't use a static map! * src/graph/graph_adaptor.hh: fixed edge descriptor equality comparison, which must rely on underlying edge, regardless of whether it's inverted or not. git-svn-id: https://svn.forked.de/graph-tool/trunk@121 d4600afd-f417-0410-95de-beed9576f240
-