Graph library in Smalltalk - Need for advices

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
7 messages Options
Reply | Threaded
Open this post in threaded view
|

Graph library in Smalltalk - Need for advices

cedreek
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 




Reply | Threaded
Open this post in threaded view
|

Re: Graph library in Smalltalk - Need for advices

Michael Haupt-3
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

Reply | Threaded
Open this post in threaded view
|

Re: [Pharo-project] Graph library in Smalltalk - Need for advices

espin
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

Reply | Threaded
Open this post in threaded view
|

Re: [Pharo-project] Graph library in Smalltalk - Need for advices

Edgar De Cleene



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



Reply | Threaded
Open this post in threaded view
|

RE: Graph library in Smalltalk - Need for advices

Hans Baveco
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

Reply | Threaded
Open this post in threaded view
|

Re: [Pharo-project] Graph library in Smalltalk - Need for advices

cedreek
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.
>


Reply | Threaded
Open this post in threaded view
|

Re: Graph library in Smalltalk - Need for advices

Squeak List
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