Some Graph/Network libraries for Python

Either for Social Networks Analysis, for Multi-agent simulation or Text mining, networks are everywhere and everyone seems to be producing their own library. Here’s a quick collection of some popular libraries that integrate well with Python (among other things).

NetworkX (1.4) – http://networkx.lanl.gov/ Python Full python and slow for large number of nodes.

igraph (0.5.4) – http://igraph.sourceforge.net/index.html python extension module, R package, Ruby gem or as C library Finding it very useful to use with R <- integrates perfectly with other thing I do in R.

boost – http://www.boost.org/ C++

Desenhar grafos em Python

O python facilita muito a vida para desenvolvimento rápido de grafos e redes, principalmente quando estas tem que ser construídas a partir de ficheiros externos de dados. Normalmente uma combinação de python e awk pode resolver todos os problemas numa fracção do tempo das outras linguagens.

No entanto para trabalhar e desenhar redes há dois pacotes que decidi serem importantes:

networkx

está excelente desde que se utilize a versão SVN. As versões normais para download tem 1 bug muito importante que é não ser possível exportar os grafos para um formato que se possa utilizar posteriormente. Na versão do SVN esse problema parece já estar corrigido e portanto pode-se utilizar o pacote para exportar o grafo no formato GML. Update: Nas últimas versões do networkx está tudo ok. Altamente recomendado para desenhar grafos/redes. A programação é muito pythonesca o que ajuda quem estiver embrenhado em python. Permite prototipar rapidamente ideias.

pyNetConv

O pyNetConv é basicamente um conversor de formatos de grafos. Este software pode ser integrado como módulo mas tem também uma GUI para fazer conversões entre formatos de redes. A minha utilização serve para converter o formato GML para Pajek (.net) uma vez que algum software que utilizo não conhece o GML. Não é actualizado há mais de 10 anos, pelo que pode nem sempre funcionar.

igraph para python

O igraph tornou-se nos últimos tempos a minha ferramenta de eleição para trabalhar com grafos, logo seguida de networkx. O igraph possui a vantagem de poder ser utilizado tanto em python, como R. Para além disso permite manter uma consistência de nomenclatura nas várias plataformas.

Com estes pacotes é possível utilizar python para estudar teoria dos grafos de forma simples. Todos apresentam imensos exemplos de como gerar e plotar os grafos.