Repository 'isolib'
hg clone https://toolshed.g2.bx.psu.edu/repos/recetox/isolib

Changeset 5:964b4559eb1b (2025-05-15)
Previous changeset 4:2b1118bce0b1 (2024-11-01) Next changeset 6:f0fe957df1cc (2025-06-12)
Commit message:
planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/isolib commit 0765a69d2180d0cfda663cc1b4585a8935142169
modified:
isolib.R
isolib.xml
added:
test-data/test2.msp
test-data/test3.msp
test-data/test4.msp
test-data/test5.tabular
test-data/test6.tabular
test-data/test7.msp
removed:
test-data/test2.tabular
test-data/test3.tabular
b
diff -r 2b1118bce0b1 -r 964b4559eb1b isolib.R
--- a/isolib.R Fri Nov 01 08:45:59 2024 +0000
+++ b/isolib.R Thu May 15 16:42:56 2025 +0000
[
@@ -6,6 +6,30 @@
 library(tidyselect)
 
 
+isotopes <- data.frame(
+    element = character(),
+    abundance = numeric(),
+    isotope = character()
+)
+element <- character()
+abundance <- numeric()
+adducts <- data.frame(
+    Name = character(),
+    Mult = numeric(),
+    Formula_add = character(),
+    Formula_ded = character(),
+    Charge = numeric(),
+    Ion_mode = character(),
+    Mass = numeric()
+)
+mz <- numeric()
+peaks <- numeric()
+isos <- character()
+retention_time <- numeric()
+full_formula <- character()
+name <- character()
+
+
 parse_args <- function() {
     args <- commandArgs(trailingOnly = TRUE)
 
@@ -14,6 +38,19 @@
         col_types = "ccd",
         col_select = all_of(c("name", "formula")) | any_of("rt")
     )
+    # Handle missing or empty rel_to argument
+    rel_to_value <- if (length(args) >= 8 && args[8] != "") {
+        if (args[8] == "none") 0 else as.numeric(args[8])
+    } else {
+        0 # Default value is 0
+    }
+
+    if (!rel_to_value %in% c(0, 1, 2, 3, 4)) {
+        stop(
+            "Invalid value for rel_to. Expected 'none' (0),",
+            " or a numeric value between 0 and 4."
+        )
+    }
 
     parsed <- list(
         compound_table = compound_table,
@@ -22,15 +59,17 @@
         append_adducts = args[4],
         append_isotopes = args[5],
         out_format = args[6],
-        outfile = args[7]
+        outfile = args[7],
+        rel_to = rel_to_value
     )
-    return(parsed)
+    parsed
 }
 
 generate_isotope_spectra <- function(compound_table,
                                      adducts_to_use,
                                      append_adducts,
-                                     threshold) {
+                                     threshold,
+                                     rel_to) {
     data(isotopes)
     data(adducts)
 
@@ -39,17 +78,23 @@
         dplyr::slice_max(abundance, n = 1) |>
         dplyr::filter(!stringr::str_detect(element, "\\[|\\]"))
 
-    chemforms <- check_chemform(isotopes, compound_table$formula)[, 2]
+    chemforms <- enviPat::check_chemform(isotopes, compound_table$formula)[, 2]
     spectra <- data.frame()
 
     for (current in adducts_to_use) {
         adduct <- adducts[adducts$Name == current, ]
-        multiplied_chemforms <- multiform(chemforms, adduct$Mult)
+        multiplied_chemforms <- enviPat::multiform(chemforms, adduct$Mult)
 
         if (adduct$Ion_mode == "negative") {
-            merged_chemforms <- subform(multiplied_chemforms, adduct$Formula_ded)
+            merged_chemforms <- enviPat::subform(
+                multiplied_chemforms,
+                adduct$Formula_ded
+            )
         } else {
-            merged_chemforms <- mergeform(multiplied_chemforms, adduct$Formula_add)
+            merged_chemforms <- enviPat::mergeform(
+                multiplied_chemforms,
+                adduct$Formula_add
+            )
         }
 
         charge_string <- paste0(
@@ -57,7 +102,8 @@
             if (abs(adduct$Charge) > 1) abs(adduct$Charge) else ""
         )
         adduct_string <- paste0("[", adduct$Name, "]", charge_string)
-        precursor_mz <- calculateMass(multiplied_chemforms) + adduct$Mass
+        precursor_mass <- MetaboCoreUtils::calculateMass(multiplied_chemforms)
+        precursor_mz <- precursor_mass + adduct$Mass
 
         if (append_adducts == TRUE) {
             names <- paste(
@@ -88,6 +134,7 @@
             chemforms = merged_chemforms,
             charge = adduct$Charge,
             threshold = threshold,
+            rel_to = rel_to,
         )
 
         mzs <- list()
@@ -126,12 +173,12 @@
         spectra_df$isotopes <- isos
         spectra <- rbind(spectra, spectra_df)
     }
-    return(spectra)
+    spectra
 }
 
 write_to_msp <- function(spectra, file) {
-    sps <- Spectra(dplyr::select(spectra, -isotopes))
-    export(sps, MsBackendMsp(), file = file)
+    sps <- Spectra::Spectra(dplyr::select(spectra, -isotopes))
+    Spectra::export(sps, MsBackendMsp::MsBackendMsp(), file = file)
 }
 
 write_to_table <- function(spectra, file, append_isotopes) {
@@ -166,7 +213,8 @@
         args$compound_table,
         args$adducts_to_use,
         args$append_adducts,
-        args$threshold
+        args$threshold,
+        args$rel_to
     )
 
     if (args$out_format == "msp") {
b
diff -r 2b1118bce0b1 -r 964b4559eb1b isolib.xml
--- a/isolib.xml Fri Nov 01 08:45:59 2024 +0000
+++ b/isolib.xml Thu May 15 16:42:56 2025 +0000
[
b'@@ -1,4 +1,4 @@\n-<tool id="isolib" name="isolib" version="2.6+galaxy0" profile="21.09">\n+<tool id="isolib" name="isolib" version="2.6+galaxy1" profile="21.09">\n     <description>create an isotopic pattern library for given compounds and adducts based on enviPat</description>\n     <creator>\n         <person\n@@ -37,6 +37,7 @@\n             #end if\n             \'${formatting.out_format}\'\n             \'${isotope_library}\'\n+            \'${rel_to.value}\'\n     ]]></command>\n     <inputs>\n         <param name="input_file" type="data" format="tabular" label="Table with input compounds"/>\n@@ -58,7 +59,36 @@\n                 </param>\n             </when>\n         </conditional>\n-        <param name="threshold" type="float" min="0" max="100" value="1" label="Threshold" help="Probability threshold to use as cutoff for isotopic pattern distribution - this can be used to remove low abundant peaks and improve computation performance." />\n+       <conditional name="rel_to">\n+            <param name="value" type="select" label="Intensity normalization mode">\n+                <option value="0" selected="true">0 - Relative to most intense peak</option>\n+                <option value="1">1 - Relative to monoisotopic peak</option>\n+                <option value="2">2 - No normalization (absolute probabilities)</option>\n+                <option value="3">3 - Prune by most intense peak (%), output absolute</option>\n+                <option value="4">4 - Prune by mono peak (%), output absolute</option>\n+            </param>\n+\n+            <when value="0">\n+                <param name="threshold" type="float" label="Threshold (% of base peak)" value="1.0" min="0" max="100"\n+                    help="Remove peaks below this % of the most intense peak"/>\n+            </when>\n+            <when value="1">\n+                <param name="threshold" type="float" label="Threshold (% of monoisotopic peak)" value="1.0" min="0" max="100"\n+                    help="Remove peaks below this % of the monoisotopic peak"/>\n+            </when>\n+            <when value="2">\n+                <param name="threshold" type="float" label="Threshold (absolute probability)" value="0.0001" min="0" max="1"\n+                    help="Remove peaks with probability below this absolute value"/>\n+            </when>\n+            <when value="3">\n+                <param name="threshold" type="float" label="Threshold (% of base peak)" value="1.0" min="0" max="100"\n+                    help="Remove peaks below this % of the most intense peak (output is not normalized)"/>\n+            </when>\n+            <when value="4">\n+                <param name="threshold" type="float" label="Threshold (% of monoisotopic peak)" value="1.0" min="0" max="100"\n+                    help="Remove peaks below this % of the monoisotopic peak (output is not normalized)"/>\n+            </when>\n+        </conditional>\n         <param name="append_adduct" type="boolean" truevalue="TRUE" falsevalue="FALSE" checked="true" label="Append adduct to compound name" help="Append the adduct string to the compound name for easy identification." />\n         <conditional name="formatting">\n             <param name="out_format" type="select" label="Output Format" help="Choose the output format, either MSP or Tabular">\n@@ -82,35 +112,150 @@\n     </outputs>\n \n     <tests>\n+        <!-- Test 1: Default settings with rel_to = 0 -->\n         <test>\n             <param name="input_file" value="lc_markers_neg.tsv"/>\n+            <conditional name="rel_to">\n+                <param name="value" value="0"/>\n+                <param name="threshold" value="1.0"/>\n+            </conditional>\n             <output name="isotope_library" file="test0.msp"/>\n         </test>\n+\n+        <!-- Test 2: rel_to = 1 (Relative to monoisotopic peak) -->\n         <test>\n             <param name="input_file" value="markers_no_rt.tsv"/>\n+            <conditional name="rel_to">\n+                <param name="value" value="1"/>\n+                <param nam'..b'"positive"/>\n+                <param name="adducts" value="M+H"/>\n+            </conditional>\n+            <conditional name="rel_to">\n+                <param name="value" value="0"/>\n+                <param name="threshold" value="1.0"/>\n+            </conditional>\n+            <output name="isotope_library" file="test7.msp"/>\n         </test>\n     </tests>\n     <help><![CDATA[\n         This tool computes isotopic patterns for given compounds and adduct forms.\n+\n         The compound table input file should contain the following columns:\n-        - name: compound name\n-        - formula: compound formula\n-        - rt (optional): retention time\n+        - **name**: Compound name.\n+        - **formula**: Compound formula.\n+        - **rt** (optional): Retention time.\n \n         The output is a spectral library in the MSP format.\n+\n+        ## Parameters:\n+\n+        ### **rel_to Modes**:\n+        - **0**: Normalize to the most intense peak (threshold in percentage).\n+        - **1**: Normalize to the monoisotopic peak (threshold in percentage).\n+        - **2**: No normalization (threshold is an absolute probability).\n+        - **3**: Prune by percentage of most intense peak, output absolute intensities.\n+        - **4**: Prune by percentage of monoisotopic peak, output absolute intensities.\n+\n+        ### **Threshold Behavior**:\n+        The threshold\'s units and behavior change based on the selected **rel_to** mode. Use this to tailor output to your downstream needs.\n+\n+        #### **Threshold for Modes 0, 1, 3, 4 (Percentage of Peak Intensity)**:\n+        - The threshold is a **percentage** of the most intense or monoisotopic peak.\n+        - Example 1: To remove isotopes with a probability of less than 1% of the most intense peak, set the threshold to `1` and select **rel_to = 0**.\n+        - Example 2: To remove isotopes with a probability of less than 1% of the monoisotopic peak, set the threshold to `1` and select **rel_to = 1**.\n+        - Example 3: To remove isotopes with a probability of less than 1% of the most intense peak but output absolute intensities, set the threshold to `1` and select **rel_to = 3**.\n+        - Example 4: To remove isotopes with a probability of less than 1% of the monoisotopic peak but output absolute intensities, set the threshold to `1` and select **rel_to = 4**.\n+\n+        #### **Threshold for Mode 2 (Absolute Probability)**:\n+        - The threshold is an **absolute probability** (e.g., `0.01`, `0.0005`, etc.).\n+        - Example 1: To remove isotopes with a probability of less than `0.01`, set the threshold to `0.01` and select **rel_to = 2**.\n+        - **Important**: Be cautious with very small threshold values in **rel_to = 2**. If the threshold is too low (e.g., `0.0001`), it may prune almost all peaks, resulting in a sparse or empty output. Similarly, a threshold that is too high may result in no isotopes being removed.\n+        - Consider using threshold values like `0.01`, `0.1`, or `0.5` depending on your data.\n+\n+        ### **General Guidance**:\n+        - **Threshold Selection**:\n+        - For **modes 0, 1, 3, and 4**: The threshold is **relative** to the most intense or monoisotopic peak, and a **percentage** threshold works well for most data sets.\n+        - For **mode 2**: The threshold is **absolute**, and users must be careful not to choose a value that\xe2\x80\x99s too small or too large.\n+        \n+        #### Example Scenarios:\n+        1. **Scenario 1**: You have a dataset with peaks that vary significantly in intensity. You want to keep isotopes that are at least 1% of the most intense peak. Set the threshold to `1` and use **rel_to = 0** or **rel_to = 3**.\n+        2. **Scenario 2**: You want to remove isotopes with an absolute probability below `0.005` regardless of peak intensity. Set the threshold to `0.005` and use **rel_to = 2**.\n+\n+\n+\n+\n+        @TOOL_VERSION@\n     ]]></help>\n     <citations>\n         <citation type="doi">10.1021/acs.analchem.5b00941</citation>\n'
b
diff -r 2b1118bce0b1 -r 964b4559eb1b test-data/test2.msp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/test2.msp Thu May 15 16:42:56 2025 +0000
[
b'@@ -0,0 +1,693 @@\n+NAME: 2,4-Dichlorophenoxyacetic acid ou 2,4-D (M-H)\n+msLevel: MS1\n+PRECURSORTYPE: [M-H]-\n+FORMULA: C8H6Cl2O3\n+charge: -1\n+ionization_mode: negative\n+precursor_mz: 218.962123412\n+retention_time: 484.2\n+Num Peaks: 18\n+218.962123019909 0.522497733874767\n+219.965477859909 0.0452095481852623\n+219.966339899909 0.000597098365645753\n+219.968399765909 0.000300470751114369\n+220.959172909909 0.334354410483747\n+220.966368799909 0.00322118855150998\n+220.968832699909 0.00171140966293144\n+221.962527749909 0.028930291658151\n+221.963389789909 0.000382092512757472\n+221.965449655909 0.000192275897756397\n+221.969723639909 0.000278716001222334\n+222.956222799909 0.053489644338213\n+222.963418689909 0.00206128855566531\n+222.965882589909 0.00109515760901421\n+223.959577639909 0.00462823567709596\n+223.966773529909 0.000178354695607956\n+224.960468579909 0.000329762635885211\n+224.962932479909 0.000175202088453698\n+\n+NAME: 2-diethylamino-6-methyl pyrimidin-4-ol/one (M-H)\n+msLevel: MS1\n+PRECURSORTYPE: [M-H]-\n+FORMULA: C9H15N3O1\n+charge: -1\n+ionization_mode: negative\n+precursor_mz: 180.1142361\n+retention_time: 451.8\n+Num Peaks: 10\n+180.114235677909 0.894221400895406\n+181.111270637909 0.00980057177905359\n+181.117590517909 0.0870449013506799\n+181.118452557909 0.000340631867778957\n+181.120512423909 0.00143986203957616\n+182.114625477909 0.000954002893280967\n+182.118481457909 0.00183761928670227\n+182.120945357909 0.00376581600910654\n+182.123867263909 0.000140158409391675\n+183.121836297909 0.000178876718194106\n+\n+NAME: 3,5,6-Trichloro-2-pyridinol (M-H)\n+msLevel: MS1\n+PRECURSORTYPE: [M-H]-\n+FORMULA: C5H2Cl3N1O1\n+charge: -1\n+ionization_mode: negative\n+precursor_mz: 195.912920724\n+retention_time: 499.2\n+Num Peaks: 19\n+195.912920371909 0.409514855421874\n+196.909955331909 0.00149607980422299\n+196.916275211909 0.0221460070404026\n+196.917137251909 0.000155994712210985\n+197.909970261909 0.393082369143066\n+197.917166151909 0.000841550421138207\n+197.919630051909 0.000479050389835858\n+198.907005221909 0.00143604703488775\n+198.913325101909 0.0212573605065744\n+198.914187141909 0.000149735156705158\n+199.907020151909 0.125769754857813\n+199.914216041909 0.000807781766435724\n+199.916679941909 0.00045982767091953\n+200.904055111909 0.00045947439447834\n+200.910374991909 0.00680145747992823\n+201.904070041909 0.0134136697366833\n+201.911265931909 0.000258456045649445\n+201.913729831909 0.00014712543219495\n+202.907424881909 0.00072539303640206\n+\n+NAME: 3-phenoxybenzoic acid (M-H)\n+msLevel: MS1\n+PRECURSORTYPE: [M-H]-\n+FORMULA: C13H10O3\n+charge: -1\n+ionization_mode: negative\n+precursor_mz: 213.05571818\n+retention_time: 517.8\n+Num Peaks: 10\n+213.055717727909 0.862272901176545\n+214.059072567909 0.121239422373049\n+214.059934607909 0.000985385594335497\n+214.061994473909 0.000892555096553828\n+215.059963507909 0.0053158959694415\n+215.062427407909 0.0078677559045282\n+215.063289447909 0.000138549617074768\n+215.065349313909 0.000125497234338055\n+216.063318347909 0.000747438723692826\n+216.065782247909 0.000312016870502028\n+\n+NAME: 4-Fluoro-3-phenoxybenzoic acid (M-H)\n+msLevel: MS1\n+PRECURSORTYPE: [M-H]-\n+FORMULA: C13H9F1O3\n+charge: -1\n+ionization_mode: negative\n+precursor_mz: 231.046296368\n+retention_time: 532.2\n+Num Peaks: 10\n+231.046295895909 0.862372073965051\n+232.049650735909 0.121253366510198\n+232.050512775909 0.000985498926712069\n+232.052572641909 0.00079347355750696\n+233.050541675909 0.00531650736778879\n+233.053005575909 0.00786866080052026\n+233.053867615909 0.000138565552113261\n+233.055927481909 0.000111565927271018\n+234.053896515909 0.000747524689032064\n+234.056360415909 0.000312052756569034\n+\n+NAME: 4-nitrophenol (M-H)\n+msLevel: MS1\n+PRECURSORTYPE: [M-H]-\n+FORMULA: C6H5N1O3\n+charge: -1\n+ionization_mode: negative\n+precursor_mz: 138.01966702\n+retention_time: 165\n+Num Peaks: 9\n+138.019666577909 0.926861177685563\n+139.016701537909 0.00338610009110708\n+139.023021417909 0.0601480719775732\n+139.023883457909 0.00105919558783999\n+139.025943323909 0.000426405178330867\n+140.0200563'..b'42295629787\n+292.935035811909 0.0124486149860777\n+292.942231701909 0.000479722531756563\n+292.944695601909 0.000901166654141381\n+293.938390651909 0.00161569004772301\n+\n+NAME: Triclosan glucuronide (M-H)\n+msLevel: MS1\n+PRECURSORTYPE: [M-H]-\n+FORMULA: C18H15Cl3O8\n+charge: -1\n+ionization_mode: negative\n+precursor_mz: 462.97597448\n+retention_time: 665.4\n+Num Peaks: 33\n+462.975974117909 0.350809905638863\n+463.979328957909 0.0682967631922016\n+463.980190997909 0.00106905992876905\n+463.982250863909 0.00056486890800299\n+464.973024007909 0.336733056204569\n+464.980219897909 0.00576729698414884\n+464.982683797909 0.00627877348865939\n+464.983545837909 0.000208127910927848\n+464.985605703909 0.000109970435339509\n+465.976378847909 0.0655562383756191\n+465.977240887909 0.00102616206467906\n+465.979300753909 0.000542202573785341\n+465.983574737909 0.00112279530895286\n+465.986038637909 0.000362184043013069\n+466.970073897909 0.107740354836309\n+466.977269787909 0.00553587429629493\n+466.979733687909 0.0060268269283964\n+466.980595727909 0.000199776421365801\n+466.982655593909 0.000105557682918282\n+466.986929577909 0.000103222716414902\n+467.973428737909 0.0209752272732973\n+467.974290777909 0.000328328516998685\n+467.976350643909 0.000173481921707453\n+467.980624627909 0.00107774122052603\n+467.983088527909 0.00034765078679924\n+468.967123787909 0.0114907875802188\n+468.974319677909 0.00177124594696659\n+468.976783577909 0.00192833005206347\n+469.970478627909 0.00223706225406867\n+469.977674517909 0.00034483166823589\n+469.980138417909 0.00011123356747642\n+470.971369567909 0.000188907962664864\n+470.973833467909 0.000205661388868438\n+\n+NAME: Triclosan sulfate (M-H)\n+msLevel: MS1\n+PRECURSORTYPE: [M-H]-\n+FORMULA: C12H7Cl3O5S1\n+charge: -1\n+ionization_mode: negative\n+precursor_mz: 366.900701364\n+retention_time: 695.4\n+Num Peaks: 40\n+366.900700731909 0.35838606486982\n+367.900088541909 0.00282966152913322\n+367.904055571909 0.0465144756184018\n+367.904917611909 0.000682592222352976\n+367.906977477909 0.000247314825965162\n+368.896496871909 0.0160347486650883\n+368.897750621909 0.34400520904611\n+368.903443381909 0.000367258203114026\n+368.904946511909 0.00368240541006211\n+368.907410411909 0.00276698361482154\n+369.897138431909 0.00271611650473295\n+369.899851711909 0.00208112981764615\n+369.901105461909 0.0446480024679274\n+369.901967501909 0.00065520203814029\n+369.904027367909 0.000237390894194648\n+369.908301351909 0.000477934756547028\n+370.893546761909 0.0153913268601534\n+370.894800511909 0.110067136579695\n+370.900493271909 0.000352521337519166\n+370.900742651909 0.000164756532190377\n+370.901996401909 0.00353464257417788\n+370.903206551909 0.000123799140572603\n+370.904460301909 0.00265595364928487\n+371.894188321909 0.000869042556424586\n+371.896901601909 0.0019976209126086\n+371.898155351909 0.0142854749184604\n+371.899017391909 0.000209636977356397\n+371.905351241909 0.000458756804330779\n+372.890596651909 0.00492457448640599\n+372.891850401909 0.011738944872808\n+372.897543161909 0.000112791937981317\n+372.897792541909 0.000158145393623076\n+372.899046291909 0.00113093632521214\n+372.900256441909 0.0001188314876246\n+372.901510191909 0.000849792983878898\n+373.893951491909 0.000639154315227463\n+373.895205241909 0.00152358285825185\n+373.902401131909 0.000146782800118507\n+374.887646541909 0.000525218609426615\n+374.896096181909 0.000120617284948708\n+\n+NAME: acetamiprid-N-desmethyl (M-H)\n+msLevel: MS1\n+PRECURSORTYPE: [M-H]-\n+FORMULA: C9H9N4Cl1\n+charge: -1\n+ionization_mode: negative\n+precursor_mz: 207.044297968\n+retention_time: 402.6\n+Num Peaks: 12\n+207.044297585909 0.677107477201592\n+208.041332545909 0.00989470158181298\n+208.047652425909 0.0659106944855082\n+208.050574331909 0.000623010525235867\n+209.041347475909 0.216645792599876\n+209.044687385909 0.000963165634619013\n+209.051007265909 0.00285148865256217\n+210.038382435909 0.00316588656735938\n+210.044702315909 0.0210886382567149\n+210.047624221909 0.000199337052952975\n+211.041737275909 0.000308172320263528\n+211.048057155909 0.000912355925793386\n+\n'
b
diff -r 2b1118bce0b1 -r 964b4559eb1b test-data/test2.tabular
--- a/test-data/test2.tabular Fri Nov 01 08:45:59 2024 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
[
b'@@ -1,123 +0,0 @@\n-name\tformula\tadduct\tcharge\tionization_mode\tprecursor_mz\tmsLevel\trt\tmz\n-2,4-Dichlorophenoxyacetic acid ou 2,4-D (M-H)\tC8H6Cl2O3 (13C:0, 37Cl:0)\t[M-H]-\t-1\tnegative\t218.962123412\t1\t484.2\t218.962123019909\n-2,4-Dichlorophenoxyacetic acid ou 2,4-D (M-H)\tC8H6Cl2O3 (13C:1, 37Cl:0)\t[M-H]-\t-1\tnegative\t218.962123412\t1\t484.2\t219.965477859909\n-2,4-Dichlorophenoxyacetic acid ou 2,4-D (M-H)\tC8H6Cl2O3 (13C:0, 37Cl:1)\t[M-H]-\t-1\tnegative\t218.962123412\t1\t484.2\t220.959172909909\n-2,4-Dichlorophenoxyacetic acid ou 2,4-D (M-H)\tC8H6Cl2O3 (13C:1, 37Cl:1)\t[M-H]-\t-1\tnegative\t218.962123412\t1\t484.2\t221.962527749909\n-2,4-Dichlorophenoxyacetic acid ou 2,4-D (M-H)\tC8H6Cl2O3 (13C:0, 37Cl:2)\t[M-H]-\t-1\tnegative\t218.962123412\t1\t484.2\t222.956222799909\n-2-diethylamino-6-methyl pyrimidin-4-ol/one (M-H)\tC9H15N3O1 (13C:0, 15N:0)\t[M-H]-\t-1\tnegative\t180.1142361\t1\t451.8\t180.114235677909\n-2-diethylamino-6-methyl pyrimidin-4-ol/one (M-H)\tC9H15N3O1 (13C:0, 15N:1)\t[M-H]-\t-1\tnegative\t180.1142361\t1\t451.8\t181.111270637909\n-2-diethylamino-6-methyl pyrimidin-4-ol/one (M-H)\tC9H15N3O1 (13C:1, 15N:0)\t[M-H]-\t-1\tnegative\t180.1142361\t1\t451.8\t181.117590517909\n-3,5,6-Trichloro-2-pyridinol (M-H)\tC5H2Cl3N1O1 (13C:0, 37Cl:0)\t[M-H]-\t-1\tnegative\t195.912920724\t1\t499.2\t195.912920371909\n-3,5,6-Trichloro-2-pyridinol (M-H)\tC5H2Cl3N1O1 (13C:1, 37Cl:0)\t[M-H]-\t-1\tnegative\t195.912920724\t1\t499.2\t196.916275211909\n-3,5,6-Trichloro-2-pyridinol (M-H)\tC5H2Cl3N1O1 (13C:0, 37Cl:1)\t[M-H]-\t-1\tnegative\t195.912920724\t1\t499.2\t197.909970261909\n-3,5,6-Trichloro-2-pyridinol (M-H)\tC5H2Cl3N1O1 (13C:1, 37Cl:1)\t[M-H]-\t-1\tnegative\t195.912920724\t1\t499.2\t198.913325101909\n-3,5,6-Trichloro-2-pyridinol (M-H)\tC5H2Cl3N1O1 (13C:0, 37Cl:2)\t[M-H]-\t-1\tnegative\t195.912920724\t1\t499.2\t199.907020151909\n-3,5,6-Trichloro-2-pyridinol (M-H)\tC5H2Cl3N1O1 (13C:1, 37Cl:2)\t[M-H]-\t-1\tnegative\t195.912920724\t1\t499.2\t200.910374991909\n-3,5,6-Trichloro-2-pyridinol (M-H)\tC5H2Cl3N1O1 (13C:0, 37Cl:3)\t[M-H]-\t-1\tnegative\t195.912920724\t1\t499.2\t201.904070041909\n-3-phenoxybenzoic acid (M-H)\tC13H10O3 (13C:0)\t[M-H]-\t-1\tnegative\t213.05571818\t1\t517.8\t213.055717727909\n-3-phenoxybenzoic acid (M-H)\tC13H10O3 (13C:1)\t[M-H]-\t-1\tnegative\t213.05571818\t1\t517.8\t214.059072567909\n-4-Fluoro-3-phenoxybenzoic acid (M-H)\tC13H9F1O3 (13C:0)\t[M-H]-\t-1\tnegative\t231.04629636800001\t1\t532.2\t231.046295895909\n-4-Fluoro-3-phenoxybenzoic acid (M-H)\tC13H9F1O3 (13C:1)\t[M-H]-\t-1\tnegative\t231.04629636800001\t1\t532.2\t232.049650735909\n-4-nitrophenol (M-H)\tC6H5N1O3 (13C:0)\t[M-H]-\t-1\tnegative\t138.01966702000001\t1\t165\t138.019666577909\n-4-nitrophenol (M-H)\tC6H5N1O3 (13C:1)\t[M-H]-\t-1\tnegative\t138.01966702000001\t1\t165\t139.023021417909\n-6-Chloronicotinic acid (M-H)\tC6H4Cl1N1O2 (13C:0, 37Cl:0)\t[M-H]-\t-1\tnegative\t155.985780048\t1\t172.2\t155.985779635909\n-6-Chloronicotinic acid (M-H)\tC6H4Cl1N1O2 (13C:1, 37Cl:0)\t[M-H]-\t-1\tnegative\t155.985780048\t1\t172.2\t156.989134475909\n-6-Chloronicotinic acid (M-H)\tC6H4Cl1N1O2 (13C:0, 37Cl:1)\t[M-H]-\t-1\tnegative\t155.985780048\t1\t172.2\t157.982829525909\n-6-Chloronicotinic acid (M-H)\tC6H4Cl1N1O2 (13C:1, 37Cl:1)\t[M-H]-\t-1\tnegative\t155.985780048\t1\t172.2\t158.986184365909\n-Acetochlor mercapturate (M-H)\tC19H28N2O5S1 (13C:0, 18O:0, 34S:0)\t[M-H]-\t-1\tnegative\t395.164616996\t1\t607.2\t395.164616293909\n-Acetochlor mercapturate (M-H)\tC19H28N2O5S1 (13C:1, 18O:0, 34S:0)\t[M-H]-\t-1\tnegative\t395.164616996\t1\t607.2\t396.167971133909\n-Acetochlor mercapturate (M-H)\tC19H28N2O5S1 (13C:0, 18O:0, 34S:1)\t[M-H]-\t-1\tnegative\t395.164616996\t1\t607.2\t397.160412433909\n-Acetochlor mercapturate (M-H)\tC19H28N2O5S1 (13C:0, 18O:1, 34S:0)\t[M-H]-\t-1\tnegative\t395.164616996\t1\t607.2\t397.168862073909\n-Acetochlor mercapturate (M-H)\tC19H28N2O5S1 (13C:2, 18O:0, 34S:0)\t[M-H]-\t-1\tnegative\t395.164616996\t1\t607.2\t397.171325973909\n-Alachlor mercapturate (M-H)\tC19H28N2O5S1 (13C:0, 18O:0, 34S:0)\t[M-H]-\t-1\tnegative\t395.164616996\t1\t607.2\t395.164616293909\n-Alachlor mercapturate (M-H)\tC19H28N2O5S1 (13C:1, 18O:0, 34S:0)\t[M-H]-\t-1\tnegative\t395.164616996\t1\t607.2\t396.167971133909\n-Alachlor mercapturate (M-H)\tC19H28N2O5S1 (13'..b')\t[M-H]-\t-1\tnegative\t286.943886504\t1\t811.8\t286.943886141909\n-Triclosan (M-H)\tC12H7Cl3O2 (13C:1, 37Cl:0)\t[M-H]-\t-1\tnegative\t286.943886504\t1\t811.8\t287.947240981909\n-Triclosan (M-H)\tC12H7Cl3O2 (13C:0, 37Cl:1)\t[M-H]-\t-1\tnegative\t286.943886504\t1\t811.8\t288.940936031909\n-Triclosan (M-H)\tC12H7Cl3O2 (13C:1, 37Cl:1)\t[M-H]-\t-1\tnegative\t286.943886504\t1\t811.8\t289.944290871909\n-Triclosan (M-H)\tC12H7Cl3O2 (13C:0, 37Cl:2)\t[M-H]-\t-1\tnegative\t286.943886504\t1\t811.8\t290.937985921909\n-Triclosan (M-H)\tC12H7Cl3O2 (13C:1, 37Cl:2)\t[M-H]-\t-1\tnegative\t286.943886504\t1\t811.8\t291.941340761909\n-Triclosan (M-H)\tC12H7Cl3O2 (13C:0, 37Cl:3)\t[M-H]-\t-1\tnegative\t286.943886504\t1\t811.8\t292.935035811909\n-Triclosan glucuronide (M-H)\tC18H15Cl3O8 (13C:0, 37Cl:0, 18O:0)\t[M-H]-\t-1\tnegative\t462.97597448\t1\t665.4\t462.975974117909\n-Triclosan glucuronide (M-H)\tC18H15Cl3O8 (13C:1, 37Cl:0, 18O:0)\t[M-H]-\t-1\tnegative\t462.97597448\t1\t665.4\t463.979328957909\n-Triclosan glucuronide (M-H)\tC18H15Cl3O8 (13C:0, 37Cl:1, 18O:0)\t[M-H]-\t-1\tnegative\t462.97597448\t1\t665.4\t464.973024007909\n-Triclosan glucuronide (M-H)\tC18H15Cl3O8 (13C:0, 37Cl:0, 18O:1)\t[M-H]-\t-1\tnegative\t462.97597448\t1\t665.4\t464.980219897909\n-Triclosan glucuronide (M-H)\tC18H15Cl3O8 (13C:2, 37Cl:0, 18O:0)\t[M-H]-\t-1\tnegative\t462.97597448\t1\t665.4\t464.982683797909\n-Triclosan glucuronide (M-H)\tC18H15Cl3O8 (13C:1, 37Cl:1, 18O:0)\t[M-H]-\t-1\tnegative\t462.97597448\t1\t665.4\t465.976378847909\n-Triclosan glucuronide (M-H)\tC18H15Cl3O8 (13C:0, 37Cl:2, 18O:0)\t[M-H]-\t-1\tnegative\t462.97597448\t1\t665.4\t466.970073897909\n-Triclosan glucuronide (M-H)\tC18H15Cl3O8 (13C:0, 37Cl:1, 18O:1)\t[M-H]-\t-1\tnegative\t462.97597448\t1\t665.4\t466.977269787909\n-Triclosan glucuronide (M-H)\tC18H15Cl3O8 (13C:2, 37Cl:1, 18O:0)\t[M-H]-\t-1\tnegative\t462.97597448\t1\t665.4\t466.979733687909\n-Triclosan glucuronide (M-H)\tC18H15Cl3O8 (13C:1, 37Cl:2, 18O:0)\t[M-H]-\t-1\tnegative\t462.97597448\t1\t665.4\t467.973428737909\n-Triclosan glucuronide (M-H)\tC18H15Cl3O8 (13C:0, 37Cl:3, 18O:0)\t[M-H]-\t-1\tnegative\t462.97597448\t1\t665.4\t468.967123787909\n-Triclosan sulfate (M-H)\tC12H7Cl3O5S1 (13C:0, 37Cl:0, 18O:0, 34S:0)\t[M-H]-\t-1\tnegative\t366.900701364\t1\t695.4\t366.900700731909\n-Triclosan sulfate (M-H)\tC12H7Cl3O5S1 (13C:1, 37Cl:0, 18O:0, 34S:0)\t[M-H]-\t-1\tnegative\t366.900701364\t1\t695.4\t367.904055571909\n-Triclosan sulfate (M-H)\tC12H7Cl3O5S1 (13C:0, 37Cl:0, 18O:0, 34S:1)\t[M-H]-\t-1\tnegative\t366.900701364\t1\t695.4\t368.896496871909\n-Triclosan sulfate (M-H)\tC12H7Cl3O5S1 (13C:0, 37Cl:1, 18O:0, 34S:0)\t[M-H]-\t-1\tnegative\t366.900701364\t1\t695.4\t368.897750621909\n-Triclosan sulfate (M-H)\tC12H7Cl3O5S1 (13C:0, 37Cl:0, 18O:1, 34S:0)\t[M-H]-\t-1\tnegative\t366.900701364\t1\t695.4\t368.904946511909\n-Triclosan sulfate (M-H)\tC12H7Cl3O5S1 (13C:1, 37Cl:1, 18O:0, 34S:0)\t[M-H]-\t-1\tnegative\t366.900701364\t1\t695.4\t369.901105461909\n-Triclosan sulfate (M-H)\tC12H7Cl3O5S1 (13C:0, 37Cl:1, 18O:0, 34S:1)\t[M-H]-\t-1\tnegative\t366.900701364\t1\t695.4\t370.893546761909\n-Triclosan sulfate (M-H)\tC12H7Cl3O5S1 (13C:0, 37Cl:2, 18O:0, 34S:0)\t[M-H]-\t-1\tnegative\t366.900701364\t1\t695.4\t370.894800511909\n-Triclosan sulfate (M-H)\tC12H7Cl3O5S1 (13C:1, 37Cl:2, 18O:0, 34S:0)\t[M-H]-\t-1\tnegative\t366.900701364\t1\t695.4\t371.898155351909\n-Triclosan sulfate (M-H)\tC12H7Cl3O5S1 (13C:0, 37Cl:2, 18O:0, 34S:1)\t[M-H]-\t-1\tnegative\t366.900701364\t1\t695.4\t372.890596651909\n-Triclosan sulfate (M-H)\tC12H7Cl3O5S1 (13C:0, 37Cl:3, 18O:0, 34S:0)\t[M-H]-\t-1\tnegative\t366.900701364\t1\t695.4\t372.891850401909\n-acetamiprid-N-desmethyl (M-H)\tC9H9N4Cl1 (13C:0, 15N:0, 37Cl:0)\t[M-H]-\t-1\tnegative\t207.044297968\t1\t402.6\t207.044297585909\n-acetamiprid-N-desmethyl (M-H)\tC9H9N4Cl1 (13C:0, 15N:1, 37Cl:0)\t[M-H]-\t-1\tnegative\t207.044297968\t1\t402.6\t208.041332545909\n-acetamiprid-N-desmethyl (M-H)\tC9H9N4Cl1 (13C:1, 15N:0, 37Cl:0)\t[M-H]-\t-1\tnegative\t207.044297968\t1\t402.6\t208.047652425909\n-acetamiprid-N-desmethyl (M-H)\tC9H9N4Cl1 (13C:0, 15N:0, 37Cl:1)\t[M-H]-\t-1\tnegative\t207.044297968\t1\t402.6\t209.041347475909\n-acetamiprid-N-desmethyl (M-H)\tC9H9N4Cl1 (13C:1, 15N:0, 37Cl:1)\t[M-H]-\t-1\tnegative\t207.044297968\t1\t402.6\t210.044702315909\n'
b
diff -r 2b1118bce0b1 -r 964b4559eb1b test-data/test3.msp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/test3.msp Thu May 15 16:42:56 2025 +0000
[
@@ -0,0 +1,308 @@
+NAME: 2,4-Dichlorophenoxyacetic acid ou 2,4-D (M-H)
+msLevel: MS1
+PRECURSORTYPE: [M-H]-
+FORMULA: C8H6Cl2O3
+charge: -1
+ionization_mode: negative
+precursor_mz: 218.962123412
+retention_time: 484.2
+Num Peaks: 5
+218.962123019909 0.522497733874767
+219.965477859909 0.0452095481852623
+220.959172909909 0.334354410483747
+221.962527749909 0.028930291658151
+222.956222799909 0.053489644338213
+
+NAME: 2-diethylamino-6-methyl pyrimidin-4-ol/one (M-H)
+msLevel: MS1
+PRECURSORTYPE: [M-H]-
+FORMULA: C9H15N3O1
+charge: -1
+ionization_mode: negative
+precursor_mz: 180.1142361
+retention_time: 451.8
+Num Peaks: 2
+180.114235677909 0.894221400895406
+181.117590517909 0.0870449013506799
+
+NAME: 3,5,6-Trichloro-2-pyridinol (M-H)
+msLevel: MS1
+PRECURSORTYPE: [M-H]-
+FORMULA: C5H2Cl3N1O1
+charge: -1
+ionization_mode: negative
+precursor_mz: 195.912920724
+retention_time: 499.2
+Num Peaks: 5
+195.912920371909 0.409514855421874
+196.916275211909 0.0221460070404026
+197.909970261909 0.393082369143066
+198.913325101909 0.0212573605065744
+199.907020151909 0.125769754857813
+
+NAME: 3-phenoxybenzoic acid (M-H)
+msLevel: MS1
+PRECURSORTYPE: [M-H]-
+FORMULA: C13H10O3
+charge: -1
+ionization_mode: negative
+precursor_mz: 213.05571818
+retention_time: 517.8
+Num Peaks: 2
+213.055717727909 0.862272901176545
+214.059072567909 0.121239422373049
+
+NAME: 4-Fluoro-3-phenoxybenzoic acid (M-H)
+msLevel: MS1
+PRECURSORTYPE: [M-H]-
+FORMULA: C13H9F1O3
+charge: -1
+ionization_mode: negative
+precursor_mz: 231.046296368
+retention_time: 532.2
+Num Peaks: 2
+231.046295895909 0.862372073965051
+232.049650735909 0.121253366510198
+
+NAME: 4-nitrophenol (M-H)
+msLevel: MS1
+PRECURSORTYPE: [M-H]-
+FORMULA: C6H5N1O3
+charge: -1
+ionization_mode: negative
+precursor_mz: 138.01966702
+retention_time: 165
+Num Peaks: 2
+138.019666577909 0.926861177685563
+139.023021417909 0.0601480719775732
+
+NAME: 6-Chloronicotinic acid (M-H)
+msLevel: MS1
+PRECURSORTYPE: [M-H]-
+FORMULA: C6H4Cl1N1O2
+charge: -1
+ionization_mode: negative
+precursor_mz: 155.985780048
+retention_time: 172.2
+Num Peaks: 3
+155.985779635909 0.70398146431364
+156.989134475909 0.0456844334468166
+157.982829525909 0.22524433335484
+
+NAME: Acetochlor mercapturate (M-H)
+msLevel: MS1
+PRECURSORTYPE: [M-H]-
+FORMULA: C19H28N2O5S1
+charge: -1
+ionization_mode: negative
+precursor_mz: 395.164616996
+retention_time: 607.2
+Num Peaks: 2
+395.164616293909 0.757026298222216
+396.167971133909 0.155568024288463
+
+NAME: Alachlor mercapturate (M-H)
+msLevel: MS1
+PRECURSORTYPE: [M-H]-
+FORMULA: C19H28N2O5S1
+charge: -1
+ionization_mode: negative
+precursor_mz: 395.164616996
+retention_time: 607.2
+Num Peaks: 2
+395.164616293909 0.757026298222216
+396.167971133909 0.155568024288463
+
+NAME: Bentazone (M-H)
+msLevel: MS1
+PRECURSORTYPE: [M-H]-
+FORMULA: C10H12N2O3S1
+charge: -1
+ionization_mode: negative
+precursor_mz: 239.049587244
+retention_time: 747.6
+Num Peaks: 2
+239.049586541909 0.839597762562577
+240.052941381909 0.0908086127506274
+
+NAME: Diethylthiophosphate (M-H)
+msLevel: MS1
+PRECURSORTYPE: [M-H]-
+FORMULA: C4H11O3P1S1
+charge: -1
+ionization_mode: negative
+precursor_mz: 169.009375842
+retention_time: 177
+Num Peaks: 1
+169.009374979909 0.902236924603131
+
+NAME: Fenhexamid (M-H)
+msLevel: MS1
+PRECURSORTYPE: [M-H]-
+FORMULA: C14H17Cl2N1O2
+charge: -1
+ionization_mode: negative
+precursor_mz: 300.056358144
+retention_time: 689.4
+Num Peaks: 5
+300.056357761909 0.488625306023648
+301.059712601909 0.0739877396566688
+302.053407651909 0.31267891811017
+303.056762491909 0.047345903096031
+304.050457541909 0.0500220233301908
+
+NAME: Fenvalerate free acid (M-H)
+msLevel: MS1
+PRECURSORTYPE: [M-H]-
+FORMULA: C11H13Cl1O2
+charge: -1
+ionization_mode: negative
+precursor_mz: 211.053131336
+retention_time: 585
+Num Peaks: 3
+211.053130913909 0.668860370672033
+212.056485753909 0.0795763323846136
+213.050180803909 0.21400706685705
+
+NAME: Fipronil (M-H)
+msLevel: MS1
+PRECURSORTYPE: [M-H]-
+FORMULA: C12H4Cl2F6N4O1S1
+charge: -1
+ionization_mode: negative
+precursor_mz: 434.931430428
+retention_time: 750
+Num Peaks: 5
+434.931429685909 0.470925930271005
+435.934784525909 0.0611208828937603
+436.928479575909 0.301352812823896
+437.931834415909 0.0391122017250462
+438.925529465909 0.0482100856840762
+
+NAME: Fipronil sulfone (M-H)
+msLevel: MS1
+PRECURSORTYPE: [M-H]-
+FORMULA: C12H4Cl2F6N4O2S1
+charge: -1
+ionization_mode: negative
+precursor_mz: 450.926345048
+retention_time: 771
+Num Peaks: 5
+450.926344305909 0.469781580260447
+451.929699145909 0.0609723591483285
+452.923394195909 0.300620525488734
+453.926749035909 0.0390171590748543
+454.920444085909 0.0480929351758639
+
+NAME: Hydroxy-tebuconazole (M-H)
+msLevel: MS1
+PRECURSORTYPE: [M-H]-
+FORMULA: C16H22Cl1N3O2
+charge: -1
+ionization_mode: negative
+precursor_mz: 322.132778624
+retention_time: 696.6
+Num Peaks: 4
+322.132778231909 0.626289083545843
+323.136133071909 0.108380360965378
+324.129828121909 0.200386053130296
+325.133182961909 0.0346771376689646
+
+NAME: Fluopyram (M-H)
+msLevel: MS1
+PRECURSORTYPE: [M-H]-
+FORMULA: C16H11Cl1F6N2O1
+charge: -1
+ionization_mode: negative
+precursor_mz: 395.039133972
+retention_time: 725.4
+Num Peaks: 4
+395.039133449909 0.630905904516993
+396.042488289909 0.10917930946458
+397.036183339909 0.201863240832787
+398.039538179909 0.0349327674422047
+
+NAME: Mecoprop (M-H)
+msLevel: MS1
+PRECURSORTYPE: [M-H]-
+FORMULA: C10H11Cl1O3
+charge: -1
+ionization_mode: negative
+precursor_mz: 213.032395892
+retention_time: 544.8
+Num Peaks: 3
+213.032395469909 0.674606823518754
+214.035750309909 0.0729636410760201
+215.029445359909 0.215845689045599
+
+NAME: p-Toluenesulfonamide (M-H)
+msLevel: MS1
+PRECURSORTYPE: [M-H]-
+FORMULA: C7H9N1O2S1
+charge: -1
+ionization_mode: negative
+precursor_mz: 170.028123528
+retention_time: 362.4
+Num Peaks: 2
+170.028122815909 0.872725009190018
+171.031477655909 0.0660740960157004
+
+NAME: Triclosan (M-H)
+msLevel: MS1
+PRECURSORTYPE: [M-H]-
+FORMULA: C12H7Cl3O2
+charge: -1
+ionization_mode: negative
+precursor_mz: 286.943886504
+retention_time: 811.8
+Num Peaks: 5
+286.943886141909 0.380052056320174
+287.947240981909 0.049326477339038
+288.940936031909 0.364801815411867
+289.944290871909 0.0473471677942825
+290.937985921909 0.116721172196194
+
+NAME: Triclosan glucuronide (M-H)
+msLevel: MS1
+PRECURSORTYPE: [M-H]-
+FORMULA: C18H15Cl3O8
+charge: -1
+ionization_mode: negative
+precursor_mz: 462.97597448
+retention_time: 665.4
+Num Peaks: 6
+462.975974117909 0.350809905638863
+463.979328957909 0.0682967631922016
+464.973024007909 0.336733056204569
+465.976378847909 0.0655562383756191
+466.970073897909 0.107740354836309
+467.973428737909 0.0209752272732973
+
+NAME: Triclosan sulfate (M-H)
+msLevel: MS1
+PRECURSORTYPE: [M-H]-
+FORMULA: C12H7Cl3O5S1
+charge: -1
+ionization_mode: negative
+precursor_mz: 366.900701364
+retention_time: 695.4
+Num Peaks: 5
+366.900700731909 0.35838606486982
+367.904055571909 0.0465144756184018
+368.897750621909 0.34400520904611
+369.901105461909 0.0446480024679274
+370.894800511909 0.110067136579695
+
+NAME: acetamiprid-N-desmethyl (M-H)
+msLevel: MS1
+PRECURSORTYPE: [M-H]-
+FORMULA: C9H9N4Cl1
+charge: -1
+ionization_mode: negative
+precursor_mz: 207.044297968
+retention_time: 402.6
+Num Peaks: 3
+207.044297585909 0.677107477201592
+208.047652425909 0.0659106944855082
+209.041347475909 0.216645792599876
+
b
diff -r 2b1118bce0b1 -r 964b4559eb1b test-data/test3.tabular
--- a/test-data/test3.tabular Fri Nov 01 08:45:59 2024 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
[
b'@@ -1,366 +0,0 @@\n-name\tadduct\tformula\tcharge\tionization_mode\tprecursor_mz\tmsLevel\trt\tmz\tisotopes\n-2,4-Dichlorophenoxyacetic acid ou 2,4-D (M-H)\t[M-H]-\tC8H6Cl2O3\t-1\tnegative\t218.962123412\t1\t484.2\t218.962123019909\t13C:0, 37Cl:0\n-2,4-Dichlorophenoxyacetic acid ou 2,4-D (M-H)\t[M-H]-\tC8H6Cl2O3\t-1\tnegative\t218.962123412\t1\t484.2\t219.965477859909\t13C:1, 37Cl:0\n-2,4-Dichlorophenoxyacetic acid ou 2,4-D (M-H)\t[M-H]-\tC8H6Cl2O3\t-1\tnegative\t218.962123412\t1\t484.2\t220.959172909909\t13C:0, 37Cl:1\n-2,4-Dichlorophenoxyacetic acid ou 2,4-D (M-H)\t[M-H]-\tC8H6Cl2O3\t-1\tnegative\t218.962123412\t1\t484.2\t221.962527749909\t13C:1, 37Cl:1\n-2,4-Dichlorophenoxyacetic acid ou 2,4-D (M-H)\t[M-H]-\tC8H6Cl2O3\t-1\tnegative\t218.962123412\t1\t484.2\t222.956222799909\t13C:0, 37Cl:2\n-2-diethylamino-6-methyl pyrimidin-4-ol/one (M-H)\t[M-H]-\tC9H15N3O1\t-1\tnegative\t180.1142361\t1\t451.8\t180.114235677909\t13C:0, 15N:0\n-2-diethylamino-6-methyl pyrimidin-4-ol/one (M-H)\t[M-H]-\tC9H15N3O1\t-1\tnegative\t180.1142361\t1\t451.8\t181.111270637909\t13C:0, 15N:1\n-2-diethylamino-6-methyl pyrimidin-4-ol/one (M-H)\t[M-H]-\tC9H15N3O1\t-1\tnegative\t180.1142361\t1\t451.8\t181.117590517909\t13C:1, 15N:0\n-3,5,6-Trichloro-2-pyridinol (M-H)\t[M-H]-\tC5H2Cl3N1O1\t-1\tnegative\t195.912920724\t1\t499.2\t195.912920371909\t13C:0, 37Cl:0\n-3,5,6-Trichloro-2-pyridinol (M-H)\t[M-H]-\tC5H2Cl3N1O1\t-1\tnegative\t195.912920724\t1\t499.2\t196.916275211909\t13C:1, 37Cl:0\n-3,5,6-Trichloro-2-pyridinol (M-H)\t[M-H]-\tC5H2Cl3N1O1\t-1\tnegative\t195.912920724\t1\t499.2\t197.909970261909\t13C:0, 37Cl:1\n-3,5,6-Trichloro-2-pyridinol (M-H)\t[M-H]-\tC5H2Cl3N1O1\t-1\tnegative\t195.912920724\t1\t499.2\t198.913325101909\t13C:1, 37Cl:1\n-3,5,6-Trichloro-2-pyridinol (M-H)\t[M-H]-\tC5H2Cl3N1O1\t-1\tnegative\t195.912920724\t1\t499.2\t199.907020151909\t13C:0, 37Cl:2\n-3,5,6-Trichloro-2-pyridinol (M-H)\t[M-H]-\tC5H2Cl3N1O1\t-1\tnegative\t195.912920724\t1\t499.2\t200.910374991909\t13C:1, 37Cl:2\n-3,5,6-Trichloro-2-pyridinol (M-H)\t[M-H]-\tC5H2Cl3N1O1\t-1\tnegative\t195.912920724\t1\t499.2\t201.904070041909\t13C:0, 37Cl:3\n-3-phenoxybenzoic acid (M-H)\t[M-H]-\tC13H10O3\t-1\tnegative\t213.05571818\t1\t517.8\t213.055717727909\t13C:0\n-3-phenoxybenzoic acid (M-H)\t[M-H]-\tC13H10O3\t-1\tnegative\t213.05571818\t1\t517.8\t214.059072567909\t13C:1\n-4-Fluoro-3-phenoxybenzoic acid (M-H)\t[M-H]-\tC13H9F1O3\t-1\tnegative\t231.04629636800001\t1\t532.2\t231.046295895909\t13C:0\n-4-Fluoro-3-phenoxybenzoic acid (M-H)\t[M-H]-\tC13H9F1O3\t-1\tnegative\t231.04629636800001\t1\t532.2\t232.049650735909\t13C:1\n-4-nitrophenol (M-H)\t[M-H]-\tC6H5N1O3\t-1\tnegative\t138.01966702000001\t1\t165\t138.019666577909\t13C:0\n-4-nitrophenol (M-H)\t[M-H]-\tC6H5N1O3\t-1\tnegative\t138.01966702000001\t1\t165\t139.023021417909\t13C:1\n-6-Chloronicotinic acid (M-H)\t[M-H]-\tC6H4Cl1N1O2\t-1\tnegative\t155.985780048\t1\t172.2\t155.985779635909\t13C:0, 37Cl:0\n-6-Chloronicotinic acid (M-H)\t[M-H]-\tC6H4Cl1N1O2\t-1\tnegative\t155.985780048\t1\t172.2\t156.989134475909\t13C:1, 37Cl:0\n-6-Chloronicotinic acid (M-H)\t[M-H]-\tC6H4Cl1N1O2\t-1\tnegative\t155.985780048\t1\t172.2\t157.982829525909\t13C:0, 37Cl:1\n-6-Chloronicotinic acid (M-H)\t[M-H]-\tC6H4Cl1N1O2\t-1\tnegative\t155.985780048\t1\t172.2\t158.986184365909\t13C:1, 37Cl:1\n-Acetochlor mercapturate (M-H)\t[M-H]-\tC19H28N2O5S1\t-1\tnegative\t395.164616996\t1\t607.2\t395.164616293909\t13C:0, 18O:0, 34S:0\n-Acetochlor mercapturate (M-H)\t[M-H]-\tC19H28N2O5S1\t-1\tnegative\t395.164616996\t1\t607.2\t396.167971133909\t13C:1, 18O:0, 34S:0\n-Acetochlor mercapturate (M-H)\t[M-H]-\tC19H28N2O5S1\t-1\tnegative\t395.164616996\t1\t607.2\t397.160412433909\t13C:0, 18O:0, 34S:1\n-Acetochlor mercapturate (M-H)\t[M-H]-\tC19H28N2O5S1\t-1\tnegative\t395.164616996\t1\t607.2\t397.168862073909\t13C:0, 18O:1, 34S:0\n-Acetochlor mercapturate (M-H)\t[M-H]-\tC19H28N2O5S1\t-1\tnegative\t395.164616996\t1\t607.2\t397.171325973909\t13C:2, 18O:0, 34S:0\n-Alachlor mercapturate (M-H)\t[M-H]-\tC19H28N2O5S1\t-1\tnegative\t395.164616996\t1\t607.2\t395.164616293909\t13C:0, 18O:0, 34S:0\n-Alachlor mercapturate (M-H)\t[M-H]-\tC19H28N2O5S1\t-1\tnegative\t395.164616996\t1\t607.2\t396.167971133909\t13C:1, 18O:0, 34S:0\n-Alachlor mercapturate (M-H)\t[M-H]-\tC19H28N2O5S1\t-1\tnegative\t395.164616996\t1\t607.2\t397.160412433909\t'..b'909\t13C:0, 37Cl:1, 18O:0, 34S:0, 33S:1\n-Triclosan sulfate (2M-H)\t[2M-H]-\tC12H7Cl3O5S1\t-1\tnegative\t734.8086787279999\t1\t695.4\t737.807828895909\t13C:1, 37Cl:0, 18O:0, 34S:1, 33S:0\n-Triclosan sulfate (2M-H)\t[2M-H]-\tC12H7Cl3O5S1\t-1\tnegative\t734.8086787279999\t1\t695.4\t737.809082645909\t13C:1, 37Cl:1, 18O:0, 34S:0, 33S:0\n-Triclosan sulfate (2M-H)\t[2M-H]-\tC12H7Cl3O5S1\t-1\tnegative\t734.8086787279999\t1\t695.4\t738.801523945909\t13C:0, 37Cl:1, 18O:0, 34S:1, 33S:0\n-Triclosan sulfate (2M-H)\t[2M-H]-\tC12H7Cl3O5S1\t-1\tnegative\t734.8086787279999\t1\t695.4\t738.802777695909\t13C:0, 37Cl:2, 18O:0, 34S:0, 33S:0\n-Triclosan sulfate (2M-H)\t[2M-H]-\tC12H7Cl3O5S1\t-1\tnegative\t734.8086787279999\t1\t695.4\t738.809973585909\t13C:0, 37Cl:1, 18O:1, 34S:0, 33S:0\n-Triclosan sulfate (2M-H)\t[2M-H]-\tC12H7Cl3O5S1\t-1\tnegative\t734.8086787279999\t1\t695.4\t738.812437485909\t13C:2, 37Cl:1, 18O:0, 34S:0, 33S:0\n-Triclosan sulfate (2M-H)\t[2M-H]-\tC12H7Cl3O5S1\t-1\tnegative\t734.8086787279999\t1\t695.4\t739.802165505909\t13C:0, 37Cl:2, 18O:0, 34S:0, 33S:1\n-Triclosan sulfate (2M-H)\t[2M-H]-\tC12H7Cl3O5S1\t-1\tnegative\t734.8086787279999\t1\t695.4\t739.804878785909\t13C:1, 37Cl:1, 18O:0, 34S:1, 33S:0\n-Triclosan sulfate (2M-H)\t[2M-H]-\tC12H7Cl3O5S1\t-1\tnegative\t734.8086787279999\t1\t695.4\t739.806132535909\t13C:1, 37Cl:2, 18O:0, 34S:0, 33S:0\n-Triclosan sulfate (2M-H)\t[2M-H]-\tC12H7Cl3O5S1\t-1\tnegative\t734.8086787279999\t1\t695.4\t740.798573835909\t13C:0, 37Cl:2, 18O:0, 34S:1, 33S:0\n-Triclosan sulfate (2M-H)\t[2M-H]-\tC12H7Cl3O5S1\t-1\tnegative\t734.8086787279999\t1\t695.4\t740.799827585909\t13C:0, 37Cl:3, 18O:0, 34S:0, 33S:0\n-Triclosan sulfate (2M-H)\t[2M-H]-\tC12H7Cl3O5S1\t-1\tnegative\t734.8086787279999\t1\t695.4\t740.807023475909\t13C:0, 37Cl:2, 18O:1, 34S:0, 33S:0\n-Triclosan sulfate (2M-H)\t[2M-H]-\tC12H7Cl3O5S1\t-1\tnegative\t734.8086787279999\t1\t695.4\t740.809487375909\t13C:2, 37Cl:2, 18O:0, 34S:0, 33S:0\n-Triclosan sulfate (2M-H)\t[2M-H]-\tC12H7Cl3O5S1\t-1\tnegative\t734.8086787279999\t1\t695.4\t741.801928675909\t13C:1, 37Cl:2, 18O:0, 34S:1, 33S:0\n-Triclosan sulfate (2M-H)\t[2M-H]-\tC12H7Cl3O5S1\t-1\tnegative\t734.8086787279999\t1\t695.4\t741.803182425909\t13C:1, 37Cl:3, 18O:0, 34S:0, 33S:0\n-Triclosan sulfate (2M-H)\t[2M-H]-\tC12H7Cl3O5S1\t-1\tnegative\t734.8086787279999\t1\t695.4\t742.795623725909\t13C:0, 37Cl:3, 18O:0, 34S:1, 33S:0\n-Triclosan sulfate (2M-H)\t[2M-H]-\tC12H7Cl3O5S1\t-1\tnegative\t734.8086787279999\t1\t695.4\t742.796877475909\t13C:0, 37Cl:4, 18O:0, 34S:0, 33S:0\n-Triclosan sulfate (2M-H)\t[2M-H]-\tC12H7Cl3O5S1\t-1\tnegative\t734.8086787279999\t1\t695.4\t742.806537265909\t13C:2, 37Cl:3, 18O:0, 34S:0, 33S:0\n-Triclosan sulfate (2M-H)\t[2M-H]-\tC12H7Cl3O5S1\t-1\tnegative\t734.8086787279999\t1\t695.4\t743.800232315909\t13C:1, 37Cl:4, 18O:0, 34S:0, 33S:0\n-Triclosan sulfate (2M-H)\t[2M-H]-\tC12H7Cl3O5S1\t-1\tnegative\t734.8086787279999\t1\t695.4\t744.793927365909\t13C:0, 37Cl:5, 18O:0, 34S:0, 33S:0\n-acetamiprid-N-desmethyl (2M-H)\t[2M-H]-\tC9H9N4Cl1\t-1\tnegative\t415.095871936\t1\t402.6\t415.095871623909\t13C:0, 15N:0, 37Cl:0\n-acetamiprid-N-desmethyl (2M-H)\t[2M-H]-\tC9H9N4Cl1\t-1\tnegative\t415.095871936\t1\t402.6\t416.092906583909\t13C:0, 15N:1, 37Cl:0\n-acetamiprid-N-desmethyl (2M-H)\t[2M-H]-\tC9H9N4Cl1\t-1\tnegative\t415.095871936\t1\t402.6\t416.099226463909\t13C:1, 15N:0, 37Cl:0\n-acetamiprid-N-desmethyl (2M-H)\t[2M-H]-\tC9H9N4Cl1\t-1\tnegative\t415.095871936\t1\t402.6\t417.092921513909\t13C:0, 15N:0, 37Cl:1\n-acetamiprid-N-desmethyl (2M-H)\t[2M-H]-\tC9H9N4Cl1\t-1\tnegative\t415.095871936\t1\t402.6\t417.102581303909\t13C:2, 15N:0, 37Cl:0\n-acetamiprid-N-desmethyl (2M-H)\t[2M-H]-\tC9H9N4Cl1\t-1\tnegative\t415.095871936\t1\t402.6\t418.089956473909\t13C:0, 15N:1, 37Cl:1\n-acetamiprid-N-desmethyl (2M-H)\t[2M-H]-\tC9H9N4Cl1\t-1\tnegative\t415.095871936\t1\t402.6\t418.096276353909\t13C:1, 15N:0, 37Cl:1\n-acetamiprid-N-desmethyl (2M-H)\t[2M-H]-\tC9H9N4Cl1\t-1\tnegative\t415.095871936\t1\t402.6\t419.089971403909\t13C:0, 15N:0, 37Cl:2\n-acetamiprid-N-desmethyl (2M-H)\t[2M-H]-\tC9H9N4Cl1\t-1\tnegative\t415.095871936\t1\t402.6\t419.099631193909\t13C:2, 15N:0, 37Cl:1\n-acetamiprid-N-desmethyl (2M-H)\t[2M-H]-\tC9H9N4Cl1\t-1\tnegative\t415.095871936\t1\t402.6\t420.093326243909\t13C:1, 15N:0, 37Cl:2\n'
b
diff -r 2b1118bce0b1 -r 964b4559eb1b test-data/test4.msp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/test4.msp Thu May 15 16:42:56 2025 +0000
[
b'@@ -0,0 +1,332 @@\n+NAME: 2,4-Dichlorophenoxyacetic acid ou 2,4-D (M-H)\n+msLevel: MS1\n+PRECURSORTYPE: [M-H]-\n+FORMULA: C8H6Cl2O3\n+charge: -1\n+ionization_mode: negative\n+precursor_mz: 218.962123412\n+retention_time: 484.2\n+Num Peaks: 5\n+218.962123019909 0.522497733874767\n+219.965477859909 0.0452095481852623\n+220.959172909909 0.334354410483747\n+221.962527749909 0.028930291658151\n+222.956222799909 0.053489644338213\n+\n+NAME: 2-diethylamino-6-methyl pyrimidin-4-ol/one (M-H)\n+msLevel: MS1\n+PRECURSORTYPE: [M-H]-\n+FORMULA: C9H15N3O1\n+charge: -1\n+ionization_mode: negative\n+precursor_mz: 180.1142361\n+retention_time: 451.8\n+Num Peaks: 2\n+180.114235677909 0.894221400895406\n+181.117590517909 0.0870449013506799\n+\n+NAME: 3,5,6-Trichloro-2-pyridinol (M-H)\n+msLevel: MS1\n+PRECURSORTYPE: [M-H]-\n+FORMULA: C5H2Cl3N1O1\n+charge: -1\n+ionization_mode: negative\n+precursor_mz: 195.912920724\n+retention_time: 499.2\n+Num Peaks: 6\n+195.912920371909 0.409514855421874\n+196.916275211909 0.0221460070404026\n+197.909970261909 0.393082369143066\n+198.913325101909 0.0212573605065744\n+199.907020151909 0.125769754857813\n+201.904070041909 0.0134136697366833\n+\n+NAME: 3-phenoxybenzoic acid (M-H)\n+msLevel: MS1\n+PRECURSORTYPE: [M-H]-\n+FORMULA: C13H10O3\n+charge: -1\n+ionization_mode: negative\n+precursor_mz: 213.05571818\n+retention_time: 517.8\n+Num Peaks: 2\n+213.055717727909 0.862272901176545\n+214.059072567909 0.121239422373049\n+\n+NAME: 4-Fluoro-3-phenoxybenzoic acid (M-H)\n+msLevel: MS1\n+PRECURSORTYPE: [M-H]-\n+FORMULA: C13H9F1O3\n+charge: -1\n+ionization_mode: negative\n+precursor_mz: 231.046296368\n+retention_time: 532.2\n+Num Peaks: 2\n+231.046295895909 0.862372073965051\n+232.049650735909 0.121253366510198\n+\n+NAME: 4-nitrophenol (M-H)\n+msLevel: MS1\n+PRECURSORTYPE: [M-H]-\n+FORMULA: C6H5N1O3\n+charge: -1\n+ionization_mode: negative\n+precursor_mz: 138.01966702\n+retention_time: 165\n+Num Peaks: 2\n+138.019666577909 0.926861177685563\n+139.023021417909 0.0601480719775732\n+\n+NAME: 6-Chloronicotinic acid (M-H)\n+msLevel: MS1\n+PRECURSORTYPE: [M-H]-\n+FORMULA: C6H4Cl1N1O2\n+charge: -1\n+ionization_mode: negative\n+precursor_mz: 155.985780048\n+retention_time: 172.2\n+Num Peaks: 4\n+155.985779635909 0.70398146431364\n+156.989134475909 0.0456844334468166\n+157.982829525909 0.22524433335484\n+158.986184365909 0.0146170890542613\n+\n+NAME: Acetochlor mercapturate (M-H)\n+msLevel: MS1\n+PRECURSORTYPE: [M-H]-\n+FORMULA: C19H28N2O5S1\n+charge: -1\n+ionization_mode: negative\n+precursor_mz: 395.164616996\n+retention_time: 607.2\n+Num Peaks: 4\n+395.164616293909 0.757026298222216\n+396.167971133909 0.155568024288463\n+397.160412433909 0.0338705312921825\n+397.171325973909 0.0151432333356707\n+\n+NAME: Alachlor mercapturate (M-H)\n+msLevel: MS1\n+PRECURSORTYPE: [M-H]-\n+FORMULA: C19H28N2O5S1\n+charge: -1\n+ionization_mode: negative\n+precursor_mz: 395.164616996\n+retention_time: 607.2\n+Num Peaks: 4\n+395.164616293909 0.757026298222216\n+396.167971133909 0.155568024288463\n+397.160412433909 0.0338705312921825\n+397.171325973909 0.0151432333356707\n+\n+NAME: Bentazone (M-H)\n+msLevel: MS1\n+PRECURSORTYPE: [M-H]-\n+FORMULA: C10H12N2O3S1\n+charge: -1\n+ionization_mode: negative\n+precursor_mz: 239.049587244\n+retention_time: 747.6\n+Num Peaks: 3\n+239.049586541909 0.839597762562577\n+240.052941381909 0.0908086127506274\n+241.045382681909 0.0375649067364033\n+\n+NAME: Diethylthiophosphate (M-H)\n+msLevel: MS1\n+PRECURSORTYPE: [M-H]-\n+FORMULA: C4H11O3P1S1\n+charge: -1\n+ionization_mode: negative\n+precursor_mz: 169.009375842\n+retention_time: 177\n+Num Peaks: 3\n+169.009374979909 0.902236924603131\n+170.012729819909 0.0390333977287112\n+171.005171119909 0.0403674800459344\n+\n+NAME: Fenhexamid (M-H)\n+msLevel: MS1\n+PRECURSORTYPE: [M-H]-\n+FORMULA: C14H17Cl2N1O2\n+charge: -1\n+ionization_mode: negative\n+precursor_mz: 300.056358144\n+retention_time: 689.4\n+Num Peaks: 5\n+300.056357761909 0.488625306023648\n+301.059712601909 0.0739877396566688\n+302.053407651909 0.31267891811017\n+303.056762491909 0.047345903096031\n+304.050457541909 0.0500220233301908\n+\n+NAME: Fenvalerate free acid (M-'..b'ME: Fipronil (M-H)\n+msLevel: MS1\n+PRECURSORTYPE: [M-H]-\n+FORMULA: C12H4Cl2F6N4O1S1\n+charge: -1\n+ionization_mode: negative\n+precursor_mz: 434.931430428\n+retention_time: 750\n+Num Peaks: 7\n+434.931429685909 0.470925930271005\n+435.934784525909 0.0611208828937603\n+436.927225825909 0.0210699568760056\n+436.928479575909 0.301352812823896\n+437.931834415909 0.0391122017250462\n+438.924275715909 0.0134829924676446\n+438.925529465909 0.0482100856840762\n+\n+NAME: Fipronil sulfone (M-H)\n+msLevel: MS1\n+PRECURSORTYPE: [M-H]-\n+FORMULA: C12H4Cl2F6N4O2S1\n+charge: -1\n+ionization_mode: negative\n+precursor_mz: 450.926345048\n+retention_time: 771\n+Num Peaks: 7\n+450.926344305909 0.469781580260447\n+451.929699145909 0.0609723591483285\n+452.922140445909 0.0210187568807969\n+452.923394195909 0.300620525488734\n+453.926749035909 0.0390171590748543\n+454.919190335909 0.0134502287959482\n+454.920444085909 0.0480929351758639\n+\n+NAME: Hydroxy-tebuconazole (M-H)\n+msLevel: MS1\n+PRECURSORTYPE: [M-H]-\n+FORMULA: C16H22Cl1N3O2\n+charge: -1\n+ionization_mode: negative\n+precursor_mz: 322.132778624\n+retention_time: 696.6\n+Num Peaks: 4\n+322.132778231909 0.626289083545843\n+323.136133071909 0.108380360965378\n+324.129828121909 0.200386053130296\n+325.133182961909 0.0346771376689646\n+\n+NAME: Fluopyram (M-H)\n+msLevel: MS1\n+PRECURSORTYPE: [M-H]-\n+FORMULA: C16H11Cl1F6N2O1\n+charge: -1\n+ionization_mode: negative\n+precursor_mz: 395.039133972\n+retention_time: 725.4\n+Num Peaks: 4\n+395.039133449909 0.630905904516993\n+396.042488289909 0.10917930946458\n+397.036183339909 0.201863240832787\n+398.039538179909 0.0349327674422047\n+\n+NAME: Mecoprop (M-H)\n+msLevel: MS1\n+PRECURSORTYPE: [M-H]-\n+FORMULA: C10H11Cl1O3\n+charge: -1\n+ionization_mode: negative\n+precursor_mz: 213.032395892\n+retention_time: 544.8\n+Num Peaks: 4\n+213.032395469909 0.674606823518754\n+214.035750309909 0.0729636410760201\n+215.029445359909 0.215845689045599\n+216.032800199909 0.0233452832587477\n+\n+NAME: p-Toluenesulfonamide (M-H)\n+msLevel: MS1\n+PRECURSORTYPE: [M-H]-\n+FORMULA: C7H9N1O2S1\n+charge: -1\n+ionization_mode: negative\n+precursor_mz: 170.028123528\n+retention_time: 362.4\n+Num Peaks: 3\n+170.028122815909 0.872725009190018\n+171.031477655909 0.0660740960157004\n+172.023918955909 0.0390470711554645\n+\n+NAME: Triclosan (M-H)\n+msLevel: MS1\n+PRECURSORTYPE: [M-H]-\n+FORMULA: C12H7Cl3O2\n+charge: -1\n+ionization_mode: negative\n+precursor_mz: 286.943886504\n+retention_time: 811.8\n+Num Peaks: 7\n+286.943886141909 0.380052056320174\n+287.947240981909 0.049326477339038\n+288.940936031909 0.364801815411867\n+289.944290871909 0.0473471677942825\n+290.937985921909 0.116721172196194\n+291.941340761909 0.0151490938137989\n+292.935035811909 0.0124486149860777\n+\n+NAME: Triclosan glucuronide (M-H)\n+msLevel: MS1\n+PRECURSORTYPE: [M-H]-\n+FORMULA: C18H15Cl3O8\n+charge: -1\n+ionization_mode: negative\n+precursor_mz: 462.97597448\n+retention_time: 665.4\n+Num Peaks: 7\n+462.975974117909 0.350809905638863\n+463.979328957909 0.0682967631922016\n+464.973024007909 0.336733056204569\n+465.976378847909 0.0655562383756191\n+466.970073897909 0.107740354836309\n+467.973428737909 0.0209752272732973\n+468.967123787909 0.0114907875802188\n+\n+NAME: Triclosan sulfate (M-H)\n+msLevel: MS1\n+PRECURSORTYPE: [M-H]-\n+FORMULA: C12H7Cl3O5S1\n+charge: -1\n+ionization_mode: negative\n+precursor_mz: 366.900701364\n+retention_time: 695.4\n+Num Peaks: 9\n+366.900700731909 0.35838606486982\n+367.904055571909 0.0465144756184018\n+368.896496871909 0.0160347486650883\n+368.897750621909 0.34400520904611\n+369.901105461909 0.0446480024679274\n+370.893546761909 0.0153913268601534\n+370.894800511909 0.110067136579695\n+371.898155351909 0.0142854749184604\n+372.891850401909 0.011738944872808\n+\n+NAME: acetamiprid-N-desmethyl (M-H)\n+msLevel: MS1\n+PRECURSORTYPE: [M-H]-\n+FORMULA: C9H9N4Cl1\n+charge: -1\n+ionization_mode: negative\n+precursor_mz: 207.044297968\n+retention_time: 402.6\n+Num Peaks: 4\n+207.044297585909 0.677107477201592\n+208.047652425909 0.0659106944855082\n+209.041347475909 0.216645792599876\n+210.044702315909 0.0210886382567149\n+\n'
b
diff -r 2b1118bce0b1 -r 964b4559eb1b test-data/test5.tabular
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/test5.tabular Thu May 15 16:42:56 2025 +0000
[
b'@@ -0,0 +1,103 @@\n+name\tformula\tadduct\tcharge\tionization_mode\tprecursor_mz\tmsLevel\trt\tmz\n+2,4-Dichlorophenoxyacetic acid ou 2,4-D (M-H)\tC8H6Cl2O3 (13C:0, 37Cl:0)\t[M-H]-\t-1\tnegative\t218.962123412\t1\t484.2\t218.962123019909\n+2,4-Dichlorophenoxyacetic acid ou 2,4-D (M-H)\tC8H6Cl2O3 (13C:1, 37Cl:0)\t[M-H]-\t-1\tnegative\t218.962123412\t1\t484.2\t219.965477859909\n+2,4-Dichlorophenoxyacetic acid ou 2,4-D (M-H)\tC8H6Cl2O3 (13C:0, 37Cl:1)\t[M-H]-\t-1\tnegative\t218.962123412\t1\t484.2\t220.959172909909\n+2,4-Dichlorophenoxyacetic acid ou 2,4-D (M-H)\tC8H6Cl2O3 (13C:1, 37Cl:1)\t[M-H]-\t-1\tnegative\t218.962123412\t1\t484.2\t221.962527749909\n+2,4-Dichlorophenoxyacetic acid ou 2,4-D (M-H)\tC8H6Cl2O3 (13C:0, 37Cl:2)\t[M-H]-\t-1\tnegative\t218.962123412\t1\t484.2\t222.956222799909\n+2-diethylamino-6-methyl pyrimidin-4-ol/one (M-H)\tC9H15N3O1 (13C:0)\t[M-H]-\t-1\tnegative\t180.1142361\t1\t451.8\t180.114235677909\n+2-diethylamino-6-methyl pyrimidin-4-ol/one (M-H)\tC9H15N3O1 (13C:1)\t[M-H]-\t-1\tnegative\t180.1142361\t1\t451.8\t181.117590517909\n+3,5,6-Trichloro-2-pyridinol (M-H)\tC5H2Cl3N1O1 (13C:0, 37Cl:0)\t[M-H]-\t-1\tnegative\t195.912920724\t1\t499.2\t195.912920371909\n+3,5,6-Trichloro-2-pyridinol (M-H)\tC5H2Cl3N1O1 (13C:1, 37Cl:0)\t[M-H]-\t-1\tnegative\t195.912920724\t1\t499.2\t196.916275211909\n+3,5,6-Trichloro-2-pyridinol (M-H)\tC5H2Cl3N1O1 (13C:0, 37Cl:1)\t[M-H]-\t-1\tnegative\t195.912920724\t1\t499.2\t197.909970261909\n+3,5,6-Trichloro-2-pyridinol (M-H)\tC5H2Cl3N1O1 (13C:1, 37Cl:1)\t[M-H]-\t-1\tnegative\t195.912920724\t1\t499.2\t198.913325101909\n+3,5,6-Trichloro-2-pyridinol (M-H)\tC5H2Cl3N1O1 (13C:0, 37Cl:2)\t[M-H]-\t-1\tnegative\t195.912920724\t1\t499.2\t199.907020151909\n+3,5,6-Trichloro-2-pyridinol (M-H)\tC5H2Cl3N1O1 (13C:0, 37Cl:3)\t[M-H]-\t-1\tnegative\t195.912920724\t1\t499.2\t201.904070041909\n+3-phenoxybenzoic acid (M-H)\tC13H10O3 (13C:0)\t[M-H]-\t-1\tnegative\t213.05571818\t1\t517.8\t213.055717727909\n+3-phenoxybenzoic acid (M-H)\tC13H10O3 (13C:1)\t[M-H]-\t-1\tnegative\t213.05571818\t1\t517.8\t214.059072567909\n+4-Fluoro-3-phenoxybenzoic acid (M-H)\tC13H9F1O3 (13C:0)\t[M-H]-\t-1\tnegative\t231.04629636800001\t1\t532.2\t231.046295895909\n+4-Fluoro-3-phenoxybenzoic acid (M-H)\tC13H9F1O3 (13C:1)\t[M-H]-\t-1\tnegative\t231.04629636800001\t1\t532.2\t232.049650735909\n+4-nitrophenol (M-H)\tC6H5N1O3 (13C:0)\t[M-H]-\t-1\tnegative\t138.01966702000001\t1\t165\t138.019666577909\n+4-nitrophenol (M-H)\tC6H5N1O3 (13C:1)\t[M-H]-\t-1\tnegative\t138.01966702000001\t1\t165\t139.023021417909\n+6-Chloronicotinic acid (M-H)\tC6H4Cl1N1O2 (13C:0, 37Cl:0)\t[M-H]-\t-1\tnegative\t155.985780048\t1\t172.2\t155.985779635909\n+6-Chloronicotinic acid (M-H)\tC6H4Cl1N1O2 (13C:1, 37Cl:0)\t[M-H]-\t-1\tnegative\t155.985780048\t1\t172.2\t156.989134475909\n+6-Chloronicotinic acid (M-H)\tC6H4Cl1N1O2 (13C:0, 37Cl:1)\t[M-H]-\t-1\tnegative\t155.985780048\t1\t172.2\t157.982829525909\n+6-Chloronicotinic acid (M-H)\tC6H4Cl1N1O2 (13C:1, 37Cl:1)\t[M-H]-\t-1\tnegative\t155.985780048\t1\t172.2\t158.986184365909\n+Acetochlor mercapturate (M-H)\tC19H28N2O5S1 (13C:0, 34S:0)\t[M-H]-\t-1\tnegative\t395.164616996\t1\t607.2\t395.164616293909\n+Acetochlor mercapturate (M-H)\tC19H28N2O5S1 (13C:1, 34S:0)\t[M-H]-\t-1\tnegative\t395.164616996\t1\t607.2\t396.167971133909\n+Acetochlor mercapturate (M-H)\tC19H28N2O5S1 (13C:0, 34S:1)\t[M-H]-\t-1\tnegative\t395.164616996\t1\t607.2\t397.160412433909\n+Acetochlor mercapturate (M-H)\tC19H28N2O5S1 (13C:2, 34S:0)\t[M-H]-\t-1\tnegative\t395.164616996\t1\t607.2\t397.171325973909\n+Alachlor mercapturate (M-H)\tC19H28N2O5S1 (13C:0, 34S:0)\t[M-H]-\t-1\tnegative\t395.164616996\t1\t607.2\t395.164616293909\n+Alachlor mercapturate (M-H)\tC19H28N2O5S1 (13C:1, 34S:0)\t[M-H]-\t-1\tnegative\t395.164616996\t1\t607.2\t396.167971133909\n+Alachlor mercapturate (M-H)\tC19H28N2O5S1 (13C:0, 34S:1)\t[M-H]-\t-1\tnegative\t395.164616996\t1\t607.2\t397.160412433909\n+Alachlor mercapturate (M-H)\tC19H28N2O5S1 (13C:2, 34S:0)\t[M-H]-\t-1\tnegative\t395.164616996\t1\t607.2\t397.171325973909\n+Bentazone (M-H)\tC10H12N2O3S1 (13C:0, 34S:0)\t[M-H]-\t-1\tnegative\t239.049587244\t1\t747.6\t239.049586541909\n+Bentazone (M-H)\tC10H12N2O3S1 (13C:1, 34S:0)\t[M-H]-\t-1\tnegative\t239.049587244\t1\t747.6\t240.052941381909\n+Bentazone (M-H)\tC10H12N2O3S1 (13C:0, 34S'..b'luopyram (M-H)\tC16H11Cl1F6N2O1 (13C:0, 37Cl:1)\t[M-H]-\t-1\tnegative\t395.039133972\t1\t725.4\t397.036183339909\n+Fluopyram (M-H)\tC16H11Cl1F6N2O1 (13C:1, 37Cl:1)\t[M-H]-\t-1\tnegative\t395.039133972\t1\t725.4\t398.039538179909\n+Mecoprop (M-H)\tC10H11Cl1O3 (13C:0, 37Cl:0)\t[M-H]-\t-1\tnegative\t213.032395892\t1\t544.8\t213.032395469909\n+Mecoprop (M-H)\tC10H11Cl1O3 (13C:1, 37Cl:0)\t[M-H]-\t-1\tnegative\t213.032395892\t1\t544.8\t214.035750309909\n+Mecoprop (M-H)\tC10H11Cl1O3 (13C:0, 37Cl:1)\t[M-H]-\t-1\tnegative\t213.032395892\t1\t544.8\t215.029445359909\n+Mecoprop (M-H)\tC10H11Cl1O3 (13C:1, 37Cl:1)\t[M-H]-\t-1\tnegative\t213.032395892\t1\t544.8\t216.032800199909\n+p-Toluenesulfonamide (M-H)\tC7H9N1O2S1 (13C:0, 34S:0)\t[M-H]-\t-1\tnegative\t170.028123528\t1\t362.4\t170.028122815909\n+p-Toluenesulfonamide (M-H)\tC7H9N1O2S1 (13C:1, 34S:0)\t[M-H]-\t-1\tnegative\t170.028123528\t1\t362.4\t171.031477655909\n+p-Toluenesulfonamide (M-H)\tC7H9N1O2S1 (13C:0, 34S:1)\t[M-H]-\t-1\tnegative\t170.028123528\t1\t362.4\t172.023918955909\n+Triclosan (M-H)\tC12H7Cl3O2 (13C:0, 37Cl:0)\t[M-H]-\t-1\tnegative\t286.943886504\t1\t811.8\t286.943886141909\n+Triclosan (M-H)\tC12H7Cl3O2 (13C:1, 37Cl:0)\t[M-H]-\t-1\tnegative\t286.943886504\t1\t811.8\t287.947240981909\n+Triclosan (M-H)\tC12H7Cl3O2 (13C:0, 37Cl:1)\t[M-H]-\t-1\tnegative\t286.943886504\t1\t811.8\t288.940936031909\n+Triclosan (M-H)\tC12H7Cl3O2 (13C:1, 37Cl:1)\t[M-H]-\t-1\tnegative\t286.943886504\t1\t811.8\t289.944290871909\n+Triclosan (M-H)\tC12H7Cl3O2 (13C:0, 37Cl:2)\t[M-H]-\t-1\tnegative\t286.943886504\t1\t811.8\t290.937985921909\n+Triclosan (M-H)\tC12H7Cl3O2 (13C:1, 37Cl:2)\t[M-H]-\t-1\tnegative\t286.943886504\t1\t811.8\t291.941340761909\n+Triclosan (M-H)\tC12H7Cl3O2 (13C:0, 37Cl:3)\t[M-H]-\t-1\tnegative\t286.943886504\t1\t811.8\t292.935035811909\n+Triclosan glucuronide (M-H)\tC18H15Cl3O8 (13C:0, 37Cl:0)\t[M-H]-\t-1\tnegative\t462.97597448\t1\t665.4\t462.975974117909\n+Triclosan glucuronide (M-H)\tC18H15Cl3O8 (13C:1, 37Cl:0)\t[M-H]-\t-1\tnegative\t462.97597448\t1\t665.4\t463.979328957909\n+Triclosan glucuronide (M-H)\tC18H15Cl3O8 (13C:0, 37Cl:1)\t[M-H]-\t-1\tnegative\t462.97597448\t1\t665.4\t464.973024007909\n+Triclosan glucuronide (M-H)\tC18H15Cl3O8 (13C:1, 37Cl:1)\t[M-H]-\t-1\tnegative\t462.97597448\t1\t665.4\t465.976378847909\n+Triclosan glucuronide (M-H)\tC18H15Cl3O8 (13C:0, 37Cl:2)\t[M-H]-\t-1\tnegative\t462.97597448\t1\t665.4\t466.970073897909\n+Triclosan glucuronide (M-H)\tC18H15Cl3O8 (13C:1, 37Cl:2)\t[M-H]-\t-1\tnegative\t462.97597448\t1\t665.4\t467.973428737909\n+Triclosan glucuronide (M-H)\tC18H15Cl3O8 (13C:0, 37Cl:3)\t[M-H]-\t-1\tnegative\t462.97597448\t1\t665.4\t468.967123787909\n+Triclosan sulfate (M-H)\tC12H7Cl3O5S1 (13C:0, 37Cl:0, 34S:0)\t[M-H]-\t-1\tnegative\t366.900701364\t1\t695.4\t366.900700731909\n+Triclosan sulfate (M-H)\tC12H7Cl3O5S1 (13C:1, 37Cl:0, 34S:0)\t[M-H]-\t-1\tnegative\t366.900701364\t1\t695.4\t367.904055571909\n+Triclosan sulfate (M-H)\tC12H7Cl3O5S1 (13C:0, 37Cl:0, 34S:1)\t[M-H]-\t-1\tnegative\t366.900701364\t1\t695.4\t368.896496871909\n+Triclosan sulfate (M-H)\tC12H7Cl3O5S1 (13C:0, 37Cl:1, 34S:0)\t[M-H]-\t-1\tnegative\t366.900701364\t1\t695.4\t368.897750621909\n+Triclosan sulfate (M-H)\tC12H7Cl3O5S1 (13C:1, 37Cl:1, 34S:0)\t[M-H]-\t-1\tnegative\t366.900701364\t1\t695.4\t369.901105461909\n+Triclosan sulfate (M-H)\tC12H7Cl3O5S1 (13C:0, 37Cl:1, 34S:1)\t[M-H]-\t-1\tnegative\t366.900701364\t1\t695.4\t370.893546761909\n+Triclosan sulfate (M-H)\tC12H7Cl3O5S1 (13C:0, 37Cl:2, 34S:0)\t[M-H]-\t-1\tnegative\t366.900701364\t1\t695.4\t370.894800511909\n+Triclosan sulfate (M-H)\tC12H7Cl3O5S1 (13C:1, 37Cl:2, 34S:0)\t[M-H]-\t-1\tnegative\t366.900701364\t1\t695.4\t371.898155351909\n+Triclosan sulfate (M-H)\tC12H7Cl3O5S1 (13C:0, 37Cl:3, 34S:0)\t[M-H]-\t-1\tnegative\t366.900701364\t1\t695.4\t372.891850401909\n+acetamiprid-N-desmethyl (M-H)\tC9H9N4Cl1 (13C:0, 37Cl:0)\t[M-H]-\t-1\tnegative\t207.044297968\t1\t402.6\t207.044297585909\n+acetamiprid-N-desmethyl (M-H)\tC9H9N4Cl1 (13C:1, 37Cl:0)\t[M-H]-\t-1\tnegative\t207.044297968\t1\t402.6\t208.047652425909\n+acetamiprid-N-desmethyl (M-H)\tC9H9N4Cl1 (13C:0, 37Cl:1)\t[M-H]-\t-1\tnegative\t207.044297968\t1\t402.6\t209.041347475909\n+acetamiprid-N-desmethyl (M-H)\tC9H9N4Cl1 (13C:1, 37Cl:1)\t[M-H]-\t-1\tnegative\t207.044297968\t1\t402.6\t210.044702315909\n'
b
diff -r 2b1118bce0b1 -r 964b4559eb1b test-data/test6.tabular
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/test6.tabular Thu May 15 16:42:56 2025 +0000
[
b'@@ -0,0 +1,366 @@\n+name\tadduct\tformula\tcharge\tionization_mode\tprecursor_mz\tmsLevel\trt\tmz\tisotopes\n+2,4-Dichlorophenoxyacetic acid ou 2,4-D (M-H)\t[M-H]-\tC8H6Cl2O3\t-1\tnegative\t218.962123412\t1\t484.2\t218.962123019909\t13C:0, 37Cl:0\n+2,4-Dichlorophenoxyacetic acid ou 2,4-D (M-H)\t[M-H]-\tC8H6Cl2O3\t-1\tnegative\t218.962123412\t1\t484.2\t219.965477859909\t13C:1, 37Cl:0\n+2,4-Dichlorophenoxyacetic acid ou 2,4-D (M-H)\t[M-H]-\tC8H6Cl2O3\t-1\tnegative\t218.962123412\t1\t484.2\t220.959172909909\t13C:0, 37Cl:1\n+2,4-Dichlorophenoxyacetic acid ou 2,4-D (M-H)\t[M-H]-\tC8H6Cl2O3\t-1\tnegative\t218.962123412\t1\t484.2\t221.962527749909\t13C:1, 37Cl:1\n+2,4-Dichlorophenoxyacetic acid ou 2,4-D (M-H)\t[M-H]-\tC8H6Cl2O3\t-1\tnegative\t218.962123412\t1\t484.2\t222.956222799909\t13C:0, 37Cl:2\n+2-diethylamino-6-methyl pyrimidin-4-ol/one (M-H)\t[M-H]-\tC9H15N3O1\t-1\tnegative\t180.1142361\t1\t451.8\t180.114235677909\t13C:0, 15N:0\n+2-diethylamino-6-methyl pyrimidin-4-ol/one (M-H)\t[M-H]-\tC9H15N3O1\t-1\tnegative\t180.1142361\t1\t451.8\t181.111270637909\t13C:0, 15N:1\n+2-diethylamino-6-methyl pyrimidin-4-ol/one (M-H)\t[M-H]-\tC9H15N3O1\t-1\tnegative\t180.1142361\t1\t451.8\t181.117590517909\t13C:1, 15N:0\n+3,5,6-Trichloro-2-pyridinol (M-H)\t[M-H]-\tC5H2Cl3N1O1\t-1\tnegative\t195.912920724\t1\t499.2\t195.912920371909\t13C:0, 37Cl:0\n+3,5,6-Trichloro-2-pyridinol (M-H)\t[M-H]-\tC5H2Cl3N1O1\t-1\tnegative\t195.912920724\t1\t499.2\t196.916275211909\t13C:1, 37Cl:0\n+3,5,6-Trichloro-2-pyridinol (M-H)\t[M-H]-\tC5H2Cl3N1O1\t-1\tnegative\t195.912920724\t1\t499.2\t197.909970261909\t13C:0, 37Cl:1\n+3,5,6-Trichloro-2-pyridinol (M-H)\t[M-H]-\tC5H2Cl3N1O1\t-1\tnegative\t195.912920724\t1\t499.2\t198.913325101909\t13C:1, 37Cl:1\n+3,5,6-Trichloro-2-pyridinol (M-H)\t[M-H]-\tC5H2Cl3N1O1\t-1\tnegative\t195.912920724\t1\t499.2\t199.907020151909\t13C:0, 37Cl:2\n+3,5,6-Trichloro-2-pyridinol (M-H)\t[M-H]-\tC5H2Cl3N1O1\t-1\tnegative\t195.912920724\t1\t499.2\t200.910374991909\t13C:1, 37Cl:2\n+3,5,6-Trichloro-2-pyridinol (M-H)\t[M-H]-\tC5H2Cl3N1O1\t-1\tnegative\t195.912920724\t1\t499.2\t201.904070041909\t13C:0, 37Cl:3\n+3-phenoxybenzoic acid (M-H)\t[M-H]-\tC13H10O3\t-1\tnegative\t213.05571818\t1\t517.8\t213.055717727909\t13C:0\n+3-phenoxybenzoic acid (M-H)\t[M-H]-\tC13H10O3\t-1\tnegative\t213.05571818\t1\t517.8\t214.059072567909\t13C:1\n+4-Fluoro-3-phenoxybenzoic acid (M-H)\t[M-H]-\tC13H9F1O3\t-1\tnegative\t231.04629636800001\t1\t532.2\t231.046295895909\t13C:0\n+4-Fluoro-3-phenoxybenzoic acid (M-H)\t[M-H]-\tC13H9F1O3\t-1\tnegative\t231.04629636800001\t1\t532.2\t232.049650735909\t13C:1\n+4-nitrophenol (M-H)\t[M-H]-\tC6H5N1O3\t-1\tnegative\t138.01966702000001\t1\t165\t138.019666577909\t13C:0\n+4-nitrophenol (M-H)\t[M-H]-\tC6H5N1O3\t-1\tnegative\t138.01966702000001\t1\t165\t139.023021417909\t13C:1\n+6-Chloronicotinic acid (M-H)\t[M-H]-\tC6H4Cl1N1O2\t-1\tnegative\t155.985780048\t1\t172.2\t155.985779635909\t13C:0, 37Cl:0\n+6-Chloronicotinic acid (M-H)\t[M-H]-\tC6H4Cl1N1O2\t-1\tnegative\t155.985780048\t1\t172.2\t156.989134475909\t13C:1, 37Cl:0\n+6-Chloronicotinic acid (M-H)\t[M-H]-\tC6H4Cl1N1O2\t-1\tnegative\t155.985780048\t1\t172.2\t157.982829525909\t13C:0, 37Cl:1\n+6-Chloronicotinic acid (M-H)\t[M-H]-\tC6H4Cl1N1O2\t-1\tnegative\t155.985780048\t1\t172.2\t158.986184365909\t13C:1, 37Cl:1\n+Acetochlor mercapturate (M-H)\t[M-H]-\tC19H28N2O5S1\t-1\tnegative\t395.164616996\t1\t607.2\t395.164616293909\t13C:0, 18O:0, 34S:0\n+Acetochlor mercapturate (M-H)\t[M-H]-\tC19H28N2O5S1\t-1\tnegative\t395.164616996\t1\t607.2\t396.167971133909\t13C:1, 18O:0, 34S:0\n+Acetochlor mercapturate (M-H)\t[M-H]-\tC19H28N2O5S1\t-1\tnegative\t395.164616996\t1\t607.2\t397.160412433909\t13C:0, 18O:0, 34S:1\n+Acetochlor mercapturate (M-H)\t[M-H]-\tC19H28N2O5S1\t-1\tnegative\t395.164616996\t1\t607.2\t397.168862073909\t13C:0, 18O:1, 34S:0\n+Acetochlor mercapturate (M-H)\t[M-H]-\tC19H28N2O5S1\t-1\tnegative\t395.164616996\t1\t607.2\t397.171325973909\t13C:2, 18O:0, 34S:0\n+Alachlor mercapturate (M-H)\t[M-H]-\tC19H28N2O5S1\t-1\tnegative\t395.164616996\t1\t607.2\t395.164616293909\t13C:0, 18O:0, 34S:0\n+Alachlor mercapturate (M-H)\t[M-H]-\tC19H28N2O5S1\t-1\tnegative\t395.164616996\t1\t607.2\t396.167971133909\t13C:1, 18O:0, 34S:0\n+Alachlor mercapturate (M-H)\t[M-H]-\tC19H28N2O5S1\t-1\tnegative\t395.164616996\t1\t607.2\t397.160412433909\t'..b'909\t13C:0, 37Cl:1, 18O:0, 34S:0, 33S:1\n+Triclosan sulfate (2M-H)\t[2M-H]-\tC12H7Cl3O5S1\t-1\tnegative\t734.8086787279999\t1\t695.4\t737.807828895909\t13C:1, 37Cl:0, 18O:0, 34S:1, 33S:0\n+Triclosan sulfate (2M-H)\t[2M-H]-\tC12H7Cl3O5S1\t-1\tnegative\t734.8086787279999\t1\t695.4\t737.809082645909\t13C:1, 37Cl:1, 18O:0, 34S:0, 33S:0\n+Triclosan sulfate (2M-H)\t[2M-H]-\tC12H7Cl3O5S1\t-1\tnegative\t734.8086787279999\t1\t695.4\t738.801523945909\t13C:0, 37Cl:1, 18O:0, 34S:1, 33S:0\n+Triclosan sulfate (2M-H)\t[2M-H]-\tC12H7Cl3O5S1\t-1\tnegative\t734.8086787279999\t1\t695.4\t738.802777695909\t13C:0, 37Cl:2, 18O:0, 34S:0, 33S:0\n+Triclosan sulfate (2M-H)\t[2M-H]-\tC12H7Cl3O5S1\t-1\tnegative\t734.8086787279999\t1\t695.4\t738.809973585909\t13C:0, 37Cl:1, 18O:1, 34S:0, 33S:0\n+Triclosan sulfate (2M-H)\t[2M-H]-\tC12H7Cl3O5S1\t-1\tnegative\t734.8086787279999\t1\t695.4\t738.812437485909\t13C:2, 37Cl:1, 18O:0, 34S:0, 33S:0\n+Triclosan sulfate (2M-H)\t[2M-H]-\tC12H7Cl3O5S1\t-1\tnegative\t734.8086787279999\t1\t695.4\t739.802165505909\t13C:0, 37Cl:2, 18O:0, 34S:0, 33S:1\n+Triclosan sulfate (2M-H)\t[2M-H]-\tC12H7Cl3O5S1\t-1\tnegative\t734.8086787279999\t1\t695.4\t739.804878785909\t13C:1, 37Cl:1, 18O:0, 34S:1, 33S:0\n+Triclosan sulfate (2M-H)\t[2M-H]-\tC12H7Cl3O5S1\t-1\tnegative\t734.8086787279999\t1\t695.4\t739.806132535909\t13C:1, 37Cl:2, 18O:0, 34S:0, 33S:0\n+Triclosan sulfate (2M-H)\t[2M-H]-\tC12H7Cl3O5S1\t-1\tnegative\t734.8086787279999\t1\t695.4\t740.798573835909\t13C:0, 37Cl:2, 18O:0, 34S:1, 33S:0\n+Triclosan sulfate (2M-H)\t[2M-H]-\tC12H7Cl3O5S1\t-1\tnegative\t734.8086787279999\t1\t695.4\t740.799827585909\t13C:0, 37Cl:3, 18O:0, 34S:0, 33S:0\n+Triclosan sulfate (2M-H)\t[2M-H]-\tC12H7Cl3O5S1\t-1\tnegative\t734.8086787279999\t1\t695.4\t740.807023475909\t13C:0, 37Cl:2, 18O:1, 34S:0, 33S:0\n+Triclosan sulfate (2M-H)\t[2M-H]-\tC12H7Cl3O5S1\t-1\tnegative\t734.8086787279999\t1\t695.4\t740.809487375909\t13C:2, 37Cl:2, 18O:0, 34S:0, 33S:0\n+Triclosan sulfate (2M-H)\t[2M-H]-\tC12H7Cl3O5S1\t-1\tnegative\t734.8086787279999\t1\t695.4\t741.801928675909\t13C:1, 37Cl:2, 18O:0, 34S:1, 33S:0\n+Triclosan sulfate (2M-H)\t[2M-H]-\tC12H7Cl3O5S1\t-1\tnegative\t734.8086787279999\t1\t695.4\t741.803182425909\t13C:1, 37Cl:3, 18O:0, 34S:0, 33S:0\n+Triclosan sulfate (2M-H)\t[2M-H]-\tC12H7Cl3O5S1\t-1\tnegative\t734.8086787279999\t1\t695.4\t742.795623725909\t13C:0, 37Cl:3, 18O:0, 34S:1, 33S:0\n+Triclosan sulfate (2M-H)\t[2M-H]-\tC12H7Cl3O5S1\t-1\tnegative\t734.8086787279999\t1\t695.4\t742.796877475909\t13C:0, 37Cl:4, 18O:0, 34S:0, 33S:0\n+Triclosan sulfate (2M-H)\t[2M-H]-\tC12H7Cl3O5S1\t-1\tnegative\t734.8086787279999\t1\t695.4\t742.806537265909\t13C:2, 37Cl:3, 18O:0, 34S:0, 33S:0\n+Triclosan sulfate (2M-H)\t[2M-H]-\tC12H7Cl3O5S1\t-1\tnegative\t734.8086787279999\t1\t695.4\t743.800232315909\t13C:1, 37Cl:4, 18O:0, 34S:0, 33S:0\n+Triclosan sulfate (2M-H)\t[2M-H]-\tC12H7Cl3O5S1\t-1\tnegative\t734.8086787279999\t1\t695.4\t744.793927365909\t13C:0, 37Cl:5, 18O:0, 34S:0, 33S:0\n+acetamiprid-N-desmethyl (2M-H)\t[2M-H]-\tC9H9N4Cl1\t-1\tnegative\t415.095871936\t1\t402.6\t415.095871623909\t13C:0, 15N:0, 37Cl:0\n+acetamiprid-N-desmethyl (2M-H)\t[2M-H]-\tC9H9N4Cl1\t-1\tnegative\t415.095871936\t1\t402.6\t416.092906583909\t13C:0, 15N:1, 37Cl:0\n+acetamiprid-N-desmethyl (2M-H)\t[2M-H]-\tC9H9N4Cl1\t-1\tnegative\t415.095871936\t1\t402.6\t416.099226463909\t13C:1, 15N:0, 37Cl:0\n+acetamiprid-N-desmethyl (2M-H)\t[2M-H]-\tC9H9N4Cl1\t-1\tnegative\t415.095871936\t1\t402.6\t417.092921513909\t13C:0, 15N:0, 37Cl:1\n+acetamiprid-N-desmethyl (2M-H)\t[2M-H]-\tC9H9N4Cl1\t-1\tnegative\t415.095871936\t1\t402.6\t417.102581303909\t13C:2, 15N:0, 37Cl:0\n+acetamiprid-N-desmethyl (2M-H)\t[2M-H]-\tC9H9N4Cl1\t-1\tnegative\t415.095871936\t1\t402.6\t418.089956473909\t13C:0, 15N:1, 37Cl:1\n+acetamiprid-N-desmethyl (2M-H)\t[2M-H]-\tC9H9N4Cl1\t-1\tnegative\t415.095871936\t1\t402.6\t418.096276353909\t13C:1, 15N:0, 37Cl:1\n+acetamiprid-N-desmethyl (2M-H)\t[2M-H]-\tC9H9N4Cl1\t-1\tnegative\t415.095871936\t1\t402.6\t419.089971403909\t13C:0, 15N:0, 37Cl:2\n+acetamiprid-N-desmethyl (2M-H)\t[2M-H]-\tC9H9N4Cl1\t-1\tnegative\t415.095871936\t1\t402.6\t419.099631193909\t13C:2, 15N:0, 37Cl:1\n+acetamiprid-N-desmethyl (2M-H)\t[2M-H]-\tC9H9N4Cl1\t-1\tnegative\t415.095871936\t1\t402.6\t420.093326243909\t13C:1, 15N:0, 37Cl:2\n'
b
diff -r 2b1118bce0b1 -r 964b4559eb1b test-data/test7.msp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/test7.msp Thu May 15 16:42:56 2025 +0000
[
b'@@ -0,0 +1,352 @@\n+NAME: 2,4-Dichlorophenoxyacetic acid ou 2,4-D (M+H)\n+msLevel: MS1\n+PRECURSORTYPE: [M+H]+\n+FORMULA: C8H6Cl2O3\n+charge: 1\n+ionization_mode: positive\n+precursor_mz: 220.976675412\n+retention_time: 484.2\n+Num Peaks: 5\n+220.976675924091 100\n+221.980030764091 8.65258263418579\n+222.973725814091 63.9915522703273\n+223.977080654091 5.53692193908827\n+224.970775704091 10.2372969049151\n+\n+NAME: 2-diethylamino-6-methyl pyrimidin-4-ol/one (M+H)\n+msLevel: MS1\n+PRECURSORTYPE: [M+H]+\n+FORMULA: C9H15N3O1\n+charge: 1\n+ionization_mode: positive\n+precursor_mz: 182.1287881\n+retention_time: 451.8\n+Num Peaks: 3\n+182.128788582091 100\n+183.125823542091 1.09598940142117\n+183.132143422091 9.73415546345901\n+\n+NAME: 3,5,6-Trichloro-2-pyridinol (M+H)\n+msLevel: MS1\n+PRECURSORTYPE: [M+H]+\n+FORMULA: C5H2Cl3N1O1\n+charge: 1\n+ionization_mode: positive\n+precursor_mz: 197.927472724\n+retention_time: 499.2\n+Num Peaks: 7\n+197.927473276091 100\n+198.930828116091 5.40786414636612\n+199.924523166091 95.987328405491\n+200.927878006091 5.19086431789525\n+201.921573056091 30.7118907147453\n+202.924927896091 1.66085732663385\n+203.918622946091 3.27550259998867\n+\n+NAME: 3-phenoxybenzoic acid (M+H)\n+msLevel: MS1\n+PRECURSORTYPE: [M+H]+\n+FORMULA: C13H10O3\n+charge: 1\n+ionization_mode: positive\n+precursor_mz: 215.07027018\n+retention_time: 517.8\n+Num Peaks: 2\n+215.070270632091 100\n+216.073625472091 14.0604467805519\n+\n+NAME: 4-Fluoro-3-phenoxybenzoic acid (M+H)\n+msLevel: MS1\n+PRECURSORTYPE: [M+H]+\n+FORMULA: C13H9F1O3\n+charge: 1\n+ionization_mode: positive\n+precursor_mz: 233.060848368\n+retention_time: 532.2\n+Num Peaks: 2\n+233.060848800091 100\n+234.064203640091 14.0604467805519\n+\n+NAME: 4-nitrophenol (M+H)\n+msLevel: MS1\n+PRECURSORTYPE: [M+H]+\n+FORMULA: C6H5N1O3\n+charge: 1\n+ionization_mode: positive\n+precursor_mz: 140.03421902\n+retention_time: 165\n+Num Peaks: 2\n+140.034219482091 100\n+141.037574322091 6.48943697563934\n+\n+NAME: 6-Chloronicotinic acid (M+H)\n+msLevel: MS1\n+PRECURSORTYPE: [M+H]+\n+FORMULA: C6H4Cl1N1O2\n+charge: 1\n+ionization_mode: positive\n+precursor_mz: 158.000332048\n+retention_time: 172.2\n+Num Peaks: 4\n+158.000332540091 100\n+159.003687380091 6.48943697563934\n+159.997382430091 31.9957761351637\n+161.000737270091 2.0763457271581\n+\n+NAME: Acetochlor mercapturate (M+H)\n+msLevel: MS1\n+PRECURSORTYPE: [M+H]+\n+FORMULA: C19H28N2O5S1\n+charge: 1\n+ionization_mode: positive\n+precursor_mz: 397.179168996\n+retention_time: 607.2\n+Num Peaks: 5\n+397.179169198091 100\n+398.182524038091 20.5498837561912\n+399.174965338091 4.47415517422887\n+399.183414978091 1.02749681726596\n+399.185878878091 2.00035763238777\n+\n+NAME: Alachlor mercapturate (M+H)\n+msLevel: MS1\n+PRECURSORTYPE: [M+H]+\n+FORMULA: C19H28N2O5S1\n+charge: 1\n+ionization_mode: positive\n+precursor_mz: 397.179168996\n+retention_time: 607.2\n+Num Peaks: 5\n+397.179169198091 100\n+398.182524038091 20.5498837561912\n+399.174965338091 4.47415517422887\n+399.183414978091 1.02749681726596\n+399.185878878091 2.00035763238777\n+\n+NAME: Bentazone (M+H)\n+msLevel: MS1\n+PRECURSORTYPE: [M+H]+\n+FORMULA: C10H12N2O3S1\n+charge: 1\n+ionization_mode: positive\n+precursor_mz: 241.064139244\n+retention_time: 747.6\n+Num Peaks: 3\n+241.064139446091 100\n+242.067494286091 10.8157282927322\n+243.059935586091 4.47415517422887\n+\n+NAME: Diethylthiophosphate (M+H)\n+msLevel: MS1\n+PRECURSORTYPE: [M+H]+\n+FORMULA: C4H11O3P1S1\n+charge: 1\n+ionization_mode: positive\n+precursor_mz: 171.023927842\n+retention_time: 177\n+Num Peaks: 3\n+171.023927884091 100\n+172.027282724091 4.32629131709289\n+173.019724024091 4.47415517422887\n+\n+NAME: Fenhexamid (M+H)\n+msLevel: MS1\n+PRECURSORTYPE: [M+H]+\n+FORMULA: C14H17Cl2N1O2\n+charge: 1\n+ionization_mode: positive\n+precursor_mz: 302.070910144\n+retention_time: 689.4\n+Num Peaks: 7\n+302.070910666091 100\n+303.074265506091 15.1420196098251\n+304.067960556091 63.9915522703273\n+304.077620346091 1.0645178043701\n+305.071315396091 9.68961339340446\n+306.065010446091 10.2372969049151\n+307.068365286091 1.55013350485826\n+\n+NAME: Fenvalerate free acid (M+H)\n+msLevel: MS1\n+'..b' 12.9788739512787\n+438.941778730091 4.47415517422887\n+438.943032480091 63.9915522703273\n+439.946387320091 8.3053829086324\n+440.938828620091 2.86308134697222\n+440.940082370091 10.2372969049151\n+441.943437210091 1.32868586130708\n+\n+NAME: Fipronil sulfone (M+H)\n+msLevel: MS1\n+PRECURSORTYPE: [M+H]+\n+FORMULA: C12H4Cl2F6N4O2S1\n+charge: 1\n+ionization_mode: positive\n+precursor_mz: 452.940897048\n+retention_time: 771\n+Num Peaks: 9\n+452.940897210091 100\n+453.937932170091 1.4613192018949\n+453.944252050091 12.9788739512787\n+454.936693350091 4.47415517422887\n+454.937947100091 63.9915522703273\n+455.941301940091 8.3053829086324\n+456.933743240091 2.86308134697222\n+456.934996990091 10.2372969049151\n+457.938351830091 1.32868586130708\n+\n+NAME: Hydroxy-tebuconazole (M+H)\n+msLevel: MS1\n+PRECURSORTYPE: [M+H]+\n+FORMULA: C16H22Cl1N3O2\n+charge: 1\n+ionization_mode: positive\n+precursor_mz: 324.147330624\n+retention_time: 696.6\n+Num Peaks: 6\n+324.147331136091 100\n+325.144366096091 1.09598940142117\n+325.150685976091 17.3051652683716\n+326.144381026091 31.9957761351637\n+326.154040816091 1.4037597420265\n+327.147735866091 5.53692193908827\n+\n+NAME: Fluopyram (M+H)\n+msLevel: MS1\n+PRECURSORTYPE: [M+H]+\n+FORMULA: C16H11Cl1F6N2O1\n+charge: 1\n+ionization_mode: positive\n+precursor_mz: 397.053685972\n+retention_time: 725.4\n+Num Peaks: 5\n+397.053686354091 100\n+398.057041194091 17.3051652683716\n+399.050736244091 31.9957761351637\n+399.060396034091 1.4037597420265\n+400.054091084091 5.53692193908827\n+\n+NAME: Mecoprop (M+H)\n+msLevel: MS1\n+PRECURSORTYPE: [M+H]+\n+FORMULA: C10H11Cl1O3\n+charge: 1\n+ionization_mode: positive\n+precursor_mz: 215.046947892\n+retention_time: 544.8\n+Num Peaks: 4\n+215.046948374091 100\n+216.050303214091 10.8157282927322\n+217.043998264091 31.9957761351637\n+218.047353104091 3.46057621193017\n+\n+NAME: p-Toluenesulfonamide (M+H)\n+msLevel: MS1\n+PRECURSORTYPE: [M+H]+\n+FORMULA: C7H9N1O2S1\n+charge: 1\n+ionization_mode: positive\n+precursor_mz: 172.042675528\n+retention_time: 362.4\n+Num Peaks: 3\n+172.042675720091 100\n+173.046030560091 7.57100980491256\n+174.038471860091 4.47415517422887\n+\n+NAME: Triclosan (M+H)\n+msLevel: MS1\n+PRECURSORTYPE: [M+H]+\n+FORMULA: C12H7Cl3O2\n+charge: 1\n+ionization_mode: positive\n+precursor_mz: 288.958438504\n+retention_time: 811.8\n+Num Peaks: 7\n+288.958439046091 100\n+289.961793886091 12.9788739512787\n+290.955488936091 95.987328405491\n+291.958843776091 12.4580743629486\n+292.952538826091 30.7118907147453\n+293.955893666091 3.98605758392125\n+294.949588716091 3.27550259998867\n+\n+NAME: Triclosan glucuronide (M+H)\n+msLevel: MS1\n+PRECURSORTYPE: [M+H]+\n+FORMULA: C18H15Cl3O8\n+charge: 1\n+ionization_mode: positive\n+precursor_mz: 464.99052648\n+retention_time: 665.4\n+Num Peaks: 11\n+464.990527022091 100\n+465.993881862091 19.468310926918\n+466.987576912091 95.987328405491\n+466.994772802091 1.64399490762553\n+466.997236702091 1.78979367108379\n+467.990931752091 18.6871115444229\n+468.984626802091 30.7118907147453\n+468.991822692091 1.57802679095207\n+468.994286592091 1.71797512884389\n+469.987981642091 5.97908637588188\n+470.981676692091 3.27550259998867\n+\n+NAME: Triclosan sulfate (M+H)\n+msLevel: MS1\n+PRECURSORTYPE: [M+H]+\n+FORMULA: C12H7Cl3O5S1\n+charge: 1\n+ionization_mode: positive\n+precursor_mz: 368.915253364\n+retention_time: 695.4\n+Num Peaks: 11\n+368.915253636091 100\n+369.918608476091 12.9788739512787\n+370.911049776091 4.47415517422887\n+370.912303526091 95.987328405491\n+370.919499416091 1.02749681726596\n+371.915658366091 12.4580743629486\n+372.908099666091 4.29462202045833\n+372.909353416091 30.7118907147453\n+373.912708256091 3.98605758392125\n+374.905149556091 1.37409764751729\n+374.906403306091 3.27550259998867\n+\n+NAME: acetamiprid-N-desmethyl (M+H)\n+msLevel: MS1\n+PRECURSORTYPE: [M+H]+\n+FORMULA: C9H9N4Cl1\n+charge: 1\n+ionization_mode: positive\n+precursor_mz: 209.058849968\n+retention_time: 402.6\n+Num Peaks: 5\n+209.058850490091 100\n+210.055885450091 1.4613192018949\n+210.062205330091 9.73415546345901\n+211.055900380091 31.9957761351637\n+212.059255220091 3.11451859073715\n+\n'