Just to have a simple test case: Based on a comparison with Mathematica, for an n*n grid graph things start to go wrong at n=35. For n=34 the edge betweenness is still accurate.
On 13 September 2015 at 22:37, Tamas Nepusz <[email protected]> wrote: > Ah, my bad, I did not notice that you meant the edge betweenness and > not the node betweenness. It looks like the edge betweenness related > code does not include a similar bigint workaround. This should be > fixed in the next version then - can you add a bug report to > https://github.com/igraph/igraph/issues ? > > Thanks, > T. > > T. > > > On Sun, Sep 13, 2015 at 9:24 AM, Vincent Labatut > <[email protected]> wrote: >> Hello Tamas, >> >> and thanks for your answer. >> I was thinking of something like that, since the networks are lattices and >> this case is mentionned in the documentation. >> I also had noticed the "nobigint" parameter for the "betweenness" functions, >> however it does not exist for the "edge.betweenness" functions. >> Best, >> Vincent >> >>> Hello, >>> >>> The negative values are most likely due to integer overflows (i.e. the >>> betweenness score would be too large and the underlying variable in >>> which igraph computes the betweenness score overflows). You can get >>> around this by passing nobigint=FALSE to the edge betweenness call - >>> it will make igraph use "big integers", which can hold arbitrarily >>> large numbers at the expense of being somewhat slower. >>> >>> As for the NaNs, it could be a bug, but let's see first whether the >>> issue persists with nobigint=FALSE. If so, let us know and try to post >>> a small example on which we could reproduce the issue with NaNs. >>> >>> T. >>> >>> >>> >>> On Sat, Sep 12, 2015 at 3:08 PM, Vincent Labatut >>> <address@hidden> wrote: >>>> Hello, >>>> >>>> I am processing the edge-betweenness of various networks using R igraph >>>> version 7.1. Those are spatial networks (each node has a (x,y) position) >>>> and >>>> I am using the "weight" option of the "edge.betweenness" function to take >>>> the spatial distances into account. This spatial distance is stored in an >>>> edge attribute called "dist". >>>> >>>> Here is the command I use: >>>> edge.betweenness(graph=g, weights=E(g)$dist) >>>> >>>> However, for some of my networks, I get negative values, or even NaN. >>>> Here >>>> are two examples, under the graphml format: >>>> http://dx.doi.org/10.6084/m9.figshare.1540708 >>>> - scale=32.graphml >>>> - scale=41.graphml >>>> >>>> For the first one, the first values returned by "edge.betweenness" are: >>>> [1] 1904887544.08 1904887544.08 1896303182.39 1951787568.72 >>>> 1203043060.76 >>>> [6] 1270869072.68 622780616.09 667964773.27 279064394.68 >>>> 309184936.21 >>>> [11] 135403467.81 155266075.94 51600202.02 60120695.31 >>>> 21113003.39 >>>> [16] 24783603.89 6275147.30 6937885.52 1347425.01 >>>> 1002544.99 >>>> [21] 150574.42 -327097.77 -711849.38 -1430744.36 >>>> -246214.20 >>>> [26] -602827.15 -230344.97 -484630.12 -297768.08 >>>> -492364.06 >>>> >>>> For the second one, all the returned values are NaN. >>>> >>>> Note that all these weights are positive by definition. They even are >>>> non-zero since no two nodes hold the same position, by construction. I >>>> also >>>> checked this programmatically. Moreover, there are no multiple links, >>>> also >>>> by construction (and I checked with "has.multiple"). >>>> >>>> I was wondering if the negative or NaN values I get are due to me >>>> misusing >>>> the function, or if this is a bug in igraph. >>>> >>>> Thanks, >>>> Vincent Labatut >>>> >>>> _______________________________________________ >>>> igraph-help mailing list >>>> address@hidden >>>> https://lists.nongnu.org/mailman/listinfo/igraph-help >>>> >> >> >> On Sat, Sep 12, 2015 at 3:08 PM, Vincent Labatut <[email protected]> >> wrote: >>> >>> Hello, >>> >>> I am processing the edge-betweenness of various networks using R igraph >>> version 7.1. Those are spatial networks (each node has a (x,y) position) and >>> I am using the "weight" option of the "edge.betweenness" function to take >>> the spatial distances into account. This spatial distance is stored in an >>> edge attribute called "dist". >>> >>> Here is the command I use: >>> edge.betweenness(graph=g, weights=E(g)$dist) >>> >>> However, for some of my networks, I get negative values, or even NaN. Here >>> are two examples, under the graphml format: >>> http://dx.doi.org/10.6084/m9.figshare.1540708 >>> - scale=32.graphml >>> - scale=41.graphml >>> >>> For the first one, the first values returned by "edge.betweenness" are: >>> [1] 1904887544.08 1904887544.08 1896303182.39 1951787568.72 >>> 1203043060.76 >>> [6] 1270869072.68 622780616.09 667964773.27 279064394.68 >>> 309184936.21 >>> [11] 135403467.81 155266075.94 51600202.02 60120695.31 >>> 21113003.39 >>> [16] 24783603.89 6275147.30 6937885.52 1347425.01 >>> 1002544.99 >>> [21] 150574.42 -327097.77 -711849.38 -1430744.36 >>> -246214.20 >>> [26] -602827.15 -230344.97 -484630.12 -297768.08 >>> -492364.06 >>> >>> For the second one, all the returned values are NaN. >>> >>> Note that all these weights are positive by definition. They even are >>> non-zero since no two nodes hold the same position, by construction. I also >>> checked this programmatically. Moreover, there are no multiple links, also >>> by construction (and I checked with "has.multiple"). >>> >>> I was wondering if the negative or NaN values I get are due to me misusing >>> the function, or if this is a bug in igraph. >>> >>> Thanks, >>> Vincent Labatut >> >> >> >> _______________________________________________ >> igraph-help mailing list >> [email protected] >> https://lists.nongnu.org/mailman/listinfo/igraph-help >> > > _______________________________________________ > igraph-help mailing list > [email protected] > https://lists.nongnu.org/mailman/listinfo/igraph-help _______________________________________________ igraph-help mailing list [email protected] https://lists.nongnu.org/mailman/listinfo/igraph-help
