Hi Tiago and everyone,
I'm trying the community detection algorithm following the example
from the docs.
Brifely, with a graph g, I'm running the following:
# Plot the full graph
graph_draw(g, size=(15,15), output=output_folder+"/full_graph.png")
# Detect communities
spins = community_structure(g, n_iter=1000, n_spins=N) ### note the N parameter
ng = condensation_graph(g, spins)
size = ng[0].new_vertex_property("double")
size.a = log(ng[1].a+1)
# Plot the community graph
graph_draw(ng[0], vsize=size, vcolor=size, splines=True,
eprops={"len":20, "penwidth":10}, vprops={"penwidth":10},
output=output_folder+"/community_graph.png", size=(10,10))
I notice that when n_spins is small (say, n_spins=6), the resulting
community graph shows links that do not appear on the full graph.
See, for example, this pair of plots:
http://www.ebi.ac.uk/~spivakov/testX/full_graph.png
http://www.ebi.ac.uk/~spivakov/testX/community_graph.png
I'm a little confused as to how this is possible - am I right that
with this algorithm communities are non-overlapping?
With larger n_spins (such as n_spins=50), the ghost link disappears,
but lots of very small communities appear that segment the data too
much:
http://www.ebi.ac.uk/~spivakov/testX/community_graph50.png
More generally, my problem is that I'd like to use this algorithm in a
tool that would need to have a good enough guess of n_spins without
using a trial-and-error approach. It doesn't need to be the best
possible community detection ever, though. So I would also very much
appreciate your thoughts on estimating the most optimal n_spins from
the data.
Thanks a lot!
Best wishes,
Mikhail