/** * Method posToDouble returns the double value at the given tuple position. * * @param pos the ordinal position to select from * @return the value in the given ordinal position */ public static ToDoubleFunction<Tuple> posToDouble( int pos ) { return value -> value.getDouble( pos ); }
@Override public double calculate( CompareFunction[] compareFunctions, Tuple values, double[] points ) { double sumOfSquares = 0.0; for( int i = 0; i < points.length; i++ ) sumOfSquares += Math.pow( values.getDouble( i ) - points[ i ], 2.0 ); return sumOfSquares; } }
public void aggregate( FlowProcess flowProcess, AggregatorCall<Map<String, Double>> aggregatorCall ) { Map<String, Double> context = aggregatorCall.getContext(); TupleEntry entry = aggregatorCall.getArguments(); context.put( COUNT, ( (Double) context.get( COUNT ) ) + 1d ); context.put( SUM1, ( (Double) context.get( SUM1 ) ) + entry.getTuple().getDouble( 0 ) ); context.put( SUM2, ( (Double) context.get( SUM2 ) ) + entry.getTuple().getDouble( 1 ) ); context.put( SUMSQRS1, ( (Double) context.get( SUMSQRS1 ) ) + Math.pow( entry.getTuple().getDouble( 0 ), 2 ) ); context.put( SUMSQRS2, ( (Double) context.get( SUMSQRS2 ) ) + Math.pow( entry.getTuple().getDouble( 1 ), 2 ) ); context.put( SUMPROD, ( (Double) context.get( SUMPROD ) ) + ( entry.getTuple().getDouble( 0 ) * entry.getTuple().getDouble( 1 ) ) ); }
@Override public Tuple aggregate( FlowProcess flowProcess, TupleEntry args, Tuple context ) { if( context == null ) return args.getTupleCopy(); else if( args.getObject( 0 ) == null ) return context; context.set( 0, context.getDouble( 0 ) + args.getDouble( 0 ) ); return context; }
@Test public void testLast() { Aggregator aggregator = new Last(); Tuple[] arguments = new Tuple[]{new Tuple( new Double( 1.0 ) ), new Tuple( new Double( 3.0 ) ), new Tuple( new Double( 2.0 ) ), new Tuple( new Double( 4.0 ) ), new Tuple( new Double( -5.0 ) )}; Fields resultFields = new Fields( "field" ); TupleListCollector resultEntryCollector = invokeAggregator( aggregator, arguments, resultFields ); Tuple tuple = resultEntryCollector.iterator().next(); assertEquals( "got expected value after aggregate", -5.0, tuple.getDouble( 0 ), 0.0d ); }
@Test public void testFirstN() { Aggregator aggregator = new First( 3 ); Tuple[] arguments = new Tuple[]{new Tuple( new Double( 1.0 ) ), new Tuple( new Double( 3.0 ) ), new Tuple( new Double( 2.0 ) ), new Tuple( new Double( 4.0 ) ), new Tuple( new Double( -5.0 ) )}; Fields resultFields = new Fields( "field" ); TupleListCollector resultEntryCollector = invokeAggregator( aggregator, arguments, resultFields ); Iterator<Tuple> iterator = resultEntryCollector.iterator(); assertEquals( "got expected value after aggregate", 1.0, iterator.next().getDouble( 0 ), 0.0d ); assertEquals( "got expected value after aggregate", 3.0, iterator.next().getDouble( 0 ), 0.0d ); assertEquals( "got expected value after aggregate", 2.0, iterator.next().getDouble( 0 ), 0.0d ); }
@Test public void testMaxValue() { Aggregator aggregator = new MaxValue(); Tuple[] arguments = new Tuple[]{new Tuple( new Double( 1.0 ) ), new Tuple( new Double( 3.0 ) ), new Tuple( new Double( 2.0 ) ), new Tuple( new Double( 4.0 ) ), new Tuple( new Double( -5.0 ) )}; Fields resultFields = new Fields( "field" ); TupleListCollector resultEntryCollector = invokeAggregator( aggregator, arguments, resultFields ); Tuple tuple = resultEntryCollector.iterator().next(); assertEquals( "got expected value after aggregate", 4.0, tuple.getDouble( 0 ), 0.0d ); }
@Test public void testSum() { Aggregator aggregator = new Sum(); Tuple[] arguments = new Tuple[]{new Tuple( new Double( 1.0 ) ), new Tuple( new Double( 3.0 ) ), new Tuple( new Double( 2.0 ) ), new Tuple( new Double( 4.0 ) ), new Tuple( new Double( -5.0 ) )}; Fields resultFields = new Fields( "field" ); TupleListCollector resultEntryCollector = invokeAggregator( aggregator, arguments, resultFields ); Tuple tuple = resultEntryCollector.iterator().next(); assertEquals( "got expected value after aggregate", 5.0, tuple.getDouble( 0 ), 0.0d ); }
@Override public Tuple aggregate( FlowProcess flowProcess, TupleEntry args, Tuple context ) { if( context == null ) context = Tuple.size( 2 ); if( include == Include.NO_NULLS && args.getObject( 0 ) == null ) return context; context.set( 0, context.getDouble( 0 ) + args.getDouble( 0 ) ); context.set( 1, context.getLong( 1 ) + 1 ); return context; }
@Test public void testAverage() { Aggregator aggregator = new Average(); Tuple[] arguments = new Tuple[]{new Tuple( new Double( 1.0 ) ), new Tuple( new Double( 3.0 ) ), new Tuple( new Double( 2.0 ) ), new Tuple( new Double( 4.0 ) ), new Tuple( new Double( -5.0 ) )}; Fields resultFields = new Fields( "field" ); TupleListCollector resultEntryCollector = invokeAggregator( aggregator, arguments, resultFields ); Tuple tuple = resultEntryCollector.iterator().next(); assertEquals( "got expected value after aggregate", 1.0, tuple.getDouble( 0 ), 0.0d ); }
@Test public void testFirst() { Aggregator aggregator = new First(); Tuple[] arguments = new Tuple[]{new Tuple( new Double( 1.0 ) ), new Tuple( new Double( 3.0 ) ), new Tuple( new Double( 2.0 ) ), new Tuple( new Double( 4.0 ) ), new Tuple( new Double( -5.0 ) )}; Fields resultFields = new Fields( "field" ); TupleListCollector resultEntryCollector = invokeAggregator( aggregator, arguments, resultFields ); Tuple tuple = resultEntryCollector.iterator().next(); assertEquals( "got expected value after aggregate", 1.0, tuple.getDouble( 0 ), 0.0d ); }
@Test public void testMinValue() { Aggregator aggregator = new MinValue(); Tuple[] arguments = new Tuple[]{new Tuple( new Double( 1.0 ) ), new Tuple( new Double( 3.0 ) ), new Tuple( new Double( 2.0 ) ), new Tuple( new Double( 4.0 ) ), new Tuple( new Double( -5.0 ) )}; Fields resultFields = new Fields( "field" ); TupleListCollector resultEntryCollector = invokeAggregator( aggregator, arguments, resultFields ); Tuple tuple = resultEntryCollector.iterator().next(); assertEquals( "got expected value after aggregate", -5.0, tuple.getDouble( 0 ), 0.0d ); }
public void complete( FlowProcess flowProcess, AggregatorCall aggregatorCall ) { Tuple tuple = super.getResult( aggregatorCall ); aggregatorCall.getOutputCollector().add( new Tuple( 1 / ( 1 + tuple.getDouble( 0 ) ) ) ); } };
public void complete( FlowProcess flowProcess, AggregatorCall aggregatorCall ) { Tuple tuple = super.getResult( aggregatorCall ); aggregatorCall.getOutputCollector().add( new Tuple( 1 / ( 1 + tuple.getDouble( 0 ) ) ) ); } };
public void complete( FlowProcess flowProcess, AggregatorCall aggregatorCall ) { Tuple tuple = super.getResult( aggregatorCall ); aggregatorCall.getOutputCollector().add( new Tuple( 1 / ( 1 + tuple.getDouble( 0 ) ) ) ); } };
public void complete( FlowProcess flowProcess, AggregatorCall aggregatorCall ) { Tuple tuple = super.getResult( aggregatorCall ); aggregatorCall.getOutputCollector().add( new Tuple( 1 / ( 1 + tuple.getDouble( 0 ) ) ) ); } };