Hi All (cross-posted squeak and pharo),
I'm more and more in need for some graph lib in smalltalk. I need graphs to implement special bayesian networks (specific inference mechanisms which aren't probabilistic) and also influence diagrams [1], and maybe in the future, reliablity tools (markov chains, petri nets, ...)... Do you know any existing smalltalk (open source) projects for graphs? I've only found [2] and [3] from 2005 but don't know them (they don't feel as generic as I would expect). If not, do you know any open-source projects outside of Smalltalk that I may look at ? I've found BGL (C++) [3] which was ported in Ruby (RGL) [4]. Does some of you know this lib ? Do you think it would be interesting to have an equivalent in Smalltalk ? As usual, any comments/advises would be greatly appreciated ;-) ? Cheers, Cédrick [1] http://en.wikipedia.org/wiki/Influence_diagram [2] http://www.squeaksource.com/Graph [3] http://www.squeaksource.com/DynaGraph.html [4] http://www.boost.org/doc/libs/1_42_0/libs/graph/doc/index.html [5] http://rgl.rubyforge.org/rgl/index.html |
Cédrick,
On 17 December 2010 17:13, Cédrick Béler <[hidden email]> wrote: > If not, do you know any open-source projects outside of Smalltalk that I may look at ? JGraphT was quite useful for me once, and it is rather nicely designed IMHO. http://jgrapht.sourceforge.net/ Best, Michael |
In reply to this post by cedreek
maybe you find some useful reference in Graphviz's Reference page
http://www.graphviz.org/Resources.php On Fri, Dec 17, 2010 at 17:13, Cédrick Béler <[hidden email]> wrote: > Hi All (cross-posted squeak and pharo), > > I'm more and more in need for some graph lib in smalltalk. > I need graphs to implement special bayesian networks (specific inference mechanisms which aren't probabilistic) and also influence diagrams [1], and maybe in the future, reliablity tools (markov chains, petri nets, ...)... > > Do you know any existing smalltalk (open source) projects for graphs? I've only found [2] and [3] from 2005 but don't know them (they don't feel as generic as I would expect). > > If not, do you know any open-source projects outside of Smalltalk that I may look at ? > I've found BGL (C++) [3] which was ported in Ruby (RGL) [4]. > Does some of you know this lib ? Do you think it would be interesting to have an equivalent in Smalltalk ? > > As usual, any comments/advises would be greatly appreciated ;-) ? > > Cheers, > > Cédrick > > [1] http://en.wikipedia.org/wiki/Influence_diagram > [2] http://www.squeaksource.com/Graph > [3] http://www.squeaksource.com/DynaGraph.html > [4] http://www.boost.org/doc/libs/1_42_0/libs/graph/doc/index.html > [5] http://rgl.rubyforge.org/rgl/index.html > > > > > -- Enrico Spinielli "Do Androids dream of electric sheep?"— Philip K. Dick "Hear and forget; see and remember;do and understand."—Mitchel Resnick |
On 12/18/10 8:29 AM, "Enrico Spinielli" <[hidden email]> wrote: > maybe you find some useful reference in Graphviz's Reference page > http://www.graphviz.org/Resources.php > > On Fri, Dec 17, 2010 at 17:13, Cédrick Béler <[hidden email]> wrote: >> Hi All (cross-posted squeak and pharo), >> >> I'm more and more in need for some graph lib in smalltalk. >> I need graphs to implement special bayesian networks (specific inference >> mechanisms which aren't probabilistic) and also influence diagrams [1], and >> maybe in the future, reliablity tools (markov chains, petri nets, ...)... >> >> Do you know any existing smalltalk (open source) projects for graphs? I've >> only found [2] and [3] from 2005 but don't know them (they don't feel as >> generic as I would expect). >> >> If not, do you know any open-source projects outside of Smalltalk that I may >> look at ? >> I've found BGL (C++) [3] which was ported in Ruby (RGL) [4]. >> Does some of you know this lib ? Do you think it would be interesting to have >> an equivalent in Smalltalk ? >> >> As usual, any comments/advises would be greatly appreciated ;-) ? >> >> Cheers, >> >> Cédrick >> >> [1] http://en.wikipedia.org/wiki/Influence_diagram >> [2] http://www.squeaksource.com/Graph >> [3] http://www.squeaksource.com/DynaGraph.html >> [4] http://www.boost.org/doc/libs/1_42_0/libs/graph/doc/index.html >> [5] http://rgl.rubyforge.org/rgl/index.html >> >> >> >> >> > > > > -- > Enrico Spinielli > "Do Androids dream of electric sheep?" Philip K. Dick > "Hear and forget; see and remember;do and understand."Mitchel Resnick Enrico was faster as me pointing you to Graphviz. www.pixelglow.com/graphviz/ And remember me earlier Squeak have a port and I help to it. Another old friend to have into coming CrhistmasSqueak ? Edgar |
In reply to this post by cedreek
-----Original Message----- From: Baveco, Hans Sent: zaterdag 18 december 2010 14:13 To: Baveco, Hans Subject: FW: [squeak-dev] Graph library in Smalltalk - Need for advices I find the IGraph(Python, R and C) and Networkx (Python) libraries very useful for calculation of standard graph indices. However it would be great if there was a Smalltalk equivalent available, with more accessible (for me) underlying algorithms... Hans http://igraph.sourceforge.net/ http://networkx.lanl.gov/index.html ________________________________________ Van: Cédrick Béler [[hidden email]] Verzonden: vrijdag 17 december 2010 17:13 Aan: [hidden email]; liste [Squeak-dev] Onderwerp: [squeak-dev] Graph library in Smalltalk - Need for advices Hi All (cross-posted squeak and pharo), I'm more and more in need for some graph lib in smalltalk. I need graphs to implement special bayesian networks (specific inference mechanisms which aren't probabilistic) and also influence diagrams [1], and maybe in the future, reliablity tools (markov chains, petri nets, ...)... Do you know any existing smalltalk (open source) projects for graphs? I've only found [2] and [3] from 2005 but don't know them (they don't feel as generic as I would expect). If not, do you know any open-source projects outside of Smalltalk that I may look at ? I've found BGL (C++) [3] which was ported in Ruby (RGL) [4]. Does some of you know this lib ? Do you think it would be interesting to have an equivalent in Smalltalk ? As usual, any comments/advises would be greatly appreciated ;-) ? Cheers, Cédrick [1] http://en.wikipedia.org/wiki/Influence_diagram [2] http://www.squeaksource.com/Graph [3] http://www.squeaksource.com/DynaGraph.html [4] http://www.boost.org/doc/libs/1_42_0/libs/graph/doc/index.html [5] http://rgl.rubyforge.org/rgl/index.html |
In reply to this post by cedreek
Hello,
Thanks all for valuable information given and sorry for answering late... Personally, I also think we need a graph lib for small scale application (100 nodes maximum). This is actually my needs as our research model won't go beyond 50 nodes I guess (and around the same scale for edges). That being said, in an ideal world, we would have a nice designed library that could map/translate/primitivize to a more efficient lib / functions easily. I've started looking at the exemples YossiDM gave to me and in particular Lemon which was according to him his best experience. I found the model quite clear and covering all what I expect for a generic graph lib (directed, undirected, mapping concept, iterators, and algorithms of course). Moreover and contrary to Boost, it's still developed in 2010. To be more precise, here's what I expect for a generic graph lib in smalltalk (note all in Lemon except visualization): - data structure: directed graphs, undirected graphs, possible loop and parallel edged, ..., trees (?) - mapping: easily map objects, informations on nodes and/or edges (here, don't know if I'd like subclassing nodes/eges instead...) - iterators: efficient way to iterate over nodes and edges - algorithms: basic algorithms implementation (bfs, dfs, ..., shortest paths, ...), and plug-ability for specific ones... - visualization: having an interactive graph visualization web/SVG and eventually morphic (... graphviz, mondrian, .......) then, I could use this for my research work... - I need "belief" nodes with associated conditional beliefs tables - I need to implement algorithms to propagate an information change (change of a node state) in any nodes... ****mainly, I'd like to get junction trees from a graph [1] which are rely useful for several domains in machine learning field *** Actually, I don't know if I really need a graph lib as a simple implementation directed to bayesian should be enough but it's the second time I need graphs (last time was for planification) and I think that would be great to have a nice and clean basic implementation. Couldn't we start developing something similar to Lemon (regarding "API", enitites, etc...) that would work for small scale project project in smalltalk ? Yossi, what were the limitations you found with Lemon ? Cheers, Cédrick [1] http://en.wikipedia.org/wiki/Junction_tree > > JGraphT worked alright in what I tried against in the past, but it won't > scale to huge heights like most libs without major tweaking or a graph DB > backing it along with some serious threading. > > Just to throw in a few others I've used, but not with Smalltalk: > > * https://software.sandia.gov/trac/mtgl MTGL > * http://lemon.cs.elte.hu/trac/lemon LEMON > * .NET http://quickgraph.codeplex.com/ Quickgraph /Graph# > * http://igraph.sourceforge.net/introduction.html iGraph > * http://snap-graph.sourceforge.net/ SNAP > > Of the above, I've had some of the best experience with LEMON in terms of > scale and speed for real-world usage. Unfortunately, none of these libraries > include everything you'd want, so at some point you will have to roll some > stuff yourself. That's been my experience at least. > > Some Graph or Graph-like Databases (tend to have some algorithm libs as > well): > > * http://www.infinitegraph.com InfiniteGraph (this runs on Objectivity > underneath the covers which has a Smalltalk impl) > * http://www.neo4j.org neo4j > * http://www.kobrix.com/hgdb.jsp HyperGraphDB > > Some related useful items for dealing with large sets and graphs when you > are thinking about performance and/or parallel processing: > > * http://gauss.cs.ucsb.edu/~aydin/doc/html/index.html Combinatorial BLAS > * http://www.semanticdesigns.com/Products/PARLANSE/ PARLANSE > * http://research.microsoft.com/en-us/projects/dryadlinq/ DRYAD LINQ > > FYI, I would strongly recommend against using Ruby for anything with graphs > except as a simple client lib. I spent a lot of time on this before and it > simply does not scale or perform to anything beyond very simple cases, and > the memory footprint in a real app becomes horrendous. We had to tweak the > hell out of some libs to get anything decent and even then we ended up > writing stacks of C to compensate. If you're just dealing with 100 vertex > undirected graphs, then it works great. It's honestly the fault of a lot of > the libs rather than the language, but nonetheless be warned. Thanks ;-) > -- > View this message in context: http://forum.world.st/Graph-library-in-Smalltalk-Need-for-advices-tp3092747p3092943.html > Sent from the Pharo Smalltalk mailing list archive at Nabble.com. > |
In reply to this post by Michael Haupt-3
have not read all responses - so this may have been mentioned already......
but you may find something in JUN: http://aokilab.kyoto-su.ac.jp/jun/index.html k ----- Original Message ---- From: Michael Haupt <[hidden email]> To: The general-purpose Squeak developers list <[hidden email]> Cc: [hidden email] Sent: Fri, December 17, 2010 9:55:44 AM Subject: Re: [squeak-dev] Graph library in Smalltalk - Need for advices Cédrick, On 17 December 2010 17:13, Cédrick Béler <[hidden email]> wrote: > If not, do you know any open-source projects outside of Smalltalk that I may >look at ? JGraphT was quite useful for me once, and it is rather nicely designed IMHO. http://jgrapht.sourceforge.net/ Best, Michael |
Free forum by Nabble | Edit this page |