Skip to content
Merged
Show file tree
Hide file tree
Changes from all 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
Original file line number Diff line number Diff line change
Expand Up @@ -9,21 +9,20 @@
*
* Contributors:
* Philip Wenig - initial API and implementation
* Lorenz Gerber - Specific result type for multivariate analysis (MVA)
*******************************************************************************/
package org.eclipse.chemclipse.xxd.process.supplier.pca.ui.chart2d;

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

import org.eclipse.chemclipse.model.statistics.ISample;
import org.eclipse.chemclipse.model.statistics.IVariable;
import org.eclipse.chemclipse.support.text.ValueFormat;
import org.eclipse.chemclipse.support.ui.workbench.DisplayUtils;
import org.eclipse.chemclipse.support.ui.workbench.PreferencesSupport;
import org.eclipse.chemclipse.swt.ui.support.Colors;
import org.eclipse.chemclipse.xxd.process.supplier.pca.model.EvaluationPCA;
import org.eclipse.chemclipse.xxd.process.supplier.pca.model.IResultPCA;
import org.eclipse.chemclipse.xxd.process.supplier.pca.model.IResultsPCA;
import org.eclipse.chemclipse.xxd.process.supplier.pca.model.IResultMVA;
import org.eclipse.chemclipse.xxd.process.supplier.pca.model.IResultsMVA;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swtchart.IBarSeries.BarWidthStyle;
Expand Down Expand Up @@ -51,10 +50,10 @@ public ErrorResidueChart(Composite parent, int style) {
createControl();
}

public void setInput(EvaluationPCA<IVariable, ISample, IResultPCA> evaluationPCA) {
public void setInput(EvaluationPCA evaluationPCA) {

if(evaluationPCA != null) {
IResultsPCA<IResultPCA, ?> resultsPCA = evaluationPCA.getResults();
IResultsMVA resultsPCA = evaluationPCA.getResults();
updateChart(resultsPCA);
} else {
updateChart(null);
Expand Down Expand Up @@ -118,7 +117,7 @@ private void setPrimaryAxisSet(IChartSettings chartSettings) {
}
}

private void updateChart(IResultsPCA<IResultPCA, ?> pcaResults) {
private void updateChart(IResultsMVA pcaResults) {

deleteSeries();
if(pcaResults != null) {
Expand All @@ -142,29 +141,29 @@ private void updateChart(IResultsPCA<IResultPCA, ?> pcaResults) {
}
}

private String[] getCategories(IResultsPCA<IResultPCA, ?> pcaResults) {
private String[] getCategories(IResultsMVA pcaResults) {

List<IResultPCA> pcaResultList = pcaResults.getPcaResultList();
List<IResultMVA> pcaResultList = pcaResults.getPcaResultList();
int size = pcaResultList.size();
String[] categories = new String[size];
//
for(int i = 0; i < size; i++) {
IResultPCA pcaResult = pcaResultList.get(i);
IResultMVA pcaResult = pcaResultList.get(i);
categories[i] = pcaResult.getSample().getSampleName();
}
//
return categories;
}

private ISeriesData getSeries(IResultsPCA<IResultPCA, ?> pcaResults) {
private ISeriesData getSeries(IResultsMVA pcaResults) {

List<IResultPCA> pcaResultList = pcaResults.getPcaResultList();
List<IResultMVA> pcaResultList = pcaResults.getPcaResultList();
int size = pcaResultList.size();
double[] xSeries = new double[size];
double[] ySeries = new double[size];
//
for(int i = 0; i < size; i++) {
IResultPCA pcaResult = pcaResultList.get(i);
IResultMVA pcaResult = pcaResultList.get(i);
xSeries[i] = i;
ySeries[i] = pcaResult.getErrorMetric();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,8 @@

import java.util.List;

import org.eclipse.chemclipse.model.statistics.ISample;
import org.eclipse.chemclipse.model.statistics.IVariable;
import org.eclipse.chemclipse.xxd.process.supplier.pca.model.EvaluationPCA;
import org.eclipse.chemclipse.xxd.process.supplier.pca.model.IResultPCA;
import org.eclipse.chemclipse.xxd.process.supplier.pca.model.IResultsPCA;
import org.eclipse.chemclipse.xxd.process.supplier.pca.model.IResultsMVA;
import org.eclipse.chemclipse.xxd.process.supplier.pca.ui.support.SeriesConverter;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swtchart.extensions.scattercharts.IScatterSeriesData;
Expand Down Expand Up @@ -49,11 +46,11 @@ public void setLabelsType(int labelsType) {
}
}

public void setInput(EvaluationPCA<IVariable, ISample, IResultPCA> evaluationPCA, int pcX, int pcY) {
public void setInput(EvaluationPCA evaluationPCA, int pcX, int pcY) {

deleteSeries();
if(evaluationPCA != null) {
IResultsPCA<IResultPCA, IVariable> resultsPCA = evaluationPCA.getResults();
IResultsMVA resultsPCA = evaluationPCA.getResults();
List<IScatterSeriesData> series;
if(labelType == LABEL_RETENTION_TIME_MINUTES) {
series = SeriesConverter.basisVectorsToSeries(resultsPCA, evaluationPCA.getHighlightedVariables(), pcX, pcY);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,27 +19,26 @@
import java.util.Map;

import org.eclipse.chemclipse.model.statistics.ISample;
import org.eclipse.chemclipse.model.statistics.IVariable;
import org.eclipse.chemclipse.xxd.process.supplier.pca.model.EvaluationPCA;
import org.eclipse.chemclipse.xxd.process.supplier.pca.model.IResultPCA;
import org.eclipse.chemclipse.xxd.process.supplier.pca.model.IResultsPCA;
import org.eclipse.chemclipse.xxd.process.supplier.pca.model.IResultMVA;
import org.eclipse.chemclipse.xxd.process.supplier.pca.model.IResultsMVA;
import org.eclipse.chemclipse.xxd.process.supplier.pca.ui.support.SeriesConverter;
import org.eclipse.swt.widgets.Composite;

public class ScorePlot extends AbtractPlotPCA {

private final Map<ISample, IResultPCA> extractedResults = new HashMap<>();
private final Map<ISample, IResultMVA> extractedResults = new HashMap<>();

public ScorePlot(Composite parent, int style) {

super(parent, style, "Score Plot");
}

public void setInput(EvaluationPCA<IVariable, ISample, IResultPCA> evaluationPCA, int pcX, int pcY) {
public void setInput(EvaluationPCA evaluationPCA, int pcX, int pcY) {

deleteSeries();
if(evaluationPCA != null) {
IResultsPCA<IResultPCA, ?> resultsPCA = evaluationPCA.getResults();
IResultsMVA resultsPCA = evaluationPCA.getResults();
List<ISample> highlightedSamples = evaluationPCA.getHighlightedSamples();
addSeriesData(SeriesConverter.sampleToSeries(resultsPCA, highlightedSamples, pcX, pcY, extractedResults));
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,21 +9,19 @@
*
* Contributors:
* Philip Wenig - initial API and implementation
* Lorenz Gerber - refactor
*******************************************************************************/
package org.eclipse.chemclipse.xxd.process.supplier.pca.ui.chart2d;

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

import org.eclipse.chemclipse.model.statistics.ISample;
import org.eclipse.chemclipse.model.statistics.IVariable;
import org.eclipse.chemclipse.support.text.ValueFormat;
import org.eclipse.chemclipse.support.ui.workbench.DisplayUtils;
import org.eclipse.chemclipse.support.ui.workbench.PreferencesSupport;
import org.eclipse.chemclipse.swt.ui.support.Colors;
import org.eclipse.chemclipse.xxd.process.supplier.pca.model.EvaluationPCA;
import org.eclipse.chemclipse.xxd.process.supplier.pca.model.IResultPCA;
import org.eclipse.chemclipse.xxd.process.supplier.pca.model.IResultsPCA;
import org.eclipse.chemclipse.xxd.process.supplier.pca.model.IResultsMVA;
import org.eclipse.chemclipse.xxd.process.supplier.pca.model.Variance;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Composite;
Expand All @@ -44,7 +42,7 @@
public class VarianceChart extends BarChart {

private Variance variance = Variance.EXPLAINED;
private EvaluationPCA<IVariable, ISample, IResultPCA> evaluationPCA;
private EvaluationPCA evaluationPCA;

public VarianceChart() {

Expand All @@ -64,7 +62,7 @@ public void setVariance(Variance variance) {
updateChart();
}

public void setInput(EvaluationPCA<IVariable, ISample, IResultPCA> evaluationPCA) {
public void setInput(EvaluationPCA evaluationPCA) {

this.evaluationPCA = evaluationPCA;
updateChart();
Expand Down Expand Up @@ -126,7 +124,7 @@ private void updateChart() {
deleteSeries();
if(evaluationPCA != null) {
//
IResultsPCA<?, ?> resultsPCA = evaluationPCA.getResults();
IResultsMVA resultsPCA = evaluationPCA.getResults();
//
IChartSettings chartSettings = getChartSettings();
IPrimaryAxisSettings primaryAxisSettingsX = chartSettings.getPrimaryAxisSettingsX();
Expand Down Expand Up @@ -168,7 +166,7 @@ private void updateChart() {
}
}

private String[] getCategories(IResultsPCA<?, ?> pcaResults) {
private String[] getCategories(IResultsMVA pcaResults) {

int size = pcaResults.getCumulativeExplainedVariances().length;
String[] categories = new String[size];
Expand All @@ -180,7 +178,7 @@ private String[] getCategories(IResultsPCA<?, ?> pcaResults) {
return categories;
}

private ISeriesData getSeriesVariance(IResultsPCA<?, ?> pcaResults) {
private ISeriesData getSeriesVariance(IResultsMVA pcaResults) {

double[] ySeries;
String label;
Expand All @@ -202,7 +200,7 @@ private ISeriesData getSeriesVariance(IResultsPCA<?, ?> pcaResults) {
return new SeriesData(xSeries, ySeries, label);
}

private ISeriesData getSeriesQ2(IResultsPCA<?, ?> pcaResults) {
private ISeriesData getSeriesQ2(IResultsMVA pcaResults) {

double[] ySeries;
String label;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
*
* Contributors:
* Philip Wenig - initial API and implementation
* Lorenz Gerber - Use IEvaluation
*******************************************************************************/
package org.eclipse.chemclipse.xxd.process.supplier.pca.ui.internal.runnable;

Expand All @@ -20,9 +21,11 @@
import org.eclipse.chemclipse.xxd.process.supplier.pca.core.CrossValidatorOPLS;
import org.eclipse.chemclipse.xxd.process.supplier.pca.core.ProcessorPCA;
import org.eclipse.chemclipse.xxd.process.supplier.pca.model.Algorithm;
import org.eclipse.chemclipse.xxd.process.supplier.pca.model.EvaluationPCA;
import org.eclipse.chemclipse.xxd.process.supplier.pca.model.IAnalysisSettings;
import org.eclipse.chemclipse.xxd.process.supplier.pca.model.IResultPCA;
import org.eclipse.chemclipse.xxd.process.supplier.pca.model.ICrossValidationProcessor;
import org.eclipse.chemclipse.xxd.process.supplier.pca.model.IEvaluation;
import org.eclipse.chemclipse.xxd.process.supplier.pca.model.IProcessor;
import org.eclipse.chemclipse.xxd.process.supplier.pca.model.IResult;
import org.eclipse.chemclipse.xxd.process.supplier.pca.model.ISamplesPCA;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.jface.operation.IRunnableWithProgress;
Expand All @@ -32,45 +35,65 @@ public class CalculationExecutor implements IRunnableWithProgress {
private static final Logger logger = Logger.getLogger(CalculationExecutor.class);
//
private ISamplesPCA<IVariable, ISample> samples = null;
private EvaluationPCA<IVariable, ISample, IResultPCA> masterEvaluationPCA = null;
private IEvaluation<IVariable, ISample, IResult> masterEvaluation = null;
//
private EvaluationPCA<IVariable, ISample, IResultPCA> evaluationPCA = null;
private IEvaluation<IVariable, ISample, IResult> evaluation = null;

public CalculationExecutor(ISamplesPCA<IVariable, ISample> samples, EvaluationPCA<IVariable, ISample, IResultPCA> masterEvaluationPCA) {
public CalculationExecutor(ISamplesPCA<IVariable, ISample> samples, IEvaluation<IVariable, ISample, IResult> masterEvaluation) {

this.samples = samples;
this.masterEvaluationPCA = masterEvaluationPCA;
this.masterEvaluation = masterEvaluation;
}

public EvaluationPCA<IVariable, ISample, IResultPCA> getEvaluationPCA() {
public IEvaluation<IVariable, ISample, IResult> getEvaluation() {

return evaluationPCA;
return evaluation;
}

@Override
public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {

if(samples != null) {
try {
ProcessorPCA processorPCA = new ProcessorPCA();
evaluationPCA = processorPCA.process(samples, masterEvaluationPCA, monitor);
IAnalysisSettings settings = samples.getAnalysisSettings();
IProcessor processor = getProcessor(settings.getAlgorithm());
evaluation = processor.process(samples, masterEvaluation, monitor);
if(settings.getCrossValidation()) {
if(settings.getAlgorithm() == Algorithm.OPLS) {
CrossValidatorOPLS crossValidator = new CrossValidatorOPLS();
double[] q2 = crossValidator.crossValidate(samples, masterEvaluationPCA, monitor);
evaluationPCA.addCrossValidation(q2);
ICrossValidationProcessor crossValidator = getCrossValidationProcessor(settings.getAlgorithm());
if(crossValidator != null) {
double[] q2 = crossValidator.crossValidate(samples, masterEvaluation, monitor);
evaluation.addCrossValidation(q2);
double[] q2Cum = new double[q2.length];
q2Cum[0] = q2[0];
for(int i = 1; i < q2.length; i++) {
q2Cum[i] = q2Cum[i - 1] + q2[i];
}
evaluationPCA.addCumulativeCrossValidation(q2Cum);
evaluation.addCumulativeCrossValidation(q2Cum);
}
}
} catch(Exception e) {
logger.error(e);
}
}
}

private IProcessor getProcessor(Algorithm algorithm) {

if(Algorithm.NIPALS == algorithm) {
return new ProcessorPCA();
} else if(Algorithm.SVD == algorithm) {
return new ProcessorPCA();
} else if(Algorithm.OPLS == algorithm) {
return new ProcessorPCA();
}
return null;
}

private ICrossValidationProcessor getCrossValidationProcessor(Algorithm algorithm) {

if(Algorithm.OPLS == algorithm) {
return new CrossValidatorOPLS();
}
return null;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,6 @@ protected ErrorResidueChart createControl(Composite parent) {
return new ErrorResidueChart(parent, SWT.NONE);
}

@SuppressWarnings("unchecked")
@Override
protected boolean updateData(List<Object> objects, String topic) {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,6 @@ protected ExtendedFeatureListUI createControl(Composite parent) {
return new ExtendedFeatureListUI(parent, SWT.NONE);
}

@SuppressWarnings("unchecked")
@Override
protected boolean updateData(List<Object> objects, String topic) {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,6 @@ protected ExtendedLoadingsPlot createControl(Composite parent) {
return new ExtendedLoadingsPlot(parent, SWT.NONE);
}

@SuppressWarnings("unchecked")
@Override
protected boolean updateData(List<Object> objects, String topic) {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,6 @@ protected ExtendedScorePlot2D createControl(Composite parent) {
return new ExtendedScorePlot2D(parent, SWT.NONE);
}

@SuppressWarnings("unchecked")
@Override
protected boolean updateData(List<Object> objects, String topic) {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,6 @@ protected ExtendedVarianceUI createControl(Composite parent) {
return new ExtendedVarianceUI(parent, SWT.NONE);
}

@SuppressWarnings("unchecked")
@Override
protected boolean updateData(List<Object> objects, String topic) {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
*
* Contributors:
* Philip Wenig - initial API and implementation
* Lorenz Gerber - Specific result type for multivariate analysis (MVA)
*******************************************************************************/
package org.eclipse.chemclipse.xxd.process.supplier.pca.ui.support;

Expand All @@ -23,7 +24,7 @@
import org.eclipse.chemclipse.model.statistics.ISample;
import org.eclipse.chemclipse.swt.ui.support.Colors;
import org.eclipse.chemclipse.swt.ui.support.IColorScheme;
import org.eclipse.chemclipse.xxd.process.supplier.pca.model.IResultPCA;
import org.eclipse.chemclipse.xxd.process.supplier.pca.model.IResultMVA;
import org.eclipse.chemclipse.xxd.process.supplier.pca.model.LabelOptionPCA;
import org.eclipse.swt.graphics.Color;

Expand All @@ -32,10 +33,10 @@ public class ColorSupport {
public static final String COLOR_GROUP_DEFAULT = "Unknown";
public static final Color COLOR_FALLBACK = Colors.DARK_RED;

public static Map<String, Color> getColorMapResults(List<IResultPCA> resultList, LabelOptionPCA labelOptionPCA, String colorScheme) {
public static Map<String, Color> getColorMapResults(List<IResultMVA> resultList, LabelOptionPCA labelOptionPCA, String colorScheme) {

Set<String> colorGroups = new HashSet<>();
for(IResultPCA pcaResult : resultList) {
for(IResultMVA pcaResult : resultList) {
String colorGroup = getColorGroup(pcaResult.getSample(), labelOptionPCA);
if(colorGroup != null) {
colorGroups.add(colorGroup);
Expand Down
Loading