code: def _add_edge(self, idx, from_idx, from_lvec, to_idx, to_lvec):
          
          self.edges[idx] = {'from_idx': from_idx, 'from_lvec': from_lvec,
                             'to_idx': to_idx, 'to_lvec': to_lvec}
docs: Add information about an edge linking two critical points.
  
          This actually describes two edges:
  
          from_idx ------ idx ------ to_idx
  
          However, in practice, from_idx and to_idx will typically be
          atom nuclei, with the center node (idx) referring to a bond
          critical point. Thus, it will be more convenient to model
          this as a single edge linking nuclei with the properties
          of the bond critical point stored as an edge attribute.
  
          :param idx: index of node
          :param from_idx: from index of node
          :param from_lvec: vector of lattice image the from node is in
          as tuple of ints
          :param to_idx: to index of node
          :param to_lvec:  vector of lattice image the to node is in as
          tuple of ints
          :return: