附录B:完整程序示例¶
B.1 准备量子计算云平台登录信息¶
from pyezQ import * #导出量子计算机SDK的支持包,该支持包于2023年7月正式更名为pyezQ,此前的ezQpy包停更,并且停更版本已经不支持新功能。
account = Account(login_key='554393d4e2425130b0bcf7579163ffe2', machine_name='Emulator')
#创建实例,设置用户SDK密钥,选择量子计算机
#用户使用时,请务必更新上述key,否则上述key会被定时更新而示例程序不可以。
B.2 量子程序编写¶
还是想办法实现第一手的程序。程序的设计不在本教程中。请关注其他相关教程。
#手动书写第一个量子程序:3比特GHZ态
#采用随意选取的三个比特,有可能不符合拓扑结构,需要进行比特映射
qcis_circuit = '''
H Q0
H Q7
CZ Q0 Q7
H Q7
H Q13
CZ Q7 Q13
H Q13
M Q0
M Q7
M Q13
'''
#以下两步为展示OpenQASM程序的应用。
#1. QASM程序的准备,这里直接有上例转化给出,该转化函数由SDK提供了一个版本供大家使用。
qasm_circuit=account.convert_qcis_to_qasm(qcis_circuit)
print(qasm_circuit)
#2. 将QASM程序转化为QCIS,该转化函数由SDK提供了一个版本供大家使用。
#现阶段SDK中该转化支持的门操作有限,还请理解。如果有特殊需要,可以联系我们来补充,或者根据自身需求来改写转化函数,如果您能分享你的创作则更为感谢。
qcis_circuit2=account.convert_qasm_to_qcis(qasm_circuit)
print(qcis_circuit2)
#这里会发现转化出的函数所直接使用的门函数和原始线路有差别,主要是因为转化中有一些可以合并的操作。
OPENQASM 2.0; include "qelib1.inc"; qreg q[14]; creg c[14]; h q[0]; h q[7]; cz q[0],q[7]; h q[7]; h q[13]; cz q[7],q[13]; h q[13]; measure q[0] -> c[0]; measure q[7] -> c[1]; measure q[13] -> c[2]; Y2M Q0 Z Q0 Z Q7 Y2P Q7 CZ Q0 Q7 Y2M Q7 Z Q7 Z Q13 Y2P Q13 CZ Q7 Q13 Z Q13 Y2P Q13 M Q0 M Q7 M Q13
B.3 程序调整¶
还是想办法实现第一手的程序。程序的设计不在本教程中。请关注其他相关教程。
B.3.1 正则检查¶
对程序QCIS语法规则做检查,目前提供离线版本,不提供拓扑结构检查。后继会增加在线版本。
#目前本SDK中的正则检查还是SDK中预置的离线版本,对拓扑结构等不做检查。
#后继会更新调用云平台服务上的实时正则检查,这样可以确保规则检查后的线路提交不会出现线路本身问题。
#该正则函数会将程序进行一定转化,参考如下:qcis_circuit2与qcis_circuit正则检查之后的效果一样。
qcis_circuit2=account.qcis_check_regular(qcis_circuit2)
print(qcis_circuit2)
print('\n')
qcis_circuit3=account.qcis_check_regular(qcis_circuit)
print(qcis_circuit3)
Y2M Q0 Z Q0 Z Q7 Y2P Q7 CZ Q0 Q7 Y2M Q7 Z Q7 Z Q13 Y2P Q13 CZ Q7 Q13 Z Q13 Y2P Q13 M Q0 M Q7 M Q13 H Q0 H Q7 CZ Q0 Q7 H Q7 H Q13 CZ Q7 Q13 H Q13 M Q0 M Q7 M Q13
B.3.2 比特映射¶
针对设计时未考虑拓扑连接的线路,需要做拓扑映射,才能在物理芯片上运行。
但要注意,映射功能有很大差别,映射算法的实现权衡的变量也不一样,请仔细了解你选择的映射函数的功能与性能。
同时留意,因为映射函数在寻优时有一定的随机性,可能每次映射的结果并不完全相同。
再者,如果原始拓扑过于复杂,可能导致最终无法映射成功,或者使用SWAP交换后,线路深度明显增加,影响执行结果。
qcis_circuit = account.qcis_mapping_isq(qcis_circuit)
print(qcis_circuit)
print('\n')
qcis_circuit2 = account.qcis_mapping_isq(qcis_circuit2)
print(qcis_circuit2)
Z Q0 Y2P Q0 Y2M Q6 Z Q6 Z Q7 Y2P Q7 CZ Q6 Q0 Z Q0 Y2P Q0 CZ Q0 Q7 Z Q7 Y2P Q7 M Q6 M Q0 M Q7 Z Q0 X2P Q6 RZ Q6 -1.5707963267948966 X2M Q6 Z Q7 X2P Q0 RZ Q0 1.5707963267948966 X2M Q0 Z Q6 X2P Q7 RZ Q7 1.5707963267948966 X2M Q7 CZ Q6 Q0 X2P Q0 RZ Q0 -1.5707963267948966 X2M Q0 Z Q0 CZ Q0 Q7 Z Q7 X2P Q7 RZ Q7 1.5707963267948966 X2M Q7 M Q6 M Q0 M Q7
B.3.3 线路化简¶
这里往往是提交前的最后一步,将可能存在可以优化的相邻操作做合并。本SDK提供的优化不敢自称最优,也在不断迭代,也请大家积极提意见或参与改进。
我们习惯将主动权交给用户,所以关于上述一系列操作的选择权都交给用户,你可以根据实际需求,自己灵活调用或优化部分功能。
qcis_circuit = account.simplify(qcis_circuit)
print(qcis_circuit)
print('\n')
qcis_circuit2 = account.simplify(qcis_circuit2)
print(qcis_circuit2)
Z Q0 Y2P Q0 Y2M Q6 Z Q6 Z Q7 Y2P Q7 CZ Q6 Q0 Z Q0 Y2P Q0 CZ Q0 Q7 Z Q7 Y2P Q7 M Q6 M Q0 M Q7 Z Q0 X2P Q6 RZ Q6 -1.5707963267948966 X2M Q6 Z Q7 X2P Q0 RZ Q0 1.5707963267948966 X2M Q0 Z Q6 X2P Q7 RZ Q7 1.5707963267948966 X2M Q7 CZ Q6 Q0 X2P Q0 RZ Q0 -1.5707963267948966 X2M Q0 Z Q0 CZ Q0 Q7 Z Q7 X2P Q7 RZ Q7 1.5707963267948966 X2M Q7 M Q6 M Q0 M Q7
B.3.4 线路的底层运行线路形式¶
该函数可以将线路提前转化为物理机所支持的基础函数门,该功能仅供用户了解线路在物理上的实际表达形式。无论是否执行该操作,物理机端都将运行该转化,以便量子计算机能够顺利运行线路。
#函数未写完,在SDK 1.0.1版本中未提供。
B.4 将程序提交到量子计算云平台¶
这里稍复杂的展开一些实验提交流程。
B.4.1 创建实验集合¶
创建实验集合是为了后期更换的管理实验。
create_res = account.create_experiment('OpenAI')
if create_res == 0:
print('新建实验合集失败')
else :
print('新建实验合辑成功,ID=', create_res)
lab_id = create_res
#实验合集id建议长期保留,以便后继使用。
当前创建实验使用的机器名: Emulator 新建实验合辑成功,ID= e1abe39e95d947c68870132b6820cdfc
B.4.2 提交实验¶
其实提交实验函数可以拆解,但作为本实例程序不必要涉及该环节,不再过多展示。
另,赋值功能在指定教程中也有明确交代,这里再过多展示。
关于如何处理提交实验意外,请酌情处理,官方暂未穷尽BUG。
query_id = account.submit_job(circuit=qcis_circuit, lab_id = lab_id, version="qcis_circuit22")
#对于单次提交实验,可以手动输入上述参数,如果想设计自动化程序,version的参数值可以通过计数等格式提前生成。
print(query_id)
['47182277332202654ustc00000726752']
B.5 读取结果与处理¶
B.5.1 读取实验结果¶
前面步骤已经将准备好的实验提交到量子计算云平台的量子计算机上并执行,只需通过query_id回读实验结果即可。
通过submit_job() 将线路传到云平台上的超导量子计算机实体机时,获得实验结果查询id(query_id),用以查询实验进度,请妥善保存好。
如果返回query_id为0,则说明报错,报错内容一般会直接在执行过程中输出。
所以可以考虑用try函数来运行submit_job,对于意外状况,可以直接重新提交失败的实验。以保证全自动程序的运行。
当query_id不为0时,利用query_experiment()可以进行下一步查询工作。
关于如何查询结果,以及处理结果,主要看用户使用场景,这里完全是示例。
if query_id:
result=account.query_experiment(query_id, max_wait_time=360000)
#result即为实验结果,共计1+num_shots个数组,第一个数据组为测量的比特编号和顺序,其余为每shot对应的结果。
#最大等待时间单位为秒,不传递时默认为30秒。因量子程序的执行会有排队的情况,而量子计算机本身有自动校准的时间,如果想跑全自动的程序,等待时间最好大于两者。
#以下是实验结果的显示、使用与保存。
#显示GHZ的概率结果。该结果为量子计算机返回数据时,直接进行的带读取矫正的概率结果。
#系统使用的是快速读取矫正,导致对于概率较低的态,会有统计概率小于0的情况。请酌情处理。
print(result[0].get('probability'))
#作为对比,利用原始数据,重新进行一次概率统计。
probability_whole=account.readout_data_to_state_probabilities_whole(result[0])
print(probability_whole)
#保存结果,注意一下文件的写入形式,不要意外覆盖之前有意义的线路,如果必要,可以将文件名设计为自动生成的名称。
f = open("./results.txt",'w')
f.write(str(result))
f.write('\n')
f.write(str(result[0].get('probability')))
f.write('\n')
f.write(str(probability_whole))
f.close()
print("实验结果已存盘。")
else :
#实验未运行成功,需要后继重新提交等处理
print("实验运行异常,需要重新提交或运行")
查询实验结果请等待: 4.58秒 {'000': 0.498, '011': 0.0, '110': 0.0, '001': 0.0, '100': 0.0, '111': 0.502, '101': 0.0, '010': 0.0} {'000': 0.498, '001': 0.0, '010': 0.0, '011': 0.0, '100': 0.0, '101': 0.0, '110': 0.0, '111': 0.502} 实验结果已存盘。
如果需要保存此时量子计算的参数作为后期参考,可以运行以下指令:
读取并保持量子计算机参数,以便后继参考。
res=account.download_config()
#机器完整参数将以json文件形式存储在当前目录。
print(res)
#这些参数可能后期会用到数据处理,概率分析等场景。请酌情处理。
#目前SDK(0.2.0.2)提供的读取矫正为读取当前量子计算机参数,后期会改为兼容用户参数输入。
{'computerConfigCreateTime': '2023-10-10T16:18:59', 'overview': {'qubits_length': 66, '1q_gate_error': 0.11, 'couplers': ['G0', 'G1', 'G2', 'G3', 'G4', 'G5', 'G6', 'G7', 'G8', 'G9', 'G10', 'G11', 'G12', 'G13', 'G14', 'G15', 'G16', 'G17', 'G18', 'G19', 'G20', 'G21', 'G22', 'G23', 'G24', 'G25', 'G26', 'G27', 'G28', 'G29', 'G30', 'G31', 'G32', 'G33', 'G34', 'G35', 'G36', 'G37', 'G38', 'G39', 'G40', 'G41', 'G42', 'G43', 'G44', 'G45', 'G46', 'G47', 'G48', 'G49', 'G50', 'G51', 'G52', 'G53', 'G54', 'G55', 'G56', 'G57', 'G58', 'G59', 'G60', 'G61', 'G62', 'G63', 'G64', 'G65', 'G66', 'G67', 'G68', 'G69', 'G70', 'G71', 'G72', 'G73', 'G74', 'G75', 'G76', 'G77', 'G78', 'G79', 'G80', 'G81', 'G82', 'G83', 'G84', 'G85', 'G86', 'G87', 'G88', 'G89', 'G90', 'G91', 'G92', 'G93', 'G94', 'G95', 'G96', 'G97', 'G98', 'G99', 'G100', 'G101', 'G102', 'G103', 'G104', 'G105', 'G106', 'G107', 'G108', 'G109'], 'readouts_length': 11, 'type': '', 'readouts': ['R01', 'R02', 'R03', 'R04', 'R05', 'R06', 'R07', 'R08', 'R09', 'R10', 'R11'], 'cz_error': 1.87, 'coupler_map': {'G40': ['Q27', 'Q22'], 'G42': ['Q28', 'Q23'], 'G41': ['Q28', 'Q22'], 'G44': ['Q30', 'Q24'], 'G43': ['Q29', 'Q23'], 'G46': ['Q31', 'Q25'], 'G45': ['Q31', 'Q24'], 'G48': ['Q32', 'Q26'], 'G47': ['Q32', 'Q25'], 'G49': ['Q33', 'Q26'], 'G51': ['Q34', 'Q27'], 'G50': ['Q33', 'Q27'], 'G53': ['Q35', 'Q28'], 'G52': ['Q34', 'Q28'], 'G55': ['Q36', 'Q30'], 'G54': ['Q35', 'Q29'], 'G57': ['Q37', 'Q31'], 'G56': ['Q36', 'Q31'], 'G59': ['Q38', 'Q32'], 'G58': ['Q37', 'Q32'], 'G60': ['Q38', 'Q33'], 'G62': ['Q39', 'Q34'], 'G61': ['Q39', 'Q33'], 'G64': ['Q40', 'Q35'], 'G63': ['Q40', 'Q34'], 'G66': ['Q42', 'Q36'], 'G65': ['Q41', 'Q35'], 'G68': ['Q43', 'Q37'], 'G67': ['Q43', 'Q36'], 'G69': ['Q44', 'Q37'], 'G71': ['Q45', 'Q38'], 'G70': ['Q44', 'Q38'], 'G73': ['Q46', 'Q39'], 'G72': ['Q45', 'Q39'], 'G75': ['Q47', 'Q40'], 'G74': ['Q46', 'Q40'], 'G77': ['Q48', 'Q42'], 'G76': ['Q47', 'Q41'], 'G79': ['Q49', 'Q43'], 'G78': ['Q48', 'Q43'], 'G101': ['Q61', 'Q55'], 'G100': ['Q60', 'Q55'], 'G103': ['Q62', 'Q56'], 'G102': ['Q61', 'Q56'], 'G105': ['Q63', 'Q57'], 'G104': ['Q62', 'Q57'], 'G107': ['Q64', 'Q58'], 'G106': ['Q63', 'Q58'], 'G109': ['Q65', 'Q59'], 'G108': ['Q64', 'Q59'], 'G80': ['Q49', 'Q44'], 'G82': ['Q50', 'Q45'], 'G81': ['Q50', 'Q44'], 'G84': ['Q51', 'Q46'], 'G83': ['Q51', 'Q45'], 'G86': ['Q52', 'Q47'], 'G85': ['Q52', 'Q46'], 'G88': ['Q54', 'Q48'], 'G87': ['Q53', 'Q47'], 'G89': ['Q55', 'Q48'], 'G91': ['Q56', 'Q49'], 'G90': ['Q55', 'Q49'], 'G93': ['Q57', 'Q50'], 'G92': ['Q56', 'Q50'], 'G95': ['Q58', 'Q51'], 'G94': ['Q57', 'Q51'], 'G97': ['Q59', 'Q52'], 'G96': ['Q58', 'Q52'], 'G11': ['Q12', 'Q6'], 'G99': ['Q60', 'Q54'], 'G10': ['Q11', 'Q5'], 'G98': ['Q59', 'Q53'], 'G13': ['Q13', 'Q7'], 'G12': ['Q12', 'Q7'], 'G15': ['Q14', 'Q8'], 'G14': ['Q13', 'Q8'], 'G17': ['Q15', 'Q9'], 'G16': ['Q14', 'Q9'], 'G19': ['Q16', 'Q10'], 'G18': ['Q15', 'Q10'], 'G20': ['Q16', 'Q11'], 'G22': ['Q18', 'Q12'], 'G21': ['Q17', 'Q11'], 'G24': ['Q19', 'Q13'], 'G0': ['Q6', 'Q0'], 'G23': ['Q19', 'Q12'], 'G1': ['Q7', 'Q0'], 'G26': ['Q20', 'Q14'], 'G2': ['Q7', 'Q1'], 'G25': ['Q20', 'Q13'], 'G3': ['Q8', 'Q1'], 'G28': ['Q21', 'Q15'], 'G4': ['Q8', 'Q2'], 'G27': ['Q21', 'Q14'], 'G5': ['Q9', 'Q2'], 'G6': ['Q9', 'Q3'], 'G29': ['Q22', 'Q15'], 'G7': ['Q10', 'Q3'], 'G8': ['Q10', 'Q4'], 'G9': ['Q11', 'Q4'], 'G31': ['Q23', 'Q16'], 'G30': ['Q22', 'Q16'], 'G33': ['Q24', 'Q18'], 'G32': ['Q23', 'Q17'], 'G35': ['Q25', 'Q19'], 'G34': ['Q24', 'Q19'], 'G37': ['Q26', 'Q20'], 'G36': ['Q25', 'Q20'], 'G39': ['Q27', 'Q21'], 'G38': ['Q26', 'Q21']}, 'readout_error': 5.51, 'couplers_length': 110, 'name': '', 'qubits': ['Q0', 'Q1', 'Q2', 'Q3', 'Q4', 'Q5', 'Q6', 'Q7', 'Q8', 'Q9', 'Q10', 'Q11', 'Q12', 'Q13', 'Q14', 'Q15', 'Q16', 'Q17', 'Q18', 'Q19', 'Q20', 'Q21', 'Q22', 'Q23', 'Q24', 'Q25', 'Q26', 'Q27', 'Q28', 'Q29', 'Q30', 'Q31', 'Q32', 'Q33', 'Q34', 'Q35', 'Q36', 'Q37', 'Q38', 'Q39', 'Q40', 'Q41', 'Q42', 'Q43', 'Q44', 'Q45', 'Q46', 'Q47', 'Q48', 'Q49', 'Q50', 'Q51', 'Q52', 'Q53', 'Q54', 'Q55', 'Q56', 'Q57', 'Q58', 'Q59', 'Q60', 'Q61', 'Q62', 'Q63', 'Q64', 'Q65'], 'T1': 30.22, 'T2': 3.16}, 'twoQubitGate': {'czGate': {'coupling strength': {'unit': 'Hz', 'update_time': '2023-09-12 17:32:08', 'qubit_used': ['G0', 'G1', 'G2', 'G3', 'G6', 'G7', 'G8', 'G9', 'G11', 'G12', 'G13', 'G14', 'G15', 'G16', 'G17', 'G18', 'G19', 'G20', 'G22', 'G23', 'G24', 'G25', 'G26', 'G27', 'G28', 'G29', 'G30', 'G31', 'G33', 'G34', 'G35', 'G36', 'G37', 'G38', 'G39', 'G40', 'G41', 'G43', 'G44', 'G45', 'G46', 'G47', 'G48', 'G49', 'G50', 'G51', 'G52', 'G55', 'G56', 'G57', 'G58', 'G59', 'G60', 'G61', 'G62', 'G63', 'G66', 'G67', 'G68', 'G69', 'G70', 'G71', 'G72', 'G73', 'G74', 'G75', 'G76', 'G77', 'G78', 'G79', 'G80', 'G81', 'G82', 'G83', 'G84', 'G85', 'G86', 'G87', 'G88', 'G89', 'G90', 'G91', 'G92', 'G93', 'G94', 'G95', 'G96', 'G99', 'G100', 'G101', 'G102', 'G103', 'G104', 'G105', 'G106', 'G107'], 'param_list': [[-14174167153.7, 4143074225.6], [-19073348918.8, 4188720046.8], [-19541437755.7, 4527527761.5], [-22279368790.2, 4748217416.7], [-14280128579.8, 3968147282.3], [-13495675043.8, 4000876680.3], [-12737931034.5, 3820689655.2], [-12135300993.6, 3726767971.9], [-19263822326.1, 4412039742.8], [-17701811806, 4249912332], [-9206896551.7, 5206896551.7], [-20361250730.6, 4431852717.7], [-10869842197.5, 5399123319.7], [-17263822326.1, 5991350087.7], [-50171537112.8, 4780187025.1], [-37676738749.3, 5233606078.3], [-15104324956.2, 5654295733.5], [-14237989479.8, 5617182934], [-22747457627.1, 4687025131.5], [-18300058445.4, 4382700175.3], [-18844886031.6, 4251665692.6], [-8047399181.8, 5125014611.3], [-22358620689.7, 4786206896.6], [-20361250730.6, 4383576855.6], [-12659555815.3, 2850789012.3], [-12175043834, 3818059614.3], [-14569783752.2, 3906078316.8], [-18822326125.1, 4308708357.7], [-18382817066, 4168907071.9], [-15624196376.4, 4010286382.2], [-10112098188.2, 5349970777.3], [-17249152542.4, 4268088836.9], [-25819812974.9, 4780187025.1], [-57129398012.9, 3753360607.8], [-49413793103.4, 4779310344.8], [-36114611338.4, 4906078316.8], [-27137054354.2, 5180187025.1], [-20055172413.8, 5875862069], [-23133664523.7, 4590473407.4], [-23666452367, 4505961426.1], [-11304324956.2, 5833606078.3], [-19782817066, 4348217416.7], [-22071595558.2, 4473232028.1], [-9256049094.1, 5364640561.1], [-11894798363.5, 3808649912.3], [-12844769140.9, 3969023962.6], [-12848275862.1, 3820689655.2], [-9593980128.6, 5109468147.3], [-21218176505, 4409409701.9], [-32963004091.2, 4595616598.5], [-22651782583.3, 4327527761.5], [-23520748100.5, 4424079485.7], [-10772413793.1, 5351724137.9], [-28489538281.7, 7138047925.2], [-46774926943.3, 5266452367], [-13654295733.5, 5449152542.4], [-23454412624.2, 4249035651.7], [-19880245470.5, 4381823495], [-24581063705.4, 4508591467], [-9849912332, 5225949737], [-20277615429.6, 4301694915.3], [-23856049094.1, 4750847457.6], [-17478492109.9, 4321507890.1], [-17245645821.2, 4161250730.6], [-13701694915.3, 3967270602], [-13699941554.6, 4113851548.8], [-11979310344.8, 3627586206.9], [-28126767971.9, 4790473407.4], [-23183693746.3, 4616306253.7], [-12268088836.9, 5849152542.4], [-17594915254.2, 4149912332], [-25919871420.2, 4342197545.3], [-46918118059.6, 5378433664.5], [-13412916423.1, 5752600818.2], [-26432729398, 4367270602], [-51051665692.6, 5769023962.6], [-20515488018.7, 3850029222.7], [-63649035651.7, 5488895382.8], [-22168147282.3, 4542197545.3], [-29271595558.2, 4942197545.3], [-9155990648.7, 5209526592.6], [-28739684395.1, 4749970777.3], [-20807773232, 4206019871.4], [-21860432495.6, 4284395090.6], [-10318994739.9, 3418936294.6], [-15812039742.8, 4001753360.6], [-12121507890.1, 3726767971.9], [-18539684395.1, 4329281122.2], [-19275862069, 4206896551.7], [-22277615429.6, 4508591467], [-19165517241.4, 4365517241.4], [-26145704266.5, 4668088836.9], [-12221566335.5, 5785330216.2], [-18339567504.4, 6205260081.8], [-64861192285.2, 3966393921.7], [-51220689655.2, 5068965517.2]]}, 'gate error': {'unit': '%', 'update_time': '2023-09-21 07:24:58', 'qubit_used': ['G0', 'G1', 'G2', 'G3', 'G6', 'G7', 'G8', 'G9', 'G11', 'G12', 'G13', 'G14', 'G15', 'G16', 'G17', 'G18', 'G19', 'G20', 'G22', 'G23', 'G24', 'G25', 'G26', 'G27', 'G28', 'G29', 'G30', 'G31', 'G33', 'G34', 'G35', 'G36', 'G37', 'G38', 'G39', 'G40', 'G41', 'G43', 'G44', 'G45', 'G46', 'G47', 'G48', 'G49', 'G50', 'G51', 'G52', 'G55', 'G56', 'G57', 'G58', 'G59', 'G60', 'G61', 'G62', 'G63', 'G66', 'G67', 'G68', 'G69', 'G70', 'G71', 'G72', 'G73', 'G74', 'G75', 'G76', 'G77', 'G78', 'G79', 'G80', 'G81', 'G82', 'G83', 'G84', 'G85', 'G86', 'G87', 'G88', 'G89', 'G90', 'G91', 'G92', 'G93', 'G94', 'G95', 'G96', 'G99', 'G100', 'G101', 'G102', 'G103', 'G104', 'G105', 'G106', 'G107'], 'param_list': [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}}}, 'qubit': {'singleQubit': {'X/2 length': {'unit': '', 'update_time': '2023-09-12 17:32:11', 'qubit_used': ['Q0', 'Q1', 'Q3', 'Q4', 'Q6', 'Q7', 'Q8', 'Q9', 'Q10', 'Q11', 'Q12', 'Q13', 'Q14', 'Q15', 'Q16', 'Q18', 'Q19', 'Q20', 'Q21', 'Q22', 'Q23', 'Q24', 'Q25', 'Q26', 'Q27', 'Q28', 'Q29', 'Q30', 'Q31', 'Q32', 'Q33', 'Q34', 'Q36', 'Q37', 'Q38', 'Q39', 'Q40', 'Q41', 'Q42', 'Q43', 'Q44', 'Q45', 'Q46', 'Q47', 'Q48', 'Q49', 'Q50', 'Q51', 'Q52', 'Q53', 'Q54', 'Q55', 'Q56', 'Q57', 'Q58', 'Q60', 'Q61', 'Q62', 'Q63', 'Q64'], 'param_list': [60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60]}, 'gate error': {'unit': '%', 'update_time': '2023-09-21 06:13:12', 'qubit_used': ['Q0', 'Q1', 'Q3', 'Q4', 'Q6', 'Q7', 'Q8', 'Q9', 'Q10', 'Q11', 'Q12', 'Q13', 'Q14', 'Q15', 'Q16', 'Q18', 'Q19', 'Q20', 'Q21', 'Q22', 'Q23', 'Q24', 'Q25', 'Q26', 'Q27', 'Q28', 'Q29', 'Q30', 'Q31', 'Q32', 'Q33', 'Q34', 'Q36', 'Q37', 'Q38', 'Q39', 'Q40', 'Q41', 'Q42', 'Q43', 'Q44', 'Q45', 'Q46', 'Q47', 'Q48', 'Q49', 'Q50', 'Q51', 'Q52', 'Q53', 'Q54', 'Q55', 'Q56', 'Q57', 'Q58', 'Q60', 'Q61', 'Q62', 'Q63', 'Q64'], 'param_list': [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, 'X/2 amplitude': {'unit': '', 'update_time': '2023-09-21 06:04:44', 'qubit_used': ['Q0', 'Q1', 'Q3', 'Q4', 'Q6', 'Q7', 'Q8', 'Q9', 'Q10', 'Q11', 'Q12', 'Q13', 'Q14', 'Q15', 'Q16', 'Q18', 'Q19', 'Q20', 'Q21', 'Q22', 'Q23', 'Q24', 'Q25', 'Q26', 'Q27', 'Q28', 'Q29', 'Q30', 'Q31', 'Q32', 'Q33', 'Q34', 'Q36', 'Q37', 'Q38', 'Q39', 'Q40', 'Q41', 'Q42', 'Q43', 'Q44', 'Q45', 'Q46', 'Q47', 'Q48', 'Q49', 'Q50', 'Q51', 'Q52', 'Q53', 'Q54', 'Q55', 'Q56', 'Q57', 'Q58', 'Q60', 'Q61', 'Q62', 'Q63', 'Q64'], 'param_list': [15850.9827, 19158.4152, 15917.1582, 13159.6836, 15977.952, 20303.7779, 15725.5798, 12097.124, 15434.2501, 8975.3817, 16898.3703, 15154.8407, 18172.7924, 16657.5834, 18606.6429, 12179.051, 11229.0993, 18361.7862, 14695.5582, 18779.6795, 20681.105, 14504.4911, 13478.7009, 21514.5049, 15248.3961, 14014.8291, 17255.8463, 17358.9638, 20721.4009, 13427.0167, 16503.5815, 12983.0912, 16063.4048, 11552.1456, 18943.2877, 15247.8753, 14242.2054, 22338.0516, 17917.1035, 13523.4287, 10984.2042, 15577.5469, 16116.5362, 16550.592, 13868.7315, 17148.4176, 18313.0937, 19849.7185, 14329.4378, 14499.1965, 20233.415, 17739.0682, 22541.3615, 9603.4917, 12161.7275, 21499.9669, 15149.9028, 14166.3991, 13181.3368, 9623.5823]}}, 'relatime': {'T1': {'unit': 'us', 'update_time': '2023-09-12 17:32:18', 'qubit_used': ['Q0', 'Q1', 'Q3', 'Q4', 'Q6', 'Q7', 'Q8', 'Q9', 'Q10', 'Q11', 'Q12', 'Q13', 'Q14', 'Q15', 'Q16', 'Q18', 'Q19', 'Q20', 'Q21', 'Q22', 'Q23', 'Q24', 'Q25', 'Q26', 'Q27', 'Q28', 'Q29', 'Q30', 'Q31', 'Q32', 'Q33', 'Q34', 'Q36', 'Q37', 'Q38', 'Q39', 'Q40', 'Q41', 'Q42', 'Q43', 'Q44', 'Q45', 'Q46', 'Q47', 'Q48', 'Q49', 'Q50', 'Q51', 'Q52', 'Q53', 'Q54', 'Q55', 'Q56', 'Q57', 'Q58', 'Q60', 'Q61', 'Q62', 'Q63', 'Q64'], 'param_list': [25.3205, 28.819, 41.2485, 33.7332, 28.5833, 33.3736, 36.0917, 38.3724, 22.5075, 39.1188, 26.2978, 20.6262, 28.7568, 29.2856, 40.493, 20.508, 35.7567, 24.7814, 31.3134, 28.9118, 17.4783, 27.3075, 21.6951, 37.1701, 39.2521, 37.8174, 33.0801, 40.0334, 36.8101, 31.1693, 33.497, 23.1186, 28.555, 25.9299, 29.1478, 32.2999, 25.2345, 42.6246, 9.5069, 26.8361, 18.6974, 35.9398, 33.8058, 29.0986, 25.5377, 25.767, 26.0837, 39.4143, 36.7541, 21.5271, 28.4298, 27.4289, 29.6693, 39.7857, 23.7209, 38.0283, 37.895, 28.859, 22.4671, 32.1008]}, 'T2': {'unit': 'us', 'update_time': '2023-09-12 17:32:18', 'qubit_used': ['Q0', 'Q1', 'Q3', 'Q4', 'Q6', 'Q7', 'Q8', 'Q9', 'Q10', 'Q11', 'Q12', 'Q13', 'Q14', 'Q15', 'Q16', 'Q18', 'Q19', 'Q20', 'Q21', 'Q22', 'Q23', 'Q24', 'Q25', 'Q26', 'Q27', 'Q28', 'Q29', 'Q30', 'Q31', 'Q32', 'Q33', 'Q34', 'Q36', 'Q37', 'Q38', 'Q39', 'Q40', 'Q41', 'Q42', 'Q43', 'Q44', 'Q45', 'Q46', 'Q47', 'Q48', 'Q49', 'Q50', 'Q51', 'Q52', 'Q53', 'Q54', 'Q55', 'Q56', 'Q57', 'Q58', 'Q60', 'Q61', 'Q62', 'Q63', 'Q64'], 'param_list': [3.2294, 2.2952, 2.4399, 3.2943, 4.6571, 2.6789, 3.1998, 1.5841, 4.1956, 4.338, 2.8271, 2.9713, 1.873, 2.7804, 3.1033, 6.4821, 5.8565, 4.8506, 1.1544, 2.1369, 0.9636, 2.9736, 3.8482, 1.6298, 3.0048, 5.6468, 2.5419, 3.452, 4.3955, 4.459, 3.0177, 2.2068, 3.6092, 2.4505, 2.9993, 2.3412, 5.4246, 2.8993, 3.5901, 5.2337, 2.5618, 2.7017, 3.3718, 2.3902, 3.2308, 4.609, 1.8335, 3.5684, 3.3872, 1.4676, 2.5133, 3.0287, 5.7077, 2.9921, 2.4111, 1.5897, 1.4673, 2.393, 4.0954, 1.5839]}}, 'frequency': {'f01': {'unit': 'GHz', 'update_time': '2023-09-21 06:02:46', 'qubit_used': ['Q0', 'Q1', 'Q3', 'Q4', 'Q6', 'Q7', 'Q8', 'Q9', 'Q10', 'Q11', 'Q12', 'Q13', 'Q14', 'Q15', 'Q16', 'Q18', 'Q19', 'Q20', 'Q21', 'Q22', 'Q23', 'Q24', 'Q25', 'Q26', 'Q27', 'Q28', 'Q29', 'Q30', 'Q31', 'Q32', 'Q33', 'Q34', 'Q36', 'Q37', 'Q38', 'Q39', 'Q40', 'Q41', 'Q42', 'Q43', 'Q44', 'Q45', 'Q46', 'Q47', 'Q48', 'Q49', 'Q50', 'Q51', 'Q52', 'Q53', 'Q54', 'Q55', 'Q56', 'Q57', 'Q58', 'Q60', 'Q61', 'Q62', 'Q63', 'Q64'], 'param_list': [4.8526, 4.6306, 4.6778, 4.9013, 5.0682, 4.6817, 4.7099, 4.633, 4.7325, 4.7227, 4.8668, 4.7911, 4.8388, 4.8195, 4.5292, 4.961, 4.9032, 4.9324, 4.7245, 4.7383, 4.3776, 4.8202, 4.8508, 4.5708, 4.9243, 4.8066, 4.5623, 4.7039, 4.6714, 4.7095, 4.7758, 4.7202, 4.8887, 4.6506, 4.5994, 4.5841, 4.854, 4.5095, 4.791, 4.7499, 4.7921, 4.6799, 4.6614, 4.6946, 4.9177, 4.8712, 4.7209, 4.7748, 4.8636, 4.5513, 4.7059, 4.7579, 4.8211, 4.6306, 4.7058, 4.5817, 4.7091, 4.7669, 4.7557, 4.6585]}}}, 'readout': {'readoutArray': {'|0> readout fidelity': {'unit': '', 'update_time': '2023-09-21 20:56:04', 'qubit_used': ['Q0', 'Q1', 'Q3', 'Q4', 'Q6', 'Q7', 'Q8', 'Q9', 'Q10', 'Q11', 'Q12', 'Q13', 'Q14', 'Q15', 'Q16', 'Q18', 'Q19', 'Q20', 'Q21', 'Q22', 'Q23', 'Q24', 'Q25', 'Q26', 'Q27', 'Q28', 'Q29', 'Q30', 'Q31', 'Q32', 'Q33', 'Q34', 'Q36', 'Q37', 'Q38', 'Q39', 'Q40', 'Q41', 'Q42', 'Q43', 'Q44', 'Q45', 'Q46', 'Q47', 'Q48', 'Q49', 'Q50', 'Q51', 'Q52', 'Q53', 'Q54', 'Q55', 'Q56', 'Q57', 'Q58', 'Q60', 'Q61', 'Q62', 'Q63', 'Q64'], 'param_list': [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]}, '|1> readout fidelity': {'unit': '', 'update_time': '2023-09-21 20:56:04', 'qubit_used': ['Q0', 'Q1', 'Q3', 'Q4', 'Q6', 'Q7', 'Q8', 'Q9', 'Q10', 'Q11', 'Q12', 'Q13', 'Q14', 'Q15', 'Q16', 'Q18', 'Q19', 'Q20', 'Q21', 'Q22', 'Q23', 'Q24', 'Q25', 'Q26', 'Q27', 'Q28', 'Q29', 'Q30', 'Q31', 'Q32', 'Q33', 'Q34', 'Q36', 'Q37', 'Q38', 'Q39', 'Q40', 'Q41', 'Q42', 'Q43', 'Q44', 'Q45', 'Q46', 'Q47', 'Q48', 'Q49', 'Q50', 'Q51', 'Q52', 'Q53', 'Q54', 'Q55', 'Q56', 'Q57', 'Q58', 'Q60', 'Q61', 'Q62', 'Q63', 'Q64'], 'param_list': [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]}, 'Readout Error': {'unit': '%', 'update_time': '2023-09-21 20:56:04', 'qubit_used': ['Q0', 'Q1', 'Q3', 'Q4', 'Q6', 'Q7', 'Q8', 'Q9', 'Q10', 'Q11', 'Q12', 'Q13', 'Q14', 'Q15', 'Q16', 'Q18', 'Q19', 'Q20', 'Q21', 'Q22', 'Q23', 'Q24', 'Q25', 'Q26', 'Q27', 'Q28', 'Q29', 'Q30', 'Q31', 'Q32', 'Q33', 'Q34', 'Q36', 'Q37', 'Q38', 'Q39', 'Q40', 'Q41', 'Q42', 'Q43', 'Q44', 'Q45', 'Q46', 'Q47', 'Q48', 'Q49', 'Q50', 'Q51', 'Q52', 'Q53', 'Q54', 'Q55', 'Q56', 'Q57', 'Q58', 'Q60', 'Q61', 'Q62', 'Q63', 'Q64'], 'param_list': [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}}}}
B.5.2 实验结果处理与使用¶
目前针对测量比特少于15个量子比特时,量子计算机端服务器都会将原始数据进行统计,并做好读取矫正返回。
如果超过15个测量比特,则统计结果返回为空,用户需要自行计算统计结果,并做必要的读取矫正。
#概率统计
probability_whole=account.readout_data_to_state_probabilities_whole(result[0])
print(probability_whole)
#以上函数将结果的全部空间进行统计
probability_part=account.readout_data_to_state_probabilities_part(result[0])
print(probability_part)
#以上函数只对已有结果进行统计,概率为0的结果将不出现。有利于节省存储空间。且第一类完整统计对内存消耗极大。
{'000': 0.498, '001': 0.0, '010': 0.0, '011': 0.0, '100': 0.0, '101': 0.0, '110': 0.0, '111': 0.502} {'000': 0.498, '111': 0.502}
#读取矫正需要将实验获得结果和量子计算机参数文件作为输入进行计算。
#如果未提供计算机参数文件,则采用当前量子计算机参数。
#保存实验结果时,可以通过download_config()函数获得。
probability_cali=account.probability_calibration(result[0], res)
print(probability_cali)
#该读取矫正是对统计概率的修正,不是通过概率重采样。
#如需需要重采样来矫正数据,还请用户自行设计并分享。
{'000': 0.498, '001': 0.0, '010': 0.0, '011': 0.0, '100': 0.0, '101': 0.0, '110': 0.0, '111': 0.502}