That looks great, especially how it relates to loom. Thanks! cheers, Bruce
On Thu, Jun 22, 2017 at 9:56 AM, Mark Engelberg <mark.engelb...@gmail.com> wrote: > https://github.com/Engelberg/ubergraph > > Ubergraph is a batteries-loaded, immutable graph data structure for Clojure. > > Version 0.4.0 includes improved support for serialization/deserialization of > ubergraphs. > https://github.com/Engelberg/ubergraph#serialization > > Ubergraph has now been in use for over two years, and has no open bug > reports in github. > > Given that Loom is Clojure's other main graph library, many people are > interested in how Ubergraph and Loom compare. > > Broadly speaking, Ubergraph is a superset of Loom that fulfills Loom's > protocols offering several features and algorithms beyond what Loom > supports: > > * Multigraphs and multidigraphs with parallel edges, i.e., multiple edges > between the same pair of nodes in the same direction. > * Multiple weights per edge (as opposed to one "privileged" weight > attribute). > * Weights that are modifiable after initialization (in the immutable sense > of producing a new graph structure with modified weights). > * Mixtures of directed and undirected edges in the same graph. > * The ability to distinguish between an undirected edge and an opposing pair > of directed edges. > * The ability to traverse all a graph's edges while guaranteeing that > undirected edges are visited only once. > > Because Ubergraph implements Loom protocols, Ubergraph can typically be used > as a drop-in replacement for Loom graphs. For the most part, Loom's graph > algorithms work on ubergraphs, and Ubergraph's graph algorithms work on loom > graphs. There are some exceptions to this, because in some cases, the > implementation of Loom's algorithms were not carefully implemented to rely > only on Loom's protocol abstractions, but were hard-coded to specific > aspects of Loom's concrete implementation. And since Loom wasn't written > with multigraphs in mind, some of Loom's algorithms don't work properly on > multigraphs. > > Ubergraph's algorithm namespace contains a curated collection of algorithms > from Loom known to work properly on ubergraph's more general data structure, > improved versions of several critical algorithms from Loom, and > reimplementations of several key algorithms from Loom known to be broken on > multigraphs. > > -- > You received this message because you are subscribed to the Google > Groups "Clojure" group. > To post to this group, send email to clojure@googlegroups.com > Note that posts from new members are moderated - please be patient with your > first post. > To unsubscribe from this group, send email to > clojure+unsubscr...@googlegroups.com > For more options, visit this group at > http://groups.google.com/group/clojure?hl=en > --- > You received this message because you are subscribed to the Google Groups > "Clojure" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to clojure+unsubscr...@googlegroups.com. > For more options, visit https://groups.google.com/d/optout. -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.