def __init__(self, **options):
    'Initializes the graph. The first 2 nodes and two edges forming a bijection between them are required'
    defaults = {'graph_name': 'Graph', 'node_names': ['n1', 'n2'], 'node_descriptions': ['A plain string', 'A list of strings with no \\n, created with string.splitlines()'], 'current_node': 'n1', 'state': [1, 0], 'data': 'This is a test string\n it has to have multiple lines \n and many characters 34%6\n^', 'edge_2_to_1': edge_2_to_1, 'edge_1_to_2': edge_1_to_2}
    self.options = {}
    for (key, value) in defaults.items():
        self.options[key] = value
    for (key, value) in options.items():
        self.options[key] = value
    self.elements = ['graph_name', 'node_names', 'node_descriptions', 'current_node', 'state', 'data']
    for element in self.elements:
        self.__dict__[element] = self.options[element]
    self.edges = []
    self.edge_matrices = []
    self.state_matrix = np.matrix(self.state).T
    self.display_graph = networkx.DiGraph()
    self.add_edge(self.node_names[0], self.node_names[1], self.options['edge_1_to_2'])
    self.add_edge(self.node_names[1], self.node_names[0], self.options['edge_2_to_1'])
    self.jumps = []
    self.external_node_names = []
    self.external_node_descriptions = []
    self.display_layout = networkx.spring_layout(self.display_graph)
Initializes the graph. The first 2 nodes and two edges forming a bijection between them are required
def __init__(self, **options):
    
    defaults = {'graph_name': 'Graph', 'node_names': ['n1', 'n2'], 'node_descriptions': ['A plain string', 'A list of strings with no \\n, created with string.splitlines()'], 'current_node': 'n1', 'state': [1, 0], 'data': 'This is a test string\n it has to have multiple lines \n and many characters 34%6\n^', 'edge_2_to_1': edge_2_to_1, 'edge_1_to_2': edge_1_to_2}
    self.options = {}
    for (key, value) in defaults.items():
        self.options[key] = value
    for (key, value) in options.items():
        self.options[key] = value
    self.elements = ['graph_name', 'node_names', 'node_descriptions', 'current_node', 'state', 'data']
    for element in self.elements:
        self.__dict__[element] = self.options[element]
    self.edges = []
    self.edge_matrices = []
    self.state_matrix = np.matrix(self.state).T
    self.display_graph = networkx.DiGraph()
    self.add_edge(self.node_names[0], self.node_names[1], self.options['edge_1_to_2'])
    self.add_edge(self.node_names[1], self.node_names[0], self.options['edge_2_to_1'])
    self.jumps = []
    self.external_node_names = []
    self.external_node_descriptions = []
    self.display_layout = networkx.spring_layout(self.display_graph)