List of usage examples for org.jfree.data.xy XYSeries getMaxX
public double getMaxX()
From source file:be.ugent.maf.cellmissy.gui.controller.analysis.singlecell.explore.EnclosingBallController.java
private JFreeChart makeFDChart(TrackDataHolder trackDataHolder, FractalDimension fractalDimension) { XYSeries series = JFreeChartUtils.generateXYSeries(fractalDimension.getxValues(), fractalDimension.getyValues()); String seriesKey = "track " + trackDataHolder.getTrack().getTrackNumber() + ", well " + trackDataHolder.getTrack().getWellHasImagingType().getWell(); series.setKey(seriesKey);/*from www .j a v a 2 s .c o m*/ XYSeriesCollection collection = new XYSeriesCollection(series); double regression[] = Regression.getOLSRegression(collection, 0); // first the intercept, then the slope LineFunction2D linefunction2d = new LineFunction2D(regression[0], regression[1]); fractalDimension.setFD(regression[1]); JFreeChart chart = ChartFactory.createScatterPlot( seriesKey + " - FD = " + AnalysisUtils.roundThreeDecimals(fractalDimension.getFD()), "log(1/r)", "log(N)", collection, PlotOrientation.VERTICAL, false, true, false); // start, end, number of samples XYDataset dataset = DatasetUtilities.sampleFunction2D(linefunction2d, series.getMinX(), series.getMaxX(), 1000, "Fitted Regression Line"); chart.getXYPlot().setDataset(1, dataset); JFreeChartUtils.setupXYPlot(chart.getXYPlot()); JFreeChartUtils.setupSingleTrackPlot(chart, exploreTrackController.getExploreTrackPanel().getTracksList().getSelectedIndex(), true); XYLineAndShapeRenderer renderer = (XYLineAndShapeRenderer) chart.getXYPlot().getRenderer(); renderer.setSeriesLinesVisible(0, false); renderer.setSeriesShape(0, new Ellipse2D.Double(0, 0, 8, 8)); XYItemRenderer renderer2 = new XYLineAndShapeRenderer(true, false); renderer2.setSeriesPaint(0, GuiUtils.getDefaultColor()); chart.getXYPlot().setRenderer(1, renderer2); return chart; }
From source file:AnalysisModule.DataAnalysis.java
public void simulateBitmapAnalyse(List<Scenario> lstScenario) throws Exception { Double valor;//from w w w . ja va 2 s. c o m bitmapAnalyse(lstScenario); for (Scenario scenario : lstScenario) { for (Topology topology : scenario.lstTopology) { File table = new File(topology.getSaidasDir() + "Resumo.csv"); FileWriter fw = new FileWriter(table); PrintWriter pw = new PrintWriter(fw); pw.write(";Instancia 1;Instancia 2;Instancia 3;Instancia 4\n"); pw.write("Tipo;BITMAP;BITMAP;BITMAP;COUNTER\n"); pw.write("Size(KB);"); for (Instance instance : topology.getLstInstance()) { pw.write(String.format("%6.2f", (instance.getBitMapSize() / 8.0) / 1024.0) + ";"); } pw.write("\n"); pw.write("Treshold;0,1;0,3;0,5;-\n"); pw.write("RMSE;"); for (Instance instance : topology.getLstInstance()) { double error = 0; int counter = 0; for (int i = 0; i < topology.getNumberOfSwitches(); i++) { for (int j = i + 1; j < topology.getNumberOfSwitches(); j++) { error += Math.pow(topology.getTrafficMatrix()[i][j] - instance.trafficMatrix[i][j], 2); counter++; } } error = Math.sqrt(error / counter); System.out.println("RMSE: " + error); pw.write(String.format("%10.8f", error) + ";"); } pw.write("\n"); pw.write("RMSRE;"); for (Instance instance : topology.getLstInstance()) { double error = 0; int counter = 0; double T = 0; for (int i = 0; i < topology.getNumberOfSwitches(); i++) { for (int j = i + 1; j < topology.getNumberOfSwitches(); j++) { if (instance.trafficMatrix[i][j] > T) { error += Math.pow((topology.getTrafficMatrix()[i][j] - instance.trafficMatrix[i][j]) / instance.trafficMatrix[i][j], 2); counter++; } } } error = Math.sqrt(error / counter); System.out.println("RMSRE: " + error); pw.write(String.format("%10.8f", error) + ";"); } pw.write("\n"); pw.write("Observers;"); for (Instance instance : topology.getLstInstance()) { int nbSw = 0; for (Switch sw : instance.networkSwitch.values()) { if (sw.isObserver) { nbSw++; } } pw.write(nbSw + ";"); } pw.write("\n"); pw.write("RelNbSw;"); for (Instance instance : topology.getLstInstance()) { int nbSw = 0; for (Switch sw : instance.networkSwitch.values()) { if (sw.isObserver) { nbSw++; } } pw.write(String.format("%4.2f", 100.0 * (float) nbSw / (float) topology.getNumberOfSwitches()) + ";"); } pw.write("\n"); pw.close(); fw.close(); for (Instance instance : topology.getLstInstance()) { HashMap<Double, List<HashMap<Integer, Integer>>> orderMap = new HashMap<>(); File bmpFile = new File( topology.getSaidasDir() + "SimulacaoInstancia" + instance.getId() + ".csv"); if (!bmpFile.exists()) { bmpFile.createNewFile(); } FileWriter fout = new FileWriter(bmpFile); PrintWriter oos = new PrintWriter(fout); for (int i = 0; i < topology.getNumberOfSwitches(); i++) { oos.print(";Router " + (i + 1)); } for (int i = 0; i < topology.getNumberOfSwitches(); i++) { oos.println(); oos.print("Router " + (i + 1)); for (int j = 0; j < topology.getNumberOfSwitches(); j++) { int sourceId = i; int destinationId = j; if (sourceId > topology.getNumberOfSwitches() || destinationId > topology.getNumberOfSwitches()) { System.out.println("Erro no nmero de switches"); throw new Exception("Erro no nmero de switches"); } else { doPrintElement(oos, i, j, instance.trafficMatrix[i][j]); // if (i < j) { // if (orderMap.containsKey(instance.trafficMatrix[i][j])) { // // HashMap<Integer, Integer> mapNodes = new HashMap<>(); // mapNodes.put(i + 1, j + 1); // orderMap.get(instance.trafficMatrix[i][j]).add(mapNodes); // } else { // LinkedList listaHashMap = new LinkedList(); // HashMap<Integer, Integer> mapNodes = new HashMap<>(); // mapNodes.put(i + 1, j + 1); // listaHashMap.add(mapNodes); // orderMap.put(instance.trafficMatrix[i][j], listaHashMap); // } // } } } } oos.close(); fout.close(); // Map<Double, List<HashMap<Integer, Integer>>> map = new TreeMap<>(orderMap); // System.out.println("Instancia" + instance.getId() + " After Sorting:"); // Set set2 = map.entrySet(); // Iterator iterator2 = set2.iterator(); // while (iterator2.hasNext()) { // Map.Entry me2 = (Map.Entry) iterator2.next(); // System.out.print(me2.getKey() + ": "); // System.out.println(me2.getValue()); // } // Plot Graf XYSeries matrix = new XYSeries("Matrix", false, true); for (int i = 0; i < topology.getNumberOfSwitches(); i++) { for (int j = i + 1; j < topology.getNumberOfSwitches(); j++) { matrix.add((double) topology.getTrafficMatrix()[i][j], instance.trafficMatrix[i][j]); } } double maxPlot = Double.max(matrix.getMaxX(), matrix.getMaxY()) * 1.1; XYSeries middle = new XYSeries("Real"); middle.add(0, 0); middle.add(maxPlot, maxPlot); XYSeries max = new XYSeries("Max"); max.add(0, 0); max.add(maxPlot, maxPlot * 1.2); XYSeries min = new XYSeries("Min"); min.add(0, 0); min.add(maxPlot, maxPlot * 0.8); XYSeriesCollection dataset = new XYSeriesCollection(); dataset.addSeries(middle); dataset.addSeries(matrix); dataset.addSeries(max); dataset.addSeries(min); JFreeChart chart = ChartFactory.createXYLineChart("Matriz de Trfego", "Real", "Estimado", dataset); chart.setBackgroundPaint(new ChartColor(255, 255, 255)); XYLineAndShapeRenderer renderer = (XYLineAndShapeRenderer) chart.getXYPlot().getRenderer(); renderer.setSeriesLinesVisible(1, false); renderer.setSeriesShapesVisible(1, true); int width = 640 * 2; /* Width of the image */ int height = 480 * 2; /* Height of the image */ File XYChart = new File( topology.getSaidasDir() + "SimulacaoInstancia" + instance.getId() + ".jpeg"); ChartUtilities.saveChartAsJPEG(XYChart, chart, width, height); } } } }
From source file:org.pf.midea.MainUI.java
private void showConstellationWindow(ConstellationPoint[] _map, String _name) { JFrame constellation = new JFrame(" ?? " + _name); constellation.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); XYSeriesCollection dots = new XYSeriesCollection(); XYSeries series = new XYSeries(_name); JFreeChart chart = ChartFactory.createScatterPlot("", "I", "Q", dots, PlotOrientation.VERTICAL, false, false, false);//w w w . j av a 2 s . co m XYPlot xyPlot = chart.getXYPlot(); CustomXYToolTipGenerator tooltipsGenerator = new CustomXYToolTipGenerator(); ArrayList<String> tooltips = new ArrayList<>(); for (ConstellationPoint ccp : _map) { double I = ccp.getI(); double Q = ccp.getQ(); series.add(I, Q); tooltips.add(ccp.getCode().getStringSequence()); } tooltipsGenerator.addToolTipSeries(tooltips); xyPlot.getRenderer().setBaseToolTipGenerator(tooltipsGenerator); double maxX = StatisticsTools.round(Math.abs(series.getMaxX()), 3); double maxY = StatisticsTools.round(Math.abs(series.getMaxY()), 3); double minX = StatisticsTools.round(Math.abs(series.getMinX()), 3); double minY = StatisticsTools.round(Math.abs(series.getMinY()), 3); if (maxX != 0 || minX != 0) { double X = Math.max(minX, maxX); xyPlot.getDomainAxis().setRange(-1.1 * X, 1.1 * X); } else xyPlot.getDomainAxis().setRange(-1, 1); if (maxY != 0 || minY != 0) { double Y = Math.max(minY, maxY); xyPlot.getRangeAxis().setRange(-1.1 * Y, 1.1 * Y); } else xyPlot.getRangeAxis().setRange(-1, 1); dots.addSeries(series); xyPlot.setBackgroundPaint(Color.WHITE); xyPlot.setDomainGridlinePaint(Color.GRAY); xyPlot.setRangeGridlinePaint(Color.GRAY); xyPlot.getRenderer().setSeriesPaint(0, Color.BLACK); xyPlot.setDomainZeroBaselineVisible(true); xyPlot.setRangeZeroBaselineVisible(true); ChartPanel chartPanel = new ChartPanel(chart); JPanel nestedPanel = new JPanel(); nestedPanel.add(chartPanel, new CellConstraints()); constellation.add(nestedPanel); constellation.pack(); constellation.setLocationRelativeTo(null); constellation.setResizable(false); constellation.setVisible(true); }
From source file:org.lmn.fc.frameworks.starbase.plugins.observatory.ui.tabs.charts.ChartHelper.java
/*********************************************************************************************** * Dump the (partial) contents of each Series in an XYdatset. * * @param dump/*from w w w.ja v a2 s .c o m*/ * @param calendar * @param dataset * @param dumprowcount * @param title */ public static void dumpXYDataset(final boolean dump, final Calendar calendar, final XYDataset dataset, final int dumprowcount, final String title) { final String SOURCE = "ChartHelper.dumpXYDataset() "; if (dump) { LOGGER.log(title); if ((dataset != null) && (dataset instanceof XYSeriesCollection)) { final XYSeriesCollection seriesCollection; seriesCollection = (XYSeriesCollection) dataset; LOGGER.log("XYSeriesCollection"); LOGGER.log(" [series.count=" + seriesCollection.getSeriesCount() + "]"); LOGGER.log(" [domain.lowerbound.interval.true=" + (long) seriesCollection.getDomainLowerBound(true) + "]"); LOGGER.log(" [domain.lowerbound.interval.false=" + (long) seriesCollection.getDomainLowerBound(false) + "]"); LOGGER.log(" [domain.upperbound.interval.true=" + (long) seriesCollection.getDomainUpperBound(true) + "]"); LOGGER.log(" [domain.upperbound.interval.false=" + (long) seriesCollection.getDomainUpperBound(false) + "]"); LOGGER.log(" [domain.order=" + seriesCollection.getDomainOrder() + "]"); for (int intSeriesIndex = 0; intSeriesIndex < seriesCollection.getSeriesCount(); intSeriesIndex++) { final XYSeries xySeries; LOGGER.log(""); LOGGER.log(" [xyseries.index=" + intSeriesIndex + "]"); xySeries = seriesCollection.getSeries(intSeriesIndex); LOGGER.log(" [xyseries.itemcount=" + xySeries.getItemCount() + "]"); LOGGER.log(" [xyseries.key=" + xySeries.getKey() + "]"); LOGGER.log(" [xyseries.xmin=" + xySeries.getMinX() + "]"); LOGGER.log(" [xyseries.xmax=" + xySeries.getMaxX() + "]"); LOGGER.log(" [xyseries.ymin=" + xySeries.getMinY() + "]"); LOGGER.log(" [xyseries.ymax=" + xySeries.getMaxY() + "]"); LOGGER.log(" [xyseries.description=" + xySeries.getDescription() + "]"); LOGGER.log(" [xyseries.autosort=" + xySeries.getAutoSort() + "]"); LOGGER.log(" [xyseries.allowduplicatex=" + xySeries.getAllowDuplicateXValues() + "]"); // Dump the first chunk for (int intItemIndex = 0; intItemIndex < (Math.min(dumprowcount, xySeries.getItemCount())); intItemIndex++) { final XYDataItem item; item = xySeries.getDataItem(intItemIndex); LOGGER.log(" [item.index=" + intItemIndex + "] [item.x=" + item.getXValue() + "] [item.y=" + item.getYValue() + "]"); } LOGGER.log(" ..."); // Dump the last chunk for (int intItemIndex = 0; intItemIndex < (Math.min(dumprowcount, xySeries.getItemCount())); intItemIndex++) { final XYDataItem item; final int intIndex; intIndex = Math.max(0, xySeries.getItemCount() - dumprowcount) + intItemIndex; item = xySeries.getDataItem(intIndex); LOGGER.log(" [item.index=" + intIndex + "] [item.x=" + item.getXValue() + "] [item.y=" + item.getYValue() + "]"); } } } else if ((dataset != null) && (dataset instanceof TimeSeriesCollection)) { final TimeSeriesCollection seriesCollection; seriesCollection = (TimeSeriesCollection) dataset; LOGGER.log("TimeSeriesCollection"); LOGGER.log(" [series.count=" + seriesCollection.getSeriesCount() + "]"); LOGGER.log(" [domain.lowerbound.interval.true=" + (long) seriesCollection.getDomainLowerBound(true) + "]"); LOGGER.log(" [domain.lowerbound.interval.false=" + (long) seriesCollection.getDomainLowerBound(false) + "]"); LOGGER.log(" [domain.upperbound.interval.true=" + (long) seriesCollection.getDomainUpperBound(true) + "]"); LOGGER.log(" [domain.upperbound.interval.false=" + (long) seriesCollection.getDomainUpperBound(false) + "]"); LOGGER.log(" [domain.order=" + seriesCollection.getDomainOrder() + "]"); for (int intSeriesIndex = 0; intSeriesIndex < seriesCollection.getSeriesCount(); intSeriesIndex++) { final TimeSeries timeSeries; LOGGER.log(""); LOGGER.log(" [timeseries.index=" + intSeriesIndex + "]"); timeSeries = seriesCollection.getSeries(intSeriesIndex); LOGGER.log(" [timeseries.itemcount=" + timeSeries.getItemCount() + "]"); LOGGER.log(" [timeseries.key=" + timeSeries.getKey() + "]"); LOGGER.log(" [timeseries.ymin=" + timeSeries.getMinY() + "]"); LOGGER.log(" [timeseries.ymax=" + timeSeries.getMaxY() + "]"); LOGGER.log(" [timeseries.domain=" + timeSeries.getDomainDescription() + "]"); LOGGER.log(" [timeseries.range=" + timeSeries.getRangeDescription() + "]"); LOGGER.log( " [timeseries.timeperiodclass=" + timeSeries.getTimePeriodClass().getName() + "]"); for (int intItemIndex = 0; intItemIndex < (Math.min(dumprowcount, timeSeries.getItemCount())); intItemIndex++) { final TimeSeriesDataItem item; item = timeSeries.getDataItem(intItemIndex); LOGGER.log(" [item.index=" + intItemIndex + "] [item.period.serialindex=" + item.getPeriod().getSerialIndex() + "] [item.period.firstmillis=" + item.getPeriod().getFirstMillisecond(calendar) + "] [item.value=" + item.getValue() + "]"); } LOGGER.log(" ..."); for (int intItemIndex = 0; intItemIndex < (Math.min(dumprowcount, timeSeries.getItemCount())); intItemIndex++) { final TimeSeriesDataItem item; final int intIndex; intIndex = Math.max(0, timeSeries.getItemCount() - dumprowcount) + intItemIndex; item = timeSeries.getDataItem(intIndex); LOGGER.log(" [item.index=" + intIndex + "] [item.period.serialindex=" + item.getPeriod().getSerialIndex() + "] [item.period.firstmillis=" + item.getPeriod().getFirstMillisecond(calendar) + "] [item.value=" + item.getValue() + "]"); } } } else { LOGGER.error(SOURCE + "Unsupported XYDataset type"); } } }
From source file:ubic.gemma.web.controller.expression.experiment.ExpressionExperimentQCController.java
/** * @param os response output stream// w ww .j ava 2 s.c o m * @param mvr MeanVarianceRelation object to plot * @return true if mvr data points were plotted */ private boolean writeMeanVariance(OutputStream os, MeanVarianceRelation mvr, Double size) throws Exception { // if number of datapoints > THRESHOLD then alpha = TRANSLUCENT, else alpha = OPAQUE final int THRESHOLD = 1000; final int TRANSLUCENT = 50; final int OPAQUE = 255; // Set maximum plot range to Y_MAX + YRANGE * OFFSET to leave some extra white space final double OFFSET_FACTOR = 0.05f; // set the final image size to be the minimum of MAX_IMAGE_SIZE_PX or size final int MAX_IMAGE_SIZE_PX = 5; if (mvr == null) { return false; } // get data points XYSeriesCollection collection = this.getMeanVariance(mvr); if (collection.getSeries().size() == 0) { return false; } ChartFactory.setChartTheme(StandardChartTheme.createLegacyTheme()); JFreeChart chart = ChartFactory.createScatterPlot("", "mean (log2)", "variance (log2)", collection, PlotOrientation.VERTICAL, false, false, false); // adjust colors and shapes XYRegressionRenderer renderer = new XYRegressionRenderer(); renderer.setBasePaint(Color.white); XYSeries series = collection.getSeries(0); int alpha = series.getItemCount() > THRESHOLD ? TRANSLUCENT : OPAQUE; renderer.setSeriesPaint(0, new Color(0, 0, 0, alpha)); renderer.setSeriesPaint(1, Color.red); renderer.setSeriesStroke(1, new BasicStroke(1)); renderer.setSeriesShape(0, new Ellipse2D.Double(4, 4, 4, 4)); renderer.setSeriesShapesFilled(0, false); renderer.setSeriesLinesVisible(0, false); renderer.setSeriesLinesVisible(1, true); renderer.setSeriesShapesVisible(1, false); XYPlot plot = chart.getXYPlot(); plot.setRenderer(renderer); plot.setRangeGridlinesVisible(false); plot.setDomainGridlinesVisible(false); // adjust the chart domain and ranges double yRange = series.getMaxY() - series.getMinY(); double xRange = series.getMaxX() - series.getMinX(); if (xRange < 0) { log.warn("Min X was greater than Max X: Max=" + series.getMaxY() + " Min= " + series.getMinY()); return false; } double ybuffer = (yRange) * OFFSET_FACTOR; double xbuffer = (xRange) * OFFSET_FACTOR; double newYMin = series.getMinY() - ybuffer; double newYMax = series.getMaxY() + ybuffer; double newXMin = series.getMinX() - xbuffer; double newXMax = series.getMaxX() + xbuffer; ValueAxis yAxis = new NumberAxis("Variance"); yAxis.setRange(newYMin, newYMax); ValueAxis xAxis = new NumberAxis("Mean"); xAxis.setRange(newXMin, newXMax); chart.getXYPlot().setRangeAxis(yAxis); chart.getXYPlot().setDomainAxis(xAxis); int finalSize = (int) Math.min( MAX_IMAGE_SIZE_PX * ExpressionExperimentQCController.DEFAULT_QC_IMAGE_SIZE_PX, size * ExpressionExperimentQCController.DEFAULT_QC_IMAGE_SIZE_PX); ChartUtilities.writeChartAsPNG(os, chart, finalSize, finalSize); return true; }
From source file:MSUmpire.DIA.TargetMatchScoring.java
public void MixtureModeling() throws IOException { if (libTargetMatches.isEmpty()) { return;//from w ww . j a va 2s. c om } int IDNo = 0; int decoyNo = 0; int modelNo = 0; double IDmean = 0d; double Decoymean = 0d; for (UmpireSpecLibMatch match : libIDMatches) { if (match.BestHit != null) { IDNo++; IDmean += match.BestHit.UmpireScore; } } decoyNo = decoyModelingList.size(); for (PeakGroupScore peakGroupScore : decoyModelingList) { Decoymean += peakGroupScore.UmpireScore; } for (UmpireSpecLibMatch match : libTargetMatches) { //modelNo+= match.TargetHits.size(); if (match.BestMS1Hit != null) { modelNo++; } if (match.BestMS2Hit != null) { modelNo++; } } Decoymean /= decoyNo; IDmean /= IDNo; PVector[] points = new PVector[modelNo]; PVector[] centroids = new PVector[2]; int idx = 0; for (UmpireSpecLibMatch match : libTargetMatches) { if (match.BestMS1Hit != null) { points[idx] = new PVector(1); points[idx].array[0] = match.BestMS1Hit.UmpireScore; idx++; } if (match.BestMS2Hit != null) { points[idx] = new PVector(1); points[idx].array[0] = match.BestMS2Hit.UmpireScore; idx++; } // for(PeakGroupScore peakGroupScore : match.TargetHits){ // points[idx] = new PVector(1); // points[idx].array[0] = match.BestMS2Hit.UmpireScore; // idx++; // } } MixtureModel mmc; centroids[0] = new PVector(1); centroids[0].array[0] = Decoymean; centroids[1] = new PVector(1); centroids[1].array[0] = IDmean; Vector<PVector>[] clusters = KMeans.run(points, 2, centroids); MixtureModel mm = ExpectationMaximization1D.initialize(clusters); mmc = ExpectationMaximization1D.run(points, mm); DecimalFormat df = new DecimalFormat("#.####"); Logger.getRootLogger() .debug("----------------------------------------------------------------------------------------"); Logger.getRootLogger().debug("No. of modeling points=" + modelNo); Logger.getRootLogger().debug("ID hits mean=" + df.format(IDmean)); Logger.getRootLogger().debug("Decoy hits mean=" + df.format(Decoymean)); //System.out.print("T-test: p-value=" + df.format(model.ttest.pValue).toString() + "\n"); Logger.getRootLogger() .debug("Incorrect hits model mean=" + df.format(((PVector) mmc.param[0]).array[0]) + " variance=" + df.format(((PVector) mmc.param[0]).array[1]) + " weight=" + df.format(mmc.weight[0])); Logger.getRootLogger() .debug("Correct hits model mean=" + df.format(((PVector) mmc.param[1]).array[0]) + " variance=" + df.format(((PVector) mmc.param[1]).array[1]) + " weight=" + df.format(mmc.weight[1])); if (((PVector) mmc.param[0]).array[0] > ((PVector) mmc.param[1]).array[0]) { return; } float max = (float) (((PVector) mmc.param[1]).array[0] + 4 * Math.sqrt(((PVector) mmc.param[1]).array[1])); float min = (float) (((PVector) mmc.param[0]).array[0] - 4 * Math.sqrt(((PVector) mmc.param[0]).array[1])); IDNo = 0; decoyNo = 0; modelNo = 0; for (PeakGroupScore peakGroupScore : decoyModelingList) { if (peakGroupScore.UmpireScore > min && peakGroupScore.UmpireScore < max) { decoyNo++; } } for (UmpireSpecLibMatch match : libIDMatches) { if (match.BestHit != null && match.BestHit.UmpireScore > min && match.BestHit.UmpireScore < max) { IDNo++; } } for (UmpireSpecLibMatch match : libTargetMatches) { //targetNo += match.TargetHits.size(); //decoyNo += match.DecoyHits.size(); if (match.BestMS1Hit != null && match.BestMS1Hit.UmpireScore > min && match.BestMS1Hit.UmpireScore < max) { modelNo++; } if (match.BestMS2Hit != null && match.BestMS2Hit.UmpireScore > min && match.BestMS2Hit.UmpireScore < max) { modelNo++; } //modelNo += match.TargetHits.size(); } double[] IDObs = new double[IDNo]; double[] DecoyObs = new double[decoyNo]; double[] ModelObs = new double[modelNo]; idx = 0; int didx = 0; int midx = 0; for (UmpireSpecLibMatch match : libIDMatches) { if (match.BestHit != null && match.BestHit.UmpireScore > min && match.BestHit.UmpireScore < max) { IDObs[idx++] = match.BestHit.UmpireScore; } } for (PeakGroupScore peakGroupScore : decoyModelingList) { if (peakGroupScore.UmpireScore > min && peakGroupScore.UmpireScore < max) { DecoyObs[didx++] = peakGroupScore.UmpireScore; } } for (UmpireSpecLibMatch match : libTargetMatches) { // for(PeakGroupScore peak : match.TargetHits){ // ModelObs[midx++]=peak.UmpireScore; // } if (match.BestMS1Hit != null && match.BestMS1Hit.UmpireScore > min && match.BestMS1Hit.UmpireScore < max) { ModelObs[midx++] = match.BestMS1Hit.UmpireScore; } if (match.BestMS2Hit != null && match.BestMS2Hit.UmpireScore > min && match.BestMS2Hit.UmpireScore < max) { ModelObs[midx++] = match.BestMS2Hit.UmpireScore; } } String pngfile = FilenameUtils.getFullPath(Filename) + "/" + FilenameUtils.getBaseName(Filename) + "_" + LibID + "_LibMatchModel.png"; XYSeries model1 = new XYSeries("Incorrect matches"); XYSeries model2 = new XYSeries("Correct matches"); XYSeries model3 = new XYSeries("All target hits"); String modelfile = FilenameUtils.getFullPath(pngfile) + "/" + FilenameUtils.getBaseName(pngfile) + "_ModelPoints.txt"; FileWriter writer = new FileWriter(modelfile); writer.write("UScore\tModel\tCorrect\tDecoy\n"); int NoPoints = 1000; double[] model_kde_x = new double[NoPoints]; float intv = (max - min) / NoPoints; PVector point = new PVector(2); for (int i = 0; i < NoPoints; i++) { point.array[0] = max - i * intv; model_kde_x[i] = point.array[0]; point.array[1] = mmc.EF.density(point, mmc.param[0]) * mmc.weight[0]; model1.add(point.array[0], point.array[1]); point.array[1] = mmc.EF.density(point, mmc.param[1]) * mmc.weight[1]; model2.add(point.array[0], point.array[1]); } KernelDensityEstimator kde = new KernelDensityEstimator(); kde.SetData(ModelObs); double[] model_kde_y = kde.Density(model_kde_x); for (int i = 0; i < NoPoints; i++) { if (model_kde_x[i] > min && model_kde_x[i] < max) { point.array[0] = max - i * intv; model_kde_x[i] = point.array[0]; model3.add(model_kde_x[i], model_kde_y[i]); writer.write(point.array[0] + "\t" + mmc.EF.density(point, mmc.param[0]) * mmc.weight[0] + "\t" + mmc.EF.density(point, mmc.param[1]) * mmc.weight[1] + "\t" + model_kde_y[i] + "\n"); } } writer.close(); MixtureModelProb = new float[NoPoints + 1][3]; float positiveaccu = 0f; float negativeaccu = 0f; MixtureModelProb[0][0] = (float) model2.getMaxX() + Float.MIN_VALUE; MixtureModelProb[0][1] = 1f; MixtureModelProb[0][2] = 1f; for (int i = 1; i < NoPoints + 1; i++) { float positiveNumber = model2.getY(NoPoints - i).floatValue(); float negativeNumber = model1.getY(NoPoints - i).floatValue(); MixtureModelProb[i][0] = model2.getX(NoPoints - i).floatValue(); positiveaccu += positiveNumber; negativeaccu += negativeNumber; MixtureModelProb[i][2] = positiveNumber / (negativeNumber + positiveNumber); MixtureModelProb[i][1] = positiveaccu / (negativeaccu + positiveaccu); } XYSeriesCollection dataset = new XYSeriesCollection(); dataset.addSeries(model1); dataset.addSeries(model2); dataset.addSeries(model3); HistogramDataset histogramDataset = new HistogramDataset(); histogramDataset.setType(HistogramType.SCALE_AREA_TO_1); histogramDataset.addSeries("ID hits", IDObs, 100); histogramDataset.addSeries("Decoy hits", DecoyObs, 100); //histogramDataset.addSeries("Model hits", ModelObs, 100); JFreeChart chart = ChartFactory.createHistogram(FilenameUtils.getBaseName(pngfile), "Score", "Hits", histogramDataset, PlotOrientation.VERTICAL, true, false, false); XYPlot plot = chart.getXYPlot(); NumberAxis domain = (NumberAxis) plot.getDomainAxis(); domain.setRange(min, max); plot.setBackgroundPaint(Color.white); plot.setDomainGridlinePaint(Color.white); plot.setRangeGridlinePaint(Color.white); plot.setForegroundAlpha(0.8f); chart.setBackgroundPaint(Color.white); XYLineAndShapeRenderer render = new XYLineAndShapeRenderer(); // render.setSeriesPaint(0, Color.DARK_GRAY); // render.setSeriesPaint(1, Color.DARK_GRAY); // render.setSeriesPaint(2, Color.GREEN); // render.setSeriesShape(0, new Ellipse2D.Double(0, 0, 2, 2)); // render.setSeriesShape(1, new Ellipse2D.Double(0, 0, 2, 2)); // render.setSeriesShape(2, new Ellipse2D.Double(0, 0, 2.5f, 2.5f)); // render.setSeriesStroke(1, new BasicStroke(1.0f)); // render.setSeriesStroke(0, new BasicStroke(1.0f)); // render.setSeriesStroke(2, new BasicStroke(2.0f)); plot.setDataset(1, dataset); plot.setRenderer(1, render); plot.setDatasetRenderingOrder(DatasetRenderingOrder.FORWARD); try { ChartUtilities.saveChartAsPNG(new File(pngfile), chart, 1000, 600); } catch (IOException e) { } }
From source file:mt.LengthDistribution.java
public static void GetLengthDistributionArrayatTime(ArrayList<File> AllMovies, double[] calibration, final int framenumber) { ArrayList<Double> maxlist = new ArrayList<Double>(); for (int i = 0; i < AllMovies.size(); ++i) { ArrayList<Pair<Integer, Double>> lengthlist = LengthDistribution.LengthdistroatTime(AllMovies.get(i), framenumber);// ww w . j a v a2s .co m for (int index = 0; index < lengthlist.size(); ++index) { if (lengthlist.get(index).getB() != Double.NaN && lengthlist.get(index).getB() > 0) maxlist.add(lengthlist.get(index).getB()); } } Collections.sort(maxlist); int min = 0; int max = 0; if (maxlist.size() > 0) max = (int) Math.round(maxlist.get(maxlist.size() - 1)) + 1; XYSeries counterseries = new XYSeries("MT length distribution"); XYSeries Logcounterseries = new XYSeries("MT Log length distribution"); final ArrayList<Point> points = new ArrayList<Point>(); for (int length = 0; length < max; ++length) { HashMap<Integer, Integer> frameseed = new HashMap<Integer, Integer>(); int count = 0; for (int i = 0; i < AllMovies.size(); ++i) { File file = AllMovies.get(i); ArrayList<FLSobject> currentobject = Tracking.loadMTStat(file); if (currentobject != null) for (int index = 0; index < currentobject.size(); ++index) { ArrayList<Integer> seedlist = new ArrayList<Integer>(); if (currentobject.get(index).length >= length && currentobject.get(index).Framenumber == framenumber) { seedlist.add(currentobject.get(index).seedID); if (frameseed.get(currentobject.get(index).Framenumber) != null && frameseed.get(currentobject.get(index).Framenumber) != Double.NaN) { int currentcount = frameseed.get(currentobject.get(index).Framenumber); frameseed.put(currentobject.get(index).Framenumber, seedlist.size() + currentcount); } else if (currentobject.get(index) != null) frameseed.put(currentobject.get(index).Framenumber, seedlist.size()); } } } // Get maxima length, count int maxvalue = Integer.MIN_VALUE; for (int key : frameseed.keySet()) { int Count = frameseed.get(key); if (Count >= maxvalue) maxvalue = Count; } if (maxvalue != Integer.MIN_VALUE) { counterseries.add(length, maxvalue); if (maxvalue > 0) { System.out.println("Max " + maxvalue); Logcounterseries.add((length), Math.log(maxvalue)); points.add(new Point(new double[] { length, Math.log(maxvalue) })); } } } final XYSeriesCollection dataset = new XYSeriesCollection(); final XYSeriesCollection nofitdataset = new XYSeriesCollection(); dataset.addSeries(counterseries); nofitdataset.addSeries(counterseries); final XYSeriesCollection Logdataset = new XYSeriesCollection(); Logdataset.addSeries(Logcounterseries); final JFreeChart chart = ChartFactory.createScatterPlot("MT length distribution", "Number of MT", "Length (micrometer)", dataset); final JFreeChart nofitchart = ChartFactory.createScatterPlot("MT length distribution", "Number of MT", "Length (micrometer)", nofitdataset); // Fitting line to log of the length distribution interpolation.Polynomial poly = new interpolation.Polynomial(1); try { poly.fitFunction(points); } catch (NotEnoughDataPointsException e) { } DisplayPoints.display(nofitchart, new Dimension(800, 500)); dataset.addSeries(Tracking.drawexpFunction(poly, counterseries.getMinX(), counterseries.getMaxX(), 0.5, "Exponential fit")); NumberFormat nf = NumberFormat.getInstance(Locale.ENGLISH); nf.setMaximumFractionDigits(3); TextTitle legendText = new TextTitle("Mean Length" + " : " + nf.format(-1.0 / poly.getCoefficients(1)) + " " + "Standard Deviation" + " : " + nf.format(poly.SSE)); legendText.setPosition(RectangleEdge.RIGHT); DisplayPoints.display(chart, new Dimension(800, 500)); chart.addSubtitle(legendText); System.out.println("Series count" + dataset.getSeriesCount()); final JFreeChart logchart = ChartFactory.createScatterPlot("MT Log length distribution", "Length (micrometer)", "Number of MT", Logdataset); // DisplayPoints.display(logchart, new Dimension(800, 500)); for (int i = 1; i >= 0; --i) System.out.println(poly.getCoefficients(i) + " " + "x" + " X to the power of " + i); // Logdataset.addSeries(Tracking.drawFunction(poly, counterseries.getMinX(), counterseries.getMaxX(), 0.5, "Straight line fit")); WriteLengthdistroFile(AllMovies, counterseries, framenumber); }
From source file:mt.LengthDistribution.java
public static void GetLengthDistributionArray(ArrayList<File> AllMovies, double[] calibration) { ArrayList<Double> maxlist = new ArrayList<Double>(); for (int i = 0; i < AllMovies.size(); ++i) { double maxlength = LengthDistribution.Lengthdistro(AllMovies.get(i)); if (maxlength != Double.NaN && maxlength > 0) maxlist.add(maxlength);//from w w w .j ava 2 s . c o m } Collections.sort(maxlist); int min = 0; int max = (int) Math.round(maxlist.get(maxlist.size() - 1)) + 1; XYSeries counterseries = new XYSeries("MT length distribution"); XYSeries Logcounterseries = new XYSeries("MT Log length distribution"); final ArrayList<Point> points = new ArrayList<Point>(); for (int length = 0; length < max; ++length) { HashMap<Integer, Integer> frameseed = new HashMap<Integer, Integer>(); int count = 0; for (int i = 0; i < AllMovies.size(); ++i) { File file = AllMovies.get(i); double currentlength = LengthDistribution.Lengthdistro(file); ArrayList<FLSobject> currentobject = Tracking.loadMTStat(file); if (currentlength > length) { for (int index = 0; index < currentobject.size(); ++index) { ArrayList<Integer> seedlist = new ArrayList<Integer>(); if (currentobject.get(index).length >= length) { seedlist.add(currentobject.get(index).seedID); if (frameseed.get(currentobject.get(index).Framenumber) != null && frameseed.get(currentobject.get(index).Framenumber) != Double.NaN) { int currentcount = frameseed.get(currentobject.get(index).Framenumber); frameseed.put(currentobject.get(index).Framenumber, seedlist.size() + currentcount); } else if (currentobject.get(index) != null) frameseed.put(currentobject.get(index).Framenumber, seedlist.size()); } } } } // Get maxima length, count int maxvalue = Integer.MIN_VALUE; for (int key : frameseed.keySet()) { int Count = frameseed.get(key); if (Count >= maxvalue) maxvalue = Count; } if (maxvalue != Integer.MIN_VALUE) { counterseries.add(length, maxvalue); if (maxvalue > 0) { Logcounterseries.add((length), Math.log(maxvalue)); points.add(new Point(new double[] { length, Math.log(maxvalue) })); } } } final XYSeriesCollection dataset = new XYSeriesCollection(); final XYSeriesCollection nofitdataset = new XYSeriesCollection(); dataset.addSeries(counterseries); nofitdataset.addSeries(counterseries); final XYSeriesCollection Logdataset = new XYSeriesCollection(); Logdataset.addSeries(Logcounterseries); final JFreeChart chart = ChartFactory.createScatterPlot("MT length distribution", "Number of MT", "Length (micrometer)", dataset); final JFreeChart nofitchart = ChartFactory.createScatterPlot("MT length distribution", "Number of MT", "Length (micrometer)", nofitdataset); // Fitting line to log of the length distribution interpolation.Polynomial poly = new interpolation.Polynomial(1); try { poly.fitFunction(points); } catch (NotEnoughDataPointsException e) { // TODO Auto-generated catch block e.printStackTrace(); } DisplayPoints.display(nofitchart, new Dimension(800, 500)); dataset.addSeries(Tracking.drawexpFunction(poly, counterseries.getMinX(), counterseries.getMaxX(), 0.5, "Exponential fit")); NumberFormat nf = NumberFormat.getInstance(Locale.ENGLISH); nf.setMaximumFractionDigits(3); TextTitle legendText = new TextTitle("Mean Length" + " : " + nf.format(-1.0 / poly.getCoefficients(1)) + " " + "Standard Deviation" + " : " + nf.format(poly.SSE)); legendText.setPosition(RectangleEdge.RIGHT); DisplayPoints.display(chart, new Dimension(800, 500)); chart.addSubtitle(legendText); final JFreeChart logchart = ChartFactory.createScatterPlot("MT Log length distribution", "Number of MT", "Length (micrometer)", Logdataset); // DisplayPoints.display(logchart, new Dimension(800, 500)); for (int i = 1; i >= 0; --i) System.out.println(poly.getCoefficients(i) + " " + "x" + " X to the power of " + i); // Logdataset.addSeries(Tracking.drawFunction(poly, counterseries.getMinX(), counterseries.getMaxX(), 0.5, "Straight line fit")); WriteLengthdistroFile(AllMovies, counterseries, 0); }
From source file:whitebox.stats.Kriging.java
/** * It gets the semivariogram type and bins list and draw a graph for them * TheoryVariogram should be called first * * @param bins/* w w w . j a va 2 s .c om*/ * @param variogram */ public void DrawSemivariogram(bin[][] bins, Variogram variogram) { XYSeriesCollection sampleCollct = new XYSeriesCollection(); XYSeries series = new XYSeries("Sample Variogram"); // for (Iterator<bin> i = bins.iterator(); i.hasNext(); ) // { // series.add(bins.get(j).Distance,bins.get(j).Value); // i.next(); // j++; // } XYLineAndShapeRenderer xylineshapRend = new XYLineAndShapeRenderer(false, true); CombinedRangeXYPlot combinedrangexyplot = new CombinedRangeXYPlot(); for (int i = 0; i < bins[0].length; i++) { for (int k = 0; k < bins.length; k++) { if (!Double.isNaN(bins[k][i].Value)) { series.add(bins[k][i].Distance, bins[k][i].Value); } } sampleCollct.addSeries(series); double[][] res = CalcTheoreticalSVValues(variogram, series.getMaxX()); XYSeries seriesTSV = new XYSeries("Theoretical Variogram"); for (int l = 0; l < res.length; l++) { seriesTSV.add(res[l][0], res[l][1]); } XYSeriesCollection theorCollct = new XYSeriesCollection(); theorCollct.addSeries(seriesTSV); XYDataset xydataset = sampleCollct; XYPlot xyplot1 = new XYPlot(xydataset, new NumberAxis(), null, xylineshapRend); xyplot1.setDataset(1, theorCollct); XYLineAndShapeRenderer lineshapRend = new XYLineAndShapeRenderer(true, false); xyplot1.setRenderer(1, lineshapRend); xyplot1.setDatasetRenderingOrder(DatasetRenderingOrder.FORWARD); combinedrangexyplot.add(xyplot1); } DecimalFormat df = new DecimalFormat("###,##0.000"); String title = "Semivariogram (RMSE = " + df.format(Math.sqrt(variogram.mse)) + ")"; JFreeChart chart = new JFreeChart(title, JFreeChart.DEFAULT_TITLE_FONT, combinedrangexyplot, true); // JFreeChart chart = ChartFactory.createScatterPlot( // "Semivariogram", // chart title // "Distance", // x axis label // "Moment of Inertia", // y axis label // result, // data // PlotOrientation.VERTICAL, // true, // include legend // true, // tooltips // false // urls // ); // create and display a frame... ChartFrame frame = new ChartFrame("Semivariogram", chart); frame.pack(); frame.setVisible(true); }
From source file:org.micromanager.asidispim.fit.Fitter.java
/** * Given a JFreeChart dataset and a commons math function, return a JFreeChart * dataset in which the original x values are now accompanied by the y values * predicted by the function//from ww w .j a v a 2 s. c om * * @param data input JFreeChart data set * @param type one of the Fitter.FunctionType predefined functions * @param parms parameters describing the function. These need to match the * selected function or an IllegalArgumentEception will be thrown * * @return JFreeChart dataset with original x values and fitted y values. */ public static XYSeries getFittedSeries(XYSeries data, FunctionType type, double[] parms) { XYSeries result = new XYSeries(data.getItemCount() * 10); double minRange = data.getMinX(); double maxRange = data.getMaxX(); double xStep = (maxRange - minRange) / (data.getItemCount() * 10); switch (type) { case NoFit: try { result = data.createCopy(0, data.getItemCount() - 1); result.setKey(data.getItemCount() * 10); } catch (CloneNotSupportedException ex) { return null; } break; case Pol1: case Pol2: case Pol3: checkParms(type, parms); PolynomialFunction polFunction = new PolynomialFunction(parms); for (int i = 0; i < data.getItemCount() * 10; i++) { double x = minRange + i * xStep; double y = polFunction.value(x); result.add(x, y); } break; case Gaussian: checkParms(type, parms); Gaussian.Parametric gf = new Gaussian.Parametric(); for (int i = 0; i < data.getItemCount() * 10; i++) { double x = minRange + i * xStep; double[] gparms = new double[3]; System.arraycopy(parms, 0, gparms, 0, 3); double y = gf.value(x, gparms) + parms[3]; result.add(x, y); } break; } return result; }