# Scan Function v3.0.0
注意
此文档已过时,推荐阅读 最新版本
# Introduction
Scan Function(即扫描方程)是连接上层应用与底层硬件之间的桥梁,负责将上层应用发出的指令翻译成硬件可以理解的信号,从而驱动仪器完成特定功能,如进行样品扫描,获取谱图数据等。
从结构上来说,Scan Function 是由一系列 signal 和 segment 组成的二维矩阵。其中,矩阵的每一行表示一路控制信号,每一列表示一个 segment,矩阵的元素值则表示信号的当前状态。下图展示了 method type 为 MS1 (全谱扫描)的Base方程结构。
# Signal
Signal 用于对底层硬件进行控制,如打开离子源,关闭检测器等。
Base方程中包含的信号及其释义:
No. | Name | Description |
---|---|---|
1 | Time | segment 的持续时间 |
2 | Active | segment 是否激活 1:激活;0:不激活 |
3 | DAPI | 控制DAPI开关1(24V)1:打开;0:关闭 |
4 | Source | 控制离子源开关 1:打开;0:关闭 |
5 | Detector | 控制检测器开关 1:打开;0:关闭 |
6 | Data | Data = adc_freq / scan_speed / pt_per_th / 1000 |
7 | Spec_Loc | 质谱存储位置, 0,1, … |
8 | Q1_mz_start | RF1 起始质量值 |
9 | Q1_mz_end | RF1 起始质量值 |
10 | Q1_q_start | RF1 起始q值 |
11 | Q1_q_end | RF1 终止q值 |
12 | Q2_mz_start | RF2 起始质量值 |
13 | Q2_mz_end | RF2 起始质量值 |
14 | Q2_q_start | RF2 起始q值 |
15 | Q2_q_end | RF2 终止q值 |
16 | AC1_freq_start | AC1 频率起始值 |
17 | AC1_freq_end | AC1 频率终止值 |
18 | AC1_amp_start | AC1 幅度起始值 |
19 | AC1_amp_end | AC1 幅度终止值 |
20 | AC2X_freq_start | AC2X 频率起始值 |
21 | AC2X_freq_end | AC2X 频率终止值 |
22 | AC2X_amp_start | AC2X 幅度起始值 |
23 | AC2X_amp_end | AC2X 幅度终止值 |
24 | AC2Y_freq_start | AC2Y 频率起始值 |
25 | AC2Y_freq_end | AC2Y 频率终止值 |
26 | AC2Y_amp_start | AC2Y 幅度起始值 |
27 | AC2Y_amp_end | AC2Y 幅度终止值 |
28 | Gate1_start | Gate1 起始值 |
29 | Gate1_end | Gate1 终止值 |
30 | Gate2_start | Gate2 起始值 |
31 | Gate2_end | Gate2 终止值 |
32 | Gate3_start | Gate3 起始值 |
33 | Gate3_end | Gate3 终止值 |
34 | Trap1_start | Trap1 起始值 |
35 | Trap1_end | Trap1 终止值 |
36 | Trap2_start | Trap2 起始值 |
37 | Trap2_end | Trap2 终止值 |
38 | Spray_amp_start | Spray 幅值起始值 |
39 | Spray_amp_end | Spray 幅值终止值 |
40 | Dynode_amp_start | Dynode 幅值起始值 |
41 | Dynode_amp_end | Dynode 幅值终止值 |
42 | Detector_amp_start | Detector 幅值起始值 |
43 | Detector_amp_end | Detector 幅值终止值 |
44 | SWIFT1_switch | SWITF1 使能,1:打开;0:关闭 |
45 | SWIFT1_loc | SWITF1 存储位置,0,1,... |
46 | SWIFT1_amp | SWITF1 幅度 |
47 | SWIFT2_switch | SWITF2 使能,1:打开;0:关闭 |
48 | SWIFT2_loc | SWITF2 存储位置,0,1,... |
49 | SWIFT2_amp | SWITF2 幅度 |
50 | Trigger1 | 控制开关2(24V) |
51 | Trigger2 | 控制开关3(24V) |
52 | Trigger3 | 控制电源开关7(3.3V) |
53 | Trigger4 | 控制开关 TRIGGER_OUT1 (3.3V) |
# Segment
Segment 由一系列信号组成,通过控制各个信号的状态以完成特定的功能,如进行扫描,补气等。每个 segment 由 Segment Generator 根据 method parameters 和前一个 segment 生成。
# 单阱 segment
# injection 部分
No. | Name | Description |
---|---|---|
1 | inj_init | 初始化信号 |
2 | inj_dapi1 | 打开 DAPI 进样 |
3 | inj_dapi2 | 打开 DAPI 进样 |
4 | inj_post1 | 进样,并合理分配进样量 |
5 | inj_post2 | 进样,并合理分配进样量 |
6 | inj_end | 控制 gate 变化,结束进样 |
7 | inj_cool | 进样后离子冷却 |
# isolation 部分
No. | Name | Description |
---|---|---|
1 | iso_delay | 控制 isolation 时的气压 |
2 | iso_set_rf | 设置isolation时的RF强度 |
3 | pre_iso | 用于施加第一次 swift 信号,执行 pre_iso |
4 | iso_cool | 用于间隔第一次 iso 和 第二次 iso |
5 | iso | 用于施加第二次 swift 信号,执行 iso |
6 | iso_end | isolation结束时恢复RF的强度 |
# cid 部分
No. | Name | Description |
---|---|---|
1 | gas | cid前补气 |
2 | cid_delay | MSn 模式下控制 CID 时的气压 |
cid_delay_calib | MS2_Pressure_Calib模式下控制 CID 时的气压 | |
cid_delay_dda | MS2_DDA 模式下控制 CID 时的气压 | |
3 | cid_set_rf | 设置CID 时的 RF 强度 |
4 | cid | 执行MSn模式下的CID |
cid_slim | 执行MS2_Pressure_Calib模式下的CID | |
cid_dda | 执行 MS2_DDA 模式下的CID | |
5 | cid_end | CID结束时恢复RF的强度 |
# scan 部分
No. | Name | Description |
---|---|---|
1 | scan_delay | 控制MS2~MS5模式下scan时的气压 |
scan_delay_ms1 | 控制 MS1 模式下 scan 时的气压 | |
scan_delay_calib | 控制 MS2_Pressure_Calib模式下scan时的气压 | |
scan_delay_dda | 控制 MS2_DDA 模式下 scan 时的气压 | |
2 | scan_kv_on | 开启检测器高压电源,启动气压和高压保护 |
3 | scan_cem_on | 开启检测器高压光耦开关 |
4 | scan_set_rf | 设置 scan 起始的 RF 强度 |
5 | scan | 执行扫描 |
# 通用 segment
No. | Name | Description |
---|---|---|
1 | cool | 用于间隔不同的离子操作,离子冷却 |
2 | reset | 重置所有信号 |
# 双阱 segment
在双阱中,由于离子在阱1/阱2中是两套不同的信号设置,故将双阱信号segment细分为阱1/阱2。下文中,如无特殊说明,后缀q1均表示阱1,q2均表示阱2。
# injection 部分
No. | Name | Description |
---|---|---|
1 | inj_init_q1(q2) | 双阱模式下进行信号初始化,阱1(阱2)进样 |
2 | inj_dapi1_q1(q2) | 双阱模式下,打开DAPI进样,阱1(阱2)进样 |
3 | inj_dapi2_q1(q2) | 双阱模式下,打开DAPI进样,阱1(阱2)进样 |
4 | inj_post1_q1(q2) | 双阱模式下,进样,并合理分配进样量,阱1(阱2)进样 |
5 | inj_post2_q1(q2) | 双阱模式下,进样,并合理分配进样量,阱1(阱2)进样 |
6 | inj_end_q1(q2) | 控制 gate 变化,结束进样,阱1(阱2)进样 |
7 | inj_cool_q1(q2) | 进样后离子冷却,阱1(阱2)进样 |
# isolation 部分
No. | Name | Description |
---|---|---|
1 | iso_delay_q1(q2) | 控制isolation时的气压,阱1(阱2)iso |
2 | iso_set_rf_q1(q2) | 设置isolation时的 RF 强度,阱1(阱2)iso |
3 | pre_iso_q1(q2) | 用于施加第一次 swift 信号执行 pre_iso,阱1(阱2)iso |
4 | iso_cool_q1(q2) | 用于间隔第一次 iso 和 第二次 iso,阱1(阱2)iso |
5 | iso_q1(q2) | 用于施加第二次 swift 信号执行 iso,阱1(阱2)iso |
6 | iso_end_q1(q2) | isolation结束时恢复 RF 强度,阱1(阱2)iso |
# cid 部分
No. | Name | Description |
---|---|---|
1 | gas_q1(q2) | 补气 |
2 | cid_delay_q1(q2) | MS2~MS5模式下控制 CID 时的气压,阱1(阱2)CID |
cid_delay_calib_q1(q2) | MS2_Pressure_Calib模式下控制 CID 时的气压,阱1(阱2)CID | |
3 | cid_set_rf_q1(q2) | 设置CID时的 RF 强度,阱1(阱2)CID |
4 | cid_q1(q2) | 执行CID,阱1(阱2)CID,阱1(阱2)CID |
cid_slim_q1(q2) | 执行MS2_Pressure_Calib模式下的CID,阱1(阱2)CID | |
5 | cid_end_q1(q2) | CID结束时恢复RF强度,阱1(阱2)CID |
# msae 部分
msae 功能仅供双阱使用。
No. | Name | Description |
---|---|---|
1 | gas_q1(q2) | 补气 |
2 | msae_delay_q1(q2) | 控制MSAE时的气压,阱1(阱2)MSAE |
3 | msae_set_rf_q1(q2) | 设置MSAE时的RF强度,阱1(阱2)MSAE |
4 | msae_q1(q2) | 执行MSAE,阱1(阱2)MSAE |
5 | msae_end_q1(q2) | MSAE结束时恢复RF强度,阱1(阱2)MSAE |
# scan 部分
No. | Name | Description |
---|---|---|
1 | scan_delay_q1(q2) | 双阱模式下,控制 scan 时的气压,阱1(阱2)scan |
2 | scan_kv_on_q1(q2) | 双阱模式下,开启检测器高压电源,启动气压和高压保护,阱1(阱2)scan |
3 | scan_cem_on_q1(q2) | 双阱模式下,开启检测器高压光耦开关,阱1(阱2)scan |
4 | scan_set_rf_q1(q2) | 双阱模式下,设置scan时的 起始RF强度,阱1(阱2)scan |
5 | scan_q1(q2) | 双阱模式下,执行扫描,阱1(阱2)scan |
# 通用 segment
No. | Name | Description |
---|---|---|
1 | cool_q1(q2) | 用于间隔不同的离子操作,阱1(阱2)离子冷却 |
2 | reset | 重置所有信号 |
# 模块化 segment
No. | Name | Description |
---|---|---|
1 | inj_section_q1(q2) | 进样序列,阱1(阱2)进样 |
2 | msae_section_q1(q2) | msae序列,阱1(阱2)msae |
3 | isolation_section_q1(q2) | isolation序列,阱1(阱2)iso |
4 | IT_CID_section_q1(q2) | ion trap CID序列,阱1(阱2)CID |
5 | scan_section_q1(q2) | scan序列,阱1(阱2)scan |
# inj_section_q1(q2)
inj_init_q1(q2)——初始化信号,阱1(阱2)进样
inj_dapi1_q1(q2)——开启DAPI,阱1(阱2)进样
inj_dapi2_q1(q2)——开启DAPI,阱1(阱2)进样
inj_post1_q1(q2)——进样量控制,阱1(阱2)进样
inj_post2_q1(q2)——进样量控制,阱1(阱2)进样
inj_end_q1(q2)——进样结束,阱1(阱2)进样
Inj_cool_q1(q2)——离子冷却,阱1(阱2)进样
# msae_section_q1(q2)
gas_q1(q2)——补气,阱1(阱2)补气
msae_delay_q1(q2)——msae气压控制,阱1(阱2)msae
msae_set_rf_q1(q2)——msae RF电压设置,阱1(阱2)msae
msae_q1(q2)——离子传输,阱1(阱2)msae
mase_end_q1(q2)——msae结束时恢复RF强度,阱1(阱2)msae
# isolation_section_q1(q2)
iso_delay_q1(q2)——isolation气压控制,阱1(阱2)iso
iso_set_rf_q1(q2)——设置isolation时的 RF 强度,阱1(阱2)iso
pre_iso_q1(q2)——宽坑isolation,阱1(阱2)iso
iso_cool_q1(q2)——离子冷却,阱1(阱2)iso
iso_q1(q2)——窄坑isolation,阱1(阱2)iso
iso_end_q1(q2)——isolation结束时恢复RF强度,阱1(阱2)iso
# IT_CID_section_q1(q2)
gas_q1(q2)——补气,阱1(阱2)补气
cid_delay_q1(q2)——CID气压控制,阱1(阱2)CID
cid_set_rf_q1(q2)——设置CID时的 RF 强度,阱1(阱2)CID
cid_q1(q2)——离子碎裂,阱1(阱2)CID
cid_end_q1(q2)——CID结束时恢复RF强度,阱1(阱2)CID
# scan_section_q1(q2)
scan_delay_q1(q2)——scan气压控制,阱1(阱2)scan
scan_kv_on_q1(q2)——启动气压和高压保护
scan_cem_on_q1(q2)——scan cem开启,阱1(阱2)scan
scan_set_rf_q1(q2)——设置扫描起始质量,阱1(阱2)scan
scan_q1(q2)——扫描,阱1(阱2)scan
reset——信号重置
# Parameters
# Static Parameters
用于配置仪器中不易变动的参数。
Name | Default | Unit | Description |
---|---|---|---|
_version | 版本号 | ||
ac1_amp_default | 0 | V | AC1 不工作时的强度 |
ac1_freq_default | 0 | kHz | AC1 不工作时的频率 |
ac2_amp_default | 0 | V | AC2 不工作时的强度 |
ac2_freq_default | 0 | kHz | AC2 不工作时的频率 |
adc_freq | 1000000 | Hz | 主 ADC 采样速率 |
adc_vref_range | 2.5 | ADC(模数转换器)的参考电压范围 | |
cid_time | 30 | ms | CID 时外加 AC 的时长 |
cid_time_extension_l | 10 | ms | 扩充气压容忍度,左侧 |
cid_time_extension_r | 50 | ms | 扩充气压容忍度,右侧 |
cool_time | 10 | ms | 重要的离子操作之间的冷却间隔时长 |
counting_threshold_dac | 4369 | Counting 阈值 | |
dda_cid_time | 400 | ms | MS2_DDA 模式下 CID 时外加 AC 的时长 |
gas_time | 20 | ms | 为实现 CID 补气,DAPI 再次打开的时长 |
gate1_block | 22 | V | Gate1 能够挡住离子无法穿过的电压值 |
gate1_default | 0 | V | Gate1 默认值,设为0V |
gate2_block | 22 | V | Gate2 能够挡住离子无法穿过的电压值 |
gate2_default | 0 | V | Gate2 默认值,设为0V |
gate3_block | 22 | V | Gate3 能够挡住离子无法穿过的电压值 |
gate3_default | 0 | V | Gate3 默认值,设为0V |
inj_DAPI_sum_time | 20 | ms | 进样 DAPI 打开的总时长 |
inj_lmco_mz_max | 150 | Th | 最大的 inj_lmco_mz |
inj_post_sum_time | 60 | ms | 进样时序中非开 DAPI 时长 |
inj_pre_time | 100 | ms | 方程预扫的时间 |
inj_cool_time | 1000 | ms | 进样结束离子冷却的时间 |
pre_iso_swift1_loc | 0 | 默认宽 notch 存在 loc 0 | |
iso_swift1_loc | 1 | 默认窄 notch 存在 loc 1 | |
pre_iso_swift2_loc | 15 | 默认宽 notch 存在 loc 15 | |
iso_swift2_loc | 16 | 默认窄 notch 存在 loc 16 | |
method_parameters_default | method_parameters 默认值 | ||
min_segment_time | 1 | ms | Segment 最小时间,用于保护 |
msae_time | 100 | ms | Msae的时间 |
neg_2kv_default | 0 | V | 负2K高压电零伏时的电压值 |
neg_2kv_ovp_voltage | -1800 | V | 负2K高压保护时的电压值 |
neg_5kv_default | 0 | V | 负5K高压电零伏时的电压值 |
neg_5kv_ovp_voltage | -4800 | V | 负5K高压保护时的电压值 |
pos_5kv_default | 0 | V | 正5K高压电零伏时的电压值 |
neg_5kv_ovp_voltage | 4800 | V | 正5K高压保护时的电压值 |
pre_amp1_gain | 20000 | 前置放大器1的增益控制参数 | |
pre_amp2_gain | 10 | 前置放大器2的增益控制参数 | |
q1_mz_default | 0 | RF1 不工作时质量值 | |
q1_q_default | 0 | RF1 不工作时q值 | |
q2_mz_default | 0 | RF2 不工作时质量值 | |
q2_q_default | 0 | RF2 不工作时 q 值 | |
rf1_default | 0 | Th | RF1 不工作时的强度 |
rf2_default | 0 | Th | RF2 不工作时的强度 |
scan_ac_secular_freq_n | 1 | Scan时使用的谐振点索引 0:第1谐振点 1:第2谐振点 | |
scan_kv_on_time | 200 | ms | 开启检测器高压电源,启动气压和高压保护 |
scan_cem_on_time | 120 | ms | Scan 之前预先打开检测器、打拿极 |
scan_post_time | 50 | ms | Scan function 结束的缓冲时间 |
spec_loc_default | 1 | 谱的默认存储位置 | |
swift1_amp_default | 0 | 默认值 | |
swift1_loc_default | 0 | 默认值 | |
swift2_amp_default | 0 | 默认值 | |
swift2_loc_default | 0 | 默认值 | |
swift_parameters | Swift参数默认值 | ||
trap1_default | 0 | V | 第一个阱直流电势零伏时的电压值 |
trap2_default | 0 | V | 第二个阱直流电势零伏时的电压值 |
vacuum_opp_pressure_exp | -2 | 气压保护阈值 |
# Instrument Parameters
用于配置仪器中经常使用或易变动的参数。
# calibration parameters
Name | Default | Min | Max | Unit | Description |
---|---|---|---|---|---|
_version | 版本号 | ||||
cid_delay | 450 | 100 | 800 | ms | 控制 CID 时的气压 |
cid_delay_ms3 | 450 | 100 | 800 | ms | 控制 CID 时的气压 |
cid_delay_ms4 | 450 | 100 | 800 | ms | 控制 CID 时的气压 |
cid_delay_ms5 | 450 | 100 | 800 | ms | 控制 CID 时的气压 |
cps_merge_threshold | 5000 | -4e9 | 4e9 | cps 合并阈值 | |
dda_cid_amp | 1.4 | 0 | 10 | V | MS2_DDA 模式下 CID 时外加 ac 的电压值 |
dda_ms2_inj_size_ratio | 1 | 1 | 1.2 | MS2_DDA 模式下,MS2进样量与MS1进样量的比例关系 | |
inj_gate1 | -2 | -40 | 40 | V | 进样环节 gate1 的电压 |
inj_gate2 | -2 | -40 | 40 | V | 进样环节 gate2 的电压 |
inj_lmco_mz | 50 | 50 | 150 | Th | 自动计算 inj_lmco_mz |
inj_lmco_mz_q1 | 50 | 50 | 150 | Th | 自动计算 inj_lmco_mz |
inj_lmco_mz_q2 | 50 | 50 | 150 | Th | 自动计算 inj_lmco_mz |
inj_lmco_q | 0.825 | 0.65 | 0.908 | 进样时阱内最小离子的 q 值 | |
inj_trap1 | -8 | -45 | 45 | V | 进样环节阱1直流偏置的电压 |
inj_trap2 | -8 | -45 | 45 | V | 进样环节阱2直流偏置的电压 |
iso_amp | f(mz) | 2.99 | 44.3873 | V | mz 与 iso_amp 的转换关系,根据质量自动计算 SWIFT 强度 |
iso_delay | 1500 | 600 | 2000 | ms | 控制 isolation 时的气压 |
iso_delay_msn | 800 | 300 | 2000 | ms | 控制 isolation 时的气压,供 MS2-MS5 使用 |
iso_mz_width | f(mz) | 0 | 0.9 | Th | 根据mz自动计算iso 时的坑宽 |
pre_iso_amp | f(mz) | 0 | 16 | V | 根据质量自动计算SWIFT强度 |
pre_iso_mz_width | f(mz) | 0 | 10 | Th | 根据mz自动计算pre_iso 时的坑宽 |
q_to_pre_iso_amp_ratio | f(q) | 0.25 | 1 | q与pre_iso_amp_ratio 的转换关系 | |
msae_delay | 50 | 0 | 3000 | ms | msae气压控制 |
rf1_freq | 1025 | 800 | 1200 | kHz | 仪器 RF1 的固定谐振频率 |
rf2_freq | 1025 | 800 | 1200 | kHz | 仪器 RF2 的固定谐振频率 |
scan_profile | 出谱及校准参数 | ||||
scan_delay | 400 | 400 | 2000 | ms | 控制 scan 时的气压 |
scan_detector | -1300 | -1500 | -1000 | V | 正模式检测环节负2K高压给检测器供电所需的电压值 |
scan_dynode | -4500 | -4500 | -4500 | V | 正模式检测时负5K(打拿极)电压值 |
# scan_profiles
scan_params 出谱参数
Name | Default | Min | Max | Unit | Description |
---|---|---|---|---|---|
scan_ac1_amp | "c0": 0.568965474 "c1": 0.002620691 | 0 | 10 | V | scan 时ac1 强度与质量轴质量数的转换关系 |
scan_ac2_amp | "c0": 0.568965474 "c1": 0.002620691 | 0 | 10 | V | scan 时ac1 强度与质量轴质量数的转换关系 |
scan_gate2 | 2 | -40 | 40 | V | scan时对应 gate2 的电压值 |
scan_gate3 | 2 | -40 | 40 | V | scan时对应 gate3 的电压值 |
scan_trap1 | "c0": 0.103448421, "c1": -0.012068968 | -40 | 40 | V | scan 时 trap1 直流电势与质量数的转换关系 |
scan_trap2 | "c0": 0.103448421, "c1": -0.012068968 | -40 | 40 | V | scan 时 trap2 直流电势与质量数的转换关系 |
spec_params 校准参数
spec_params_q1 表示阱1的校准参数,spec_params_q2 表示阱2的校准参数.
Name | Default | Min | Max | Unit | Description |
---|---|---|---|---|---|
calib_mass_start | 50 | 50 | 1500 | Th | 校准起始质量 |
calib_mass_end | 1000 | 50 | 1500 | Th | 校准终止质量 |
calib_mass_shift_max | 首次校准时160 校准通过后10 | 0 | 160 | Th | 校准时,质量轴最大偏移量 |
calib_timestamp | 2021-11-08T13:00:00 | 校准时间戳 | |||
down_sample | 1 | 1 | 10 | 降采样 | |
mass_calib | 折线校准 | 质量轴校准,dac 到 q**mz*的映射关系 | |||
mass_compensation | "c0": 0, "c1": 0, “c2": 0 | 质量轴校准补偿,dac 到 q**mz*的映射关系 | |||
mass_compensation_enabled | 0 | 0 | 1 | 是否启用质量轴补偿 |
# hardware_config
Name | Default | Description |
---|---|---|
gas_via_dapi | 1 | 是否通过 dapi 补气 |
trigger1_segments | [] | 配置打开 trigger1 的 segments |
trigger2_segments | [] | 配置打开 trigger2 的 segments |
trigger3_segments | [] | 配置打开 trigger3 的 segments |
trigger4_segments | [] | 配置打开 trigger4 的 segments |
# Method Parameters
用于配置应用程序中频繁使用的扫描参数。
Name | Default | Min | Max | Unit | Description |
---|---|---|---|---|---|
method_type | 方法类型, MS1_q1等 | ||||
polarity | pos | pos | neg | 喷雾极性 | |
average | 1 | 1 | 32 | spectrum average | |
spray_voltage | 2000 | 0 | 5000 | V | 喷雾电压 |
inj_size | 40 | 1 | 80 | 进样量 | |
inj_lmco_mz_q1 | 50 | 20 | 400 | Th | 进样时阱1最小离子的mz值inj_lmco_mz |
inj_lmco_mz_q2 | 50 | 20 | 400 | Th | 进样时阱2最小离子的mz值 |
scan_q | 0.75 | 0.65 | 0.908 | scan 时离子的q值 | |
scan_speed | 1 | 1 | 20 | Th/ms | 扫描速度 |
scan_mass_start | 50 | 50 | 2000 | Th | 扫描起始质量 |
scan_mass_end | 1000 | 100 | 2000 | Th | 扫描终止质量 |
# msn_params
用于配置 MS2~MS5 及 MS1_ISO 的相关参数。
Name | Default | Min | Max | Unit |
---|---|---|---|---|
precursor_mz | 100 | 50 | 2000 | Th |
cid_q | 0.25 | 0.01 | 0.908 | |
iso_q | 0.75 | 0.01 | 0.908 | |
pre_iso_amp | 0 | 0 | 30 | V |
cid_amp | 0 | 0 | 30 | V |
iso_amp | 0 | 0 | 30 | V |
# dual_trap_params
用于配置 msae 的相关参数,支持多母离子。
Name | Default | Min | Max | Unit |
---|---|---|---|---|
precursor_mz | 100 | 50 | 2000 | Th |
msae_q | 0.5 | 0.01 | 0.908 | |
msae_gate2 | 2 | -40 | 40 | V |
msae_trap1 | -1 | -40 | 40 | V |
msae_trap2 | -1 | -40 | 40 | V |
msae_amp | 0.6 | 0 | 10 | V |
# Scan Method
# 单阱 Scan Method
# MS1
全扫描模式。
Parameters
No. | Name | Default | Min | Max | Unit |
---|---|---|---|---|---|
1 | polarity | pos | pos | neg | |
2 | spray_voltage | V | |||
3 | inj_size | 20 | 60 | ||
4 | inj_lmco_mz | 50 | Th | ||
5 | scan_mass_start | 50 | Th | ||
6 | scan_mass_end | 1000 | Th |
Segments
- inj_init
- inj_dapi1
- inj_dapi2
- inj_post1
- inj_post2
- inj_end
- scan_delay_ms1
- scan_set_rf
- scan_cem_on
- scan
- reset
# MS1_ISO
单离子监测模式。
Parameters
No. | Name | Default | Min | Max | Unit |
---|---|---|---|---|---|
1 | polarity | pos | pos | neg | |
2 | spray_voltage | V | |||
3 | inj_size | 20 | 60 | ||
4 | inj_lmco_mz | 50 | Th | ||
5 | iso1_swift2_amp | V | |||
6 | iso2_swift2_amp | V | |||
7 | scan_mass_start | 50 | Th | ||
8 | scan_mass_end | 1000 | Th | ||
9 | msn_params |
Segments
- inj_init
- inj_dapi1
- inj_dapi2
- inj_post1
- inj_post2
- inj_end
- inj_cool
- iso_delay
- iso_set_rf
- pre_iso
- iso_cool
- iso
- iso_end
- scan_set_rf
- scan_cem_on
- scan
- reset
# MSn
串级质谱分析。
Parameters
No. | Name | Default | Min | Max | Unit |
---|---|---|---|---|---|
1 | polarity | pos | pos | neg | |
2 | spray_voltage | V | |||
3 | inj_size | 20 | 60 | ||
4 | inj_lmco_mz | 50 | Th | ||
5 | cid_q | ||||
6 | scan_mass_start | 50 | Th | ||
7 | scan_mass_end | 1000 | Th | ||
8 | msn_params |
Segments
- inj_init
- inj_dapi1
- inj_dapi2
- inj_post1
- inj_post2
- inj_end
- msn_sub_sequence *
- scan_delay
- scan_set_rf
- scan_cem_on
- scan
- reset
* 备注:
根据 msn_params 配置,方程中可能包含多个 msn_sub_sequence 子序列,其个数为:
Value = len(msn_params)
# msn_sub_sequence
Parameters
No. | Name | Default | Min | Max | Unit |
---|---|---|---|---|---|
1 | precursor_mz | 0 | 50 | 1000 | Th |
2 | pre_iso_amp | 0 | V | ||
3 | iso_amp | 0 | V | ||
4 | cid_amp | 0 | V |
Segments
# MS2_DDA
DDA子离子扫描模式。
Parameters
No. | Name | Default | Min | Max | Unit |
---|---|---|---|---|---|
1 | polarity | pos | pos | neg | |
2 | spray_voltage | V | |||
3 | inj_size | 20 | 60 | ||
4 | inj_lmco_mz | 50 | Th | ||
5 | cid_q | ||||
6 | scan_mass_start | 50 | Th | ||
7 | scan_mass_end | 1000 | Th | ||
8 | msn_params |
Segments
- inj_init
- inj_dapi1
- inj_dapi2
- inj_post1
- inj_post2
- inj_end
- inj_cool
- iso_delay
- iso_set_rf
- pre_iso
- iso_cool
- iso
- iso_end
- gas
- cid_delay_calib
- cid_set_rf
- cid_dda
- cid_end
- scan_delay_dda
- scan_set_rf
- scan_cem_on
- scan
- reset
# MS2_Pressure_Calib
气压校准专用的子离子扫描模式。
Parameters
No. | Name | Default | Min | Max | Unit |
---|---|---|---|---|---|
1 | polarity | pos | pos | neg | |
2 | spray_voltage | V | |||
3 | inj_size | 20 | 60 | ||
4 | inj_lmco_mz | 50 | Th | ||
5 | cid_q | ||||
6 | scan_mass_start | 50 | Th | ||
7 | scan_mass_end | 1000 | Th | ||
8 | msn_params |
Segments
- inj_init
- inj_dapi1
- inj_dapi2
- inj_post1
- inj_post2
- inj_end
- inj_cool
- iso_delay
- iso_set_rf
- pre_iso
- iso_cool
- iso
- iso_end
- gas
- cid_delay_calib
- cid_set_rf
- cid_slim
- cid_end
- scan_delay_calib
- scan_set_rf
- scan_cem_on
- scan
- reset
# MS2_Multi_Inj
多次进样串联质谱分析
Parameters
No. | Name | Default | Min | Max | Unit |
---|---|---|---|---|---|
1 | polarity | pos | pos | neg | |
2 | spray_voltage | V | |||
3 | inj_size | 20 | 60 | ||
4 | inj_times | 2 | 1 | 15 | |
5 | inj_lmco_mz | 50 | Th | ||
6 | cid_q | ||||
7 | iso_delay_multi | 800 | 600 | 1500 | ms |
8 | scan_mass_start | 50 | Th | ||
9 | scan_mass_end | 1000 | Th | ||
10 | msn_params |
Segments
- inj_init
- inj_dapi1
- inj_dapi2
- inj_post1
- inj_post2
- multi_inj_section
- inj_end
- inj_cool
- iso_delay
- iso_set_rf
- pre_iso
- iso_cool
- iso
- iso_end
- gas
- cid_delay
- cid_set_rf
- cid
- cid_end
- scan_delay
- scan_set_rf
- scan_kv_on
- scan_cem_on
- scan_set_rf
- scan
- reset
# multi_inj_section
多次进样序列。
由 MS2_Multi_Inj 生成的方程中,multi_inj_section 出现的次数为 inj_times - 1,当 inj_times 为1时,MS2_Multi_Inj 等价于 MS2。
- inj_end_multi
- inj_cool
- iso_delay_multi
- iso_set_rf
- pre_iso
- iso_cool
- iso
- iso_end
- inj_cool
- inj_dapi
- inj_post
# 双阱 Scan Method
# MS1_q1
离子阱1全谱扫描模式。
Method Parameters
No. | Name | Default | Min | Max | Unit |
---|---|---|---|---|---|
1 | polarity | pos | pos | neg | |
2 | spray_voltage | 2000 | 0 | 5000 | V |
3 | inj_size | 35 | 1 | 80 | |
4 | inj_lmco_mz_q1 | 50 | 20 | 400 | Th |
5 | inj_lmco_mz_q2 | 50 | 20 | 400 | Th |
6 | scan_q | 0.75 | 0.65 | 0.908 | Th |
7 | scan_speed | 1 | 1 | 20 | Th |
8 | scan_mass_start | 50 | 50 | 2000 | Th |
9 | scan_mass_end | 1000 | 50 | 2000 | Th |
Segments
- inj_init_q1
- inj_dapi1_q1
- inj_dapi2_q1
- inj_post1_q1
- inj_post2_q1
- inj_end_q1
- inj_cool_q1
- scan_delay_q1
- scan_kv_on_q1
- scan_cem_on_q1
- scan_set_rf_q1
- scan_q1
- reset
Instrument Parameters
Name | Default | Min | Max | Unit | Description |
---|---|---|---|---|---|
inj_gate1 | -2 | -40 | 40 | V | 进样环节 gate1 的电压 |
inj_trap1 | -8 | -40 | 40 | V | 进样环节阱1直流偏置的电压 |
inj_lmco_q | 0.825 | 0.65 | 0.908 | 进样时阱内最小离子的 q 值 | |
scan_delay | 600 | 400 | 2000 | ms | 控制 scan 时的气压 |
scan_ac1_amp | 0.5-1.5 | 0 | 10 | V | scan 时 ac1 强度与质量轴质量数的转换关系,自动匹配scan_speed |
scan_gate2 | 2 | -40 | 40 | V | scan 时对应 gate2 的电压值 |
scan_gate3 | 2 | -40 | 40 | V | scan 时对应 gate3 的电压值 |
scan_trap1 | -1~-10 | -40 | 40 | V | scan 时 trap1 直流电势与质量数的转换关系 |
scan_trap2 | 0 | -40 | 40 | V | scan 时 trap2 直流电势与质量数的转换关系 |
# MS1_q2
离子阱2全谱扫描模式。
Method Parameters
No. | Name | Default | Min | Max | Unit |
---|---|---|---|---|---|
1 | polarity | pos | pos | neg | |
2 | spray_voltage | 2000 | 0 | 5000 | V |
3 | inj_size | 35 | 1 | 80 | |
4 | inj_lmco_mz_q1 | 50 | 20 | 400 | Th |
5 | inj_lmco_mz_q2 | 50 | 20 | 400 | Th |
6 | scan_q | 0.75 | 0.65 | 0.908 | Th |
7 | scan_speed | 1 | 1 | 20 | Th |
8 | scan_mass_start | 50 | 50 | 2000 | Th |
9 | scan_mass_end | 1000 | 50 | 2000 | Th |
Segments
- inj_init_q2
- inj_dapi1_q2
- inj_dapi2_q2
- inj_post1_q2
- inj_post2_q2
- inj_end_q2
- inj_cool_q2
- scan_delay_q2
- scan_kv_on_q2
- scan_cem_on_q2
- scan_set_rf_q2
- scan_q2
- reset
Instrument Parameters
Name | Default | Min | Max | Unit | Description |
---|---|---|---|---|---|
inj_gate1 | -2 | -40 | 40 | V | 进样环节 gate1 的电压 |
inj_gate2 | -2 | -40 | 40 | V | 进样环节 gate2 的电压 |
inj_trap1 | -8 | -40 | 40 | V | 进样环节阱1直流偏置的电压 |
inj_trap2 | -8 | -40 | 40 | V | 进样环节阱2直流偏置的电压 |
inj_lmco_q | 0.825 | 0.65 | 0.908 | 进样时阱内最小离子的 q 值 | |
scan_delay | 600 | 400 | 2000 | ms | 控制 scan 时的气压 |
scan_ac2_amp | 0.5~1.5 | 0 | 10 | V | scan 时 ac2强度与质量轴质量数的转换关系,自动匹配scan_speed |
scan_gate3 | 2 | -40 | 40 | V | scan 时对应 gate3 的电压值 |
scan_trap2 | -1~-10 | -40 | 40 | V | scan 时 trap2 直流电势与质量数的转换关系 |
# MSn_q1
离子阱1串级质谱分析
Method Parameters
No. | Name | Default | Min | Max | Unit |
---|---|---|---|---|---|
1 | polarity | pos | pos | neg | |
2 | spray_voltage | 2000 | 0 | 5000 | V |
3 | inj_size | 35 | 1 | 80 | |
4 | inj_lmco_mz_q1 | 50 | 20 | 400 | Th |
5 | inj_lmco_mz_q2 | 50 | 20 | 400 | Th |
6 | scan_q | 0.75 | 0.65 | 0.908 | Th |
7 | scan_speed | 1 | 1 | 20 | Th |
8 | scan_mass_start | 50 | 50 | 2000 | Th |
9 | scan_mass_end | 1000 | 50 | 2000 | Th |
msn_params | |||||
10 | precursor_mz | 100 | 50 | 2000 | Th |
11 | pre_iso_amp | 10 | 0 | 30 | V |
12 | cid_amp | 2.5 | 0 | 30 | V |
13 | iso_amp | 3.5 | 0 | 30 | V |
14 | cid_q | 0.25 | 0.01 | 0.908 |
Segments
- inj_init_q1
- inj_dapi1_q1
- inj_dapi2_q1
- inj_post1_q1
- inj_post2_q1
- inj_end_q1
- inj_cool_q1
- iso_delay_q1
- iso_set_rf_q1
- pre_iso_q1
- cool_q1
- iso_q1
- iso_end_q1
- gas_q1
- cid_delay_q1
- cid_set_rf_q1
- cid_q1
- cid_end_q1
- scan_delay_q1
- scan_kv_on_q1
- scan_cem_on_q1
- scan_set_rf_q1
- scan_q1
- reset
Instrument Parameters
Name | Default | Min | Max | Unit | Description |
---|---|---|---|---|---|
inj_gate1 | -2 | -40 | 40 | V | 进样环节 gate1 的电压 |
inj_trap1 | -8 | -40 | 40 | V | 进样环节阱1直流偏置的电压 |
inj_lmco_q | 0.825 | 0.65 | 0.908 | 进样时阱内最小离子的 q 值 | |
trap_q | 0.3 | 0.01 | 0.908 | trap 时离子的q值 | |
iso_q | 0.75 | 0.01 | 0.908 | mz 与 iso_amp 的转换关系,根据质量自动计算 SWIFT 强度 | |
iso_delay | 1500 | 600 | 2000 | ms | 控制 isolation 时的气压 |
cid_delay | 450 | 100 | 800 | ms | 控制 CID 时的气压 |
scan_delay | 600 | 400 | 2000 | ms | 控制 scan 时的气压 |
scan_ac1_amp | 0.5-1.5 | 0 | 10 | V | scan 时 ac1 强度与质量轴质量数的转换关系,自动匹配scan_speed |
scan_gate2 | 2 | -40 | 40 | V | scan 时对应 gate2 的电压值 |
scan_gate3 | 2 | -40 | 40 | V | scan 时对应 gate3 的电压值 |
scan_trap1 | -1~-10 | -40 | 40 | V | scan 时 trap1 直流电势与质量数的转换关系 |
scan_trap2 | -1~-10 | -40 | 40 | V | scan 时 trap2 直流电势与质量数的转换关系 |
# MSn_q2
离子阱2串级质谱分析
Method Parameters
No. | Name | Default | Min | Max | Unit |
---|---|---|---|---|---|
1 | polarity | pos | pos | neg | |
2 | spray_voltage | 2000 | 0 | 5000 | V |
3 | inj_size | 35 | 1 | 80 | |
4 | inj_lmco_mz_q1 | 50 | 20 | 400 | Th |
5 | inj_lmco_mz_q2 | 50 | 20 | 400 | Th |
6 | scan_q | 0.75 | 0.65 | 0.908 | Th |
7 | scan_speed | 1 | 1 | 20 | Th |
8 | scan_mass_start | 50 | 50 | 2000 | Th |
9 | scan_mass_end | 1000 | 50 | 2000 | Th |
msn_params | |||||
10 | precursor_mz | 100 | 50 | 2000 | Th |
11 | pre_iso_amp | 10 | 0 | 30 | V |
12 | cid_amp | 2.5 | 0 | 30 | V |
13 | iso_amp | 3.5 | 0 | 30 | V |
14 | cid_q | 0.25 | 0.01 | 0.908 |
Segments
- inj_init_q2
- inj_dapi1_q2
- inj_dapi2_q2
- inj_post1_q2
- inj_post2_q2
- inj_end_q2
- cool_q2
- iso_delay_q2
- iso_set_rf_q2
- pre_iso_q2
- cool_q2
- iso_q2
- iso_end_q2
- gas_q2
- cid_delay_q2
- cid_set_rf_q2
- cid_q2
- cid_end_q2
- scan_delay_q2
- scan_kv_on_q2
- scan_cem_on_q2
- scan_set_rf_q2
- scan_q2
- reset
Instrument Parameters
Name | Default | Min | Max | Unit | Description |
---|---|---|---|---|---|
inj_gate1 | -2 | -40 | 40 | V | 进样环节 gate1 的电压 |
inj_gate2 | -2 | -40 | 40 | V | 进样环节 gate2 的电压 |
inj_trap1 | -8 | -40 | 40 | V | 进样环节阱1直流偏置的电压 |
inj_trap2 | -8 | -40 | 40 | V | 进样环节阱2直流偏置的电压 |
inj_lmco_q | 0.825 | 0.65 | 0.908 | 进样时阱内最小离子的 q 值 | |
trap_q | 0.75 | 0.01 | 0.908 | trap 时离子的q值 | |
iso_q | 0.75 | 0.01 | 0.908 | mz 与 iso_amp 的转换关系,根据质量自动计算 SWIFT 强度 | |
iso_delay | 1500 | 600 | 2000 | ms | 控制 isolation 时的气压 |
cid_delay | 450 | 100 | 800 | ms | 控制 CID 时的气压 |
scan_delay | 600 | 400 | 2000 | ms | 控制 scan 时的气压 |
scan_ac2_amp | 0.5-1.5 | 0 | 10 | V | scan 时 ac2 强度与质量轴质量数的转换关系,自动匹配scan_speed |
scan_gate3 | 2 | -40 | 40 | V | scan 时对应 gate3 的电压值 |
scan_trap2 | 0 | -40 | 40 | V | scan 时 trap2 直流电势与质量数的转换关系 |
# MSAE_q1
选择性离子传输 阱1-阱2
Method Parameters
No. | Name | Default | Min | Max | Unit |
---|---|---|---|---|---|
1 | polarity | pos | pos | neg | |
2 | spray_voltage | 2000 | 0 | 5000 | V |
3 | inj_size | 35 | 1 | 80 | |
4 | inj_lmco_mz_q1 | 50 | 20 | 400 | Th |
5 | inj_lmco_mz_q2 | 50 | 20 | 400 | Th |
6 | scan_q | 0.75 | 0.65 | 0.908 | Th |
7 | scan_speed | 1 | 1 | 20 | Th |
8 | scan_mass_start | 50 | 50 | 2000 | Th |
9 | scan_mass_end | 1000 | 50 | 2000 | Th |
dual_trap_params | |||||
10 | precursor_mz | 100 | 50 | 2000 | Th |
11 | msae_q | 0.5 | 0.01 | 0.908 | |
12 | msae_amp | 0.6 | 0 | 10 | V |
12 | msae_gate2 | 1 | -40 | 40 | V |
13 | msae _trap1 | -1 | -40 | 40 | V |
14 | msae _trap2 | -1 | -40 | 40 | V |
Segments
- inj_init_q1
- inj_dapi1_q1
- inj_dapi2_q1
- inj_post1_q1
- inj_post2_q1
- inj_end_q1
- inj_cool_q1
- gas_q1
- msae_delay_q1
- msae_set_rf_q1
- msae_q1
- msae_end_q1
- scan_delay_q2
- scan_kv_on_q2
- scan_cem_on_q2
- scan_set_rf_q2
- scan_q2
- reset
Instrument Parameters
Name | Default | Min | Max | Unit | Description |
---|---|---|---|---|---|
inj_gate1 | -2 | -40 | 40 | V | 进样环节 gate1 的电压 |
inj_trap1 | -8 | -40 | 40 | V | 进样环节阱1直流偏置的电压 |
inj_lmco_q | 0.825 | 0.65 | 0.908 | 进样时阱内最小离子的 q 值 | |
msae_delay | 50 | 0 | 3000 | ms | msae气压控制 |
msae_time | 100 | 0 | 3000 | ms | msae时长 |
trap_q | 0.3 | 0.01 | 0.908 | trap 时离子的q值 | |
scan_delay | 600 | 400 | 2000 | ms | 控制 scan 时的气压 |
scan_ac2_amp | 0.5-1.5 | 0 | 10 | V | scan 时 ac2 强度与质量轴质量数的转换关系,自动匹配scan_speed |
scan_gate3 | 2 | -40 | 40 | V | scan 时对应 gate3 的电压值 |
scan_trap2 | -1~-10 | -40 | 40 | V | scan 时 trap2 直流电势与质量数的转换关系 |
# MSAE_q2
选择性离子传输 阱2-阱1
Method Parameters
No. | Name | Default | Min | Max | Unit |
---|---|---|---|---|---|
1 | polarity | pos | pos | neg | |
2 | spray_voltage | 2000 | 0 | 5000 | V |
3 | inj_size | 35 | 1 | 80 | |
4 | inj_lmco_mz_q1 | 50 | 20 | 400 | Th |
5 | inj_lmco_mz_q2 | 50 | 20 | 400 | Th |
6 | scan_q | 0.75 | 0.65 | 0.908 | Th |
7 | scan_speed | 1 | 1 | 20 | Th |
8 | scan_mass_start | 50 | 50 | 2000 | Th |
9 | scan_mass_end | 1000 | 50 | 2000 | Th |
dual_trap_params | |||||
10 | precursor_mz | 100 | 50 | 2000 | Th |
11 | msae_q | 0.5 | 0.01 | 0.908 | |
12 | msae_amp | 0.6 | 0 | 10 | V |
12 | msae_gate2 | 1 | -40 | 40 | V |
13 | msae _trap1 | -1 | -40 | 40 | V |
14 | msae _trap2 | -1 | -40 | 40 | V |
Segments
- inj_init_q2
- inj_dapi1_q2
- inj_dapi2_q2
- inj_post1_q2
- inj_post2_q2
- inj_end_q2
- cool_q2
- gas_q2
- msae_delay_q2
- msae_set_rf_q2
- msae_q2
- msae_end_q2
- scan_delay_q1
- scan_kv_on_q1
- scan_cem_on_q1
- scan_set_rf_q1
- scan_q1
- reset
Instrument Parameters
Name | Default | Min | Max | Unit | Description |
---|---|---|---|---|---|
inj_gate1 | -2 | -40 | 40 | V | 进样环节 gate1 的电压 |
inj_trap1 | -8 | -40 | 40 | V | 进样环节阱1直流偏置的电压 |
inj_gate2 | -2 | -40 | 40 | V | 进样环节 gate2 的电压 |
inj_trap2 | -8 | -40 | 40 | V | 进样环节阱2直流偏置的电压 |
inj_lmco_q | 0.825 | 0.65 | 0.908 | 进样时阱内最小离子的 q 值 | |
msae_delay | 50 | 0 | 3000 | ms | msae气压控制 |
msae_time | 100 | 0 | 3000 | ms | msae时长 |
trap_q | 0.3 | 0.01 | 0.908 | trap 时离子的q值 | |
scan_delay | 600 | 400 | 2000 | ms | 控制 scan 时的气压 |
scan_ac1_amp | 0.5-1.5 | 0 | 10 | V | scan 时 ac1 强度与质量轴质量数的转换关系,自动匹配scan_speed |
scan_gate2 | 2 | -40 | 40 | V | scan 时对应 gate2 的电压值 |
scan_gate3 | 2 | -40 | 40 | V | scan 时对应 gate3 的电压值 |
scan_trap1 | -1~-10 | -40 | 40 | V | scan 时 trap1 直流电势与质量数的转换关系 |
scan_trap2 | -1~-10 | -40 | 40 | V | scan 时 trap2 直流电势与质量数的转换关系 |
# MS2_BT_q1
离子阱1-2的串级质谱分析
Method Parameters
No. | Name | Default | Min | Max | Unit |
---|---|---|---|---|---|
1 | polarity | pos | pos | neg | |
2 | spray_voltage | 2000 | 0 | 5000 | V |
3 | inj_size | 35 | 1 | 80 | |
4 | inj_lmco_mz_q1 | 50 | 20 | 400 | Th |
5 | inj_lmco_mz_q2 | 50 | 20 | 400 | Th |
6 | scan_q | 0.75 | 0.65 | 0.908 | Th |
7 | scan_speed | 1 | 1 | 20 | Th |
8 | scan_mass_start | 50 | 50 | 2000 | Th |
9 | scan_mass_end | 1000 | 50 | 2000 | Th |
dual_trap_params | |||||
10 | precursor_mz | 100 | 50 | 2000 | Th |
11 | msae_q | 0.5 | 0.01 | 0.9 | |
12 | msae_gate2 | 2 | -40 | 40 | V |
13 | msae_trap1 | 0 | -40 | 40 | V |
14 | msae_trap2 | -30 | -40 | 40 | V |
15 | msae_amp | 0.6 | 0 | 10 | V |
Segments
- inj_init_q1
- inj_dapi1_q1
- inj_dapi2_q1
- inj_post1_q1
- inj_post2_q1
- inj_end_q1
- inj_cool_q1
- gas_q1
- msae_delay_q1
- msae_set_rf_q1
- msae_q1
- msae_end_q1
- scan_delay_q2
- scan_kv_on_q2
- scan_cem_on_q2
- scan_set_rf_q2
- scan_q2
- reset
Instrument Parameters
Name | Default | Min | Max | Unit | Description |
---|---|---|---|---|---|
inj_gate1 | -2 | -40 | 40 | V | 进样环节 gate1 的电压 |
inj_trap1 | -8 | -40 | 40 | V | 进样环节阱1直流偏置的电压 |
inj_lmco_q | 0.825 | 0.65 | 0.908 | 进样时阱内最小离子的 q 值 | |
msae_delay | 50 | 0 | 3000 | ms | msae气压控制 |
msae_time | 100 | 0 | 3000 | ms | msae时长 |
trap_q | 0.3 | 0.01 | 0.908 | trap 时离子的q值 | |
scan_delay | 600 | 400 | 2000 | ms | 控制 scan 时的气压 |
scan_ac2_amp | 0.5-1.5 | 0 | 10 | V | scan 时 ac2 强度与质量轴质量数的转换关系,自动匹配scan_speed |
scan_gate3 | 2 | -40 | 40 | V | scan 时对应 Gate3 的电压值 |
scan_trap2 | -1~-10 | -40 | 40 | V | scan 时 trap2 直流电势与质量数的转换关系 |
# MS3_BT_q1
离子阱1-2-1的串级质谱分析
Method Parameters
No. | Name | Default | Min | Max | Unit |
---|---|---|---|---|---|
1 | polarity | pos | pos | neg | |
2 | spray_voltage | 2000 | 0 | 5000 | V |
3 | inj_size | 35 | 1 | 80 | |
4 | inj_lmco_mz_q1 | 50 | 20 | 400 | Th |
5 | inj_lmco_mz_q2 | 50 | 20 | 400 | Th |
6 | scan_q | 0.75 | 0.65 | 0.908 | Th |
7 | scan_speed | 1 | 1 | 20 | Th |
8 | scan_mass_start | 50 | 50 | 2000 | Th |
9 | scan_mass_end | 1000 | 50 | 2000 | Th |
dual_trap_params | |||||
10 | precursor_mz | 100 | 50 | 2000 | Th |
11 | msae_q | 0.5 | 0.01 | 0.908 | |
12 | msae_gate2 | 2 | -40 | 40 | V |
13 | msae_trap1 | -30 | -40 | 40 | V |
14 | msae_trap2 | -30 | -40 | 40 | V |
15 | msae_amp | 0.6 | 0 | 10 | V |
Segments
- inj_init_q1
- inj_dapi1_q1
- inj_dapi2_q1
- inj_post1_q1
- inj_post2_q1
- inj_end_q1
- inj_cool_q1
- gas_q1
- msae_delay_q1
- msae_set_rf_q1
- msae_q1
- msae_end_q1
- gas_q2
- msae_delay_q2
- msae_set_rf_q2
- msae_q2
- msae_end_q2
- scan_delay_q1
- scan_kv_on_q1
- scan_cem_on_q1
- scan_set_rf_q1
- scan_q1
- reset
Instrument Parameters
Name | Default | Min | Max | Unit | Description |
---|---|---|---|---|---|
inj_gate1 | -2 | -40 | 40 | V | 进样环节 gate1 的电压 |
inj_trap1 | -8 | -40 | 40 | V | 进样环节阱1直流偏置的电压 |
inj_gate2 | -2 | -40 | 40 | V | 进样环节 gate2 的电压 |
inj_trap2 | -8 | -40 | 40 | V | 进样环节阱2直流偏置的电压 |
inj_lmco_q | 0.825 | 0.65 | 0.908 | 进样时阱1最小离子的 q 值 | |
msae_delay | 50 | 0 | 3000 | ms | msae气压控制 |
msae_time | 100 | 0 | 3000 | ms | msae时长 |
trap_q | 0.3 | 0.01 | 0.908 | trap 时离子的q值 | |
scan_delay | 600 | 400 | 2000 | ms | 控制 scan 时的气压 |
scan_ac1_amp | 0.5-1.5 | 0 | 10 | V | scan 时 ac2 强度与质量轴质量数的转换关系,自动匹配scan_speed |
scan_gate2 | 2 | -40 | 40 | V | scan 时对应 gate2 的电压值 |
scan_gate3 | 2 | -40 | 40 | V | scan 时对应 gate3 的电压值 |
scan_trap1 | -1~-10 | -40 | 40 | V | scan 时 trap1 直流电势与质量数的转换关系 |
scan_trap2 | -1~-10 | -40 | 40 | V | scan 时 trap2 直流电势与质量数的转换关系 |
# 附录
# 1. 阱1出谱涉及的signal
No. | Name | Description |
---|---|---|
1 | Q1_mz_start | RF1 起始质量值 |
2 | Q1_mz_end | RF1 起始质量值 |
3 | Q1_q_start | RF1 起始q值 |
4 | Q1_q_end | RF1 终止q值 |
5 | AC1_freq_start | AC1 频率起始值 |
6 | AC1_freq_end | AC1 频率终止值 |
7 | AC1_amp_start | AC1 幅度起始值 |
8 | AC1_amp_end | AC1 幅度终止值 |
11 | Gate2_start | Gate2 起始值 |
12 | Gate2_end | Gate2 终止值 |
13 | Gate3_start | Gate3 起始值 |
14 | Gate3_end | Gate3 终止值 |
15 | Trap1_start | Trap1 起始值 |
16 | Trap1_end | Trap1 终止值 |
17 | Trap2_start | Trap2 起始值 |
18 | Trap2_end | Trap2 终止值 |
# 2. 阱2出谱涉及的signal
No. | Name | Description |
---|---|---|
1 | Q2_mz_start | RF2 起始质量值 |
2 | Q2_mz_end | RF2 起始质量值 |
3 | Q2_q_start | RF2 起始q值 |
4 | Q2_q_end | RF2 终止q值 |
5 | AC2X_freq_start | AC2 频率起始值 |
6 | AC2X_freq_end | AC2 频率终止值 |
7 | AC2X_amp_start | AC2 幅度起始值 |
8 | AC2X_amp_end | AC2 幅度终止值 |
9 | Gate3_start | Gate3 起始值 |
10 | Gate3_end | Gate3 终止值 |
11 | Trap2_start | Trap2 起始值 |
12 | Trap2_end | Trap2 终止值 |
# 3. 单阱 segment 详解
# inj_init
初始化信号
Time = max(min_segment_time, inj_pre_time);
Source = switch_on;
Gate1_Start = (polarity == "POS") ? inj_gate1 : -inj_gate1;
Gate1_End = Gate1_Start;
Gate2_Start = (polarity == "POS") ? gate2_block : -gate2_block;
Gate2_End = Gate2_Start;
Gate3_Start = gate3_default;
Gate3_End = Gate3_End;
Trap1_Start = trap1_default;
Trap1_End = Trap1_Start;
Trap2_Start = (polarity == "POS") ? inj_trap2 : -inj_trap2;
Trap2_End = Trap2_Start;
Spray_Amp_Start = getSprayVoltage();
Spray_Amp_End = Spray_Amp_Start;
2
3
4
5
6
7
8
9
10
11
12
13
14
# inj_dapi
打开 DAPI 进样
Time = max(min_segment_time, inj_DAPI_sum_time);
DAPI = switch_on;
Source = switch_on;
Gate1_Start = gate1_default;
Gate1_End = Gate1_Start;
Trap2_Start = (polarity == "POS") ? inj_trap2 : -inj_trap2;
Trap2_End = Trap2_Start;
2
3
4
5
6
7
# inj_dapi1
打开 DAPI 进样
if (inj_size <= inj_post_sum_time || inj_size >= inj_post_sum_time + inj_DAPI_sum_time) {
Time = max(min_segment_time, inj_DAPI_sum_time * 0.5);
} else {
Time = max(min_segment_time, inj_post_sum_time + inj_DAPI_sum_time - inj_size);
}
DAPI = switch_on;
if (inj_size >= inj_post_sum_time + inj_DAPI_sum_time) {
Q2_mz_Start = min(inj_lmco_mz, inj_lmco_mz_max);
Q2_mz_End = Q2_mz_Start;
Q2_q_Start = inj_lmco_q;
Q2_q_End = Q2_q_Start;
}
2
3
4
5
6
7
8
9
10
11
12
# inj_dapi2
打开 DAPI 进样
if (inj_size <= inj_post_sum_time || inj_size >= inj_post_sum_time + inj_DAPI_sum_time) {
Time = max(min_segment_time, inj_DAPI_sum_time * 0.5);
} else {
Time = max(min_segment_time, inj_size - inj_post_sum_time);
}
if (inj_size > inj_post_sum_time &&
inj_size < inj_post_sum_time + inj_DAPI_sum_time) {
Q2_mz_Start = min(inj_lmco_mz, inj_lmco_mz_max);
Q2_mz_End = Q2_mz_Start;
Q2_q_Start = inj_lmco_q;
Q2_q_End = Q2_q_Start;
}
2
3
4
5
6
7
8
9
10
11
12
13
# inj_post
满进样量进样
Time = max(min_segment_time, inj_post_sum_time);
DAPI = switch_off;
2
# inj_post1
进样,并合理分配进样量
if (inj_size >= inj_post_sum_time) {
Time = max(min_segment_time, inj_post_sum_time * 0.5);
} else {
Time = max(min_segment_time, inj_post_sum_time - inj_size);
}
DAPI = switch_off;
if (PmsMath::isEqual(inj_size, inj_post_sum_time)) {
Q2_mz_Start = min(inj_lmco_mz, inj_lmco_mz_max);
Q2_mz_End = Q2_mz_Start;
Q2_q_Start = inj_lmco_q;
Q2_q_End = Q2_q_Start;
}
2
3
4
5
6
7
8
9
10
11
12
# inj_post2
进样,并合理分配进样量
if (inj_size >= inj_post_sum_time) {
Time = max(min_segment_time, inj_post_sum_time * 0.5);
} else {
Time = max(min_segment_time, inj_size);
}
if (inj_size < inj_post_sum_time) {
Q2_mz_Start = min(inj_lmco_mz, inj_lmco_mz_max);
Q2_mz_End = Q2_mz_Start;
Q2_q_Start = inj_lmco_q;
Q2_q_End = Q2_q_Start;
}
2
3
4
5
6
7
8
9
10
11
12
# inj_end
控制 gate 变化,关闭进样
Time = min_segment_time;
Source = switch_off;
Gate1_Start = (polarity == "POS") ? gate1_block : -gate1_block;
Gate1_End = Gate1_Start;
Spray_Amp_Start = pos_5kv_default;
Spray_Amp_End = Spray_Amp_Start;
Trap2_End = trap2_default;
2
3
4
5
6
7
# inj_end_multi
控制 gate 变化,关闭进样,保持高压
Time = min_segment_time;
Source = switch_off;
Gate1_Start = (polarity == "POS") ? gate1_block : - gate1_block;
Gate1_End = Gate1_Start;
Trap2_End = trap2_default;
2
3
4
5
# inj_cool
进样后离子冷却
Time = max(min_segment_time, cool_time);
if (inj_lmco_mz_max * inj_lmco_q < precursor_mz * trap_q) {
Q2_mz_End = inj_lmco_mz_max;
Q2_q_End = inj_lmco_q;
} else {
Q2_mz_End = precursor_mz;
Q2_q_End = trap_q;
}
SWIFT2 = switch_off;
SWIFT2_Loc = swift2_loc_default;
SWIFT2_Amp = swift2_amp_default;
2
3
4
5
6
7
8
9
10
11
12
# inj_cool_multi
进样后离子冷却
Time = max(min_segment_time, cool_time);
Source = switch_on;
if (inj_lmco_mz_max * inj_lmco_q < precursor_mz * trap_q) {
Q2_mz_End = inj_lmco_mz_max;
Q2_q_End = inj_lmco_q;
} else {
Q2_mz_End = precursor_mz;
Q2_q_End = trap_q;
}
Trap2_Start = (polarity == "POS") ? inj_trap2 : -inj_trap2;
Trap2_End = Trap2_Start;
2
3
4
5
6
7
8
9
10
11
# iso_delay
控制 isolation 时的气压
if (msn_index == 0) {
Time = max(min_segment_time, iso_delay);
} else {
Time = max(min_segment_time, iso_delay_msn);
}
2
3
4
5
# iso_delay_multi
控制 MS2_Multi_Inj 模式下 isolation 时的气压
Time = max(min_segment_time, iso_delay_multi);
# iso_set_rf
设置 isolation 时的 RF 强度
Time = max(min_segment_time, cool_time);
Q2_mz_End = get_precursor_mz(msn_index);
Q2_q_End = pre_iso_q;
2
3
# pre_iso
用于施加第一次 swift 信号执行 pre_iso
Time = max(min_segment_time, get_pre_iso_swift_time(msn_index));
SWIFT2 = get_pre_iso_amp(msn_index) > 0 ? switch_on : switch_off;
SWIFT2_Loc = pre_iso_swift2_loc + msn_index * 2;
SWIFT2_Amp = get_pre_iso_amp(msn_index);
2
3
4
# iso_cool
用于间隔第一次 iso 和 第二次 iso
Time = max(min_segment_time, cool_time);
SWIFT2 = switch_off;
SWIFT2_Loc = swift2_loc_default;
SWIFT2_Amp = swift2_amp_default;
Q2_q_End = iso_q;
2
3
4
5
# iso
用于施加第二次 swift 信号执行 iso
Time = max(min_segment_time, get_iso_swift_time(msn_index));
SWIFT2 = get_iso_amp(msn_index) > 0 ? switch_on : switch_off;
SWIFT2_Loc = iso_swift2_loc + msn_index * 2;
SWIFT2_Amp = get_iso_amp(msn_index);
2
3
4
# iso_end
isolation结束时恢复RF的强度
Time = max(min_segment_time, cool_time);
if (inj_lmco_mz_max * inj_lmco_q < precursor_mz * trap_q) {
Q2_mz_End = inj_lmco_mz_max;
Q2_q_End = inj_lmco_q;
} else {
Q2_mz_End = precursor_mz;
Q2_q_End = trap_q;
}
SWIFT2 = switch_off;
SWIFT2_Loc = swift2_loc_default;
SWIFT2_Amp = swift2_amp_default;
2
3
4
5
6
7
8
9
10
11
12
# gas
打开 DAPI 补气
Time = max(min_segment_time, gas_time);
if (gas_via_dapi == 1) {
DAPI = switch_on;
}
2
3
4
# cid_delay
MS2~MS5 模式下控制 CID 时的气压
Time = max(min_segment_time, cid_delay_list[msn_index] - cid_time_extension_l);
DAPI = switch_off;
2
# cid_delay_calib
MS2_Pressure_Calib 模式下控制 CID 时的气压
Time = max(min_segment_time, cid_delay);
DAPI = switch_off;
2
# cid_delay_dda
MS2_DDA 模式下控制 CID 时的气压
Time = max(min_segment_time, cid_delay);
DAPI = switch_off;
2
# cid_set_rf
设置 CID 时的 RF 强度
Time = max(min_segment_time, cool_time);
Q2_mz_End = get_precursor_mz(msn_index);
Q2_q_End = cid_q;
2
3
# cid
执行CID
Time = max(min_segment_time, cid_time + cid_time_extension_l + cid_time_extension_r);
if (get_cid_amp(msn_index) > 0) {
AC2X_FRE_Start = QToFreq::Instance().calculate(cid_q, rf2_freq);
AC2X_FRE_End = AC2X_FRE_Start;
}
AC2X_AMP_Start = get_cid_amp(msn_index);
AC2X_AMP_End = AC2X_AMP_Start;
2
3
4
5
6
7
# cid_slim
MS2_Pressure_Calib 模式下执行 CID
Time = max(min_segment_time, cid_time);
double cid_q = cid_q;
if (get_cid_amp(msn_index) > 0) {
AC2X_FRE_Start = QToFreq::Instance().calculate(cid_q, rf2_freq);
AC2X_FRE_End = AC2X_FRE_Start;
}
AC2X_AMP_Start = get_cid_amp(msn_index);
AC2X_AMP_End = AC2X_AMP_Start;
2
3
4
5
6
7
8
# cid_dda
执行 MS2_DDA 模式下的 CID
Time = max(min_segment_time, dda_cid_time);
double cid_q = cid_q;
AC2X_FRE_Start = QToFreq::Instance().calculate(cid_q, rf2_freq);
AC2X_FRE_End = AC2X_FRE_Start;
AC2X_AMP_Start = get_cid_amp(msn_index);
AC2X_AMP_End = AC2X_AMP_Start;
2
3
4
5
6
# cid_end
结束 CID
Time = min_segment_time;
AC2X_FRE_Start = ac2_freq_default;
AC2X_FRE_End = AC2X_FRE_Start;
AC2X_AMP_Start = ac2_amp_default;
AC2X_AMP_End = AC2X_AMP_Start;
2
3
4
5
# scan_delay
控制 scan 时的气压
Time = scan_delay - cid_time_extension_r
# scan_delay_ms1
控制 MS1 模式下 scan 时的气压
Time = iso_delay
# scan_delay_calib
控制 MS2_Pressure_Calib 模式下 scan 时的气压
Time = max(min_segment_time, scan_delay);
AC2X_FRE_Start = ac2_freq_default;
AC2X_FRE_End = AC2X_FRE_Start;
AC2X_AMP_Start = ac2_amp_default;
AC2X_AMP_End = AC2X_AMP_Start;
2
3
4
5
# scan_delay_dda
控制 MS2_DDA 模式下 scan 时的气压
Time = max(min_segment_time, scan_delay + cid_time - dda_cid_time);
AC2X_FRE_Start = ac2_freq_default;
AC2X_FRE_End = AC2X_FRE_Start;
AC2X_AMP_Start = ac2_amp_default;
AC2X_AMP_End = AC2X_AMP_Start;
2
3
4
5
# scan_kv_on
开启检测器高压电源,启动气压和高压保护
Time = max(min_segment_time, scan_kv_on_time);
Dynode_Amp_Start = scan_dynode;
Dynode_Amp_End = Dynode_Amp_Start;
Detector_Amp_Start = scan_detector;
Detector_Amp_End = Detector_Amp_Start;
2
3
4
5
# scan_cem_on
开启检测器光耦开关
Time = max(min_segment_time, scan_cem_on_time);
Detector = switch_on;
Q2_mz_End = scan_mass_start;
Q2_q_End = 0.908;
Data = round(adc_freq / scan_speed / pt_per_th / 1000);
2
3
4
5
6
# scan_set_rf
计算 scan 时的 RF 强度
Time = max(min_segment_time, cool_time);
Q2_mz_End = scan_mass_start;
Q2_q_End = scan_q;
if (1 == scan_ac_secular_freq_n) {
AC2X_FRE_Start = rf2_freq - QToFreq::Instance().calculate(scan_q, rf2_freq);
AC2X_FRE_End = AC2X_FRE_Start;
} else {
AC2X_FRE_Start = QToFreq::Instance().calculate(scan_q, rf2_freq);
AC2X_FRE_End = AC2X_FRE_Start;
}
2
3
4
5
6
7
8
9
10
# scan
执行谱图扫描
Time = max(min_segment_time, (scan_mass_end - scan_mass_start) / scan_speed);
Spec_Loc = spec_loc_default;
Q2_mz_End = scan_mass_end;
AC2X_AMP_Start = scan_mass_start * scan_ac2_amp.coefs.c1 + scan_ac2_amp.coefs.c0;
AC2X_AMP_End = scan_mass_end * scan_ac2_amp.coefs.c1 + scan_ac2_amp.coefs.c0;
Gate2_Start = (polarity == "POS") ? scan_gate2 : - scan_gate2;
Gate2_End = Gate2_Start;
Trap2_Start = (polarity == "POS") ? scan_mass_start * scan_trap2.coefs.c1 + scan_trap2.coefs.c0 : - scan_mass_start * scan_trap2.coefs.c1 - scan_trap2.coefs.c0;
Trap2_End = (polarity == "POS") ? scan_mass_end * scan_trap2.coefs.c1 + scan_trap2.coefs.c0 : - scan_mass_end * scan_trap2.coefs.c1 - scan_trap2.coefs.c0;
2
3
4
5
6
7
8
9
10
11
# cool
用于间隔不同的离子操作
Time = max(min_segment_time, cool_time);
# reset
重置所有信号
Time = max(min_segment_time, scan_post_time);
# 4. 双阱 segment 详解
# inj_init_q1(q2)
初始化信号
Time = max(min_segment_time, inj_pre_time);
Source = switch_on;
if (polarity == "POS")
Gate1_Start = inj_gate1;
else
Gate1_Start = -inj_gate1;
Gate1_End = Gate1_Start;
if (polarity == "POS")
Gate3_Start = gate3_block;
else
Gate3_Start = -gate3_block;
Gate3_End = Gate3_Start;
if ("q1" == scan_loc) {
Gate2_Start = (polarity == "POS") ? gate2_block : -gate2_block;
Gate2_End = Gate2_Start;
Trap1_Start = (polarity == "POS") ? inj_trap1 : -inj_trap1;
Trap1_End = Trap1_Start;
} else {
Gate2_Start = (polarity == "POS") ? inj_gate2 : -inj_gate2;
Gate2_End = Gate2_Start;
Trap2_Start = (polarity == "POS") ? inj_trap2 : -inj_trap2;
Trap2_End = Trap2_Start;
}
if (polarity == "POS")
Spray_Amp_Start = spray_voltage;
else
Spray_Amp_Start = -spray_voltage;
Spray_Amp_End = Spray_Amp_Start;
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
# inj_dapi1_q1(q2)
打开DAPI进样
if (inj_size <= inj_post_sum_time || inj_size >= inj_post_sum_time + inj_DAPI_sum_time) {
Time = max(min_segment_time, inj_DAPI_sum_time * 0.5);
} else {
Time = max(min_segment_time, inj_post_sum_time + inj_DAPI_sum_time - inj_size);
}
DAPI = switch_on;
if (inj_size >= inj_post_sum_time + inj_DAPI_sum_time) {
Q1_mz_Start = min(inj_lmco_mz_q1, inj_lmco_mz_max);
Q1_mz_End = Q1_mz_Start;
Q1_q_Start = inj_lmco_q;
Q1_q_End = Q1_q_Start;
}
2
3
4
5
6
7
8
9
10
11
12
13
14
# inj_dapi2_q1(q2)
打开DAPI进样
if (inj_size <= inj_post_sum_time ||
inj_size >= inj_post_sum_time + inj_DAPI_sum_time) {
Time = max(min_segment_time, inj_DAPI_sum_time * 0.5);
} else {
Time = max(min_segment_time, inj_size - inj_post_sum_time);
}
if (inj_size > inj_post_sum_time && inj_size < inj_post_sum_time + inj_DAPI_sum_time) {
Q1_mz_Start = min(inj_lmco_mz_q1, inj_lmco_mz_max);
Q1_mz_End = Q1_mz_Start;
Q1_q_Start = inj_lmco_q;
Q1_q_End = Q1_q_Start;
}
2
3
4
5
6
7
8
9
10
11
12
13
# inj_post1_q1(q2)
进样,并合理分配进样量
if (inj_size >= inj_post_sum_time) {
Time = max(min_segment_time, inj_post_sum_time * 0.5);
} else {
Time = max(min_segment_time, inj_post_sum_time - inj_size);
}
DAPI = switch_off;
if (inj_size == inj_post_sum_time) {
Q1_mz_Start = min(inj_lmco_mz_q1, inj_lmco_mz_max);
Q1_mz_End = Q1_mz_Start;
Q1_q_Start = inj_lmco_q;
Q1_q_End = Q1_q_Start;
if ("q2" == scan_loc) {
Q2_mz_Start = min(inj_lmco_mz_q2, inj_lmco_mz_max);
Q2_mz_End = Q2_mz_Start;
Q2_q_Start = inj_lmco_q;
Q2_q_End = Q2_q_Start;
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# inj_post2_q1(q2)
进样,并合理分配进样量
if (inj_size >= inj_post_sum_time) {
Time = max(min_segment_time, inj_post_sum_time * 0.5);
} else {
Time = max(min_segment_time, inj_size);
}
if (inj_size < inj_post_sum_time) {
Q1_mz_Start = min(inj_lmco_mz_q1, inj_lmco_mz_max);
Q1_mz_End = Q1_mz_Start;
Q1_q_Start = inj_lmco_q;
Q1_q_End = Q1_q_Start;
if (PmsEnum::TrapLoc::q2 == scan_loc) {
Q2_mz_Start = min(inj_lmco_mz_q2, inj_lmco_mz_max);
Q2_mz_End = Q2_mz_Start;
Q2_q_Start = inj_lmco_q;
Q2_q_End = Q2_q_Start;
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# inj_end_q1(q2)
控制 gate 变化,结束进样
Time = max(min_segment_time, cool_time);
Source = switch_off;
Gate1_End = (polarity == "POS") ? gate1_block : -gate1_block;
Gate2_End = (polarity == "POS") ? gate2_block : -gate2_block;
Gate3_End = (polarity == "POS") ? gate3_block : -gate3_block;
Trap1_End = trap1_default;
Trap2_End = trap2_default;
Spray_Amp_Start = pos_5kv_default;
Spray_Amp_End = Spray_Amp_Start;
2
3
4
5
6
7
8
9
# inj_cool_q1(q2)
进样后离子冷却
Time = max(min_segment_time, inj_cool_time);
if ("q1" == scan_loc) {
if (inj_lmco_mz_max * inj_lmco_q < precursor_mz * trap_q) {
Q1_mz_End = inj_lmco_mz_max;
Q1_q_End = inj_lmco_q;
} else {
Q1_mz_End = precursor_mz;
Q1_q_End = trap_q;
}
} else {
Q1_mz_End = q1_mz_default;
Q1_q_End = q1_q_default;
if (inj_lmco_mz_max * inj_lmco_q < precursor_mz * trap_q) {
Q2_mz_End = inj_lmco_mz_max;
Q2_q_End = inj_lmco_q;
} else {
Q2_mz_End = precursor_mz;
Q2_q_End = trap_q;
}
}
SWIFT1 = switch_off;
SWIFT1_Loc = swift1_loc_default;
SWIFT1_Amp = swift1_amp_default;
SWIFT2 = switch_off;
SWIFT2_Loc = swift2_loc_default;
SWIFT2_Amp = swift2_amp_default;
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
# msae_delay_q1(q2)
控制MSAE时的气压
Time = max(min_segment_time, msae_delay);
DAPI = switch_off;
2
# msae_set_rf_q1(q2)
设置MSAE时的RF强度
Time = max(min_segment_time, cool_time);
Gate2_End = (polarity =="POS") ? msae_gate2 : -msae_gate2;
if ("q1" == target_ion_loc) {
Q1_mz_End = get_msae_precursor_mz(msn_index, precursor_index);
Q1_q_End = msae_q;
Q2_mz_Start = min(inj_lmco_mz_q2, inj_lmco_mz_max);
Q2_mz_End = Q2_mz_Start;
Q2_q_Start = inj_lmco_q;
Q2_q_End = Q2_q_Start;
} else {
Q2_mz_End = get_msae_precursor_mz(msn_index, precursor_index);
Q2_q_End = msae_q;
Q1_mz_Start = min(inj_lmco_mz_q1, inj_lmco_mz_max);
Q1_mz_End = Q1_mz_Start;
Q1_q_Start = inj_lmco_q;
Q1_q_End = Q1_q_Start;
}
Trap1_End = (polarity =="POS") ? msae_trap1 : -msae_trap1;
Trap2_End = (polarity =="POS") ? msae_trap2 : -msae_trap2;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# msae_q1(q2)
执行 MSAE
Time = max(min_segment_time, msae_time);
if ("q1" == target_ion_loc) {
AC1_FRE_Start = QToFreq::Instance().calculate(msae_q, rf1_freq);
AC1_FRE_End = AC1_FRE_Start;
AC1_AMP_Start = msae_amp;
AC1_AMP_End = AC1_AMP_Start;
} else {
AC2X_FRE_Start = QToFreq::Instance().calculate(msae_q, rf2_freq);
AC2X_FRE_End = AC2X_FRE_Start;
AC2X_AMP_Start = msae_amp;
AC2X_AMP_End = AC2X_AMP_Start;
}
2
3
4
5
6
7
8
9
10
11
12
13
# mase_end_q1(q2)
MSAE结束时恢复RF强度
Time = max(min_segment_time, cool_time);
Q1_mz_End = min(inj_lmco_mz_q1, inj_lmco_mz_max);
Q1_q_End = inj_lmco_q;
Q2_mz_End = min(inj_lmco_mz_q2, inj_lmco_mz_max);
Q2_q_End = inj_lmco_q;
AC1_FRE_Start = ac1_freq_default;
AC1_FRE_End = AC1_FRE_Start;
AC1_AMP_Start = ac1_amp_default;
AC1_AMP_End = AC1_AMP_Start;
AC2X_FRE_Start = ac2_freq_default;
AC2X_FRE_End = AC2X_FRE_Start;
AC2X_AMP_Start = ac2_amp_default;
AC2X_AMP_End = AC2X_AMP_Start;
Gate2_End = (polarity =="POS") ? gate2_block : -gate2_block;
Trap1_End = trap1_default;
Trap2_End = trap2_default;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# iso_delay_q1(q2)
控制isolation时的气压
Time = max(min_segment_time, iso_delay_msn);
# iso_set_rf_q1(q2)
设置isolation时的 RF 强度
Time = max(min_segment_time, cool_time);
if ("q1" == scan_loc) {
Q1_mz_End = get_precursor_mz(msn_index);
Q1_q_End = pre_iso_q;
} else {
Q2_mz_End = get_precursor_mz(msn_index);
Q2_q_End = pre_iso_q;
}
2
3
4
5
6
7
8
# pre_iso_q1(q2)
用于施加第一次 swift 信号执行 pre_iso
Time = max(min_segment_time, get_pre_iso_swift_time(msn_index));
if ("q1" == scan_loc) {
SWIFT1 = get_pre_iso_amp(msn_index) > 0 ? switch_on : switch_off;
SWIFT1_Loc = pre_iso_swift1_loc + msn_index * 2;
SWIFT1_Amp = get_pre_iso_amp(msn_index);
} else {
SWIFT2 = get_pre_iso_amp(msn_index) > 0 ? switch_on : switch_off;
SWIFT2_Loc = pre_iso_swift2_loc + msn_index * 2;
SWIFT2_Amp = get_pre_iso_amp(msn_index);
}
2
3
4
5
6
7
8
9
10
# iso_cool_q1(q2)
用于间隔第一次 iso 和 第二次 iso
Time = max(min_segment_time, cool_time);
if ("q1" == scan_loc) {
SWIFT1 = switch_off;
SWIFT1_Loc = swift1_loc_default;
SWIFT1_Amp = swift1_amp_default;
Q1_q_End = iso_q;
} else {
SWIFT2 = switch_off;
SWIFT2_Loc = swift2_loc_default;
SWIFT2_Amp = swift2_amp_default;
Q2_q_End = iso_q;
}
2
3
4
5
6
7
8
9
10
11
12
# iso_q1(q2)
用于施加第二次 swift 信号执行 iso
Time = max(min_segment_time, get_iso_swift_time(msn_index));
if ("q1" == scan_loc) {
SWIFT1 = get_iso_amp(msn_index) > 0 ? switch_on : switch_off;
SWIFT1_Loc = iso_swift1_loc + msn_index * 2;
SWIFT1_Amp = get_iso_amp(msn_index);
} else {
SWIFT2 = get_iso_amp(msn_index) > 0 ? switch_on : switch_off;
SWIFT2_Loc = iso_swift2_loc + msn_index * 2;
SWIFT2_Amp = get_iso_amp(msn_index);
}
2
3
4
5
6
7
8
9
10
# iso_end_q1(q2)
isolation结束时恢复 RF 强度
Time = max(min_segment_time, cool_time);
if ("q1" == scan_loc) {
if (inj_lmco_mz_max * inj_lmco_q < precursor_mz * trap_q) {
Q1_mz_End = inj_lmco_mz_max;
Q1_q_End = inj_lmco_q;
} else {
Q1_mz_End = precursor_mz;
Q1_q_End = trap_q;
}
SWIFT1 = switch_off;
SWIFT1_Loc = swift1_loc_default;
SWIFT1_Amp = swift1_amp_default;
} else {
if (inj_lmco_mz_max * inj_lmco_q < precursor_mz * trap_q) {
Q2_mz_End = inj_lmco_mz_max;
Q2_q_End = inj_lmco_q;
} else {
Q2_mz_End = precursor_mz;
Q2_q_End = trap_q;
}
SWIFT2 = switch_off;
SWIFT2_Loc = swift2_loc_default;
SWIFT2_Amp = swift2_amp_default;
}
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
# gas_q1(q2)
补气
Time = max(min_segment_time, gas_time);
if (hardware_config.gas_via_dapi == 1) {
DAPI = switch_on;
}
const auto& scan_loc = get_target_ion_loc();
if ("q1" == scan_loc) {
Q2_mz_Start = q2_mz_default;
Q2_mz_End = Q2_mz_Start;
Q2_q_Start = q2_q_default;
Q2_q_End = Q2_q_Start;
} else {
Q1_mz_Start = q1_mz_default;
Q1_mz_End = Q1_mz_Start;
Q1_q_Start = q1_q_default;
Q1_q_End = Q1_q_Start;
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# cid_delay_q1(q2)
MS2~MS5模式下控制 CID 时的气压
Time = max(min_segment_time, cid_delay_list[msn_index] - cid_time_extension_l);
DAPI = switch_off;
2
# cid_delay_calib_q1(q2)
MS2_Pressure_Calib 模式下控制 CID 时的气压
Time = max(min_segment_time, cid_delay);
DAPI = switch_off;
2
# cid_set_rf_q1(q2)
设置CID时的 RF 强度
Time = max(min_segment_time, cool_time);
if ("q1" == scan_loc) {
Q1_mz_End = get_precursor_mz(msn_index);
Q1_q_End = cid_q;
} else {
Q2_mz_End = get_precursor_mz(msn_index);
Q2_q_End = cid_q;
}
2
3
4
5
6
7
8
# cid_q1(q2)
执行CID
Time = max(min_segment_time, cid_time + cid_time_extension_l + cid_time_extension_r);
if ("q1" == scan_loc) {
if (get_cid_amp(msn_index) > 0) {
AC1_FRE_Start = QToFreq::Instance().calculate(cid_q, rf1_freq);
AC1_FRE_End = AC1_FRE_Start;
}
AC1_AMP_Start = get_cid_amp(msn_index);
AC1_AMP_End = AC1_AMP_Start;
} else {
if (get_cid_amp(msn_index) > 0) {
AC2X_FRE_Start = QToFreq::Instance().calculate(cid_q, rf2_freq);
AC2X_FRE_End = AC2X_FRE_Start;
}
AC2X_AMP_Start = get_cid_amp(msn_index);
AC2X_AMP_End = AC2X_AMP_Start;
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# cid_slim_q1(q2)
执行MS2_Pressure_Calib模式下的CID
Time = max(min_segment_time, cid_time);
if ("q1" == scan_loc) {
if (get_cid_amp(msn_index) > 0) {
AC1_FRE_Start = QToFreq::Instance().calculate(cid_q, rf1_freq);
AC1_FRE_End = AC1_FRE_Start;
}
AC1_AMP_Start = get_cid_amp(msn_index);
AC1_AMP_End = AC1_AMP_Start;
} else {
if (get_cid_amp(msn_index) > 0) {
AC2X_FRE_Start = QToFreq::Instance().calculate(cid_q, rf2_freq);
AC2X_FRE_End = AC2X_FRE_Start;
}
AC2X_AMP_Start = get_cid_amp(msn_index);
AC2X_AMP_End = AC2X_AMP_Start;
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# cid_end_q1(q2)
CID结束时恢复RF强度
Time = max(min_segment_time, cool_time);
if ("q1" == scan_loc) {
Q1_mz_End = min(inj_lmco_mz_q1, inj_lmco_mz_max);
Q1_q_End = inj_lmco_q;
AC1_FRE_Start = ac1_freq_default;
AC1_FRE_End = AC1_FRE_Start;
AC1_AMP_Start = ac1_amp_default;
AC1_AMP_End = AC1_AMP_Start;
} else {
Q2_mz_End = min(inj_lmco_mz_q2, inj_lmco_mz_max);
Q2_q_End = inj_lmco_q;
AC2X_FRE_Start = ac2_freq_default;
AC2X_FRE_End = AC2X_FRE_Start;
AC2X_AMP_Start = ac2_amp_default;
AC2X_AMP_End = AC2X_AMP_Start;
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# scan_delay_q1(q2)
控制 scan 时的气压
Time = max(min_segment_time, scan_delay);
if ("q1" == scan_loc) {
Q2_mz_Start = q2_mz_default;
Q2_mz_End = Q2_mz_Start;
Q2_q_Start = q2_q_default;
Q2_q_End = Q2_q_Start;
}
2
3
4
5
6
7
# scan_kv_on_q1(q2)
开启检测器高压电源,启动气压和高压保护
Time = max(min_segment_time, scan_kv_on_time);
Dynode_Amp_Start = scan_dynode;
Dynode_Amp_End = Dynode_Amp_Start;
Detector_Amp_Start = scan_detector;
Detector_Amp_End = Detector_Amp_Start;
2
3
4
5
# scan_cem_on_q1(q2)
开启检测器高压光耦开关
Time = max(min_segment_time, scan_cem_on_time);
Detector = switch_on;
if ("q1" == scan_loc) {
Q1_mz_End = scan_mass_start;
Q1_q_End = 0.908;
} else {
Q2_mz_End = scan_mass_start;
Q2_q_End = 0.908;
}
Data = round(adc_freq / scan_speed / pt_per_th / 1000);
2
3
4
5
6
7
8
9
10
11
12
# scan_set_rf_q1(q2)
设置scan时的 起始RF强度
Time = max(min_segment_time, cool_time);
if ("q1" == scan_loc) {
Q1_mz_End = scan_mass_start;
Q1_q_End = scan_q;
Q2_mz_Start = min(inj_lmco_mz_q2, inj_lmco_mz_max);
Q2_mz_End = Q2_mz_Start;
Q2_q_Start = inj_lmco_q;
Q2_q_End = Q2_q_Start;
if (1 == scan_ac_secular_freq_n) {
AC1_FRE_Start = rf1_freq - QToFreq::Instance().calculate(scan_q, rf1_freq);
AC1_FRE_End = AC1_FRE_Start;
} else {
AC1_FRE_Start = QToFreq::Instance().calculate(scan_q, rf1_freq);
AC1_FRE_End = AC1_FRE_Start;
}
} else {
Q2_mz_End = scan_mass_start;
Q2_q_End = scan_q;
if (1 == scan_ac_secular_freq_n) {
AC2X_FRE_Start = rf2_freq - QToFreq::Instance().calculate(scan_q, rf2_freq);
AC2X_FRE_End = AC2X_FRE_Start;
} else {
AC2X_FRE_Start = QToFreq::Instance().calculate(scan_q, rf2_freq);
AC2X_FRE_End = AC2X_FRE_Start;
}
}
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
# scan_q1(q2)
执行扫描,阱1(阱2)scan
Time = max(min_segment_time, (scan_mass_end - scan_mass_start) / scan_speed);
if ("q1" == scan_loc) {
Q1_mz_End = scan_mass_end;
AC1_AMP_Start = scan_mass_start * scan_ac1_amp.coefs.c1 + scan_ac1_amp.coefs.c0;
AC1_AMP_End = scan_mass_end * scan_ac1_amp.coefs.c1 + scan_ac1_amp.coefs.c0;
Gate2_Start = (polarity == "POS") ? scan_gate2 : -scan_gate2;
Gate2_End = Gate2_Start;
Gate3_Start = gate3_default;
Gate3_End = Gate3_Start;
Trap1_Start = (polarity == "POS") ? scan_mass_start * scan_trap1.coefs.c1 + scan_trap1.coefs.c0 : -scan_mass_start * scan_trap1.coefs.c1 - scan_trap1.coefs.c0;
Trap1_End = (polarity == "POS") ? scan_mass_end * scan_trap1.coefs.c1 + scan_trap1.coefs.c0 : -scan_mass_end * scan_trap1.coefs.c1 - scan_trap1.coefs.c0;
} else {
Q2_mz_End = scan_mass_end;
AC2X_AMP_Start = scan_mass_start * scan_ac2_amp.coefs.c1 + scan_ac2_amp.coefs.c0;
AC2X_AMP_End = scan_mass_end * scan_ac2_amp.coefs.c1 + scan_ac2_amp.coefs.c0;
Gate3_Start = (polarity == "POS") ? scan_gate3 : -scan_gate3;
Gate3_End = Gate3_Start;
Trap2_Start = (polarity == "POS") ? scan_mass_start * scan_trap2.coefs.c1 + scan_trap2.coefs.c0 : -scan_mass_start * scan_trap2.coefs.c1 - scan_trap2.coefs.c0;
Trap2_End = (polarity == "POS") ? scan_mass_end * scan_trap2.coefs.c1 + scan_trap2.coefs.c0 : -scan_mass_end * scan_trap2.coefs.c1 - scan_trap2.coefs.c0;
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# reset
重置所有信号
# 5. 进样量保护
以下进样量保护代码需要在参数进入 Scan Function Generator(SFG)之前执行,即修订 analysis 传入的 inj_size 参数。
def adjust_inj_size(inj_size, inj_post_sum_time, inj_DAPI_sum_time, min_segment_time):
# protect the minimum segment time
# handle the DRE and other inj_size tuning problem
# 59.78 - 59.89
if inj_post_sum_time - min_segment_time < inj_size and inj_size < inj_post_sum_time - min_segment_time / 2:
inj_size = inj_post_sum_time - min_segment_time
# 59.89 - 60.11
elif inj_post_sum_time - min_segment_time / 2 <= inj_size and inj_size <= inj_post_sum_time + min_segment_time / 2:
inj_size = inj_post_sum_time
# 60.11 - 60.22
elif inj_post_sum_time + min_segment_time / 2 < inj_size and inj_size < inj_post_sum_time + min_segment_time:
inj_size = inj_post_sum_time + min_segment_time
# 79.78 - 79.89
elif inj_post_sum_time + inj_DAPI_sum_time - min_segment_time < inj_size and inj_size < inj_post_sum_time + inj_DAPI_sum_time - min_segment_time / 2:
inj_size = inj_post_sum_time + inj_DAPI_sum_time - min_segment_time
# 79.89 - 80
elif inj_size >= inj_post_sum_time + inj_DAPI_sum_time - min_segment_time / 2:
inj_size = inj_post_sum_time + inj_DAPI_sum_time
return inj_size
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# 6. Empty处理方法
下列信号若为Empty,则按同列的指定信号处理
Q1_mz_end = Q1_mz_start
Q1_q_end = Q1_q_start
Q2_mz_end = Q2_mz_start
Q2_q_end = Q2_q_start
AC1_freq_end = AC1_freq_start
AC1_amp_end = AC1_amp_start
AC2_freq_end = AC2_freq_start
AC2_amp_end = AC2_amp_start
Gate1_End = Gate1_Start
Gate2_End = Gate2_Start
Gate3_End = Gate3_Start
Trap1_end = Trap1_start
Trap2_end = Trap2_start
Spray_amp_End = Spray_amp_Start
Dynode_amp_End = Dynode_amp_Start
Detector_amp_End = Detector_amp_Start
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
下列信号若为Empty,则按前列的同名End信号处理
Q1_mz_start
Q1_q_start
Q2_mz_start
Q2_q_start
AC1_freq_start
AC1_amp_start
AC2_freq_start
AC2_amp_start
Gate1_Start
Gate2_Start
Gate3_Start
Trap1_start
Trap2_start
Spray_amp_Start
Dynode_amp_Start
Detector_amp_Start
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
其余所有信号若为Empty,则值等于前一个segment的同名信号
# 7. 数据长度计算
spectrum_size = adc_freq / data * time / 1000