qubiter.Controls module¶
-
class
qubiter.Controls.
Controls
(num_qbits, bit_pos_to_kind=None)[source]¶ Bases:
object
This class stores a dictionary called self.bit_pos_to_kind containing key-value pairs of the form (a control’s qubit number: its kind). Kinds can be either a bool or a non-negative integer. Kind is True if control is
P_1 = n = |1><1|
. Kind is False if control isP_0 = nbar = |0><0|
. Kind is a non-negative integer for MP_Y and DIAG controls.Variables: - bit_pos (list[int]) – This is the key’s half if you unzip bit_pos_to_kind, in decreasing order
- bit_pos_to_kind (dict[int, bool|int]) – Dictionary matching control bit position with its kind. The domain of the map bit_pos_to_kind is a subset of range(num_qbits)
- kinds (list[bool|int]) – this is the value’s half if you unzip bit_pos_to_kind.
- num_qbits (int) – number of qubits in full quantum circuit
-
__init__
(num_qbits, bit_pos_to_kind=None)[source]¶ Constructor
Parameters: - num_qbits (int) –
- bit_pos_to_kind (dict) –
-
static
copy
(old, extra_bits=0)[source]¶ Create a copy of self but add extra_bit many uncontrolled bits at the end.
Parameters: - old (Controls) –
- extra_bits (int) –
Returns: Return type:
-
get_num_int_controls
()[source]¶ Find number of controls that are not of boolean kind.
Returns: Return type: int
-
get_workspace_bit_pot
(target_bit_pos)[source]¶ Find a bit that is neither the target bit nor one of the controls. Make it as big as possible.
Parameters: target_bit_pos (int) – Returns: Return type: int
-
is_control
(bit_pos)[source]¶ True if bit_pos in the keys of bit_pos_to_kind. False otherwise.
Parameters: bit_pos (int) – Returns: Return type: bool
-
new_embedded_self
(emb)[source]¶ In bit_pos_to_kind, replace each key by a new key emb.bit_map[key]. Also add extra controls carried by emb.
Parameters: emb (CktEmbedder) – Returns: Return type: Controls
-
static
new_single_trol
(num_qbits, bit_pos, kind)[source]¶ Returns a single control.
Parameters: - num_qbits (int) –
- bit_pos (int) –
- kind (bool|int) –
Returns: Return type: