igraph-help
[Top][All Lists]

## [igraph] Re: Calculation of Coordination Number

 From: Lorenzo Isella Subject: [igraph] Re: Calculation of Coordination Number Date: Wed, 12 Nov 2008 14:14:04 +0100

```> Date: Wed, 13 Feb 2008 10:47:50 +0100
> Subject: Re: [igraph] Calculation of Coordination Number
> To: Help for igraph users <address@hidden>
> Content-Type: text/plain; charset=US-ASCII; format=flowed; delsp=yes
>
>> Lorenzo,
>> if your graph is `g` then
>>    degree(g)
>> gives the number of direct neighbors of each vertex (or particle).
> Just to translate it to Python: g.degree() gives the number of direct
> neighbors of each vertex. If your graph is directed, you may only want
> to count only the outgoing or the incoming edges: g.degree(igraph.OUT)
> or g.degree(igraph.IN)
>
>> So
>>    mean(degree(g))
> In Python: sum(g.degree()) / float(g.vcount())5       3       5       6
> 5       7       4       4       6       3
>
>> (and to turn an adjacency matrix `am` into an igraph object `g` just
> In Python: g = Graph.Adjacency(matrix)
>
> --
> T.
>

Hi Tamas,
Sorry for digging up such an old thread, but I believe there is something odd.
I am trying to calculate the degree of a simple graph, representing a
set of 10 connected particles.
I want to find out how many particles each particle is directly connected to.
Here are the positions of my particles in 3D: (in the form
x1,y1, z1
x2,y2, z2
...............
x10,y10, z10
)

4.999290193854580139e+03 5.000533149148433040e+03 4.999447398587620228e+03
5.001064834585380595e+03 4.999035380244733460e+03 5.000528812802220273e+03
5.000120919149179826e+03 4.999124865795292862e+03 5.000077351035920401e+03
5.000139576462180230e+03 4.999916602466933000e+03 4.999383863046020451e+03
5.000189348003380474e+03 5.000829723772032594e+03 4.999904583548320261e+03
4.999636597644080211e+03 5.000028047572132891e+03 5.000298602886120534e+03
5.000987932255779924e+03 4.999317367246232607e+03 4.999519349528220118e+03
4.999271418429880214e+03 5.001011288548943412e+03 5.000380003697220673e+03
5.000688509976780551e+03 4.999983668506032700e+03 5.000274007730819903e+03
4.998610669638780564e+03 5.000219906699233434e+03 5.000186027137519886e+03

>From the data above I can calculate the 10x10 distance matrix using
the Euclidean distance between the particle coordinates [trivially
sqrt((xi-xj)^2+(yi-yj)^2+(zi-zj)^2)] and obtain an adjacency matrix by
setting equal to 1 the entries of the distance matrix smaller than
1.06 and 0 the other ones. This is what I get

1       0       0       1       1       1       0       1       0       1
0       1       1       0       0       0       1       0       1       0
0       1       1       1       0       1       1       0       1       0
1       0       1       1       1       1       1       0       1       0
1       0       0       1       1       1       0       1       1       0
1       0       1       1       1       1       0       1       1       1
0       1       1       1       0       0       1       0       1       0
1       0       0       0       1       1       0       1       0       1
0       1       1       1       1       1       1       0       1       0
1       0       0       0       0       1       0       1       0       1

However, if I run the following python code (where dist_mat is the
distance matrix)

import igraph as ig

# Now I start the calculation of the coordination number

coord_list=cluster_obj.degree() #Now I have a list with the number of 1rst
#neughbors of each particle

print "coord_list is, ", coord_list

These are the numbers I get

coord_list is,  [7, 5, 7, 8, 7, 9, 6, 6, 8, 5]

This looks wrong. If I consider the adjacency matrix given above, this
is the result I would expect

5       3       5       6       5       7       4       4       6       3
(where I so not consider each monomer as its own first neighbor).
Can someone please explain to me what I am doing wrong?
In case it matters, my box is running Debian testing and I have igraph
0.5 installed, built from Debian source for the amd64 architecture.
Cheers

Lorenzo

```