From df8386f75b0538075d72d52693836bb8878f505b Mon Sep 17 00:00:00 2001
From: KatolaZ <katolaz@yahoo.it>
Date: Mon, 19 Oct 2015 16:23:00 +0100
Subject: First commit of MAMMULT code

---
 structure/activity/degs_to_binary.py | 45 ++++++++++++++++++++++++++++++++++++
 1 file changed, 45 insertions(+)
 create mode 100644 structure/activity/degs_to_binary.py

(limited to 'structure/activity/degs_to_binary.py')

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]))
+    
-- 
cgit v1.2.3