Skip to content

Commit

Permalink
Merge pull request #1925 from Mailaender/filter-literature
Browse files Browse the repository at this point in the history
Add literature references to chromatogram filters
  • Loading branch information
eselmeister authored Oct 31, 2024
2 parents a5ef1ce + 95d292a commit d281e1e
Show file tree
Hide file tree
Showing 25 changed files with 369 additions and 22 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,8 @@ Require-Bundle: org.eclipse.core.runtime,
org.eclipse.chemclipse.logging;bundle-version="0.8.0",
org.eclipse.chemclipse.processing;bundle-version="0.8.0",
org.eclipse.chemclipse.model;bundle-version="0.8.0",
org.eclipse.chemclipse.chromatogram.filter;bundle-version="0.8.0"
org.eclipse.chemclipse.chromatogram.filter;bundle-version="0.8.0",
org.eclipse.chemclipse.support;bundle-version="0.9.0"
Bundle-RequiredExecutionEnvironment: JavaSE-17
Export-Package: org.eclipse.chemclipse.chromatogram.csd.filter.core.chromatogram,
org.eclipse.chemclipse.chromatogram.csd.filter.core.peak,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*******************************************************************************
* Copyright (c) 2015, 2023 Lablicate GmbH.
* Copyright (c) 2015, 2024 Lablicate GmbH.
*
* All rights reserved.
* This program and the accompanying materials are made available under the
Expand All @@ -11,14 +11,19 @@
*******************************************************************************/
package org.eclipse.chemclipse.chromatogram.csd.filter.core.chromatogram;

import java.util.ArrayList;
import java.util.List;

import org.eclipse.chemclipse.chromatogram.filter.settings.IChromatogramFilterSettings;
import org.eclipse.chemclipse.support.literature.LiteratureReference;

public class ChromatogramFilterSupplierCSD implements IChromatogramFilterSupplierCSD {

private String id = ""; //$NON-NLS-1$
private String description = ""; //$NON-NLS-1$
private String filterName = ""; //$NON-NLS-1$
private Class<? extends IChromatogramFilterSettings> settingsClass;
private List<LiteratureReference> literatureReference = new ArrayList<>();

@Override
public String getDescription() {
Expand Down Expand Up @@ -86,6 +91,12 @@ protected void setFilterSettingsClass(Class<? extends IChromatogramFilterSetting
this.settingsClass = settingsClass;
}

@Override
public List<LiteratureReference> getLiteratureReferences() {

return literatureReference;
}

@Override
public boolean equals(Object other) {

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*******************************************************************************
* Copyright (c) 2016, 2023 Lablicate GmbH.
* Copyright (c) 2016, 2024 Lablicate GmbH.
*
* All rights reserved.
* This program and the accompanying materials are made available under the
Expand Down Expand Up @@ -124,6 +124,7 @@ public static IChromatogramFilterSupport getChromatogramFilterSupport() {
if(element.getAttribute(FILTER_SETTINGS) != null) {
try {
IChromatogramFilterSettings instance = (IChromatogramFilterSettings)element.createExecutableExtension(FILTER_SETTINGS);
supplier.getLiteratureReferences().addAll(instance.getLiteratureReferences());
supplier.setSettingsClass(instance.getClass());
} catch(CoreException e) {
logger.warn(e);
Expand Down Expand Up @@ -176,4 +177,4 @@ private static IConfigurationElement getConfigurationElement(final String filter
}
return null;
}
}
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*******************************************************************************
* Copyright (c) 2016, 2023 Lablicate GmbH.
* Copyright (c) 2016, 2024 Lablicate GmbH.
*
* All rights reserved.
* This program and the accompanying materials are made available under the
Expand All @@ -11,14 +11,19 @@
*******************************************************************************/
package org.eclipse.chemclipse.chromatogram.filter.core.chromatogram;

import java.util.ArrayList;
import java.util.List;

import org.eclipse.chemclipse.chromatogram.filter.settings.IChromatogramFilterSettings;
import org.eclipse.chemclipse.support.literature.LiteratureReference;

public class ChromatogramFilterSupplier implements IChromatogramFilterSupplier {

private String id = ""; //$NON-NLS-1$
private String description = ""; //$NON-NLS-1$
private String filterName = ""; //$NON-NLS-1$
private Class<? extends IChromatogramFilterSettings> settingsClass;
private List<LiteratureReference> literatureReference = new ArrayList<>();

@Override
public String getDescription() {
Expand Down Expand Up @@ -86,6 +91,12 @@ protected void setSettingsClass(Class<? extends IChromatogramFilterSettings> set
this.settingsClass = settingsClass;
}

@Override
public List<LiteratureReference> getLiteratureReferences() {

return literatureReference;
}

@Override
public boolean equals(Object other) {

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*******************************************************************************
* Copyright (c) 2016, 2018 Lablicate GmbH.
* Copyright (c) 2016, 2024 Lablicate GmbH.
*
* All rights reserved.
* This program and the accompanying materials are made available under the
Expand All @@ -11,7 +11,10 @@
*******************************************************************************/
package org.eclipse.chemclipse.chromatogram.filter.core.chromatogram;

import java.util.List;

import org.eclipse.chemclipse.chromatogram.filter.settings.IChromatogramFilterSettings;
import org.eclipse.chemclipse.support.literature.LiteratureReference;

public interface IChromatogramFilterSupplier {

Expand Down Expand Up @@ -43,4 +46,6 @@ public interface IChromatogramFilterSupplier {
* @return
*/
Class<? extends IChromatogramFilterSettings> getSettingsClass();

List<LiteratureReference> getLiteratureReferences();
}
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,6 @@
public class FilterIonRounding extends AbstractSystemProcessSettings {

private static final String ID = "org.eclipse.chemclipse.chromatogram.filter.system.ionRounding"; //$NON-NLS-1$
private static final String FILE_LITERATURE_RIS = "9294.ris";

@Override
public Collection<IProcessSupplier<?>> getProcessorSuppliers() {
Expand All @@ -43,7 +42,7 @@ private static final class ProcessSupplier extends AbstractSystemProcessSupplier
public ProcessSupplier(IProcessTypeSupplier parent) {

super(ID, Messages.ionRoundMethod, Messages.ionRoundMethodDescription, SettingsIonRounding.class, parent);
getLiteratureReferences().add(getLiteratureReference());
getLiteratureReferences().add(createLiteratureReference());
}

@Override
Expand All @@ -55,11 +54,11 @@ public void executeUserSettings(ISystemProcessSettings settings, ProcessExecutio
}
}

private static LiteratureReference getLiteratureReference() {
private static LiteratureReference createLiteratureReference() {

String content;
try {
content = new String(FilterIonRounding.class.getResourceAsStream(FILE_LITERATURE_RIS).readAllBytes());
content = new String(FilterIonRounding.class.getResourceAsStream("9294.ris").readAllBytes());
} catch(IOException e) {
content = "https://doi.org/10.1002/rcm.9294";
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -366,7 +366,7 @@ private int[] calculateDeltaPeakDistances(int peaks, List<IRawPeak> rawPeaksNega
int deltaDistance = 0;
int negativeMaximum = 0;
int positiveMaximum = 0;
List<Integer> peakDistances = new ArrayList<Integer>();
List<Integer> peakDistances = new ArrayList<>();
/*
* Divide the result by 2.
*/
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*******************************************************************************
* Copyright (c) 2011, 2018 Lablicate GmbH.
* Copyright (c) 2011, 2024 Lablicate GmbH.
*
* All rights reserved.
* This program and the accompanying materials are made available under the
Expand All @@ -11,14 +11,22 @@
*******************************************************************************/
package org.eclipse.chemclipse.chromatogram.msd.filter.supplier.backfolding.settings;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import org.eclipse.chemclipse.chromatogram.filter.settings.AbstractChromatogramFilterSettings;
import org.eclipse.chemclipse.chromatogram.msd.filter.supplier.backfolding.preferences.PreferenceSupplier;
import org.eclipse.chemclipse.logging.core.Logger;
import org.eclipse.chemclipse.support.literature.LiteratureReference;
import org.eclipse.chemclipse.support.settings.IntSettingsProperty;

import com.fasterxml.jackson.annotation.JsonProperty;

public class ChromatogramFilterSettings extends AbstractChromatogramFilterSettings {

private static final Logger logger = Logger.getLogger(ChromatogramFilterSettings.class);
//
@JsonProperty(value = "Backfolding Runs", defaultValue = "3")
@IntSettingsProperty(minValue = PreferenceSupplier.MIN_BACKFOLDING_RUNS, maxValue = PreferenceSupplier.MAX_BACKFOLDING_RUNS)
private int numberOfBackfoldingRuns = 3;
Expand All @@ -45,4 +53,27 @@ public void setMaximumRetentionTimeShift(int maximumRetentionTimeShift) {

this.maximumRetentionTimeShift = maximumRetentionTimeShift;
}

@Override
public List<LiteratureReference> getLiteratureReferences() {

List<LiteratureReference> literatureReferences = new ArrayList<>();
literatureReferences.add(createLiteratureReference("achs_ancham61_73.ris", "10.1021/ac00176a015"));
literatureReferences.add(createLiteratureReference("pericles_10969888c31.ris", "10.1002/(SICI)1096-9888(199605)31:5<509::AID-JMS323>3.0.CO;2-B"));
literatureReferences.add(createLiteratureReference("pericles_10969888c32.ris", "10.1002/(SICI)1096-9888(199704)32:4<438::AID-JMS499>3.0.CO;2-N"));
literatureReferences.add(createLiteratureReference("pericles_10969888c33.ris", "10.1002/(SICI)1096-9888(199711)32:11<1253::AID-JMS593>3.0.CO;2-T"));
return literatureReferences;
}

private static LiteratureReference createLiteratureReference(String file, String doi) {

String content;
try {
content = new String(ChromatogramFilterSettings.class.getResourceAsStream(file).readAllBytes());
} catch(IOException | NullPointerException e) {
content = doi;
logger.warn(e);
}
return new LiteratureReference(content);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@




TY - JOUR
T1 - Differential gas chromatographic mass spectrometry
AU - Ghosh, Amit.
AU - Anderegg, Robert J.
Y1 - 1989/01/01
PY - 1989
DA - 1989/01/01
N1 - doi: 10.1021/ac00176a015
DO - 10.1021/ac00176a015
T2 - Analytical Chemistry
JF - Analytical Chemistry
JO - Anal. Chem.
SP - 73
EP - 77
VL - 61
IS - 1
PB - American Chemical Society
SN - 0003-2700
M3 - doi: 10.1021/ac00176a015
UR - https://doi.org/10.1021/ac00176a015
ER -
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@

TY - JOUR
T1 - Backfolding Applied to Differential Gas Chromatography/Mass Spectrometry as a Mathematical Enhancement of Chromatographic Resolution§
AU - Pool, Wim G.
AU - de Leeuw, Jan W.
AU - van de Graaf, Bastiaan
Y1 - 1996/05/01
PY - 1996
DA - 1996/05/01
DO - https://doi.org/10.1002/(SICI)1096-9888(199605)31:5<509::AID-JMS323>3.0.CO;2-B
T2 - Journal of Mass Spectrometry
JF - Journal of Mass Spectrometry
JO - Journal of Mass Spectrometry
JA - J. Mass Spectrom.
SP - 509
EP - 516
VL - 31
IS - 5
KW - differential gas chromatography/mass spectrometry
KW - overlapping components
KW - deconvolution
KW - resolution enhancement
KW - spectrum clean-up
PB - John Wiley & Sons, Ltd
SN - 1076-5174
UR - https://doi.org/10.1002/(SICI)1096-9888(199605)31:5<509::AID-JMS323>3.0.CO;2-B
Y2 - 2024/10/29
N2 - Abstract Differential gas chromatography/mass spectrometry (GC/MS) results in both positive and negative differential mass spectra. The method enhances the chromatographic resolution and cleans up spectra. Although the method is effective with respect to slowly changing signals, this is not true for statistical noise which is aggravated by subtracting spectra. To remedy this, the two sets of data are combined, after they have been shifted with respect to each other by the width of the chromatographic peaks at half-height. This process, called backfolding, has the advantage that a conventional GC trace is produced. By repeating the process of differentiation and subsequent backfolding a number of times, the chromatographic resolution can be further improved and the mass spectra resemble library spectra much closer. The method was evaluated using both simulated and real GC/MS data. The sensitivity of the method with respect to applied shift, chromatographic resolution, peak shape and concentration was investigated. Backfolding of differential GC/MS does not require sophisticated mathematics. It is easy to implement and it is not a burden in terms of CPU time. Application of this method allows for a significantly better identification of the components present in the sample to be analysed.
ER -
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@

TY - JOUR
T1 - Automated Extraction of Pure Mass Spectra from Gas Chromatographic/Mass Spectrometric Data†
AU - Pool, Wim G.
AU - de Leeuw, Jan W.
AU - van de Graaf, Bastiaan
Y1 - 1997/04/01
PY - 1997
DA - 1997/04/01
DO - https://doi.org/10.1002/(SICI)1096-9888(199704)32:4<438::AID-JMS499>3.0.CO;2-N
T2 - Journal of Mass Spectrometry
JF - Journal of Mass Spectrometry
JO - Journal of Mass Spectrometry
JA - J. Mass Spectrom.
SP - 438
EP - 443
VL - 32
IS - 4
KW - gas chromatography/mass spectrometry
KW - deconvolution
KW - spectrum clean-up
KW - backfolding
PB - John Wiley & Sons, Ltd
SN - 1076-5174
UR - https://doi.org/10.1002/(SICI)1096-9888(199704)32:4<438::AID-JMS499>3.0.CO;2-N
Y2 - 2024/10/30
N2 - Abstract An algorithm is described that extracts pure mass spectra from gas chromatographic/mass spectrometric (GC/MS) data. It is based on backfolding, a method described previously to enhance chromatographic resolution in GC/MS data. The ability to extract pure mass spectra was evaluated with both simulated and real GC/MS data and the algorithm was compared with two other methods described recently. It is shown that the algorithm presented gives good results, even when the chromatographic resolution is poor and the spectra are very similar. No a priori knowledge concerning the composition of the data is required. ? 1997 by John Wiley & Sons, Ltd.
ER -
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@

TY - JOUR
T1 - Automated processing of GC/MS data: quantification of the signals of individual components
AU - Pool, Wim G.
AU - Maas, Leo R. M.
AU - de Leeuw, Jan W.
AU - van de Graaf, Bastiaan
Y1 - 1997/11/01
PY - 1997
DA - 1997/11/01
DO - https://doi.org/10.1002/(SICI)1096-9888(199711)32:11<1253::AID-JMS593>3.0.CO;2-T
T2 - Journal of Mass Spectrometry
JF - Journal of Mass Spectrometry
JO - Journal of Mass Spectrometry
JA - J. Mass Spectrom.
SP - 1253
EP - 1257
VL - 32
IS - 11
KW - deconvolution
KW - GC/MS
KW - backfolding
KW - spectrum clean-up
KW - quantification
PB - John Wiley & Sons, Ltd
SN - 1076-5174
UR - https://doi.org/10.1002/(SICI)1096-9888(199711)32:11<1253::AID-JMS593>3.0.CO;2-T
Y2 - 2024/10/30
N2 - Abstract An algorithm is described to quantify the signals of components in GC/MS data. It is an extension of the backfolding algorithm described recently. [W. G. Pool, B. van de Graaf and J. W. de Leeuw, J. Mass. Spectrom. 31, 509 (1996); 32, 438 (1997)]. The method is evaluated on both simulated and real GC/MS data. The results indicate that the method performs quite well, even in cases of components with highly similar spectra and with severe coelution. ? 1997 John Wiley & Sons, Ltd.
ER -
Loading

0 comments on commit d281e1e

Please sign in to comment.