def compute_node_deps():
	"""
	- 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.
	"""
	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