qpandalite.qcloud_config.originq_cloud_config 源代码

"""OriginQ cloud configuration utilities.

This module provides functions to create and save OriginQ quantum
cloud service configuration files for both standard and online modes.
"""

__all__ = ["create_originq_cloud_config", "create_originq_online_cloud_config"]
import json
from pathlib import Path


[文档] def create_originq_cloud_config(apitoken=None, submit_url=None, query_url=None, available_qubits=None, available_topology=None, task_group_size=200, savepath = None): """Create OriginQ cloud configuration file with topology settings. Args: apitoken: API token for OriginQ cloud service authentication. submit_url: URL endpoint for submitting quantum tasks. query_url: URL endpoint for querying task results. available_qubits: List of available qubit indices on the quantum device. available_topology: List of connected qubit pairs [[q1, q2], ...]. task_group_size: Maximum number of circuits per task (default: 200). savepath: Directory path to save the configuration file. Defaults to current working directory. Raises: RuntimeError: If required parameters (apitoken, submit_url, query_url) are not provided or if parameters have invalid types. """ if not apitoken: raise RuntimeError('You should input your api key.') if not submit_url: raise RuntimeError('You should input the submitting url (url 1).') if not query_url: raise RuntimeError('You should input the querying url (url 2).') if not isinstance(available_qubits, list): raise RuntimeError('Available qubits must be a list.') if not isinstance(available_topology, list): raise RuntimeError('Available topology must be a list.') if not isinstance(task_group_size, int): raise RuntimeError('Task group size (task_group_size) must be a number.') if not savepath: savepath = Path.cwd() default_online_config = { 'apitoken': apitoken, 'submit_url': submit_url, 'query_url': query_url, 'available_qubits': available_qubits, 'available_topology': available_topology, 'task_group_size': task_group_size, } with open(savepath / 'originq_cloud_config.json', 'w') as fp: json.dump(default_online_config, fp, indent=2)
[文档] def create_originq_online_cloud_config(apitoken=None, submit_url=None, query_url=None, task_group_size=200, savepath = None): """Create OriginQ online cloud configuration file without topology. This configuration is used for online OriginQ service where qubit topology is managed by the remote server. Args: apitoken: API token for OriginQ cloud service authentication. submit_url: URL endpoint for submitting quantum tasks. query_url: URL endpoint for querying task results. task_group_size: Maximum number of circuits per task (default: 200). savepath: Directory path to save the configuration file. Defaults to current working directory. Raises: RuntimeError: If required parameters are not provided or if task_group_size is not an integer. """ if not apitoken: raise RuntimeError('You should input your api key.') if not submit_url: raise RuntimeError('You should input the submitting url (url 1).') if not query_url: raise RuntimeError('You should input the querying url (url 2).') if not isinstance(task_group_size, int): raise RuntimeError('Task group size (task_group_size) must be a number.') if not savepath: savepath = Path.cwd() default_online_config = { 'apitoken': apitoken, 'submit_url': submit_url, 'query_url': query_url, 'available_qubits': None, 'available_topology': None, 'task_group_size': task_group_size, } with open(savepath / 'originq_cloud_config.json', 'w') as fp: json.dump(default_online_config, fp, indent=2)
if __name__ == '__main__': # The originq qpilot login apitoken apitoken = 'TOKEN' # The url for submitting the task submit_url = 'SUBMIT_URL' # The url for querying the task query_url = 'QUERY_URL' # Available qubits available_qubits = [0, 1, 2] # Available topology available_topology = [[0, 1], [1, 2]] # The maximum task group size, representing the maximum number of # quantum circuits contained in a single task. (default = 200) task_group_size = 200 create_originq_cloud_config(apitoken=apitoken, submit_url=submit_url, query_url=query_url, available_qubits=available_qubits, available_topology=available_topology, task_group_size=task_group_size)