code: def isa_from_graph(graph: nx.Graph, oneq_type='Xhalves', twoq_type='CZ') -> ISA:
      
      all_qubits = list(range(max(graph.nodes) + 1))
      qubits = [Qubit(i, type=oneq_type, dead=i not in graph.nodes) for i in all_qubits]
      edges = [Edge(sorted((a, b)), type=twoq_type, dead=False) for a, b in graph.edges]
      return ISA(qubits, edges)
docs: Generate an ISA object from a NetworkX graph.
  
      :param graph: The graph
      :param oneq_type: The type of 1-qubit gate. Currently 'Xhalves'
      :param twoq_type: The type of 2-qubit gate. One of 'CZ' or 'CPHASE'.