Skip to content

QCloudService

QCloudService 是连接 OriginQ 量子云平台的主要入口。它管理身份验证并提供对可用量子后端的访问。

签名

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

参数

参数类型默认值描述
api_keystr必填用于云服务身份验证的 API 密钥
urlstrDEFAULT_URL云服务端点的 URL

方法

setup_logging

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

配置云服务的日志系统。

参数类型默认值描述
outputLogOutputCONSOLE日志输出目标(CONSOLE 或 FILE)
file_pathstr""当 output 为 FILE 时保存日志的文件路径

backends

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

返回云平台上可用后端的字典,键为后端名称,值为是否可用。

返回值: 后端名称到其可用状态的映射字典。

backend

python
backend(backend_name: str) -> QCloudBackend

根据名称检索特定的后端以运行量子程序。

参数类型描述
backend_namestr要检索的后端名称

返回值: 指定后端的 QCloudBackend 对象。

示例

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 表示云平台上可用的量子后端(模拟器或真实芯片)。它提供了提交量子程序和计算期望值的方法。

签名

python
QCloudBackend(backend_name: str)

参数

参数类型描述
backend_namestr量子云后端的名称

方法

run

将量子程序提交到后端执行。提供多个重载版本。

使用噪声模型运行

python
run(prog: QProg, shots: int, model: QCloudNoiseModel = QCloudNoiseModel(),
    batch_id: str = "", task_form: int = 4) -> QCloudJob
参数类型默认值描述
progQProg必填要运行的量子程序
shotsint必填执行次数
modelQCloudNoiseModelQCloudNoiseModel()模拟的噪声模型
batch_idstr""用于分组任务的批次标识符
task_formint4任务表单标识符

在指定量子比特上运行

python
run(prog: QProg, qubits: list[int], batch_id: str = "", task_form: int = 4) -> QCloudJob
参数类型默认值描述
progQProg必填要运行的量子程序
qubitslist[int]必填运行程序的量子比特
batch_idstr""批次标识符
task_formint4任务表单标识符

使用 QCloudOptions 运行

python
run(prog: QProg, shots: int, options: QCloudOptions,
    enable_binary_encoding: bool = False, batch_id: str = "",
    task_form: int = 4) -> QCloudJob
参数类型默认值描述
progQProg必填要运行的量子程序
shotsint必填执行次数
optionsQCloudOptions必填执行配置选项
enable_binary_encodingboolFalse是否使用二进制编码
batch_idstr""批次标识符
task_formint4任务表单标识符

运行多个程序

python
run(progs: list[QProg], shots: int, options: QCloudOptions,
    enable_binary_encoding: bool = False, batch_id: str = "",
    task_form: int = 4) -> QCloudJob
参数类型默认值描述
progslist[QProg]必填要运行的量子程序列表
shotsint必填执行次数
optionsQCloudOptions必填执行配置选项
enable_binary_encodingboolFalse是否使用二进制编码
batch_idstr""批次标识符
task_formint4任务表单标识符

用于振幅计算运行

python
run(prog: QProg, amplitudes: list[str]) -> QCloudJob
run(prog: QProg, amplitude: str) -> QCloudJob
参数类型描述
progQProg要运行的量子程序
amplitudeslist[str]要计算的振幅状态名称列表
amplitudestr单个振幅状态名称

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

在后端上运行量子指令(JSON 字符串)或指令列表。

参数类型默认值描述
instructionstr必填表示量子指令的 JSON 字符串
instructionslist[str]必填JSON 指令字符串列表
shotsint必填执行次数
optionsQCloudOptions必填配置选项
batch_idstr""批次标识符
task_formint4任务表单标识符

run_quantum_state_tomography

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

对给定程序运行量子态层析(Quantum State Tomography)。

参数类型默认值描述
progQProg必填量子程序
shotsint必填执行次数
optionsQCloudOptionsFalse执行选项

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

计算给定量子程序对应的哈密顿量(Hamiltonian)的期望值。

参数类型默认值描述
progQProg必填要执行的量子程序
hamiltonianHamiltonian必填用于期望值计算的哈密顿量
shotsint1000采样次数
noise_modelQCloudNoiseModelQCloudNoiseModel()模拟的噪声模型
optionsQCloudOptions必填执行配置(替代重载)

返回值: 期望值,以浮点数表示。

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

计算给定量子程序对应的泡利算符(Pauli Operator)的期望值。

参数类型默认值描述
progQProg必填要执行的量子程序
pauli_operatorPauliOperator必填用于期望值计算的泡利算符
shotsint1000采样次数
noise_modelQCloudNoiseModelQCloudNoiseModel()模拟的噪声模型
optionsQCloudOptions必填执行配置(替代重载)

返回值: 期望值,以浮点数表示。

chip_info

python
chip_info() -> ChipInfo

检索此后端的芯片配置和拓扑信息。

返回值: 包含芯片属性的 ChipInfo 对象。

chip_backend

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

检索此芯片的后端配置,可选择按量子比特子集进行过滤。

参数类型默认值描述
qubitslist[int][]可选的量子比特索引列表,用于过滤后端配置

返回值: 包含芯片后端配置的 ChipBackend 对象。请从 pyqpanda3.transpilation 导入。

name

python
name() -> str

检索后端的名称。

返回值: 后端名称字符串。

示例

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 用于配置云量子任务的执行选项,包括映射、优化、修正和自定义参数。

签名

python
QCloudOptions()

方法

设置方法

方法签名描述
set_amendset_amend(is_amend: bool) -> None启用或禁用修正
set_mappingset_mapping(is_mapping: bool) -> None启用或禁用量子比特映射
set_optimizationset_optimization(is_optimization: bool) -> None启用或禁用线路优化
set_point_labelset_point_label(label: int) -> None设置真实芯片任务的点标签
set_specified_blockset_specified_block(block) -> None设置真实芯片任务的指定块
set_is_prob_countsset_is_prob_counts(is_prob_counts: bool) -> None设置是否返回概率计数
set_custom_optionset_custom_option(key: str, value) -> None设置自定义选项(int、double、string 或 bool)

获取方法

方法签名描述
is_amendis_amend() -> bool检查是否启用了修正
is_mappingis_mapping() -> bool检查是否启用了映射
is_optimizationis_optimization() -> bool检查是否启用了优化
point_labelpoint_label() -> int获取点标签值
is_prob_countsis_prob_counts() -> bool获取是否启用了概率计数
specified_blockspecified_block() -> list获取指定块的值

自定义选项

方法签名描述
get_custom_optionget_custom_option(key: str) -> int/float/str/bool按键检索自定义选项(类型取决于存储的值)
has_custom_optionhas_custom_option(key: str) -> bool检查是否存在某个自定义选项
get_custom_optionsget_custom_options() -> dict以字典形式检索所有自定义选项

工具方法

方法签名描述
printprint() -> None将当前选项设置打印到标准输出

示例

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 包含量子芯片的详细信息,包括量子比特属性、拓扑结构和门配置。

签名

python
ChipInfo()

注意:ChipInfo 对象通常通过 QCloudBackend.chip_info() 获取,而非直接构造。

方法

方法签名描述
qubits_numqubits_num() -> int芯片上的量子比特数
chip_idchip_id() -> str芯片标识符字符串
available_qubitsavailable_qubits() -> list[int]可用量子比特的索引
high_frequency_qubitshigh_frequency_qubits() -> list[int]高频量子比特的索引
single_qubit_infosingle_qubit_info() -> list[SingleQubitInfo]每个量子比特的属性信息
double_qubits_infodouble_qubits_info() -> list[DoubleQubitsInfo]量子比特对的门信息
get_basic_gatesget_basic_gates() -> list芯片支持的基本门列表
get_compensate_angle_mapget_compensate_angle_map() -> dict用于校准的补偿角度映射
get_single_gate_timingget_single_gate_timing() -> int单量子比特门时序
get_double_gate_timingget_double_gate_timing() -> int双量子比特门时序
get_chip_topologyget_chip_topology(qubits: list[int] = []) -> list芯片拓扑边,可选择按量子比特过滤
get_chip_backendget_chip_backend(qubits: list[int] = []) -> ChipBackend后端配置,可选择按量子比特过滤

示例

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

量子芯片上单个量子比特的属性。

方法

方法签名描述
get_qubit_idget_qubit_id() -> str量子比特标识符
get_single_gate_fidelityget_single_gate_fidelity() -> float单量子比特门保真度
get_readout_fidelityget_readout_fidelity() -> float读出测量保真度
get_frequencyget_frequency() -> float量子比特频率
get_t1get_t1() -> floatT1 弛豫时间
get_t2get_t2() -> floatT2 相干时间

DoubleQubitsInfo

用于双量子比特门操作的量子比特对属性。

签名

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

方法

方法签名描述
get_qubitsget_qubits() -> list[int]量子比特对的索引
get_fidelityget_fidelity() -> float此量子比特对的双量子比特门保真度

ChipBackend

量子芯片的底层后端配置,包括拓扑结构、门信息和时序参数。

注意: ChipBackendpyqpanda3.transpilation 导出,而非 pyqpanda3.qcloud。请使用 from pyqpanda3.transpilation import ChipBackend 导入。

签名

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)

属性

属性类型描述
chip_topology_edgeslist[list[int]]芯片的拓扑边
basic_gateslist[str]支持的基本门名称列表
compensate_angle_mapdict从量子比特对到补偿角度的映射
echo_gate_timingint回波门的时序
barrier_gate_timingint屏障门的时序
single_gate_timingint单量子比特门的时序
double_gate_timingint双量子比特门的时序
patternsdictCZ 门模式

另见

Released under the MIT License.