pyqpanda.pyQPanda¶
Classes¶
quantum AbstractOptimizer class |
|
variational quantum AdaGradOptimizer |
|
variational quantum AdamOptimizer |
|
quantum ansatz class |
|
ansatz gate struct |
|
Quantum ansatz gate type |
|
Quantum machine backend type |
|
quantum classical bit |
|
quantum machine cpu |
|
quantum machine class for cpu single thread |
|
origin quantum real chip type |
|
Classical condition class Proxy class of cexpr class |
|
quantum ClassicalProg |
|
quantum complex vertex split method |
|
Quantum dag node type |
|
Quantum matrix decomposition mode |
|
simulator for density matrix |
|
Quantum double gate transfer type |
|
quantum amplitude encode |
|
pliot error code |
|
quantum fusion operation |
|
quantum gate type |
|
quantum hhl algorithm class |
|
Quantum latex gate type |
|
Generate quantum circuits latex src code can be compiled on latex package 'qcircuit' |
|
quantum matrix product state machine class |
|
variational quantum MomentumOptimizer |
|
Detailed information of a QProg node |
|
quantum node iter |
|
quantum node type |
|
Quantum machine for noise simulation |
|
noise model type |
|
quantum machine class for simulate noise prog |
|
variational quantum Optimizer class |
|
quantum OptimizerFactory class |
|
variational quantum OptimizerMode |
|
quantum OptimizerType |
|
origin quantum cmem |
|
A relatively free data collection class for saving data |
|
quantum qubit pool |
|
quantum partial amplitude machine class |
|
Physical Qubit abstract class |
|
pliot noise simulate params |
|
quantum circuit node |
|
Quantum circuit optimize mode |
|
Quantum QError Type |
|
quantum gate node |
|
quantum imaginary time evolution |
|
quantum if prog node |
|
Quantum machine type |
|
quantum measure node |
|
quantum operator class |
|
quantum QOptimizationResult class |
|
origin quantum pilot OS Machine |
|
Quantum program,can construct quantum circuit,data struct is linked list |
|
quantum prog dag class |
|
quantum prog dag edge |
|
quantum prog dag vertex node |
|
quantum reset node |
|
QResult abstract class, this class contains the result of the quantum measurement |
|
Qubit vector basic class |
|
quantum while node |
|
quantum machine base class |
|
quantum state tomography class |
|
Qubit abstract class |
|
variational quantum RMSPropOptimizer |
|
quantum single amplitude machine class |
|
Quantum single gate transfer type |
|
quantum sparse machine class |
|
simulator for basic clifford simulator |
|
quantum imaginary time evolution update mode |
|
variational quantum VanillaGradientDescentOptimizer |
|
variational quantum CIRCUIT class |
|
variational quantum gate base class |
|
variational quantum CNOT gate class |
|
variational quantum CR gate class |
|
variational quantum CRX gate class |
|
variational quantum CRY gate class |
|
variational quantum CRZ gate class |
|
variational quantum CU gate class |
|
variational quantum CZ gate class |
|
variational quantum H gate class |
|
variational quantum I gate class |
|
variational quantum RX gate class |
|
variational quantum RY gate class |
|
variational quantum RZ gate class |
|
variational quantum S gate class |
|
variational quantum SWAP gate class |
|
variational quantum SqiSWAP gate class |
|
variational quantum T gate class |
|
variational quantum U1 gate class |
|
variational quantum U2 gate class |
|
variational quantum U3 gate class |
|
variational quantum U4 gate class |
|
variational quantum X gate class |
|
variational quantum X1 gate class |
|
variational quantum Y gate class |
|
variational quantum Y1 gate class |
|
variational quantum Z gate class |
|
variational quantum Z1 gate class |
|
variational quantum iSWAP gate class |
|
origin quantum real chip error_mitigation type |
|
variational quantum expression class |
|
hadamard circuit class |
|
origin quantum real chip type enum |
|
quantum variational class |
Functions¶
|
Create a BARRIER gate for a list of qubit addresses. |
|
Returns: |
|
Returns: |
|
Returns: |
|
Create a CU gate. |
|
Returns: |
|
Create an empty QCircuit container. |
|
Create an empty QProg container. |
|
Create an IfProg that executes one of two quantum operations based on a classical condition. |
|
Create a WhileProg that executes while a classical condition is true. |
|
Quantum grover circuit |
use Grover algorithm to search target data, return QProg and search_result |
|
|
Create a H gate |
|
Use HHL algorithm to solve the target linear systems of equations : Ax = b |
|
Create a I gate |
|
Quantum adder MAJ module |
|
Quantum adder MAJ2 module |
|
Returns: |
|
Create a measure node. |
|
OPT_BMT mapping |
|
Create a P gate |
|
Deprecated, use pmeasure instead. |
|
Deprecated, use pmeasure_no_index instead. |
|
Quantum adder that supports signed operations, but ignore carry |
|
Quantum adder with carry |
|
Args: |
|
Convert quantum state to binary complement representation |
|
Quantum division |
|
Args: |
|
Quantum division, only supports positive division, and the highest position of a and b and c is sign bit |
|
Args: |
|
Returns: |
|
Build QFT quantum circuit |
|
Quantum multiplication |
|
Quantum multiplication, only supports positive multiplication |
|
Generate QOracle Gate. |
|
Quantum phase estimation |
|
Quantum subtraction |
|
Create a RX gate |
|
Create a RXX gate |
|
Create a RY gate |
|
Create a RYY gate |
|
Create a RZ gate |
|
Create a RZX gate |
|
Create a RZZ gate |
|
Create a Reset node. |
|
Create a S gate |
|
Returns: |
|
Use Shor factorize integer num |
|
Returns: |
|
Create a T gate |
|
Create a Toffoli gate. |
|
Create a U1 gate |
|
Create a U2 gate |
|
Create a U3 gate |
|
Create a U4 gate. |
|
Quantum adder UMA module |
|
variational quantum CNOT batch gates |
|
variational quantum CU batch gates |
|
variational quantum CZ batch gates |
|
variational quantum H batch gates |
|
variational quantum I batch gates |
|
variational quantum SWAP batch gates |
|
variational quantum S batch gates |
|
variational quantum SqiSWAP batch gates |
|
variational quantum T batch gates |
|
variational quantum U1 batch gates |
|
variational quantum U2 batch gates |
|
variational quantum U3 batch gates |
|
variational quantum U4 batch gates |
|
variational quantum X1 batch gates |
|
variational quantum X batch gates |
|
variational quantum Y1 batch gates |
|
variational quantum Y batch gates |
|
variational quantum Z1 batch gates |
|
variational quantum Z batch gates |
|
variational quantum iSWAP batch gates |
|
Create a X gate |
|
Create a X1 gate |
|
Create a Y gate |
|
Create a Y1 gate |
|
Create a Z gate |
|
Create a Z1 gate |
|
Accumulate the probability from a probability list. |
|
Accumulate the probability from a probability list. |
|
Accumulate the probability from a probability list. |
|
|
|
Add a bit size and a ClassicalCondition. |
|
Generate a graph representation for the max cut problem. |
Encode the input double data to the amplitude of qubits |
|
|
Apply a quantum gate operation to a list of qubit addresses. |
|
|
|
Assign a bit size value to a ClassicalCondition. |
|
|
Calculate the average gate fidelity between two quantum operation matrices. |
|
|
Parse binary data to transform into a quantum program. |
|
Args: |
|
Args: |
|
build the quantum circuit for HHL algorithm to solve the target linear systems of equations : Ax = b |
|
Allocate a CBit |
|
Allocate several CBits |
|
Free a CBit |
|
Free all CBits |
|
Cast a quantum program into a quantum circuit. |
|
Cast a quantum program into a quantum gate. |
|
Cast a quantum program into a quantum measurement. |
|
Quantum circuit layering. |
|
Optimize a quantum circuit. |
|
Optimize a quantum circuit using configuration data. |
|
Decode binary data into a list of quantum programs using the communication protocol. |
Encode a list of quantum programs into binary communication protocol data. |
|
|
Args: |
|
Args: |
|
Args: |
|
Parse binary data into a quantum program. |
|
Transform OriginIR string into QProg. |
|
Read an OriginIR file and transform it into QProg. |
|
Transform QASM string into QProg. |
|
Read a QASM file and transform it into QProg. |
Store the quantum program in a binary file. |
|
|
Convert QProg to OriginIR string. |
|
Convert a quantum program to a QASM instruction string. |
|
Convert QProg to Quil instruction. |
|
|
|
Count quantum gate number in the quantum circuit. |
Count quantum program information. |
|
Count quantum gate number in the quantum circuit. |
|
|
Create an empty QCircuit container. |
|
Create an empty QProg container. |
Create a classical quantum IfProg. |
|
|
Create a WhileProg. |
|
|
Decompose multiple control QGate. |
|
|
Create a deep copy of the given quantum program node. |
|
Delete weakly connected edges from the quantum program topology. |
|
Delete weakly connected edges from the quantum program topology. |
|
Delete weakly connected edges based on specified parameters. |
|
Destroy a quantum machine. |
|
Directly run a quantum program |
|
Divide a bit size by a ClassicalCondition. |
|
|
|
Convert a quantum prog/circuit to LaTeX representation, |
|
Convert a quantum prog/circuit to LaTeX source code with time sequence, |
|
Convert a quantum prog/circuit to text-pic (UTF-8 code), |
|
Convert a quantum prog/circuit to text-pic (UTF-8 code) with time sequence, |
|
|
|
Check if a bit size is equal to a ClassicalCondition. |
|
Evaluate topology performance. |
|
|
|
|
|
Calculate the matrix power of e. |
Extending linear equations to N dimension, N = 2 ^ n |
|
|
Fill the input quantum program with I gates and return a new quantum program. |
|
Finalize the environment and destroy global unique quantum machine. |
|
Special character conversion. |
|
Flatten a quantum circuit in place. |
|
Deprecated, use get_allocate_cmem_num instead. |
|
Deprecated, use get_allocate_qubit_num instead. |
|
Get the adjacent quantum gates' (the front one and the back one) type info from QProg. |
|
Get all the quantum bits used in the input program. |
|
Get the addresses of all used quantum bits in the input program. |
|
Get allocated cbits of QuantumMachine |
|
Get allocate cmem num. |
|
Get allocate qubit num. |
|
Get allocated qubits of QuantumMachine |
|
Get quantum program binary data. |
|
Transform a quantum program into a string representation. |
|
Retrieve the optimal topology of the input quantum circuit. |
|
Get quantum program clock cycle. |
|
Retrieve complex points from the given topology data. |
|
Retrieve the double gate block topology from the input quantum program. |
|
Get the target matrix between the input two NodeIters. |
|
Get pmeasure result as dict |
|
Get pmeasure result as list |
Count the number of quantum gates in a quantum program. |
|
|
Get Quantum Program Clock Cycle. |
|
|
|
Retrieve a subgraph from the provided topology data. |
|
Get pmeasure result as tuple list |
|
Get the target unitary matrix between the input two NodeIters. |
|
Count the number of unsupported gates in a quantum program. |
|
Get the status of the Quantum machine |
|
Returns: |
|
Init the global unique quantum machine at background. |
|
Create and initialize a new quantum machine, and let it be a globally unique quantum machine. |
|
|
|
Construct a circuit to determine if there is a carry |
|
Judge if the QGate matches the target topologic structure of the quantum circuit. |
|
Judge if the target node is a QGate type. |
|
Judge whether the specified two NodeIters in the quantum program can be exchanged. |
|
estimate the probability corresponding to the ground state |1> of the last bit |
|
Decompose a multiple control quantum gate using LDD. |
|
|
Matrix decomposition |
|
decompose matrix into paulis combination |
|
|
Create a list of measure nodes. |
|
Multiply a bit size by a ClassicalCondition. |
|
Read an OriginIR file and transform it into QProg. |
|
|
|
Perform planarity testing. |
|
Get the probability distribution over qubits. |
|
Get the probability distribution over qubits. |
|
|
|
Print matrix elements. |
|
Run quantum program and get pmeasure result as dict |
|
Run quantum program and get pmeasure result as list |
|
Run quantum program and get pmeasure result as tuple list |
|
Process the given quantum program layer. |
|
Convert a quantum program into a directed acyclic graph (DAG). |
|
Allocate a qubit |
|
Allocate several qubits |
|
Free a qubit |
|
Free a list of qubits |
|
|
|
|
|
Perform adaptive conversion for the quantum chip. |
|
Build quantum-walk algorithm quantum circuit |
|
Use Quantum-walk Algorithm to search target data, return QProg and search_result |
|
Quick measure. |
|
Generate a random quantum circuit. |
|
Generate a random quantum program. |
|
Recover edges using the specified candidate edges. |
|
Map the source quantum program to the target qubits. |
|
Replace complex points in the source topology with subgraphs. |
|
|
sabre mapping |
|
|
|
|
|
|
|
|
Split complex points into multiple discrete points. |
|
|
Compare a quantum state matrix with a quantum state and calculate their fidelity. |
|
|
Subtract a ClassicalCondition from a bit size. |
|
|
|
|
|
Transform QProg to Quil instruction. |
|
Transform QProg to OriginIR string. |
|
Judge whether a quantum program matches the topology of the physical qubits. |
|
Parse binary data to transform it into a quantum program. |
|
Transform OriginIR instruction from a file into a QProg. |
Save quantum program to file as binary data. |
|
|
Transform a quantum program into an OriginIR instruction string. |
|
Transform QProg to Quil instruction. |
Convert quantum gates to basic gates. |
|
|
transfrom pauli operator to matrix |
|
|
|
Get valid QGates and valid double bit QGate type. |
|
Get valid QGates and valid single bit QGate type. |
|
Compute the inner product of two vectors. |
|
virtual z transform |
Module Contents¶
- class pyqpanda.pyQPanda.AbstractOptimizer(*args, **kwargs)[源代码]¶
quantum AbstractOptimizer class
- exec() None [源代码]¶
Execute the optimization process.
- Args:
None: This method takes no parameters.
- Returns:
result: The result of the optimization process.
- getResult(*args, **kwargs) Any [源代码]¶
Retrieve the result of the last optimization.
- Args:
None: This method takes no parameters.
- Returns:
result: The result of the last optimization.
- registerFunc(arg0: Callable[[List[float], List[float], int, int], Tuple[str, float]], arg1: List[float]) None [源代码]¶
Register an optimization function.
- Args:
func: The optimization function to be registered.
- Returns:
None
- setAdaptive(arg0: bool) None [源代码]¶
Set whether the optimizer should use adaptive methods.
- Args:
adaptive: A boolean indicating whether to enable adaptive optimization.
- Returns:
None
- setCacheFile(arg0: str) None [源代码]¶
Set the path for the cache file used in optimization.
- Args:
cache_file: A string representing the path to the cache file.
- Returns:
None
- setDisp(arg0: bool) None [源代码]¶
Set the display flag for the optimizer.
- Args:
disp: A boolean indicating whether to display optimization progress.
- Returns:
None
- setFatol(arg0: float) None [源代码]¶
Set the function absolute tolerance for optimization.
- Args:
fatol: The function absolute tolerance value to be set.
- Returns:
None
- setMaxFCalls(arg0: int) None [源代码]¶
Set the maximum number of function calls allowed during optimization.
- Args:
max_calls: The maximum number of function calls to be set.
- Returns:
None
- setMaxIter(arg0: int) None [源代码]¶
Set the maximum number of iterations allowed during optimization.
- Args:
max_iter: The maximum number of iterations to be set.
- Returns:
None
- class pyqpanda.pyQPanda.AdaGradOptimizer(arg0: var, arg1: float, arg2: float, arg3: float)[源代码]¶
variational quantum AdaGradOptimizer
- class pyqpanda.pyQPanda.AdamOptimizer(arg0: var, arg1: float, arg2: float, arg3: float, arg4: float)[源代码]¶
variational quantum AdamOptimizer
- class pyqpanda.pyQPanda.Ansatz[源代码]¶
- class pyqpanda.pyQPanda.Ansatz(arg0: QGate)
- class pyqpanda.pyQPanda.Ansatz(arg0: AnsatzGate)
- class pyqpanda.pyQPanda.Ansatz(ansatz: List[AnsatzGate], thetas: List[float] = [])
- class pyqpanda.pyQPanda.Ansatz(ansatz_circuit: Ansatz, thetas: List[float] = [])
- class pyqpanda.pyQPanda.Ansatz(circuit: QCircuit, thetas: List[float] = [])
quantum ansatz class
- get_ansatz_list() List[AnsatzGate] [源代码]¶
- insert(gate: QGate) None [源代码]¶
- insert(gate: AnsatzGate) None
- insert(gate: List[AnsatzGate]) None
- insert(gate: QCircuit) None
- insert(gate: Ansatz, thetas: List[float] = []) None
- class pyqpanda.pyQPanda.AnsatzGate(arg0: AnsatzGateType, arg1: int)[源代码]¶
- class pyqpanda.pyQPanda.AnsatzGate(arg0: AnsatzGateType, arg1: int, arg2: float)
- class pyqpanda.pyQPanda.AnsatzGate(arg0: AnsatzGateType, arg1: int, arg2: float, arg3: int)
ansatz gate struct
- type: AnsatzGateType[源代码]¶
- class pyqpanda.pyQPanda.AnsatzGateType(value: int)[源代码]¶
Quantum ansatz gate type
Members:
AGT_X
AGT_H
AGT_RX
AGT_RY
AGT_RZ
- AGT_H: ClassVar[AnsatzGateType] = Ellipsis[源代码]¶
- AGT_RX: ClassVar[AnsatzGateType] = Ellipsis[源代码]¶
- AGT_RY: ClassVar[AnsatzGateType] = Ellipsis[源代码]¶
- AGT_RZ: ClassVar[AnsatzGateType] = Ellipsis[源代码]¶
- AGT_X: ClassVar[AnsatzGateType] = Ellipsis[源代码]¶
- class pyqpanda.pyQPanda.BackendType(value: int)[源代码]¶
Quantum machine backend type
Members:
CPU
GPU
CPU_SINGLE_THREAD
NOISE
MPS
- CPU: ClassVar[BackendType] = Ellipsis[源代码]¶
- CPU_SINGLE_THREAD: ClassVar[BackendType] = Ellipsis[源代码]¶
- GPU: ClassVar[BackendType] = Ellipsis[源代码]¶
- MPS: ClassVar[BackendType] = Ellipsis[源代码]¶
- NOISE: ClassVar[BackendType] = Ellipsis[源代码]¶
- class pyqpanda.pyQPanda.CPUQVM[源代码]¶
Bases:
QuantumMachine
quantum machine cpu
- get_prob_dict(qubit_list: QVec, select_max: int = -1) Dict[str, float] [源代码]¶
Get a dictionary of probabilities for the specified qubits.
- Args:
qubit_list: List of qubits to measure.
select_max: int, optional, maximum number of entries to return (default: -1).
- Returns:
Dictionary of probabilities as a reference.
- get_prob_list(qubit_list: QVec, select_max: int = -1) List[float] [源代码]¶
Get a list of probabilities for the specified qubits.
- Args:
qubit_list: List of qubits to measure.
select_max: int, optional, maximum number of probabilities to return (default: -1).
- Returns:
List of probabilities as a reference.
- get_prob_tuple_list(qubit_list: QVec, select_max: int = -1) List[Tuple[int, float]] [源代码]¶
Get a list of probability tuples for the specified qubits.
- Args:
qubit_list: List of qubits to measure.
select_max: int, optional, maximum number of tuples to return (default: -1).
- Returns:
List of probability tuples as a reference.
- init_qvm(arg0: bool) None [源代码]¶
- init_qvm() None
Initialize the quantum virtual machine (QVM).
This method sets up the necessary environment for the QVM to execute quantum programs.
- Returns:
None: This method does not return a value.
- pmeasure(qubit_list: QVec, select_max: int = -1) List[Tuple[int, float]] [源代码]¶
Get the probability distribution over qubits.
- Args:
qubit_list: List of qubits to measure.
select_max: int, optional, maximum number of results to select (default: -1).
- Returns:
Probability distribution as a reference.
- pmeasure_no_index(qubit_list: QVec) List[float] [源代码]¶
Get the probability distribution over qubits without index.
- Args:
qubit_list: List of qubits to measure.
- Returns:
Probability distribution as a reference.
- prob_run_dict(program: QProg, qubit_list: QVec, select_max: int = -1) Dict[str, float] [源代码]¶
- prob_run_dict(program: QProg, qubit_addr_list: List[int], select_max: int = -1) Dict[str, float]
Execute a quantum program and retrieve a dictionary of probabilities using qubit addresses.
- Args:
program: The quantum program to execute.
qubit_addr_list: List of qubit addresses to measure.
select_max: int, optional, maximum number of entries in the dictionary to return (default: -1).
- Returns:
Dictionary of probabilities.
- prob_run_list(program: QProg, qubit_list: QVec, select_max: int = -1) List[float] [源代码]¶
- prob_run_list(program: QProg, qubit_addr_list: List[int], select_max: int = -1) List[float]
Execute a quantum program and retrieve a list of probabilities using qubit addresses.
- Args:
program: The quantum program to execute.
qubit_addr_list: List of qubit addresses to measure.
select_max: int, optional, maximum number of probabilities to return (default: -1).
- Returns:
List of probabilities.
- prob_run_tuple_list(program: QProg, qubit_list: QVec, select_max: int = -1) List[Tuple[int, float]] [源代码]¶
- prob_run_tuple_list(program: QProg, qubit_addr_list: List[int], select_max: int = -1) List[Tuple[int, float]]
Execute a quantum program and get a list of probability tuples using qubit addresses.
- Args:
program: The quantum program to execute.
qubit_addr_list: List of qubit addresses to measure.
select_max: int, optional, maximum number of tuples to return (default: -1).
- Returns:
List of probability tuples.
- class pyqpanda.pyQPanda.CPUSingleThreadQVM[源代码]¶
Bases:
QuantumMachine
quantum machine class for cpu single thread
- get_prob_dict(qubit_list: QVec, select_max: int = -1) Dict[str, float] [源代码]¶
Get a dictionary of probabilities for the specified qubits.
- Args:
qubit_list: List of qubits to measure.
select_max: int, optional, maximum number of entries to return (default: -1).
- Returns:
Dictionary of probabilities as a reference.
- get_prob_list(qubit_list: QVec, select_max: int = -1) List[float] [源代码]¶
Get a list of probabilities for the specified qubits.
- Args:
qubit_list: List of qubits to measure.
select_max: int, optional, maximum number of probabilities to return (default: -1).
- Returns:
List of probabilities as a reference.
- get_prob_tuple_list(qubit_list: QVec, select_max: int = -1) List[Tuple[int, float]] [源代码]¶
Get a list of probability tuples for the specified qubits.
- Args:
qubit_list: List of qubits to measure.
select_max: int, optional, maximum number of tuples to return (default: -1).
- Returns:
List of probability tuples as a reference.
- pmeasure(qubit_list: QVec, select_max: int = -1) List[Tuple[int, float]] [源代码]¶
Get the probability distribution over qubits.
- Args:
qubit_list: List of qubits to measure.
select_max: int, optional, maximum number of results to select (default: -1).
- Returns:
Probability distribution as a reference.
- pmeasure_no_index(qubit_list: QVec) List[float] [源代码]¶
Get the probability distribution over qubits without index.
- Args:
qubit_list: List of qubits to measure.
- Returns:
Probability distribution as a reference.
- prob_run_dict(program: QProg, qubit_list: QVec, select_max: int = -1) Dict[str, float] [源代码]¶
- prob_run_dict(program: QProg, qubit_addr_list: List[int], select_max: int = -1) Dict[str, float]
Execute a quantum program and retrieve a dictionary of probabilities using qubit addresses.
- Args:
program: The quantum program to execute.
qubit_addr_list: List of qubit addresses to measure.
select_max: int, optional, maximum number of entries in the dictionary to return (default: -1).
- Returns:
Dictionary of probabilities.
- prob_run_list(program: QProg, qubit_list: QVec, select_max: int = -1) List[float] [源代码]¶
- prob_run_list(program: QProg, qubit_addr_list: List[int], select_max: int = -1) List[float]
Execute a quantum program and retrieve a list of probabilities using qubit addresses.
- Args:
program: The quantum program to execute.
qubit_addr_list: List of qubit addresses to measure.
select_max: int, optional, maximum number of probabilities to return (default: -1).
- Returns:
List of probabilities.
- prob_run_tuple_list(program: QProg, qubit_list: QVec, select_max: int = -1) List[Tuple[int, float]] [源代码]¶
- prob_run_tuple_list(program: QProg, qubit_addr_list: List[int], select_max: int = -1) List[Tuple[int, float]]
Execute a quantum program and get a list of probability tuples using qubit addresses.
- Args:
program: The quantum program to execute.
qubit_addr_list: List of qubit addresses to measure.
select_max: int, optional, maximum number of tuples to return (default: -1).
- Returns:
List of probability tuples.
- class pyqpanda.pyQPanda.ChipID(value: int)[源代码]¶
origin quantum real chip type
Members:
Simulation
WUYUAN_1
WUYUAN_2
WUYUAN_3
- class pyqpanda.pyQPanda.ClassicalCondition(*args, **kwargs)[源代码]¶
Classical condition class Proxy class of cexpr class
- c_and(arg0: int) ClassicalCondition [源代码]¶
- c_and(arg0: ClassicalCondition) ClassicalCondition
Perform a logical AND operation with another ClassicalCondition.
- Args:
other: Another ClassicalCondition to perform AND with.
- Returns:
The result of the AND operation.
- c_not() ClassicalCondition [源代码]¶
Perform a logical NOT operation on the classical condition.
- Args:
None
- Returns:
The result of the NOT operation.
- c_or(arg0: int) ClassicalCondition [源代码]¶
- c_or(arg0: ClassicalCondition) ClassicalCondition
Perform a logical OR operation with another ClassicalCondition.
- Args:
other: Another ClassicalCondition to perform OR with.
- Returns:
The result of the OR operation.
- class pyqpanda.pyQPanda.ClassicalProg(arg0: ClassicalCondition)[源代码]¶
quantum ClassicalProg
- class pyqpanda.pyQPanda.ComplexVertexSplitMethod(value: int)[源代码]¶
quantum complex vertex split method
Members:
METHOD_UNDEFINED
LINEAR
RING
- LINEAR: ClassVar[ComplexVertexSplitMethod] = Ellipsis[源代码]¶
- METHOD_UNDEFINED: ClassVar[ComplexVertexSplitMethod] = Ellipsis[源代码]¶
- RING: ClassVar[ComplexVertexSplitMethod] = Ellipsis[源代码]¶
- class pyqpanda.pyQPanda.DAGNodeType(value: int)[源代码]¶
Quantum dag node type
Members:
NUKNOW_SEQ_NODE_TYPE
MAX_GATE_TYPE
MEASURE
QUBIT
RESET
- MAX_GATE_TYPE: ClassVar[DAGNodeType] = Ellipsis[源代码]¶
- MEASURE: ClassVar[DAGNodeType] = Ellipsis[源代码]¶
- NUKNOW_SEQ_NODE_TYPE: ClassVar[DAGNodeType] = Ellipsis[源代码]¶
- QUBIT: ClassVar[DAGNodeType] = Ellipsis[源代码]¶
- RESET: ClassVar[DAGNodeType] = Ellipsis[源代码]¶
- class pyqpanda.pyQPanda.DecompositionMode(value: int)[源代码]¶
Quantum matrix decomposition mode
Members:
QR
HOUSEHOLDER_QR
QSDecomposition
CSDecomposition
- CSDecomposition: ClassVar[DecompositionMode] = Ellipsis[源代码]¶
- HOUSEHOLDER_QR: ClassVar[DecompositionMode] = Ellipsis[源代码]¶
- QR: ClassVar[DecompositionMode] = Ellipsis[源代码]¶
- QSDecomposition: ClassVar[DecompositionMode] = Ellipsis[源代码]¶
- class pyqpanda.pyQPanda.DensityMatrixSimulator[源代码]¶
Bases:
QuantumMachine
simulator for density matrix
- get_density_matrix(prog: QProg) numpy.ndarray[numpy.complex128[m, n]] [源代码]¶
Run quantum program and get the full density matrix.
- Args:
prog: The quantum program to execute.
- Returns:
The full density matrix.
- get_expectation(prog: QProg, hamiltonian: List[Tuple[Dict[int, str], float]], qubits: QVec) float [源代码]¶
- get_expectation(prog: QProg, hamiltonian: List[Tuple[Dict[int, str], float]], qubits: List[int]) float
Run the quantum program and calculate the Hamiltonian expectation for the specified qubits.
- Args:
prog: The quantum program to execute.
hamiltonian: The QHamiltonian to use for the expectation value.
qubits: The selected qubits for measurement.
- Returns:
The Hamiltonian expectation for the specified qubits.
- get_probabilities(prog: QProg) List[float] [源代码]¶
- get_probabilities(prog: QProg, qubits: QVec) List[float]
- get_probabilities(prog: QProg, qubits: List[int]) List[float]
- get_probabilities(prog: QProg, indices: List[str]) List[float]
Run the quantum program and get the probabilities for the specified binary indices.
- Args:
prog: The quantum program to execute.
indices: The selected binary indices for measurement.
- Returns:
The probabilities result of the quantum program.
- get_probability(prog: QProg, index: int) float [源代码]¶
- get_probability(prog: QProg, index: str) float
Run the quantum program and get the probability for the specified index.
- Args:
prog: The quantum program to execute.
index: The measurement index in [0, 2^N 1].
- Returns:
The probability result of the quantum program.
- get_reduced_density_matrix(prog: QProg, qubits: QVec) numpy.ndarray[numpy.complex128[m, n]] [源代码]¶
- get_reduced_density_matrix(prog: QProg, qubits: List[int]) numpy.ndarray[numpy.complex128[m, n]]
Run quantum program and get the density matrix for current qubits.
- Args:
prog: The quantum program to execute.
qubits: The selected qubits from the quantum program.
- Returns:
The density matrix for the specified qubits.
- set_noise_model(arg0: numpy.ndarray[numpy.complex128[m, n]]) None [源代码]¶
- set_noise_model(arg0: numpy.ndarray[numpy.complex128[m, n]], arg1: List[GateType]) None
- set_noise_model(arg0: List[numpy.ndarray[numpy.complex128[m, n]]]) None
- set_noise_model(arg0: List[numpy.ndarray[numpy.complex128[m, n]]], arg1: List[GateType]) None
- set_noise_model(arg0: NoiseModel, arg1: GateType, arg2: float) None
- set_noise_model(arg0: NoiseModel, arg1: List[GateType], arg2: float) None
- set_noise_model(arg0: NoiseModel, arg1: GateType, arg2: float, arg3: QVec) None
- set_noise_model(arg0: NoiseModel, arg1: List[GateType], arg2: float, arg3: QVec) None
- set_noise_model(arg0: NoiseModel, arg1: GateType, arg2: float, arg3: List[QVec]) None
- set_noise_model(arg0: NoiseModel, arg1: GateType, arg2: float, arg3: float, arg4: float) None
- set_noise_model(arg0: NoiseModel, arg1: List[GateType], arg2: float, arg3: float, arg4: float) None
- set_noise_model(arg0: NoiseModel, arg1: GateType, arg2: float, arg3: float, arg4: float, arg5: QVec) None
- set_noise_model(arg0: NoiseModel, arg1: List[GateType], arg2: float, arg3: float, arg4: float, arg5: QVec) None
- set_noise_model(arg0: NoiseModel, arg1: GateType, arg2: float, arg3: float, arg4: float, arg5: List[QVec]) None
Set a specific noise model for the density matrix simulator with a given gate type, probability, duration, temperature, and multiple target qubits.
- Args:
noise_model: The noise model to apply.
gate_type: The specific gate type associated with the noise model.
probability: The probability of the noise occurring.
duration: The duration for which the noise model is applied.
temperature: The temperature affecting the noise characteristics.
target_qubits: A vector of qubits targeted by the noise model.
- Returns:
None.
- class pyqpanda.pyQPanda.DoubleGateTransferType(value: int)[源代码]¶
Quantum double gate transfer type
Members:
DOUBLE_GATE_INVALID
DOUBLE_BIT_GATE
- DOUBLE_BIT_GATE: ClassVar[DoubleGateTransferType] = Ellipsis[源代码]¶
- DOUBLE_GATE_INVALID: ClassVar[DoubleGateTransferType] = Ellipsis[源代码]¶
- class pyqpanda.pyQPanda.Encode[源代码]¶
quantum amplitude encode
- amplitude_encode(qubit: QVec, data: List[float]) None [源代码]¶
- amplitude_encode(qubit: QVec, data: List[complex]) None
Perform amplitude encoding using complex numbers on the given qubits.
- Args:
qubit: The quantum vector to be encoded.
data: The classical complex data to be encoded.
- Returns:
An encoded quantum state.
- amplitude_encode_recursive(qubit: QVec, data: List[float]) None [源代码]¶
- amplitude_encode_recursive(qubit: QVec, data: List[complex]) None
Encode by amplitude recursively.
- Args:
QVec: qubits
QStat: amplitude
- Returns:
circuit
- angle_encode(qubit: QVec, data: List[float], gate_type: GateType = GateType.RY_GATE) None [源代码]¶
Encode by angle.
- Args:
QVec: qubits
prob_vec: data
- Returns:
circuit.
- approx_mps(qubit: QVec, data: List[float], layers: int = 3, sweeps: int = 100, double2float: bool = False) None [源代码]¶
- approx_mps(qubit: QVec, data: List[complex], layers: int = 3, sweeps: int = 100) None
Approximate Matrix Product State encoding.
- Args:
QVec: qubits
std::vector<qcomplex_t>: input data
int: number of layers (default: 3)
int: number of steps (default: 100)
- Returns:
Encoded circuit.
- basic_encode(qubit: QVec, data: str) None [源代码]¶
Basic encoding.
- Args:
QVec: qubits
string: data
- Returns:
circuit
- bid_amplitude_encode(qubit: QVec, data: List[float], split: int = 0) None [源代码]¶
Encode by bid.
- Args:
QVec: qubits
QStat: amplitude
split: int
- Returns:
circuit
- dc_amplitude_encode(qubit: QVec, data: List[float]) None [源代码]¶
Encode by DC amplitude.
- Args:
QVec: qubits
QStat: amplitude
- Returns:
circuit
- dense_angle_encode(qubit: QVec, data: List[float]) None [源代码]¶
Encode by dense angle.
- Args:
QVec: qubits
prob_vec: data
- Returns:
circuit
- ds_quantum_state_preparation(qubit: QVec, data: Dict[str, float]) None [源代码]¶
- ds_quantum_state_preparation(qubit: QVec, data: Dict[str, complex]) None
- ds_quantum_state_preparation(qubit: QVec, data: List[float]) None
- ds_quantum_state_preparation(qubit: QVec, data: List[complex]) None
Prepare a quantum state.
- Args:
QVec: qubits
std::vector<std::complex<double>>: state parameters
- Returns:
circuit
- efficient_sparse(qubit: QVec, data: Dict[str, float]) None [源代码]¶
- efficient_sparse(qubit: QVec, data: Dict[str, complex]) None
- efficient_sparse(qubit: QVec, data: List[float]) None
- efficient_sparse(qubit: QVec, data: List[complex]) None
Perform an efficient sparse operation.
- Args:
QVec: qubits
std::vector<std::complex<double>>: parameters for the operation
- Returns:
circuit
- get_circuit() QCircuit [源代码]¶
Retrieve the circuit from the encoder.
- Returns:
The corresponding circuit object.
- get_fidelity(data: List[float]) float [源代码]¶
- get_fidelity(data: List[complex]) float
- get_fidelity(data: List[float]) float
Calculate the fidelity based on the provided float data.
- Args:
data: A vector of floats representing the input data.
- Returns:
The calculated fidelity value.
- get_out_qubits() QVec [源代码]¶
Retrieve the output qubits from the encoder.
- Returns:
A vector of output qubits.
- iqp_encode(qubit: QVec, data: List[float], control_list: List[Tuple[int, int]] = [], bool_inverse: bool = False, repeats: int = 1) None [源代码]¶
Encode by IQP.
- Args:
QVec: qubits
prob_vec: data
list: control_list
bool: bool_inverse
int: repeats
- Returns:
circuit.
- schmidt_encode(qubit: QVec, data: List[float], cutoff: float) None [源代码]¶
Encode by schmidt.
- Args:
QVec: qubits
QStat: amplitude
double: cutoff
- Returns:
circuit
- sparse_isometry(qubit: QVec, data: Dict[str, float]) None [源代码]¶
- sparse_isometry(qubit: QVec, data: Dict[str, complex]) None
- sparse_isometry(qubit: QVec, data: List[float]) None
- sparse_isometry(qubit: QVec, data: List[complex]) None
Perform a sparse isometry operation.
- Args:
QVec: qubits
std::vector<std::complex<double>>: parameters for the isometry
- Returns:
circuit
- class pyqpanda.pyQPanda.ErrorCode(value: int)[源代码]¶
pliot error code
Members:
NO_ERROR_FOUND
DATABASE_ERROR
ORIGINIR_ERROR
JSON_FIELD_ERROR
BACKEND_CALC_ERROR
ERR_TASK_BUF_OVERFLOW
EXCEED_MAX_QUBIT
ERR_UNSUPPORT_BACKEND_TYPE
EXCEED_MAX_CLOCK
ERR_UNKNOW_TASK_TYPE
ERR_QVM_INIT_FAILED
ERR_QCOMPILER_FAILED
ERR_PRE_ESTIMATE
ERR_MATE_GATE_CONFIG
ERR_FIDELITY_MATRIX
ERR_QST_PROG
ERR_EMPTY_PROG
ERR_QUBIT_SIZE
ERR_QUBIT_TOPO
ERR_QUANTUM_CHIP_PROG
ERR_REPEAT_MEASURE
ERR_OPERATOR_DB
ERR_TASK_STATUS_BUF_OVERFLOW
ERR_BACKEND_CHIP_TASK_SOCKET_WRONG
CLUSTER_SIMULATE_CALC_ERR
ERR_SCHEDULE_CHIP_TOPOLOGY_SUPPORTED
ERR_TASK_CONFIG
ERR_NOT_FOUND_APP_ID
ERR_NOT_FOUND_TASK_ID
ERR_PARSER_SUB_TASK_RESULT
ERR_SYS_CALL_TIME_OUT
ERR_TASK_TERMINATED
ERR_INVALID_URL
ERR_PARAMETER
ERR_QPROG_LENGTH
ERR_CHIP_OFFLINE
UNDEFINED_ERROR
ERR_SUB_GRAPH_OUT_OF_RANGE
ERR_TCP_INIT_FATLT
ERR_TCP_SERVER_HALT
CLUSTER_BASE
- class pyqpanda.pyQPanda.GateType(value: int)[源代码]¶
quantum gate type
Members:
GATE_NOP
GATE_UNDEFINED
P0_GATE
P1_GATE
PAULI_X_GATE
PAULI_Y_GATE
PAULI_Z_GATE
X_HALF_PI
Y_HALF_PI
Z_HALF_PI
HADAMARD_GATE
T_GATE
S_GATE
P_GATE
CP_GATE
RX_GATE
RY_GATE
RZ_GATE
RXX_GATE
RYY_GATE
RZZ_GATE
RZX_GATE
U1_GATE
U2_GATE
U3_GATE
U4_GATE
CU_GATE
CNOT_GATE
CZ_GATE
MS_GATE
CPHASE_GATE
ISWAP_THETA_GATE
ISWAP_GATE
SQISWAP_GATE
SWAP_GATE
TWO_QUBIT_GATE
P00_GATE
P11_GATE
TOFFOLI_GATE
ORACLE_GATE
I_GATE
BARRIER_GATE
RPHI_GATE
- class pyqpanda.pyQPanda.HHLAlg(arg0: QuantumMachine)[源代码]¶
quantum hhl algorithm class
- class pyqpanda.pyQPanda.LATEX_GATE_TYPE(value: int)[源代码]¶
Quantum latex gate type
Members:
GENERAL_GATE
CNOT_GATE
SWAP_GATE
- CNOT_GATE: ClassVar[LATEX_GATE_TYPE] = Ellipsis[源代码]¶
- GENERAL_GATE: ClassVar[LATEX_GATE_TYPE] = Ellipsis[源代码]¶
- SWAP_GATE: ClassVar[LATEX_GATE_TYPE] = Ellipsis[源代码]¶
- class pyqpanda.pyQPanda.LatexMatrix[源代码]¶
Generate quantum circuits latex src code can be compiled on latex package ‘qcircuit’ circuits element treated as matrix element in latex syntax
qcircuit package tutorial [https://physics.unm.edu/CQuIC/Qcircuit/Qtutorial.pdf]
- insert_barrier(rows: List[int], from_col: int) int [源代码]¶
Insert a barrier into the circuit.
- Args:
rows: The rows of the LaTeX matrix where the barrier is applied.
from_col: Desired column position for the barrier; if space is insufficient, a suitable column will be found.
- Returns:
int: Actual column number where the barrier is placed.
- insert_gate(target_rows: List[int], ctrl_rows: List[int], from_col: int, gate_type: LATEX_GATE_TYPE, gate_name: str = '', dagger: bool = False, param: str = '') int [源代码]¶
Insert a gate into the circuit.
- Args:
target_rows: Gate target rows of the LaTeX matrix.
ctrl_rows: Control rows for the gate.
from_col: Desired column position for the gate; if space is insufficient, a suitable column will be found.
gate_type: Enum type of LATEX_GATE_TYPE.
gate_name: Name of the gate (default: ‘’).
dagger: Flag indicating if the gate is a dagger (default: false).
param: Parameter string for the gate (default: ‘’).
- Returns:
int: Actual column number where the gate is placed.
- insert_measure(q_row: int, c_row: int, from_col: int) int [源代码]¶
Insert a measurement operation into the circuit.
- Args:
q_row: The row of the qubit being measured.
c_row: The row of the classical bit that will store the measurement result.
from_col: The desired column position for the measurement.
- Returns:
None, as the function modifies the matrix in place.
- insert_reset(q_row: int, from_col: int) int [源代码]¶
Insert a reset operation into the circuit.
- Args:
q_row: The row of the qubit to be reset.
from_col: The desired column position for the reset.
- Returns:
None, as the function modifies the matrix in place.
- insert_timeseq(t_col: int, time_seq: int) None [源代码]¶
Insert a time sequence into the circuit.
- Args:
t_col: The column position where the time sequence will be inserted.
time_seq: The time sequence data to be inserted.
- Warning:
This function does not check for column number validity, which may cause overwriting.
Users must ensure the column number is managed correctly to avoid conflicts.
- set_label(qubit_label: Dict[int, str], cbit_label: Dict[int, str] = {}, time_seq_label: str = '', head: bool = True) None [源代码]¶
Set label at the leftmost head column or rightmost tail column. Labels can be reset at any time.
- Args:
qubit_label: Label for the qubit wire’s leftmost head label, specified in LaTeX syntax.If not given, the row will remain empty (e.g., {0: ‘q_{1}’, 2:’q_{2}’}).
cbit_label: Classic label string, supports LaTeX formatting.
time_seq_label: If given, sets the time sequence label.
head: If true, appends the label at the head; if false, appends at the tail.
- Returns:
None, as the function modifies the matrix in place.
- set_logo(logo: str = '') None [源代码]¶
Add a logo string.
- Args:
logo: The logo string to be added. If not provided, the logo will be set to an empty string.
- Returns:
None, as the function modifies the matrix in place.
- str(with_time: bool = False) str [源代码]¶
Return the final LaTeX source code representation of the matrix.
- Args:
with_time: A boolean flag indicating whether to include timing information in the output.
- Returns:
str: The LaTeX source code as a string. This method can be called at any time to obtain the current state of the matrix.
- class pyqpanda.pyQPanda.MPSQVM[源代码]¶
Bases:
QuantumMachine
quantum matrix product state machine class
- add_single_noise_model(arg0: NoiseModel, arg1: GateType, arg2: float) None [源代码]¶
- add_single_noise_model(arg0: NoiseModel, arg1: GateType, arg2: float, arg3: float, arg4: float) None
Add a noise model to a specific gate with multiple error rates.
- Args:
noise_model: NOISE_MODEL, the type of noise model to apply.
gate_type: GateType, the type of gate affected by the noise.
error_rate_1: float, the first error rate.
error_rate_2: float, the second error rate.
error_rate_3: float, the third error rate.
- Returns:
None.
- get_prob_dict(qubit_list: QVec, select_max: int = -1) Dict[str, float] [源代码]¶
Get pmeasure result as dict.
- Args:
qubit_list: List of qubits for pmeasure.
select_max: Maximum number of returned elements in the result tuple; should be in [-1, 1<<len(qubit_list)]. Default is -1, meaning no limit.
- Returns:
Measure result of the quantum machine.
- get_prob_list(qubit_list: QVec, select_max: int = -1) List[float] [源代码]¶
Get pmeasure result as list.
- Args:
qubit_list: List of qubits for pmeasure.
select_max: Maximum number of returned elements in the result tuple; should be in [-1, 1<<len(qubit_list)]. Default is -1, meaning no limit.
- Returns:
Measure result of the quantum machine.
- get_prob_tuple_list(qubit_list: QVec, select_max: int = -1) List[Tuple[int, float]] [源代码]¶
Get pmeasure result as list.
- Args:
qubit_list: List of qubits for pmeasure.
select_max: Maximum number of returned elements in the result tuple; should be in [-1, 1<<len(qubit_list)]. Default is -1, meaning no limit.
- Returns:
Measure result of the quantum machine.
- pmeasure(qubit_list: QVec, select_max: int = -1) List[Tuple[int, float]] [源代码]¶
Get the probability distribution over qubits.
- Args:
qubit_list: List of qubits to measure.
select_max: Maximum number of returned elements in the result tuple; should be in [-1, 1<<len(qubit_list)]. Default is -1, which means no limit.
- Returns:
Measure result of the quantum machine in tuple form.
- pmeasure_bin_index(program: QProg, string: str) complex [源代码]¶
Get pmeasure bin index quantum state amplitude.
- Args:
string: Bin string.
- Returns:
Complex: Bin amplitude.
- pmeasure_bin_subset(program: QProg, string_list: List[str]) List[complex] [源代码]¶
Get pmeasure quantum state amplitude subset.
- Args:
list: List of bin state strings.
- Returns:
List: Bin amplitude result list.
- pmeasure_dec_index(program: QProg, string: str) complex [源代码]¶
Get pmeasure decimal index quantum state amplitude.
- Args:
string: Decimal string.
- Returns:
Complex: Decimal amplitude.
- pmeasure_dec_subset(program: QProg, string_list: List[str]) List[complex] [源代码]¶
Get pmeasure quantum state amplitude subset.
- Args:
list: List of decimal state strings.
- Returns:
List: Decimal amplitude result list.
- pmeasure_no_index(qubit_list: QVec) List[float] [源代码]¶
Get the probability distribution over qubits.
- Args:
qubit_list: List of qubits to measure.
- Returns:
Measure result of the quantum machine in list form.
- prob_run_dict(program: QProg, qubit_list: QVec, select_max: int = -1) Dict[str, float] [源代码]¶
Run quantum program and get pmeasure result as dict. Args:
program: Quantum program to run.
qubit_list: List of qubits for pmeasure.
select_max: Maximum number of returned elements in the result; should be in [-1, 1<<len(qubit_list)]. Default is -1, meaning no limit.
- Returns:
Measure result of the quantum machine.
- prob_run_list(program: QProg, qubit_list: QVec, select_max: int = -1) List[float] [源代码]¶
Run quantum program and get pmeasure result as list.
- Args:
program: Quantum program to run.
qubit_list: List of qubits for pmeasure.
select_max: Maximum number of returned elements in the result; should be in [-1, 1<<len(qubit_list)]. Default is -1, meaning no limit.
- Returns:
Measure result of the quantum machine.
- prob_run_tuple_list(program: QProg, qubit_list: QVec, select_max: int = -1) List[Tuple[int, float]] [源代码]¶
Run quantum program and get pmeasure result as tuple list.
- Args:
program: Quantum program to run.
qubit_list: List of qubits for pmeasure.
select_max: Maximum number of returned elements in the result tuple; should be in [-1, 1<<len(qubit_list)]. Default is -1, meaning no limit.
- Returns:
Measure result of the quantum machine.
- quick_measure(qubit_list: QVec, shots: int) Dict[str, int] [源代码]¶
Quick measure.
- Args:
qubit_list: List of qubits to measure.
shots: The number of repetitions for the measurement operation.
- Returns:
Result of the quantum program.
- set_measure_error(arg0: NoiseModel, arg1: float) None [源代码]¶
- set_measure_error(arg0: NoiseModel, arg1: float, arg2: float, arg3: float) None
Set the measurement error with multiple error rates for the specified noise model.
- Args:
noise_model: The type of noise model to apply.
error_rate1: First error rate.
error_rate2: Second error rate.
error_rate3: Third error rate.
- set_mixed_unitary_error(arg0: GateType, arg1: List[List[complex]], arg2: List[QVec]) None [源代码]¶
- set_mixed_unitary_error(arg0: GateType, arg1: List[List[complex]], arg2: List[float], arg3: List[QVec]) None
- set_mixed_unitary_error(arg0: GateType, arg1: List[List[complex]]) None
- set_mixed_unitary_error(arg0: GateType, arg1: List[List[complex]], arg2: List[float]) None
Set mixed unitary errors with associated probabilities for the specified gate type.
- Args:
gate_type: Type of gate affected by the error.
unitary_errors: List of unitary error matrices.
probabilities: Probabilities associated with each unitary error.
- set_noise_model(arg0: NoiseModel, arg1: GateType, arg2: float) None [源代码]¶
- set_noise_model(arg0: NoiseModel, arg1: GateType, arg2: float, arg3: List[QVec]) None
- set_noise_model(arg0: NoiseModel, arg1: GateType, arg2: float, arg3: float, arg4: float) None
- set_noise_model(arg0: NoiseModel, arg1: GateType, arg2: float, arg3: float, arg4: float, arg5: List[QVec]) None
Set the noise model for the quantum simulation with specific noise levels and qubits.
- Args:
noise_model: Type of noise model (bit-flip, phase-flip, etc.).
gate_type: Type of gate affected by the noise.
noise_level_1: First noise level to apply.
noise_level_2: Second noise level to apply.
noise_level_3: Third noise level to apply.
qubits: List of qubits to which the noise model will be applied.
- set_readout_error(readout_params: List[List[float]], qubits: QVec) None [源代码]¶
Set readout error parameters for the specified qubits.
- Args:
readout_params: Parameters defining the readout errors.
qubits: List of qubits to which the readout errors apply.
- class pyqpanda.pyQPanda.MomentumOptimizer(arg0: var, arg1: float, arg2: float)[源代码]¶
variational quantum MomentumOptimizer
- class pyqpanda.pyQPanda.NodeInfo[源代码]¶
- class pyqpanda.pyQPanda.NodeInfo(iter: NodeIter, target_qubits: QVec, control_qubits: QVec, type: int, dagger: bool)
Detailed information of a QProg node
- class pyqpanda.pyQPanda.NodeIter[源代码]¶
quantum node iter
- get_next() NodeIter [源代码]¶
Get the next node iterator.
- Args:
None
- Returns:
The next NodeIter instance.
- class pyqpanda.pyQPanda.NodeType(value: int)[源代码]¶
quantum node type
Members:
NODE_UNDEFINED
GATE_NODE
CIRCUIT_NODE
PROG_NODE
MEASURE_GATE
WHILE_START_NODE
QIF_START_NODE
CLASS_COND_NODE
RESET_NODE
- class pyqpanda.pyQPanda.Noise[源代码]¶
Quantum machine for noise simulation
- add_mixed_unitary_error(gate_types: GateType, unitary_matrices: List[List[complex]], probs: List[float]) None [源代码]¶
- add_mixed_unitary_error(gate_types: GateType, unitary_matrices: List[List[complex]], probs: List[float], qubits: QVec) None
- add_mixed_unitary_error(gate_types: GateType, unitary_matrices: List[List[complex]], probs: List[float], qubits: List[QVec]) None
Add mixed unitary errors to specified gate types for multiple qubits.
- Args:
gate_types: The type of gates to which the mixed unitary errors apply.
unitary_matrices: A vector of unitary matrices representing the errors.
probs: A vector of probabilities corresponding to each unitary matrix.
qubits: A vector of QVec instances indicating which qubits the errors affect.
- Returns:
None.
- add_noise_model(noise_model: NoiseModel, gate_type: GateType, prob: float) None [源代码]¶
- add_noise_model(noise_model: NoiseModel, gate_types: List[GateType], prob: float) None
- add_noise_model(noise_model: NoiseModel, gate_type: GateType, prob: float, qubits: QVec) None
- add_noise_model(noise_model: NoiseModel, gate_types: List[GateType], prob: float, qubits: QVec) None
- add_noise_model(noise_model: NoiseModel, gate_type: GateType, prob: float, qubits: List[QVec]) None
- add_noise_model(noise_model: NoiseModel, gate_type: GateType, t1: float, t2: float, t_gate: float) None
- add_noise_model(noise_model: NoiseModel, gate_types: List[GateType], t1: float, t2: float, t_gate: float) None
- add_noise_model(noise_model: NoiseModel, gate_type: GateType, t1: float, t2: float, t_gate: float, qubits: QVec) None
- add_noise_model(noise_model: NoiseModel, gate_types: List[GateType], t1: float, t2: float, t_gate: float, qubits: QVec) None
- add_noise_model(noise_model: NoiseModel, gate_type: GateType, t1: float, t2: float, t_gate: float, qubits: List[QVec]) None
Add a noise model to a specific gate with specified time parameters and targeted qubits.
- Args:
noise_model: An instance of NOISE_MODEL to be added.
gate_type: The type of gate to which the noise model applies.
t1: The time constant for relaxation (T1).
t2: The time constant for dephasing (T2).
t_gate: The duration of the gate operation.
qubits: A vector of vectors of qubit indices that the noise affects.
- Returns:
None.
- set_measure_error(noise_model: NoiseModel, prob: float, qubits: QVec = ...) None [源代码]¶
- set_measure_error(noise_model: NoiseModel, t1: float, t2: float, t_gate: float, qubits: QVec = ...) None
Set the measurement error using time parameters for the specified qubits.
- Args:
noise_model: An instance of NOISE_MODEL to be used.
t1: The time constant for relaxation (T1).
t2: The time constant for dephasing (T2).
t_gate: The duration of the gate operation.
qubits: A vector of qubit indices to which the measurement error applies. Defaults to an empty QVec.
- Returns:
None.
- set_readout_error(prob_list: List[List[float]], qubits: QVec = ...) None [源代码]¶
Set readout errors for specified qubits.
- Args:
prob_list: A list of probabilities for readout errors.
qubits: A vector of qubit indices that the readout errors apply to (default is all qubits).
- Returns:
None.
- class pyqpanda.pyQPanda.NoiseModel(value: int)[源代码]¶
noise model type
Members:
DAMPING_KRAUS_OPERATOR
DECOHERENCE_KRAUS_OPERATOR
DEPHASING_KRAUS_OPERATOR
PAULI_KRAUS_MAP
BITFLIP_KRAUS_OPERATOR
DEPOLARIZING_KRAUS_OPERATOR
BIT_PHASE_FLIP_OPRATOR
PHASE_DAMPING_OPRATOR
- BITFLIP_KRAUS_OPERATOR: ClassVar[NoiseModel] = Ellipsis[源代码]¶
- BIT_PHASE_FLIP_OPRATOR: ClassVar[NoiseModel] = Ellipsis[源代码]¶
- DAMPING_KRAUS_OPERATOR: ClassVar[NoiseModel] = Ellipsis[源代码]¶
- DECOHERENCE_KRAUS_OPERATOR: ClassVar[NoiseModel] = Ellipsis[源代码]¶
- DEPHASING_KRAUS_OPERATOR: ClassVar[NoiseModel] = Ellipsis[源代码]¶
- DEPOLARIZING_KRAUS_OPERATOR: ClassVar[NoiseModel] = Ellipsis[源代码]¶
- PAULI_KRAUS_MAP: ClassVar[NoiseModel] = Ellipsis[源代码]¶
- PHASE_DAMPING_OPRATOR: ClassVar[NoiseModel] = Ellipsis[源代码]¶
- class pyqpanda.pyQPanda.NoiseQVM[源代码]¶
Bases:
QuantumMachine
quantum machine class for simulate noise prog
- set_max_threads(size: int) None [源代码]¶
Set the maximum number of threads for the noise quantum virtual machine (NoiseQVM).
- Args:
size: The maximum number of threads to utilize.
- Returns:
None: This method does not return a value.
- set_measure_error(model: NoiseModel, prob: float, qubits: QVec = ...) None [源代码]¶
- set_measure_error(model: NoiseModel, T1: float, T2: float, t_gate: float, qubits: QVec = ...) None
Set the measurement error model in the quantum virtual machine with specific error parameters.
- Args:
model: The noise model to be applied for measurement errors.
T1: A double representing the relaxation time constant for the qubits.
T2: A double representing the dephasing time constant for the qubits.
t_gate: A double representing the time duration of the gate operation.
qubits: A specific qubit vector (QVec) for which the measurement error applies (default is an empty QVec).
- Returns:
None, as the function configures the measurement error model in place for the specified qubit vector.
- set_mixed_unitary_error(arg0: GateType, arg1: List[List[complex]], arg2: List[float]) None [源代码]¶
- set_mixed_unitary_error(arg0: GateType, arg1: List[List[complex]], arg2: List[float], arg3: QVec) None
- set_mixed_unitary_error(arg0: GateType, arg1: List[List[complex]], arg2: List[float], arg3: List[QVec]) None
Set a mixed unitary error model for a specific gate type in the quantum virtual machine, targeting multiple qubits.
- Args:
gate_type: The type of gate for which the mixed unitary error model applies.
unitary_ops: A vector of unitary operations (QStat) representing the error model.
probabilities: A vector of doubles representing the probabilities associated with each unitary operation.
qubit_groups: A vector of qubit vectors (QVec) specifying the qubits affected by the error model.
- Returns:
None, as the function configures the mixed unitary error model in place for the specified gate type and qubit groups.
- set_noise_model(arg0: NoiseModel, arg1: GateType, arg2: float) None [源代码]¶
- set_noise_model(arg0: NoiseModel, arg1: List[GateType], arg2: float) None
- set_noise_model(arg0: NoiseModel, arg1: GateType, arg2: float, arg3: QVec) None
- set_noise_model(arg0: NoiseModel, arg1: List[GateType], arg2: float, arg3: QVec) None
- set_noise_model(arg0: NoiseModel, arg1: GateType, arg2: float, arg3: List[QVec]) None
- set_noise_model(arg0: NoiseModel, arg1: GateType, arg2: float, arg3: float, arg4: float) None
- set_noise_model(arg0: NoiseModel, arg1: List[GateType], arg2: float, arg3: float, arg4: float) None
- set_noise_model(arg0: NoiseModel, arg1: GateType, arg2: float, arg3: float, arg4: float, arg5: QVec) None
- set_noise_model(arg0: NoiseModel, arg1: List[GateType], arg2: float, arg3: float, arg4: float, arg5: QVec) None
- set_noise_model(arg0: NoiseModel, arg1: GateType, arg2: float, arg3: float, arg4: float, arg5: List[QVec]) None
Set the noise model for a specific gate type with multiple noise parameters affecting a vector of qubit vectors in the quantum virtual machine.
- Args:
noise_model: The noise model to be applied.
gate_type: The type of gate for which the noise model is relevant.
noise_level1: A double representing the first level of noise to apply.
noise_level2: A double representing the second level of noise to apply.
noise_level3: A double representing the third level of noise to apply.
qubits_list: A vector of qubit vectors (QVec) affected by the noise model.
- Returns:
None, as the function configures the noise model in place for the specified gate type and qubit vectors.
- set_readout_error(probs_list: List[List[float]], qubits: QVec = ...) None [源代码]¶
Set a readout error model for the quantum virtual machine.
- Args:
probs_list: A list of probabilities for readout errors associated with each qubit.
qubits: A vector of qubits (QVec) for which the readout error model applies. Defaults to all qubits if not specified.
- Returns:
None, as this function configures the readout error model in place for the specified qubits.
- set_reset_error(p0: float, p1: float, qubits: QVec = ...) None [源代码]¶
Set a reset error model for the quantum virtual machine.
- Args:
p0: Probability of the qubit resetting to state 0.
p1: Probability of the qubit resetting to state 1.
qubits: A vector of qubits (QVec) for which the reset error model applies. Defaults to all qubits if not specified.
- Returns:
None, as this function configures the reset error model in place for the specified qubits.
- set_rotation_error(arg0: float) None [源代码]¶
Set a rotation error model for the quantum virtual machine.
- Args:
None specified in the function signature, but typically would include error parameters for the rotation.
- Returns:
None, as this function configures the rotation error model in place for the quantum operations.
- class pyqpanda.pyQPanda.OptimizerFactory[源代码]¶
quantum OptimizerFactory class
- makeOptimizer() AbstractOptimizer [源代码]¶
- makeOptimizer() AbstractOptimizer
Create an optimizer using its name.
- Args:
optimizer_name: A string representing the name of the desired optimizer.
- Returns:
An instance of the created optimizer.
- class pyqpanda.pyQPanda.OptimizerType(value: int)[源代码]¶
quantum OptimizerType
Members:
NELDER_MEAD
POWELL
GRADIENT
- GRADIENT: ClassVar[OptimizerType] = Ellipsis[源代码]¶
- NELDER_MEAD: ClassVar[OptimizerType] = Ellipsis[源代码]¶
- POWELL: ClassVar[OptimizerType] = Ellipsis[源代码]¶
- class pyqpanda.pyQPanda.OriginCMem[源代码]¶
origin quantum cmem
- Allocate_CBit() CBit [源代码]¶
- Allocate_CBit(cbit_num: int) CBit
Allocate a specified number of classical bits.
- Args:
cbit_num: The number of classical bits to allocate.
- Returns:
A reference to the allocated classical bits.
- Free_CBit(cbit: CBit) None [源代码]¶
Free a previously allocated classical bit.
- Args:
cbit: The classical bit to be freed.
- cAlloc() CBit [源代码]¶
- cAlloc(arg0: int) CBit
Allocate memory for classical bits. This method initializes or resets the memory allocation for classical bits.
- cAlloc_many(count: int) List[ClassicalCondition] [源代码]¶
Allocate memory for multiple classical bits.
- Args:
count: The number of classical bits to allocate.
- cFree(classical_cond: ClassicalCondition) None [源代码]¶
Free the allocated memory for a classical condition.
- Args:
classical_cond: The classical condition to be freed.
- cFree_all(classical_cond_list: List[ClassicalCondition]) None [源代码]¶
- cFree_all() None
Free all allocated classical memory. This method releases all memory associated with classical conditions.
- clearAll() None [源代码]¶
Clear all allocated classical bits. This method releases all resources associated with classical bits.
- getIdleMem() int [源代码]¶
Get the amount of idle memory currently available.
- Returns:
The amount of idle memory in terms of qubits.
- getMaxMem() int [源代码]¶
Get the maximum memory capacity.
- Returns:
The maximum memory capacity in terms of qubits.
- get_allocate_cbits() List[ClassicalCondition] [源代码]¶
Retrieve allocated classical bits. Returns a vector of ClassicalCondition representing the allocated cbits.
- get_capacity() int [源代码]¶
Get the capacity of the memory.
- Returns:
The total capacity of the memory in terms of qubits.
- class pyqpanda.pyQPanda.OriginCollection[源代码]¶
- class pyqpanda.pyQPanda.OriginCollection(file_name: str)
- class pyqpanda.pyQPanda.OriginCollection(arg0: OriginCollection)
A relatively free data collection class for saving data
- getFilePath() str [源代码]¶
Retrieve the file path associated with the OriginCollection. This function returns the path to the file linked to the collection.
- Returns:
A string containing the file path.
- getJsonString() str [源代码]¶
Retrieve the JSON string representation of the OriginCollection. This function converts the collection’s data into a JSON format string.
- Returns:
A string containing the JSON representation of the collection.
- getKeyVector() List[str] [源代码]¶
Retrieve the vector of keys associated with the OriginCollection. This function returns a vector containing all the keys in the collection.
- Returns:
A vector of keys.
- getValue(key_name: str) List[str] [源代码]¶
Get the value associated with the specified key name. This function retrieves the value stored in the OriginCollection for the given key.
- Args:
key_name: The name of the key whose value is to be retrieved.
- Returns:
The value associated with the specified key.
- getValueByKey(key_value: str) str [源代码]¶
- getValueByKey(key_value: int) str
Retrieve the value associated with a specified key. This function returns the value that corresponds to the given key.
- Args:
key_value: The key for which to retrieve the associated value.
- Returns:
The value associated with the specified key.
- insertValue(key: str, *args) None [源代码]¶
Insert values into the OriginCollection under the specified key. This function adds the first value associated with the provided key and then inserts additional values from the provided arguments.
- Args:
key: The key under which to insert the values.
args: A variable number of values to be inserted.
- Returns:
None.
- open(file_name: str) bool [源代码]¶
Open and read the JSON file at the specified path. This function reads the contents of the JSON file provided.
- Args:
file_name: The path to the JSON file to be read.
- Returns:
None.
- class pyqpanda.pyQPanda.OriginQubitPool[源代码]¶
quantum qubit pool
- allocateQubitThroughPhyAddress(qubit_addr: int) Qubit [源代码]¶
Allocate a qubit using its physical address.
- Args:
qubit_addr: The physical address of the qubit to allocate.
- Returns:
A reference to the allocated qubit.
- allocateQubitThroughVirAddress(qubit_num: int) Qubit [源代码]¶
Allocate a qubit using its virtual address.
- Args:
qubit_num: The virtual address of the qubit to allocate.
- Returns:
A reference to the allocated qubit.
- clearAll() None [源代码]¶
Clear all qubits from the OriginQubitPool. This method removes all qubits, resetting the pool to its initial state.
- getIdleQubit() int [源代码]¶
Retrieve an idle qubit from the OriginQubitPool.
- Returns:
An idle qubit if available, otherwise may return a null reference or indicate no idle qubits.
- getMaxQubit() int [源代码]¶
Retrieve the maximum qubit from the OriginQubitPool.
- Returns:
The maximum qubit available in the pool.
- getPhysicalQubitAddr(qubit: Qubit) int [源代码]¶
Retrieve the physical address of a specified qubit.
- Args:
qubit: The qubit for which to retrieve the physical address.
- Returns:
The physical address of the specified qubit.
- getVirtualQubitAddress(qubit: Qubit) int [源代码]¶
Retrieve the virtual address of a specified qubit.
- Args:
qubit: The qubit for which to retrieve the virtual address.
- Returns:
The virtual address of the specified qubit.
- get_allocate_qubits() QVec [源代码]¶
Retrieve currently allocated qubits.
- Returns:
A reference to the vector of currently allocated qubits.
- get_capacity() int [源代码]¶
Get the capacity of the OriginQubitPool.
- Returns:
An integer representing the capacity of the pool.
- get_max_usedqubit_addr() int [源代码]¶
Retrieve the address of the maximum used qubit in the OriginQubitPool.
- Returns:
The address of the maximum used qubit, or an indication if no qubits are in use.
- get_qubit_by_addr(qubit_addr: int) Qubit [源代码]¶
Retrieve a qubit from the pool using its address.
- Args:
qubit_addr: The address of the qubit to retrieve.
- Returns:
A reference to the requested qubit.
- qAlloc_many(qubit_num: int) List[Qubit] [源代码]¶
Allocate a list of qubits.
- Args:
qubit_num: The number of qubits to allocate.
- Returns:
A reference to the vector of allocated qubits.
- qFree(arg0: Qubit) None [源代码]¶
Free a previously allocated qubit.
- Args:
qubit: The qubit to be freed.
- class pyqpanda.pyQPanda.PartialAmpQVM[源代码]¶
Bases:
QuantumMachine
quantum partial amplitude machine class
- get_prob_dict(arg0: QVec) Dict[str, float] [源代码]¶
Get the measurement results as a dictionary.
- Args:
qubit_list: A list of qubits to measure.
- Returns:
A dictionary containing the measurement results of the quantum machine.
- pmeasure_bin_index(bin_index: str) complex [源代码]¶
Get the amplitude of the quantum state for the specified bin index.
- Args:
bin_index: A string representing the bin.
- Returns:
A complex number representing the amplitude of the bin.
- pmeasure_dec_index(dec_index: str) complex [源代码]¶
Get the amplitude of the quantum state for the specified decimal index.
- Args:
dec_index: A string representing the decimal.
- Returns:
A complex number representing the amplitude of the decimal.
- pmeasure_subset(index_list: List[str]) Dict[str, complex] [源代码]¶
Get the amplitudes of the quantum state for a subset of indices.
- Args:
index_list: A list of strings representing decimal states.
- Returns:
A list of complex numbers representing the amplitude results.
- prob_run_dict(arg0: QProg, arg1: QVec) Dict[str, float] [源代码]¶
Run the quantum program and get the measurement results as a dictionary.
- Args:
qprog: The quantum program to execute.
qubit_list: A list of qubits to measure.
- Returns:
A dictionary containing the measurement results of the quantum machine.
- class pyqpanda.pyQPanda.QCircuit[源代码]¶
- class pyqpanda.pyQPanda.QCircuit(arg0: NodeIter)
quantum circuit node
- begin() NodeIter [源代码]¶
Get an iterator to the first node in the circuit.
- Returns:
Iterator: An iterator pointing to the first node.
- control(control_qubits: QVec) QCircuit [源代码]¶
Apply a control operation to the circuit.
- Args:
control_qubits (list): A list of qubits that will act as control qubits.
- Returns:
QCircuit: The circuit with the control operation applied.
- dagger() QCircuit [源代码]¶
Compute the adjoint (dagger) of the circuit.
- Returns:
QCircuit: The adjoint of this circuit.
- end() NodeIter [源代码]¶
Get an iterator to the end of the circuit.
- Returns:
Iterator: An iterator pointing to the end of the nodes.
- head() NodeIter [源代码]¶
Get an iterator to the head of the circuit.
- Returns:
Iterator: An iterator pointing to the head node.
- insert(arg0: QCircuit) QCircuit [源代码]¶
- insert(arg0: QGate) QCircuit
Insert a QGate into this circuit.
- Args:
gate (QGate): The gate to be inserted.
- Returns:
QCircuit: A reference to this circuit after the gate insertion.
- is_empty() bool [源代码]¶
Check if the circuit is empty.
- Returns:
bool: True if the circuit has no gates; otherwise, False.
- last() NodeIter [源代码]¶
Get an iterator to the last node in the circuit.
- Returns:
Iterator: An iterator pointing to the last node.
- class pyqpanda.pyQPanda.QCircuitOPtimizerMode(value: int)[源代码]¶
Quantum circuit optimize mode
Members:
Merge_H_X
Merge_U3
Merge_RX
Merge_RY
Merge_RZ
- Merge_H_X: ClassVar[QCircuitOPtimizerMode] = Ellipsis[源代码]¶
- Merge_RX: ClassVar[QCircuitOPtimizerMode] = Ellipsis[源代码]¶
- Merge_RY: ClassVar[QCircuitOPtimizerMode] = Ellipsis[源代码]¶
- Merge_RZ: ClassVar[QCircuitOPtimizerMode] = Ellipsis[源代码]¶
- Merge_U3: ClassVar[QCircuitOPtimizerMode] = Ellipsis[源代码]¶
- class pyqpanda.pyQPanda.QError(value: int)[源代码]¶
Quantum QError Type
Members:
UndefineError
qErrorNone
qParameterError
qubitError
loadFileError
initStateError
destroyStateError
setComputeUnitError
runProgramError
getResultError
getQStateError
- class pyqpanda.pyQPanda.QGate(arg0: NodeIter)[源代码]¶
quantum gate node
- control(control_qubits: QVec) QGate [源代码]¶
Get a controlled quantum gate based on the current QGate instance. This function creates a control version of the quantum gate using the specified control qubits.
- Args:
control_qubits: A list of qubits that serve as control qubits for the gate.
- Returns:
A new QGate instance representing the controlled gate.
- gate_matrix() List[complex] [源代码]¶
Get the matrix representation of the quantum gate.
- Args:
qgate: The quantum gate instance.
- Returns:
QStat: The matrix representation of the quantum gate.
- gate_type() int [源代码]¶
Get the type of the quantum gate.
- Args:
qgate: The quantum gate instance.
- Returns:
The type of the quantum gate.
- get_control_qubit_num() int [源代码]¶
Retrieve the number of control qubits for the QGate instance. This function returns the count of qubits that act as control qubits for the gate.
- Args:
None
- Returns:
An integer representing the number of control qubits.
- get_control_qubits(control_qubits: QVec) int [源代码]¶
Get the control vector from the current quantum gate node.
- Args:
control_qubits: The control qubits output vector.
- Returns:
int: Size of the control qubits.
- get_qubits(qubits: QVec) int [源代码]¶
Get the qubit vector inside this quantum gate.
- Args:
qubits: The qubits output vector.
- Returns:
int: Size of the qubits.
- get_target_qubit_num() int [源代码]¶
Retrieve the number of target qubits for the QGate instance. This function returns the count of qubits that the quantum gate affects.
- Args:
None
- Returns:
An integer representing the number of target qubits.
- is_dagger() bool [源代码]¶
Check if the QGate instance is a dagger (Hermitian conjugate) of another gate. This function determines whether the current gate is the adjoint of its corresponding gate.
- Args:
None
- Returns:
A boolean indicating whether the current gate is a dagger.
- class pyqpanda.pyQPanda.QITE[源代码]¶
quantum imaginary time evolution
- set_para_update_mode(arg0: UpdateMode) None [源代码]¶
- set_pauli_matrix(arg0: QuantumMachine, arg1: numpy.ndarray[numpy.float64[m, n]]) None [源代码]¶
- set_quantum_machine_type(arg0: QMachineType) None [源代码]¶
- class pyqpanda.pyQPanda.QIfProg(arg0: NodeIter)[源代码]¶
- class pyqpanda.pyQPanda.QIfProg(classical_cond: ClassicalCondition, true_branch_qprog: QProg)
- class pyqpanda.pyQPanda.QIfProg(classical_cond: ClassicalCondition, true_branch_qprog: QProg, false_branch_qprog: QProg)
quantum if prog node
- get_classical_condition() ClassicalCondition [源代码]¶
Retrieve the classical condition associated with the quantum if program.
- Returns:
The classical condition object used in the if statement.
- class pyqpanda.pyQPanda.QMachineType(value: int)[源代码]¶
Quantum machine type
Members:
CPU
GPU
CPU_SINGLE_THREAD
NOISE
- CPU: ClassVar[QMachineType] = Ellipsis[源代码]¶
- CPU_SINGLE_THREAD: ClassVar[QMachineType] = Ellipsis[源代码]¶
- GPU: ClassVar[QMachineType] = Ellipsis[源代码]¶
- NOISE: ClassVar[QMachineType] = Ellipsis[源代码]¶
- class pyqpanda.pyQPanda.QOperator[源代码]¶
- class pyqpanda.pyQPanda.QOperator(arg0: QGate)
- class pyqpanda.pyQPanda.QOperator(arg0: QCircuit)
quantum operator class
- class pyqpanda.pyQPanda.QOptimizationResult(arg0: str, arg1: int, arg2: int, arg3: str, arg4: float, arg5: List[float])[源代码]¶
quantum QOptimizationResult class
- class pyqpanda.pyQPanda.QPilotOSService(machine_type: str = 'CPU')[源代码]¶
Bases:
QuantumMachine
origin quantum pilot OS Machine
- build_expectation_task_msg(prog: QProg, hamiltonian: str, qubits: List[int] = [], shot: int = 1000, chip_id: int = 33554432, is_amend: bool = True, is_mapping: bool = True, is_optimization: bool = True, specified_block: List[int] = [], task_describe: str = '') str [源代码]¶
use C++ to build a expectation task body.
- build_qst_task_msg(prog: QProg, shot: int = 1000, chip_id: int = 33554432, is_amend: bool = True, is_mapping: bool = True, is_optimization: bool = True, specified_block: List[int] = [], task_describe: str = '') str [源代码]¶
use C++ to build ordinary qst task msg body
- build_task_msg(prog: List[QProg], shot: int, chip_id: int, is_amend: bool, is_mapping: bool, is_optimization: bool, specified_block: List[int], task_describe: str) str [源代码]¶
use c++ to build real chip measure task msg body.
- cAlloc() ClassicalCondition [源代码]¶
- cAlloc(cbit: int) ClassicalCondition
Allocate a cbit
- cAlloc_many(cbit_num: int) List[ClassicalCondition] [源代码]¶
Allocate a list of cbits
- cFree(arg0: ClassicalCondition) None [源代码]¶
Free a cbit
- cFree_all(cbit_list: List[ClassicalCondition]) None [源代码]¶
- cFree_all() None
Free all of cbits
- parse_prob_counts_result(result_str: List[str]) List[Dict[str, int]] [源代码]¶
Parse result str to map<string, double> Args:
result_str: Taeget result string
- Returns:
array: vector<map<string, double>>
- Raises:
none
- parse_probability_result(result_str: List[str]) List[Dict[str, float]] [源代码]¶
Parse result str to map<string, double> Args:
result_str: Taeget result string
- Returns:
array: vector<map<string, double>>
- Raises:
none
- parse_task_result(result_str: str) Dict[str, float] [源代码]¶
Parse result str to map<string, double> Args:
result_str: Taeget result string
- Returns:
dict: map<string, double>
- Raises:
none
- class pyqpanda.pyQPanda.QProg[源代码]¶
- class pyqpanda.pyQPanda.QProg(arg0: QProg)
- class pyqpanda.pyQPanda.QProg(arg0: QCircuit)
- class pyqpanda.pyQPanda.QProg(arg0: QIfProg)
- class pyqpanda.pyQPanda.QProg(arg0: QWhileProg)
- class pyqpanda.pyQPanda.QProg(arg0: QGate)
- class pyqpanda.pyQPanda.QProg(arg0: QMeasure)
- class pyqpanda.pyQPanda.QProg(arg0: QReset)
- class pyqpanda.pyQPanda.QProg(arg0: ClassicalCondition)
- class pyqpanda.pyQPanda.QProg(arg0: NodeIter)
Quantum program,can construct quantum circuit,data struct is linked list
- begin() NodeIter [源代码]¶
Get an iterator to the first node in the program.
- Returns:
A reference to the iterator pointing to the first node.
- end() NodeIter [源代码]¶
Get an iterator to the end of the program.
- Returns:
A reference to the iterator pointing past the last node.
- get_used_cbits(cbit_vector: List[ClassicalCondition]) List[ClassicalCondition] [源代码]¶
Get a list of classical bits used in the program.
- Args:
cbit_vector: The vector to store the used classical bits.
- Returns:
A reference to the updated classical bit vector.
- get_used_qubits(qubit_vector: QVec) QVec [源代码]¶
Get a list of qubits used in the program.
- Args:
qubit_vector: The vector to store the used qubits.
- Returns:
A reference to the updated qubit vector.
- head() NodeIter [源代码]¶
Get an iterator to the head node of the program.
- Returns:
A reference to the iterator pointing to the head node.
- insert(arg0: QProg) QProg [源代码]¶
- insert(arg0: QGate) QProg
- insert(arg0: QCircuit) QProg
- insert(arg0: QIfProg) QProg
- insert(arg0: QWhileProg) QProg
- insert(arg0: QMeasure) QProg
- insert(arg0: QReset) QProg
- insert(arg0: ClassicalCondition) QProg
Insert a ClassicalCondition into the program.
- Args:
condition_op: The classical condition operation to be inserted.
- Returns:
A reference to the updated program.
- class pyqpanda.pyQPanda.QProgDAG[源代码]¶
quantum prog dag class
- get_edges() List[QProgDAGEdge] [源代码]¶
Retrieve the set of edges in the quantum program DAG.
- Returns:
List[QProgDAGEdge]: A list of edges in the DAG.
- get_target_vertex(vertice_num: int) QProgDAGVertex [源代码]¶
Retrieve a target vertex from the quantum program DAG.
- Args:
vertice_num: The index of the vertex to retrieve.
- Returns:
QVertex: A reference to the specified vertex in the DAG.
- get_vertex_set() List[QProgDAGVertex] [源代码]¶
Retrieve the set of vertices in the quantum program DAG.
- Args:
QVec: The set of vertices.
- Returns:
QVec: A reference to the vector of vertices in the DAG.
- class pyqpanda.pyQPanda.QProgDAGEdge(from_arg: int, to_arg: int, qubit_arg: int)[源代码]¶
quantum prog dag edge
- class pyqpanda.pyQPanda.QProgDAGVertex[源代码]¶
quantum prog dag vertex node
- m_type: DAGNodeType[源代码]¶
- class pyqpanda.pyQPanda.QResult(*args, **kwargs)[源代码]¶
QResult abstract class, this class contains the result of the quantum measurement
- class pyqpanda.pyQPanda.QVec[源代码]¶
- class pyqpanda.pyQPanda.QVec(qubit_list: List[Qubit])
- class pyqpanda.pyQPanda.QVec(qvec: QVec)
- class pyqpanda.pyQPanda.QVec(qubit: Qubit)
Qubit vector basic class
- append(qubit: Qubit) None [源代码]¶
Add a qubit to the end of the QVec.
- Args:
qubit: A pointer to the Qubit to be added.
- Returns:
None.
- class pyqpanda.pyQPanda.QWhileProg(arg0: NodeIter)[源代码]¶
- class pyqpanda.pyQPanda.QWhileProg(arg0: ClassicalCondition, arg1: QProg)
quantum while node
- get_classical_condition() ClassicalCondition [源代码]¶
Retrieve the classical condition associated with the while program.
- Returns:
The classical condition object used in the while statement.
- class pyqpanda.pyQPanda.QuantumMachine(*args, **kwargs)[源代码]¶
quantum machine base class
- allocate_qubit_through_phy_address(address: int) Qubit [源代码]¶
Allocate qubits through physical address.
This function allocates qubits using the specified physical address.
- Args:
address: The physical address of the qubit.
- Returns:
The allocated qubit.
- allocate_qubit_through_vir_address(address: int) Qubit [源代码]¶
Allocate a qubit using its physical address.
This function allocates a qubit based on the specified physical address.
- Args:
address: The physical address of the qubit to allocate.
- Returns:
A reference to the allocated Qubit.
- async_run(qprog: QProg, noise_model: Noise = NoiseModel()) None [源代码]¶
Execute the quantum program asynchronously in the background.
This function runs the specified quantum program without blocking the main thread.
You can check the progress using get_processed_qgate_num(), determine if the process
is finished with is_async_finished(), and retrieve results with get_async_result().
- Args:
qprog: The quantum program to run.
noise_model: (optional) The noise model to apply (default is NoiseModel()).
- Returns:
A reference indicating the status of the asynchronous operation.
- cAlloc() ClassicalCondition [源代码]¶
- cAlloc(cbit: int) ClassicalCondition
Allocate a classical bit (CBit) in the QuantumMachine.
This function allocates a CBit after the quantum machine has been initialized.
- Args:
cbit_addr: The address of the CBit to allocate, which should be in the range [0, 29).
- Returns:
Reference to the allocated CBit.
- cAlloc_many(cbit_num: int) List[ClassicalCondition] [源代码]¶
Allocate multiple classical bits (CBits).
This function must be called after init().
- Args:
cbit_num: The number of classical bits to allocate.
- Returns:
list[CBit]: A list of allocated classical bits.
- cFree(arg0: ClassicalCondition) None [源代码]¶
Free a classical bit (CBit).
This function deallocates a previously allocated classical bit.
- Args:
CBit: The classical bit to be freed.
- Returns:
None: This function does not return a value.
- cFree_all(cbit_list: List[ClassicalCondition]) None [源代码]¶
- cFree_all() None
Free all classical bits (CBits).
This function deallocates all classical bits that have been previously allocated.
- Args:
None
- Returns:
None: This function does not return a value.
- directly_run(qprog: QProg, noise_model: Noise = NoiseModel()) Dict[str, bool] [源代码]¶
Directly execute the quantum program.
This function runs the specified quantum program immediately after the
initialization (init()). It supports an optional noise model, which is
currently only applicable to CPUQVM.
- Args:
qprog: The quantum program to run.
noise_model: (optional) The noise model to apply (default is no noise).
- Returns:
- A dictionary with the execution results:
The final qubit register state. The measurement probabilities.
- getAllocateCMem() int [源代码]¶
Get the list of allocated classical bits (cbits) in the QuantumMachine.
This function retrieves the cbits that have been allocated for use in the quantum machine.
- Args:
None
- Returns:
List of allocated cbits.
- getAllocateQubitNum() int [源代码]¶
Get the list of allocated qubits in the QuantumMachine.
This function retrieves the qubits that have been allocated for use in the quantum machine.
- Args:
None
- Returns:
List of allocated qubits.
- getStatus(*args, **kwargs) Any [源代码]¶
Get the status of the Quantum machine.
This function retrieves the current status of the Quantum machine.
- Args:
None
- Returns:
QMachineStatus: The status of the Quantum machine.
- get_allocate_cbits() List[ClassicalCondition] [源代码]¶
Retrieve the list of allocated cbits in the QuantumMachine.
This function returns a list of currently allocated cbits.
- Args:
None
- Returns:
A list of allocated cbits.
- get_allocate_cmem_num() int [源代码]¶
Retrieve the list of allocated cbits in the QuantumMachine.
This function returns the currently allocated cbits.
- Args:
None
- Returns:
A list of allocated cbits.
- get_allocate_qubit_num() int [源代码]¶
Retrieve the list of allocated qubits in the QuantumMachine.
This function returns the currently allocated qubits.
- Args:
None
- Returns:
A list of allocated qubits.
- get_allocate_qubits() List[Qubit] [源代码]¶
Retrieve the list of allocated qubits in the QuantumMachine.
This function returns a list of currently allocated qubits.
- Args:
None
- Returns:
A list of allocated qubits.
- get_async_result() Dict[str, bool] [源代码]¶
Retrieve the result of the asynchronous quantum program execution.
This function blocks the current code until the asynchronous process initiated
by async_run() is complete, then returns the results.
- Returns:
The result of the asynchronous execution.
- get_expectation(qprog: QProg, hamiltonian: List[Tuple[Dict[int, str], float]], qubit_list: QVec) float [源代码]¶
- get_expectation(qprog: QProg, hamiltonian: List[Tuple[Dict[int, str], float]], qubit_list: QVec, shots: int) float
Calculate the expectation value of the given Hamiltonian with specified measurement shots.
This function computes the expectation value based on the provided quantum program,
Hamiltonian, list of qubits to measure, and the number of measurement shots.
- Args:
qprog: The quantum program to execute.
hamiltonian: The Hamiltonian for which the expectation is calculated.
qubit_list: A list of qubits to measure.
shots: The number of measurement shots to perform.
- Returns:
A double representing the expectation value of the current Hamiltonian.
- get_gate_time_map() Dict[GateType, int] [源代码]¶
Retrieve the gate time mapping for the QuantumMachine.
This function returns a map of gates to their corresponding execution times.
- Args:
None
- Returns:
A reference to the gate time map.
- get_processed_qgate_num() int [源代码]¶
Retrieve the number of processed quantum gates.
This function returns the total count of quantum gates that have been processed
by the QuantumMachine.
- Returns:
An integer representing the number of processed quantum gates.
- get_qstate() List[complex] [源代码]¶
Get the status of the quantum machine.
- Args:
None
- Returns:
QMachineStatus: The current status of the quantum machine.
- get_status(*args, **kwargs) Any [源代码]¶
Retrieve the status of the QuantumMachine.
This function returns the current status of the quantum machine.
- Args:
None
- Returns:
The status of the Quantum machine, represented as a QMachineStatus.
- initQVM() None [源代码]¶
Initialize the global unique quantum machine in the background.
This function sets up the quantum machine based on the specified type.
- Args:
machine_type: The type of quantum machine to initialize, as defined in pyQPanda.QMachineType.
- Returns:
bool: True if the initialization is successful, otherwise false.
- init_qvm() None [源代码]¶
Initialize the global unique quantum machine in the background.
This function sets up the quantum machine based on the specified type.
- Args:
machine_type: The type of quantum machine to initialize, as defined in pyQPanda.QMachineType.
- Returns:
bool: True if the initialization is successful, otherwise false.
- init_sparse_state(*args, **kwargs) Any [源代码]¶
Initialize a sparse quantum state for the QuantumMachine.
This function sets the initial sparse state of the quantum machine.
- Args:
state: A map representing the sparse state, where keys are state identifiers and values are qcomplex_t. Defaults to an empty map.
qlist: The list of qubits to which the sparse state will be applied, represented as a QVec object. Defaults to QVec().
- Returns:
Reference to the updated quantum machine.
- init_state(state: List[complex] = QStat(), qlist: QVec = QVec()) None [源代码]¶
Initialize the quantum state of the QuantumMachine.
This function sets the initial state of the quantum machine.
- Args:
state: The initial quantum state, represented as a QStat object. Defaults to QStat().
qlist: The list of qubits to which the state will be applied, represented as a QVec object. Defaults to QVec().
- Returns:
Reference to the updated quantum machine.
- is_async_finished() bool [源代码]¶
Check if the asynchronous quantum program execution is complete.
This function returns a boolean indicating whether the asynchronous process
initiated by async_run() has finished.
- Returns:
True if the process is complete, False otherwise.
- qAlloc() Qubit [源代码]¶
Allocate a qubit.
This function must be called after init().
- Args:
qubit_addr: The physical address of the qubit, should be in the range [0, 29).
- qAlloc_many(qubit_num: int) List[Qubit] [源代码]¶
Allocate multiple qubits.
This function must be called after init().
- Args:
qubit_num: The number of qubits to allocate.
- Returns:
list[Qubit]: A list of allocated qubits.
- qFree(qubit: Qubit) None [源代码]¶
Free a qubit.
This function deallocates a previously allocated qubit.
- Args:
qubit: The Qubit to be freed.
- Returns:
None: This function does not return a value.
- qFree_all(qubit_list: QVec) None [源代码]¶
- qFree_all(arg0: QVec) None
Free all qubits.
This function deallocates all qubits provided in the input vector.
- Args:
None
- Returns:
None: This function does not return a value.
- run_with_configuration(qprog: QProg, cbit_list: List[ClassicalCondition], data: dict, noise_model: Noise = NoiseModel()) Dict[str, int] [源代码]¶
- run_with_configuration(qprog: QProg, cbit_list: List[ClassicalCondition], shot: int, noise_model: Noise = NoiseModel()) Dict[str, int]
- run_with_configuration(qprog: QProg, shot: int, noise_model: Noise = NoiseModel()) Dict[str, int]
- run_with_configuration(qprog: QProg, cbit_list: List[int], shot: int, noise_model: Noise = NoiseModel()) Dict[str, int]
Execute the quantum program with a specified configuration.
This function runs the quantum program using the provided classical bits,
the number of shots for repeated execution, and an optional noise model.
- Args:
qprog: The quantum program to execute.
cbit_list: The list of classical bits.
shot: The number of times to repeat the execution.
noise_model: (optional) The noise model to apply (default is no noise). Note: Noise models currently work only on CPUQVM.
- Returns:
- A tuple containing the execution results over the specified shots:
The final qubit register state. The count of hits for each outcome.
- class pyqpanda.pyQPanda.QuantumStateTomography[源代码]¶
quantum state tomography class
- caculate_tomography_density() List[List[complex]] [源代码]¶
Calculate the tomography density.
- Returns:
A reference to the calculated density matrix.
- combine_qprogs(circuit: QProg, qlist: QVec) List[QProg] [源代码]¶
- combine_qprogs(circuit: QCircuit, qlist: QVec) List[QProg]
- combine_qprogs(circuit: QProg, qlist: List[int]) List[QProg]
- combine_qprogs(circuit: QCircuit, qlist: List[int]) List[QProg]
Return a list of quantum state tomography quantum programs.
- Args:
circuit: The quantum circuit to be combined.
qlist: A vector of indices representing the qubits involved.
- Returns:
A reference to the combined quantum programs.
- exec(qm, shots: int) List[List[complex]] [源代码]¶
Run state tomography quantum programs.
- Args:
qm: The quantum machine to execute the programs on.
shots: The number of shots for the execution.
- Returns:
A reference to the execution results.
- set_qprog_results(qlist: int, results: List[Dict[str, float]]) None [源代码]¶
Set the results of combined quantum programs.
- Args:
qlist: The index of the qubit list.
results: A vector of maps containing the result data.
- Returns:
A reference to the updated state.
- Raises:
run_fail: An error occurred while setting the results.
- class pyqpanda.pyQPanda.Qubit(*args, **kwargs)[源代码]¶
Qubit abstract class
- getPhysicalQubitPtr() PhysicalQubit [源代码]¶
Retrieve a pointer to the associated physical qubit.
This function returns a pointer to the physical qubit that corresponds to this qubit instance.
- Args:
None
- Returns:
A pointer to the associated physical qubit.
- class pyqpanda.pyQPanda.RMSPropOptimizer(arg0: var, arg1: float, arg2: float, arg3: float)[源代码]¶
variational quantum RMSPropOptimizer
- class pyqpanda.pyQPanda.SingleAmpQVM[源代码]¶
Bases:
QuantumMachine
quantum single amplitude machine class
- get_prob_dict(arg0: QVec) Dict[str, float] [源代码]¶
- get_prob_dict(arg0: List[int]) Dict[str, float]
Get the pmeasure result as a dictionary.
- Args:
qubit_list: A list of qubits for pmeasure.
- Returns:
A dictionary containing the measurement results of the quantum machine.
- get_quick_map_vertice(arg0: List[Tuple[int, int]]) None [源代码]¶
Get the quick map vertices.
- Returns:
A reference to the quick map vertices.
- get_sequence(arg0: List[int], arg1: List[List[Tuple[int, bool]]]) int [源代码]¶
Get the program sequence.
- Returns:
A reference to the current program sequence.
- pmeasure_bin_amplitude(arg0: str) complex [源代码]¶
Measure the bin amplitude of the quantum state.
- Args:
bin_string: A string representing the bin.
- Returns:
A complex number representing the bin amplitude.
- pmeasure_bin_index(arg0: str) float [源代码]¶
Measure the bin index of the quantum state amplitude.
- Args:
bin_string: A string representing the bin.
- Returns:
A double representing the amplitude probability of the bin.
- pmeasure_dec_amplitude(arg0: str) complex [源代码]¶
Measure the dec amplitude of the quantum state.
- Args:
dec_string: A string representing the dec.
- Returns:
A complex number representing the dec amplitude.
- pmeasure_dec_index(arg0: str) float [源代码]¶
Measure the dec index of the quantum state amplitude.
- Args:
dec_string: A string representing the dec.
- Returns:
A double representing the amplitude probability of the dec.
- prob_run_dict(arg0: QProg, arg1: QVec) Dict[str, float] [源代码]¶
- prob_run_dict(arg0: QProg, arg1: List[int]) Dict[str, float]
Run the quantum program and get the pmeasure result as a dictionary.
- Args:
qprog: The quantum program to run.
qubit_list: A list of qubits for pmeasure.
- Returns:
A dictionary containing the measurement results of the quantum machine.
- run(prog: QProg, qv: QVec, max_rank: int = 30, alloted_time: int = 5) None [源代码]¶
- run(arg0: QProg, arg1: QVec, arg2: int, arg3: List[List[Tuple[int, bool]]]) None
Run the quantum program.
- Args:
prog: A quantum program (QProg) to be executed.
qv: A list of qubits (QVec) involved in the program.
max_rank: The maximum rank to consider during execution.
sequences: A list of sequences (std::vector<qprog_sequence_t>).
- Returns:
None, as the function executes the program in place.
- class pyqpanda.pyQPanda.SingleGateTransferType(value: int)[源代码]¶
Quantum single gate transfer type
Members:
SINGLE_GATE_INVALID
ARBITRARY_ROTATION
DOUBLE_CONTINUOUS
SINGLE_CONTINUOUS_DISCRETE
DOUBLE_DISCRETE
- ARBITRARY_ROTATION: ClassVar[SingleGateTransferType] = Ellipsis[源代码]¶
- DOUBLE_CONTINUOUS: ClassVar[SingleGateTransferType] = Ellipsis[源代码]¶
- DOUBLE_DISCRETE: ClassVar[SingleGateTransferType] = Ellipsis[源代码]¶
- SINGLE_CONTINUOUS_DISCRETE: ClassVar[SingleGateTransferType] = Ellipsis[源代码]¶
- SINGLE_GATE_INVALID: ClassVar[SingleGateTransferType] = Ellipsis[源代码]¶
- class pyqpanda.pyQPanda.SparseQVM[源代码]¶
Bases:
QuantumMachine
quantum sparse machine class
- directlyRun(arg0: QProg) Dict[str, bool] [源代码]¶
Run the quantum program and get the measurement results as a dictionary.
- Args:
qprog: The quantum program to execute.
- Returns:
Dict[str, bool]: The result of the quantum program execution in one shot.
- directly_run(arg0: QProg) Dict[str, bool] [源代码]¶
Run the quantum program and get the measurement results as a dictionary.
- Args:
qprog: The quantum program to execute.
- Returns:
The measurement results of the quantum machine.
- prob_run_dict(arg0: QProg) Dict[str, float] [源代码]¶
Run the quantum program and get the measurement results as a dictionary.
- Args:
qprog: The quantum program to execute.
- Returns:
A dictionary containing the measurement results of the quantum machine.
- run_with_configuration(arg0: QProg, arg1: List[ClassicalCondition], arg2: int) Dict[str, int] [源代码]¶
Run the quantum program with the specified configuration and get the measurement results as a dictionary.
- Args:
qprog: The quantum program to execute.
cbits: The quantum classical bits.
shots: The number of sample shots.
- Returns:
The measurement results of the quantum machine.
- class pyqpanda.pyQPanda.Stabilizer[源代码]¶
Bases:
QuantumMachine
simulator for basic clifford simulator
- prob_run_dict(qprog: QProg, qubits: QVec, select_max: int = -1) Dict[str, float] [源代码]¶
Run quantum program and get probabilities.
- Args:
qprog: Quantum program to execute.
qubits: Qubits to be measured for probabilities.
select_max: Optional, selects the maximum number of probabilities to return.
- Returns:
Probabilities result of the quantum program.
- run_with_configuration(qprog: QProg, shot: int) Dict[str, int] [源代码]¶
Run quantum program and get shots result.
- Args:
qprog: Quantum program to execute.
shot: Number of measurement shots.
- Returns:
Shots result of the quantum program.
- set_noise_model(arg0: NoiseModel, arg1: GateType, arg2: float) None [源代码]¶
- set_noise_model(arg0: NoiseModel, arg1: List[GateType], arg2: float) None
- set_noise_model(arg0: NoiseModel, arg1: GateType, arg2: float, arg3: QVec) None
- set_noise_model(arg0: NoiseModel, arg1: List[GateType], arg2: float, arg3: QVec) None
- set_noise_model(arg0: NoiseModel, arg1: GateType, arg2: float, arg3: List[QVec]) None
Set a noise model for the Stabilizer simulator with a specific gate type, probability, and multiple targeted qubits.
- Args:
noise_model: The noise model to apply (e.g., bit-flip, phase-flip, etc.).
gate_type: The specific gate type associated with the noise model.
probability: The probability of the noise occurring.
target_qubits: A vector of qubit vectors targeted by the noise model.
- Returns:
None.
- class pyqpanda.pyQPanda.UpdateMode(value: int)[源代码]¶
quantum imaginary time evolution update mode
Members:
GD_VALUE
GD_DIRECTION
- GD_DIRECTION: ClassVar[UpdateMode] = Ellipsis[源代码]¶
- GD_VALUE: ClassVar[UpdateMode] = Ellipsis[源代码]¶
- class pyqpanda.pyQPanda.VanillaGradientDescentOptimizer(arg0: var, arg1: float, arg2: float, arg3: OptimizerMode)[源代码]¶
variational quantum VanillaGradientDescentOptimizer
- class pyqpanda.pyQPanda.VariationalQuantumCircuit[源代码]¶
- class pyqpanda.pyQPanda.VariationalQuantumCircuit(arg0: QCircuit)
variational quantum CIRCUIT class
- control(arg0: QVec) VariationalQuantumCircuit [源代码]¶
- dagger() VariationalQuantumCircuit [源代码]¶
- insert(arg0: VariationalQuantumGate_I) VariationalQuantumCircuit [源代码]¶
- insert(arg0: VariationalQuantumGate_H) VariationalQuantumCircuit
- insert(arg0: VariationalQuantumGate_X) VariationalQuantumCircuit
- insert(arg0: VariationalQuantumGate_Y) VariationalQuantumCircuit
- insert(arg0: VariationalQuantumGate_T) VariationalQuantumCircuit
- insert(arg0: VariationalQuantumGate_S) VariationalQuantumCircuit
- insert(arg0: VariationalQuantumGate_Z) VariationalQuantumCircuit
- insert(arg0: VariationalQuantumGate_X1) VariationalQuantumCircuit
- insert(arg0: VariationalQuantumGate_Y1) VariationalQuantumCircuit
- insert(arg0: VariationalQuantumGate_Z1) VariationalQuantumCircuit
- insert(arg0: VariationalQuantumGate_U1) VariationalQuantumCircuit
- insert(arg0: VariationalQuantumGate_U2) VariationalQuantumCircuit
- insert(arg0: VariationalQuantumGate_U3) VariationalQuantumCircuit
- insert(arg0: VariationalQuantumGate_U4) VariationalQuantumCircuit
- insert(arg0: VariationalQuantumGate_RX) VariationalQuantumCircuit
- insert(arg0: VariationalQuantumGate_RY) VariationalQuantumCircuit
- insert(arg0: VariationalQuantumGate_RZ) VariationalQuantumCircuit
- insert(arg0: VariationalQuantumGate_CNOT) VariationalQuantumCircuit
- insert(arg0: VariationalQuantumGate_CR) VariationalQuantumCircuit
- insert(arg0: VariationalQuantumGate_CZ) VariationalQuantumCircuit
- insert(arg0: VariationalQuantumGate_CRX) VariationalQuantumCircuit
- insert(arg0: VariationalQuantumGate_CRY) VariationalQuantumCircuit
- insert(arg0: VariationalQuantumGate_CRZ) VariationalQuantumCircuit
- insert(arg0: VariationalQuantumGate_SWAP) VariationalQuantumCircuit
- insert(arg0: VariationalQuantumGate_iSWAP) VariationalQuantumCircuit
- insert(arg0: VariationalQuantumGate_SqiSWAP) VariationalQuantumCircuit
- insert(arg0: VariationalQuantumCircuit) VariationalQuantumCircuit
- insert(arg0: QCircuit) VariationalQuantumCircuit
- insert(arg0: QGate) VariationalQuantumCircuit
- class pyqpanda.pyQPanda.VariationalQuantumGate(*args, **kwargs)[源代码]¶
variational quantum gate base class
- class pyqpanda.pyQPanda.VariationalQuantumGate_CNOT(arg0: Qubit, arg1: Qubit)[源代码]¶
Bases:
VariationalQuantumGate
variational quantum CNOT gate class
- control(arg0: QVec) VariationalQuantumGate_CNOT [源代码]¶
- dagger() VariationalQuantumGate_CNOT [源代码]¶
- class pyqpanda.pyQPanda.VariationalQuantumGate_CR(arg0: Qubit, arg1: Qubit, arg2: float)[源代码]¶
- class pyqpanda.pyQPanda.VariationalQuantumGate_CR(arg0: Qubit, arg1: Qubit, arg2: var)
- class pyqpanda.pyQPanda.VariationalQuantumGate_CR(arg0: VariationalQuantumGate_CR)
Bases:
VariationalQuantumGate
variational quantum CR gate class
- control(arg0: QVec) VariationalQuantumGate_CR [源代码]¶
- dagger() VariationalQuantumGate_CR [源代码]¶
- class pyqpanda.pyQPanda.VariationalQuantumGate_CRX(arg0: Qubit, arg1: QVec, arg2: float)[源代码]¶
- class pyqpanda.pyQPanda.VariationalQuantumGate_CRX(arg0: Qubit, arg1: QVec, arg2: var)
- class pyqpanda.pyQPanda.VariationalQuantumGate_CRX(arg0: VariationalQuantumGate_CRX)
Bases:
VariationalQuantumGate
variational quantum CRX gate class
- control(arg0: QVec) VariationalQuantumGate_CRX [源代码]¶
- dagger() VariationalQuantumGate_CRX [源代码]¶
- class pyqpanda.pyQPanda.VariationalQuantumGate_CRY(arg0: Qubit, arg1: QVec, arg2: float)[源代码]¶
- class pyqpanda.pyQPanda.VariationalQuantumGate_CRY(arg0: Qubit, arg1: QVec, arg2: var)
- class pyqpanda.pyQPanda.VariationalQuantumGate_CRY(arg0: VariationalQuantumGate_CRY)
Bases:
VariationalQuantumGate
variational quantum CRY gate class
- control(arg0: QVec) VariationalQuantumGate_CRY [源代码]¶
- dagger() VariationalQuantumGate_CRY [源代码]¶
- class pyqpanda.pyQPanda.VariationalQuantumGate_CRZ(arg0: Qubit, arg1: QVec, arg2: float)[源代码]¶
- class pyqpanda.pyQPanda.VariationalQuantumGate_CRZ(arg0: Qubit, arg1: QVec, arg2: var)
- class pyqpanda.pyQPanda.VariationalQuantumGate_CRZ(arg0: VariationalQuantumGate_CRZ)
Bases:
VariationalQuantumGate
variational quantum CRZ gate class
- control(arg0: QVec) VariationalQuantumGate_CRZ [源代码]¶
- dagger() VariationalQuantumGate_CRZ [源代码]¶
- class pyqpanda.pyQPanda.VariationalQuantumGate_CU(arg0: Qubit, arg1: Qubit, arg2: float, arg3: float, arg4: float, arg5: float)[源代码]¶
- class pyqpanda.pyQPanda.VariationalQuantumGate_CU(arg0: Qubit, arg1: Qubit, arg2: var, arg3: var, arg4: var, arg5: var)
- class pyqpanda.pyQPanda.VariationalQuantumGate_CU(arg0: VariationalQuantumGate_CU)
Bases:
VariationalQuantumGate
variational quantum CU gate class
- control(arg0: QVec) VariationalQuantumGate_CU [源代码]¶
- dagger() VariationalQuantumGate_CU [源代码]¶
- class pyqpanda.pyQPanda.VariationalQuantumGate_CZ(arg0: Qubit, arg1: Qubit)[源代码]¶
Bases:
VariationalQuantumGate
variational quantum CZ gate class
- control(arg0: QVec) VariationalQuantumGate_CZ [源代码]¶
- dagger() VariationalQuantumGate_CZ [源代码]¶
- class pyqpanda.pyQPanda.VariationalQuantumGate_H(arg0: Qubit)[源代码]¶
Bases:
VariationalQuantumGate
variational quantum H gate class
- control(arg0: QVec) VariationalQuantumGate_H [源代码]¶
- dagger() VariationalQuantumGate_H [源代码]¶
- class pyqpanda.pyQPanda.VariationalQuantumGate_I(arg0: Qubit)[源代码]¶
Bases:
VariationalQuantumGate
variational quantum I gate class
- control(arg0: QVec) VariationalQuantumGate_I [源代码]¶
- dagger() VariationalQuantumGate_I [源代码]¶
- class pyqpanda.pyQPanda.VariationalQuantumGate_RX(arg0: Qubit, arg1: var)[源代码]¶
- class pyqpanda.pyQPanda.VariationalQuantumGate_RX(arg0: Qubit, arg1: float)
Bases:
VariationalQuantumGate
variational quantum RX gate class
- control(arg0: QVec) VariationalQuantumGate_RX [源代码]¶
- dagger() VariationalQuantumGate_RX [源代码]¶
- class pyqpanda.pyQPanda.VariationalQuantumGate_RY(arg0: Qubit, arg1: var)[源代码]¶
- class pyqpanda.pyQPanda.VariationalQuantumGate_RY(arg0: Qubit, arg1: float)
Bases:
VariationalQuantumGate
variational quantum RY gate class
- control(arg0: QVec) VariationalQuantumGate_RY [源代码]¶
- dagger() VariationalQuantumGate_RY [源代码]¶
- class pyqpanda.pyQPanda.VariationalQuantumGate_RZ(arg0: Qubit, arg1: var)[源代码]¶
- class pyqpanda.pyQPanda.VariationalQuantumGate_RZ(arg0: Qubit, arg1: float)
Bases:
VariationalQuantumGate
variational quantum RZ gate class
- control(arg0: QVec) VariationalQuantumGate_RZ [源代码]¶
- dagger() VariationalQuantumGate_RZ [源代码]¶
- class pyqpanda.pyQPanda.VariationalQuantumGate_S(arg0: Qubit)[源代码]¶
Bases:
VariationalQuantumGate
variational quantum S gate class
- control(arg0: QVec) VariationalQuantumGate_S [源代码]¶
- dagger() VariationalQuantumGate_S [源代码]¶
- class pyqpanda.pyQPanda.VariationalQuantumGate_SWAP(arg0: Qubit, arg1: Qubit)[源代码]¶
Bases:
VariationalQuantumGate
variational quantum SWAP gate class
- control(arg0: QVec) VariationalQuantumGate_SWAP [源代码]¶
- dagger() VariationalQuantumGate_SWAP [源代码]¶
- class pyqpanda.pyQPanda.VariationalQuantumGate_SqiSWAP(arg0: Qubit, arg1: Qubit)[源代码]¶
Bases:
VariationalQuantumGate
variational quantum SqiSWAP gate class
- control(arg0: QVec) VariationalQuantumGate_SqiSWAP [源代码]¶
- dagger() VariationalQuantumGate_SqiSWAP [源代码]¶
- class pyqpanda.pyQPanda.VariationalQuantumGate_T(arg0: Qubit)[源代码]¶
Bases:
VariationalQuantumGate
variational quantum T gate class
- control(arg0: QVec) VariationalQuantumGate_T [源代码]¶
- dagger() VariationalQuantumGate_T [源代码]¶
- class pyqpanda.pyQPanda.VariationalQuantumGate_U1(arg0: Qubit, arg1: var)[源代码]¶
- class pyqpanda.pyQPanda.VariationalQuantumGate_U1(arg0: Qubit, arg1: float)
Bases:
VariationalQuantumGate
variational quantum U1 gate class
- control(arg0: QVec) VariationalQuantumGate_U1 [源代码]¶
- dagger() VariationalQuantumGate_U1 [源代码]¶
- class pyqpanda.pyQPanda.VariationalQuantumGate_U2(arg0: Qubit, arg1: var, arg2: var)[源代码]¶
- class pyqpanda.pyQPanda.VariationalQuantumGate_U2(arg0: Qubit, arg1: float, arg2: float)
Bases:
VariationalQuantumGate
variational quantum U2 gate class
- control(arg0: QVec) VariationalQuantumGate_U2 [源代码]¶
- dagger() VariationalQuantumGate_U2 [源代码]¶
- class pyqpanda.pyQPanda.VariationalQuantumGate_U3(arg0: Qubit, arg1: var, arg2: var, arg3: var)[源代码]¶
- class pyqpanda.pyQPanda.VariationalQuantumGate_U3(arg0: Qubit, arg1: float, arg2: float, arg3: float)
Bases:
VariationalQuantumGate
variational quantum U3 gate class
- control(arg0: QVec) VariationalQuantumGate_U3 [源代码]¶
- dagger() VariationalQuantumGate_U3 [源代码]¶
- class pyqpanda.pyQPanda.VariationalQuantumGate_U4(arg0: Qubit, arg1: var, arg2: var, arg3: var, arg4: var)[源代码]¶
- class pyqpanda.pyQPanda.VariationalQuantumGate_U4(arg0: Qubit, arg1: float, arg2: float, arg3: float, arg4: float)
Bases:
VariationalQuantumGate
variational quantum U4 gate class
- control(arg0: QVec) VariationalQuantumGate_U4 [源代码]¶
- dagger() VariationalQuantumGate_U4 [源代码]¶
- class pyqpanda.pyQPanda.VariationalQuantumGate_X(arg0: Qubit)[源代码]¶
Bases:
VariationalQuantumGate
variational quantum X gate class
- control(arg0: QVec) VariationalQuantumGate_X [源代码]¶
- dagger() VariationalQuantumGate_X [源代码]¶
- class pyqpanda.pyQPanda.VariationalQuantumGate_X1(arg0: Qubit)[源代码]¶
Bases:
VariationalQuantumGate
variational quantum X1 gate class
- control(arg0: QVec) VariationalQuantumGate_X1 [源代码]¶
- dagger() VariationalQuantumGate_X1 [源代码]¶
- class pyqpanda.pyQPanda.VariationalQuantumGate_Y(arg0: Qubit)[源代码]¶
Bases:
VariationalQuantumGate
variational quantum Y gate class
- control(arg0: QVec) VariationalQuantumGate_Y [源代码]¶
- dagger() VariationalQuantumGate_Y [源代码]¶
- class pyqpanda.pyQPanda.VariationalQuantumGate_Y1(arg0: Qubit)[源代码]¶
Bases:
VariationalQuantumGate
variational quantum Y1 gate class
- control(arg0: QVec) VariationalQuantumGate_Y1 [源代码]¶
- dagger() VariationalQuantumGate_Y1 [源代码]¶
- class pyqpanda.pyQPanda.VariationalQuantumGate_Z(arg0: Qubit)[源代码]¶
Bases:
VariationalQuantumGate
variational quantum Z gate class
- control(arg0: QVec) VariationalQuantumGate_Z [源代码]¶
- dagger() VariationalQuantumGate_Z [源代码]¶
- class pyqpanda.pyQPanda.VariationalQuantumGate_Z1(arg0: Qubit)[源代码]¶
Bases:
VariationalQuantumGate
variational quantum Z1 gate class
- control(arg0: QVec) VariationalQuantumGate_Z1 [源代码]¶
- dagger() VariationalQuantumGate_Z1 [源代码]¶
- class pyqpanda.pyQPanda.VariationalQuantumGate_iSWAP(arg0: Qubit, arg1: Qubit)[源代码]¶
Bases:
VariationalQuantumGate
variational quantum iSWAP gate class
- control(arg0: QVec) VariationalQuantumGate_iSWAP [源代码]¶
- dagger() VariationalQuantumGate_iSWAP [源代码]¶
- class pyqpanda.pyQPanda.em_method(value: int)[源代码]¶
origin quantum real chip error_mitigation type
Members:
ZNE
PEC
READ_OUT
- class pyqpanda.pyQPanda.expression(arg0: var)[源代码]¶
variational quantum expression class
- class pyqpanda.pyQPanda.real_chip_type(value: int)[源代码]¶
origin quantum real chip type enum
Members:
origin_wuyuan_d3
origin_wuyuan_d4
origin_wuyuan_d5
origin_72
- origin_72: ClassVar[real_chip_type] = Ellipsis[源代码]¶
- origin_wuyuan_d3: ClassVar[real_chip_type] = Ellipsis[源代码]¶
- origin_wuyuan_d4: ClassVar[real_chip_type] = Ellipsis[源代码]¶
- origin_wuyuan_d5: ClassVar[real_chip_type] = Ellipsis[源代码]¶
- class pyqpanda.pyQPanda.var(arg0: float)[源代码]¶
- class pyqpanda.pyQPanda.var(arg0: numpy.ndarray[numpy.float64[m, n], flags.writeable])
- class pyqpanda.pyQPanda.var(arg0: float, arg1: bool)
- class pyqpanda.pyQPanda.var(arg0: numpy.ndarray[numpy.float64[m, n], flags.writeable], arg1: bool)
quantum variational class
- pyqpanda.pyQPanda.BARRIER(qubit: Qubit) QGate [源代码]¶
- pyqpanda.pyQPanda.BARRIER(qubit_list: int) QGate
- pyqpanda.pyQPanda.BARRIER(qubit_list: QVec) QGate
- pyqpanda.pyQPanda.BARRIER(qubit_addr_list: List[int]) QGate
Create a BARRIER gate for a list of qubit addresses.
- Args:
qubit_addr_list: a list of integers representing the addresses of the qubits.
- Returns:
A BARRIER node representing the operation.
- pyqpanda.pyQPanda.CNOT(control_qubit: Qubit, target_qubit: Qubit) QGate [源代码]¶
- pyqpanda.pyQPanda.CNOT(control_qubit_list: QVec, target_qubit_list: QVec) QCircuit
- pyqpanda.pyQPanda.CNOT(control_qubit_addr: int, target_qubit_addr: int) QGate
- pyqpanda.pyQPanda.CNOT(control_qubit_addr_list: List[int], target_qubit_addr_list: List[int]) QCircuit
- Returns:
a CNOT gate node
- Raises:
run_fail: An error occurred in construct gate node
- pyqpanda.pyQPanda.CP(control_qubit: Qubit, target_qubit: Qubit, theta_angle: float) QGate [源代码]¶
- pyqpanda.pyQPanda.CP(control_qubit_list: QVec, target_qubit_list: QVec, theta_angle: float) QCircuit
- pyqpanda.pyQPanda.CP(control_qubit_addr: int, target_qubit_addr: int, theta_angle: float) QGate
- pyqpanda.pyQPanda.CP(control_qubit_addr_list: List[int], target_qubit_addr_list: List[int], theta_angle: float) QCircuit
- Returns:
a CP gate node
- Raises:
run_fail: An error occurred in construct gate node
- pyqpanda.pyQPanda.CR(control_qubit: Qubit, target_qubit: Qubit, theta_angle: float) QGate [源代码]¶
- pyqpanda.pyQPanda.CR(control_qubit_list: QVec, target_qubit_list: QVec, theta_angle: float) QCircuit
- pyqpanda.pyQPanda.CR(control_qubit_addr: int, target_qubit_addr: int, theta_angle: float) QGate
- pyqpanda.pyQPanda.CR(control_qubit_addr_list: List[int], target_qubit_addr_list: List[int], theta_angle: float) QCircuit
- Returns:
a CR gate node
- Raises:
run_fail: An error occurred in construct gate node
- pyqpanda.pyQPanda.CU(alpha_angle: float, beta_angle: float, gamma_angle: float, delta_angle: float, control_qubit: Qubit, target_qubit: Qubit) QGate [源代码]¶
- pyqpanda.pyQPanda.CU(alpha_angle: float, beta_angle: float, gamma_angle: float, delta_angle: float, control_qubit_list: QVec, target_qubi_list: QVec) QCircuit
- pyqpanda.pyQPanda.CU(matrix: List[complex], control_qubit: Qubit, target_qubit: Qubit) QGate
- pyqpanda.pyQPanda.CU(matrix: List[complex], control_qubit_list: QVec, target_qubit_list: QVec) QCircuit
- pyqpanda.pyQPanda.CU(control_qubit: Qubit, target_qubit: Qubit, alpha_angle: float, beta_angle: float, gamma_angle: float, delta_angle: float) QGate
- pyqpanda.pyQPanda.CU(control_qubit_list: QVec, target_qubit_list: QVec, alpha_angle: float, beta_angle: float, gamma_angle: float, delta_angle: float) QCircuit
- pyqpanda.pyQPanda.CU(control_qubit_addr: int, target_qubit_addr: int, alpha_angle: float, beta_angle: float, gamma_angle: float, delta_angle: float) QGate
- pyqpanda.pyQPanda.CU(control_qubit_addr_list: List[int], target_qubit_addr_list: List[int], alpha_angle: float, beta_angle: float, gamma_angle: float, delta_angle: float) QCircuit
- pyqpanda.pyQPanda.CU(control_qubit: Qubit, target_qubit: Qubit, matrix: List[complex]) QGate
- pyqpanda.pyQPanda.CU(control_qubit_list: QVec, target_qubit_list: QVec, matrix: List[complex]) QCircuit
- pyqpanda.pyQPanda.CU(control_qubit_addr: int, target_qubit_addr: int, matrix: List[complex]) QGate
- pyqpanda.pyQPanda.CU(control_qubit_addr_list: List[int], target_qubit_addr_list: List[int], matrix: List[complex]) QCircuit
Create a CU gate.
- Args:
control_qubit_addr_list (const std::vector<int> &): List of control qubit addresses.
target_qubit_addr_list (const std::vector<int> &): List of target qubit addresses.
matrix (QStat &): The CU gate matrix.
- Returns:
A CU node representing the operation.
- pyqpanda.pyQPanda.CZ(control_qubit: Qubit, target_qubit: Qubit) QGate [源代码]¶
- pyqpanda.pyQPanda.CZ(control_qubit_list: QVec, target_qubit_list: QVec) QCircuit
- pyqpanda.pyQPanda.CZ(control_qubit_addr: int, target_qubit_addr: int) QGate
- pyqpanda.pyQPanda.CZ(control_qubit_addr_list: List[int], target_qubit_addr_list: List[int]) QCircuit
- Returns:
a CZ gate node
- Raises:
run_fail: An error occurred in construct gate node
- pyqpanda.pyQPanda.CreateEmptyCircuit() QCircuit [源代码]¶
Create an empty QCircuit container.
- Args:
none
- Returns:
result: An empty QCircuit.
- pyqpanda.pyQPanda.CreateEmptyQProg() QProg [源代码]¶
Create an empty QProg container.
- Args:
none
- Returns:
an empty QProg.
- pyqpanda.pyQPanda.CreateIfProg(classical_condition: ClassicalCondition, true_node: QProg) QIfProg [源代码]¶
- pyqpanda.pyQPanda.CreateIfProg(classical_condition: ClassicalCondition, true_node: QProg, false_node: QProg) QIfProg
Create an IfProg that executes one of two quantum operations based on a classical condition.
- Args:
classical_condition: A classical condition representing the if condition.
true_node: The quantum operations to execute if the condition is true.
false_node: The quantum operations to execute if the condition is false.
- Returns:
IfProg: The program that performs the specified operations based on the condition.
- pyqpanda.pyQPanda.CreateWhileProg(classical_condition: ClassicalCondition, true_node: QProg) QWhileProg [源代码]¶
Create a WhileProg that executes while a classical condition is true.
- Args:
classical_condition: A classical condition representing the while-loop condition.
true_node: The quantum operations to execute while the condition is true.
- Returns:
WhileProg: The program that performs the specified operations while the condition holds.
- pyqpanda.pyQPanda.Grover(*args, **kwargs) Any [源代码]¶
Quantum grover circuit
- Args:
qvec: qubit list Classical_condition: quantum Classical condition QuantumMachine: quantum machine
- Returns:
result : Grover circuit
- Raises:
run_fail: An error occurred in Grover
- pyqpanda.pyQPanda.Grover_search(list: List[int], Classical_condition: ClassicalCondition, QuantumMachine: Grover_search.QuantumMachine, repeat: int = 2) Grover_search.list [源代码]¶
- pyqpanda.pyQPanda.Grover_search(list: List[str], Classical_condition: str, QuantumMachine: Grover_search.QuantumMachine, data: int = 2) Grover_search.list
use Grover algorithm to search target data, return QProg and search_result
- pyqpanda.pyQPanda.H(qubit: Qubit) QGate [源代码]¶
- pyqpanda.pyQPanda.H(qubit_list: QVec) QCircuit
- pyqpanda.pyQPanda.H(qubit_addr: int) QGate
- pyqpanda.pyQPanda.H(qubit_addr_list: List[int]) QCircuit
Create a H gate
- Args:
qubit_list_addr: quantum gate qubits list addr
- Returns:
a H gate node
- Raises:
run_fail: An error occurred in construct gate node
- pyqpanda.pyQPanda.HHL_solve_linear_equations(matrix_A: List[complex], data_b: List[float], precision_cnt: int = 0) List[complex] [源代码]¶
Use HHL algorithm to solve the target linear systems of equations : Ax = b
- Args:
matrix_A: a unitary matrix or Hermitian N*N matrix with N = 2 ^ n
data_b: a given vector
- precision_cnt: The count of digits after the decimal point
default is 0, indicates that there are only integer solutions.
- Returns:
QStat The solution of equation, i.e.x for Ax = b
- Notes:
The higher the precision is, the more qubit number and circuit - depth will be, for example: 1 - bit precision, 4 additional qubits are required, for 2 - bit precision, we need 7 additional qubits, and so on.
- pyqpanda.pyQPanda.I(qubit: Qubit) QGate [源代码]¶
- pyqpanda.pyQPanda.I(qubit_list: QVec) QCircuit
- pyqpanda.pyQPanda.I(qubit_addr: int) QGate
- pyqpanda.pyQPanda.I(qubit_addr_list: List[int]) QCircuit
Create a I gate
- Args:
qubit_list_addr: quantum gate qubits list addr
- Returns:
a I gate node
- Raises:
run_fail: An error occurred in construct gate node
- pyqpanda.pyQPanda.MAJ(arg0: Qubit, arg1: Qubit, arg2: Qubit) QCircuit [源代码]¶
Quantum adder MAJ module
- pyqpanda.pyQPanda.MAJ2(arg0: QVec, arg1: QVec, arg2: Qubit) QCircuit [源代码]¶
Quantum adder MAJ2 module
- pyqpanda.pyQPanda.MS(first_qubit: Qubit, second_qubit: Qubit) QGate [源代码]¶
- pyqpanda.pyQPanda.MS(first_qubit_list: QVec, second_qubit_list: QVec) QCircuit
- pyqpanda.pyQPanda.MS(first_qubit_addr: int, second_qubit_addr: int) QGate
- pyqpanda.pyQPanda.MS(first_qubit_addr_list: List[int], second_qubit_addr_list: List[int]) QCircuit
- Returns:
a MS gate node
- Raises:
run_fail: An error occurred in construct gate node
- pyqpanda.pyQPanda.Measure(qubit: Qubit, cbit: ClassicalCondition) QMeasure [源代码]¶
- pyqpanda.pyQPanda.Measure(qubit: Qubit, cbit: CBit) QMeasure
- pyqpanda.pyQPanda.Measure(qubit_addr: int, cbit_addr: int) QMeasure
Create a measure node.
- Args:
qubit_addr: address of the qubit to be measured.
cbit_addr: address of the classical bit that stores the quantum measurement result.
- Returns:
a quantum measure node.
- pyqpanda.pyQPanda.OBMT_mapping(prog: QProg, quantum_machine: QuantumMachine, b_optimization: bool = False, max_partial: int = 4294967295, max_children: int = 4294967295, config_data: str = 'QPandaConfig.json') QProg [源代码]¶
- pyqpanda.pyQPanda.OBMT_mapping(prog: QProg, quantum_machine: QuantumMachine, b_optimization: bool, arch_matrix: numpy.ndarray[numpy.float64[m, n]]) QProg
OPT_BMT mapping
- Args:
prog: the target prog
quantum_machine: quantum machine
b_optimization: whether open the optimization
arch_matrix: arch graph matrix
- Returns:
mapped quantum program
- pyqpanda.pyQPanda.P(qubit: Qubit, angle: float) QGate [源代码]¶
- pyqpanda.pyQPanda.P(qubit_list: QVec, angle: float) QCircuit
- pyqpanda.pyQPanda.P(qubit_addr: int, angle: float) QGate
- pyqpanda.pyQPanda.P(qubit_addr_list: List[int], angle: float) QCircuit
Create a P gate Args:
qubit_list_addr: quantum gate qubits list addr args : quantum gate angles
- Returns:
a P gate node
- Raises:
run_fail: An error occurred in construct gate node
- pyqpanda.pyQPanda.PMeasure(arg0: QVec, arg1: int) List[Tuple[int, float]] [源代码]¶
Deprecated, use pmeasure instead.
- Args:
QVec: pmeasure qubits list.
select_num: result select num.
- Returns:
result: pmeasure qubits result.
- pyqpanda.pyQPanda.PMeasure_no_index(arg0: QVec) List[float] [源代码]¶
Deprecated, use pmeasure_no_index instead.
- Args:
QVec: pmeasure qubits list.
- Returns:
result: pmeasure qubits result.
- pyqpanda.pyQPanda.QAdd(arg0: QVec, arg1: QVec, arg2: QVec) QCircuit [源代码]¶
Quantum adder that supports signed operations, but ignore carry
- pyqpanda.pyQPanda.QAdder(arg0: QVec, arg1: QVec, arg2: Qubit, arg3: Qubit) QCircuit [源代码]¶
Quantum adder with carry
- pyqpanda.pyQPanda.QAdderIgnoreCarry(arg0: QVec, arg1: QVec, arg2: Qubit) QCircuit [源代码]¶
Args:
QVec: qubits list a QVec: qubits list b QVec: qubits list c Qubit: qubit
Returns:
result : circuit
- Raises:
run_fail: An error occurred in QAdderIgnoreCarry
- pyqpanda.pyQPanda.QComplement(arg0: QVec, arg1: QVec) QCircuit [源代码]¶
Convert quantum state to binary complement representation
- pyqpanda.pyQPanda.QDiv(arg0: QVec, arg1: QVec, arg2: QVec, arg3: QVec, arg4: ClassicalCondition) QProg [源代码]¶
Quantum division
- pyqpanda.pyQPanda.QDivWithAccuracy(arg0: QVec, arg1: QVec, arg2: QVec, arg3: QVec, arg4: QVec, arg5: List[ClassicalCondition]) QProg [源代码]¶
Args:
QVec: qubits list a QVec: qubits list b QVec: qubits list c QVec: qubits list k QVec: qubits list f QVec: qubits list s list: ClassicalCondition list
Returns:
result : circuit
- Raises:
run_fail: An error occurred in QDivWithAccuracy
- pyqpanda.pyQPanda.QDivider(a: QVec, b: QVec, c: QVec, k: QVec, t: ClassicalCondition) QProg [源代码]¶
Quantum division, only supports positive division, and the highest position of a and b and c is sign bit
- pyqpanda.pyQPanda.QDividerWithAccuracy(a: QVec, b: QVec, c: QVec, k: QVec, f: QVec, s: List[ClassicalCondition]) QProg [源代码]¶
Args:
QVec: qubits list a QVec: qubits list b QVec: qubits list c QVec: qubits list k QVec: qubits list f QVec: qubits list s list: ClassicalCondition list
Returns:
result : circuit
- Raises:
run_fail: An error occurred in QDividerWithAccuracy
- pyqpanda.pyQPanda.QDouble(first_qubit: Qubit, second_qubit: Qubit, matrix: List[complex]) QGate [源代码]¶
- pyqpanda.pyQPanda.QDouble(first_qubit_list: QVec, second_qubit_list: QVec, matrix: List[complex]) QCircuit
- pyqpanda.pyQPanda.QDouble(first_qubit_addr: int, second_qubit_addr: int, matrix: List[complex]) QGate
- pyqpanda.pyQPanda.QDouble(first_qubit_addr_list: List[int], second_qubit_addr_list: List[int], matrix: List[complex]) QCircuit
- Returns:
a QDouble gate node
- Raises:
run_fail: An error occurred in construct gate node
- pyqpanda.pyQPanda.QFT(qubits: QVec) QCircuit [源代码]¶
Build QFT quantum circuit
- Args:
qvec: qubit list
- Returns:
result : qft circuit
- Raises:
run_fail: An error occurred in QFT
- pyqpanda.pyQPanda.QMul(arg0: QVec, arg1: QVec, arg2: QVec, arg3: QVec) QCircuit [源代码]¶
Quantum multiplication
- pyqpanda.pyQPanda.QMultiplier(arg0: QVec, arg1: QVec, arg2: QVec, arg3: QVec) QCircuit [源代码]¶
Quantum multiplication, only supports positive multiplication
- pyqpanda.pyQPanda.QOracle(qubit_list: QVec, matrix: numpy.ndarray[numpy.complex128[m, n]], tol: float = 1e-10) QGate [源代码]¶
Generate QOracle Gate.
- Args:
qubit_list: gate in qubit list.
matrix: gate operator matrix.
- Returns:
Oracle gate.
- pyqpanda.pyQPanda.QPE(control_qubits: QVec, target_qubits: QVec, matrix: List[complex], b_estimate_eigenvalue: bool = False) QCircuit [源代码]¶
Quantum phase estimation
- Args:
control_qubits: control qubit list target_qubits: target qubit list matrix: matrix
- Returns:
result : QPE circuit
- Raises:
run_fail: An error occurred in QPE
- pyqpanda.pyQPanda.RX(qubit: Qubit, angle: float) QGate [源代码]¶
- pyqpanda.pyQPanda.RX(qubit_list: QVec, angle: float) QCircuit
- pyqpanda.pyQPanda.RX(qubit_addr: int, angle: float) QGate
- pyqpanda.pyQPanda.RX(qubit_addr_list: List[int], angle: float) QCircuit
Create a RX gate Args:
qubit_list_addr: quantum gate qubits list addr args : quantum gate angles
- Returns:
a RX gate node
- Raises:
run_fail: An error occurred in construct gate node
- pyqpanda.pyQPanda.RXX(control_qubit: Qubit, target_qubit: Qubit, alpha_angle: float) QGate [源代码]¶
- pyqpanda.pyQPanda.RXX(control_qubit_list: QVec, target_qubit_list: QVec, alpha_angle: float) QCircuit
- pyqpanda.pyQPanda.RXX(control_qubit_addr: int, target_qubit_addr: int, alpha_angle: float) QGate
- pyqpanda.pyQPanda.RXX(control_qubit_addr_list: List[int], target_qubit_addr_list: List[int], alpha_angle: float) QCircuit
Create a RXX gate
- Args:
qubit addr list : control qubit addr list qubit addr list : target qubit addr list double: gate rotation angle theta
- Returns:
a RXX gate node
- Raises:
run_fail: An error occurred in construct gate node
- pyqpanda.pyQPanda.RY(qubit: Qubit, angle: float) QGate [源代码]¶
- pyqpanda.pyQPanda.RY(qubit_list: QVec, angle: float) QCircuit
- pyqpanda.pyQPanda.RY(qubit_addr: int, angle: float) QGate
- pyqpanda.pyQPanda.RY(qubit_addr_list: List[int], angle: float) QCircuit
Create a RY gate Args:
qubit_list_addr: quantum gate qubits list addr args : quantum gate angles
- Returns:
a RY gate node
- Raises:
run_fail: An error occurred in construct gate node
- pyqpanda.pyQPanda.RYY(control_qubit: Qubit, target_qubit: Qubit, alpha_angle: float) QGate [源代码]¶
- pyqpanda.pyQPanda.RYY(control_qubit_list: QVec, target_qubit_list: QVec, alpha_angle: float) QCircuit
- pyqpanda.pyQPanda.RYY(control_qubit_addr: int, target_qubit_addr: int, alpha_angle: float) QGate
- pyqpanda.pyQPanda.RYY(control_qubit_addr_list: List[int], target_qubit_addr_list: List[int], alpha_angle: float) QCircuit
Create a RYY gate
- Args:
qubit addr list : control qubit addr list qubit addr list : target qubit addr list double: gate rotation angle theta
- Returns:
a RYY gate node
- Raises:
run_fail: An error occurred in construct gate node
- pyqpanda.pyQPanda.RZ(qubit: Qubit, angle: float) QGate [源代码]¶
- pyqpanda.pyQPanda.RZ(qubit_list: QVec, angle: float) QCircuit
- pyqpanda.pyQPanda.RZ(qubit_addr: int, angle: float) QGate
- pyqpanda.pyQPanda.RZ(qubit_addr_list: List[int], angle: float) QCircuit
Create a RZ gate Args:
qubit_list_addr: quantum gate qubits list addr args : quantum gate angles
- Returns:
a RZ gate node
- Raises:
run_fail: An error occurred in construct gate node
- pyqpanda.pyQPanda.RZX(control_qubit: Qubit, target_qubit: Qubit, alpha_angle: float) QGate [源代码]¶
- pyqpanda.pyQPanda.RZX(control_qubit_list: QVec, target_qubit_list: QVec, alpha_angle: float) QCircuit
- pyqpanda.pyQPanda.RZX(control_qubit_addr: int, target_qubit_addr: int, alpha_angle: float) QGate
- pyqpanda.pyQPanda.RZX(control_qubit_addr_list: List[int], target_qubit_addr_list: List[int], alpha_angle: float) QCircuit
Create a RZX gate
- Args:
qubit addr list : control qubit addr list qubit addr list : target qubit addr list double: gate rotation angle theta
- Returns:
a RZX gate node
- Raises:
run_fail: An error occurred in construct gate node
- pyqpanda.pyQPanda.RZZ(control_qubit: Qubit, target_qubit: Qubit, alpha_angle: float) QGate [源代码]¶
- pyqpanda.pyQPanda.RZZ(control_qubit_list: QVec, target_qubit_list: QVec, alpha_angle: float) QCircuit
- pyqpanda.pyQPanda.RZZ(control_qubit_addr: int, target_qubit_addr: int, alpha_angle: float) QGate
- pyqpanda.pyQPanda.RZZ(control_qubit_addr_list: List[int], target_qubit_addr_list: List[int], alpha_angle: float) QCircuit
Create a RZZ gate
- Args:
qubit addr list : control qubit addr list qubit addr list : target qubit addr list double: gate rotation angle theta
- Returns:
a RZZ gate node
- Raises:
run_fail: An error occurred in construct gate node
- pyqpanda.pyQPanda.Reset(qubit: Qubit) QReset [源代码]¶
- pyqpanda.pyQPanda.Reset(qubit_addr: int) QReset
Create a Reset node.
- Args:
qubit_addr (int): Address of the qubit to be reset.
- Returns:
A Reset node representing the operation.
- pyqpanda.pyQPanda.S(qubit: Qubit) QGate [源代码]¶
- pyqpanda.pyQPanda.S(qubit_list: QVec) QCircuit
- pyqpanda.pyQPanda.S(qubit_addr: int) QGate
- pyqpanda.pyQPanda.S(qubit_addr_list: List[int]) QCircuit
Create a S gate
- Args:
qubit_list_addr: quantum gate qubits list addr
- Returns:
a S gate node
- Raises:
run_fail: An error occurred in construct gate node
- pyqpanda.pyQPanda.SWAP(first_qubit: Qubit, second_qubit: Qubit) QGate [源代码]¶
- pyqpanda.pyQPanda.SWAP(first_qubit_list: QVec, second_qubit_list: QVec) QCircuit
- pyqpanda.pyQPanda.SWAP(first_qubit_addr: int, second_qubit_addr: int) QGate
- pyqpanda.pyQPanda.SWAP(first_qubit_addr_list: List[int], second_qubit_addr_list: List[int]) QCircuit
- Returns:
a SWAP gate node
- Raises:
run_fail: An error occurred in construct gate node
- pyqpanda.pyQPanda.Shor_factorization(arg0: int) Tuple[bool, Tuple[int, int]] [源代码]¶
Use Shor factorize integer num
- Args:
int: target integer num result: Shor result
- Returns:
result : Shor_factorization search result
- Raises:
run_fail: An error occurred in Shor_factorization
- pyqpanda.pyQPanda.SqiSWAP(first_qubit: Qubit, second_qubit: Qubit) QGate [源代码]¶
- pyqpanda.pyQPanda.SqiSWAP(first_qubit_list: QVec, second_qubit_list: QVec) QCircuit
- pyqpanda.pyQPanda.SqiSWAP(first_qubit_addr: int, second_qubit_addr: int) QGate
- pyqpanda.pyQPanda.SqiSWAP(first_qubit_addr_list: List[int], second_qubit_addr_list: List[int]) QCircuit
- Returns:
a SqiSWAP gate node
- Raises:
run_fail: An error occurred in construct gate node
- pyqpanda.pyQPanda.T(qubit: Qubit) QGate [源代码]¶
- pyqpanda.pyQPanda.T(qubit_list: QVec) QCircuit
- pyqpanda.pyQPanda.T(qubit_addr: int) QGate
- pyqpanda.pyQPanda.T(qubit_addr_list: List[int]) QCircuit
Create a T gate
- Args:
qubit_list_addr: quantum gate qubits list addr
- Returns:
a T gate node
- Raises:
run_fail: An error occurred in construct gate node
- pyqpanda.pyQPanda.Toffoli(control_qubit_first: Qubit, control_qubit_second: Qubit, target_qubit: Qubit) QGate [源代码]¶
- pyqpanda.pyQPanda.Toffoli(control_qubit_addr_first: int, control_qubit_addr_second: int, target_qubit_addr: int) QGate
Create a Toffoli gate.
- Args:
control_qubit_addr_first (int): Address of the first control qubit.
control_qubit_addr_second (int): Address of the second control qubit.
target_qubit_addr (int): Address of the target qubit.
- Returns:
A Toffoli node representing the operation.
- pyqpanda.pyQPanda.U1(qubit: Qubit, angle: float) QGate [源代码]¶
- pyqpanda.pyQPanda.U1(qubit_list: QVec, angle: float) QCircuit
- pyqpanda.pyQPanda.U1(qubit_addr: int, angle: float) QGate
- pyqpanda.pyQPanda.U1(qubit_addr_list: List[int], angle: float) QCircuit
Create a U1 gate Args:
qubit_list_addr: quantum gate qubits list addr args : quantum gate angles
- Returns:
a U1 gate node
- Raises:
run_fail: An error occurred in construct gate node
- pyqpanda.pyQPanda.U2(qubit: Qubit, phi_angle: float, lambda_angle: float) QGate [源代码]¶
- pyqpanda.pyQPanda.U2(qubit_list: QVec, phi_angle: float, lambda_angle: float) QCircuit
- pyqpanda.pyQPanda.U2(qubit_addr: int, phi_angle: float, lambda_angle: float) QGate
- pyqpanda.pyQPanda.U2(qubit_addr_list: List[int], phi_angle: float, lambda_angle: float) QCircuit
Create a U2 gate Args:
qubit_list_addr: quantum gate qubits list addr args : quantum gate angles
- Returns:
a U2 gate node
- Raises:
run_fail: An error occurred in construct gate node
- pyqpanda.pyQPanda.U3(qubit: Qubit, theta_angle: float, phi_angle: float, lambda_angle: float) QGate [源代码]¶
- pyqpanda.pyQPanda.U3(qubit_list: QVec, theta_angle: float, phi_angle: float, lambda_angle: float) QCircuit
- pyqpanda.pyQPanda.U3(qubit_addr: int, theta_angle: float, phi_angle: float, lambda_angle: float) QGate
- pyqpanda.pyQPanda.U3(qubit_addr_list: List[int], theta_angle: float, phi_angle: float, lambda_angle: float) QCircuit
Create a U3 gate Args:
qubit_list_addr: quantum gate qubits list addr args : quantum gate angles
- Returns:
a U3 gate node
- Raises:
run_fail: An error occurred in construct gate node
- pyqpanda.pyQPanda.U4(matrix: List[complex], qubit: Qubit) QGate [源代码]¶
- pyqpanda.pyQPanda.U4(alpha_angle: float, beta_angle: float, gamma_angle: float, delta_angle: float, qubit: Qubit) QGate
- pyqpanda.pyQPanda.U4(qubit: Qubit, matrix: List[complex]) QGate
- pyqpanda.pyQPanda.U4(qubit_list: QVec, matrix: List[complex]) QCircuit
- pyqpanda.pyQPanda.U4(qubit_addr: int, matrix: List[complex]) QGate
- pyqpanda.pyQPanda.U4(qubit_addr_list: List[int], matrix: List[complex]) QCircuit
- pyqpanda.pyQPanda.U4(qubit: Qubit, alpha_anlge: float, beta_anlge: float, gamma_anlge: float, delta_anlge: float) QGate
- pyqpanda.pyQPanda.U4(qubit_list: QVec, alpha_angle: float, beta_angle: float, gamma_angle: float, delta_angle: float) QCircuit
- pyqpanda.pyQPanda.U4(qubit_addr: int, alpha_anlge: float, beta_anlge: float, gamma_anlge: float, delta_anlge: float) QGate
- pyqpanda.pyQPanda.U4(qubit_addr_list: List[int], alpha_anlge: float, beta_anlge: float, gamma_anlge: float, delta_anlge: float) QCircuit
Create a U4 gate.
- Args:
qubit_addr_list: the list of addresses of target qubits for the U4 gate.
alpha_angle: the alpha angle for the U4 gate.
beta_angle: the beta angle for the U4 gate.
gamma_angle: the gamma angle for the U4 gate.
delta_angle: the delta angle for the U4 gate.
- Returns:
A U4 node representing the operation.
- pyqpanda.pyQPanda.UMA(arg0: Qubit, arg1: Qubit, arg2: Qubit) QCircuit [源代码]¶
Quantum adder UMA module
- pyqpanda.pyQPanda.VQG_SqiSWAP_batch(*args, **kwargs) Any [源代码]¶
variational quantum SqiSWAP batch gates
- pyqpanda.pyQPanda.X(qubit: Qubit) QGate [源代码]¶
- pyqpanda.pyQPanda.X(qubit_list: QVec) QCircuit
- pyqpanda.pyQPanda.X(qubit_addr: int) QGate
- pyqpanda.pyQPanda.X(qubit_addr_list: List[int]) QCircuit
Create a X gate
- Args:
qubit_list_addr: quantum gate qubits list addr
- Returns:
a X gate node
- Raises:
run_fail: An error occurred in construct gate node
- pyqpanda.pyQPanda.X1(qubit: Qubit) QGate [源代码]¶
- pyqpanda.pyQPanda.X1(qubit_list: QVec) QCircuit
- pyqpanda.pyQPanda.X1(qubit_addr: int) QGate
- pyqpanda.pyQPanda.X1(qubit_addr_list: List[int]) QCircuit
Create a X1 gate
- Args:
qubit_list_addr: quantum gate qubits list addr
- Returns:
a X1 gate node
- Raises:
run_fail: An error occurred in construct gate node
- pyqpanda.pyQPanda.Y(qubit: Qubit) QGate [源代码]¶
- pyqpanda.pyQPanda.Y(qubit_list: QVec) QCircuit
- pyqpanda.pyQPanda.Y(qubit_addr: int) QGate
- pyqpanda.pyQPanda.Y(qubit_addr_list: List[int]) QCircuit
Create a Y gate
- Args:
qubit_list_addr: quantum gate qubits list addr
- Returns:
a Y gate node
- Raises:
run_fail: An error occurred in construct gate node
- pyqpanda.pyQPanda.Y1(qubit: Qubit) QGate [源代码]¶
- pyqpanda.pyQPanda.Y1(qubit_list: QVec) QCircuit
- pyqpanda.pyQPanda.Y1(qubit_addr: int) QGate
- pyqpanda.pyQPanda.Y1(qubit_addr_list: List[int]) QCircuit
Create a Y1 gate
- Args:
qubit_list_addr: quantum gate qubits list addr
- Returns:
a Y1 gate node
- Raises:
run_fail: An error occurred in construct gate node
- pyqpanda.pyQPanda.Z(qubit: Qubit) QGate [源代码]¶
- pyqpanda.pyQPanda.Z(qubit_list: QVec) QCircuit
- pyqpanda.pyQPanda.Z(qubit_addr: int) QGate
- pyqpanda.pyQPanda.Z(qubit_addr_list: List[int]) QCircuit
Create a Z gate
- Args:
qubit_list_addr: quantum gate qubits list addr
- Returns:
a Z gate node
- Raises:
run_fail: An error occurred in construct gate node
- pyqpanda.pyQPanda.Z1(qubit: Qubit) QGate [源代码]¶
- pyqpanda.pyQPanda.Z1(qubit_list: QVec) QCircuit
- pyqpanda.pyQPanda.Z1(qubit_addr: int) QGate
- pyqpanda.pyQPanda.Z1(qubit_addr_list: List[int]) QCircuit
Create a Z1 gate
- Args:
qubit_list_addr: quantum gate qubits list addr
- Returns:
a Z1 gate node
- Raises:
run_fail: An error occurred in construct gate node
- pyqpanda.pyQPanda.accumulateProbability(probability_list: List[float]) List[float] [源代码]¶
Accumulate the probability from a probability list.
- Args:
probability_list: measured result in probability list form.
- Returns:
accumulated_result: accumulated result.
- pyqpanda.pyQPanda.accumulate_probabilities(probability_list: List[float]) List[float] [源代码]¶
Accumulate the probability from a probability list.
- Args:
probability_list: measured result in probability list form.
- Returns:
accumulated_result: accumulated result.
- pyqpanda.pyQPanda.accumulate_probability(probability_list: List[float]) List[float] [源代码]¶
Accumulate the probability from a probability list.
- Args:
probability_list: measured result in probability list form.
- Returns:
accumulated_result: accumulated result.
- pyqpanda.pyQPanda.add(arg0: ClassicalCondition, arg1: ClassicalCondition) ClassicalCondition [源代码]¶
- pyqpanda.pyQPanda.add(arg0: ClassicalCondition, arg1: int) ClassicalCondition
- pyqpanda.pyQPanda.add(arg0: int, arg1: ClassicalCondition) ClassicalCondition
Add a bit size and a ClassicalCondition.
- Args:
a: The bit size to be added.
b: The ClassicalCondition to which the bit size will be added.
- Returns:
ClassicalCondition: The resulting ClassicalCondition after addition.
- pyqpanda.pyQPanda.all_cut_of_graph(adjacent_matrix: List[List[float]], all_cut_list: List[float], target_value_list: List[int]) float [源代码]¶
Generate a graph representation for the max cut problem.
- Args:
adjacent_matrix: The adjacency matrix for the quantum program.
all_cut_list: A list of all cut graphs in the quantum program.
target_value_list: A list of target cut values.
- Returns:
max value: The maximum value found from the cuts.
- pyqpanda.pyQPanda.amplitude_encode(qubit: QVec, data: List[float], b_need_check_normalization: bool = True) QCircuit [源代码]¶
- pyqpanda.pyQPanda.amplitude_encode(qubit: QVec, data: List[complex]) QCircuit
Encode the input double data to the amplitude of qubits
- Args:
qubit: quantum program qubits data: double data list
- Returns:
result circuit
- Raises:
run_fail: An error occurred in amplitude_encode
- pyqpanda.pyQPanda.apply_QGate(qubit_list: QVec, func_obj: Callable[[Qubit], QGate]) QCircuit [源代码]¶
- pyqpanda.pyQPanda.apply_QGate(qubit_addr_list: List[int], func_obj: Callable[[int], QGate]) QCircuit
Apply a quantum gate operation to a list of qubit addresses.
- Args:
qubit_addr_list: List of qubit addresses to which the gate will be applied.
func_obj: A function object that takes a qubit address (int) and returns a QGate.
- Returns:
QCircuit: The resulting circuit containing the QGate operations on all qubits.
- pyqpanda.pyQPanda.assign(arg0: ClassicalCondition, arg1: ClassicalCondition) ClassicalCondition [源代码]¶
- pyqpanda.pyQPanda.assign(arg0: ClassicalCondition, arg1: int) ClassicalCondition
Assign a bit size value to a ClassicalCondition.
- Args:
a: The ClassicalCondition to be updated (passed by reference).
b: The bit size value to assign.
- Returns:
ClassicalCondition: The updated ClassicalCondition after assignment.
- pyqpanda.pyQPanda.average_gate_fidelity(state1: numpy.ndarray[numpy.complex128[m, n]], state2: List[complex]) float [源代码]¶
- pyqpanda.pyQPanda.average_gate_fidelity(state1: numpy.ndarray[numpy.complex128[m, n]], state2: numpy.ndarray[numpy.complex128[m, n]]) float
Calculate the average gate fidelity between two quantum operation matrices.
- Args:
matrix1: the first quantum operation represented as a matrix.
matrix2: the second quantum operation represented as a matrix.
- Returns:
The average gate fidelity, a value in the range [0, 1].
- pyqpanda.pyQPanda.bin_to_prog(bin_data: List[int], qubit_list: QVec, cbit_list: List[ClassicalCondition], qprog: QProg) bool [源代码]¶
Parse binary data to transform into a quantum program.
- Args:
bin_data: binary data that stores quantum program information.
qubit_list: list of quantum qubits.
cbit_list: list of classical bits.
qprog: quantum program.
- Returns:
prog: the parsed quantum program.
- pyqpanda.pyQPanda.bind_data(arg0: int, arg1: QVec) QCircuit [源代码]¶
- Args:
int: classical data QVec: qubits list
- Returns:
result : circuit
- Raises:
run_fail: An error occurred in bind_data
- pyqpanda.pyQPanda.bind_nonnegative_data(arg0: int, arg1: QVec) QCircuit [源代码]¶
- Args:
int: classical data QVec: qubits list
- Returns:
result : circuit
- Raises:
run_fail: An error occurred in bind_nonnegative_data
- pyqpanda.pyQPanda.build_HHL_circuit(matrix_A: List[complex], data_b: List[float], qvm: QuantumMachine, precision_cnt: int = 0) QCircuit [源代码]¶
build the quantum circuit for HHL algorithm to solve the target linear systems of equations : Ax = b
- Args:
matrix_A: a unitary matrix or Hermitian N*N matrix with N = 2 ^ n
data_b: a given vector
qvm: quantum machine
- precision_cnt: The count of digits after the decimal point,
default is 0, indicates that there are only integer solutions
- Returns:
QCircuit The whole quantum circuit for HHL algorithm
- Notes:
The higher the precision is, the more qubit number and circuit - depth will be, for example: 1 - bit precision, 4 additional qubits are required, for 2 - bit precision, we need 7 additional qubits, and so on. The final solution = (HHL result) * (normalization factor for b) * (1 << ceil(log2(pow(10, precision_cnt))))
- pyqpanda.pyQPanda.cAlloc() ClassicalCondition [源代码]¶
- pyqpanda.pyQPanda.cAlloc(cbit_addr: int) ClassicalCondition
Allocate a CBit After init()
- Args:
cbit_addr: cbit address, should be in [0,29).
- Returns:
classic result cbit
- pyqpanda.pyQPanda.cAlloc_many(cbit_num: int) List[ClassicalCondition] [源代码]¶
Allocate several CBits After init()
- Args:
cbit_num: numbers of cbit want to be created.
- Returns:
list of cbit
- pyqpanda.pyQPanda.cFree(cbit: ClassicalCondition) None [源代码]¶
Free a CBit
- Args:
CBit: The CBit to be freed.
- Returns:
none
- pyqpanda.pyQPanda.cFree_all() None [源代码]¶
- pyqpanda.pyQPanda.cFree_all(cbit_list: List[ClassicalCondition]) None
Free all CBits
- Args:
cbit_list: a list of cbits.
- Returns:
none
- pyqpanda.pyQPanda.cast_qprog_qcircuit(qprog: QProg) QCircuit [源代码]¶
Cast a quantum program into a quantum circuit.
- Args:
qprog: The quantum program to be cast.
- Returns:
QCircuit: The resulting quantum circuit.
- pyqpanda.pyQPanda.cast_qprog_qgate(qprog: QProg) QGate [源代码]¶
Cast a quantum program into a quantum gate.
- Args:
qprog: The quantum program to be cast.
- Returns:
None: This function does not return a value.
- pyqpanda.pyQPanda.cast_qprog_qmeasure(qprog: QProg) QMeasure [源代码]¶
Cast a quantum program into a quantum measurement.
- Args:
qprog: The quantum program to be cast.
- Returns:
None: This function does not return a value.
- pyqpanda.pyQPanda.circuit_layer(qprog: QProg) list [源代码]¶
Quantum circuit layering.
- Args:
QProg: Quantum program.
- Returns:
A list containing layer information and qubits/cbits in use.
- pyqpanda.pyQPanda.circuit_optimizer(qprog: QProg, optimizer_cir_vec: List[Tuple[QCircuit, QCircuit]] = [], mode_list: List[QCircuitOPtimizerMode] = []) QProg [源代码]¶
Optimize a quantum circuit.
- Args:
qprog: the quantum program to optimize.
optimizer_cir_vec: a list of quantum circuits for optimization.
mode_list: a list of optimization modes.
- Returns:
the updated quantum program after optimization.
- pyqpanda.pyQPanda.circuit_optimizer_by_config(qprog: QProg, config_file: str = 'QPandaConfig.json', mode_list: List[QCircuitOPtimizerMode] = []) QProg [源代码]¶
Optimize a quantum circuit using configuration data.
- Args:
qprog: the quantum program to optimize.
config_file: configuration data for optimization.
mode_list: a list of optimization modes.
- Returns:
the updated quantum program after optimization.
- pyqpanda.pyQPanda.comm_protocol_decode(encode_data: bytes, machine: QuantumMachine) Tuple[List[QProg], CommProtocolConfig] [源代码]¶
Decode binary data into a list of quantum programs using the communication protocol.
- Args:
encode_data: The encoded binary data representing quantum programs.
machine: A pointer to the QuantumMachine used for decoding.
- Returns:
tuple: A tuple containing the decoded program list and the communication protocol configuration.
- pyqpanda.pyQPanda.comm_protocol_encode(prog: QProg, config: CommProtocolConfig = ...) bytes [源代码]¶
- pyqpanda.pyQPanda.comm_protocol_encode(prog_list: List[QProg], config: CommProtocolConfig = ...) bytes
Encode a list of quantum programs into binary communication protocol data.
- Args:
prog_list: A list of quantum programs to be encoded.
config: The configuration for the communication protocol. Defaults to an empty configuration.
- Returns:
bytes: The encoded binary data representing the communication protocol.
- pyqpanda.pyQPanda.constModAdd(arg0: QVec, arg1: int, arg2: int, arg3: QVec, arg4: QVec) QCircuit [源代码]¶
- Args:
QVec qvec int base int module_Num QVec qvec1 QVec qvec2
- Returns:
result circuit
- Raises:
run_fail: An error occurred in constModAdd
- pyqpanda.pyQPanda.constModExp(arg0: QVec, arg1: QVec, arg2: int, arg3: int, arg4: QVec, arg5: QVec, arg6: QVec) QCircuit [源代码]¶
- Args:
QVec qvec int base int module_Num QVec qvec1 QVec qvec2
- Returns:
result circuit
- Raises:
run_fail: An error occurred in constModExp
- pyqpanda.pyQPanda.constModMul(arg0: QVec, arg1: int, arg2: int, arg3: QVec, arg4: QVec, arg5: QVec) QCircuit [源代码]¶
- Args:
QVec qvec int base int module_Num QVec qvec1 QVec qvec2
- Returns:
result circuit
- Raises:
run_fail: An error occurred in constModMul
- pyqpanda.pyQPanda.convert_binary_data_to_qprog(machine: QuantumMachine, data: List[int]) QProg [源代码]¶
Parse binary data into a quantum program.
- Args:
machine: The quantum machine used for execution.
data: The binary data representing the quantum program.
- Returns:
QProg: The generated quantum program.
- pyqpanda.pyQPanda.convert_originir_str_to_qprog(originir_str: str, machine: QuantumMachine) list [源代码]¶
Transform OriginIR string into QProg.
- Args:
originir_str: OriginIR string.
machine: initialized quantum machine.
- Returns:
A list containing QProg, qubit_list, and cbit_list.
- pyqpanda.pyQPanda.convert_originir_to_qprog(file_path: str, machine: QuantumMachine) list [源代码]¶
Read an OriginIR file and transform it into QProg.
- Args:
file_path: OriginIR file path.
machine: initialized quantum machine.
- Returns:
A list containing QProg, qubit_list, and cbit_list.
- pyqpanda.pyQPanda.convert_qasm_string_to_qprog(qasm_str: str, machine: QuantumMachine) list [源代码]¶
Transform QASM string into QProg.
- Args:
qasm_str: QASM string.
machine: initialized quantum machine.
- Returns:
A list containing QProg, qubit_list, and cbit_list.
- pyqpanda.pyQPanda.convert_qasm_to_qprog(file_path: str, machine: QuantumMachine) list [源代码]¶
Read a QASM file and transform it into QProg.
- Args:
file_path: QASM file path.
machine: initialized quantum machine.
- Returns:
A list containing QProg, qubit_list, and cbit_list.
- pyqpanda.pyQPanda.convert_qprog_to_binary(qprog: QProg, machine: QuantumMachine) List[int] [源代码]¶
- pyqpanda.pyQPanda.convert_qprog_to_binary(qprog: QProg, machine: QuantumMachine, fname: str) None
Store the quantum program in a binary file.
- Args:
qprog: quantum program.
machine: quantum machine.
fname: name of the binary data file.
- Returns:
none: This function does not return a value.
- pyqpanda.pyQPanda.convert_qprog_to_originir(*args, **kwargs) Any [源代码]¶
Convert QProg to OriginIR string.
- Args:
qprog: quantum program (QProg&).
machine: quantum machine (QuantumMachine*).
- Returns:
originir: OriginIR string. For more information, see the OriginIR introduction:
- pyqpanda.pyQPanda.convert_qprog_to_qasm(qprog: QProg, machine: QuantumMachine) str [源代码]¶
Convert a quantum program to a QASM instruction string.
- Args:
qprog: The quantum program to be converted.
machine: The quantum machine used for execution.
- Returns:
str: A QASM string representing the quantum program.
- pyqpanda.pyQPanda.convert_qprog_to_quil(qprog: QProg, machine: QuantumMachine) str [源代码]¶
Convert QProg to Quil instruction.
- Args:
qprog: quantum program (QProg).
machine: quantum machine (QuantumMachine*).
- Returns:
Quil instruction string.
- pyqpanda.pyQPanda.count_gate(quantum_prog: QProg) int [源代码]¶
- pyqpanda.pyQPanda.count_gate(quantum_circuit: QCircuit) int
Count quantum gate number in the quantum circuit.
- Args:
quantum_circuit: quantum circuit.
- Returns:
result: gate count.
- pyqpanda.pyQPanda.count_prog_info(node: QProg, selected_types: List[GateType] = []) ProgCount [源代码]¶
- pyqpanda.pyQPanda.count_prog_info(node: QCircuit, selected_types: List[GateType] = []) ProgCount
Count quantum program information.
- Args:
node: quantum circuit (QCircuit).
selected_types: vector of selected GateType (default is empty).
- Returns:
ProgCount struct.
- pyqpanda.pyQPanda.count_qgate_num(prog: QProg, gate_type: int = -1) int [源代码]¶
- pyqpanda.pyQPanda.count_qgate_num(circuit: QCircuit, gate_type: int = -1) int
Count quantum gate number in the quantum circuit.
- Args:
circuit: quantum circuit (QCircuit&).
gate_type: type of gate to count (const GateType).
- Returns:
result: number of quantum gates of the specified GateType.
- pyqpanda.pyQPanda.create_empty_circuit() QCircuit [源代码]¶
Create an empty QCircuit container.
- Args:
none
- Returns:
result: An empty QCircuit.
- pyqpanda.pyQPanda.create_empty_qprog() QProg [源代码]¶
Create an empty QProg container.
- Args:
none.
- Returns:
an empty QProg.
- pyqpanda.pyQPanda.create_if_prog(classical_condition: ClassicalCondition, true_node: QProg) QIfProg [源代码]¶
- pyqpanda.pyQPanda.create_if_prog(classical_condition: ClassicalCondition, true_node: QProg, false_node: QProg) QIfProg
Create a classical quantum IfProg.
- Args:
classical_condition: A quantum cbit representing the condition.
true_node: A quantum IfProg node that defines the operation to execute if the condition is true.
false_node: A quantum IfProg node that defines the operation to execute if the condition is false.
- Returns:
result: A classical quantum IfProg that executes based on the specified condition.
- pyqpanda.pyQPanda.create_while_prog(classical_condition: ClassicalCondition, true_node: QProg) QWhileProg [源代码]¶
Create a WhileProg.
- Args:
classical_condition: A quantum cbit representing the condition.
true_node: A quantum QWhile node that defines the operation to execute while the condition is true.
- Returns:
result: A WhileProg that executes the specified operations based on the condition.
- pyqpanda.pyQPanda.decompose_multiple_control_qgate(qprog: QProg, machine: QuantumMachine, config_file: str = 'QPandaConfig.json') QProg [源代码]¶
- pyqpanda.pyQPanda.decompose_multiple_control_qgate(qprog: QProg, machine: QuantumMachine, convert_single_gates: List[str], convert_double_gates: List[str], b_transform_to_base_qgate: bool = True) QProg
Decompose multiple control QGate.
- Args:
qprog: Quantum program.
machine: Quantum machine.
convert_single_gates: Sets of quantum single gates.
convert_double_gates: Sets of quantum double gates.
b_transform_to_base_qgate: Transform to base QGate sets.
- Returns:
A new program after decomposition.
- pyqpanda.pyQPanda.deep_copy(node: QProg) QProg [源代码]¶
- pyqpanda.pyQPanda.deep_copy(node: QCircuit) QCircuit
- pyqpanda.pyQPanda.deep_copy(node: QGate) QGate
- pyqpanda.pyQPanda.deep_copy(node: QMeasure) QMeasure
- pyqpanda.pyQPanda.deep_copy(node: ClassicalProg) ClassicalProg
- pyqpanda.pyQPanda.deep_copy(node: QIfProg) QIfProg
- pyqpanda.pyQPanda.deep_copy(node: QWhileProg) QWhileProg
Create a deep copy of the given quantum program node.
- Args:
node: The quantum program node to copy.
- Returns:
A deep copy of the quantum program node.
- pyqpanda.pyQPanda.del_weak_edge(topo_data: List[List[int]]) None [源代码]¶
Delete weakly connected edges from the quantum program topology.
- Args:
topo_data: The topology data of the quantum program.
- Returns:
None.
- pyqpanda.pyQPanda.del_weak_edge2(topo_data: List[List[int]], max_connect_degree: int, sub_graph_set: List[int]) list [源代码]¶
Delete weakly connected edges from the quantum program topology.
- Args:
topo_data: The topology data of the quantum program.
max_connect_degree: The maximum allowable connection degree.
sub_graph_set: A list of subgraph identifiers.
- Returns:
A list containing the updated topology data, intermediary points, and candidate edges.
- pyqpanda.pyQPanda.del_weak_edge3(topo_data: List[List[int]], sub_graph_set: List[int], max_connect_degree: int, lamda1: float, lamda2: float, lamda3: float) list [源代码]¶
Delete weakly connected edges based on specified parameters.
- Args:
topo_data: The topology data of the quantum program.
sub_graph_set: A list of subgraph identifiers.
max_connect_degree: The maximum allowable connection degree.
lamda1: Weight parameter for edge evaluation.
lamda2: Weight parameter for edge evaluation.
lamda3: Weight parameter for edge evaluation.
- Returns:
A list containing the updated topology data and intermediary points.
- pyqpanda.pyQPanda.destroy_quantum_machine(machine: QuantumMachine) None [源代码]¶
Destroy a quantum machine.
- Args:
machine: type should be one of CPUQVM, CPUSingleThreadQVM, GPUQVM, NoiseQVM.
- Returns:
None.
- pyqpanda.pyQPanda.directly_run(qprog: QProg, noise_model: Noise = NoiseModel()) Dict[str, bool] [源代码]¶
Directly run a quantum program After init()
- Args:
qprog: The quantum program to be executed.
noise_model: The noise model to be used, default is no noise. The noise model only works on CPUQVM currently.
- Returns:
- Dict[str, bool]: Result of the quantum program execution in one shot.
The first element is the final qubit register state, and the second is its measurement probability.
- pyqpanda.pyQPanda.div(arg0: ClassicalCondition, arg1: ClassicalCondition) ClassicalCondition [源代码]¶
- pyqpanda.pyQPanda.div(arg0: ClassicalCondition, arg1: int) ClassicalCondition
- pyqpanda.pyQPanda.div(arg0: int, arg1: ClassicalCondition) ClassicalCondition
Divide a bit size by a ClassicalCondition.
- Args:
a: The bit size (numerator).
b: The ClassicalCondition (denominator).
- Returns:
ClassicalCondition: The result of the division.
- pyqpanda.pyQPanda.draw_qprog_latex(prog: QProg, auto_wrap_len: int = 100, output_file: str = 'QCircuit.tex', with_logo: bool = False, itr_start: NodeIter = NodeIter(), itr_end: NodeIter = NodeIter()) str [源代码]¶
Convert a quantum prog/circuit to LaTeX representation,
and save the output in a file named QCircuit.tex in the current path.
- Args:
QProg: Quantum prog.
auto_wrap_len: Default is 100.
output_file: Result output file name.
with_logo: Include logo in the output.
itr_start: Node iterator start.
itr_end: Node iterator end.
- Returns:
A tuple containing program info.
- pyqpanda.pyQPanda.draw_qprog_latex_with_clock(prog: QProg, config_data: str = 'QPandaConfig.json', auto_wrap_len: bool = 100, output_file: int = 'QCircuit.tex', with_logo: str = False, itr_start: NodeIter = NodeIter(), itr_end: NodeIter = NodeIter()) str [源代码]¶
Convert a quantum prog/circuit to LaTeX source code with time sequence, and save the source code to a file in the current path named QCircuit.tex.
- Args:
prog: Quantum prog.
config_data: Default config file is QPandaConfig.json.
auto_wrap_len: Default is 100.
output_file: Result output file name.
with_logo: Whether to include a logo in the output.
itr_start: Node iterator start.
itr_end: Node iterator end.
- Returns:
A tuple containing program info.
- pyqpanda.pyQPanda.draw_qprog_text(qprog: QProg, auto_wrap_len: int = 100, output_file: str = 'QCircuitTextPic.txt', itr_start: NodeIter = NodeIter(), itr_end: NodeIter = NodeIter()) str [源代码]¶
Convert a quantum prog/circuit to text-pic (UTF-8 code),
and save the text-pic in a file named QCircuitTextPic.txt in the current path.
- Args:
QProg: Quantum prog.
auto_wrap_len: Default is 100.
output_file: Result output file name.
itr_start: Node iterator start.
itr_end: Node iterator end.
- Returns:
A tuple containing program info.
- pyqpanda.pyQPanda.draw_qprog_text_with_clock(prog: QProg, config_data: str = 'QPandaConfig.json', auto_wrap_len: int = 100, output_file: str = 'QCircuitTextPic.txt', itr_start: NodeIter = NodeIter(), itr_end: NodeIter = NodeIter()) str [源代码]¶
Convert a quantum prog/circuit to text-pic (UTF-8 code) with time sequence,
and save the text-pic in a file named QCircuitTextPic.txt in the current path.
- Args:
prog: Quantum prog.
config_data: Configuration data.
auto_wrap_len: Default is 100.
output_file: Result output file name.
itr_start: Node iterator start.
itr_end: Node iterator end.
- Returns:
A tuple containing program info.
- pyqpanda.pyQPanda.equal(arg0: ClassicalCondition, arg1: ClassicalCondition) ClassicalCondition [源代码]¶
- pyqpanda.pyQPanda.equal(arg0: ClassicalCondition, arg1: int) ClassicalCondition
- pyqpanda.pyQPanda.equal(arg0: int, arg1: ClassicalCondition) ClassicalCondition
Check if a bit size is equal to a ClassicalCondition.
- Args:
a: The bit size to compare.
b: The ClassicalCondition to compare against.
- Returns:
bool: True if the bit size is equal to the ClassicalCondition, otherwise False.
- pyqpanda.pyQPanda.estimate_topology(topo_data: List[List[int]]) float [源代码]¶
Evaluate topology performance.
- Args:
topo_data: Quantum program topology data.
- Returns:
Result data.
- pyqpanda.pyQPanda.eval(arg0: var, arg1: bool) numpy.ndarray[numpy.float64[m, n]] [源代码]¶
- pyqpanda.pyQPanda.eval(arg0: var) numpy.ndarray[numpy.float64[m, n]]
- pyqpanda.pyQPanda.expMat(arg0: complex, arg1: numpy.ndarray[numpy.complex128[m, n]], arg2: float) numpy.ndarray[numpy.complex128[m, n]] [源代码]¶
Calculate the matrix power of e.
This function returns the power of matrix e.
- Args:
None
- Returns:
The computed matrix.
- pyqpanda.pyQPanda.expand_linear_equations(matrix: List[complex], list: List[float]) expand_linear_equations.list [源代码]¶
- pyqpanda.pyQPanda.expand_linear_equations(matrix: List[complex], list: List[float]) expand_linear_equations.list
Extending linear equations to N dimension, N = 2 ^ n
- Args:
matrix: the source matrix, which will be extend to N*N, N = 2 ^ n
list: the source vector b, which will be extend to 2 ^ n
- pyqpanda.pyQPanda.fill_qprog_by_I(qprog: QProg) QProg [源代码]¶
Fill the input quantum program with I gates and return a new quantum program.
- Args:
qprog: the input quantum program.
- Returns:
a new quantum program filled with I gates.
- pyqpanda.pyQPanda.finalize() None [源代码]¶
Finalize the environment and destroy global unique quantum machine.
- Args:
none
- Returns:
none
- pyqpanda.pyQPanda.fit_to_gbk(utf8_str: str) str [源代码]¶
Special character conversion.
- Args:
utf8_str: string using utf-8 encoding.
- Returns:
result: converted string.
- pyqpanda.pyQPanda.flatten(qprog: QProg) None [源代码]¶
- pyqpanda.pyQPanda.flatten(qcircuit: QCircuit) None
Flatten a quantum circuit in place.
- Args:
qcircuit: The quantum circuit to be flattened.
- Returns:
None: The function modifies the circuit directly.
- pyqpanda.pyQPanda.getAllocateCMem() int [源代码]¶
Deprecated, use get_allocate_cmem_num instead.
- Args:
none
- Returns:
allocate qubit num.
- pyqpanda.pyQPanda.getAllocateQubitNum() int [源代码]¶
Deprecated, use get_allocate_qubit_num instead.
- Args:
none
- Returns:
allocate cbit num.
- pyqpanda.pyQPanda.get_adjacent_qgate_type(qprog: QProg, node_iter: NodeIter) List[NodeInfo] [源代码]¶
Get the adjacent quantum gates’ (the front one and the back one) type info from QProg.
- Args:
qprog: Target quantum program.
node_iter: Gate node iterator in qprog.
- Returns:
The front and back node info of node_iter in qprog.
- pyqpanda.pyQPanda.get_all_used_qubits(qprog: QProg) List[Qubit] [源代码]¶
Get all the quantum bits used in the input program.
- Args:
qprog: A quantum program.
- Returns:
result: A list of all used qubits.
- pyqpanda.pyQPanda.get_all_used_qubits_to_int(qprog: QProg) List[int] [源代码]¶
Get the addresses of all used quantum bits in the input program.
- Args:
qprog: A quantum program.
- Returns:
result: A list of addresses of all used qubits.
- pyqpanda.pyQPanda.get_allocate_cbits() List[ClassicalCondition] [源代码]¶
Get allocated cbits of QuantumMachine
- Args:
None
- Returns:
A list of allocated cbits.
- pyqpanda.pyQPanda.get_allocate_cmem_num() int [源代码]¶
Get allocate cmem num.
- Args:
none.
- Returns:
cbit_num: allocate cbit num.
- pyqpanda.pyQPanda.get_allocate_qubit_num() int [源代码]¶
Get allocate qubit num.
- Args:
none.
- Returns:
qubit_num: allocate qubit num.
- pyqpanda.pyQPanda.get_allocate_qubits() List[Qubit] [源代码]¶
Get allocated qubits of QuantumMachine
- Args:
None
- Returns:
A list of allocated qubits.
- pyqpanda.pyQPanda.get_bin_data(qprog: QProg) List[int] [源代码]¶
Get quantum program binary data.
- Args:
qprog: quantum program (QProg).
- Returns:
binary data as a list.
- pyqpanda.pyQPanda.get_bin_str(qprog: QProg, machine: QuantumMachine) str [源代码]¶
Transform a quantum program into a string representation.
- Args:
qprog: quantum program.
machine: quantum machine.
- Returns:
string: base64-encoded string of the binary representation.
- pyqpanda.pyQPanda.get_circuit_optimal_topology(qprog: QProg, machine: QuantumMachine, max_connect_degree: int, config_file: str = 'QPandaConfig.json') List[List[int]] [源代码]¶
Retrieve the optimal topology of the input quantum circuit.
- Args:
qprog: The quantum program for which to determine the topology.
machine: The quantum machine used for execution.
max_connect_degree: The maximum allowable connection degree.
config_file: Path to the configuration file (default is CONFIG_PATH).
- Returns:
The topology program data.
- pyqpanda.pyQPanda.get_clock_cycle(qpog: QProg) int [源代码]¶
Get quantum program clock cycle.
- Args:
qprog: quantum program (QProg).
- Returns:
clock_cycle.
- pyqpanda.pyQPanda.get_complex_points(topo_data: List[List[int]], max_connect_degree: int) List[int] [源代码]¶
Retrieve complex points from the given topology data.
- Args:
topo_data: The topology data of the quantum program.
max_connect_degree: The maximum allowable connection degree.
- Returns:
A list of complex points extracted from the topology data.
- pyqpanda.pyQPanda.get_double_gate_block_topology(qprog: QProg) List[List[int]] [源代码]¶
Retrieve the double gate block topology from the input quantum program.
- Args:
qprog: The quantum program for which to extract the double gate block topology.
- Returns:
The topology program data.
- pyqpanda.pyQPanda.get_matrix(*args, **kwargs) Any [源代码]¶
Get the target matrix between the input two NodeIters.
- Args:
qprog: Quantum program.
positive_seq: Qubit order of output matrix; true for positive sequence (q0q1q2),
false for inverted order (q2q1q0), default is false.
nodeitr_start: The start NodeIter.
nodeitr_end: The end NodeIter.
- Returns:
The target matrix including all the QGate’s matrices (multiplied).
- pyqpanda.pyQPanda.get_prob_dict(qubit_list: QVec, select_max: int = -1) Dict[str, float] [源代码]¶
Get pmeasure result as dict
- Args:
qubit_list: pmeasure qubits list.
select_max: max returned element num in returned tuple, should be in [-1, 1<<len(qubit_list)],
default is -1, meaning no limit.
- Returns:
Measure result of quantum machine.
- pyqpanda.pyQPanda.get_prob_list(qubit_list: QVec, select_max: int = -1) List[float] [源代码]¶
Get pmeasure result as list
- Args:
qubit_list: pmeasure qubits list.
select_max: max returned element num in returned tuple, should be in [-1, 1<<len(qubit_list)],
default is -1, meaning no limit.
- Returns:
Measure result of quantum machine.
- pyqpanda.pyQPanda.get_qgate_num(quantum_prog: QProg) int [源代码]¶
- pyqpanda.pyQPanda.get_qgate_num(quantum_circuit: QCircuit) int
- pyqpanda.pyQPanda.get_qgate_num(qprog: QProg) int
Count the number of quantum gates in a quantum program.
- Args:
qprog: The quantum program to analyze.
- Returns:
int: The number of quantum gates in the quantum program.
- pyqpanda.pyQPanda.get_qprog_clock_cycle(qprog: QProg, machine: QuantumMachine, optimize: bool = False) int [源代码]¶
Get Quantum Program Clock Cycle.
- Args:
qprog: quantum program (QProg).
machine: quantum machine (QuantumMachine*).
optimize: whether to optimize qprog (default is false).
- Returns:
QProg time consumed, no unit, not in seconds.
- pyqpanda.pyQPanda.get_sub_graph(topo_data: List[List[int]]) List[int] [源代码]¶
Retrieve a subgraph from the provided topology data.
- Args:
topo_data: The topology data of the quantum program.
- Returns:
sub graph: The extracted subgraph from the provided topology.
- pyqpanda.pyQPanda.get_tuple_list(qubit_list: QVec, select_max: int = -1) List[Tuple[int, float]] [源代码]¶
Get pmeasure result as tuple list
- Args:
qubit_list: pmeasure qubits list.
select_max: max returned element num in returned tuple, should be in [-1, 1<<len(qubit_list)],
default is -1, meaning no limit.
- Returns:
Measure result of quantum machine.
- pyqpanda.pyQPanda.get_unitary(*args, **kwargs) Any [源代码]¶
Get the target unitary matrix between the input two NodeIters.
- Args:
qprog: Quantum program.
positive_seq: Qubit order of output matrix; true for positive sequence (q0q1q2),
false for inverted order (q2q1q0), default is false.
nodeitr_start: The start NodeIter.
nodeitr_end: The end NodeIter.
- Returns:
The target unitary matrix including all the QGate’s matrices (multiplied).
- pyqpanda.pyQPanda.get_unsupport_qgate_num(qprog: QProg, support_gates: List[List[str]]) int [源代码]¶
Count the number of unsupported gates in a quantum program.
- Args:
qprog: The quantum program to analyze.
support_gates: A list of supported gates.
- Returns:
int: The number of unsupported gates in the quantum program.
- pyqpanda.pyQPanda.getstat(*args, **kwargs) Any [源代码]¶
Get the status of the Quantum machine
- Args:
None
- Returns:
The status of the Quantum machine, see QMachineStatus.
- pyqpanda.pyQPanda.iSWAP(first_qubit: Qubit, second_qubit: Qubit) QGate [源代码]¶
- pyqpanda.pyQPanda.iSWAP(first_qubit_list: QVec, second_qubit_list: QVec) QCircuit
- pyqpanda.pyQPanda.iSWAP(first_qubit_addr: int, second_qubit_addr: int) QGate
- pyqpanda.pyQPanda.iSWAP(first_qubit_addr_list: List[int], second_qubit_addr_list: List[int]) QCircuit
- pyqpanda.pyQPanda.iSWAP(first_qubit: Qubit, second_qubit: Qubit, theta_angle: float) QGate
- pyqpanda.pyQPanda.iSWAP(first_qubit_list: QVec, second_qubit_list: QVec, theta_angle: float) QCircuit
- pyqpanda.pyQPanda.iSWAP(first_qubit_addr: int, second_qubit_addr: int, theta_angle: float) QGate
- pyqpanda.pyQPanda.iSWAP(first_qubit_addr_list: List[int], second_qubit_addr_list: List[int], theta_angle: float) QCircuit
- Returns:
a iSWAP gate node
- Raises:
run_fail: An error occurred in construct gate node
- pyqpanda.pyQPanda.init(machine_type: QMachineType = QMachineType.CPU) bool [源代码]¶
Init the global unique quantum machine at background.
- Args:
machine_type: quantum machine type, see pyQPanda.QMachineType
- Returns:
bool: true if initialization success
- pyqpanda.pyQPanda.init_quantum_machine(machine_type: QMachineType = QMachineType.CPU) QuantumMachine [源代码]¶
Create and initialize a new quantum machine, and let it be a globally unique quantum machine.
- Args:
machine_type: quantum machine type, see pyQPanda.QMachineType.
- Returns:
object: the quantum machine, type depends on machine_type:
QMachineType.CPU –> pyQPanda.CPUQVM
QMachineType.CPU_SINGLE_THREAD –> pyQPanda.CPUSingleThreadQVM
QMachineType.GPU –> pyQPanda.GPUQVM (if pyQPanda is built with GPU)
QMachineType.NOISE –> pyQPanda.NoiseQVM
return None if initialization fails.
- pyqpanda.pyQPanda.isCarry(arg0: QVec, arg1: QVec, arg2: Qubit, arg3: Qubit) QCircuit [源代码]¶
Construct a circuit to determine if there is a carry
- pyqpanda.pyQPanda.is_match_topology(gate: QGate, topo: List[List[float]]) bool [源代码]¶
Judge if the QGate matches the target topologic structure of the quantum circuit.
- Args:
gate (QGate): The quantum gate to evaluate.
topo: The target topologic structure of the quantum circuit.
- Returns:
bool: True if it matches, otherwise false.
- pyqpanda.pyQPanda.is_supported_qgate_type(nodeitr: NodeIter) bool [源代码]¶
Judge if the target node is a QGate type.
- Args:
nodeitr: Node iterator in the quantum program.
- Returns:
bool: True if the target node is a QGate type, otherwise false.
- pyqpanda.pyQPanda.is_swappable(prog: QProg, nodeitr_1: NodeIter, nodeitr_2: NodeIter) bool [源代码]¶
Judge whether the specified two NodeIters in the quantum program can be exchanged.
- Args:
prog: Target quantum program.
nodeitr_1: Node iterator 1 in the quantum program.
nodeitr_2: Node iterator 2 in the quantum program.
- Returns:
bool: True if the two NodeIters can be exchanged, otherwise false.
- pyqpanda.pyQPanda.iterative_amplitude_estimation(arg0: QCircuit, arg1: QVec, arg2: float, arg3: float) float [源代码]¶
estimate the probability corresponding to the ground state |1> of the last bit Args:
QCircuit: quantum circuit qvec: qubit list double: epsilon double: confidence
- Returns:
result iterative amplitude
- Raises:
run_fail: An error occurred in iterative_amplitude_estimation
- pyqpanda.pyQPanda.ldd_decompose(qprog: QProg) QProg [源代码]¶
Decompose a multiple control quantum gate using LDD.
- Args:
qprog: the quantum program to be decomposed.
- Returns:
the updated quantum program after decomposition.
- pyqpanda.pyQPanda.matrix_decompose(qubits: QVec, matrix: numpy.ndarray[numpy.complex128[m, n]], mode: DecompositionMode = DecompositionMode.QSD, b_positive_seq: bool = True) QCircuit [源代码]¶
- pyqpanda.pyQPanda.matrix_decompose(qubits: QVec, matrix: List[complex], mode: DecompositionMode = DecompositionMode.QSD, b_positive_seq: bool = True) QCircuit
Matrix decomposition
- Args:
qubits: the used qubits
matrix: The target matrix
mode: DecompositionMode decomposition mode, default is QSD
b_positive_seq: true for positive sequence(q0q1q2), false for inverted order(q2q1q0), default is true
- Returns:
QCircuit The quantum circuit for target matrix
- pyqpanda.pyQPanda.matrix_decompose_paulis(arg0: QuantumMachine, arg1: numpy.ndarray[numpy.float64[m, n]]) List[Tuple[float, QCircuit]] [源代码]¶
- pyqpanda.pyQPanda.matrix_decompose_paulis(arg0: QVec, arg1: numpy.ndarray[numpy.float64[m, n]]) List[Tuple[float, QCircuit]]
decompose matrix into paulis combination
- Args:
quantum_machine: quantum machine matrix: 2^N *2^N double matrix
- Returns:
result : linearcom contains pauli circuit
- pyqpanda.pyQPanda.measure_all(qubit_list: QVec, cbit_list: List[ClassicalCondition]) QProg [源代码]¶
- pyqpanda.pyQPanda.measure_all(qubit_addr_list: List[int], cbit_addr_list: List[int]) QProg
Create a list of measure nodes.
- Args:
qubit_addr_list: list of addresses of the qubits to be measured.
cbit_addr_list: list of addresses of the classical bits that store the quantum measurement results.
- Returns:
a list of measure nodes.
- pyqpanda.pyQPanda.mul(arg0: ClassicalCondition, arg1: ClassicalCondition) ClassicalCondition [源代码]¶
- pyqpanda.pyQPanda.mul(arg0: ClassicalCondition, arg1: int) ClassicalCondition
- pyqpanda.pyQPanda.mul(arg0: int, arg1: ClassicalCondition) ClassicalCondition
Multiply a bit size by a ClassicalCondition.
- Args:
a: The bit size to be multiplied.
b: The ClassicalCondition to multiply with the bit size.
- Returns:
ClassicalCondition: The resulting ClassicalCondition after multiplication.
- pyqpanda.pyQPanda.originir_to_qprog(file_path: str, machine: QuantumMachine) QProg [源代码]¶
Read an OriginIR file and transform it into QProg.
- Args:
file_path: OriginIR file path.
machine: initialized quantum machine.
- Returns:
Transformed QProg.
- pyqpanda.pyQPanda.pauli_combination_replace(arg0: List[Tuple[float, QCircuit]], arg1: QuantumMachine, arg2: str, arg3: str) List[Tuple[float, QCircuit]] [源代码]¶
- pyqpanda.pyQPanda.planarity_testing(topo_data: List[List[int]]) bool [源代码]¶
Perform planarity testing.
- Args:
topo_data: Quantum program topology data.
- Returns:
Result data.
- pyqpanda.pyQPanda.pmeasure(qubit_list: QVec, select_max: int) List[Tuple[int, float]] [源代码]¶
Get the probability distribution over qubits.
- Args:
qubit_list: qubit list to measure.
select_max: max returned element num in returned tuple, should be in [-1, 1<<len(qubit_list)];
default is -1, means no limit.
- Returns:
Measure result of quantum machine in tuple form.
- pyqpanda.pyQPanda.pmeasure_no_index(qubit_list: QVec) List[float] [源代码]¶
Get the probability distribution over qubits.
- Args:
qubit_list: qubit list to measure.
- Returns:
Measure result of quantum machine in list form.
- pyqpanda.pyQPanda.print_matrix(matrix: List[complex], precision: int = 8) str [源代码]¶
Print matrix elements.
- Args:
matrix (QStat): The matrix to print.
precision (int, optional): Double value to string cutoff precision (default is 8).
- Returns:
A string representation of the matrix.
- pyqpanda.pyQPanda.prob_run_dict(qprog: QProg, qubit_list: QVec, select_max: int = -1) Dict[str, float] [源代码]¶
Run quantum program and get pmeasure result as dict
- Args:
qprog: quantum program.
qubit_list: pmeasure qubits list.
select_max: max returned element num in returned tuple, should be in [-1, 1<<len(qubit_list)],
default is -1, meaning no limit.
- Returns:
Measure result of quantum machine.
- pyqpanda.pyQPanda.prob_run_list(qprog: QProg, qubit_list: QVec, select_max: int = -1) List[float] [源代码]¶
Run quantum program and get pmeasure result as list
- Args:
qprog: quantum program.
qubit_list: pmeasure qubits list.
select_max: max returned element num in returned tuple, should be in [-1, 1<<len(qubit_list)],
default is -1, meaning no limit.
- Returns:
Measure result of quantum machine.
- pyqpanda.pyQPanda.prob_run_tuple_list(qptog: QProg, qubit_list: QVec, select_max: int = -1) List[Tuple[int, float]] [源代码]¶
Run quantum program and get pmeasure result as tuple list
- Args:
qprog: quantum program.
qubit_list: pmeasure qubits list.
select_max: max returned element num in returned tuple, should be in [-1, 1<<len(qubit_list)],
default is -1, meaning no limit.
- Returns:
Measure result of quantum machine.
- pyqpanda.pyQPanda.prog_layer(*args, **kwargs) Any [源代码]¶
Process the given quantum program layer.
- Args:
prog: The quantum program to be processed.
- Returns:
Processed quantum program layer.
- pyqpanda.pyQPanda.prog_to_dag(prog: QProg) QProgDAG [源代码]¶
Convert a quantum program into a directed acyclic graph (DAG).
- Args:
prog: The quantum program to be converted.
- Returns:
QProgDAG: A reference to the resulting DAG.
- pyqpanda.pyQPanda.qAlloc() Qubit [源代码]¶
- pyqpanda.pyQPanda.qAlloc(qubit_addr: int) Qubit
Allocate a qubit After init()
- Args:
qubit_addr: The physical address of the qubit, should be in [0, 29).
- Returns:
Qubit: A new qubit.
None: If qubit_addr is invalid or if the maximum number of allowed qubits has been reached.
- pyqpanda.pyQPanda.qAlloc_many(qubit_num: int) List[Qubit] [源代码]¶
Allocate several qubits After init()
- Args:
qubit_num: The number of qubits to be created.
- Returns:
list[pyQPanda.Qubit]: list of qubit.
- pyqpanda.pyQPanda.qFree_all() None [源代码]¶
- pyqpanda.pyQPanda.qFree_all(qubit_list: QVec) None
Free a list of qubits
- Args:
qubit_list: A list of qubits to be freed.
- Returns:
None
- pyqpanda.pyQPanda.qop(VariationalQuantumCircuit: qop.VariationalQuantumCircuit, Hamiltonian, QuantumMachine: qop.QuantumMachine, qubitList: List[Qubit]) var [源代码]¶
- pyqpanda.pyQPanda.qop(VariationalQuantumCircuit: qop.VariationalQuantumCircuit, Hamiltonian, QuantumMachine: qop.QuantumMachine, qubitList: Dict[int, Qubit]) var
- pyqpanda.pyQPanda.qop_pmeasure(arg0: VariationalQuantumCircuit, arg1: List[int], arg2: QuantumMachine, arg3: List[Qubit]) var [源代码]¶
- pyqpanda.pyQPanda.quantum_chip_adapter(qprog: QProg, machine: QuantumMachine, mapping: bool = True, config_file: str = 'QPandaConfig.json') list [源代码]¶
Perform adaptive conversion for the quantum chip.
- Args:
qprog: the quantum program.
machine: the quantum machine to be used.
mapping: whether to perform the mapping operation (default is true).
config_file: configuration file path (default is CONFIG_PATH).
- Returns:
a list containing the quantum program and the list of qubits after mapping; if mapping is false, the qubit list may be misoperated.
- pyqpanda.pyQPanda.quantum_walk_alg(*args, **kwargs) Any [源代码]¶
Build quantum-walk algorithm quantum circuit
- pyqpanda.pyQPanda.quantum_walk_search(list: List[int], Classical_condition: ClassicalCondition, QuantumMachine: quantum_walk_search.QuantumMachine, data: int = 2) quantum_walk_search.list [源代码]¶
Use Quantum-walk Algorithm to search target data, return QProg and search_result
- Args:
list: data list Classical_condition: quantum Classical condition QuantumMachine: quantum machine repeat: search repeat times
- Returns:
result : Quantum-walk search result
- Raises:
run_fail: An error occurred in Quantum-walk
- pyqpanda.pyQPanda.quick_measure(qubit_list: QVec, shots: int) Dict[str, int] [源代码]¶
Quick measure.
- Args:
qubit_list: qubit list to measure.
shots: the repeat number of measure operations.
- Returns:
result: result of quantum program execution.
- pyqpanda.pyQPanda.random_qcircuit(qvec: QVec, depth: int = 100, gate_type: List[str] = []) QCircuit [源代码]¶
Generate a random quantum circuit.
- Args:
qvec: Output circuits for the random circuit.
depth: Circuit depth (default is 100).
gate_type: Types of gates to use (default is an empty vector).
- Returns:
A random quantum circuit.
- pyqpanda.pyQPanda.random_qprog(qubit_row: int, qubit_col: int, depth: int, qvm: QuantumMachine, qvec: QVec) QProg [源代码]¶
Generate a random quantum program.
- Args:
qubit_row: Circuit qubit row value.
qubit_col: Circuit qubit column value.
depth: Circuit depth.
qvm: Quantum machine.
qvec: Output circuits for the random quantum program.
- Returns:
A random quantum program.
- pyqpanda.pyQPanda.recover_edges(topo_data: List[List[int]], max_connect_degree: int, candidate_edges: List[Tuple[int, List[int]]]) List[List[int]] [源代码]¶
Recover edges using the specified candidate edges.
- Args:
topo_data: The topology data of the quantum program.
max_connect_degree: The maximum allowed connection degree.
candidate_edges: A list of edges to consider for recovery.
- Returns:
The updated topology data after recovery.
- pyqpanda.pyQPanda.remap(prog: QProg, target_qlist: QVec, target_clist: List[ClassicalCondition] = []) QProg [源代码]¶
Map the source quantum program to the target qubits.
- Args:
prog: Source quantum program.
target_qlist: Target qubits.
target_clist: Target classical bits (default is an empty vector).
- Returns:
The target quantum program.
- pyqpanda.pyQPanda.replace_complex_points(src_topo_data: List[List[int]], max_connect_degree: int, sub_topo_vec: List[Tuple[int, List[List[int]]]]) None [源代码]¶
Replace complex points in the source topology with subgraphs.
- Args:
src_topo_data: The source topology data of the quantum program.
max_connect_degree: The maximum allowable connection degree.
sub_topo_vec: A list of sub-topologies to replace the complex points.
- Returns:
None: This function modifies the source topology in place.
- pyqpanda.pyQPanda.run_with_configuration(*args, **kwargs) Any [源代码]¶
run_with_configuration(program: pyQPanda.QProg, cbit_list: List[pyQPanda.ClassicalCondition], shots: int, noise_model: pyQPanda.Noise = NoiseModel()) -> Dict[str, int]
Run quantum program with configuration
- Args:
program: quantum program.
cbit_list: classical cbits list.
shots: number of times to repeat the quantum program.
noise_model: noise model; defaults to no noise. Noise model only works on CPUQVM now.
- Returns:
Result of quantum program execution in shots.
First is the final qubit register state, second is its hit count.
run_with_configuration(program: pyQPanda.QProg, shots: int, noise_model: pyQPanda.Noise = NoiseModel()) -> Dict[str, int]
Run quantum program with configuration.
- Args:
program: quantum program.
shots: repeat run quantum program times.
noise_model: noise model, default is no noise. Noise model only works on CPUQVM now.
- Returns:
tuple: result of quantum program execution in shots.
First is the final qubit register state, second is its hit shot.
- pyqpanda.pyQPanda.sabre_mapping(prog: QProg, quantum_machine: QuantumMachine, init_map: List[int], max_look_ahead: int = 20, max_iterations: int = 10, config_data: str = 'QPandaConfig.json') QProg [源代码]¶
- pyqpanda.pyQPanda.sabre_mapping(prog: QProg, quantum_machine: QuantumMachine, init_map: List[int], max_look_ahead: int, max_iterations: int, arch_matrix: numpy.ndarray[numpy.float64[m, n]]) QProg
- pyqpanda.pyQPanda.sabre_mapping(prog: QProg, quantum_machine: QuantumMachine, max_look_ahead: int = 20, max_iterations: int = 10, config_data: str = 'QPandaConfig.json') QProg
- pyqpanda.pyQPanda.sabre_mapping(prog: QProg, quantum_machine: QuantumMachine, max_look_ahead: int, max_iterations: int, arch_matrix: numpy.ndarray[numpy.float64[m, n]]) QProg
sabre mapping
- Args:
prog: the target prog
quantum_machine: quantum machine
max_look_ahead: sabre_mapping max_look_ahead, default is 20
max_iterations: sabre_mapping max_iterations, default is 10
arch_matrix: arch matrix
- Returns:
mapped quantum program
- pyqpanda.pyQPanda.split_complex_points(complex_points: List[int], max_connect_degree: int, topo_data: List[List[int]], split_method: ComplexVertexSplitMethod = ComplexVertexSplitMethod.LINEAR) List[Tuple[int, List[List[int]]]] [源代码]¶
Split complex points into multiple discrete points.
- Args:
complex_points: A list of complex points to be split.
max_connect_degree: The maximum allowable connection degree.
topo_data: The topology data of the quantum program.
split_method: Method for splitting, as defined in ComplexVertexSplitMethod. Defaults to ComplexVertexSplitMethod.LINEAR.
- Returns:
None: The function modifies the input data in place.
- pyqpanda.pyQPanda.state_fidelity(state1: List[complex], state2: List[complex]) float [源代码]¶
- pyqpanda.pyQPanda.state_fidelity(matrix1: List[List[complex]], matrix2: List[List[complex]]) float
- pyqpanda.pyQPanda.state_fidelity(state1: List[complex], state2: List[List[complex]]) float
- pyqpanda.pyQPanda.state_fidelity(state1: List[List[complex]], state2: List[complex]) float
Compare a quantum state matrix with a quantum state and calculate their fidelity.
- Args:
matrix: a quantum state matrix.
state: a single quantum state represented as a list.
- Returns:
The fidelity between the matrix and the state, a value in the range [0, 1].
- pyqpanda.pyQPanda.sub(arg0: ClassicalCondition, arg1: ClassicalCondition) ClassicalCondition [源代码]¶
- pyqpanda.pyQPanda.sub(arg0: ClassicalCondition, arg1: int) ClassicalCondition
- pyqpanda.pyQPanda.sub(arg0: int, arg1: ClassicalCondition) ClassicalCondition
Subtract a ClassicalCondition from a bit size.
- Args:
a: The bit size to subtract from.
b: The ClassicalCondition to be subtracted.
- Returns:
ClassicalCondition: The resulting ClassicalCondition after subtraction.
- pyqpanda.pyQPanda.to_Quil(qprog: QProg, machine: QuantumMachine) str [源代码]¶
Transform QProg to Quil instruction.
- Args:
qprog: quantum program (QProg).
machine: quantum machine (QuantumMachine*).
- Returns:
Quil instruction string.
- pyqpanda.pyQPanda.to_originir(qprog: QProg, machine: QuantumMachine) str [源代码]¶
- pyqpanda.pyQPanda.to_originir(qprog: QCircuit, machine: QuantumMachine) str
- pyqpanda.pyQPanda.to_originir(qprog: QGate, machine: QuantumMachine) str
- pyqpanda.pyQPanda.to_originir(qprog: QIfProg, machine: QuantumMachine) str
- pyqpanda.pyQPanda.to_originir(qprog: QWhileProg, machine: QuantumMachine) str
- pyqpanda.pyQPanda.to_originir(qprog: QMeasure, machine: QuantumMachine) str
Transform QProg to OriginIR string.
- Args:
qprog: T, the quantum program or circuit to transform.
machine: QuantumMachine*, the quantum machine being used.
- Returns:
OriginIR string, the transformed representation of the quantum program.
- pyqpanda.pyQPanda.topology_match(qprog: QProg, qubit_list: QVec, machine: QuantumMachine, confing_file: str = 'QPandaConfig.json') list [源代码]¶
Judge whether a quantum program matches the topology of the physical qubits.
- Args:
qprog: The quantum program to be evaluated.
qubit_list: The list of qubits in the quantum program.
machine: The quantum machine used for execution.
confing_file: The configuration file path for matching (default: QPandaConfig.json).
- Returns:
list: Contains the resulting quantum program and the qubit list.
- pyqpanda.pyQPanda.transform_binary_data_to_qprog(machine: QuantumMachine, data: List[int]) QProg [源代码]¶
Parse binary data to transform it into a quantum program.
- Args:
machine: quantum machine.
data: list containing binary data from transform_qprog_to_binary().
- Returns:
QProg: the resulting quantum program.
- pyqpanda.pyQPanda.transform_originir_to_qprog(fname: str, machine: QuantumMachine) QProg [源代码]¶
Transform OriginIR instruction from a file into a QProg.
- Args:
fname: file containing the OriginIR instructions.
machine: the quantum machine.
- Returns:
QProg: the resulting quantum program.
- pyqpanda.pyQPanda.transform_qprog_to_binary(qprog: QProg, machine: QuantumMachine) List[int] [源代码]¶
- pyqpanda.pyQPanda.transform_qprog_to_binary(qprog: QProg, machine: QuantumMachine, fname: str) None
Save quantum program to file as binary data.
- Args:
qprog: quantum program (QProg).
machine: quantum machine.
fname: name of the file to save to.
- pyqpanda.pyQPanda.transform_qprog_to_originir(qprog: QProg, machine: QuantumMachine) str [源代码]¶
Transform a quantum program into an OriginIR instruction string.
- Args:
qprog: the quantum program (QProg).
machine: the quantum machine.
- Returns:
string: the resulting OriginIR instruction string.
- pyqpanda.pyQPanda.transform_qprog_to_quil(qprog: QProg, machine: QuantumMachine) str [源代码]¶
Transform QProg to Quil instruction.
- Args:
qprog: quantum program (QProg).
machine: quantum machine (QuantumMachine*).
- Returns:
Quil instruction string.
- pyqpanda.pyQPanda.transform_to_base_qgate(qprog: QProg, machine: QuantumMachine, config_file: str = 'QPandaConfig.json') QProg [源代码]¶
- pyqpanda.pyQPanda.transform_to_base_qgate(qprog: QProg, machine: QuantumMachine, convert_single_gates: List[str], convert_double_gates: List[str]) QProg
Convert quantum gates to basic gates.
- Args:
qprog: the quantum program to transform.
machine: the quantum machine for the transformation.
convert_single_gates: a set of quantum single gates to convert.
convert_double_gates: a set of quantum double gates to convert.
- Returns:
the updated quantum program after the conversion.
- pyqpanda.pyQPanda.transfrom_pauli_operator_to_matrix(arg0) List[complex] [源代码]¶
transfrom pauli operator to matrix
- Args:
matrix: 2^N *2^N double matrix
- Returns:
result : hamiltonian
- pyqpanda.pyQPanda.validate_double_qgate_type(gate_str_list: List[str]) list [源代码]¶
Get valid QGates and valid double bit QGate type.
- Args:
double_gates: A list of double gate strings.
- Returns:
result: A list containing the validated gate type and valid double gates.
- pyqpanda.pyQPanda.validate_single_qgate_type(gate_str_list: List[str]) list [源代码]¶
Get valid QGates and valid single bit QGate type.
- Args:
single_gates: A list of single gate strings.
- Returns:
result: A list containing the validated gate type and valid single gates.
- pyqpanda.pyQPanda.vector_dot(x: List[float], y: List[float]) float [源代码]¶
Compute the inner product of two vectors.
- Args:
x: A list representing the first vector.
y: A list representing the second vector.
- Returns:
dot result: The dot product of vectors x and y.
- pyqpanda.pyQPanda.virtual_z_transform(prog: QProg, quantum_machine: QuantumMachine, b_del_rz_gate: bool = False, config_data: str = 'QPandaConfig.json') QProg [源代码]¶
virtual z transform
- Args:
prog: the target prog
quantum_machine: quantum machine
b_del_rz_gate: whether delete the rz gate
config_data: config data, @See JsonConfigParam::load_config()
- Returns:
mapped quantum program