diff --git a/summarization.py b/summarization.py
new file mode 100644
index 0000000000000000000000000000000000000000..1e0d7087d77a91e820dd6430571372dc7fe043bd
--- /dev/null
+++ b/summarization.py
@@ -0,0 +1,47 @@
+
+import networkx as nx
+
+def DSS_summarization(G,QuasiCliques):
+    "compress G into H using the DSS method"
+    
+    copy_G = G.copy()
+    
+    def loss_edges(C):
+        "return the non edges inside C"
+        loss_edges_list = []
+        
+        for i in range(1,len(C)):
+            for j in range(i):
+                u = C[i]
+                v = C[j]
+                
+                if not (u in list(G[v])):
+                    loss_edges_list.append((u,v))
+        
+        return loss_edges_list
+        
+    
+    H = nx.Graph()
+    H.add_nodes_from(range(len(QuasiCliques)))
+    
+    for i in range(len(QuasiCliques)):
+        H.nodes[i]['super_node_set'] = QuasiCliques[i]
+        H.nodes[i]['loss_edges'] = loss_edges(QuasiCliques[i])
+        
+        for j in range(1,len(QuasiCliques[i])):
+            u = QuasiCliques[i][j]
+            copy_G.remove_edges_from([(u,QuasiCliques[i][k]) for k in range(j)])
+    
+    return H, copy_G        # copy_G are the remaining edges
+
+
+
+def summary_size(H,remaining_edges):
+    "compute the size of the summary"
+    
+    size = len(remaining_edges.edges)
+    for i_Su in H.nodes:
+        Su = H.nodes[i_Su]
+        size += len(Su['super_node_set'])+len(Su['loss_edges'])
+    
+    return size
\ No newline at end of file