igraph-help
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [igraph] MCL Algorithm


From: Chris Wj
Subject: Re: [igraph] MCL Algorithm
Date: Wed, 31 Dec 2008 11:11:40 -0500

Well we certainly appreciate all the work you put in to the library.

Quick Python code snippet I whipped up to test using MLC with igraph (uses subprocess and pipes):

import igraph

def igraph_to_mcl_matrix():
    from subprocess import Popen, PIPE
    from cStringIO import StringIO
    G1 = igraph.Graph(n=3)
    G1.add_edges(((0,1),(0,2),(1,2)))
    mcifile = StringIO()
    mclheader = (
        ("\n(mclheader\n"),
        ("mcltype matrix\n"),
        ( "dimensions %sx%s\n)\n" % (G1.vcount(), G1.vcount()) ),
        ("(mclmatrix\n"),
        ("begin\n")
    )
    mcifile.writelines(mclheader)
    for v in G1.vs:
        mcifile.write(str(v.index) + " ")
        for n in G1.neighbors(v.index):
            mcifile.write(str(n) + " ")
        mcifile.write(" $\n")
    mcifile.write(")\n")
    mcifile.seek(0)
    cmd = "mcl - -o -"
    p = Popen(cmd, stdout=PIPE, stdin=PIPE, stderr=PIPE)
    sout,serr = p.communicate(mcifile.read())
    p.wait()
    #print "return code: %i\n" % p.returncode
    if p.returncode==0 and len(sout)>0:
        lines = sout.splitlines()
        idx_begin = lines.index("begin")+1
        idx_end = lines[idx_begin:].index(")")+idx_begin
        for line in lines[idx_begin:idx_end]:
            print line

I used StringIO because I originally was using file IO before piping and it was easier to switch the code back and forth between string and file objects.

On Wed, Dec 31, 2008 at 3:43 AM, Gábor Csárdi <address@hidden> wrote:
Chris,

this is always a difficult decision, the main problem is, that it is
not easy to do it in a way that allows us to include future updates as
well. Furthermore we will need to maintain the code in the future and
that is sometimes problematic, a large portion of portability problems
we get are due to some 3rd party C++ codes we put into igraph....

We already include many smaller and bigger pieces of software, e.g.
the walktrap, the spinglass community finding algorithms, parts of
ARPACK, LAPACK and BLAS, the BLISS graph isomorphism library, etc.

Maybe I am just frustrated because I have been trying to repair the
igraph version of ARPACK for a couple of days now....

But actually the MCL code looks pretty good. So we will see. Thanks for the tip.

Best,
Gabor

On Tue, Dec 30, 2008 at 11:20 PM, Chris Wj <address@hidden> wrote:
> I have been using MCL lately and before working on a way to export igraph in
> MCL matrix format, I was looking to see if there was any further thoughts on
> including this library in igraph. I searched the archives and found that
> Tamas said something about possibly including MCL in igraph.
> For now, I will probably just exec it (popen) to test it.
>
> MCL: http://www.micans.org/mcl/
>
> _______________________________________________
> igraph-help mailing list
> address@hidden
> http://lists.nongnu.org/mailman/listinfo/igraph-help
>
>



--
Gabor Csardi <address@hidden>     UNIL DGM


_______________________________________________
igraph-help mailing list
address@hidden
http://lists.nongnu.org/mailman/listinfo/igraph-help


reply via email to

[Prev in Thread] Current Thread [Next in Thread]