On 08.02.2016 11:31, Danilo Giuffrida wrote:
Yes. For example in the original directed network I have the triangle: (1)<--(2)<-->(3)-->(1) then I obtain the undirected network by means of g.set_directed(False) and evaluate the local clustering of node 1, finding C(1)=2 (instead of C(1)=1). This happens for all the nodes in this network, i.e. their local clustering is always between 0 and 2. Of course I could simply divide by two, but I would like to understand what is going wrong. I know that for directed/undirected network the normalization is different, hence I guess that something is not going on with the set_directed method.
This is because if you make the network undirected, it becomes a multigraph, i.e. there are _two_ edges between 2 and 3. The clustering coefficient is normalized only for _simple_ graphs, with at most one edge between nodes. If you want to transform the network into a multigraph, you can filter the parallel edges out: u = GraphView(g, efilt=logical_not(label_parallel_edges(g, mark_only=True).fa)) or remove them with remove_parallel_edges(). Best, Tiago -- Tiago de Paula Peixoto <tiago@skewed.de>