# T2FIT 任务接口文档
## 概述
T2FIT 是 Scope 中的一个任务,用于对量子比特的进行 **高斯指数衰减 + 余弦振荡** 拟合,返回每个量子比特的拟合参数、拟合曲线、 拟合优度及处理状态
$$
y = A \cdot e^{-(x/T2)^2 - x/T1/2} \cdot \cos(2\pi w x + \phi) + B
$$
---
## 接口使用方式
### 客户端初始化
```python
from qubitclient import QubitScopeClient, TaskName
client = QubitScopeClient()
```
### 请求参数
| 参数名 | 类型 | 必需 | 描述 |
|-------------|-------------------------------------------|------|----------------------------------------------------------------------|
| `file_list` | `list[str \| dict[str, np.ndarray]]` | 是 | 数据文件列表,支持 `.npy` 文件路径或 `numpy` 数组 |
| `task_type` | `TaskName` | 是 | 任务类型,固定为 `TaskName.T2FIT` | |
### 数据格式
#### 输入格式
1. **NPY 文件格式**:
NPY文件需要包含一个字典
```python
{
"image": {
"Q0": (x_array, amp_array),
"Q1": (x_array, amp_array),
...
}
}
```
x_array: 一维 np.ndarray,表示时间点
amp_array: 一维 np.ndarray,表示信号强度
每个量子比特对应一个键(如 "Q0"),值为 `(x_array, amp_array)` 的元组(list 亦可)
#### 调用示例
```python
# 使用文件路径
response = client.request(file_list=["data/t2fit/file1.npy", "data/t2fit/file2.npy"], task_type=TaskName.T2FIT)
dict_list = []
for file_path in file_path_list:
content = load_npy_file(file_path)
dict_list.append(content)
# 使用从文件路径加载后的对象,格式为np.ndarray,多个组合成list
response = client.request(file_list=dict_list, task_type=TaskName.T2FIT)
```
### 获取结果
```python
# 不过滤的结果
results = client.get_result(response)
# 或过滤后的结果
threshold = 0.5
results = client.get_result(response, threshold=threshold, task_type=TaskName.T2FIT.value)
```
## 返回值格式
返回的结果是一个列表,每个元素对应一个输入文件的处理结果:
```json
[
{
"params_list": [[A, B, T1, T2, w, phi], ...],
"r2_list": [float, ...],
"fit_data_list": [[float, ...], ...],
"fit_data_dense_list": [[float, ...], ...],
"x_dense_list": [[float, ...], ...],
"status": "success" | "failed"
},
...
]
```
params_list[i]: 第 i 个量子比特的拟合参数 [A, B, T1, T2, w, phi]
fit_data_list[i]: 第 i 个量子比特在原始时间点上的拟合值
fit_data_dense_list[i]: 第 i 个量子比特在密集时间点上的拟合值(用于绘制平滑曲线)
x_dense_list[i]: 与 fit_data_dense_list[i] 一一对应的密集时间轴
r2_list[i]: 第 i 个量子比特的 R² 拟合优度
### 字段说明
| 字段名 | 类型 | 描述 |
|------------------|------------------------|------|
| `params_list` | `List[List[float]]` | 每个量子比特的拟合参数 `[A, B, T1, T2, w, phi]`:
• `A`: 初始振幅
• `B`: 基线偏移
• `T1`: 指数衰减时间(µs)
• `T2`: 高斯衰减时间(µs)
• `w`: 振荡角频率(rad/s)
• `phi`: 初始相位(rad) |
| `r2_list` | `List[float]` | 每个量子比特的 R² 拟合优度,范围 `[0, 1]`,越接近 1 拟合越好 |
| `fit_data_list` | `List[List[float]]` | 每个量子比特在原始时间点上的拟合曲线值 |
| `fit_data_dense_list` | `List[List[float]]` | 每个量子比特在密集时间点上的拟合曲线值 |
| `x_dense_list` | `List[List[float]]` | 与 `fit_data_dense_list` 对应的密集时间轴 |
| `status` | `str` | 处理状态:`"success"` 或 `"failed"` |
### 示例结果
```python
{
"type": "t2fit",
"results": [
{
"params_list": [
[0.4920083111862632, 0.6714043624192048, 1548609.489409118,
2.4673768788997257e-07, 46379065.63362402, 0.9226591650285556]
],
"r2_list": [0.9597461983867187],
"fit_data_list": [
[0.9684309514565641, 0.8102839306126803, 0.634148824106684, ...]
],
"fit_data_dense_list": [
[0.9684309514565641, 0.9502839306126803, 0.934148824106684, ...]
],
"x_dense_list": [
[0.0, 50.0, 100.0, 150.0, ...]
],
"status": "success"
}
]
}
```
注意:绘制平滑拟合曲线时,请使用 `x_dense_list` 与 `fit_data_dense_list` 配对;`fit_data_list` 对应原始采样时间点。
## 可视化
处理结果可以通过内置的绘图工具进行可视化:
```python
from qubitclient.draw.plymanager import QuantumPlotPlyManager
from qubitclient.draw.pltmanager import QuantumPlotPltManager
ply_plot_manager = QuantumPlotPlyManager()
plt_plot_manager = QuantumPlotPltManager()
for idx, (result, dict_param) in enumerate(zip(results, dict_list)):
save_path_prefix = f"./tmp/client/result_{TaskName.T2FIT.value}_{savenamelist[idx]}"
save_path_png = save_path_prefix + ".png"
save_path_html = save_path_prefix + ".html"
plt_plot_manager.plot_quantum_data(
data_type='npy',
task_type=TaskName.T2FIT.value,
save_path=save_path_png,
result=result,
dict_param=dict_param
)
ply_plot_manager.plot_quantum_data(
data_type='npy',
task_type=TaskName.T2FIT.value,
save_path=save_path_html,
result=result,
dict_param=dict_param
)
```