Anders and Briegel in Python
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

20 lines
706B

  1. import networkx as nx
  2. import numpy as np
  3. from . import graphstate
  4. from . import clifford
  5. from . import util
  6. class NXGraphState(graphstate.GraphState, nx.Graph):
  7. """ This is GraphState with NetworkX-like abilities """
  8. def __init__(self, *args, **kwargs):
  9. graphstate.GraphState.__init__(self, *args, **kwargs)
  10. def layout(self):
  11. """ Automatically lay out the graph """
  12. pos = nx.spring_layout(self, dim=3, scale=np.sqrt(self.order()))
  13. middle = np.average(list(pos.values()), axis=0)
  14. pos = {key: value - middle for key, value in list(pos.items())}
  15. for key, (x, y, z) in list(pos.items()):
  16. self.node[key]["position"] = util.xyz(x, y, z)