After a long thought, I finally decided to post this question here. Few days back I started using graph-tool
to do various things. I have been using Networkx
before that. I have already seen the impressive performance comparision and thought that everything would be simple enough. However, I immediately ran into the speed issue and asked a question related to a particular aspect of it. I got a quick answer that satisfied me. However, now this speed issue is bugging me every now and then and I can't find any documentation about graph-tool
that is related to efficiently using it. For example, from the answer to my last question, I came to realize that it is better to add all edges together instead of one by one which is a very important point to note but hasn't been mentioned anywhere! I am now having two more similar issues:
(1) How do I choose a random neighbour of a given node? I can only see the following solution:
nbr = np.random.choice(list(v.all_neighbours()))
since v.all_neighbours()
is a generator, I must convert it into the list to choose a random element. This slows down the code but I don't see any better way.
(2) I want to assign a 1d vector (is list
okay?) to each of the vertices in the graph and later I am exchanging and modifying them in a particular way. This is simply a property map and I would like to see some documentation about how to use this efficiently. However, I can't locate anything.
(3) I am trying to simulate a triadic closure in some network which itself is changing with time. Thus, at every time step, I need an information about the neighbours of each vertex in the graph. Again, I must create a list (or numpy array):
nbrs = [w for w in v.neighbours()]
which decreases the speed of my code substantially. This means that I am not doing this correctly but I couldn't find any documentation that would tell me how to use neighbours efficiently in graph-tool.
Somehow Networkx
programs that I have written for same tasks have completely outperformed the graph-tool codes I simply can't buy this.
This list might increase and hence I would be very glad if somebody could point me to some documentation about using graph-tool efficiently apart from answering the above mentioned specific questions.
Thanks in advance.