/* * Copyright (c) 2012 Diamond Light Source Ltd. * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html */ package uk.ac.diamond.scisoft.analysis.processing.operations; import org.eclipse.dawnsci.analysis.api.fitting.functions.IPeak; import org.eclipse.dawnsci.analysis.api.processing.model.AbstractOperationModel; import org.eclipse.dawnsci.analysis.api.processing.model.OperationModelField; import org.eclipse.january.dataset.IDataset; import uk.ac.diamond.scisoft.analysis.optimize.IOptimizer; /** * Hacky temp model for fitting. * * @author Matthew Gerring * */ public class FittingModel extends AbstractOperationModel { private IDataset xAxis; private Class<? extends IPeak> peakClass; private Class<? extends IOptimizer> optimizerClass; private double quality; private long seed; @OperationModelField(max=10, min=0) private int smoothing; private int numberOfPeaks; private double threshold; private boolean autostopping; private boolean backgrounddominated; public FittingModel() { } public FittingModel(IDataset xaxis, Class<? extends IPeak> class1, Class<? extends IOptimizer> class2, double d, long seed, int smoothing, int numpeaks, double threshold, boolean autostopping, boolean backgrounddominated) { this.xAxis = xaxis; this.peakClass = class1; this.optimizerClass = class2; this.quality = d; this.seed = seed; this.smoothing = smoothing; this.numberOfPeaks = numpeaks; this.threshold = threshold; this.autostopping = autostopping; this.backgrounddominated = backgrounddominated; } public IDataset getxAxis() { return xAxis; } public void setxAxis(IDataset xAxis) { this.xAxis = xAxis; } public Class<? extends IPeak> getPeak() { return peakClass; } public void setPeak(Class<? extends IPeak> peak) { this.peakClass = peak; } public Class<? extends IOptimizer> getOptimizer() { return optimizerClass; } public void setOptimizer(Class<? extends IOptimizer> optimizer) { this.optimizerClass = optimizer; } public double getQuality() { return quality; } public void setQuality(double quality) { this.quality = quality; } public long getSeed() { return seed; } public void setSeed(long seed) { this.seed = seed; } public int getSmoothing() { return smoothing; } public void setSmoothing(int smoothing) { this.smoothing = smoothing; } public int getNumberOfPeaks() { return numberOfPeaks; } public void setNumberOfPeaks(int numberOfPeaks) { this.numberOfPeaks = numberOfPeaks; } public double getThreshold() { return threshold; } public void setThreshold(double threshold) { this.threshold = threshold; } public boolean isAutostopping() { return autostopping; } public void setAutostopping(boolean autostopping) { this.autostopping = autostopping; } public boolean isBackgrounddominated() { return backgrounddominated; } public void setBackgrounddominated(boolean backgrounddominated) { this.backgrounddominated = backgrounddominated; } public IOptimizer createOptimizer() throws Exception { return optimizerClass.getConstructor(double.class, Long.class).newInstance(quality, seed); } }