qulacs¶
cppsim python interface
Subpackages¶
Package Contents¶
Classes¶
QuantumGate_Instrument |
|
QuantumGate_ProbabilisticInstrument |
|
Functions¶
StateVector |
|
- class qulacs.CausalConeSimulator(arg0: ParametricQuantumCircuit, arg1: Observable)¶
- build() None ¶
Build
- get_circuit_list() list[list[ParametricQuantumCircuit]] ¶
Return circuit_list
- get_coef_list() list[complex] ¶
Return coef_list
- get_expectation_value() complex ¶
Return expectation_value
- get_pauli_operator_list() list[list[PauliOperator]] ¶
Return pauli_operator_list
- class qulacs.ClsNoisyEvolution¶
Bases:
QuantumGateBase
- class qulacs.ClsNoisyEvolution_fast¶
Bases:
QuantumGateBase
- class qulacs.ClsNpairQubitGate¶
Bases:
QuantumGateBase
- class qulacs.ClsOneControlOneTargetGate¶
Bases:
QuantumGateBase
- class qulacs.ClsOneQubitGate¶
Bases:
QuantumGateBase
- class qulacs.ClsOneQubitRotationGate¶
Bases:
QuantumGateBase
- class qulacs.ClsPauliGate¶
Bases:
QuantumGateBase
- class qulacs.ClsPauliRotationGate¶
Bases:
QuantumGateBase
- class qulacs.ClsReversibleBooleanGate¶
Bases:
QuantumGateBase
- class qulacs.ClsStateReflectionGate¶
Bases:
QuantumGateBase
- class qulacs.ClsTwoQubitGate¶
Bases:
QuantumGateBase
- class qulacs.DensityMatrix(qubit_count: int)¶
Bases:
QuantumStateBase
- add_state(state: QuantumStateBase) None ¶
Add state vector to this state
- allocate_buffer() DensityMatrix ¶
Allocate buffer with the same size
- copy() DensityMatrix ¶
Create copied insntace
- get_classical_value(index: int) int ¶
Get classical value
- get_device_name() str ¶
Get allocated device name
- get_entropy() float ¶
Get entropy
- get_marginal_probability(measured_values: list[int]) float ¶
Get merginal probability for measured values
- get_matrix() numpy.ndarray ¶
Get density matrix
- get_qubit_count() int ¶
Get qubit count
- get_squared_norm() float ¶
Get squared norm
- get_zero_probability(index: int) float ¶
Get probability with which we obtain 0 when we measure a qubit
- load(state: QuantumStateBase) None ¶
- load(state: list[complex]) None
- load(state: numpy.ndarray) None
Load quantum state represented as a two-dimensional list
- multiply_coef(coef: complex) None ¶
Multiply coefficient to this state
- normalize(squared_norm: float) None ¶
Normalize quantum state
- sampling(sampling_count: int) list[int] ¶
- sampling(sampling_count: int, random_seed: int) list[int]
Sampling measurement results
- set_Haar_random_state() None ¶
- set_Haar_random_state(seed: int) None
Set Haar random state
- set_classical_value(index: int, value: int) None ¶
Set classical value
- set_computational_basis(comp_basis: int) None ¶
Set state to computational basis
- to_json() str ¶
to json string
- to_string() str ¶
to string
- class qulacs.GeneralQuantumOperator(qubit_count: int)¶
- add_operator(pauli_operator: PauliOperator) None ¶
- add_operator(coef: complex, pauli_string: str) None
Add Pauli operator
- add_operator_copy(pauli_operator: PauliOperator) None ¶
Add Pauli operator
- add_operator_move(pauli_operator: PauliOperator) None ¶
Add Pauli operator
- apply_to_state(work_state: QuantumStateBase, state_to_be_multiplied: QuantumStateBase, dst_state: QuantumStateBase) None ¶
- apply_to_state(state_to_be_multiplied: QuantumStateBase, dst_state: QuantumStateBase) None
Apply observable to state_to_be_multiplied. The result is stored into dst_state.
- copy() GeneralQuantumOperator ¶
Create copied instance of General Quantum operator class
- get_expectation_value(state: QuantumStateBase) complex ¶
Get expectation value
- get_expectation_value_single_thread(state: QuantumStateBase) complex ¶
Get expectation value
- get_matrix() scipy.sparse.csr_matrix ¶
Get the Hermitian matrix representation of the observable
- get_qubit_count() int ¶
Get qubit count
- get_state_dim() int ¶
Get state dimension
- get_term(index: int) PauliOperator ¶
Get Pauli term
- get_term_count() int ¶
Get count of Pauli terms
- get_transition_amplitude(state_bra: QuantumStateBase, state_ket: QuantumStateBase) complex ¶
Get transition amplitude
- is_hermitian() bool ¶
Get is Herimitian
- to_json() str ¶
to json string
- class qulacs.GradCalculator¶
- calculate_grad(parametric_circuit: ParametricQuantumCircuit, observable: Observable) list[complex] ¶
- calculate_grad(parametric_circuit: ParametricQuantumCircuit, observable: Observable, angles_of_gates: list[float]) list[complex]
Calculate Grad
- class qulacs.NoiseSimulator(arg0: QuantumCircuit, arg1: QuantumState)¶
- execute(arg0: int) list[int] ¶
Sampling & Return result [array]
- execute_and_get_result(arg0: int) SimulationResult ¶
Simulate & Return ressult [array of (state, frequency)]
- class qulacs.Observable(qubit_count: int)¶
Bases:
GeneralQuantumOperator
- add_operator(pauli_operator: PauliOperator) None ¶
- add_operator(coef: complex, string: str) None
Add Pauli operator
- add_operator_copy(pauli_operator: PauliOperator) None ¶
Add Pauli operator
- add_operator_move(pauli_operator: PauliOperator) None ¶
Add Pauli operator
- add_random_operator(operator_count: int) None ¶
- add_random_operator(operator_count: int, seed: int) None
Add random pauli operator
- apply_to_state(work_state: QuantumStateBase, state_to_be_multiplied: QuantumStateBase, dst_state: QuantumStateBase) None ¶
Apply observable to state_to_be_multiplied. The result is stored into dst_state.
- get_expectation_value(state: QuantumStateBase) float ¶
Get expectation value
- get_expectation_value_single_thread(state: QuantumStateBase) float ¶
Get expectation value
- get_qubit_count() int ¶
Get qubit count
- get_state_dim() int ¶
Get state dimension
- get_term(index: int) PauliOperator ¶
Get Pauli term
- get_term_count() int ¶
Get count of Pauli terms
- get_transition_amplitude(state_bra: QuantumStateBase, state_ket: QuantumStateBase) complex ¶
Get transition amplitude
- solve_ground_state_eigenvalue_by_arnoldi_method(state: QuantumStateBase, iter_count: int, mu: complex = 0.0) complex ¶
Compute ground state eigenvalue by arnoldi method
- solve_ground_state_eigenvalue_by_lanczos_method(state: QuantumStateBase, iter_count: int, mu: complex = 0.0) complex ¶
Compute ground state eigenvalue by lanczos method
- solve_ground_state_eigenvalue_by_power_method(state: QuantumStateBase, iter_count: int, mu: complex = 0.0) complex ¶
Compute ground state eigenvalue by power method
- class qulacs.ParametricQuantumCircuit(qubit_count: int)¶
Bases:
QuantumCircuit
- add_gate(gate: QuantumGateBase) None ¶
- add_gate(gate: QuantumGateBase, position: int) None
Add gate
- add_parametric_RX_gate(index: int, angle: float) None ¶
Add parametric Pauli-X rotation gate
- add_parametric_RY_gate(index: int, angle: float) None ¶
Add parametric Pauli-Y rotation gate
- add_parametric_RZ_gate(index: int, angle: float) None ¶
Add parametric Pauli-Z rotation gate
- add_parametric_gate(gate: QuantumGate_SingleParameter) None ¶
- add_parametric_gate(gate: QuantumGate_SingleParameter, position: int) None
Add parametric gate
- add_parametric_multi_Pauli_rotation_gate(index_list: list[int], pauli_ids: list[int], angle: float) None ¶
Add parametric multi-qubit Pauli rotation gate
- backprop(obs: GeneralQuantumOperator) list[float] ¶
Do backprop
- backprop_inner_product(state: QuantumState) list[float] ¶
Do backprop with innder product
- copy() ParametricQuantumCircuit ¶
Create copied instance
- get_parameter(index: int) float ¶
Get parameter
- get_parameter_count() int ¶
Get parameter count
- get_parametric_gate_position(index: int) int ¶
Get parametric gate position
- merge_circuit(circuit: ParametricQuantumCircuit) None ¶
Merge another ParametricQuantumCircuit
- remove_gate(position: int) None ¶
Remove gate
- set_parameter(index: int, parameter: float) None ¶
Set parameter
- class qulacs.PauliOperator(coef: complex = 1 + 0j) PauliOperator(pauli_string: str, coef: complex = 1 + 0j) PauliOperator(target_qubit_index_list: list[int], pauli_operator_type_list: str, coef: complex = 1 + 0j)¶
- add_single_Pauli(index: int, pauli_type: int) None ¶
Add Pauli operator to this term
- change_coef(new_coef: complex) None ¶
Change coefficient
- copy() PauliOperator ¶
Create copied instance of Pauli operator class
- get_coef() complex ¶
Get coefficient of Pauli term
- get_expectation_value(state: QuantumStateBase) complex ¶
Get expectation value
- get_expectation_value_single_thread(state: QuantumStateBase) complex ¶
Get expectation value
- get_index_list() list[int] ¶
Get list of target qubit indices
- get_pauli_id_list() list[int] ¶
Get list of Pauli IDs (I,X,Y,Z) = (0,1,2,3)
- get_pauli_string() str ¶
Get pauli string
- get_transition_amplitude(state_bra: QuantumStateBase, state_ket: QuantumStateBase) complex ¶
Get transition amplitude
- class qulacs.QuantumCircuit(qubit_count: int)¶
- add_CNOT_gate(control: int, target: int) None ¶
Add CNOT gate
- add_CZ_gate(control: int, target: int) None ¶
Add CZ gate
- add_FusedSWAP_gate(target1: int, target2: int, block_size: int) None ¶
Add FusedSWAP gate
- add_H_gate(index: int) None ¶
Add Hadamard gate
- add_RX_gate(index: int, angle: float) None ¶
Add Pauli-X rotation gate
Notes
Matrix Representation
\[\begin{split}R_X(\theta) = \exp(i\frac{\theta}{2} X) = \begin{pmatrix} \cos(\frac{\theta}{2}) & i\sin(\frac{\theta}{2}) \\ i\sin(\frac{\theta}{2}) & \cos(\frac{\theta}{2}) \end{pmatrix}\end{split}\]
- add_RY_gate(index: int, angle: float) None ¶
Add Pauli-Y rotation gate
Notes
Matrix Representation
\[\begin{split}R_Y(\theta) = \exp(i\frac{\theta}{2} Y) = \begin{pmatrix} \cos(\frac{\theta}{2}) & \sin(\frac{\theta}{2}) \\ -\sin(\frac{\theta}{2}) & \cos(\frac{\theta}{2}) \end{pmatrix}\end{split}\]
- add_RZ_gate(index: int, angle: float) None ¶
Add Pauli-Z rotation gate
Notes
Matrix Representation
\[\begin{split}R_Z(\theta) = \exp(i\frac{\theta}{2} Z) = \begin{pmatrix} e^{i\frac{\theta}{2}} & 0 \\ 0 & e^{-i\frac{\theta}{2}} \end{pmatrix}\end{split}\]
- add_RotInvX_gate(index: int, angle: float) None ¶
Add Pauli-X rotation gate
Notes
Matrix Representation
\[\begin{split}R_X(\theta) = \exp(i\frac{\theta}{2} X) = \begin{pmatrix} \cos(\frac{\theta}{2}) & i\sin(\frac{\theta}{2}) \\ i\sin(\frac{\theta}{2}) & \cos(\frac{\theta}{2}) \end{pmatrix}\end{split}\]
- add_RotInvY_gate(index: int, angle: float) None ¶
Add Pauli-Y rotation gate
Notes
Matrix Representation
\[\begin{split}R_Y(\theta) = \exp(i\frac{\theta}{2} Y) = \begin{pmatrix} \cos(\frac{\theta}{2}) & \sin(\frac{\theta}{2}) \\ -\sin(\frac{\theta}{2}) & \cos(\frac{\theta}{2}) \end{pmatrix}\end{split}\]
- add_RotInvZ_gate(index: int, angle: float) None ¶
Add Pauli-Z rotation gate
Notes
Matrix Representation
\[\begin{split}R_Z(\theta) = \exp(i\frac{\theta}{2} Z) = \begin{pmatrix} e^{i\frac{\theta}{2}} & 0 \\ 0 & e^{-i\frac{\theta}{2}} \end{pmatrix}\end{split}\]
- add_RotX_gate(index: int, angle: float) None ¶
Add Pauli-X rotation gate
Notes
Matrix Representation
\[\begin{split}RotX(\theta) = \exp(-i\frac{\theta}{2} X) = \begin{pmatrix} \cos(\frac{\theta}{2}) & -i\sin(\frac{\theta}{2}) \\ -i\sin(\frac{\theta}{2}) & \cos(\frac{\theta}{2}) \end{pmatrix}\end{split}\]
- add_RotY_gate(index: int, angle: float) None ¶
Add Pauli-Y rotation gate
Notes
Matrix Representation
\[\begin{split}RotY(\theta) = \exp(-i\frac{\theta}{2} Y) = \begin{pmatrix} \cos(\frac{\theta}{2}) & -\sin(\frac{\theta}{2}) \\ \sin(\frac{\theta}{2}) & \cos(\frac{\theta}{2}) \end{pmatrix}\end{split}\]
- add_RotZ_gate(index: int, angle: float) None ¶
Add Pauli-Z rotation gate
Notes
Matrix Representation
\[\begin{split}RotZ(\theta) = \exp(-i\frac{\theta}{2} Z) = \begin{pmatrix} e^{-i\frac{\theta}{2}} & 0 \\ 0 & e^{i\frac{\theta}{2}} \end{pmatrix}\end{split}\]
- add_SWAP_gate(target1: int, target2: int) None ¶
Add SWAP gate
- add_S_gate(index: int) None ¶
Add pi/4 phase gate
- add_Sdag_gate(index: int) None ¶
Add adjoint of pi/4 phsae gate
- add_T_gate(index: int) None ¶
Add pi/8 phase gate
- add_Tdag_gate(index: int) None ¶
Add adjoint of pi/8 phase gate
- add_U1_gate(index: int, lambda_: float) None ¶
Add QASM U1 gate
- add_U2_gate(index: int, phi: float, lambda_: float) None ¶
Add QASM U2 gate
- add_U3_gate(index: int, theta: float, phi: float, lambda_: float) None ¶
Add QASM U3 gate
- add_X_gate(index: int) None ¶
Add Pauli-X gate
- add_Y_gate(index: int) None ¶
Add Pauli-Y gate
- add_Z_gate(index: int) None ¶
Add Pauli-Z gate
- add_dense_matrix_gate(index: int, matrix: numpy.ndarray) None ¶
- add_dense_matrix_gate(index_list: list[int], matrix: numpy.ndarray) None
Add dense matrix gate
- add_diagonal_observable_rotation_gate(observable: Observable, angle: float) None ¶
Add diagonal observable rotation gate
- add_gate(gate: QuantumGateBase) None ¶
- add_gate(gate: QuantumGateBase, position: int) None
Add gate with copy
- add_multi_Pauli_gate(index_list: list[int], pauli_ids: list[int]) None ¶
- add_multi_Pauli_gate(pauli: PauliOperator) None
Add multi-qubit Pauli gate
- add_multi_Pauli_rotation_gate(index_list: list[int], pauli_ids: list[int], angle: float) None ¶
- add_multi_Pauli_rotation_gate(pauli: PauliOperator) None
Add multi-qubit Pauli rotation gate
- add_noise_gate(gate: QuantumGateBase, NoiseType: str, NoiseProbability: float) None ¶
Add noise gate with copy
- add_observable_rotation_gate(observable: Observable, angle: float, repeat: int) None ¶
Add observable rotation gate
- add_random_unitary_gate(index_list: list[int]) None ¶
- add_random_unitary_gate(index_list: list[int], seed: int) None
Add random unitary gate
- add_sqrtX_gate(index: int) None ¶
Add pi/4 Pauli-X rotation gate
- add_sqrtXdag_gate(index: int) None ¶
Add adjoint of pi/4 Pauli-X rotation gate
- add_sqrtY_gate(index: int) None ¶
Add pi/4 Pauli-Y rotation gate
- add_sqrtYdag_gate(index: int) None ¶
Add adjoint of pi/4 Pauli-Y rotation gate
- calculate_depth() int ¶
Calculate depth of circuit
- copy() QuantumCircuit ¶
Create copied instance
- get_gate(position: int) QuantumGateBase ¶
Get gate instance
- get_gate_count() int ¶
Get gate count
- get_inverse() QuantumCircuit ¶
get inverse circuit
- get_qubit_count() int ¶
Get qubit count
- merge_circuit(circuit: QuantumCircuit) None ¶
- remove_gate(position: int) None ¶
Remove gate
- to_json() str ¶
- to_string() str ¶
Get string representation
- update_quantum_state(state: QuantumStateBase) None ¶
- update_quantum_state(state: QuantumStateBase, start: int, end: int) None
- update_quantum_state(state: QuantumStateBase, seed: int) None
- update_quantum_state(state: QuantumStateBase, start: int, end: int, seed: int) None
Update quantum state
- class qulacs.QuantumCircuitSimulator(circuit: QuantumCircuit, state: QuantumStateBase)¶
- copy_state_from_buffer() None ¶
Copy buffer to state
- copy_state_to_buffer() None ¶
Copy state to buffer
- get_expectation_value(observable: Observable) complex ¶
Get expectation value
- get_gate_count() int ¶
Get gate count
- initialize_random_state() None ¶
- initialize_random_state(seed: int) None
Initialize state with random pure state
- initialize_state(arg0: int) None ¶
Initialize state
- simulate() None ¶
Simulate circuit
- simulate_range(start: int, end: int) None ¶
Simulate circuit
- swap_state_and_buffer() None ¶
Swap state and buffer
- class qulacs.QuantumGateBase¶
- copy() QuantumGateBase ¶
Create copied instance
- get_control_index_list() list[int] ¶
Get control qubit index list
- get_control_index_value_list() list[tuple[int, int]] ¶
Get control qubit pair index value list
- get_control_value_list() list[int] ¶
Get control qubit value list
- get_inverse() QuantumGateBase ¶
get inverse gate
- get_matrix() numpy.ndarray ¶
Get gate matrix
- get_name() str ¶
Get gate name
- get_target_index_list() list[int] ¶
Get target qubit index list
- is_Clifford() bool ¶
Check this gate is element of Clifford group
- is_Gaussian() bool ¶
Check this gate is element of Gaussian group
- is_Pauli() bool ¶
Check this gate is element of Pauli group
- is_commute(gate: QuantumGateBase) bool ¶
Check this gate commutes with a given gate
- is_diagonal() bool ¶
Check the gate matrix is diagonal
- is_parametric() bool ¶
Check this gate is parametric gate
- to_json() str ¶
to json string
- to_string() str ¶
to string
- update_quantum_state(state: QuantumStateBase) None ¶
Update quantum state
- class qulacs.QuantumGateDiagonalMatrix¶
Bases:
QuantumGateBase
- class qulacs.QuantumGateMatrix¶
Bases:
QuantumGateBase
- add_control_qubit(index: int, control_value: int) None ¶
Add control qubit
- multiply_scalar(value: complex) None ¶
Multiply scalar value to gate matrix
- class qulacs.QuantumGateSparseMatrix¶
Bases:
QuantumGateBase
- class qulacs.QuantumGate_Adaptive¶
Bases:
QuantumGateBase
- class qulacs.QuantumGate_CP¶
Bases:
QuantumGateBase
- get_gate_list() list[QuantumGateBase] ¶
get_gate_list
- class qulacs.QuantumGate_CPTP¶
Bases:
QuantumGateBase
QuantumGate_Instrument
- get_gate_list() list[QuantumGateBase] ¶
get_gate_list
- class qulacs.QuantumGate_Probabilistic¶
Bases:
QuantumGateBase
QuantumGate_ProbabilisticInstrument
- get_cumulative_distribution() list[float] ¶
get_cumulative_distribution
- get_distribution() list[float] ¶
get_distribution
- get_gate_list() list[QuantumGateBase] ¶
get_gate_list
- optimize_ProbablisticGate() None ¶
optimize_ProbablisticGate
- class qulacs.QuantumGate_SingleParameter¶
Bases:
QuantumGateBase
- copy() QuantumGate_SingleParameter ¶
Create copied instance
- get_parameter_value() float ¶
Get parameter value
- set_parameter_value(value: float) None ¶
Set parameter value
- class qulacs.QuantumState(qubit_count: int) QuantumState(qubit_count: int, use_multi_cpu: bool)¶
Bases:
QuantumStateBase
- add_state(state: QuantumStateBase) None ¶
Add state vector to this state
- allocate_buffer() QuantumState ¶
Allocate buffer with the same size
- copy() QuantumState ¶
Create copied instance
- get_amplitude(comp_basis: int) complex ¶
Get Amplitude of a specified computational basis
- get_classical_value(index: int) int ¶
Get classical value
- get_device_name() str ¶
Get allocated device name
- get_entropy() float ¶
Get entropy
- get_marginal_probability(measured_values: list[int]) float ¶
Get merginal probability for measured values
- get_qubit_count() int ¶
Get qubit count
- get_squared_norm() float ¶
Get squared norm
- get_vector() numpy.ndarray ¶
Get state vector
- get_zero_probability(index: int) float ¶
Get probability with which we obtain 0 when we measure a qubit
- load(state: QuantumStateBase) None ¶
- load(state: list[complex]) None
Load quantum state vector
- multiply_coef(coef: complex) None ¶
Multiply coefficient to this state
- multiply_elementwise_function(func: Callable[[int], complex]) None ¶
Multiply elementwise function
- normalize(squared_norm: float) None ¶
Normalize quantum state
- sampling(sampling_count: int) list[int] ¶
- sampling(sampling_count: int, random_seed: int) list[int]
Sampling measurement results
- set_Haar_random_state() None ¶
- set_Haar_random_state(seed: int) None
Set Haar random state
- set_classical_value(index: int, value: int) None ¶
Set classical value
- set_computational_basis(comp_basis: int) None ¶
Set state to computational basis
- to_json() str ¶
to json string
- to_string() str ¶
to string
- class qulacs.QuantumStateBase¶
- class qulacs.SimulationResult¶
- get_count() int ¶
get state count
- get_frequency(arg0: int) int ¶
get state frequency
- get_state(arg0: int) QuantumState ¶
get state
- qulacs.StateVector(arg0: int) QuantumState ¶
StateVector
- qulacs.check_build_for_mpi() bool ¶
- qulacs.to_general_quantum_operator(gate: QuantumGateBase, qubits: int, tol: float) GeneralQuantumOperator ¶