:MsBackendMassbank
作者: rformassspectra Package Maintainer [cre], Michael Witting [aut] (https://orcid.org/0000-0002-1462-4426),赖纳[aut] (https://orcid.org/0000-0002-6977-7147), Michael Stravs [ctb]
编译:星期三1月18日17:07:25 2023

1简介

光谱包为质谱(MS)数据的处理提供了一个中央基础设施。该软件包支持不同的可互换使用后端从各种来源(如mzML文件)导入MS数据。的MsBackendMassbank包允许导入和处理MS/MS谱数据Massbank.的用法MsBackendMassbank包包括MassBank数据到MS数据分析工作流程与光谱R包装。

2安装

安装包可以与BiocManager包中。安装BiocManager使用install.packages(“BiocManager”)在那之后,BiocManager::安装(“MsBackendMassbank”)安装此包。

3.从MassBank文件导入MS/MS数据

MassBank文件(由Massbank github仓库)通常每个文件存储一个库频谱,通常是集中的,并且是MS级别2。在下面的简短示例中,我们从每个文件包含多个库光谱的文件中加载数据,或者从每个文件中加载数据,每个文件都包含这个包提供的单个光谱。下面我们首先加载所有必需的包,并定义到Massbank文件的路径。

库(谱)库(MsBackendMassbank) fls <- dir(系统。file("extdata", package = "MsBackendMassbank"), full.names = TRUE, pattern = "txt$"
[1] "/tmp/Rtmp8zYDoh/Rinst4697d2552f636/MsBackendMassbank/extdata/BSU00001.txt" ## [2] "/tmp/Rtmp8zYDoh/Rinst4697d2552f636/MsBackendMassbank/extdata/RP000501.txt" ## [3] "/tmp/Rtmp8zYDoh/Rinst4697d2552f636/MsBackendMassbank/extdata/RP000502.txt" ## [5] "/tmp/Rtmp8zYDoh/Rinst4697d2552f636/MsBackendMassbank/extdata/RP000503.txt" ## [5] "/tmp/Rtmp8zYDoh/Rinst4697d2552f636/MsBackendMassbank/extdata/RP000503.txt"/tmp/Rtmp8zYDoh/Rinst4697d2552f636/MsBackendMassbank/extdata/RP000511.txt" ## [7] "/tmp/Rtmp8zYDoh/Rinst4697d2552f636/MsBackendMassbank/extdata/RP000512.txt" ## [8] "/tmp/Rtmp8zYDoh/Rinst4697d2552f636/MsBackendMassbank/extdata/RP000513.txt"

MS数据可以通过光谱对象。下面我们创建一个光谱用这些MGF文件中的数据。为此,我们提供文件名并指定使用MsBackendMassbank ()后端为启用数据导入。首先,我们从一个具有多个光谱库的文件中导入。

sps <- Spectra(fls[1], source = MsBackendMassbank(), backend = MsBackendDataFrame())

有了这些,我们现在可以完全访问我们下面列出的所有导入的光谱变量。

spectraVariables (sps)
[1]“msLevel”“rtime”##[3]“tionnum”“scanIndex”##[7]“dataStorage”“dataOrigin”##[9]“polarity”“precScanNum”##[11]“precursorMz”“precursorIntensity”##[13]“precursorCharge”“collisionEnergy”##[15]“isolationWindowLowerMz”“isolationWindowTargetMz”##[17]“isolationWindowUpperMz”“acquistionNum”##[19]“接入”“name”##[21]“smiles”“exactmass”##[23]“formula”“inchi”##[25]“cas”“inchikey”##[27]“add”“splash”## [29]“标题”

对于多个文件也是如此,每个文件都包含一个库频谱。

sps <- Spectra(fls[-1], source = MsBackendMassbank(), backend = MsBackendDataFrame()) spectravvariables (sps)
[1]“msLevel”“rtime”##[3]“tionnum”“scanIndex”##[7]“dataStorage”“dataOrigin”##[9]“polarity”“precScanNum”##[11]“precursorMz”“precursorIntensity”##[13]“precursorCharge”“collisionEnergy”##[15]“isolationWindowLowerMz”“isolationWindowTargetMz”##[17]“isolationWindowUpperMz”“acquistionNum”##[19]“接入”“name”##[21]“smiles”“exactmass”##[23]“formula”“inchi”##[25]“cas”“inchikey”##[27]“add”“splash”## [29]“标题”

默认情况下,完整的元数据与光谱一起读取。这可以增加加载时间。可以跳过不同的元数据块,从而减少了导入时间。这需要定义一个附加项data.frame指明要读什么。

# create数据帧,表示需要读取元数据块。metaDataBlocks <- data.frame(metadata = c("ac", "ch", "sp", "ms", "record", "pk", "comment"), read = rep(TRUE, 7)) sps <- Spectra(fls[-1], source = MsBackendMassbank(), backend = MsBackendDataFrame(), metaBlock = metaDataBlocks) #所有可能在MassBank中的spectraVariables都是read spectraVariables(sps)
[1]“msLevel”“rtime”##[3]“tionnum”“scanIndex”##[7]“dataStorage”“dataOrigin”##[9]“polarity”“precScanNum”##[11]“precursorMz”“precursorIntensity”##[13]“precursorCharge”“collisionEnergy”##[15]“isolationWindowLowerMz”“isolationWindowTargetMz”##[17]“isolationWindowUpperMz”“acquistionNum”##[19]“接入”“name”##[21]“smiles”“exactmass”##[23]“formula”“inchi”##[25]“cas”“inchikey”##[27]“add”“splash”## [29]“标题”、“仪器”# #[31]“instrument_type”“ms_ms_type”# #[33]“ms_cap_voltage”“ms_col_gas”# #[35]“ms_desolv_gas_flow”“ms_desolv_temp”# #[37]“ms_frag_mode”“ms_ionization”# #[39]“ms_ionization_energy”“ms_laser”# #[41]“ms_matrix”“ms_mass_accuracy”# #[43]“ms_mass_range”“ms_reagent_gas”# #[45]“ms_resolution”“ms_scan_setting”# #[47]“ms_source_temp”“chrom_carrier_gas”# #[49]“chrom_column”“chrom_column_temp”# #[51]“chrom_column_temp_gradient”“chrom_flow_gradient”# #[53]“chrom_flow_rate”“chrom_inj_temp”# #[55]“chrom_inj_temp_gradient”“chrom_rti_kovats”# #[57]“chrom_rti_lee”“chrom_rti_naps”# #[59]“chrom_rti_uoa”“chrom_rti_uoa_pred”# #[61]“chrom_rt”“chrom_rt_uoa_pred”# #[63]“chrom_solvent”“chrom_transfer_temp”# #[65]“ims_instrument_type”“ims_drift_gas”# #[67]“ims_drift_time”“ims_ccs”# #[69]“general_conc”“compound_class”# #[71]“link_cayman”“link_chebi”# #[73]“link_chembl”“link_chempdb”# #[75]“link_chemspider”“link_comptox”# #[77] "link_hmdb" "link_kappaview" ## [79] "link_kegg" "link_knapsack" ## [81] "link_lipidbank" "link_lipidmaps" ## [83] "link_nikkaji" "link_pubchem" ## [85] "link_zinc" "scientific_name" ## [87] "lineage" "link" ## [89] "sample" "focus_base_peak" ## [91] "focus_derivative_form" "focus_derivative_mass" ## [93] "focus_derivative_type" "focus_ion_type" ## [95] "data_processing_comment" "data_processing_deprofile" ## [97] "data_processing_find" "data_processing_reanalyze" ## [99] "data_processing_recalibrate" "data_processing_whole" ## [101] "deprecated" "date" ## [103] "authors" "license" ## [105] "copyright" "publication" ## [107] "project" "pknum" ## [109] "comment"
#所有NA列都可以删除spectraVariables(dropNaSpectraVariables(sps))
[1]“msLevel”“rtime”##[3]“tionnum”“scanIndex”##[7]“dataStorage”“dataOrigin”##[9]“polarity”“precScanNum”##[11]“precursorMz”“precursorIntensity”##[13]“precursorCharge”“collisionEnergy”##[15]“isolationWindowLowerMz”“isolationWindowTargetMz”##[17]“isolationWindowUpperMz”“acquistionNum”##[19]“接入”“name”##[21]“smiles”“exactmass”##[23]“formula”“inchi”##[25]“cas”“inchikey”##[27]“add”“splash”## [29]“title”“instrument”##[31]“instrument_type”“ms_ms_type”## b[33]“ms_frag_mode”“ms_ionization”## b[35]“chrom_column”“chrom_flow_gradient”##[37]“chrom_flow_rate”“chrom_rt”##[39]“chrom_溶剂”“compound_class”##[41]“link_chebi”“link_chemspider”##[43]“link_comptox”“link_kegg”##[45]“link_pubchem”“focus_base_peak”##[47]“data_processing_reanalyze”“data_processing_whole”##[49]“date”“作者”##[51]“版权”##[53]“pknum”“评论”

除了默认的光谱变量,如msLevelrtimeprecursorMz,我们也有额外的光谱变量,如标题MGF文件中的每个频谱。

sps rtime美元
## rtime rtime rtime rtime rtime rtime 142.14 142.14 142.14 142.14 142.14 142.14 143.94 143.94 143.94 143.94
sps美元标题
## ##”l -色氨酸;LC-ESI-QTOF;一份;CE: 10;R =;[M+H]+“## ##”l -色氨酸;LC-ESI-QTOF;一份;CE: 20;R =; [M+H]+" ## ## "L-Tryptophan; LC-ESI-QTOF; MS2; CE: 40; R=; [M+H]+" ## title ## "L-Tryptophan; LC-ESI-QTOF; MS2; CE: 10; R=; [M+H]+" ## title ## "L-Tryptophan; LC-ESI-QTOF; MS2; CE: 20; R=; [M+H]+" ## title ## "L-Tryptophan; LC-ESI-QTOF; MS2; CE: 40; R=; [M+H]+" ## title ## "L-Tryptophan; LC-ESI-QTOF; MS2; CE: 10; R=; [M-H]-" ## title ## "L-Tryptophan; LC-ESI-QTOF; MS2; CE: 20; R=; [M-H]-" ## title ## "L-Tryptophan; LC-ESI-QTOF; MS2; CE: 40; R=; [M-H]-"

此外,我们还可以获得各光谱的m/z值和强度值。

mz (sps)
##长度为9的数字列表##[[""]]74.0233 132.0807 144.0805 146.0598…170.0597 188.0699 205.0965 ##[[""]] 74.0232 77.0381 86.0027 91.0539…160.0947 170.0596 171.0625 188.07 ##[[""]] 53.0019 53.0383 63.0225 65.0381…158.0817 159.0921 160.0755 170.06 ## [["mz"]] 74.0233 132.0807 144.0805 146.0598…170.0597 188.0699 205.0965 ## [["mz"]] 74.0232 77.0381 86.0027 91.0539…160.0947 170.0596 171.0625 188.07 ## [["mz"]] 53.0019 53.0383 63.0225 65.0381…158.0817 159.0921 160.0755 170.06 ## [["mz"]] 72.0095 116.0517 117.0554 159.0935 186.0558 203.0826 ## [["mz"]] 72.0094 74.0253 116.0511 117.0539…162.0307 186.0548 203.0818 ## [["mz"]] 74.0253 116.0508
强度(sps)
长度为9的数字列表##[[""]]646 980 2114 20052 1248 7628 2036 494048 75708 ##[[""]]10186 142 142 750 138 490 126…14266 1478 1600 16504 1446 109762 ##[[""]] 324 184 138 3770 500 800 7214 3238…2802 206 898 162 166 814 250 1840 ##[[“强度”]]646 980 2114 20052 1248 7628 2036 494048 75708 ##[[“强度”]]10186 142 142 750 138 490…14266 1478 1600 16504 1446 109762 ##[["强度"]]324 184 138 3770 500 800 7214…206 898 162 166 814 250 1840 ##[[“强度”]]150 200 32 232 80 12162 ##[[“强度”]]460 3630 658 74 28 190 44 142 50 52 634 ##[[“强度”]]282 424

当导入大量mgf文件时,设置不间断=真当遇到有问题的MGF文件时,防止调用停止。

sps <- Spectra(fls, source = MsBackendMassbank(), nonStop = TRUE)

4访问MassBank MySQL数据库

从单个文本文件导入MassBank数据的另一种方法(可能需要相当多的时间)是直接访问MassBank MySQL数据库中的MS/MS数据。出于演示目的,我们在这里使用了MassBank数据的一个小子集,它存储在这个包中的SQLite数据库中。

4.1的必备条件

目前还不可能直接连接到主MassBank生产MySQL服务器,因此,使用MsBackendMassbankSql后端需要在本地安装数据库。每个MassBank版本的MySQL数据库转储可以从这里下载在这里.这个转储可以导入到本地MySQL服务器。

4.2直接访问MassBank数据库

使用MsBackendMassbankSql它需要首先连接到MassBank数据库。下面我们将展示可以用于此目的的R代码-但实际设置(用户名、密码、数据库名或主机)将取决于安装MassBank数据库的位置和方式。

library(RMariaDB) con <- dbConnect(MariaDB(), host = "localhost", user = "massbank", dbname = "massbank")

为了说明这个后端的一般功能,我们使用了MassBank (release 2020.10)的一个小子集,它是作为这个包中的一个小SQLite数据库提供的。下面我们连接到这个数据库。

library(RSQLite) con <- dbConnect(SQLite(),系统。文件(“sql”、“minimassbank。sqlite", package = "MsBackendMassbank"))

我们下一个初始化MsBackendMassbankSql后台,它支持直接访问MassBank在SQL数据库和创建一个光谱对象。

mb <- spectrum (con, source = MsBackendMassbankSql()) mb
## MSn数据(谱)与70个谱在MsBackendMassbankSql后端:## msLevel precursorMz极性## <整数> <数字> <整数> ## 1 2 506 0 ## 2 NA NA 1 ## 3 NA NA 0 ## 4 NA NA 1 ## 5 NA NA 0 ## ... ... ... ...## 2 185.028 0 ## 67 2 455.290 1 ## 68 2 253.051 0 ## 69 2 358.238 1 ## 70 2 256.170 1 ##…42个变量/列。##使用“spectraVariables”列出所有的变量。

我们现在可以用这个光谱对象访问和使用MassBank数据进行分析。注意光谱对象本身不包含来自MassBank的任何数据。任何数据都将根据需要从数据库后端获取。

为了获得每个频谱(所谓的光谱变量)我们可以使用spectraVariables函数。

spectraVariables (mb)
[13]“precursorCharge”“collisionEnergy”#[15]“isolationWindowLowerMz”“isolationWindowUpperMz”“spectrum_id”#[19]“spectrum_name”“date”#[21]“authors”“license”#[23]“copyright”“publication”#[25]“splash”“compound_id”#[27]“add”##[5]“dataStorage”“dataOrigin”##[9]“polarity”“precScanNum”##[11]“precursorIntensity”##[13]“precursorCharge”“collisionEnergy”##[15]“isolationWindowUpperMz”“isolationWindowTargetMz”## b[17]“isolationWindowUpperMz”“spectrum_id”“电离”##[29]“ionization_voltage”“fragmentation_mode”##[31]“collision_energy_text”“instrument”##[33]“instrument_type”“formula”##[35]“exactmass”“smiles”##[37]“inchi”“inchikey”##[39]“cas”“pubchem”##[41]“synonym”“precursor_mz_text”##[43]“compound_name”

通过MsBackendMassbankSql因此,我们可以访问光谱信息及其注释。

我们可以访问核心谱变量,如MS水平对应函数msLevel

头(msLevel (mb))
##[1] 2呐呐呐呐2

光谱变量也可以访问和变量名。因此,MS级别也可以访问msLevel美元:

头(mb msLevel美元)
##[1] 2呐呐呐呐2

除了光谱变量,我们还可以得到实际的峰值(即m/z和强度值)mz而且强度功能:

mz (mb)
##数字列表长度为70 ##[[1]]146.760803 158.863541 174.988785…470.057434 487.989319 585.88446 ##[[2]] 22.99 23.07 23.19 38.98 53.15 60.08…391.18 413.22 414.22 429.16 495.2 ##[[3]] 108.099566 152.005378 153.01824…341.031964 409.06729 499.103447 ##[[4]] 137.0227 138.025605 139.034602…304.271886 316.303106 352.234228 ##[[5]] 112.977759 205.053323 208.041128…449.137152 671.1778 673.200866 ##[[6]] 78.893929 183.011719 193.957916…328.091949 408.010193 426.021942 ##[[7]] 167.03389 168.040758 333.079965…357.073039 365.040698 373.073473 ##[[8]] 195.09167 196.095033 ##[[9]] 108.096149 152.004656 153.01824…359.997563 409.065314 491.043775 ##[[10]] 1278.12 1279.11 1279.18 1306.21…2064.29 2091.32 2092.3 2136.33 ##… ## <60 more elements>

请注意,并非数据库中的所有光谱都是使用相同的仪器生成的。下面我们列出了每种仪器的光谱数。

表(mb instrument_type美元)
## ## lc-esi-itft lc-esi-qft maldi-tof ## 3 50 17

接下来,我们将数据子集化为电喷雾电离(ESI)产生的离子的所有光谱。

mb <- mb[mb$电离== "ESI"]长度(mb)
## [1] 50

作为一个简单的例子来说明光谱我们接下来计算一个光谱与数据库中所有其他光谱之间的光谱相似性。为此,我们使用compareSpectra将归一化点积作为相似函数,并允许匹配峰值之间的m/z差为20ppm

library(MsCoreUtils) sims <- compareSpectra(mb[11], mb[-11], FUN = ndotproduct, ppm = 40) max(sims)
0.7507467

接下来,我们为两个最佳匹配光谱绘制镜像图。

plotSpectraMirror(mb[11], mb[(where .max(sims) + 1)], ppm = 40)

我们还可以检索复合这两个最佳匹配光谱的信息。注意这一点化合物函数只适用于MsBackendMassbankSql后端,因为它从数据库的复合注释表检索相应的信息。

Mb_match <- mb[c(11, which.max(sims) + 1)] compound (Mb_match)
##数据帧2行10列## compound_id公式exactmass smiles ## <整数> <字符> <数字> <字符> ## 1 31 C12H10O2 186.068 COC1=C(C=O)C2=CC=CC=..## 2 c = c (c = o) c2 = cc =..## inchi inchikey cas pubchem ## <字符> <字符> <字符> <字符> ## 1 inchi =1S/C12H10O2/c1..YIQGLTKAOHRZOL-UHFFF . .1/12/5392 CID:79352 ## 2 InChI=1S/C12H10O2/c1..MVXMNHYVCLMLDD-UHFFF . .15971-29-6 CID:85217 ##同义词名称## <字符列表> <字符> ## 1 2-甲氧基-1-萘..,2-甲氧基萘..2-Methoxy-1-naphthal . .4-甲氧基-1-萘..,4-甲氧基萘..4-Methoxy-1-Naphthal . .

5会话信息

sessionInfo ()
## R正在开发中(不稳定)(2023-01-10 r83596) ##平台:x86_64-pc-linux-gnu(64位)##运行在Ubuntu 22.04.1 LTS ## ##矩阵产品:默认## BLAS: /home/biocbuild/bbs-3.17-bioc/R/lib/libRblas。so ## LAPACK: /usr/lib/x86_64-linux-gnu/ LAPACK /liblapack.so.3.10.0 ## ## locale: ## [1] LC_CTYPE=en_US。UTF-8 LC_NUMERIC= c# # [3] LC_TIME=en_GB LC_COLLATE= c# # [5] LC_MONETARY=en_US。utf - 8 LC_MESSAGES = en_US。UTF-8 ## [7] LC_PAPER=en_US。UTF-8 LC_NAME= c# # [9] LC_ADDRESS=C lc_phone = c# # [11] LC_MEASUREMENT=en_US。UTF-8 LC_IDENTIFICATION=C ## ## time zone: America/New_York ## tzcode source: system (glibc) ## ##附加的基础包:## [1]stats4 stats graphics grDevices utils datasets methods ##[8]基础## ##其他附加包:## [1]MsCoreUtils_1.11.3 RSQLite_2.2.20 MsBackendMassbank_1.7.2 ## [4] Spectra_1.9.6 ProtGenerics_1.31.0 BiocParallel_1.33.9 ## [7] S4Vectors_0.37.3 BiocGenerics_0.45.0 BiocStyle_2.27.0 ## ##通过命名空间加载(且未附加):## [13] IRanges_2.33.0 yaml_2.3.6 fastmap_1.1.0 ## [13] R6_2.5.1 knitr_1. 4.1 MASS_7.3-58.1 ## [13] rlang_1.0.6 cachem_1.0.6 stringi_1.7.12 ## [25] xfun_0.36 fs_1.5.2 sass_0.4.4 ## [28] bit64_4.0.5 memoise_2.0.1 cli_3.6.0 ## [31] magrittr_2.0.3 digest_0.31 ## [7] blob_1.2.3 stringgr_1 .3.0 cluster_1.4 jquerylib_0.1.4 ## [13] IRanges_2.33.0 yaml_2.3.6 fastmap_1.1.0 ## [13] R6_2.5.1 knitr_1. 1.0 ## b[19] bookdown_0.32 DBI_1.1.3 bslib_0.4.2 ## [25] xfun_0.36 fs_1.5.2 sass_0.4.4 ## [28] bit64_4.0.5 memoise_2.0.1 cli_3.6.0[37] glue_1.6.2 codetools_0.2-18 rmarkdown_2.19 [40] pkgconfig_2.0.3 tools_4.3.0 htmltools_0.5.4