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:
QuantumGateBaseQuantumGate_Instrument
- get_gate_list() list[QuantumGateBase]¶
get_gate_list
- class qulacs.QuantumGate_Probabilistic¶
Bases:
QuantumGateBaseQuantumGate_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¶