SkBlaz / py3plex

Py3plex - A multilayer complex network visualization and analysis library in python3
BSD 3-Clause "New" or "Revised" License
158 stars 37 forks source link

Importing Network From multiedgelist #8

Closed willi3by closed 4 years ago

willi3by commented 4 years ago

Hi,

I am trying to import a multilayer network from a multiedgelist that I have attached. When I import and check the core network, it seems that there are 184 nodes as opposed to 46 nodes in 4 layers of the network. Could you check the attached file to see where the issue may be?

Thanks! Brady

Multilayer_python.txt

SkBlaz commented 4 years ago

Thanks Brady,

I added your example to the repo, if you don't mind? Please see the updated example_IO.py : https://github.com/SkBlaz/Py3plex/blob/master/examples/example_IO.py

where the counts are clalrified. Indeed there are 46 unique nodes. However, if one is to represent the whole thing as a heterogeneous graph (under the hood), 184 is the number of node-layer combinations needed.

Hope this helps.

willi3by commented 4 years ago

Hello,

Yes that helps very much! I just wanted to make sure that the metrics are still calculated on the full multilayer as opposed to a multiplex or aggregate network.

The network I am working with is a full aligned multilayer network and I am interested in metrics such as network decomposition, community detection, and spreading processes. I have run into issues before with algorithms that seem to be designed for multilayer networks but are only valid for multiplex networks. Are the algorithms in py3plex useable for both multiplex and full multilayer network?

Thank you! Brady

SkBlaz commented 4 years ago

Hello. What do you mean by 'aligned'? My answer is: it depends. Community detection, for example, can run on the whole structure, yet it is up to you to know what you are doing. (There is also a multiplex implementation, yet that is different).

Spreading can be quite simply simulated, as shown in one of the examples: one simply traverses (and queries) the multilayer_network.core_network object, which keeps the information on node-layers.

Note that by default, all networks are initialized as multilayer. There is a specialized set of coupling methods that, well, couple the layers so that you have the same node set dispersed throughout a set of layers. This is perhaps not what you want.

If you have a more specific implementation request or an idea I'd be glad to help, as currently, there were not many pure-multilayer implementations indeed. (the primary focus was visualization)

Thanks for your interest!