diff options
author | KatolaZ <katolaz@yahoo.it> | 2016-04-13 14:35:25 +0100 |
---|---|---|
committer | KatolaZ <katolaz@yahoo.it> | 2016-04-13 14:35:25 +0100 |
commit | 2308e5bfccb88d600b2c6fa91ab21f0f1406088a (patch) | |
tree | aa1b235cf8243429c5c2ef10bd92c18e813d1ed5 /c/cartography_from_layers.c | |
parent | 30ae28e6f8f355198148e91d55bcd816d2d67565 (diff) |
Diffstat (limited to 'c/cartography_from_layers.c')
-rw-r--r-- | c/cartography_from_layers.c | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/c/cartography_from_layers.c b/c/cartography_from_layers.c new file mode 100644 index 0000000..db95689 --- /dev/null +++ b/c/cartography_from_layers.c @@ -0,0 +1,66 @@ +/** + * + * Compute the cartography of a multiplex network (participation + * coefficient vs average degree) starting from the layers + * + */ + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +#include "utils.h" + + +int main(int argc, char *argv[]){ + + + int i, val, M; + unsigned int N, K, *J_slap=NULL, *r_slap=NULL; + unsigned int maxN; + + double part; + + unsigned int *k=NULL, *k2=NULL, *tmp; + + FILE *fin; + + maxN = 0; + + M = 0; + while(argc-- > 1){ + fin = openfile_or_exit(argv[argc], "r", 17); + M += 1; + if (J_slap) + free(J_slap); + if (r_slap) + free(r_slap); + J_slap = r_slap = NULL; /* This is somehow inefficient, since we + are going to reallocate that memory in + a moment....*/ + read_slap(fin, &K, &N, &J_slap, &r_slap); + if (N > maxN){ + tmp = realloc(k, N * sizeof(unsigned int)); + VALID_PTR_OR_EXIT(tmp, 7); + k = tmp; + tmp = realloc(k2, N * sizeof(unsigned int)); + VALID_PTR_OR_EXIT(tmp, 7); + k2 = tmp; + + memset(k+maxN, 0, (N-maxN) * sizeof(unsigned int)); + memset(k2+maxN, 0, (N-maxN) * sizeof(unsigned int)); + maxN = N; + } + for(i=0; i<N; i++){ + val = r_slap[i+1] - r_slap[i]; + k[i] += val; + k2[i] += val * val; + } + } + + for(i=0; i<maxN; i++){ + part = 1.0 * M / (M-1) * (1 - 1.0 * k2[i] / (k[i] * k[i])); + printf("%d %f %f %d %d\n", i, 1.0 * k[i]/M, part, k[i], k2[i]); + } +} + |