clustersim.simulator package¶
- class clustersim.simulator.ClusterState(num_nodes=0)¶
Bases:
objectAdapter class containing a GraphRegister object.
- Parameters:
num_nodes (
int)
- add_edge(qubit1, qubit2)¶
- add_node(vop='IA')¶
Add a node.
By default, the vertex operator corresponds to the |+> state. To add |0>, set vop to “YC”.
- property adjacency_list¶
- property adjacency_matrix¶
- apply_VOP(qubit, vop)¶
Apply vertex operators.
- duplicate(targets=None)¶
Generate a copy of the selection and return a larger object.
- edge_local_complementation(edge)¶
Apply an edge local complementation.
- classmethod from_cytoscape(data)¶
Load a simulator from cytoscape.
- Return type:
- classmethod from_json(json_data)¶
Create a ClusterState from JSON data in various formats.
- classmethod from_networkx(graph)¶
- Parameters:
graph (
Graph)- Return type:
- classmethod from_rustworkx(graph)¶
Create a graph state from rustworkx.
- Parameters:
graph (
PyGraph|PyDiGraph) – rustworkx graph.- Returns:
class object
- Return type:
- classmethod from_string(string, return_log=False)¶
Create a cluster state from a string representation of operations.
- Parameters:
- Return type:
- fusion_gate(qubit1, qubit2, fusion_type='XXZZ', mode='success', force=0)¶
Apply a fusion gate.
For more details, see https://arxiv.org/pdf/2312.02377.
- Parameters:
qubit1 (
int) – which qubit to applyqubit2 (
int) – which qubit to applyfusion_type (
str) – “XXZZ”, “XZZX”, “XYYZ”mode (str, optional) – Either “success”, “failure”, or “random”. Defaults to “success”.
force (int) – Force the measurements according to the following mapping: - 0 : Qubit 1 = 0, Qubit 2 = 0 - 1 : Qubit 1 = 0, Qubit 2 = 1 - 2 : Qubit 1 = 1, Qubit 2 = 0 - 3 : Qubit 1 = 1, Qubit 2 = 1 - -1 : Random measurement
- local_complementation(qubit)¶
Apply a local complementation.
- Parameters:
qubit (int) – which qubit to apply
- local_complementation_rewrite(qubit)¶
Apply a local complementation. This does not change the graph state.
This is because we apply local Cliffords to cancel out the state.
- Parameters:
qubit (int) – which qubit to apply
- measure(qubit, force=-1, basis='Z')¶
Measure a node in the graph state.
- property num_nodes¶
- classmethod random_graph(num_nodes, p=0.5, local_cliffords=False)¶
Generate a random graph.
- Parameters:
- Return type:
- remove_edge(qubit1, qubit2)¶
- property stabilizers¶
- subgraph(targets=None)¶
Generate a copy and return a larger object.
This does not copy any edges out of the selection.
- to_cytoscape(export_elements=False)¶
Export to cytoscape.
- to_json()¶
Convert the graph state to a JSON-serializable format.
- to_networkx(options={'neighbors': False, 'stabilizer': False, 'vop': True})¶
Export data from the underlying state.
Turning off vop = True may lead to unintended behaviour when recreating the state.
- Parameters:
options (dict, optional) – Default options. Defaults to {“stabilizer” : False, “vop”: True}.
- Returns:
networkx representation
- Return type:
nx.Graph
- to_rustworkx(options={'neighbors': False, 'stabilizer': False, 'vop': True})¶
Export data from the underlying state.
Turning off vop = True may lead to unintended behaviour when recreating the state.
- Parameters:
options (dict, optional) – Default options. Defaults to {“stabilizer” : False, “vop”: True}.
- Returns:
rustworkx representation
- Return type:
rx.PyGraph
- toggle_edge(qubit1, qubit2)¶
- property vertex_operators¶
- class clustersim.simulator.FrontendClusterState(num_nodes=0, cluster_state=None, positions=None, groups=None)¶
Bases:
objectAdapter and wrapper class that extends ClusterState with 2D layout and frontend metadata, such as node 2D positions, compound parent groups, custom styling, persistent node values, and snapshot-based Undo/Redo capability.
- Parameters:
- add_edge(qubit1, qubit2)¶
- add_group(group_id, label=None, style=None, value=None)¶
Add or update a compound parent group container.
- add_node(vop='IA', position=None, group=None, value=None, label=None)¶
Add a new quantum node to ClusterState and initialize its frontend metadata.
- apply_VOP(qubit, vop)¶
- expand_selection(selected_items)¶
Expand selected items (which may contain group container IDs, qubit indices, or Cytoscape node dicts) into a deduplicated list of valid qubit indices. If a group container ID is present, it is expanded to all of its child qubits.
- classmethod from_cytoscape_elements(elements)¶
Reconstruct FrontendClusterState from a list of Cytoscape elements.
- Parameters:
- Return type:
- classmethod from_dict(data)¶
Create FrontendClusterState from a dictionary.
- Parameters:
- Return type:
- classmethod from_json(json_str)¶
Deserialize FrontendClusterState from JSON string.
- Parameters:
json_str (
str)- Return type:
- fusion_gate(qubit1, qubit2, fusion_type='XXZZ', mode='success', force=0)¶
- get_group_children(group_id)¶
Return list of qubit indices that belong to the specified group.
- measure(qubit, force=-1, basis='Z')¶
- redo()¶
Restore the next state from the redo stack.
- Returns:
True if redo was successful, False if redo stack was empty.
- Return type:
- remove_edge(qubit1, qubit2)¶
- remove_group(group_id, unassign_children=True)¶
Remove a compound group container.
- remove_node(qubits)¶
Remove one or more nodes. Translates string IDs, qubit indices, or values to valid qubit indices. ClusterState automatically relabels remaining nodes contiguously from 0 to N-1. FrontendClusterState transfers metadata (position, group, persistent value, style) from old node indices to their new contiguous indices.
- resolve_qubit(identifier)¶
Translate a Cytoscape node ID, qubit index, or persistent value into a valid ClusterState qubit index (0..N-1).
- set_group(qubit, group_id)¶
- set_position(qubit, position)¶
- snapshot()¶
Create a complete serializable snapshot of the current state.
- to_cytoscape_elements()¶
Export complete 2D layout and quantum state to Cytoscape elements list.
- toggle_edge(qubit1, qubit2)¶
- undo()¶
Restore the previous state from the undo stack.
- Returns:
True if undo was successful, False if undo stack was empty.
- Return type:
Submodules¶
clustersim.simulator.cluster_state module¶
- class clustersim.simulator.cluster_state.ClusterState(num_nodes=0)¶
Bases:
objectAdapter class containing a GraphRegister object.
- Parameters:
num_nodes (
int)
- add_edge(qubit1, qubit2)¶
- add_node(vop='IA')¶
Add a node.
By default, the vertex operator corresponds to the |+> state. To add |0>, set vop to “YC”.
- property adjacency_list¶
- property adjacency_matrix¶
- apply_VOP(qubit, vop)¶
Apply vertex operators.
- duplicate(targets=None)¶
Generate a copy of the selection and return a larger object.
- edge_local_complementation(edge)¶
Apply an edge local complementation.
- classmethod from_cytoscape(data)¶
Load a simulator from cytoscape.
- Return type:
- classmethod from_json(json_data)¶
Create a ClusterState from JSON data in various formats.
- classmethod from_networkx(graph)¶
- Parameters:
graph (
Graph)- Return type:
- classmethod from_rustworkx(graph)¶
Create a graph state from rustworkx.
- Parameters:
graph (
PyGraph|PyDiGraph) – rustworkx graph.- Returns:
class object
- Return type:
- classmethod from_string(string, return_log=False)¶
Create a cluster state from a string representation of operations.
- Parameters:
- Return type:
- fusion_gate(qubit1, qubit2, fusion_type='XXZZ', mode='success', force=0)¶
Apply a fusion gate.
For more details, see https://arxiv.org/pdf/2312.02377.
- Parameters:
qubit1 (
int) – which qubit to applyqubit2 (
int) – which qubit to applyfusion_type (
str) – “XXZZ”, “XZZX”, “XYYZ”mode (str, optional) – Either “success”, “failure”, or “random”. Defaults to “success”.
force (int) – Force the measurements according to the following mapping: - 0 : Qubit 1 = 0, Qubit 2 = 0 - 1 : Qubit 1 = 0, Qubit 2 = 1 - 2 : Qubit 1 = 1, Qubit 2 = 0 - 3 : Qubit 1 = 1, Qubit 2 = 1 - -1 : Random measurement
- local_complementation(qubit)¶
Apply a local complementation.
- Parameters:
qubit (int) – which qubit to apply
- local_complementation_rewrite(qubit)¶
Apply a local complementation. This does not change the graph state.
This is because we apply local Cliffords to cancel out the state.
- Parameters:
qubit (int) – which qubit to apply
- measure(qubit, force=-1, basis='Z')¶
Measure a node in the graph state.
- property num_nodes¶
- classmethod random_graph(num_nodes, p=0.5, local_cliffords=False)¶
Generate a random graph.
- Parameters:
- Return type:
- remove_edge(qubit1, qubit2)¶
- property stabilizers¶
- subgraph(targets=None)¶
Generate a copy and return a larger object.
This does not copy any edges out of the selection.
- to_cytoscape(export_elements=False)¶
Export to cytoscape.
- to_json()¶
Convert the graph state to a JSON-serializable format.
- to_networkx(options={'neighbors': False, 'stabilizer': False, 'vop': True})¶
Export data from the underlying state.
Turning off vop = True may lead to unintended behaviour when recreating the state.
- Parameters:
options (dict, optional) – Default options. Defaults to {“stabilizer” : False, “vop”: True}.
- Returns:
networkx representation
- Return type:
nx.Graph
- to_rustworkx(options={'neighbors': False, 'stabilizer': False, 'vop': True})¶
Export data from the underlying state.
Turning off vop = True may lead to unintended behaviour when recreating the state.
- Parameters:
options (dict, optional) – Default options. Defaults to {“stabilizer” : False, “vop”: True}.
- Returns:
rustworkx representation
- Return type:
rx.PyGraph
- toggle_edge(qubit1, qubit2)¶
- property vertex_operators¶