G,
My cpu: AMD Athlon(tm) 64 X2 Dual Core Processor 5400+
The dataset I used:
0 1
0 2
0 10
1 2
1 10
2 3
3 4
3 5
3 6
4 7
4 8
4 9
5 6
5 7
6 7
6 8
6 9
7 8
8 9
when I use this dataset and import with the igraph edgelist function my
output:
-1 -1 -0.095568 0
10 0 -0.051247 1
11 1 0.033241 2
2 12 0.105263 3
9 8 0.141274 4
4 14 0.207756 5
7 15 0.252078 6
6 16 0.306094 7
5 3 0.342105 8
18 17 0.358726 9
13 19 -0.000000 10
max node id: -1
Node count: 11
Edge count: 19
max q: 0.358726
max q join: 9
when I use this dataset and import with the igraph ncol function my
output:
-1 -1 -0.062327 0
6 5 -0.011080 1
13 17 0.037396 2
0 1 0.085873 3
8 7 0.134349 4
14 18 0.182825 5
9 22 0.229917 6
10 15 0.277008 7
4 3 0.324100 8
2 26 0.365651 9
21 27 0.437673 10
12 16 0.477839 11
20 11 0.513850 12
29 30 0.560942 13
31 23 0.594183 14
24 25 0.619114 15
33 32 0.459834 16
max node id: -1
Node count: 19
Edge count: 19
max q: 0.619114
max q join: 15
Using your dataset and importing with the igraph edgelist function my
output looks thus:
-1 -1 -0.208333 0
5 1 -0.097222 1
3 2 -0.013889 2
4 7 0.111111 3
8 6 0.000000 4
max node id: -1
Node count: 6
Edge count: 6
max q: 0.111111
max q join: 3
Using your dataset and importing with the igraph ncol function my
output looks thus:
-1 -1 -0.208333 0
4 0 -0.097222 1
2 1 -0.013889 2
3 6 0.111111 3
7 5 0.000000 4
max node id: -1
Node count: 5
Edge count: 6
max q: 0.111111
max q join: 3
Note that the node values are slightly different and the node count
reports different values.
R
Gabor Csardi wrote:
Richard, your program works fine for me. If i use it on this small
graph:
1 2
2 3
2 4
3 4
4 5
1 5
then reading with 'ncol' results 5 vertices, which is correct ('1', '2',
'3', '4' and '5'), remember that 'ncol' means symbolic vertex names,
and reading as an edge list gives 6 vertices, which is also correct,
vertices 0-6.
Please send me a file that breaks it. Thanks.
G.
On Mon, Mar 10, 2008 at 12:13:53PM -0400, Richard Geddes wrote:
G,
Here's a working fragment of my code that illustrates my results. Note the
commented line for changing the import function. When I swap out import
functions, my output changes. My original intent was to be able to observe the
value (I think it may be called the 'name') with the highest node id, setting
the attribute handler, and using the igraph_read_graph_ncol() import function
seemed to be a reasonable way to do this. The input file format in both cases
is ascii text, one edge per line, each edge represented by 2 tab separated
integers which represent vertices. I'm using the 0.6 version.
-------------------------
#include <cstdio>
#include <string>
#include <iostream>
#include <igraph.h>
using namespace std;
int main(int argc, char* argv[]) {
igraph_i_set_attribute_table(&igraph_cattribute_table);
igraph_t graph;
igraph_matrix_t merges;
igraph_vector_t modularity;
double maxq(-999999.0), q_i(0);
int maxq_join(0), max_id(-1);
igraph_vector_init(&modularity,0);
igraph_matrix_init(&merges, 1, 2);
FILE* input_file;
input_file = fopen(argv[1], "r");
// Here's where I can change the import function
// igraph_read_graph_ncol(&graph, input_file, NULL, true, false,
IGRAPH_UNDIRECTED);
igraph_read_graph_edgelist(&graph, input_file, 0, false);
fclose(input_file);
igraph_integer_t node_count(igraph_vcount(&graph));
igraph_integer_t edge_count(igraph_ecount(&graph));
// ----- Community (fast greedy)
igraph_community_fastgreedy(&graph, NULL, &merges, &modularity);
// ----- print initial modularity
q_i = (double)igraph_vector_e(&modularity, 0);
printf("%i\t%i\t%f\t%i\n", -1, -1, q_i, 0);
// ----- print modularity for subsequent joins
for (int i = 1; i < igraph_vector_size(&modularity) ; i++) {
q_i = (double)igraph_vector_e(&modularity, i);
printf("%i\t%i\t%f\t%i\n", (int)igraph_matrix_e(&merges, i-1, 0),
(int)igraph_matrix_e(&merges, i-1, 1), q_i, i);
if (q_i > maxq) {
maxq = q_i;
maxq_join = i;
}
}
igraph_vector_destroy(&modularity);
igraph_matrix_destroy(&merges);
igraph_destroy(&graph);
printf("max node id:\t%i\n", max_id);
printf("Node count:\t%i\n", (int)node_count);
printf("Edge count:\t%i\n", (int)edge_count);
printf("max q:\t%f\n", maxq);
printf("max q join:\t%i\n", maxq_join);
return 0;
}
Gabor Csardi wrote:
Richard, this is quite strange indeed. I've just tried read_graph_ncol
with various graphs and it seems to work fine. Could you send
me a small file that reproduces the strange results?
Btw, is this the 0.5 version?
Thanks,
G.
On Sun, Mar 09, 2008 at 06:22:42PM -0400, Richard Geddes wrote:
Well, initially I imported an edgelist with
igraph_read_graph_edgelist(&graph, input_file, 0, false);
and ran
igraph_community_fastgreedy(&graph, NULL, &merges, &modularity);
and got normal results.
Then, to get at the graph attributes,� I attached the C attribute handler:
igraph_i_set_attribute_table(&igraph_cattribute_table);
imported the edgelist with:
igraph_read_graph_ncol(&graph, input_file, NULL true, false,
IGRAPH_UNDIRECTED);
and ran the community function on the graph and I get different results...
when importing with igraph_read_graph_edgelist, 11 nodes and 19 edges are
reported are reported.. which is correct,
however when importing with the igraph_read_graph_ncol function, 19 nodes and
19 edges are reported.
Am I using igraph_read_graph_ncol correctly?
Thanks
Richard
Richard Geddes wrote:
Thanks. Looks like what I was looking for.
Tamas Nepusz wrote:
Hi Richard,
Is there a function that provides the value of the largest node id in
the imported graph?
If you are using C (I assume you do), try to attach the C attribute
handler and then read your graph using igraph_read_graph_ncol (this is
for the NCOL format which is practically a named edge list). This is
able to store the vertex names used in the NCOL file as a vertex
attribute. After that, you can scan the attribute values to find the
largest one.
See http://cneurocvs.rmki.kfki.hu/igraph/doc-0.5/html/ch09s02.html for
the usage of the C attribute handler.
_______________________________________________
igraph-help mailing list
address@hidden
http://lists.nongnu.org/mailman/listinfo/igraph-help
_______________________________________________
igraph-help mailing list
address@hidden
http://lists.nongnu.org/mailman/listinfo/igraph-help
_______________________________________________
igraph-help mailing list
address@hidden
http://lists.nongnu.org/mailman/listinfo/igraph-help
|