From e6c13379f2e4b5ed2f5481c4166c868f0094bd0e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matthias=20Mail=C3=A4nder?= Date: Wed, 16 Oct 2024 20:30:01 +0200 Subject: [PATCH] Set ion transitions. --- .../io/ChromatogramReaderVersion20.java | 43 +++++++++++++++--- .../io/ChromatogramReaderVersion21.java | 45 ++++++++++++++++--- .../io/ChromatogramReaderVersion22.java | 45 ++++++++++++++++--- .../io/ChromatogramReaderVersion30.java | 45 ++++++++++++++++--- .../io/ChromatogramReaderVersion31.java | 45 ++++++++++++++++--- .../io/ChromatogramReaderVersion32.java | 45 +++++++------------ 6 files changed, 215 insertions(+), 53 deletions(-) diff --git a/chemclipse/plugins/org.eclipse.chemclipse.msd.converter.supplier.mzxml/src/org/eclipse/chemclipse/msd/converter/supplier/mzxml/internal/io/ChromatogramReaderVersion20.java b/chemclipse/plugins/org.eclipse.chemclipse.msd.converter.supplier.mzxml/src/org/eclipse/chemclipse/msd/converter/supplier/mzxml/internal/io/ChromatogramReaderVersion20.java index dd66f8699e..36c1e7d69c 100644 --- a/chemclipse/plugins/org.eclipse.chemclipse.msd.converter.supplier.mzxml/src/org/eclipse/chemclipse/msd/converter/supplier/mzxml/internal/io/ChromatogramReaderVersion20.java +++ b/chemclipse/plugins/org.eclipse.chemclipse.msd.converter.supplier.mzxml/src/org/eclipse/chemclipse/msd/converter/supplier/mzxml/internal/io/ChromatogramReaderVersion20.java @@ -32,16 +32,18 @@ import org.eclipse.chemclipse.msd.converter.supplier.mzxml.internal.v20.model.MsRun; import org.eclipse.chemclipse.msd.converter.supplier.mzxml.internal.v20.model.ObjectFactory; import org.eclipse.chemclipse.msd.converter.supplier.mzxml.internal.v20.model.Peaks; +import org.eclipse.chemclipse.msd.converter.supplier.mzxml.internal.v20.model.PrecursorMz; import org.eclipse.chemclipse.msd.converter.supplier.mzxml.internal.v20.model.Scan; import org.eclipse.chemclipse.msd.converter.supplier.mzxml.internal.v20.model.Software; import org.eclipse.chemclipse.msd.converter.supplier.mzxml.model.IVendorChromatogram; -import org.eclipse.chemclipse.msd.converter.supplier.mzxml.model.IVendorIon; import org.eclipse.chemclipse.msd.converter.supplier.mzxml.model.IVendorScan; import org.eclipse.chemclipse.msd.converter.supplier.mzxml.model.VendorChromatogram; import org.eclipse.chemclipse.msd.converter.supplier.mzxml.model.VendorIon; import org.eclipse.chemclipse.msd.converter.supplier.mzxml.model.VendorScan; import org.eclipse.chemclipse.msd.model.core.IChromatogramMSD; +import org.eclipse.chemclipse.msd.model.core.IIonTransition; import org.eclipse.chemclipse.msd.model.core.Polarity; +import org.eclipse.chemclipse.msd.model.implementation.IonTransition; import org.eclipse.chemclipse.support.history.EditInformation; import org.eclipse.core.runtime.IProgressMonitor; import org.w3c.dom.Document; @@ -74,6 +76,8 @@ public IChromatogramMSD read(File file, IProgressMonitor monitor) throws IOExcep MsRun msrun = (MsRun)unmarshaller.unmarshal(nodeList.item(0)); // chromatogram = new VendorChromatogram(); + boolean isTandemMeasurement = isTandemMeasurement(msrun); + int cycleNumber = isTandemMeasurement ? 1 : 0; // MsInstrument instrument = msrun.getMsInstrument(); if(instrument != null) { @@ -110,6 +114,22 @@ public IChromatogramMSD read(File file, IProgressMonitor monitor) throws IOExcep massSpectrum.setPolarity(Polarity.NEGATIVE); } } + // MS, MS/MS + short msLevel = scan.getMsLevel().shortValue(); + massSpectrum.setMassSpectrometer(msLevel); + // + if(!scan.getPrecursorMz().isEmpty()) { + PrecursorMz precursor = scan.getPrecursorMz().get(0); + massSpectrum.setPrecursorIon(precursor.getValue()); + } + // + if(msLevel < 2) { + cycleNumber++; + } + if(cycleNumber >= 1) { + massSpectrum.setCycleNumber(cycleNumber); + } + massSpectrum.setRetentionTime(retentionTime); /* * Get the ions. */ @@ -142,15 +162,19 @@ public IChromatogramMSD read(File file, IProgressMonitor monitor) throws IOExcep values[index] = floatBuffer.get(index); } } - // for(int peakIndex = 0; peakIndex < values.length - 1; peakIndex += 2) { /* * Get m/z and intensity (m/z-int) */ double mz = values[peakIndex]; float intensity = (float)values[peakIndex + 1]; - IVendorIon ion = new VendorIon(mz, intensity); - massSpectrum.addIon(ion, false); + if(msLevel >= 2) { + IIonTransition ionTransition = new IonTransition(massSpectrum.getPrecursorIon(), mz, scan.getCollisionEnergy(), 1, 1, 0); + massSpectrum.addIon(new VendorIon(mz, intensity, ionTransition), false); + chromatogram.getIonTransitionSettings().getIonTransitions().add(ionTransition); + } else { + massSpectrum.addIon(new VendorIon(mz, intensity), false); + } } chromatogram.addScan(massSpectrum); monitor.worked(1); @@ -162,9 +186,18 @@ public IChromatogramMSD read(File file, IProgressMonitor monitor) throws IOExcep } catch(ParserConfigurationException e) { logger.warn(e); } - // chromatogram.setConverterId(""); chromatogram.setFile(file); return chromatogram; } + + private boolean isTandemMeasurement(MsRun msrun) { + + for(Scan scan : msrun.getScan()) { + if(scan.getMsLevel().shortValue() > 1) { + return true; + } + } + return false; + } } diff --git a/chemclipse/plugins/org.eclipse.chemclipse.msd.converter.supplier.mzxml/src/org/eclipse/chemclipse/msd/converter/supplier/mzxml/internal/io/ChromatogramReaderVersion21.java b/chemclipse/plugins/org.eclipse.chemclipse.msd.converter.supplier.mzxml/src/org/eclipse/chemclipse/msd/converter/supplier/mzxml/internal/io/ChromatogramReaderVersion21.java index c4032a32a7..50ef1f5982 100644 --- a/chemclipse/plugins/org.eclipse.chemclipse.msd.converter.supplier.mzxml/src/org/eclipse/chemclipse/msd/converter/supplier/mzxml/internal/io/ChromatogramReaderVersion21.java +++ b/chemclipse/plugins/org.eclipse.chemclipse.msd.converter.supplier.mzxml/src/org/eclipse/chemclipse/msd/converter/supplier/mzxml/internal/io/ChromatogramReaderVersion21.java @@ -32,16 +32,18 @@ import org.eclipse.chemclipse.msd.converter.supplier.mzxml.internal.v21.model.MsRun; import org.eclipse.chemclipse.msd.converter.supplier.mzxml.internal.v21.model.ObjectFactory; import org.eclipse.chemclipse.msd.converter.supplier.mzxml.internal.v21.model.Peaks; +import org.eclipse.chemclipse.msd.converter.supplier.mzxml.internal.v21.model.PrecursorMz; import org.eclipse.chemclipse.msd.converter.supplier.mzxml.internal.v21.model.Scan; import org.eclipse.chemclipse.msd.converter.supplier.mzxml.internal.v21.model.Software; import org.eclipse.chemclipse.msd.converter.supplier.mzxml.model.IVendorChromatogram; -import org.eclipse.chemclipse.msd.converter.supplier.mzxml.model.IVendorIon; import org.eclipse.chemclipse.msd.converter.supplier.mzxml.model.IVendorScan; import org.eclipse.chemclipse.msd.converter.supplier.mzxml.model.VendorChromatogram; import org.eclipse.chemclipse.msd.converter.supplier.mzxml.model.VendorIon; import org.eclipse.chemclipse.msd.converter.supplier.mzxml.model.VendorScan; import org.eclipse.chemclipse.msd.model.core.IChromatogramMSD; +import org.eclipse.chemclipse.msd.model.core.IIonTransition; import org.eclipse.chemclipse.msd.model.core.Polarity; +import org.eclipse.chemclipse.msd.model.implementation.IonTransition; import org.eclipse.chemclipse.support.history.EditInformation; import org.eclipse.core.runtime.IProgressMonitor; import org.w3c.dom.Document; @@ -74,6 +76,8 @@ public IChromatogramMSD read(File file, IProgressMonitor monitor) throws IOExcep MsRun msrun = (MsRun)unmarshaller.unmarshal(nodeList.item(0)); // chromatogram = new VendorChromatogram(); + boolean isTandemMeasurement = isTandemMeasurement(msrun); + int cycleNumber = isTandemMeasurement ? 1 : 0; // MsInstrument instrument = msrun.getMsInstrument(); if(instrument != null) { @@ -110,6 +114,22 @@ public IChromatogramMSD read(File file, IProgressMonitor monitor) throws IOExcep massSpectrum.setPolarity(Polarity.NEGATIVE); } } + // MS, MS/MS + short msLevel = scan.getMsLevel().shortValue(); + massSpectrum.setMassSpectrometer(msLevel); + // + if(!scan.getPrecursorMz().isEmpty()) { + PrecursorMz precursor = scan.getPrecursorMz().get(0); + massSpectrum.setPrecursorIon(precursor.getValue()); + } + // + if(msLevel < 2) { + cycleNumber++; + } + if(cycleNumber >= 1) { + massSpectrum.setCycleNumber(cycleNumber); + } + massSpectrum.setRetentionTime(retentionTime); /* * Get the ions. */ @@ -142,13 +162,19 @@ public IChromatogramMSD read(File file, IProgressMonitor monitor) throws IOExcep values[index] = floatBuffer.get(index); } } - // for(int peakIndex = 0; peakIndex < values.length - 1; peakIndex += 2) { /* * Get m/z and intensity (m/z-int) */ - IVendorIon ion = new VendorIon(values[peakIndex], (float)values[peakIndex + 1]); - massSpectrum.addIon(ion, false); + double mz = values[peakIndex]; + float intensity = (float)values[peakIndex + 1]; + if(msLevel >= 2) { + IIonTransition ionTransition = new IonTransition(massSpectrum.getPrecursorIon(), mz, scan.getCollisionEnergy(), 1, 1, 0); + massSpectrum.addIon(new VendorIon(mz, intensity, ionTransition), false); + chromatogram.getIonTransitionSettings().getIonTransitions().add(ionTransition); + } else { + massSpectrum.addIon(new VendorIon(mz, intensity), false); + } } chromatogram.addScan(massSpectrum); monitor.worked(1); @@ -160,9 +186,18 @@ public IChromatogramMSD read(File file, IProgressMonitor monitor) throws IOExcep } catch(ParserConfigurationException e) { logger.warn(e); } - // chromatogram.setConverterId(""); chromatogram.setFile(file); return chromatogram; } + + private boolean isTandemMeasurement(MsRun msrun) { + + for(Scan scan : msrun.getScan()) { + if(scan.getMsLevel().shortValue() > 1) { + return true; + } + } + return false; + } } diff --git a/chemclipse/plugins/org.eclipse.chemclipse.msd.converter.supplier.mzxml/src/org/eclipse/chemclipse/msd/converter/supplier/mzxml/internal/io/ChromatogramReaderVersion22.java b/chemclipse/plugins/org.eclipse.chemclipse.msd.converter.supplier.mzxml/src/org/eclipse/chemclipse/msd/converter/supplier/mzxml/internal/io/ChromatogramReaderVersion22.java index 08ab890ead..0ba4e91bfa 100644 --- a/chemclipse/plugins/org.eclipse.chemclipse.msd.converter.supplier.mzxml/src/org/eclipse/chemclipse/msd/converter/supplier/mzxml/internal/io/ChromatogramReaderVersion22.java +++ b/chemclipse/plugins/org.eclipse.chemclipse.msd.converter.supplier.mzxml/src/org/eclipse/chemclipse/msd/converter/supplier/mzxml/internal/io/ChromatogramReaderVersion22.java @@ -32,16 +32,18 @@ import org.eclipse.chemclipse.msd.converter.supplier.mzxml.internal.v22.model.MsRun; import org.eclipse.chemclipse.msd.converter.supplier.mzxml.internal.v22.model.ObjectFactory; import org.eclipse.chemclipse.msd.converter.supplier.mzxml.internal.v22.model.Peaks; +import org.eclipse.chemclipse.msd.converter.supplier.mzxml.internal.v22.model.PrecursorMz; import org.eclipse.chemclipse.msd.converter.supplier.mzxml.internal.v22.model.Scan; import org.eclipse.chemclipse.msd.converter.supplier.mzxml.internal.v22.model.Software; import org.eclipse.chemclipse.msd.converter.supplier.mzxml.model.IVendorChromatogram; -import org.eclipse.chemclipse.msd.converter.supplier.mzxml.model.IVendorIon; import org.eclipse.chemclipse.msd.converter.supplier.mzxml.model.IVendorScan; import org.eclipse.chemclipse.msd.converter.supplier.mzxml.model.VendorChromatogram; import org.eclipse.chemclipse.msd.converter.supplier.mzxml.model.VendorIon; import org.eclipse.chemclipse.msd.converter.supplier.mzxml.model.VendorScan; import org.eclipse.chemclipse.msd.model.core.IChromatogramMSD; +import org.eclipse.chemclipse.msd.model.core.IIonTransition; import org.eclipse.chemclipse.msd.model.core.Polarity; +import org.eclipse.chemclipse.msd.model.implementation.IonTransition; import org.eclipse.chemclipse.support.history.EditInformation; import org.eclipse.core.runtime.IProgressMonitor; import org.w3c.dom.Document; @@ -74,6 +76,8 @@ public IChromatogramMSD read(File file, IProgressMonitor monitor) throws IOExcep MsRun msrun = (MsRun)unmarshaller.unmarshal(nodeList.item(0)); // chromatogram = new VendorChromatogram(); + boolean isTandemMeasurement = isTandemMeasurement(msrun); + int cycleNumber = isTandemMeasurement ? 1 : 0; // MsInstrument instrument = msrun.getMsInstrument(); if(instrument != null) { @@ -110,6 +114,22 @@ public IChromatogramMSD read(File file, IProgressMonitor monitor) throws IOExcep massSpectrum.setPolarity(Polarity.NEGATIVE); } } + // MS, MS/MS + short msLevel = scan.getMsLevel().shortValue(); + massSpectrum.setMassSpectrometer(msLevel); + // + if(!scan.getPrecursorMz().isEmpty()) { + PrecursorMz precursor = scan.getPrecursorMz().get(0); + massSpectrum.setPrecursorIon(precursor.getValue()); + } + // + if(msLevel < 2) { + cycleNumber++; + } + if(cycleNumber >= 1) { + massSpectrum.setCycleNumber(cycleNumber); + } + massSpectrum.setRetentionTime(retentionTime); /* * Get the ions. */ @@ -142,13 +162,19 @@ public IChromatogramMSD read(File file, IProgressMonitor monitor) throws IOExcep values[index] = floatBuffer.get(index); } } - // for(int peakIndex = 0; peakIndex < values.length - 1; peakIndex += 2) { /* * Get m/z and intensity (m/z-int) */ - IVendorIon ion = new VendorIon(values[peakIndex], (float)values[peakIndex + 1]); - massSpectrum.addIon(ion, false); + double mz = values[peakIndex]; + float intensity = (float)values[peakIndex + 1]; + if(msLevel >= 2) { + IIonTransition ionTransition = new IonTransition(massSpectrum.getPrecursorIon(), mz, scan.getCollisionEnergy(), 1, 1, 0); + massSpectrum.addIon(new VendorIon(mz, intensity, ionTransition), false); + chromatogram.getIonTransitionSettings().getIonTransitions().add(ionTransition); + } else { + massSpectrum.addIon(new VendorIon(mz, intensity), false); + } } chromatogram.addScan(massSpectrum); monitor.worked(1); @@ -160,9 +186,18 @@ public IChromatogramMSD read(File file, IProgressMonitor monitor) throws IOExcep } catch(ParserConfigurationException e) { logger.warn(e); } - // chromatogram.setConverterId(""); chromatogram.setFile(file); return chromatogram; } + + private boolean isTandemMeasurement(MsRun msrun) { + + for(Scan scan : msrun.getScan()) { + if(scan.getMsLevel().shortValue() > 1) { + return true; + } + } + return false; + } } diff --git a/chemclipse/plugins/org.eclipse.chemclipse.msd.converter.supplier.mzxml/src/org/eclipse/chemclipse/msd/converter/supplier/mzxml/internal/io/ChromatogramReaderVersion30.java b/chemclipse/plugins/org.eclipse.chemclipse.msd.converter.supplier.mzxml/src/org/eclipse/chemclipse/msd/converter/supplier/mzxml/internal/io/ChromatogramReaderVersion30.java index db3b0ccf48..b9de9b0b60 100644 --- a/chemclipse/plugins/org.eclipse.chemclipse.msd.converter.supplier.mzxml/src/org/eclipse/chemclipse/msd/converter/supplier/mzxml/internal/io/ChromatogramReaderVersion30.java +++ b/chemclipse/plugins/org.eclipse.chemclipse.msd.converter.supplier.mzxml/src/org/eclipse/chemclipse/msd/converter/supplier/mzxml/internal/io/ChromatogramReaderVersion30.java @@ -34,16 +34,18 @@ import org.eclipse.chemclipse.msd.converter.supplier.mzxml.internal.v30.model.MsRun; import org.eclipse.chemclipse.msd.converter.supplier.mzxml.internal.v30.model.ObjectFactory; import org.eclipse.chemclipse.msd.converter.supplier.mzxml.internal.v30.model.Peaks; +import org.eclipse.chemclipse.msd.converter.supplier.mzxml.internal.v30.model.PrecursorMz; import org.eclipse.chemclipse.msd.converter.supplier.mzxml.internal.v30.model.Scan; import org.eclipse.chemclipse.msd.converter.supplier.mzxml.internal.v30.model.Software; import org.eclipse.chemclipse.msd.converter.supplier.mzxml.model.IVendorChromatogram; -import org.eclipse.chemclipse.msd.converter.supplier.mzxml.model.IVendorIon; import org.eclipse.chemclipse.msd.converter.supplier.mzxml.model.IVendorScan; import org.eclipse.chemclipse.msd.converter.supplier.mzxml.model.VendorChromatogram; import org.eclipse.chemclipse.msd.converter.supplier.mzxml.model.VendorIon; import org.eclipse.chemclipse.msd.converter.supplier.mzxml.model.VendorScan; import org.eclipse.chemclipse.msd.model.core.IChromatogramMSD; +import org.eclipse.chemclipse.msd.model.core.IIonTransition; import org.eclipse.chemclipse.msd.model.core.Polarity; +import org.eclipse.chemclipse.msd.model.implementation.IonTransition; import org.eclipse.chemclipse.support.history.EditInformation; import org.eclipse.core.runtime.IProgressMonitor; import org.w3c.dom.Document; @@ -78,6 +80,8 @@ public IChromatogramMSD read(File file, IProgressMonitor monitor) throws IOExcep MsRun msrun = (MsRun)unmarshaller.unmarshal(nodeList.item(0)); // chromatogram = new VendorChromatogram(); + boolean isTandemMeasurement = isTandemMeasurement(msrun); + int cycleNumber = isTandemMeasurement ? 1 : 0; // for(MsInstrument instrument : msrun.getMsInstrument()) { chromatogram.setInstrument(instrument.getMsManufacturer().getTheValue() + " " + instrument.getMsModel().getTheValue()); @@ -113,6 +117,22 @@ public IChromatogramMSD read(File file, IProgressMonitor monitor) throws IOExcep massSpectrum.setPolarity(Polarity.NEGATIVE); } } + // MS, MS/MS + short msLevel = scan.getMsLevel().shortValue(); + massSpectrum.setMassSpectrometer(msLevel); + // + if(!scan.getPrecursorMz().isEmpty()) { + PrecursorMz precursor = scan.getPrecursorMz().get(0); + massSpectrum.setPrecursorIon(precursor.getValue()); + } + // + if(msLevel < 2) { + cycleNumber++; + } + if(cycleNumber >= 1) { + massSpectrum.setCycleNumber(cycleNumber); + } + massSpectrum.setRetentionTime(retentionTime); /* * Get the ions. */ @@ -155,13 +175,19 @@ public IChromatogramMSD read(File file, IProgressMonitor monitor) throws IOExcep values[index] = floatBuffer.get(index); } } - // for(int peakIndex = 0; peakIndex < values.length - 1; peakIndex += 2) { /* * Get m/z and intensity (m/z-int) */ - IVendorIon ion = new VendorIon(values[peakIndex], (float)values[peakIndex + 1]); - massSpectrum.addIon(ion, false); + double mz = values[peakIndex]; + float intensity = (float)values[peakIndex + 1]; + if(msLevel >= 2) { + IIonTransition ionTransition = new IonTransition(massSpectrum.getPrecursorIon(), mz, scan.getCollisionEnergy(), 1, 1, 0); + massSpectrum.addIon(new VendorIon(mz, intensity, ionTransition), false); + chromatogram.getIonTransitionSettings().getIonTransitions().add(ionTransition); + } else { + massSpectrum.addIon(new VendorIon(mz, intensity), false); + } } } chromatogram.addScan(massSpectrum); @@ -176,9 +202,18 @@ public IChromatogramMSD read(File file, IProgressMonitor monitor) throws IOExcep } catch(DataFormatException e) { logger.warn(e); } - // chromatogram.setConverterId(""); chromatogram.setFile(file); return chromatogram; } + + private boolean isTandemMeasurement(MsRun msrun) { + + for(Scan scan : msrun.getScan()) { + if(scan.getMsLevel().shortValue() > 1) { + return true; + } + } + return false; + } } diff --git a/chemclipse/plugins/org.eclipse.chemclipse.msd.converter.supplier.mzxml/src/org/eclipse/chemclipse/msd/converter/supplier/mzxml/internal/io/ChromatogramReaderVersion31.java b/chemclipse/plugins/org.eclipse.chemclipse.msd.converter.supplier.mzxml/src/org/eclipse/chemclipse/msd/converter/supplier/mzxml/internal/io/ChromatogramReaderVersion31.java index c0df680f7c..884304ca62 100644 --- a/chemclipse/plugins/org.eclipse.chemclipse.msd.converter.supplier.mzxml/src/org/eclipse/chemclipse/msd/converter/supplier/mzxml/internal/io/ChromatogramReaderVersion31.java +++ b/chemclipse/plugins/org.eclipse.chemclipse.msd.converter.supplier.mzxml/src/org/eclipse/chemclipse/msd/converter/supplier/mzxml/internal/io/ChromatogramReaderVersion31.java @@ -34,16 +34,18 @@ import org.eclipse.chemclipse.msd.converter.supplier.mzxml.internal.v31.model.MsRun; import org.eclipse.chemclipse.msd.converter.supplier.mzxml.internal.v31.model.ObjectFactory; import org.eclipse.chemclipse.msd.converter.supplier.mzxml.internal.v31.model.Peaks; +import org.eclipse.chemclipse.msd.converter.supplier.mzxml.internal.v31.model.PrecursorMz; import org.eclipse.chemclipse.msd.converter.supplier.mzxml.internal.v31.model.Scan; import org.eclipse.chemclipse.msd.converter.supplier.mzxml.internal.v31.model.Software; import org.eclipse.chemclipse.msd.converter.supplier.mzxml.model.IVendorChromatogram; -import org.eclipse.chemclipse.msd.converter.supplier.mzxml.model.IVendorIon; import org.eclipse.chemclipse.msd.converter.supplier.mzxml.model.IVendorScan; import org.eclipse.chemclipse.msd.converter.supplier.mzxml.model.VendorChromatogram; import org.eclipse.chemclipse.msd.converter.supplier.mzxml.model.VendorIon; import org.eclipse.chemclipse.msd.converter.supplier.mzxml.model.VendorScan; import org.eclipse.chemclipse.msd.model.core.IChromatogramMSD; +import org.eclipse.chemclipse.msd.model.core.IIonTransition; import org.eclipse.chemclipse.msd.model.core.Polarity; +import org.eclipse.chemclipse.msd.model.implementation.IonTransition; import org.eclipse.chemclipse.support.history.EditInformation; import org.eclipse.core.runtime.IProgressMonitor; import org.w3c.dom.Document; @@ -78,6 +80,8 @@ public IChromatogramMSD read(File file, IProgressMonitor monitor) throws IOExcep MsRun msrun = (MsRun)unmarshaller.unmarshal(nodeList.item(0)); // chromatogram = new VendorChromatogram(); + boolean isTandemMeasurement = isTandemMeasurement(msrun); + int cycleNumber = isTandemMeasurement ? 1 : 0; // for(MsInstrument instrument : msrun.getMsInstrument()) { chromatogram.setInstrument(instrument.getMsManufacturer().getTheValue() + " " + instrument.getMsModel().getTheValue()); @@ -113,6 +117,22 @@ public IChromatogramMSD read(File file, IProgressMonitor monitor) throws IOExcep massSpectrum.setPolarity(Polarity.NEGATIVE); } } + // MS, MS/MS + short msLevel = scan.getMsLevel().shortValue(); + massSpectrum.setMassSpectrometer(msLevel); + // + if(!scan.getPrecursorMz().isEmpty()) { + PrecursorMz precursor = scan.getPrecursorMz().get(0); + massSpectrum.setPrecursorIon(precursor.getValue()); + } + // + if(msLevel < 2) { + cycleNumber++; + } + if(cycleNumber >= 1) { + massSpectrum.setCycleNumber(cycleNumber); + } + massSpectrum.setRetentionTime(retentionTime); /* * Get the ions. */ @@ -155,13 +175,19 @@ public IChromatogramMSD read(File file, IProgressMonitor monitor) throws IOExcep values[index] = floatBuffer.get(index); } } - // for(int peakIndex = 0; peakIndex < values.length - 1; peakIndex += 2) { /* * Get m/z and intensity (m/z-int) */ - IVendorIon ion = new VendorIon(values[peakIndex], (float)values[peakIndex + 1]); - massSpectrum.addIon(ion, false); + double mz = values[peakIndex]; + float intensity = (float)values[peakIndex + 1]; + if(msLevel >= 2) { + IIonTransition ionTransition = new IonTransition(massSpectrum.getPrecursorIon(), mz, scan.getCollisionEnergy(), 1, 1, 0); + massSpectrum.addIon(new VendorIon(mz, intensity, ionTransition), false); + chromatogram.getIonTransitionSettings().getIonTransitions().add(ionTransition); + } else { + massSpectrum.addIon(new VendorIon(mz, intensity), false); + } } } chromatogram.addScan(massSpectrum); @@ -176,9 +202,18 @@ public IChromatogramMSD read(File file, IProgressMonitor monitor) throws IOExcep } catch(DataFormatException e) { logger.warn(e); } - // chromatogram.setConverterId(""); chromatogram.setFile(file); return chromatogram; } + + private boolean isTandemMeasurement(MsRun msrun) { + + for(Scan scan : msrun.getScan()) { + if(scan.getMsLevel().shortValue() > 1) { + return true; + } + } + return false; + } } diff --git a/chemclipse/plugins/org.eclipse.chemclipse.msd.converter.supplier.mzxml/src/org/eclipse/chemclipse/msd/converter/supplier/mzxml/internal/io/ChromatogramReaderVersion32.java b/chemclipse/plugins/org.eclipse.chemclipse.msd.converter.supplier.mzxml/src/org/eclipse/chemclipse/msd/converter/supplier/mzxml/internal/io/ChromatogramReaderVersion32.java index e29440bc26..6c1a15daf5 100644 --- a/chemclipse/plugins/org.eclipse.chemclipse.msd.converter.supplier.mzxml/src/org/eclipse/chemclipse/msd/converter/supplier/mzxml/internal/io/ChromatogramReaderVersion32.java +++ b/chemclipse/plugins/org.eclipse.chemclipse.msd.converter.supplier.mzxml/src/org/eclipse/chemclipse/msd/converter/supplier/mzxml/internal/io/ChromatogramReaderVersion32.java @@ -35,6 +35,7 @@ import org.eclipse.chemclipse.msd.converter.supplier.mzxml.internal.v32.model.MsRun; import org.eclipse.chemclipse.msd.converter.supplier.mzxml.internal.v32.model.ObjectFactory; import org.eclipse.chemclipse.msd.converter.supplier.mzxml.internal.v32.model.Peaks; +import org.eclipse.chemclipse.msd.converter.supplier.mzxml.internal.v32.model.PrecursorMz; import org.eclipse.chemclipse.msd.converter.supplier.mzxml.internal.v32.model.Scan; import org.eclipse.chemclipse.msd.converter.supplier.mzxml.internal.v32.model.Software; import org.eclipse.chemclipse.msd.converter.supplier.mzxml.model.IVendorChromatogram; @@ -43,7 +44,9 @@ import org.eclipse.chemclipse.msd.converter.supplier.mzxml.model.VendorIon; import org.eclipse.chemclipse.msd.converter.supplier.mzxml.model.VendorScan; import org.eclipse.chemclipse.msd.model.core.IChromatogramMSD; +import org.eclipse.chemclipse.msd.model.core.IIonTransition; import org.eclipse.chemclipse.msd.model.core.Polarity; +import org.eclipse.chemclipse.msd.model.implementation.IonTransition; import org.eclipse.chemclipse.support.history.EditInformation; import org.eclipse.core.runtime.IProgressMonitor; import org.w3c.dom.Document; @@ -78,7 +81,6 @@ public IChromatogramMSD read(File file, IProgressMonitor monitor) throws IOExcep MsRun msrun = (MsRun)unmarshaller.unmarshal(nodeList.item(0)); // chromatogram = new VendorChromatogram(); - // IIonTransitionSettings ionTransitionSettings = chromatogram.getIonTransitionSettings(); boolean isTandemMeasurement = isTandemMeasurement(msrun); int cycleNumber = isTandemMeasurement ? 1 : 0; // @@ -117,19 +119,16 @@ public IChromatogramMSD read(File file, IProgressMonitor monitor) throws IOExcep } // MS, MS/MS short msLevel = scan.getMsLevel().shortValue(); - // massSpectrum.setMassSpectrometer(msLevel); - // float collisionEnergy = 0.0f; - // double filter1Ion = 0.0d; + massSpectrum.setMassSpectrometer(msLevel); // - if(msLevel >= 2) { - // collisionEnergy = scan.getCollisionEnergy(); - // if(scan.getPrecursorMz().size() >= 1) { - // filter1Ion = AbstractIon.getIon(scan.getPrecursorMz().get(0).getValue(), 2); - // } - } else { - cycleNumber++; + if(!scan.getPrecursorMz().isEmpty()) { + PrecursorMz precursor = scan.getPrecursorMz().get(0); + massSpectrum.setPrecursorIon(precursor.getValue()); } // + if(msLevel < 2) { + cycleNumber++; + } if(cycleNumber >= 1) { massSpectrum.setCycleNumber(cycleNumber); } @@ -176,28 +175,19 @@ public IChromatogramMSD read(File file, IProgressMonitor monitor) throws IOExcep values[index] = floatBuffer.get(index); } } - // for(int peakIndex = 0; peakIndex < values.length - 1; peakIndex += 2) { /* * Get m/z and intensity (m/z-int) */ double mz = values[peakIndex]; float intensity = (float)values[peakIndex + 1]; - // if(msLevel >= 2) { - // try { - // double filter3Ion = mz; // daughter m/z start - // double filter1Resolution = 1.0d; // q1 resolution - // double filter3Resolution = 1.0d; // q3 resolution - // int transitionGroup = 1; // transition group - // IIonTransition ionTransition = ionTransitionSettings.getIonTransition(filter1Ion, filter3Ion, collisionEnergy, filter1Resolution, filter3Resolution, transitionGroup); - // massSpectrum.addIon(new VendorIon(mz, intensity, ionTransition)); - // } catch(IonTransitionIsNullException e) { - // logger.warn(e); - // } - // } else { - // massSpectrum.addIon(new VendorIon(mz, intensity)); - // } - massSpectrum.addIon(new VendorIon(mz, intensity), false); + if(msLevel >= 2) { + IIonTransition ionTransition = new IonTransition(massSpectrum.getPrecursorIon(), mz, scan.getCollisionEnergy(), 1, 1, 0); + massSpectrum.addIon(new VendorIon(mz, intensity, ionTransition), false); + chromatogram.getIonTransitionSettings().getIonTransitions().add(ionTransition); + } else { + massSpectrum.addIon(new VendorIon(mz, intensity), false); + } } } chromatogram.addScan(massSpectrum); @@ -212,7 +202,6 @@ public IChromatogramMSD read(File file, IProgressMonitor monitor) throws IOExcep } catch(DataFormatException e) { logger.warn(e); } - // chromatogram.setConverterId(""); chromatogram.setFile(file); return chromatogram;