org.apache.commons.math3.fitting.WeightedObservedPoints Java Examples
The following examples show how to use
org.apache.commons.math3.fitting.WeightedObservedPoints.
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: HistogramChartFactory.java From mzmine3 with GNU General Public License v2.0 | 6 votes |
/** * Performs Gaussian fit on XYSeries * * @param data the data * @param gMin lower bound of Gaussian fit * @param gMax upper bound of Gaussian fit * @param sigDigits number of significant digits * @return double[] {normFactor, mean, sigma} as a result of * GaussianCurveFitter.create().fit(obs.toList()) */ public static double[] gaussianFit(List<DataPoint> data, double gMin, double gMax) { // gaussian fit WeightedObservedPoints obs = new WeightedObservedPoints(); for (int i = 0; i < data.size(); i++) { double x = data.get(i).getMZ(); if (x >= gMin && x <= gMax) obs.add(x, data.get(i).getIntensity()); } try { return fitter.fit(obs.toList()); } catch (Exception e) { e.printStackTrace(); logger.error("Cannot fit Gaussian from {} to {}", gMin, gMax, e); return null; } }
Example #2
Source File: HistogramChartFactory.java From old-mzmine3 with GNU General Public License v2.0 | 6 votes |
/** * Performs Gaussian fit on XYSeries * * @param data the data * @param gMin lower bound of Gaussian fit * @param gMax upper bound of Gaussian fit * @param sigDigits number of significant digits * @return double[] {normFactor, mean, sigma} as a result of * GaussianCurveFitter.create().fit(obs.toList()) */ public static double[] gaussianFit(List<DataPoint> data, double gMin, double gMax) { // gaussian fit WeightedObservedPoints obs = new WeightedObservedPoints(); for (int i = 0; i < data.size(); i++) { double x = data.get(i).getMZ(); if (x >= gMin && x <= gMax) obs.add(x, data.get(i).getIntensity()); } try { return fitter.fit(obs.toList()); } catch (Exception e) { e.printStackTrace(); logger.error("Cannot fit Gaussian from {} to {}", gMin, gMax, e); return null; } }
Example #3
Source File: HistogramChartFactory.java From mzmine2 with GNU General Public License v2.0 | 6 votes |
/** * Performs Gaussian fit on XYSeries * * @param data the data * @param gMin lower bound of Gaussian fit * @param gMax upper bound of Gaussian fit * @param sigDigits number of significant digits * @return double[] {normFactor, mean, sigma} as a result of * GaussianCurveFitter.create().fit(obs.toList()) */ public static double[] gaussianFit(List<DataPoint> data, double gMin, double gMax) { // gaussian fit WeightedObservedPoints obs = new WeightedObservedPoints(); for (int i = 0; i < data.size(); i++) { double x = data.get(i).getMZ(); if (x >= gMin && x <= gMax) obs.add(x, data.get(i).getIntensity()); } try { return fitter.fit(obs.toList()); } catch (Exception e) { e.printStackTrace(); logger.error("Cannot fit Gaussian from {} to {}", gMin, gMax, e); return null; } }
Example #4
Source File: Filters.java From ECG-Viewer with GNU General Public License v2.0 | 6 votes |
public static void detrend(List<double[]> set, int detrendPolynomial) { PolynomialCurveFitter p = PolynomialCurveFitter.create(detrendPolynomial); WeightedObservedPoints wop = new WeightedObservedPoints(); for(int i = 0; i < set.size(); i++) { wop.add(set.get(i)[0], set.get(i)[1]); } double[] coeff = p.fit(wop.toList()); for(int h = 0; h < set.size(); h++) { double val = set.get(h)[0]; double off = 0; for(int i = detrendPolynomial; i >= 0; i--) { off += coeff[i] * Math.pow(val, i); } set.set(h, new double[]{set.get(h)[0], set.get(h)[1]-off}); } }
Example #5
Source File: ExtremumComputer.java From RipplePower with Apache License 2.0 | 6 votes |
private boolean isLinearCoeffDiff(double[] input, int centerIndex) { double xStep = 2.0 / (input.length + 1); WeightedObservedPoints firstHalf = new WeightedObservedPoints(); WeightedObservedPoints secondHalf = new WeightedObservedPoints(); for (int i = 0; i < input.length; i++) { if (i <= centerIndex) { firstHalf.add(i * xStep, input[i]); } if (i >= centerIndex) { secondHalf.add((i - centerIndex) * xStep, input[i]); } } PolynomialCurveFitter fitter = PolynomialCurveFitter.create(1); double[] firstHalfCoeffs = fitter.fit(firstHalf.toList()); double[] secondHalfCoeffs = fitter.fit(secondHalf.toList()); double firstHalfCoeff = firstHalfCoeffs[1]; double secondHalfCoeff = secondHalfCoeffs[1]; return firstHalfCoeff * secondHalfCoeff < 0; }
Example #6
Source File: HistogramChartFactory.java From mzmine3 with GNU General Public License v2.0 | 5 votes |
/** * Performs Gaussian fit on XYSeries * * @param series the data * @param gMin lower bound of Gaussian fit * @param gMax upper bound of Gaussian fit * @param sigDigits number of significant digits * @return double[] {normFactor, mean, sigma} as a result of * GaussianCurveFitter.create().fit(obs.toList()) */ public static double[] gaussianFit(XYSeries series, double gMin, double gMax) { // gaussian fit WeightedObservedPoints obs = new WeightedObservedPoints(); for (int i = 0; i < series.getItemCount(); i++) { double x = series.getX(i).doubleValue(); if (x >= gMin && x <= gMax) obs.add(x, series.getY(i).doubleValue()); } return fitter.fit(obs.toList()); }
Example #7
Source File: HistogramChartFactory.java From mzmine3 with GNU General Public License v2.0 | 5 votes |
/** * Performs Gaussian fit on XYSeries * * @param data the data * @param series the series index * @param gMin lower bound of Gaussian fit * @param gMax upper bound of Gaussian fit * @param sigDigits number of significant digits * @return double[] {normFactor, mean, sigma} as a result of * GaussianCurveFitter.create().fit(obs.toList()) */ public static double[] gaussianFit(XYDataset data, int series, double gMin, double gMax) { // gaussian fit WeightedObservedPoints obs = new WeightedObservedPoints(); for (int i = 0; i < data.getItemCount(series); i++) { double x = data.getXValue(series, i); if (x >= gMin && x <= gMax) obs.add(x, data.getYValue(series, i)); } return fitter.fit(obs.toList()); }
Example #8
Source File: GaussFitEvaluator.java From lucene-solr with Apache License 2.0 | 5 votes |
@Override @SuppressWarnings({"unchecked", "rawtypes"}) public Object doWork(Object... objects) throws IOException{ if(objects.length >= 3) { throw new IOException("gaussfit function takes a maximum of 2 arguments."); } Object first = objects[0]; double[] x = null; double[] y = null; if(objects.length == 1) { //Only the y values passed y = ((List) first).stream().mapToDouble(value -> ((Number) value).doubleValue()).toArray(); x = new double[y.length]; for(int i=0; i<y.length; i++) { x[i] = i; } } else if(objects.length == 2) { // x and y passed Object second = objects[1]; x = ((List) first).stream().mapToDouble(value -> ((Number) value).doubleValue()).toArray(); y = ((List) second).stream().mapToDouble(value -> ((Number) value).doubleValue()).toArray(); } GaussianCurveFitter curveFitter = GaussianCurveFitter.create(); WeightedObservedPoints points = new WeightedObservedPoints(); for(int i=0; i<x.length; i++) { points.add(x[i], y[i]); } List<WeightedObservedPoint> pointList = points.toList(); double[] guess = new GaussianCurveFitter.ParameterGuesser(pointList).guess(); curveFitter = curveFitter.withStartPoint(guess); double[] coef = curveFitter.fit(pointList); Gaussian gaussian = new Gaussian(coef[0], coef[1], coef[2]); List list = new ArrayList(); for(double xvalue : x) { double yvalue= gaussian.value(xvalue); list.add(yvalue); } return new VectorFunction(gaussian, list); }
Example #9
Source File: HistogramChartFactory.java From old-mzmine3 with GNU General Public License v2.0 | 5 votes |
/** * Performs Gaussian fit on XYSeries * * @param series the data * @param gMin lower bound of Gaussian fit * @param gMax upper bound of Gaussian fit * @param sigDigits number of significant digits * @return double[] {normFactor, mean, sigma} as a result of * GaussianCurveFitter.create().fit(obs.toList()) */ public static double[] gaussianFit(XYSeries series, double gMin, double gMax) { // gaussian fit WeightedObservedPoints obs = new WeightedObservedPoints(); for (int i = 0; i < series.getItemCount(); i++) { double x = series.getX(i).doubleValue(); if (x >= gMin && x <= gMax) obs.add(x, series.getY(i).doubleValue()); } return fitter.fit(obs.toList()); }
Example #10
Source File: HistogramChartFactory.java From old-mzmine3 with GNU General Public License v2.0 | 5 votes |
/** * Performs Gaussian fit on XYSeries * * @param data the data * @param series the series index * @param gMin lower bound of Gaussian fit * @param gMax upper bound of Gaussian fit * @param sigDigits number of significant digits * @return double[] {normFactor, mean, sigma} as a result of * GaussianCurveFitter.create().fit(obs.toList()) */ public static double[] gaussianFit(XYDataset data, int series, double gMin, double gMax) { // gaussian fit WeightedObservedPoints obs = new WeightedObservedPoints(); for (int i = 0; i < data.getItemCount(series); i++) { double x = data.getXValue(series, i); if (x >= gMin && x <= gMax) obs.add(x, data.getYValue(series, i)); } return fitter.fit(obs.toList()); }
Example #11
Source File: HistogramChartFactory.java From mzmine2 with GNU General Public License v2.0 | 5 votes |
/** * Performs Gaussian fit on XYSeries * * @param series the data * @param gMin lower bound of Gaussian fit * @param gMax upper bound of Gaussian fit * @param sigDigits number of significant digits * @return double[] {normFactor, mean, sigma} as a result of * GaussianCurveFitter.create().fit(obs.toList()) */ public static double[] gaussianFit(XYSeries series, double gMin, double gMax) { // gaussian fit WeightedObservedPoints obs = new WeightedObservedPoints(); for (int i = 0; i < series.getItemCount(); i++) { double x = series.getX(i).doubleValue(); if (x >= gMin && x <= gMax) obs.add(x, series.getY(i).doubleValue()); } return fitter.fit(obs.toList()); }
Example #12
Source File: HistogramChartFactory.java From mzmine2 with GNU General Public License v2.0 | 5 votes |
/** * Performs Gaussian fit on XYSeries * * @param data the data * @param series the series index * @param gMin lower bound of Gaussian fit * @param gMax upper bound of Gaussian fit * @param sigDigits number of significant digits * @return double[] {normFactor, mean, sigma} as a result of * GaussianCurveFitter.create().fit(obs.toList()) */ public static double[] gaussianFit(XYDataset data, int series, double gMin, double gMax) { // gaussian fit WeightedObservedPoints obs = new WeightedObservedPoints(); for (int i = 0; i < data.getItemCount(series); i++) { double x = data.getXValue(series, i); if (x >= gMin && x <= gMax) obs.add(x, data.getYValue(series, i)); } return fitter.fit(obs.toList()); }
Example #13
Source File: Filters.java From ECG-Viewer with GNU General Public License v2.0 | 5 votes |
public static void harmonicDetrend(List<double[]> set) { HarmonicCurveFitter p = HarmonicCurveFitter.create(); WeightedObservedPoints wop = new WeightedObservedPoints(); for(int i = 0; i < set.size(); i++) { wop.add(set.get(i)[0], set.get(i)[1]); } double[] coeff = p.fit(wop.toList()); for(int h = 0; h < set.size(); h++) { double val = set.get(h)[0]; double off = coeff[0] * Math.sin(2*Math.PI*coeff[1]*val + coeff[2]); set.set(h, new double[]{val, set.get(h)[1]-off}); } }
Example #14
Source File: HarmonicFitEvaluator.java From lucene-solr with Apache License 2.0 | 4 votes |
@Override @SuppressWarnings({"unchecked"}) public Object doWork(Object... objects) throws IOException{ if(objects.length > 3) { throw new IOException("harmonicFit function takes a maximum of 2 arguments."); } Object first = objects[0]; double[] x = null; double[] y = null; if(objects.length == 1) { //Only the y values passed y = ((List) first).stream().mapToDouble(value -> ((Number) value).doubleValue()).toArray(); x = new double[y.length]; for(int i=0; i<y.length; i++) { x[i] = i; } } else if(objects.length == 2) { // x and y passed Object second = objects[1]; x = ((List) first).stream().mapToDouble(value -> ((Number) value).doubleValue()).toArray(); y = ((List) second).stream().mapToDouble(value -> ((Number) value).doubleValue()).toArray(); } HarmonicCurveFitter curveFitter = HarmonicCurveFitter.create(); WeightedObservedPoints points = new WeightedObservedPoints(); for(int i=0; i<x.length; i++) { points.add(x[i], y[i]); } double[] guess = new HarmonicCurveFitter.ParameterGuesser(points.toList()).guess(); curveFitter = curveFitter.withStartPoint(guess); double[] coef = curveFitter.fit(points.toList()); HarmonicOscillator pf = new HarmonicOscillator(coef[0], coef[1], coef[2]); @SuppressWarnings({"rawtypes"}) List list = new ArrayList(); for(double xvalue : x) { double yvalue= pf.value(xvalue); list.add(yvalue); } @SuppressWarnings({"unchecked"}) VectorFunction vectorFunction = new VectorFunction(pf, list); vectorFunction.addToContext("amplitude", coef[0]); vectorFunction.addToContext("angularFrequency", coef[1]); vectorFunction.addToContext("phase", coef[2]); return vectorFunction; }