快速入门 ======== 本指南将帮助您快速开始使用 SpinQLab Link 进行量子实验。 基本概念 -------- 连接管理 ~~~~~~~~ SpinQLab Link 使用TCP协议与实验设备通信。每个连接需要: * **主机地址 (host)**: 实验设备的IP地址 * **端口 (port)**: 通信端口,通常为8181 * **账户 (account)**: 登录用户名 * **密码 (password)**: 登录密码 .. figure:: _static/images/connection_info.png :width: 80% :align: center :alt: SpinQLab Link 设备信息 SpinQLab Link 设备信息 连接流程如下: 1. 进入实验界面-》点击右上角总实队列 2. 获取设备IP地址和端口号 .. note:: 确保您的网络环境能够访问实验设备。如果在企业网络环境中,可能需要配置防火墙规则允许TCP端口8181的通信。 实验类型 ~~~~~~~~ SpinQLab Link 支持多种量子实验类型,通过 ``ExperimentType`` 枚举定义: * **基础实验**: NMR现象、拉比振荡、量子比特等 * **退相干实验**: T1、T2弛豫时间测量 * **量子控制**: 量子门、量子电路 * **量子算法**: Deutsch、Grover、VQE等算法实现 第一个实验 ---------- 让我们从最简单的NMR脉冲实验开始: 步骤1:导入库 ~~~~~~~~~~~~~ .. code-block:: python from spinqlablink import SpinQLabLink, ExperimentType, Pulse, print_graph 步骤2:建立连接 ~~~~~~~~~~~~~~~ .. code-block:: python # Create connection instance spinqlablink = SpinQLabLink( host="192.168.9.121", # Device IP address (from experiment interface) port=8181, # Communication port (from experiment interface) account="username", # Username (any input) password="password" # Password (any input) ) # Connect to device spinqlablink.connect() # Wait for login to complete if not spinqlablink.wait_for_login(): print("Login failed") return print("Connection successful!") 步骤3:注册实验 ~~~~~~~~~~~~~~~ .. code-block:: python # Register NMR pulse experiment experiment, parameters = spinqlablink.register_experiment( ExperimentType.NMR_PHENOMENON_AND_SIGNAL ) print(f"Experiment registered, ID: {experiment.id}") 步骤4:设置参数 ~~~~~~~~~~~~~~~ .. code-block:: python # Create a 90-degree pulse pulse_90 = Pulse( path=0, # Hydrogen channel (0=hydrogen, 1=phosphorus) width=40, # 40 microseconds width amplitude=100, # 100% amplitude phase=90, # 90 degrees phase detuning=0 # No detuning ) # Set experiment parameters parameters.pulses = [pulse_90] parameters.freq_h = 27.852105 # Hydrogen resonance frequency (MHz) parameters.freq_p = 11.322872 # Phosphorus resonance frequency (MHz) parameters.makePps = True # Generate PPS signal (True=generate PPS signal, False=don't generate PPS signal) parameters.samplePath = 0 # Sampling path: hydrogen channel parameters.custom_freq = False # Use device lock frequency (True=use the input freq_h,freq_p, False=use device lock frequency) print("✓ Parameters set") 步骤5:运行实验 ~~~~~~~~~~~~~~~ .. code-block:: python # Run the experiment spinqlablink.run_experiment() print("Experiment started...") # Wait for experiment completion spinqlablink.wait_for_experiment_completion() print("Experiment completed!") 步骤6:获取结果并清理资源 ~~~~~~~~~~~~~~~ .. code-block:: python # Get experiment result result = spinqlablink.get_experiment_result() # Clean up and disconnect spinqlablink.deregister_experiment() spinqlablink.disconnect() # Display the results if "result" in result: exp_result = result["result"] for key, value in exp_result.items(): if key != "graph": print(f"{key}: {value}") print_graph(result["result"]) else: print("Experiment failed") .. note:: 如果返回的数据正常,那么将会出现如图所示窗口。 .. figure:: _static/images/nmr_result.png :width: 100% :align: center :alt: SpinQLab Link 实验结果 SpinQLab Link 实验结果 完整示例 -------- 将上述步骤组合成完整的脚本: .. code-block:: python from spinqlablink import SpinQLabLink, ExperimentType, Pulse, print_graph def main(): # Create connection instance spinqlablink = SpinQLabLink("192.168.15.203", 8181, "username", "password") spinqlablink.connect() if not spinqlablink.wait_for_login(): print("Login failed") return print("✓ Connection successful") # Register NMR pulse experiment experiment, parameters = spinqlablink.register_experiment( ExperimentType.NMR_PHENOMENON_AND_SIGNAL ) print(f"✓ Experiment registered: {experiment.id}") # Set experiment parameters parameters.pulses = [Pulse(path=0, width=40, amplitude=100, phase=90, detuning=0)] parameters.freq_h = 37.852105 parameters.freq_p = 15.322872 parameters.makePps = True parameters.samplePath = 0 parameters.custom_freq = False print("✓ Parameters set") # Run experiment spinqlablink.run_experiment() print("✓ Experiment started") # Wait for experiment completion spinqlablink.wait_for_experiment_completion() print("✓ Experiment completed") # Get experiment result result = spinqlablink.get_experiment_result() # Clean up and disconnect spinqlablink.deregister_experiment() spinqlablink.disconnect() # Display the results if "result" in result: exp_result = result["result"] for key, value in exp_result.items(): if key != "graph": print(f"{key}: {value}") print_graph(result["result"]) else: print("Experiment failed") if __name__ == "__main__": main() 常见模式 -------- 错误处理 ~~~~~~~~ .. code-block:: python try: spinqlablink.connect() # ... experiment code ... except ConnectionError: print("Network connection error") except TimeoutError: print("Operation timeout") except Exception as e: print(f"Unknown error: {e}") finally: spinqlablink.disconnect() 参数验证 ~~~~~~~~ .. code-block:: python # Check pulse parameter validity def validate_pulse(pulse): assert 0 <= pulse.amplitude <= 100, "Amplitude must be between 0-100" assert pulse.width > 0, "Pulse width must be greater than 0" assert pulse.path in [0, 1], "Channel path must be 0 or 1" pulse = Pulse(path=0, width=40, amplitude=100, phase=90, detuning=0) validate_pulse(pulse) 下一步 ------ 现在您已经掌握了基本用法,您可以: 1. 查看 :doc:`experiment/Principles_of_Quantum_Computing` 学习更多量子计算原理 2. 查看 :doc:`experiment/Quantum_Algorithm` 学习更多算法实验 3. 查看 :doc:`experiment/Integrated_Quantum_Technology` 学习更多综合实验 4. 查看 :doc:`experiment/Research_Experiment` 学习更多研究型实验 5. 了解 :doc:`api/spinqlablink` 的完整api 常见问题 -------- **Q: 连接失败怎么办?** A: 检查网络连接、IP地址、端口号和防火墙设置。 **Q: 实验超时是什么原因?** A: 可能是设备忙碌、参数错误或网络不稳定。尝试增加超时时间或检查参数。 **Q: 如何获得更详细的调试信息?** 如需更多帮助,请查看 :doc:`etc/contact` 页面。