code: def compute_node_deps():
  	
  	deps={}
  	g=tf.get_default_graph()
  	for op in g.get_operations():
  		d=set([i.name for i in op.control_inputs])
  		for t in op.inputs:
  			if is_htop_out(t):
  				d.add(get_op(t).name)
  			else:
  				d.add(t.name)
  		deps[op.name]=d
  		for t in op.outputs:
  			deps[t.name]=set([op.name])
  	# do the same thing with HTOps
  	for op in _ops.values():
  		d=set()
  		for t in op.inputs:
  			if is_htop_out(t):
  				d.add(get_op(t).name)
  			else:
  				d.add(t.name)
  		deps[op.name]=d
  	return deps
docs: - returns the full dependency graph of ALL ops and ALL tensors
  	Map<string,list<string>> where key=node name, values=list of dependency names
  
  	If an Op takes in a placeholder tensor that is the ouput of a PythonOp, 
  	we need to replace that Placeholder with the PythonOp.