plugins/base1/se.lu.onk/trunk/OneClass/src/oneclass/plot/HistogramDataset.java

Code
Comments
Other
Rev Date Author Line
242 28 Feb 07 enell 1 /*
242 28 Feb 07 enell 2   $Id$
242 28 Feb 07 enell 3
242 28 Feb 07 enell 4   Copyright (C) 2006 Johan Enell
242 28 Feb 07 enell 5
242 28 Feb 07 enell 6   This file is part of BASE - BioArray Software Environment.
242 28 Feb 07 enell 7   Available at http://base.thep.lu.se/
242 28 Feb 07 enell 8
242 28 Feb 07 enell 9   BASE is free software; you can redistribute it and/or modify it
242 28 Feb 07 enell 10   under the terms of the GNU General Public License as published by
242 28 Feb 07 enell 11   the Free Software Foundation; either version 2 of the License, or
242 28 Feb 07 enell 12   (at your option) any later version.
242 28 Feb 07 enell 13
242 28 Feb 07 enell 14   BASE is distributed in the hope that it will be useful, but
242 28 Feb 07 enell 15   WITHOUT ANY WARRANTY; without even the implied warranty of
242 28 Feb 07 enell 16   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
242 28 Feb 07 enell 17   General Public License for more details.
242 28 Feb 07 enell 18
242 28 Feb 07 enell 19   You should have received a copy of the GNU General Public License
242 28 Feb 07 enell 20   along with this program; if not, write to the Free Software
242 28 Feb 07 enell 21   Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
242 28 Feb 07 enell 22   02111-1307, USA.
242 28 Feb 07 enell 23 */
242 28 Feb 07 enell 24 package oneclass.plot;
242 28 Feb 07 enell 25
242 28 Feb 07 enell 26 import org.jfree.data.statistics.SimpleHistogramBin;
242 28 Feb 07 enell 27 import org.jfree.data.statistics.SimpleHistogramDataset;
242 28 Feb 07 enell 28
242 28 Feb 07 enell 29 public class HistogramDataset extends SimpleHistogramDataset
242 28 Feb 07 enell 30 {
242 28 Feb 07 enell 31
242 28 Feb 07 enell 32   private double binSize;
242 28 Feb 07 enell 33
242 28 Feb 07 enell 34   public HistogramDataset(Comparable key, double binSize)
242 28 Feb 07 enell 35   {
242 28 Feb 07 enell 36     super(key);
242 28 Feb 07 enell 37     this.binSize = binSize;
242 28 Feb 07 enell 38   }
242 28 Feb 07 enell 39
242 28 Feb 07 enell 40   @Override
242 28 Feb 07 enell 41   public void addObservation(double value, boolean notify)
242 28 Feb 07 enell 42   {
242 28 Feb 07 enell 43     try
242 28 Feb 07 enell 44     {
242 28 Feb 07 enell 45       super.addObservation(value, notify);
242 28 Feb 07 enell 46     }
242 28 Feb 07 enell 47     catch (RuntimeException e)
242 28 Feb 07 enell 48     {
242 28 Feb 07 enell 49       newBin(value);
242 28 Feb 07 enell 50       super.addObservation(value, notify);
242 28 Feb 07 enell 51     }
242 28 Feb 07 enell 52   }
242 28 Feb 07 enell 53
242 28 Feb 07 enell 54   private void newBin(double value)
242 28 Feb 07 enell 55   {
242 28 Feb 07 enell 56     double precision = 1000000;
242 28 Feb 07 enell 57     int low = (int)(Math.floor(value/binSize) * binSize * precision);
242 28 Feb 07 enell 58     int high = low + (int)(binSize * precision);
242 28 Feb 07 enell 59     SimpleHistogramBin bin = new SimpleHistogramBin(low/precision, high/precision, true, false);
242 28 Feb 07 enell 60     super.addBin(bin);
242 28 Feb 07 enell 61   }
242 28 Feb 07 enell 62
242 28 Feb 07 enell 63   public double getBinSize()
242 28 Feb 07 enell 64   {
242 28 Feb 07 enell 65     return binSize;
242 28 Feb 07 enell 66   }
242 28 Feb 07 enell 67 }