Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   *  streams library
   *
   *  Copyright (C) 2011-2012 by Christian Bockermann, Hendrik Blom
   * 
   *  streams is a library, API and runtime environment for processing high
   *  volume data streams. It is composed of three submodules "stream-api",
   *  "stream-core" and "stream-runtime".
   *
  *  The streams library (and its submodules) is free software: you can 
  *  redistribute it and/or modify it under the terms of the 
  *  GNU Affero General Public License as published by the Free Software 
  *  Foundation, either version 3 of the License, or (at your option) any 
  *  later version.
  *
  *  The stream.ai library (and its submodules) is distributed in the hope
  *  that it will be useful, but WITHOUT ANY WARRANTY; without even the implied 
  *  warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  *  GNU Affero General Public License for more details.
  *
  *  You should have received a copy of the GNU Affero General Public License
  *  along with this program.  If not, see http://www.gnu.org/licenses/.
  */
 package stream.data;
 
 
 
 import stream.Data;

Author(s):
chris
 
 @Description(group = "Data Stream.Processing.Transformations.Data")
 public class NumericalBinning implements Processor {
 
 	static Logger log = LoggerFactory.getLogger(NumericalBinning.class);
 	Double minimum = 0.0d;
 
 	Double maximum = 10.0d;
 
 	Integer bins = 10;
 
 	String[] keys = null;
 
 	Bucket[] buckets = null;

Returns:
the minimum
 
 	public Double getMinimum() {
 		return ;
 	}

Parameters:
minimum the minimum to set
 
 	public void setMinimum(Double minimum) {
 		this. = minimum;
 	}

Returns:
the maximum
 
 	public Double getMaximum() {
 		return ;
 	}

Parameters:
maximum the maximum to set
 
 	public void setMaximum(Double maximum) {
 		this. = maximum;
 	}

Returns:
the bins
 
 	public Integer getBins() {
 		return ;
 	}

Parameters:
bins the bins to set
 
 	public void setBins(Integer bins) {
 		this. = bins;
 		 = null;
	}

Returns:
the keys
	public String[] getKeys() {
		return ;
	}

Parameters:
keys the keys to set
	public void setKeys(String[] keys) {
		this. = keys;
	}
	public void setKey(String key) {
		if (key != null) {
			 = new String[] { key };
		}
	}
	public String getKey() {
		return [0];
	}

	public void init() throws Exception {
		 = new Bucket[Math.max(1, )];
		double step = ( - ) / .doubleValue();
		double last = ;
		for (int i = 0; i < . - 1; i++) {
			[i] = new Bucket(lastlast + step);
			last += step;
		}
		[. - 1] = new Bucket(last);
	}

See also:
stream.DataProcessor#process(stream.Data )
	public Data process(Data data) {
		if ( == null) {
			try {
catch (Exception e) {
				throw new RuntimeException("Initialization failed: "
e.getMessage());
			}
		}
		if ( == null || . < 1)
			return data;
		for (String key : ) {
			Serializable value = data.get(key);
			if (value instanceof Number) {
				Number num = (Numbervalue;
				data.put(keymap(num.doubleValue()));
else {
				try {
					Double val = new Double(value.toString());
					data.put(keymap(val));
catch (Exception e) {
							"Failed to parse double value from '{}' for attribute '{}'!",
							valuekey);
				}
			}
		}
		return data;
	}
	protected Bucket map(Double d) {
		if (d < [0].)
			return [0];
		for (int i = 0; i < .i++)
			if (i + 1 < . && [i + 1]. > d)
				return [i];
		return [. - 1];
	}
	public class Bucket implements SerializableComparable<Bucket> {
The unique class ID
		private static final long serialVersionUID = 1874196246174345683L;
		final Double lower;
		final Double upper;
		public Bucket(double lowdouble high) {
			 = low;
			 = high;
					Locale.getDefault());
			otherSymbols.setDecimalSeparator('.');
			DecimalFormat fmt = new DecimalFormat("0.0#####"otherSymbols);
			 = "Range[" + fmt.format() + ";" + fmt.format()
")";
		}
		public String toString() {
			return ;
		}

		public int compareTo(Bucket arg0) {
			if (arg0 == null)
				return 1;
			if (arg0 == this)
				return 0;
			int r = this..compareTo(arg0.lower);
			if (r == 0) {
				r = this..compareTo(arg0.upper);
			}
			return r;
		}
	}
New to GrepCode? Check out our FAQ X