Skip to content

QCloudService

QCloudService is the main entry point for connecting to the OriginQ quantum cloud platform. It manages authentication and provides access to available quantum backends.

Signature

python
QCloudService(api_key: str, url: str = DEFAULT_URL)

Parameters

ParameterTypeDefaultDescription
api_keystrrequiredAPI key for authenticating with the cloud service
urlstrDEFAULT_URLURL of the cloud service endpoint

Methods

setup_logging

python
setup_logging(output: LogOutput = LogOutput.CONSOLE, file_path: str = "") -> None

Configures the logging system for the cloud service.

ParameterTypeDefaultDescription
outputLogOutputCONSOLEDestination for log output (CONSOLE or FILE)
file_pathstr""File path for saving logs when output is FILE

backends

python
backends() -> dict[str, bool]

Returns a dictionary of available backends on the cloud platform, where keys are backend names and values indicate availability.

Returns: A dictionary mapping backend names to their availability status.

backend

python
backend(backend_name: str) -> QCloudBackend

Retrieves a specific backend by its name for running quantum programs.

ParameterTypeDescription
backend_namestrThe name of the backend to retrieve

Returns: A QCloudBackend object for the specified backend.

Examples

python
from pyqpanda3.qcloud import QCloudService, LogOutput

# Initialize the cloud service
service = QCloudService(api_key="your_api_key")

# Optionally configure logging to a file
service.setup_logging(output=LogOutput.FILE, file_path="qcloud.log")

# List all available backends
for name in service.backends():
    print(name)

# Get a specific backend
backend = service.backend("origin_simulation")

QCloudBackend

QCloudBackend represents a quantum backend (simulator or real chip) available on the cloud platform. It provides methods for submitting quantum programs and computing expectation values.

Signature

python
QCloudBackend(backend_name: str)

Parameters

ParameterTypeDescription
backend_namestrThe name of the quantum cloud backend

Methods

run

Submits a quantum program to the backend for execution. Multiple overloads are available.

Run with noise model

python
run(prog: QProg, shots: int, model: QCloudNoiseModel = QCloudNoiseModel(),
    batch_id: str = "", task_form: int = 4) -> QCloudJob
ParameterTypeDefaultDescription
progQProgrequiredThe quantum program to run
shotsintrequiredNumber of execution shots
modelQCloudNoiseModelQCloudNoiseModel()Noise model for simulation
batch_idstr""Batch identifier for grouping jobs
task_formint4Task form identifier

Run on specified qubits

python
run(prog: QProg, qubits: list[int], batch_id: str = "", task_form: int = 4) -> QCloudJob
ParameterTypeDefaultDescription
progQProgrequiredThe quantum program to run
qubitslist[int]requiredQubits to run the program on
batch_idstr""Batch identifier
task_formint4Task form identifier

Run with QCloudOptions

python
run(prog: QProg, shots: int, options: QCloudOptions,
    enable_binary_encoding: bool = False, batch_id: str = "",
    task_form: int = 4) -> QCloudJob
ParameterTypeDefaultDescription
progQProgrequiredThe quantum program to run
shotsintrequiredNumber of execution shots
optionsQCloudOptionsrequiredExecution configuration options
enable_binary_encodingboolFalseWhether to use binary encoding
batch_idstr""Batch identifier
task_formint4Task form identifier

Run multiple programs

python
run(progs: list[QProg], shots: int, options: QCloudOptions,
    enable_binary_encoding: bool = False, batch_id: str = "",
    task_form: int = 4) -> QCloudJob
ParameterTypeDefaultDescription
progslist[QProg]requiredList of quantum programs to run
shotsintrequiredNumber of execution shots
optionsQCloudOptionsrequiredExecution configuration options
enable_binary_encodingboolFalseWhether to use binary encoding
batch_idstr""Batch identifier
task_formint4Task form identifier

Run for amplitude computation

python
run(prog: QProg, amplitudes: list[str]) -> QCloudJob
run(prog: QProg, amplitude: str) -> QCloudJob
ParameterTypeDescription
progQProgThe quantum program to run
amplitudeslist[str]List of amplitude state names to compute
amplitudestrSingle amplitude state name to compute

run_instruction

python
run_instruction(instruction: str, shots: int, options: QCloudOptions,
                batch_id: str = "", task_form: int = 4) -> QCloudJob
run_instruction(instructions: list[str], shots: int, options: QCloudOptions,
                batch_id: str = "", task_form: int = 4) -> QCloudJob

Runs a quantum instruction (JSON string) or list of instructions on the backend.

ParameterTypeDefaultDescription
instructionstrrequiredA JSON string representing a quantum instruction
instructionslist[str]requiredA list of JSON instruction strings
shotsintrequiredNumber of shots to execute
optionsQCloudOptionsrequiredConfiguration options
batch_idstr""Batch identifier
task_formint4Task form identifier

run_quantum_state_tomography

python
run_quantum_state_tomography(prog: QProg, shots: int,
                             options: QCloudOptions = False) -> QCloudJob

Runs quantum state tomography on the given program.

ParameterTypeDefaultDescription
progQProgrequiredThe quantum program
shotsintrequiredNumber of execution shots
optionsQCloudOptionsFalseExecution options

expval_hamiltonian

python
expval_hamiltonian(prog: QProg, hamiltonian: Hamiltonian, shots: int = 1000,
                   noise_model: QCloudNoiseModel = QCloudNoiseModel()) -> float
expval_hamiltonian(prog: QProg, hamiltonian: Hamiltonian,
                   options: QCloudOptions) -> float

Computes the expectation value of a Hamiltonian with respect to the given quantum program.

ParameterTypeDefaultDescription
progQProgrequiredThe quantum program to execute
hamiltonianHamiltonianrequiredThe Hamiltonian for expectation value computation
shotsint1000Number of sampling shots
noise_modelQCloudNoiseModelQCloudNoiseModel()Noise model for simulation
optionsQCloudOptionsrequiredExecution configuration (alternative overload)

Returns: The expectation value as a float.

expval_pauli_operator

python
expval_pauli_operator(prog: QProg, pauli_operator: PauliOperator, shots: int = 1000,
                      noise_model: QCloudNoiseModel = QCloudNoiseModel()) -> float
expval_pauli_operator(prog: QProg, pauli_operator: PauliOperator,
                      options: QCloudOptions) -> float

Computes the expectation value of a Pauli operator with respect to the given quantum program.

ParameterTypeDefaultDescription
progQProgrequiredThe quantum program to execute
pauli_operatorPauliOperatorrequiredThe Pauli operator for expectation value computation
shotsint1000Number of sampling shots
noise_modelQCloudNoiseModelQCloudNoiseModel()Noise model for simulation
optionsQCloudOptionsrequiredExecution configuration (alternative overload)

Returns: The expectation value as a float.

chip_info

python
chip_info() -> ChipInfo

Retrieves the chip configuration and topology information for this backend.

Returns: A ChipInfo object containing chip properties.

chip_backend

python
chip_backend(qubits: list[int] = []) -> ChipBackend

Retrieves the backend configuration for this chip, optionally filtered by a subset of qubits.

ParameterTypeDefaultDescription
qubitslist[int][]Optional list of qubit indices to filter the backend configuration

Returns: A ChipBackend object containing the chip backend configuration. Import from pyqpanda3.transpilation.

name

python
name() -> str

Retrieves the name of the backend.

Returns: The backend name string.

Examples

python
from pyqpanda3.qcloud import QCloudService, QCloudNoiseModel, QCloudOptions
from pyqpanda3.core import QCircuit, H, CNOT, measure

service = QCloudService(api_key="your_api_key")
backend = service.backend("origin_simulation")

# Create and run a simple circuit
circuit = QCircuit(2)
circuit << H(0) << CNOT(0, 1)
prog = QProg()
prog << circuit << measure([0, 1], [0, 1])

# Run with default settings
job = backend.run(prog, shots=1000)

# Run with custom options
options = QCloudOptions()
options.set_mapping(True)
options.set_optimization(True)
job = backend.run(prog, shots=1000, options=options)

# Run with noise model
noise = QCloudNoiseModel()
job = backend.run(prog, shots=1000, model=noise)

# Compute expectation value
from pyqpanda3.hamiltonian import Hamiltonian
result = backend.expval_hamiltonian(prog, hamiltonian, shots=2000)
print(f"Expectation value: {result}")

QCloudOptions

QCloudOptions configures execution options for cloud quantum jobs, including mapping, optimization, amendment, and custom parameters.

Signature

python
QCloudOptions()

Methods

Setters

MethodSignatureDescription
set_amendset_amend(is_amend: bool) -> NoneEnable or disable amendment
set_mappingset_mapping(is_mapping: bool) -> NoneEnable or disable qubit mapping
set_optimizationset_optimization(is_optimization: bool) -> NoneEnable or disable circuit optimization
set_point_labelset_point_label(label: int) -> NoneSet the point label for real chip tasks
set_specified_blockset_specified_block(block) -> NoneSet the specified block for real chip tasks
set_is_prob_countsset_is_prob_counts(is_prob_counts: bool) -> NoneSet whether to return probability counts
set_custom_optionset_custom_option(key: str, value) -> NoneSet a custom option (int, double, string, or bool)

Getters

MethodSignatureDescription
is_amendis_amend() -> boolCheck if amendment is enabled
is_mappingis_mapping() -> boolCheck if mapping is enabled
is_optimizationis_optimization() -> boolCheck if optimization is enabled
point_labelpoint_label() -> intGet the point label value
is_prob_countsis_prob_counts() -> boolGet whether probability counts are enabled
specified_blockspecified_block() -> listGet the specified block value

Custom Options

MethodSignatureDescription
get_custom_optionget_custom_option(key: str) -> int/float/str/boolRetrieve a custom option by key (type depends on stored value)
has_custom_optionhas_custom_option(key: str) -> boolCheck whether a custom option exists
get_custom_optionsget_custom_options() -> dictRetrieve all custom options as a dictionary

Utility

MethodSignatureDescription
printprint() -> NonePrint the current options settings to standard output

Examples

python
from pyqpanda3.qcloud import QCloudOptions

options = QCloudOptions()
options.set_amend(True)
options.set_mapping(True)
options.set_optimization(True)
options.set_point_label(0)
options.set_custom_option("custom_key", 42)

print("Amend:", options.is_amend())
print("Has custom:", options.has_custom_option("custom_key"))
print("Custom value:", options.get_custom_option("custom_key"))

options.print()

ChipInfo

ChipInfo contains detailed information about a quantum chip, including qubit properties, topology, and gate configurations.

Signature

python
ChipInfo()

Note: ChipInfo objects are typically obtained from QCloudBackend.chip_info() rather than constructed directly.

Methods

MethodSignatureDescription
qubits_numqubits_num() -> intNumber of qubits on the chip
chip_idchip_id() -> strThe chip identifier string
available_qubitsavailable_qubits() -> list[int]Indices of available qubits
high_frequency_qubitshigh_frequency_qubits() -> list[int]Indices of high-frequency qubits
single_qubit_infosingle_qubit_info() -> list[SingleQubitInfo]Per-qubit property information
double_qubits_infodouble_qubits_info() -> list[DoubleQubitsInfo]Qubit pair gate information
get_basic_gatesget_basic_gates() -> listList of basic gates supported by the chip
get_compensate_angle_mapget_compensate_angle_map() -> dictCompensate angle map for calibration
get_single_gate_timingget_single_gate_timing() -> intSingle-qubit gate timing
get_double_gate_timingget_double_gate_timing() -> intTwo-qubit gate timing
get_chip_topologyget_chip_topology(qubits: list[int] = []) -> listChip topology edges, optionally filtered by qubits
get_chip_backendget_chip_backend(qubits: list[int] = []) -> ChipBackendBackend configuration, optionally filtered by qubits

Examples

python
backend = service.backend("origin_quantum_chip")
info = backend.chip_info()

print(f"Chip: {info.chip_id()}")
print(f"Qubits: {info.qubits_num()}")
print(f"Available qubits: {info.available_qubits()}")

for qinfo in info.single_qubit_info():
    print(f"  Qubit {qinfo.get_qubit_id()}: T1={qinfo.get_t1()}, T2={qinfo.get_t2()}, "
          f"fidelity={qinfo.get_single_gate_fidelity()}")

SingleQubitInfo

Properties of a single qubit on a quantum chip.

Methods

MethodSignatureDescription
get_qubit_idget_qubit_id() -> strThe qubit identifier
get_single_gate_fidelityget_single_gate_fidelity() -> floatSingle-qubit gate fidelity
get_readout_fidelityget_readout_fidelity() -> floatReadout measurement fidelity
get_frequencyget_frequency() -> floatQubit frequency
get_t1get_t1() -> floatT1 relaxation time
get_t2get_t2() -> floatT2 coherence time

DoubleQubitsInfo

Properties of a qubit pair used for two-qubit gate operations.

Signature

python
DoubleQubitsInfo(qubit1: int, qubit2: int, fidelity: float)

Methods

MethodSignatureDescription
get_qubitsget_qubits() -> list[int]The pair of qubit indices
get_fidelityget_fidelity() -> floatTwo-qubit gate fidelity for this pair

ChipBackend

Low-level backend configuration for a quantum chip, including topology, gate information, and timing parameters.

Note: ChipBackend is exported from pyqpanda3.transpilation, not from pyqpanda3.qcloud. Import it as from pyqpanda3.transpilation import ChipBackend.

Signature

python
ChipBackend()
ChipBackend(chip_topology_edges: list[list[int]], basic_gates: list[str],
            compensate_angle_map: dict, echo_gate_timing: int,
            barrier_gate_timing: int, single_gate_timing: int,
            double_gate_timing: int, patterns: dict)

Attributes

AttributeTypeDescription
chip_topology_edgeslist[list[int]]Topology edges of the chip
basic_gateslist[str]List of supported basic gate names
compensate_angle_mapdictMap from qubit pairs to compensate angles
echo_gate_timingintTiming for echo gates
barrier_gate_timingintTiming for barrier gates
single_gate_timingintTiming for single-qubit gates
double_gate_timingintTiming for two-qubit gates
patternsdictCZ gate patterns

See Also

Released under the MIT License.