List of usage examples for org.jfree.data.xy XYSeries getY
public Number getY(int index)
From source file:mzmatch.ipeak.align.CowCoda.java
@SuppressWarnings("unchecked") public static void main(String args[]) { final String lbl_mcq = "mcq"; try {//www . j a v a2 s . c o m Tool.init(); // parse the commandline options final Options options = new Options(); CmdLineParser cmdline = new CmdLineParser(options); // check whether we need to show the help cmdline.parse(args); if (options.help) { Tool.printHeader(System.out, application, version); cmdline.printUsage(System.out, ""); return; } if (options.verbose) { Tool.printHeader(System.out, application, version); cmdline.printOptions(); } // check the command-line parameters int filetype = JFreeChartTools.PDF; { if (options.ppm == -1) { System.err.println("[ERROR]: the ppm-value needs to be set."); System.exit(0); } if (options.order == -1) { System.err.println("[ERROR]: the order for the polynomial fit needs to be set."); System.exit(0); } if (options.maxrt == -1) { System.err.println("[ERROR]: the maximum retention time shift is not set."); System.exit(0); } if (options.image != null) { String extension = options.image.substring(options.image.lastIndexOf('.') + 1); if (extension.toLowerCase().equals("png")) filetype = JFreeChartTools.PNG; else if (extension.toLowerCase().equals("pdf")) filetype = JFreeChartTools.PDF; else { System.err.println( "[ERROR]: file extension of the image file needs to be either PDF or PNG."); System.exit(0); } } // if the output directories do not exist, create them if (options.output != null) Tool.createFilePath(options.output, true); if (options.image != null) Tool.createFilePath(options.image, true); if (options.selection != null) Tool.createFilePath(options.selection, true); } // load the data if (options.verbose) System.out.println("Loading the data"); double maxrt = 0; Vector<ParseResult> data = new Vector<ParseResult>(); Vector<IPeakSet<IPeak>> matchdata = new Vector<IPeakSet<IPeak>>(); for (String file : options.input) { System.out.println("- " + new File(file).getName()); // load the mass chromatogram data ParseResult result = PeakMLParser.parse(new FileInputStream(file), true); data.add(result); // select the best mass chromatograms Vector<IPeak> selection = new Vector<IPeak>(); for (IPeak peak : (IPeakSet<IPeak>) result.measurement) { maxrt = Math.max(maxrt, maxRT(peak)); double mcq = codaDW(peak); peak.addAnnotation(lbl_mcq, Double.toString(mcq), Annotation.ValueType.DOUBLE); if (mcq >= options.codadw) selection.add(peak); } // keep track of the selected mass chromatograms int id = options.input.indexOf(file); IPeakSet<IPeak> peakset = new IPeakSet<IPeak>(selection); peakset.setMeasurementID(id); for (IPeak mc : peakset) mc.setMeasurementID(id); matchdata.add(peakset); } // match the selection together if (options.verbose) System.out.println("Matching the data"); Vector<IPeakSet<IPeak>> matches = IPeak.match((Vector) matchdata, options.ppm, new IPeak.MatchCompare<IPeak>() { public double distance(IPeak peak1, IPeak peak2) { double diff = Math.abs(peak1.getRetentionTime() - peak2.getRetentionTime()); if (diff > options.maxrt) return -1; Signal signal1 = new Signal(peak1.getSignal()); signal1.normalize(); Signal signal2 = new Signal(peak2.getSignal()); signal2.normalize(); double offset = bestOffSet(peak1, peak2, options.maxrt); for (int i = 0; i < signal2.getSize(); ++i) signal2.getX()[i] += offset; double correlation = signal2 .pearsonsCorrelation(signal1)[Statistical.PEARSON_CORRELATION]; if (correlation < 0.5) return -1; // the match-function optimizes toward 0 (it's a distance) return 1 - correlation; } }); // filter out all incomplete sets Vector<IPeakSet<IPeak>> valids = new Vector<IPeakSet<IPeak>>(); for (IPeakSet<IPeak> set : matches) { if (set.size() < options.input.size()) continue; valids.add((IPeakSet) set); } // calculate the alignment factors if (options.verbose) System.out.println("Calculating the alignment factors"); double medians[] = new double[valids.size() + 2]; DataFrame.Double dataframe = new DataFrame.Double(valids.size() + 2, options.input.size()); medians[0] = 0; medians[medians.length - 1] = maxrt; for (int i = 0; i < options.input.size(); ++i) { dataframe.set(0, i, 0.1); dataframe.set(dataframe.getNrRows() - 1, i, 0); } for (int matchid = 0; matchid < valids.size(); ++matchid) { IPeakSet<IPeak> match = valids.get(matchid); // find the most central double offsets[][] = new double[match.size()][match.size()]; for (int i = 0; i < match.size(); ++i) for (int j = i + 1; j < match.size(); ++j) { offsets[i][j] = bestOffSet(match.get(i), match.get(j), options.maxrt); offsets[j][i] = -offsets[i][j]; } int besti = 0; double bestabssum = Double.MAX_VALUE; for (int i = 0; i < match.size(); ++i) { double abssum = 0; for (int j = 0; j < match.size(); ++j) abssum += Math.abs(offsets[i][j]); if (abssum < bestabssum) { besti = i; bestabssum = abssum; } } for (int i = 0; i < match.size(); ++i) dataframe.set(matchid + 1, match.get(i).getMeasurementID(), (i == besti ? 0 : offsets[i][besti])); medians[matchid + 1] = match.get(besti).getRetentionTime(); dataframe.setRowName(matchid, Double.toString(match.get(besti).getRetentionTime())); } double minmedian = Statistical.min(medians); double maxmedian = Statistical.max(medians); // calculate for each profile the correction function PolynomialFunction functions[] = new PolynomialFunction[valids.size()]; for (int i = 0; i < options.input.size(); ++i) functions[i] = PolynomialFunction.fit(options.order, medians, dataframe.getCol(i)); // make a nice plot out of the whole thing if (options.verbose) System.out.println("Writing results"); if (options.image != null) { org.jfree.data.xy.XYSeriesCollection dataset = new org.jfree.data.xy.XYSeriesCollection(); JFreeChart linechart = ChartFactory.createXYLineChart(null, "Retention Time (seconds)", "offset", dataset, PlotOrientation.VERTICAL, true, // legend false, // tooltips false // urls ); // setup the colorkey Colormap colormap = new Colormap(Colormap.EXCEL); // get the structure behind the graph XYPlot plot = (XYPlot) linechart.getPlot(); XYLineAndShapeRenderer renderer = (XYLineAndShapeRenderer) plot.getRenderer(); // setup the plot area linechart.setBackgroundPaint(java.awt.Color.WHITE); linechart.setBorderVisible(false); linechart.setAntiAlias(true); plot.setBackgroundPaint(java.awt.Color.WHITE); plot.setDomainGridlinesVisible(true); plot.setRangeGridlinesVisible(true); // create the datasets for (int i = 0; i < options.input.size(); ++i) { org.jfree.data.xy.XYSeries series = new org.jfree.data.xy.XYSeries(dataframe.getColName(i)); org.jfree.data.xy.XYSeries function = new org.jfree.data.xy.XYSeries( dataframe.getColName(i) + "-function"); dataset.addSeries(series); dataset.addSeries(function); renderer.setSeriesPaint(dataset.getSeriesCount() - 1, new java.awt.Color(colormap.getColor(i))); renderer.setSeriesPaint(dataset.getSeriesCount() - 2, new java.awt.Color(colormap.getColor(i))); renderer.setSeriesLinesVisible(dataset.getSeriesCount() - 2, false); renderer.setSeriesShapesVisible(dataset.getSeriesCount() - 2, true); // add the data-points for (int j = 0; j < valids.size(); ++j) series.add(medians[j], dataframe.get(j, i)); for (double x = minmedian; x < maxmedian; ++x) function.add(x, functions[i].getY(x)); } dataset.removeAllSeries(); for (int i = 0; i < options.input.size(); ++i) { Function function = functions[i]; org.jfree.data.xy.XYSeries series = new org.jfree.data.xy.XYSeries(dataframe.getColName(i)); dataset.addSeries(series); renderer.setSeriesPaint(i, new java.awt.Color(colormap.getColor(i))); renderer.setSeriesLinesVisible(i, false); renderer.setSeriesShapesVisible(i, true); // add the data-points for (int j = 0; j < valids.size(); ++j) series.add(medians[j], dataframe.get(j, i) - function.getY(medians[j])); } JFreeChartTools.writeAs(filetype, new FileOutputStream(options.image), linechart, 800, 500); } // save the selected if (options.selection != null) { Header header = new Header(); // set the number of peaks to be stored header.setNrPeaks(valids.size()); // create a set for the measurements SetInfo set = new SetInfo("", SetInfo.SET); header.addSetInfo(set); // create the measurement infos for (int i = 0; i < options.input.size(); ++i) { String file = options.input.get(i); // create the measurement info MeasurementInfo measurement = new MeasurementInfo(i, data.get(i).header.getMeasurementInfo(0)); measurement.addFileInfo(new FileInfo(file, file)); header.addMeasurementInfo(measurement); // add the file to the set set.addChild(new SetInfo(file, SetInfo.SET, i)); } // write the data PeakMLWriter.write(header, (Vector) valids, null, new GZIPOutputStream(new FileOutputStream(options.selection)), null); } // correct the values with the found function and save them for (int i = 0; i < options.input.size(); ++i) { Function function = functions[i]; ParseResult result = data.get(i); IPeakSet<MassChromatogram<Peak>> peakset = (IPeakSet<MassChromatogram<Peak>>) result.measurement; for (IPeak peak : peakset) align(peak, function); File filename = new File(options.input.get(i)); String name = filename.getName(); PeakMLWriter.write(result.header, (Vector) peakset.getPeaks(), null, new GZIPOutputStream(new FileOutputStream(options.output + "/" + name)), null); } } catch (Exception e) { Tool.unexpectedError(e, application); } }
From source file:e3fraud.gui.GraphingTool.java
public static JFreeChart generateGraph(E3Model model, Resource need, int startValue, int endValue, boolean expected) { //Get list of actors Set<Resource> actors = model.getActors(); //generate a series Map<Resource, XYSeries> actorSeriesMap = model.getTotalForActors(need, startValue, endValue, expected); //for each actor XYSeriesCollection line_chart_dataset = new XYSeriesCollection(); for (Resource actor : actors) { //add it's series to the chart XYSeries series = actorSeriesMap.get(actor); line_chart_dataset.addSeries(series); double slope; if (series.getItemCount() > 1) { slope = (series.getY(0).doubleValue() - series.getY(1).doubleValue()) / (series.getX(0).doubleValue() - series.getX(1).doubleValue()); } else {//from w ww.ja va2s .c om slope = 0; } DecimalFormat df = new DecimalFormat("#.##"); series.setKey(series.getKey() + "\nAvg.\t = \t" + df.format(model.getLastKnownAverages().get(actor)) + "\nSlope\t = \t" + df.format(slope)); } /* Step -2:Define the JFreeChart object to create line chart */ JFreeChart lineChartObject; if (expected) { lineChartObject = ChartFactory.createScatterPlot( "(Ideal) Profit Vs Occurences of \"" + need.getProperty(E3value.e3_has_name).getString() + " \"", "Occurences of \"" + need.getProperty(E3value.e3_has_name).getString() + " \"", "Profit (in Euro)", line_chart_dataset, PlotOrientation.VERTICAL, true, true, false); } else { lineChartObject = ChartFactory.createScatterPlot( "(Non-ideal) Profit Vs Occurences of \"" + need.getProperty(E3value.e3_has_name).getString() + " \"", "Occurences of \"" + need.getProperty(E3value.e3_has_name).getString() + " \"", "Profit (in Euro)", line_chart_dataset, PlotOrientation.VERTICAL, true, true, false); } return lineChartObject; }
From source file:org.fhcrc.cpl.viewer.mrm.Utils.java
public static int allYsGEArr(XYSeries xys, float arr[][]) { int retVal = 0; for (int i = 0; i < xys.getItemCount(); i++) { if (xys.getY(i).floatValue() > arr[1][i]) { retVal++;//from w w w . j a va 2 s . com } } return retVal; }
From source file:edu.ucsf.valelab.saim.plot.PlotUtils.java
public static XYSeries normalize(XYSeries input) { double max = input.getMaxY(); // double min = input.getMinY(); XYSeries output = new XYSeries(input.getKey(), input.getAutoSort(), input.getAllowDuplicateXValues()); for (int i = 0; i < input.getItemCount(); i++) { output.add(input.getX(i), (input.getY(i).doubleValue()) / (max)); }/*from ww w. j ava 2s . com*/ return output; }
From source file:com.projity.pm.graphic.chart.ChartModel.java
public static void dumpSeries(XYSeries series) { for (int i = 0; i < series.getItemCount(); i++) { System.out.println(new java.util.Date(series.getX(i).longValue()) + " " + series.getY(i)); }/*from ww w . j ava 2s. c om*/ }
From source file:org.fhcrc.cpl.viewer.mrm.Utils.java
public static float[][] PDStoArray(PlotDataSupplier pds) { float retval[][] = null; if (pds == null) return retval; XYSeries xys = pds.getGraphData(); int itemCount = xys.getItemCount(); retval = new float[2][itemCount]; for (int i = 0; i < itemCount; i++) { retval[0][i] = xys.getX(i).floatValue(); Number y = xys.getY(i); if (y != null) { retval[1][i] = y.floatValue(); } else {/*from ww w. ja v a 2 s.c om*/ retval[1][i] = Float.NaN; } } return retval; }
From source file:com.sciaps.utils.Util.java
public static void getMinMax(MinMaxObj minMaxObj, XYSeries series, double start, double end) { boolean inRange = false; for (int i = 0; i < series.getItemCount(); i++) { double x = series.getX(i).doubleValue(); if (x >= start && x <= end) { inRange = true;// www .j a v a 2s . c om double y = series.getY(i).doubleValue(); if (y < minMaxObj.min_) { minMaxObj.min_ = y; } if (y > minMaxObj.max_) { minMaxObj.max_ = y; } } else { if (inRange) { break; } } } }
From source file:com.griddynamics.jagger.reporting.chart.ChartHelper.java
public static Pair<String, XYSeriesCollection> adjustTime(XYSeriesCollection chartsCollection, Collection<IntervalMarker> markers) { int maxTime = 0; for (int i = 0; i < chartsCollection.getSeriesCount(); i++) { XYSeries series = chartsCollection.getSeries(i); for (int j = 0; j < series.getItemCount(); j++) { int x = series.getX(j).intValue(); if (x > maxTime) { maxTime = x;//from ww w . jav a 2s. co m } } } String type = "ms"; int div = 1; if (maxTime > 10 * 60 * 1000) { div = 60 * 1000; type = "min"; } if (maxTime > 30 * 1000) { div = 1000; type = "sec"; } XYSeriesCollection result = new XYSeriesCollection(); for (int i = 0; i < chartsCollection.getSeriesCount(); i++) { XYSeries old = chartsCollection.getSeries(i); XYSeries series = new XYSeries(old.getKey(), old.getAutoSort(), old.getAllowDuplicateXValues()); for (int j = 0; j < old.getItemCount(); j++) { Number x = old.getX(j).doubleValue() / div; Number y = old.getY(j); series.add(x, y); } result.addSeries(series); } if (markers != null) { for (IntervalMarker marker : markers) { marker.setStartValue(marker.getStartValue() / div); marker.setEndValue(marker.getEndValue() / div); } } return Pair.of(type, result); }
From source file:edu.fullerton.viewerplugin.PluginSupport.java
public static void getRangeLimits(XYSeriesCollection mtds, Double[] rng, int skip, float xmin, float xmax) { Double minx, miny, maxx, maxy; minx = miny = Double.MAX_VALUE; maxx = maxy = -Double.MAX_VALUE; for (Iterator it = mtds.getSeries().iterator(); it.hasNext();) { XYSeries ds = (XYSeries) it.next(); for (int item = skip; item < ds.getItemCount() - skip; item++) { double x = ds.getX(item).doubleValue(); double y = ds.getY(item).doubleValue(); if (x >= xmin && x <= xmax) { minx = Math.min(minx, x); miny = Math.min(miny, y); maxx = Math.max(maxx, x); maxy = Math.max(maxy, y); }//from w w w. j a v a2s . c om } } rng[0] = minx; rng[1] = miny; rng[2] = maxx; rng[3] = maxy; }
From source file:edu.fullerton.viewerplugin.PluginSupport.java
public static int scaleRange(XYSeriesCollection mtds, Double miny, Double maxy) { int exp = PluginSupport.getExp(miny, maxy); if (exp > 0 && exp < 100) { int nseries = mtds.getSeriesCount(); XYSeries[] newSeries = new XYSeries[nseries]; double scale = Math.pow(10, exp); for (int s = 0; s < nseries; s++) { XYSeries ds = (XYSeries) mtds.getSeries(s); Comparable skey = mtds.getSeriesKey(s); XYSeries nds = new XYSeries(skey, true); for (int item = 0; item < ds.getItemCount(); item++) { double x = ds.getX(item).doubleValue(); double y = ds.getY(item).doubleValue(); y *= scale;/*from w w w .j a va 2s .c om*/ nds.add(x, y); } newSeries[s] = nds; } mtds.removeAllSeries(); for (int s = 0; s < nseries; s++) { mtds.addSeries(newSeries[s]); } } else { exp = 0; } return exp; }