diff options
Diffstat (limited to 'structure/activity/degs_to_binary.py')
-rw-r--r-- | structure/activity/degs_to_binary.py | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/structure/activity/degs_to_binary.py b/structure/activity/degs_to_binary.py new file mode 100644 index 0000000..cb7aef5 --- /dev/null +++ b/structure/activity/degs_to_binary.py @@ -0,0 +1,45 @@ +#### +## +## Take a file which contains, on the n-th line, the degrees at each +## layer of the n-th node, and print on output the corresponding node +## participation bit-strings, i.e. the string which contains "1" if on +## that layer the node is connected, and zero otherwise +## +## on the stderr, we also dump the distribution of each bit-string +## + + +import sys + +def to_binary(l): + s = 0 + e = 0 + for v in l: + s += v * pow(2,e) + e +=1 + return s + +if len(sys.argv) < 2: + print "Usage: %s <filein>" % sys.argv[0] + sys.exit(1) + +distr = {} + +with open(sys.argv[1]) as f: + for l in f: + elems = [int(x) for x in l.strip(" \n").split(" ")] + new_list = [1 if x>0 else 0 for x in elems] + val = to_binary(new_list) + if val in distr: + distr[val] += 1 + else: + distr[val] = 1 + for i in new_list: + print i, + print + +for k in distr: + bin_list = bin(k) + bin_num = sum([int(x) if x=='1' else 0 for x in bin_list[2:]]) + sys.stderr.write("%d %028s %d \n" % (bin_num, bin_list[2:], distr[k])) + |