parent
30ae28e6f8
commit
2308e5bfcc
@ -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]); |
||||
} |
||||
} |
||||
|
Loading…
Reference in new issue