Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

XCMS tools for plotting EIC and Peaks #523

Closed
wants to merge 24 commits into from
Closed
Show file tree
Hide file tree
Changes from 9 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 17 additions & 0 deletions tools/xcms/.shed.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
name: xcms_plot
owner: recetox
remote_repository_url: "https://github.com/RECETOX/galaxytools/tree/master/tools/plot_eic"
wverastegui marked this conversation as resolved.
Show resolved Hide resolved
homepage_url: "https://github.com/RECETOX/galaxytools"
categories:
- Metabolomics
description: XCMS and Spectra plotting tools
wverastegui marked this conversation as resolved.
Show resolved Hide resolved
long_description: |

hechth marked this conversation as resolved.
Show resolved Hide resolved
type: unrestricted
auto_tool_repositories:
name_template: "{{ tool_id }}"
description_template: "{{ tool_name }} tool from the xcms package"
suite:
name: suite_xcms_plot
description: tools from xcms are used for visualization of raw data
hechth marked this conversation as resolved.
Show resolved Hide resolved
type: repository_suite_definition
21 changes: 21 additions & 0 deletions tools/xcms/macros.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
<macros>
<token name="@TOOL_VERSION@">4.0.0</token>
<xml name="creator">
<creator>
<person
givenName="Wudmir"
familyName="Rojas"
url="https://github.com/wverastegui"
identifier="0000-0001-7036-9987" />
<person
givenName="Helge"
familyName="Hecht"
url="https://github.com/hechth"
identifier="0000-0001-6744-996X" />
<organization
url="https://www.recetox.muni.cz/"
email="GalaxyToolsDevelopmentandDeployment@space.muni.cz"
name="RECETOX MUNI"/>
</creator>
</xml>
</macros>
Binary file added tools/xcms/test-data/eic_plot.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added tools/xcms/test-data/raw_plot.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3,801 changes: 3,801 additions & 0 deletions tools/xcms/test-data/xcms_plot_eic_testdata.mzML

Large diffs are not rendered by default.

212 changes: 212 additions & 0 deletions tools/xcms/test-data/xcms_plot_raw_testdata.mzML
Original file line number Diff line number Diff line change
@@ -0,0 +1,212 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<indexedmzML xmlns="http://psi.hupo.org/ms/mzml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://psi.hupo.org/ms/mzml http://psidev.info/files/ms/mzML/xsd/mzML1.1.0_idx.xsd">
<mzML xmlns="http://psi.hupo.org/ms/mzml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://psi.hupo.org/ms/mzml http://psidev.info/files/ms/mzML/xsd/mzML1.1.0.xsd" accession="" version="1.1.0">
<cvList count="5">
<cv id="MS" fullName="Proteomics Standards Initiative Mass Spectrometry Ontology" URI="http://psidev.cvs.sourceforge.net/*checkout*/psidev/psi/psi-ms/mzML/controlledVocabulary/psi-ms.obo"/>
<cv id="UO" fullName="Unit Ontology" URI="http://obo.cvs.sourceforge.net/obo/obo/ontology/phenotype/unit.obo"/>
<cv id="BTO" fullName="BrendaTissue545" version="unknown" URI="http://www.brenda-enzymes.info/ontology/tissue/tree/update/update_files/BrendaTissueOBO"/>
<cv id="GO" fullName="Gene Ontology - Slim Versions" version="unknown" URI="http://www.geneontology.org/GO_slims/goslim_goa.obo"/>
<cv id="PATO" fullName="Quality ontology" version="unknown" URI="http://obo.cvs.sourceforge.net/*checkout*/obo/obo/ontology/phenotype/quality.obo"/>
</cvList>
<fileDescription>
<fileContent>
<cvParam cvRef="MS" accession="MS:1000294" name="mass spectrum" />
</fileContent>
<sourceFileList count="1">
<sourceFile id="sf_ru_0" name="RCX_06_shortened.mzML" location="file:///C:/Users/473355/Downloads">
<cvParam cvRef="MS" accession="MS:1000569" name="SHA-1" value="6c9fc5a54e7e588b4940994f66c953de66f8e8c5" />
<cvParam cvRef="MS" accession="MS:1000584" name="mzML format" />
<cvParam cvRef="MS" accession="MS:1000777" name="spectrum identifier nativeID format" />
</sourceFile>
</sourceFileList>
</fileDescription>
<sampleList count="1">
<sample id="sa_0" name="">
<cvParam cvRef="MS" accession="MS:1000004" name="sample mass" value="0" unitAccession="UO:0000021" unitName="gram" unitCvRef="UO" />
<cvParam cvRef="MS" accession="MS:1000005" name="sample volume" value="0" unitAccession="UO:0000098" unitName="milliliter" unitCvRef="UO" />
<cvParam cvRef="MS" accession="MS:1000006" name="sample concentration" value="0" unitAccession="UO:0000175" unitName="gram per liter" unitCvRef="UO" />
</sample>
</sampleList>
<softwareList count="2">
<software id="so_in_0" version="" >
<cvParam cvRef="MS" accession="MS:1000799" name="custom unreleased software tool" value="" />
</software>
<software id="so_default" version="" >
<cvParam cvRef="MS" accession="MS:1000799" name="custom unreleased software tool" value="" />
</software>
</softwareList>
<instrumentConfigurationList count="1">
<instrumentConfiguration id="ic_0">
<cvParam cvRef="MS" accession="MS:1000031" name="instrument model" />
<softwareRef ref="so_in_0" />
</instrumentConfiguration>
</instrumentConfigurationList>
<dataProcessingList count="1">
<dataProcessing id="dp_sp_0">
<processingMethod order="0" softwareRef="so_default">
<cvParam cvRef="MS" accession="MS:1000544" name="Conversion to mzML" />
<userParam name="warning" type="xsd:string" value="fictional processing method used to fulfill format requirements" />
</processingMethod>
</dataProcessing>
</dataProcessingList>
<run id="ru_0" defaultInstrumentConfigurationRef="ic_0" sampleRef="sa_0" defaultSourceFileRef="sf_ru_0">
<userParam name="mzml_id" type="xsd:string" value="MZmine mzML export"/>
<spectrumList count="4" defaultDataProcessingRef="dp_sp_0">
<spectrum id="scan=126" index="0" defaultArrayLength="31" dataProcessingRef="dp_sp_0">
<cvParam cvRef="MS" accession="MS:1000128" name="profile spectrum" />
<cvParam cvRef="MS" accession="MS:1000511" name="ms level" value="1" />
<cvParam cvRef="MS" accession="MS:1000294" name="mass spectrum" />
<cvParam cvRef="MS" accession="MS:1000285" name="total ion current" value="6.0450043e09"/>
<cvParam cvRef="MS" accession="MS:1000528" name="lowest observed m/z" value="108.907723264639685" unitAccession="MS:1000040" unitName="m/z" unitCvRef="MS"/>
<cvParam cvRef="MS" accession="MS:1000527" name="highest observed m/z" value="1111.100247713231283" unitAccession="MS:1000040" unitName="m/z" unitCvRef="MS"/>
<userParam name="filter string" type="xsd:string" value="FTMS + p ESI Full ms [110.0000-1100.0000]"/>
<scanList count="1">
<cvParam cvRef="MS" accession="MS:1000795" name="no combination" />
<scan >
<cvParam cvRef="MS" accession="MS:1000016" name="scan start time" value="171.55917" unitAccession="UO:0000010" unitName="second" unitCvRef="UO" />
<userParam name="MS:1000130" type="xsd:string" value=""/>
<scanWindowList count="1">
<scanWindow>
<cvParam cvRef="MS" accession="MS:1000501" name="scan window lower limit" value="110" unitAccession="MS:1000040" unitName="m/z" unitCvRef="MS" />
<cvParam cvRef="MS" accession="MS:1000500" name="scan window upper limit" value="1100" unitAccession="MS:1000040" unitName="m/z" unitCvRef="MS" />
</scanWindow>
</scanWindowList>
</scan>
</scanList>
<binaryDataArrayList count="2">
<binaryDataArray encodedLength="332">
<cvParam cvRef="MS" accession="MS:1000514" name="m/z array" unitAccession="MS:1000040" unitName="m/z" unitCvRef="MS" />
<cvParam cvRef="MS" accession="MS:1000523" name="64-bit float" />
<cvParam cvRef="MS" accession="MS:1000576" name="no compression" />
<binary>r5exsg4iY0CIh5zHECJjQFnOh9wSImNAI2xz8RQiY0DoYF8GFyJjQKWsSxsZImNAXU84MBsiY0ANSSVFHSJjQLiZElofImNAXUEAbyEiY0D8P+6DIyJjQJOV3JglImNAJkLLrSciY0DAvI+5WyJjQNE+h85dImNA4Bd/418iY0DqR3f4YSJjQO/Obw1kImNA8qxoImYiY0DPgTgP4yJjQHoaRiTlImNAJgpUOeciY0DTUGJO6SJjQIDucGPrImNAL+N/eO0iY0AdcL2ZPCNjQC+m2a4+I2NARjP2w0AjY0BhFxPZQiNjQIBSMO5EI2NAo+RNA0cjY0A=</binary>
</binaryDataArray>
<binaryDataArray encodedLength="168">
<cvParam cvRef="MS" accession="MS:1000515" name="intensity array" unitAccession="MS:1000131" unitName="number of detector counts" unitCvRef="MS"/>
<cvParam cvRef="MS" accession="MS:1000521" name="32-bit float" />
<cvParam cvRef="MS" accession="MS:1000576" name="no compression" />
<binary>n7xcRxLCpkdqnyZJdS8vSqhE/UqdaFZLB+CHS17TUEvmdfVKVOwpSrriTEnEfoNIuSX9R9s+AkfErrtHYdANSIrABki7tKBH5HDURtM8ekc5hvNHwH4WSPywAkjmQaxHN1ktR2ZZFEeHy8hHHs8kSFVNMEgs2v1HAyl6Rw==</binary>
</binaryDataArray>
</binaryDataArrayList>
</spectrum>
<spectrum id="scan=127" index="1" defaultArrayLength="25">
<cvParam cvRef="MS" accession="MS:1000128" name="profile spectrum" />
<cvParam cvRef="MS" accession="MS:1000511" name="ms level" value="1" />
<cvParam cvRef="MS" accession="MS:1000294" name="mass spectrum" />
<cvParam cvRef="MS" accession="MS:1000285" name="total ion current" value="7.4992742e09"/>
<cvParam cvRef="MS" accession="MS:1000528" name="lowest observed m/z" value="108.907733023156396" unitAccession="MS:1000040" unitName="m/z" unitCvRef="MS"/>
<cvParam cvRef="MS" accession="MS:1000527" name="highest observed m/z" value="1111.100738826513407" unitAccession="MS:1000040" unitName="m/z" unitCvRef="MS"/>
<userParam name="filter string" type="xsd:string" value="FTMS + p ESI Full ms [110.0000-1100.0000]"/>
<scanList count="1">
<cvParam cvRef="MS" accession="MS:1000795" name="no combination" />
<scan >
<cvParam cvRef="MS" accession="MS:1000016" name="scan start time" value="171.92241" unitAccession="UO:0000010" unitName="second" unitCvRef="UO" />
<userParam name="MS:1000130" type="xsd:string" value=""/>
<scanWindowList count="1">
<scanWindow>
<cvParam cvRef="MS" accession="MS:1000501" name="scan window lower limit" value="110" unitAccession="MS:1000040" unitName="m/z" unitCvRef="MS" />
<cvParam cvRef="MS" accession="MS:1000500" name="scan window upper limit" value="1100" unitAccession="MS:1000040" unitName="m/z" unitCvRef="MS" />
</scanWindow>
</scanWindowList>
</scan>
</scanList>
<binaryDataArrayList count="2">
<binaryDataArray encodedLength="268">
<cvParam cvRef="MS" accession="MS:1000514" name="m/z array" unitAccession="MS:1000040" unitName="m/z" unitCvRef="MS" />
<cvParam cvRef="MS" accession="MS:1000523" name="64-bit float" />
<cvParam cvRef="MS" accession="MS:1000576" name="no compression" />
<binary>dPjCarchY0C7p59/uSFjQPetfJS7IWNAKgtaqb0hY0BUvze+vyFjQHPKFdPBIWNAiiz058MhY0Bu8yXYDiJjQFnnEO0QImNAPTL8ARMiY0Ab1OcWFSJjQPPM0ysXImNAwxzAQBkiY0COw6xVGyJjQFPBmWodImNAEBaHfx8iY0DIwXSUISJjQHrEYqkjImNAJR5RviUiY0AdSg3KWSJjQEd5BN9bImNAa//7810iY0CN3PMIYCJjQKsQ7B1iImNAxJvkMmQiY0A=</binary>
</binaryDataArray>
<binaryDataArray encodedLength="136">
<cvParam cvRef="MS" accession="MS:1000515" name="intensity array" unitAccession="MS:1000131" unitName="number of detector counts" unitCvRef="MS"/>
<cvParam cvRef="MS" accession="MS:1000521" name="32-bit float" />
<cvParam cvRef="MS" accession="MS:1000576" name="no compression" />
<binary>weaTRwOtJUhmbmtIh5J4SCCxVEjhYRNIjwmRR+TAMEdkshZIpwk/SSEqK0oxl+hKWLdCS2T2dEsDhjxLo73dSiRWF0r3fBRJ/KUYRzb5mkf1fQ5IkJ9ASD4EO0hfe+dHrvn+Rg==</binary>
</binaryDataArray>
</binaryDataArrayList>
</spectrum>
<spectrum id="scan=128" index="2" defaultArrayLength="18">
<cvParam cvRef="MS" accession="MS:1000128" name="profile spectrum" />
<cvParam cvRef="MS" accession="MS:1000511" name="ms level" value="1" />
<cvParam cvRef="MS" accession="MS:1000294" name="mass spectrum" />
<cvParam cvRef="MS" accession="MS:1000285" name="total ion current" value="6.3630976e09"/>
<cvParam cvRef="MS" accession="MS:1000528" name="lowest observed m/z" value="108.907709764292704" unitAccession="MS:1000040" unitName="m/z" unitCvRef="MS"/>
<cvParam cvRef="MS" accession="MS:1000527" name="highest observed m/z" value="1111.100125670347097" unitAccession="MS:1000040" unitName="m/z" unitCvRef="MS"/>
<userParam name="filter string" type="xsd:string" value="FTMS + p ESI Full ms [110.0000-1100.0000]"/>
<scanList count="1">
<cvParam cvRef="MS" accession="MS:1000795" name="no combination" />
<scan >
<cvParam cvRef="MS" accession="MS:1000016" name="scan start time" value="172.28342" unitAccession="UO:0000010" unitName="second" unitCvRef="UO" />
<userParam name="MS:1000130" type="xsd:string" value=""/>
<scanWindowList count="1">
<scanWindow>
<cvParam cvRef="MS" accession="MS:1000501" name="scan window lower limit" value="110" unitAccession="MS:1000040" unitName="m/z" unitCvRef="MS" />
<cvParam cvRef="MS" accession="MS:1000500" name="scan window upper limit" value="1100" unitAccession="MS:1000040" unitName="m/z" unitCvRef="MS" />
</scanWindow>
</scanWindowList>
</scan>
</scanList>
<binaryDataArrayList count="2">
<binaryDataArray encodedLength="192">
<cvParam cvRef="MS" accession="MS:1000514" name="m/z array" unitAccession="MS:1000040" unitName="m/z" unitCvRef="MS" />
<cvParam cvRef="MS" accession="MS:1000523" name="64-bit float" />
<cvParam cvRef="MS" accession="MS:1000576" name="no compression" />
<binary>ccJIT7shY0AdGCZkvSFjQL/EA3m/IWNAV8jhjcEhY0DlIsCiwyFjQGvUnrfFIWNAt3Dwkg4iY0AbXdunECJjQHigxrwSImNAzjqy0RQiY0AeLJ7mFiJjQGd0ivsYImNAqhN3EBsiY0DmCWQlHSJjQBxXUTofImNATPs+TyEiY0B39ixkIyJjQJpIG3klImNA</binary>
</binaryDataArray>
<binaryDataArray encodedLength="96">
<cvParam cvRef="MS" accession="MS:1000515" name="intensity array" unitAccession="MS:1000131" unitName="number of detector counts" unitCvRef="MS"/>
<cvParam cvRef="MS" accession="MS:1000521" name="32-bit float" />
<cvParam cvRef="MS" accession="MS:1000576" name="no compression" />
<binary>MpSAR7CKlkfSH7ZH8ADIR47vl0elaPRGkTmOR/0nH0gVxxNJXw/6SSlRrkpz4hJLaZY8S4KkE0vEPa5KZiHvSTSj30hQKRBH</binary>
</binaryDataArray>
</binaryDataArrayList>
</spectrum>
<spectrum id="scan=129" index="3" defaultArrayLength="31">
<cvParam cvRef="MS" accession="MS:1000128" name="profile spectrum" />
<cvParam cvRef="MS" accession="MS:1000511" name="ms level" value="1" />
<cvParam cvRef="MS" accession="MS:1000294" name="mass spectrum" />
<cvParam cvRef="MS" accession="MS:1000285" name="total ion current" value="5.5177718e09"/>
<cvParam cvRef="MS" accession="MS:1000528" name="lowest observed m/z" value="108.907641099520376" unitAccession="MS:1000040" unitName="m/z" unitCvRef="MS"/>
<cvParam cvRef="MS" accession="MS:1000527" name="highest observed m/z" value="1111.099388375058879" unitAccession="MS:1000040" unitName="m/z" unitCvRef="MS"/>
<userParam name="filter string" type="xsd:string" value="FTMS + p ESI Full ms [110.0000-1100.0000]"/>
<scanList count="1">
<cvParam cvRef="MS" accession="MS:1000795" name="no combination" />
<scan >
<cvParam cvRef="MS" accession="MS:1000016" name="scan start time" value="172.64467" unitAccession="UO:0000010" unitName="second" unitCvRef="UO" />
<userParam name="MS:1000130" type="xsd:string" value=""/>
<scanWindowList count="1">
<scanWindow>
<cvParam cvRef="MS" accession="MS:1000501" name="scan window lower limit" value="110" unitAccession="MS:1000040" unitName="m/z" unitCvRef="MS" />
<cvParam cvRef="MS" accession="MS:1000500" name="scan window upper limit" value="1100" unitAccession="MS:1000040" unitName="m/z" unitCvRef="MS" />
</scanWindow>
</scanWindowList>
</scan>
</scanList>
<binaryDataArrayList count="2">
<binaryDataArray encodedLength="332">
<cvParam cvRef="MS" accession="MS:1000514" name="m/z array" unitAccession="MS:1000040" unitName="m/z" unitCvRef="MS" />
<cvParam cvRef="MS" accession="MS:1000523" name="64-bit float" />
<cvParam cvRef="MS" accession="MS:1000576" name="no compression" />
<binary>v/C4pr4hY0B13Za7wCFjQCMhddDCIWNAx7tT5cQhY0BirTL6xiFjQPT1EQ/JIWNAwtKM1Q8iY0A9/3fqESJjQLGCY/8TImNAH11PFBYiY0CGjjspGCJjQOgWKD4aImNAQvYUUxwiY0CWLAJoHiJjQOW573wgImNALZ7dkSIiY0Bu2cumJCJjQKprursmImNA4VSp0CgiY0CGbJeIVCJjQE3PjZ1WImNAEImEslgiY0DPmXvHWiJjQIkBc9xcImNAQcBq8V4iY0D01WIGYSJjQKGC19E/I2NAY0z05kEjY0ApbRH8QyNjQPTkLhFGI2NAwrNMJkgjY0A=</binary>
</binaryDataArray>
<binaryDataArray encodedLength="168">
<cvParam cvRef="MS" accession="MS:1000515" name="intensity array" unitAccession="MS:1000131" unitName="number of detector counts" unitCvRef="MS"/>
<cvParam cvRef="MS" accession="MS:1000521" name="32-bit float" />
<cvParam cvRef="MS" accession="MS:1000576" name="no compression" />
<binary>fv0oRj9abEfoz8tHM/PIR0Q2f0eGNfFGwRgcSAr2V0icrD9JxtcqSvxEwErt4BlLlFcpSyPp6UqapnlK1o6YSfuKpEjqzglIZ2WBR8B3u0bDlYJHQfIASNx2I0hHr5NH7dsiRw69pUYm4wdHO6CKR0+FkEcPBkJHQvz1Rg==</binary>
</binaryDataArray>
</binaryDataArrayList>
</spectrum>
</spectrumList>
</run>
</mzML>
<indexList count="1">
<index name="spectrum">
<offset idRef="scan=126">3577</offset>
<offset idRef="scan=127">6508</offset>
<offset idRef="scan=128">9315</offset>
<offset idRef="scan=129">12005</offset>
</index>
</indexList>
<indexListOffset>14938</indexListOffset>
<fileChecksum>0</fileChecksum>
</indexedmzML>
51 changes: 51 additions & 0 deletions tools/xcms/xcms_plot_eic.xml
hechth marked this conversation as resolved.
Show resolved Hide resolved
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
<tool id="xcms_plot_eic" name="Plot Extracted Ion Chromatogram" version="@TOOL_VERSION@+galaxy0" profile="21.09">
wverastegui marked this conversation as resolved.
Show resolved Hide resolved
<description>Plot the extracted ion chromatogram (EIC) from mzML file</description>
<macros>
<import>macros.xml</import>
</macros>
<expand macro="creator"/>
<requirements>
<requirement type="package" version="@TOOL_VERSION@">bioconductor-xcms</requirement>
</requirements>
<command detect_errors="exit_code"><![CDATA[
Rscript -e 'source("${plot_eic}")'
]]></command>
<configfiles>
<configfile name="plot_eic">
library(xcms)
library(MsExperiment)
library(Spectra)
mse = readMsExperiment(file.path('${input}'))
offset = ${tolerance_ppm} * 1e-6 * ${mz_value}
chr = chromatogram(mse, mz = ${mz_value} + c(-offset, offset), msLevel = ${mslevel})
png(filename = '${output_filename}')
plot(chr)
dev.off()
</configfile>
</configfiles>
<inputs>
<param type="data" name="input" format="mzML" label="Input mzML file"/>
<param type="float" name="mz_value" value="0" label="m/z Value" help="m/z value for the EIC"/>
<param type="integer" value="10" name="tolerance_ppm" label="Tolerance (ppm)" help="Tolerance for m/z value in ppm"/>
<param type="integer" value="1" name="mslevel" label="MS Level" help="MS level for the EIC"/>
hechth marked this conversation as resolved.
Show resolved Hide resolved
</inputs>
<outputs>
<data name="output_filename" format="png" label="EIC plot at m/z=$mz_value of $input.element_identifier" />
</outputs>
<tests>
<test>
<param name="input" value="xcms_plot_eic_testdata.mzML"/>
<param name="mz_value" value="153.06614"/>
<param name="tolerance_ppm" value="10"/>
<param name="mslevel" value="1"/>
<output name="output_filename" file="eic_plot.png"/>
</test>
</tests>
<help><![CDATA[
This tool plots the extracted ion chromatogram (EIC) from an mzML file, using a provided m/z value.
It uses a default tolerance of 10 ppm and operates at mslevel 1 by default.
Comment on lines +44 to +45
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

please provide a link to the XCMS tutorial for more details.

]]></help>
<citations>
<citation type="doi">10.1021/ac051437y</citation>
</citations>
</tool>
Loading
Loading