QCloudService
QCloudService 是连接 OriginQ 量子云平台的主要入口。它管理身份验证并提供对可用量子后端的访问。
签名
QCloudService(api_key: str, url: str = DEFAULT_URL)参数
| 参数 | 类型 | 默认值 | 描述 |
|---|---|---|---|
| api_key | str | 必填 | 用于云服务身份验证的 API 密钥 |
| url | str | DEFAULT_URL | 云服务端点的 URL |
方法
setup_logging
setup_logging(output: LogOutput = LogOutput.CONSOLE, file_path: str = "") -> None配置云服务的日志系统。
| 参数 | 类型 | 默认值 | 描述 |
|---|---|---|---|
| output | LogOutput | CONSOLE | 日志输出目标(CONSOLE 或 FILE) |
| file_path | str | "" | 当 output 为 FILE 时保存日志的文件路径 |
backends
backends() -> dict[str, bool]返回云平台上可用后端的字典,键为后端名称,值为是否可用。
返回值: 后端名称到其可用状态的映射字典。
backend
backend(backend_name: str) -> QCloudBackend根据名称检索特定的后端以运行量子程序。
| 参数 | 类型 | 描述 |
|---|---|---|
| backend_name | str | 要检索的后端名称 |
返回值: 指定后端的 QCloudBackend 对象。
示例
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 表示云平台上可用的量子后端(模拟器或真实芯片)。它提供了提交量子程序和计算期望值的方法。
签名
QCloudBackend(backend_name: str)参数
| 参数 | 类型 | 描述 |
|---|---|---|
| backend_name | str | 量子云后端的名称 |
方法
run
将量子程序提交到后端执行。提供多个重载版本。
使用噪声模型运行
run(prog: QProg, shots: int, model: QCloudNoiseModel = QCloudNoiseModel(),
batch_id: str = "", task_form: int = 4) -> QCloudJob| 参数 | 类型 | 默认值 | 描述 |
|---|---|---|---|
| prog | QProg | 必填 | 要运行的量子程序 |
| shots | int | 必填 | 执行次数 |
| model | QCloudNoiseModel | QCloudNoiseModel() | 模拟的噪声模型 |
| batch_id | str | "" | 用于分组任务的批次标识符 |
| task_form | int | 4 | 任务表单标识符 |
在指定量子比特上运行
run(prog: QProg, qubits: list[int], batch_id: str = "", task_form: int = 4) -> QCloudJob| 参数 | 类型 | 默认值 | 描述 |
|---|---|---|---|
| prog | QProg | 必填 | 要运行的量子程序 |
| qubits | list[int] | 必填 | 运行程序的量子比特 |
| batch_id | str | "" | 批次标识符 |
| task_form | int | 4 | 任务表单标识符 |
使用 QCloudOptions 运行
run(prog: QProg, shots: int, options: QCloudOptions,
enable_binary_encoding: bool = False, batch_id: str = "",
task_form: int = 4) -> QCloudJob| 参数 | 类型 | 默认值 | 描述 |
|---|---|---|---|
| prog | QProg | 必填 | 要运行的量子程序 |
| shots | int | 必填 | 执行次数 |
| options | QCloudOptions | 必填 | 执行配置选项 |
| enable_binary_encoding | bool | False | 是否使用二进制编码 |
| batch_id | str | "" | 批次标识符 |
| task_form | int | 4 | 任务表单标识符 |
运行多个程序
run(progs: list[QProg], shots: int, options: QCloudOptions,
enable_binary_encoding: bool = False, batch_id: str = "",
task_form: int = 4) -> QCloudJob| 参数 | 类型 | 默认值 | 描述 |
|---|---|---|---|
| progs | list[QProg] | 必填 | 要运行的量子程序列表 |
| shots | int | 必填 | 执行次数 |
| options | QCloudOptions | 必填 | 执行配置选项 |
| enable_binary_encoding | bool | False | 是否使用二进制编码 |
| batch_id | str | "" | 批次标识符 |
| task_form | int | 4 | 任务表单标识符 |
用于振幅计算运行
run(prog: QProg, amplitudes: list[str]) -> QCloudJob
run(prog: QProg, amplitude: str) -> QCloudJob| 参数 | 类型 | 描述 |
|---|---|---|
| prog | QProg | 要运行的量子程序 |
| amplitudes | list[str] | 要计算的振幅状态名称列表 |
| amplitude | str | 单个振幅状态名称 |
run_instruction
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 字符串)或指令列表。
| 参数 | 类型 | 默认值 | 描述 |
|---|---|---|---|
| instruction | str | 必填 | 表示量子指令的 JSON 字符串 |
| instructions | list[str] | 必填 | JSON 指令字符串列表 |
| shots | int | 必填 | 执行次数 |
| options | QCloudOptions | 必填 | 配置选项 |
| batch_id | str | "" | 批次标识符 |
| task_form | int | 4 | 任务表单标识符 |
run_quantum_state_tomography
run_quantum_state_tomography(prog: QProg, shots: int,
options: QCloudOptions = False) -> QCloudJob对给定程序运行量子态层析(Quantum State Tomography)。
| 参数 | 类型 | 默认值 | 描述 |
|---|---|---|---|
| prog | QProg | 必填 | 量子程序 |
| shots | int | 必填 | 执行次数 |
| options | QCloudOptions | False | 执行选项 |
expval_hamiltonian
expval_hamiltonian(prog: QProg, hamiltonian: Hamiltonian, shots: int = 1000,
noise_model: QCloudNoiseModel = QCloudNoiseModel()) -> float
expval_hamiltonian(prog: QProg, hamiltonian: Hamiltonian,
options: QCloudOptions) -> float计算给定量子程序对应的哈密顿量(Hamiltonian)的期望值。
| 参数 | 类型 | 默认值 | 描述 |
|---|---|---|---|
| prog | QProg | 必填 | 要执行的量子程序 |
| hamiltonian | Hamiltonian | 必填 | 用于期望值计算的哈密顿量 |
| shots | int | 1000 | 采样次数 |
| noise_model | QCloudNoiseModel | QCloudNoiseModel() | 模拟的噪声模型 |
| options | QCloudOptions | 必填 | 执行配置(替代重载) |
返回值: 期望值,以浮点数表示。
expval_pauli_operator
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)的期望值。
| 参数 | 类型 | 默认值 | 描述 |
|---|---|---|---|
| prog | QProg | 必填 | 要执行的量子程序 |
| pauli_operator | PauliOperator | 必填 | 用于期望值计算的泡利算符 |
| shots | int | 1000 | 采样次数 |
| noise_model | QCloudNoiseModel | QCloudNoiseModel() | 模拟的噪声模型 |
| options | QCloudOptions | 必填 | 执行配置(替代重载) |
返回值: 期望值,以浮点数表示。
chip_info
chip_info() -> ChipInfo检索此后端的芯片配置和拓扑信息。
返回值: 包含芯片属性的 ChipInfo 对象。
chip_backend
chip_backend(qubits: list[int] = []) -> ChipBackend检索此芯片的后端配置,可选择按量子比特子集进行过滤。
| 参数 | 类型 | 默认值 | 描述 |
|---|---|---|---|
| qubits | list[int] | [] | 可选的量子比特索引列表,用于过滤后端配置 |
返回值: 包含芯片后端配置的 ChipBackend 对象。请从 pyqpanda3.transpilation 导入。
name
name() -> str检索后端的名称。
返回值: 后端名称字符串。
示例
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 用于配置云量子任务的执行选项,包括映射、优化、修正和自定义参数。
签名
QCloudOptions()方法
设置方法
| 方法 | 签名 | 描述 |
|---|---|---|
| set_amend | set_amend(is_amend: bool) -> None | 启用或禁用修正 |
| set_mapping | set_mapping(is_mapping: bool) -> None | 启用或禁用量子比特映射 |
| set_optimization | set_optimization(is_optimization: bool) -> None | 启用或禁用线路优化 |
| set_point_label | set_point_label(label: int) -> None | 设置真实芯片任务的点标签 |
| set_specified_block | set_specified_block(block) -> None | 设置真实芯片任务的指定块 |
| set_is_prob_counts | set_is_prob_counts(is_prob_counts: bool) -> None | 设置是否返回概率计数 |
| set_custom_option | set_custom_option(key: str, value) -> None | 设置自定义选项(int、double、string 或 bool) |
获取方法
| 方法 | 签名 | 描述 |
|---|---|---|
| is_amend | is_amend() -> bool | 检查是否启用了修正 |
| is_mapping | is_mapping() -> bool | 检查是否启用了映射 |
| is_optimization | is_optimization() -> bool | 检查是否启用了优化 |
| point_label | point_label() -> int | 获取点标签值 |
| is_prob_counts | is_prob_counts() -> bool | 获取是否启用了概率计数 |
| specified_block | specified_block() -> list | 获取指定块的值 |
自定义选项
| 方法 | 签名 | 描述 |
|---|---|---|
| get_custom_option | get_custom_option(key: str) -> int/float/str/bool | 按键检索自定义选项(类型取决于存储的值) |
| has_custom_option | has_custom_option(key: str) -> bool | 检查是否存在某个自定义选项 |
| get_custom_options | get_custom_options() -> dict | 以字典形式检索所有自定义选项 |
工具方法
| 方法 | 签名 | 描述 |
|---|---|---|
print() -> None | 将当前选项设置打印到标准输出 |
示例
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 包含量子芯片的详细信息,包括量子比特属性、拓扑结构和门配置。
签名
ChipInfo()注意:ChipInfo 对象通常通过 QCloudBackend.chip_info() 获取,而非直接构造。
方法
| 方法 | 签名 | 描述 |
|---|---|---|
| qubits_num | qubits_num() -> int | 芯片上的量子比特数 |
| chip_id | chip_id() -> str | 芯片标识符字符串 |
| available_qubits | available_qubits() -> list[int] | 可用量子比特的索引 |
| high_frequency_qubits | high_frequency_qubits() -> list[int] | 高频量子比特的索引 |
| single_qubit_info | single_qubit_info() -> list[SingleQubitInfo] | 每个量子比特的属性信息 |
| double_qubits_info | double_qubits_info() -> list[DoubleQubitsInfo] | 量子比特对的门信息 |
| get_basic_gates | get_basic_gates() -> list | 芯片支持的基本门列表 |
| get_compensate_angle_map | get_compensate_angle_map() -> dict | 用于校准的补偿角度映射 |
| get_single_gate_timing | get_single_gate_timing() -> int | 单量子比特门时序 |
| get_double_gate_timing | get_double_gate_timing() -> int | 双量子比特门时序 |
| get_chip_topology | get_chip_topology(qubits: list[int] = []) -> list | 芯片拓扑边,可选择按量子比特过滤 |
| get_chip_backend | get_chip_backend(qubits: list[int] = []) -> ChipBackend | 后端配置,可选择按量子比特过滤 |
示例
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_id | get_qubit_id() -> str | 量子比特标识符 |
| get_single_gate_fidelity | get_single_gate_fidelity() -> float | 单量子比特门保真度 |
| get_readout_fidelity | get_readout_fidelity() -> float | 读出测量保真度 |
| get_frequency | get_frequency() -> float | 量子比特频率 |
| get_t1 | get_t1() -> float | T1 弛豫时间 |
| get_t2 | get_t2() -> float | T2 相干时间 |
DoubleQubitsInfo
用于双量子比特门操作的量子比特对属性。
签名
DoubleQubitsInfo(qubit1: int, qubit2: int, fidelity: float)方法
| 方法 | 签名 | 描述 |
|---|---|---|
| get_qubits | get_qubits() -> list[int] | 量子比特对的索引 |
| get_fidelity | get_fidelity() -> float | 此量子比特对的双量子比特门保真度 |
ChipBackend
量子芯片的底层后端配置,包括拓扑结构、门信息和时序参数。
注意:
ChipBackend从pyqpanda3.transpilation导出,而非pyqpanda3.qcloud。请使用from pyqpanda3.transpilation import ChipBackend导入。
签名
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_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 | CZ 门模式 |
另见
- QCloudJob -- 提交后的任务管理
- QCloudResult -- 检索任务结果
- QCloudNoiseModel -- 噪声模型配置
- 枚举 -- JobStatus、DataFormat 和其他枚举