# DDA 分析流程v3.10.1Latest
说明
示例来源:下述所有示例说明的数据来源为《食品安保筛查试剂盒A》CPD-2002为例
参数来源:Database (DB)、dda.json、static.json、instrument.json、common.json
参数来源格式说明:
- 数据库.表.列名:例如 DB.cartridge.analysis_type_id,表示该参数是获取自数据库Database中Cartridge表对应的 analysis_type_id 列。
- 数据库.表:例如 DB. analysis_type,表示该参数是获取自数据库 Database 中 Analysis_type 表。
- Cartridge Info.spray_voltag_pos | neg :竖线 “|”,表示 “或”
# 一、基础数据整合
# 1 读取编码并执行分析流程
环节概述:
将试剂盒插入进样口后,设备自动读取当前试剂盒绑定的编码 (Cartridge Code)。点击一键检测后,在数据库中查询所对应的分析类型,并执行相应分析流程。参数来源:
试剂盒RFID绑定的编号、DB.cartridge.analysis_type_id、DB.analysis_type示例说明
内容 对应值 试剂盒RFID绑定的编码 CPD-2002 cartridge.analysis_type_id 4 analysis_type DDA
# 2 获取待测物谱图信息
# 2.1 获取试剂盒信息 (Cartridge Info)
- 环节概述:
通过试剂盒绑定编码 (Cartridge Code),在数据库中查询对应的试剂盒信息 (Cartridge Info) - 参数来源:
试剂盒绑定编码、DB.cartridge、DB.analysis_type.name - 参数说明:
参见MOS Doc / Guide / 方法参数配置指南 - 示例说明
{
"cartridge_code": "CPD-2002",
"name_cn": "食品安保PCS筛查盒A",
"name_en": "PCS Toxics Fine Screening Cartridge A",
"description_cn": "食品安保PCS筛查盒A",
"description_en": "PCS Toxics Fine Screening Cartridge A",
"pre_spray_time": 500,
"spray_voltage_pos": 4500,
"spray_voltage_neg": 3500,
"binding_params": {
"tags": [
"Toxics_A"
],
"compounds": [],
"compounds_intstd": [],
"compound_black_list": []
},
"children": {},
"evaluation_params": {},
"acquisition_params": [
{
"_group_": "default",
"ms2_inj_size_ratio": {
"x": [
0,
100000,
1000000
],
"y": [
1.5,
1.5,
1
],
"r2": 1,
"mode": "piecewise_linear",
"coefs": {
"c0": 0,
"c1": 0,
"c2": 0
},
"x_desc": "precursor intensity",
"y_desc": "inj_size_ratio for dda analysis",
"automatic": 0,
"mode_desc": "linear, poly_2, piecewise_linear, staircase"
}
}
],
"extra_params": {
"dda": {
"parameters": {
"dre": [
{
"method": {
"average": 1,
"msn_params": [
{
"iso_mz": [
90
],
"iso_mz_width": [
720
],
"pre_iso_mz_width": [
720
]
}
],
"inj_lmco_mz": 50,
"method_type": "MS1_ISO",
"scan_mass_end": 500,
"scan_mass_start": 50
},
"enabled": 1,
"dre_mode": "TIC",
"max_times": 10,
"target_tic": 8000,
"inj_size_max": 60,
"inj_size_min": 20,
"inj_size_init": 30,
"notch_enabled": 0,
"target_tic_max": 12000,
"target_tic_min": 3000,
"window_lifespan_max": 3,
"window_size_extension": 2
},
{
"method": {
"average": 1,
"msn_params": [
{
"iso_mz": [
400
],
"iso_mz_width": [
1200
],
"pre_iso_mz_width": [
1200
]
}
],
"inj_lmco_mz": 50,
"method_type": "MS1_ISO",
"scan_mass_end": 1000,
"scan_mass_start": 300
},
"enabled": 1,
"dre_mode": "TIC",
"max_times": 10,
"target_tic": 8000,
"inj_size_max": 60,
"inj_size_min": 20,
"inj_size_init": 30,
"notch_enabled": 0,
"target_tic_max": 12000,
"target_tic_min": 3000,
"window_lifespan_max": 3,
"window_size_extension": 2
}
],
"algorithms": [
{
"peak_picking": {
"top_count": 100,
"min_intensity_abs": 8000
},
"peak_matching": {
"ms1_mz_tol": 0.5,
"top_matched_count": 25
}
},
{
"peak_picking": {
"top_count": 100,
"min_intensity_abs": 8000
},
"peak_matching": {
"ms1_mz_tol": 0.5,
"top_matched_count": 20
}
}
],
"inj_size_window": 5,
"inj_size_inherited": 1
},
"parameters_neg": {
"dre": [
{
"method": {
"average": 1,
"msn_params": [
{
"iso_mz": [
160
],
"iso_mz_width": [
900
],
"pre_iso_mz_width": [
900
]
}
],
"inj_lmco_mz": 50,
"method_type": "MS1_ISO",
"scan_mass_end": 1000,
"scan_mass_start": 50
},
"inj_size_init": 30,
"window_lifespan_max": 3,
"window_size_extension": 2
}
],
"algorithms": [
{
"peak_picking": {
"top_count": 100,
"min_intensity_abs": 8000
},
"peak_matching": {
"ms1_mz_tol": 0.5,
"top_matched_count": 10
}
}
],
"inj_size_window": 5,
"inj_size_inherited": 1
}
},
"spectrum_info": {}
},
"scan_mode_list": [
"normal"
]
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
# 2.2 获取待测物编号 (Compound code)
# 2.2.1 未设置QC
- 获取流程(已判断binding_params.target_list为空):
1) 通过试剂盒信息 (Cartridge Info) 中的绑定参数 (binding_params) ,获取其中 compounds 包含的所有 compound code,如果compounds_intstd不为空,获取其包含的内容
2) 绑定参数 (binding_params) 绑定了一类待测物的 tags,需要在数据库中查询 tags 包含的所有 compound code
3) 将绑定参数中黑名单 (compound_black_list) 包含的 compound code 进行剔除
4) 对剩余所有 compound code 进行去重复,获得最终的 Compound Code - 示例说明:
[100305, 100308, 100309, 100260, 100348, 100349, 100350]
# 2.2.2 已设置QC
- 获取流程(已判断binding_params.target_list不为空):
1) 通过试剂盒信息 (Cartridge Info) 中的绑定参数 (binding_params) ,获取binding_params.target_list中的内容
2) 遍历target_list中的内容,
若当前物质的类型 (type) 为"compound",则获取当前物质的编号 (compound_code)
若当前物质的类型 (type) 为"tag",则获取当前tag的编号 ()
若当前物质的类型 (type) 为"qc",则获取当前物质的编号 (compound_code) ,并标记为qc
3) 将绑定参数中黑名单 (compound_black_list) 包含的 compound code 进行剔除
4) 对剩余所有 compound code 进行去重复,获得最终的 Compound Code (标记为qc的物质不参与去重)
# 2.3 获取谱图信息 (Spectra Info)
- 环节概述:
根据 Compound Code、极性(polarity)、设备类型(device type)和分析类型(analysis type),分别在数据库中查询对应极性的待测物信息 (Spectra Info_pos & Spectra Info_neg)。如果tags中包含了"芬太尼"或"大麻素",则在标准库和推算库中检索。待测物信息检索完成后,根据Compound Code去重复。 - 参数来源:
DB.spectrum、DB.compound、DB.experiment、DB.device_type - 参数说明:
参见MOS Doc / Guide / 方法参数配置指南 - 示例说明(部分):
[
{
"spectrum_id": 473,
"group": 1,
"compound_code": "100237",
"ms_level": 2,
"peaks": [{"mz": 316.182, "intensity": 1}, {"mz": 304.022, "intensity": 0.526}],
"extra_param": {"inj_lmco_mz": 50},
"method_parameters": {"cid_q": 0.25, "polarity": "POS", "msn_params": [{"cid_amp": 1.4, "precursor_mz": 360.172}], "method_type": "MS2_DDA"},
"compound": {
"code": "100237",
"name_cn": "恩诺沙星",
"name_en": "Enrofloxacin",
"cas": "93106-60-6",
"mass": "359.165",
"formula": "C19H22FN3O3",
"extra_data": {}
}
},
{
"spectrum_id": 1504,
"group": 2,
"compound_code": "100242",
"ms_level": 2,
"peaks": [{"mz": 477.086, "intensity": 1.0}, {"mz": 371.144, "intensity": 0.63}],
"extra_param": {},
"method_parameters": {"cid_q": 0.25, "polarity": "NEG", "msn_params": [{"cid_amp": 2.5, "precursor_mz": 521.076}], "method_type": "MS2"},
"compound": {
"code": "100242",
"name_cn": "二嗪农",
"name_en": "Diazinon",
"cas": "333-41-5",
"mass": "304.101",
"formula": "C12H21N2O3PS",
"extra_data": {"basis": "农药"}
}
}
]
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# 2.4 获取候选物质信息 (Candidate Spectra Info)
- 参数来源:
Spectra Info_pos & Spectra Info_neg - 示例说明:
"Compounds Spectra Info_pos": [
{
"compound_code": "100305",
"ms2": {
"spectrum_id": 473,
"group": 1,
"compound_code": "100237",
"ms_level": 2,
"peaks": [
{
"mz": 316.182,
"intensity": 1
},
{
"mz": 304.022,
"intensity": 0.526
}
],
"extra_param": {
"inj_lmco_mz": 50
},
"method_parameters": {
"cid_q": 0.25,
"polarity": "POS",
"msn_params": [
{
"cid_amp": 1.4,
"precursor_mz": 360.172
}
],
"method_type": "MS2_DDA"
},
"compound": {
"code": "100237",
"name_cn": "恩诺沙星",
"name_en": "Enrofloxacin",
"cas": "93106-60-6",
"mass": "359.165",
"formula": "C19H22FN3O3",
"extra_data": {}
}
},
"ms3": {}
}
]
"Compounds Spectra Info_neg": [
{
"compound_code": "100305",
"ms2": {
"spectrum_id": 1504,
"group": 2,
"compound_code": "100242",
"ms_level": 2,
"peaks": [
{
"mz": 477.086,
"intensity": 1.0
},
{
"mz": 371.144,
"intensity": 0.63
}
],
"extra_param": {},
"method_parameters": {
"cid_q": 0.25,
"polarity": "NEG",
"msn_params": [
{
"cid_amp": 2.5,
"precursor_mz": 521.076
}
],
"method_type": "MS2"
},
"compound": {
"code": "100242",
"name_cn": "二嗪农",
"name_en": "Diazinon",
"cas": "333-41-5",
"mass": "304.101",
"formula": "C12H21N2O3PS",
"extra_data": {
"basis": "农药"
}
}
},
"ms3": {}
}
]
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
# 二、分析流程执行
# 1 整合分析参数analysis_params_
- 环节概述:
根据极性列表,先执行正模式DDA,再进行负模式DDA。获取分析流程参数,并将试剂盒信息中extra_params关于DDA的参数更新至分析流程参数中。 - 参数来源:
dda.json、DB/cartridge/extra_params - 参数说明:
参见MOS Doc / Guide / 方法参数配置指南 - 示例说明:
{
"acquisition": {
"dre": {
"enabled": 0
},
"method": {
"average": 1,
"cid_q": 0.25,
"method_type": "MS2_DDA",
"scan_mass_end": 1000,
"scan_mass_start": 50,
"scan_speed": 1
},
"ms1_iso_enabled": 0,
"ms2_inj_size_ratio": {
"x": [
0,
100000,
1000000
],
"y": [
1.5,
1.5,
1
],
"r2": 1,
"mode": "piecewise_linear",
"coefs": {
"c0": 0,
"c1": 0,
"c2": 0
},
"x_desc": "precursor intensity",
"y_desc": "inj_size_ratio for dda analysis",
"automatic": 0,
"mode_desc": "linear, poly_2, piecewise_linear, staircase"
},
"ms3_enabled": 1
},
"algorithms": [
{
"peak_picking": {
"top_count": 100,
"min_intensity_abs": 8000
},
"peak_matching": {
"ms1_mz_tol": 0.5,
"top_matched_count": 25
}
},
{
"peak_picking": {
"top_count": 100,
"min_intensity_abs": 8000
},
"peak_matching": {
"ms1_mz_tol": 0.5,
"top_matched_count": 20
}
}
],
"dre": [
{
"method": {
"average": 1,
"msn_params": [
{
"iso_mz": [
90
],
"iso_mz_width": [
720
],
"pre_iso_mz_width": [
720
]
}
],
"inj_lmco_mz": 50,
"method_type": "MS1_ISO",
"scan_mass_end": 500,
"scan_mass_start": 50
},
"enabled": 1,
"dre_mode": "TIC",
"max_times": 10,
"target_tic": 8000,
"inj_size_max": 60,
"inj_size_min": 20,
"inj_size_init": 30,
"notch_enabled": 0,
"target_tic_max": 12000,
"target_tic_min": 3000,
"window_lifespan_max": 3,
"window_size_extension": 2
},
{
"method": {
"average": 1,
"msn_params": [
{
"iso_mz": [
400
],
"iso_mz_width": [
1200
],
"pre_iso_mz_width": [
1200
]
}
],
"inj_lmco_mz": 50,
"method_type": "MS1_ISO",
"scan_mass_end": 1000,
"scan_mass_start": 300
},
"enabled": 1,
"dre_mode": "TIC",
"max_times": 10,
"target_tic": 8000,
"inj_size_max": 60,
"inj_size_min": 20,
"inj_size_init": 30,
"notch_enabled": 0,
"target_tic_max": 12000,
"target_tic_min": 3000,
"window_lifespan_max": 3,
"window_size_extension": 2
}
],
"evaluation": {
"qual_model": {
"cost": {
"enabled": 1,
"weights": {
"ms2": 0.9,
"ms3": 1
}
},
"distance": {
"enabled": 1,
"weights": {
"delta_intensity": 0.3,
"delta_mz": 0.5,
"delta_mz_rel": 0.2
}
},
"fragment_dominance": {
"enabled": 1,
"equation": {
"automatic": 0,
"coefs": {
"c0": 0,
"c1": 0,
"c2": 0
},
"mode": "piecewise_linear",
"mode_desc": "linear, poly_2, piecewise_linear, staircase",
"r2": 1,
"x": [
0,
0.6
],
"x_desc": "max relative intensity of fragments",
"y": [
0,
1
],
"y_desc": "fragment dominance"
},
"max_fragment_intensity_threshold": 300000.0
},
"fragments_matching_degree": {
"enabled": 1,
"fragments_count_max": 4,
"fragments_count_coefs": {
"c0": 0.3,
"c1": 0.2
}
},
"isotope_probability": {
"enabled": 1,
"equation": {
"automatic": 0,
"coefs": {
"c0": 0,
"c1": 0,
"c2": 0
},
"mode": "piecewise_linear",
"mode_desc": "linear, poly_2, piecewise_linear, staircase",
"r2": 1,
"x": [
0,
1,
2
],
"x_desc": "r/r0, r represents actual isotope ratio and r0 represents theoretical isotope ratio calculated using mz_to_isotope_ratio",
"y": [
0.5,
0.5,
0
],
"y_desc": "isotope probability"
},
"mz_to_isotope_ratio_coefs": {
"c0": -0.0317,
"c1": 0.0009,
"c2": 0
}
},
"spec_availability": {
"enabled": 1,
"equation": {
"expression": [
{
"x": [
0,
1e5
],
"y": "0.8 * x / 1e5"
},
{
"x": [
1e5,
1e7
],
"y": "0.2 * log10(x) - 0.2"
},
{
"x": [
1e7,
1e9
],
"y": "1.2"
}
],
"mode": "expression",
"mode_desc": "linear, poly_2, piecewise_linear, staircase, expression",
"x_desc": "max intensity of fragments",
"y_desc": "spec_availability"
}
},
"verbose": 1
},
"qual_rule": {
"desc": "if score < neg_threshold, result is neg; if score >= pos_threshold, result is pos; otherwise result is weak pos",
"neg_threshold": 50,
"pos_threshold": 70
}
},
"exit_when_dre_failed": 1,
"inj_size_window": 5,
"inj_size_inherited": 1
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
# 2 执行数据采集
# 2.1 执行DRE流程
- DRE参数整合
- 环节概述:
获取分析参数中的DRE参数,根据当前极性获取对应喷雾电压。当存在多段质量范围时,则分段进行DRE。若开启进样量继承(inj_size_inherited),则直接采用首段DRE的进样量进行其他段谱图的采集。 - 参数来源:
DB.cartridge、dda.json - 参数说明:
参见MOS Doc / Guide / 方法参数配置指南 - 示例说明:
- 环节概述:
//以下参数来源:DB/cartridge/extra_params/dre
"dre": [
{
"method": {
"average": 1,
"msn_params": [
{
"iso_mz": [
90
],
"iso_mz_width": [
720
],
"pre_iso_mz_width": [
720
]
}
],
"inj_lmco_mz": 50,
"method_type": "MS1_ISO",
"scan_mass_end": 500,
"scan_mass_start": 50
},
"enabled": 1,
"dre_mode": "TIC",
"max_times": 10,
"target_tic": 8000,
"inj_size_max": 60,
"inj_size_min": 20,
"inj_size_init": 30,
"notch_enabled": 0,
"target_tic_max": 12000,
"target_tic_min": 3000,
"window_lifespan_max": 3,
"window_size_extension": 2
},
{
"method": {
"average": 1,
"msn_params": [
{
"iso_mz": [
400
],
"iso_mz_width": [
1200
],
"pre_iso_mz_width": [
1200
]
}
],
"inj_lmco_mz": 50,
"method_type": "MS1_ISO",
"scan_mass_end": 1000,
"scan_mass_start": 300
},
"enabled": 1,
"dre_mode": "TIC",
"max_times": 10,
"target_tic": 8000,
"inj_size_max": 60,
"inj_size_min": 20,
"inj_size_init": 30,
"notch_enabled": 0,
"target_tic_max": 12000,
"target_tic_min": 3000,
"window_lifespan_max": 3,
"window_size_extension": 2
}
]
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
执行DRE扫描流程
- 环节概述:
执行MS1的DRE流程
- 环节概述:
根据DRE结果状态判定流程
- 环节概述:
判断DRE流程的结果状态 - 判断结果:
- 当正模式(POS)的DRE流程未找到最佳谱图时,流程结束并提示“进样失败,请重试”;
- 当正模式(POS)的DRE流程找到最佳谱图时,流程继续 (2.2 执行MS1数据匹配)
- 当正模式(POS)的物质筛查鉴定完成后,存在负模式需要筛查鉴定的物质 且 负模式(POS)的DRE流程未找到最佳谱图时,流程结束并报告正模式的鉴定结果。
- 环节概述:
# 2.2 执行MS1数据匹配
环节概述:
当DRE流程执行成功并且找到最佳谱图时,对该谱图进行数据匹配,获取可疑物前体离子列表(suspect_precursor_list)。
1)获取当前质量范围段对应的谱图寻峰参数 (peak_picking)和谱图匹配参数 (peak_matching),对当前谱图寻峰及计算质量数;
参数内容:
//以下参数来源:DB/Cartridge/extra_params/dda
"algorithms": [
{
"peak_picking": {
"top_count": 100,
"min_intensity_abs": 8000
},
"peak_matching": {
"ms1_mz_tol": 0.5,
"top_matched_count": 25
}
},
{
"peak_picking": {
"top_count": 100,
"min_intensity_abs": 8000
},
"peak_matching": {
"ms1_mz_tol": 0.5,
"top_matched_count": 20
}
}
]
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
2)根据当前极性,获取对应的待测物谱图信息 (Compounds Spectra Info),若设置了QC,则将当前质量范围段对应的质控物谱图信息添加至待测物谱图信息中,并遍历:
- a. 获取当前谱图信息中MS2对应的precursor (precursor_mz)
- b. 遍历MS1谱图峰表(Peaks)的每个峰值(peak):
- 计算当前的前体离子最大值(current_ precursor_mz_max)和最小值(current_ precursor_mz_min),计算公式 = peak.mz ± ms1_mz_tol;
- 判断MS2的precursor是否在上述计算范围内 (current_ precursor_mz_min ≤ precursor_mz ≤ current_ precursor_mz_max),若满足,则将当前峰值(peak)及谱图信息加入到可疑物前体离子列表(suspect_precursor_list)中;
如果满足上述条件的peak存在多个,则计算偏差值,选择偏差值最小的峰值加入到可疑物前体离子列表中。计算公式 delta_mz = | peak.mz - precursor_mz |
# 2.3 执行多级谱图的数据采集和评分
环节概述:
遍历可疑物前体离子列表(suspect_precursor_list)的每个precursor,并进行二级谱和三级谱(如果存在)的采集和评分。
1) 将可疑物前体离子列表按照峰强度(peak.intensity)进行降序排列
2) 遍历排序后的前体离子列表
a. 计算进样量
- 获取进样量比例inj_size_ratio
- 参数来源:dda.json/parameters|parameters_neg /acquisition/inj_size_ratio (默认为0)
- 若比例不为0,则直接计算进样量;
- 若比例为0,则进样量比例由当前precursor的峰强度决定,峰强度在1E6以内的进样量比例为1.2,大于1E6比例为1.0。(参数来源:instrument.json/calibration/dda_ms2_inj_size_ratio/x,y)
- 参数来源:dda.json/parameters|parameters_neg /acquisition/inj_size_ratio (默认为0)
- 计算进样量
- inj_size = ms1_inj_size × inj_size_ratio,ms1_inj_size为MS1 DRE的最佳谱图进样量。此进样量作为MS2和MS3谱图采集的进样量。
- 获取进样量比例inj_size_ratio
b. 整合MS2采集方法参数
- 参数来源:
dda.json、static.json、DB.cartridge - 参数说明:
参见MOS Doc / Guide / 方法参数配置指南 - 示例说明:
{ //以下参数来源:DB.cartridge.method_params "method_type": "MS2", "polarity": "NEG", "spray_voltage": 4500, //cid_amp "msn_params": [{"cid_amp":1.0,"precursor_mz":147.03,"iso_mz_width": 4, "pre_iso_mz_width": 20}], "cid_q": 0.25, //以下参数来源:tDB/cartridge/acquisition_params/dre 或者DRE的结果 "inj_size": "60 (默认,未开启DRE) 或DRE结果(未开启继承DRE谱图)", //以下参数来源:DB/cartridge/acquisition_params/dre "repeat": 1, "repeat_interval": 0, "spec_repeat": 20, //spec_repeat和cycle取最大值 "spec_repeat_interval": 0, "scan_mass_end": 300, "scan_mass_start": 50, "scan_speed": 1, "average":1, //以下参数来源:common.json/method_parameters_default "iso_q": 0.75, "pre_iso_q": 0.75, "pt_per_th": 100, "scan_q": 0.75, "trap_q": 0.3 }1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30- 参数来源:
c. 创建MS2扫描方程
d. 生成动态SWIFT
e. 执行预喷
- 环节概述:
在流程开始后,直接执行预喷操作(PRE_SPRAY_FORCE);当切换极性时,再次进行预喷操作。
- 环节概述:
f. 执行扫描
g. MS2谱图寻峰匹配
- 1) 获取当前质量范围段对应的谱图寻峰参数 (peak_picking)和谱图匹配参数 (peak_matching),对当前谱图寻峰及计算质量数;
参数内容:参数与2.2的参数相同 - 2) 获取可疑物MS2谱图标准峰
将当前可疑物的实际峰与标准峰进行匹配,并标记匹配结果 (True / False)
- 1) 获取当前质量范围段对应的谱图寻峰参数 (peak_picking)和谱图匹配参数 (peak_matching),对当前谱图寻峰及计算质量数;
h. 根据MS2匹配结果决定下一步流程
- 判断依据:
True (检出) | False (未检出) - 判断结果:
当匹配结果为检出(True) 时,则判断是否进入MS3扫描流程;当匹配结果为未检出(False) 时,则判断是否进入MS1_ISO扫描流程。MS3扫描流程
- 判断是否执行MS3扫描流程
- 环节概述:
- 当MS2谱图的匹配结果为检出时,需要判断是否开启MS3扫描流程以及当前可疑物是否存在MS3谱图信息。
- 判断依据:
- ms3_enable = 0 (未开启) | 1 (开启) ,默认为开启;在可疑物前体离子列表中,当前可疑物是否存在MS3谱图信息。
- 参数来源:
- dda.json/parameters/acquisition,suspect_precursor_list.ms3
- 判断结果:
- 当开启MS3扫描流程,并且当前待测物存在MS3谱图信息时,执行MS3扫描流程;
- 当未开启或不存在MS3谱图信息时,则判断是否进入MS1_ISO扫描流程。
- 环节概述:
- 整合MS3采集参数
- 待测物MS3谱图的采集参数来自suspect_precursor_list.ms3,进样量为MS2谱图的进样量(由MS1 DRE最佳谱图进样量计算所得)。
- 执行MS3采集流程
- 执行MS3谱图处理
- 执行数据库匹配
- 判断是否执行MS3扫描流程
判断是否MS1_ISO扫描流程
- 环节概述:
本环节仅在开启时,才执行该扫描流程。 - 判断依据:
ms1_iso_enable = 0 (未开启) | 1 (开启) ,默认为未开启。 - 参数来源:
targeted.json/parameters/acquisition - 判断结果:
当选择开启时,执行MS1_ISO扫描流程;当未开启时,则进入谱图评分流程。
- 环节概述:
- 判断依据:
i. 谱图评分
- 1) 获取评价参数
qual_rule (dda.json/parameters/evalution)、qual_model (dda.json/parameters/evalution) - 2) 计算谱图得分
- 获取评分权重 (cost)
- 参数来源:
evalution/qual_model/cost - 判断规则:
判断是否存在MS3特征谱峰。若存在,则cost为1.0;若不存在,则cost为0.9。
- 参数来源:
- 计算谱库特征距离 (Distance)
- 参数来源:
evalution/qual_model/distance
- 参数来源:
- 计算离子峰主导性 (Fragment dominance)
- 参数来源:
evalution/qual_model/fragment_dominance
- 参数来源:
- 谱图有效性 (Spectrum Availability)
- 参数来源:
evalution/qual_model/spec_availability
- 参数来源:
- 同位素可能性 (Isotope Probability)
- 参数来源:
evalution/qual_model/isotope_probability
- 参数来源:
- 计算最终得分 (score)
- 计算公式=100 × cost × Distance × Fragment dominance × Spectrum Availability × Isotope Probability
- 根据得分和评判规则来对应最终结果
- 规则来源:
evaluation/qual_rule - 规则内容:
Score <50,待测物为阴性;50≤ Score <70,待测物为弱阳性;Score ≥ 70,待测物为阳性。 - 检测结果:
阴性、弱阳性、阳性
- 规则来源:
- 获取评分权重 (cost)
- 1) 获取评价参数
# 2.4 判断是否遍历完成
- 环节概述:判断可疑物前体离子列表是否遍历完成
- 判断结果:未完成,继续下个可疑物的数据采集和匹配;完成,若设置了质控物质,则判断当前质量范围段配置的质控物质是否全部检出;若未设置质控物质,则进行下一质量范围段的检测。
# 2.5 判断质控物质是否均检出
- 环节概述:判断当前质量范围段设置的质控物质是否均检出。
- 判断结果:全部检出;则继续下一个判断;若未全部检出,则进行未检出物质的靶向确证流程。
# 2.6 判断质控物质是否均检出
- 环节概述:当前质量范围段设置的质控物质有未检出时,需要对该质控物质进行靶向检测,以此判定该质控物质的最终结果。
- 流程:与targeted分析流程相同。
# 2.7 判断多段DRE是否执行完成
- 环节概述:判断分段DRE是否均执行完成
- 判断结果:执行完成,进行负模式的鉴定;未遍历完成,继续下一段质量范围的DRE及数据采集匹配流程。
# 2.8 执行负模式下可疑物的鉴定
环节概述:负模式下可疑物鉴定的流程与正模式相同。
# 三、结果文件输出
- 调用报告模板,展示结果列表在 STD 界面
- 补充样本信息 (前台界面)
- 保存报告 (前台界面)
- 生成report.json (用于提升 STD 查询报告效率的索引,reports.json -> report.json)、MRZ 文件 (核心文件)、PDF 文件
- 分析流程结束,进行下一个检测