| 
				
				
					
				
				
				 | 
			
			 | 
			@@ -6,6 +6,7 @@ import itertools as it | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			import json | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			import qi, clifford, util | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			import random | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			from util import ABPJsonEncoder | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			class GraphState(object): | 
		
		
	
	
		
			
				| 
				
					
				
				
					
				
				
				 | 
			
			 | 
			@@ -177,9 +178,19 @@ class GraphState(object): | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        nbstr = str(self.adj) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        return "graph:\n node: {}\n adj: {}\n".format(node, nbstr) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    def to_json(self): | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        """ Convert the graph to JSON form """ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        return {"node": self.node, "adj": self.adj} | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    def to_json(self, stringify = False): | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        """  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        Convert the graph to JSON form. | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        JSON keys must be strings, But sometimes it is useful to have  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        a JSON-like object whose keys are tuples! | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        """ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        if stringify: | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            node = {str(key):value for key, value in self.node.items()} | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            adj = {str(key): {str(key):value for key, value in ngbh.items()}  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                    for key, ngbh in self.adj.items()} | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            return {"node": node, "adj": adj} | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        else:  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            return {"node": self.node, "adj": self.adj} | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    def from_json(self, data): | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        """ Reconstruct from JSON """ | 
		
		
	
	
		
			
				| 
				
					
				
				
				
				 | 
			
			 | 
			
  |