tensorcircuit.translationΒΆ
Circuit object translation in different packages
- tensorcircuit.translation.cirq2tc(qc: Any, n: int | None = None, inputs: List[float] | None = None, is_dm: bool = False, circuit_constructor: Any = None, circuit_params: Dict[str, Any] | None = None) Any[source]ΒΆ
Generate a tensorcircuit circuit from the cirq circuit.
- Parameters:
qc (cirq.Circuit) β A quantum circuit in cirq
n (Optional[int], optional) β # of qubits, defaults to None
inputs (Optional[List[float]], optional) β Input state of the circuit, defaults to None
is_dm (bool, optional) β whether to use DMCircuit, defaults to False
circuit_constructor (Any, optional) β circuit class to construct (e.g.
CircuitorDMCircuit), defaults to None (inferred fromis_dm)circuit_params (Optional[Dict[str, Any]], optional) β keyword arguments passed to the circuit constructor, defaults to None
- Returns:
the converted tensorcircuit circuit
- Return type:
Any
- tensorcircuit.translation.eqasm2tc(eqasm: str, nqubits: int | None = None, headers: Tuple[int, int] = (6, 1)) Circuit[source]ΒΆ
Translation qexe/eqasm instruction to tensorcircuit Circuit object
- Parameters:
eqasm (str) β qexe/eqasm instruction string
nqubits (Optional[int], optional) β number of qubits, defaults to None (parsed from the eqasm header)
headers (Tuple[int, int], optional) β lines of ignored code at the head and the tail, defaults to (6, 1)
- Returns:
the converted tensorcircuit
Circuit- Return type:
- tensorcircuit.translation.perm_matrix(n: int) Any[source]ΒΆ
Generate a permutation matrix P. Due to the different convention or qubitsβ order in qiskit and tensorcircuit, the unitary represented by the same circuit is different. They are related by this permutation matrix P: P @ U_qiskit @ P = U_tc
- Parameters:
n (int) β # of qubits
- Returns:
The permutation matrix P
- Return type:
Tensor
- tensorcircuit.translation.qir2cirq(qir: List[Dict[str, Any]], n: int, extra_qir: List[Dict[str, Any]] | None = None) Any[source]ΒΆ
Generate a cirq circuit using the quantum intermediate representation (qir) in tensorcircuit.
- Example:
>>> c = tc.Circuit(2) >>> c.H(1) >>> c.X(1) >>> cisc = tc.translation.qir2cirq(c.to_qir(), 2) >>> print(cisc) 1: βββHβββXβββ
- Parameters:
qir (List[Dict[str, Any]]) β The quantum intermediate representation of a circuit.
n (int) β # of qubits
extra_qir (Optional[List[Dict[str, Any]]]) β The extra quantum IR of tc circuit including measure and reset on hardware, defaults to None
- Returns:
A
cirq.Circuitobject.- Return type:
Any
- tensorcircuit.translation.qir2json(qir: List[Dict[str, Any]], simplified: bool = False) List[Dict[str, Any]][source]ΒΆ
transform qir to json compatible list of dict where array is replaced by real and imaginary list
- Parameters:
qir (List[Dict[str, Any]]) β the quantum intermediate representation of a circuit
simplified (bool) β If False, keep all info for each gate, defaults to be False. If True, suitable for IO since less information is required
- Returns:
json-compatible list of dicts (complex arrays split into real/imaginary lists)
- Return type:
List[Dict[str, Any]]
- tensorcircuit.translation.qir2qiskit(qir: List[Dict[str, Any]], n: int, extra_qir: List[Dict[str, Any]] | None = None, initialization: Any | None = None) Any[source]ΒΆ
Generate a qiskit quantum circuit using the quantum intermediate representation (qir) in tensorcircuit.
- Example:
>>> c = tc.Circuit(2) >>> c.H(1) >>> c.X(1) >>> qisc = tc.translation.qir2qiskit(c.to_qir(), 2) >>> qisc.data [(Instruction(name='h', num_qubits=1, num_clbits=0, params=[]), [Qubit(QuantumRegister(2, 'q'), 1)], []), (Instruction(name='x', num_qubits=1, num_clbits=0, params=[]), [Qubit(QuantumRegister(2, 'q'), 1)], [])]
- Parameters:
qir (List[Dict[str, Any]]) β The quantum intermediate representation of a circuit.
n (int) β # of qubits
extra_qir (Optional[List[Dict[str, Any]]]) β The extra quantum IR of tc circuit including measure and reset on hardware, defaults to None
initialization (Optional[Tensor]) β Circuit initial state in qiskit format
- Returns:
qiskit QuantumCircuit object
- Return type:
Any
- tensorcircuit.translation.qiskit2tc(qc: Any, n: int, inputs: List[float] | None = None, is_dm: bool = False, circuit_constructor: Any = None, circuit_params: Dict[str, Any] | None = None, binding_params: Sequence[float] | Dict[Any, float] | None = None) Any[source]ΒΆ
Generate a tensorcircuit circuit from the qiskit circuit.
- Example:
>>> qisc = QuantumCircuit(2) >>> qisc.h(0) >>> qisc.x(1) >>> qc = tc.translation.qiskit2tc(qisc, 2) >>> qc.to_qir()[0]['gatef']
- Parameters:
qc (QuantumCircuit) β A quantum circuit in qiskit.
n (int) β # of qubits
inputs (Optional[List[float]]) β Input state of the circuit. Default is None.
circuit_constructor (Any) β
Circuit,DMCircuitorMPSCircuitcircuit_params (Optional[Dict[str, Any]]) β kwargs given in Circuit.__init__ construction function, default to None.
binding_params (Optional[Union[Sequence[float], Dict[Any, float]]]) β (variational) parameters for the circuit. Could be either a sequence or dictionary depending on the type of parameters in the Qiskit circuit. For
ParameterVectorElementuse sequence. ForParameteruse dictionary.
- Returns:
A quantum circuit in tensorcircuit
- Return type:
Any
- tensorcircuit.translation.qiskit_from_qasm_str_ordered_measure(qasm_str: str) Any[source]ΒΆ
qiskit
from_qasm_strmethod cannot keep the order of measure as the qasm file, we provide this alternative function in case the order of measure instruction matters- Parameters:
qasm_str (str) β open qasm str
- Returns:
qiskit.circuit.QuantumCircuit- Return type:
Any
- tensorcircuit.translation.stim2tc(stim_circuit: Any, n: int | None = None, is_dm: bool = False, circuit_constructor: Any = None, circuit_params: Dict[str, Any] | None = None) Any[source]ΒΆ
Generate a tensorcircuit circuit from the stim circuit.
- Parameters:
stim_circuit (stim.Circuit) β A quantum circuit in stim
n (Optional[int], optional) β # of qubits, defaults to None
is_dm (bool, optional) β whether to use DMCircuit, defaults to False
circuit_constructor (Any, optional) β circuit class to construct (e.g.
CircuitorDMCircuit), defaults to None (inferred fromis_dm)circuit_params (Optional[Dict[str, Any]], optional) β keyword arguments passed to the circuit constructor, defaults to None
- Returns:
the converted tensorcircuit circuit
- Return type:
Any