/** * Partition the time-series into a pair of distinct series using a predicate. * <p> * Points in the time-series whose values match the predicate will be put into the first series, * whilst those points whose values do not match will be put into the second. * * @param predicate predicate used to test the points in the time-series * @return a {@code Pair} containing two time-series. The first is a series * made of all the points in this series which match the predicate. The * second is a series made of the points which do not match. */ public default Pair<LocalDateDoubleTimeSeries, LocalDateDoubleTimeSeries> partitionByValue( DoublePredicate predicate) { return partition((obj, value) -> predicate.test(value)); }
public void partitionEmptySeries() { Pair<LocalDateDoubleTimeSeries, LocalDateDoubleTimeSeries> partitioned = LocalDateDoubleTimeSeries.empty().partition((ld, d) -> ld.getYear() == 2015); assertThat(partitioned.getFirst()).isEqualTo(LocalDateDoubleTimeSeries.empty()); assertThat(partitioned.getSecond()).isEqualTo(LocalDateDoubleTimeSeries.empty()); }
public void partition() { List<LocalDate> dates = dates(DATE_2010_01_01, DATE_2011_06_01, DATE_2012_01_01, DATE_2013_06_01, DATE_2014_01_01); LocalDateDoubleTimeSeries series = LocalDateDoubleTimeSeries.builder().putAll(dates, VALUES_10_14).build(); Pair<LocalDateDoubleTimeSeries, LocalDateDoubleTimeSeries> partition = series.partition((ld, d) -> ld.getYear() % 2 == 0); LocalDateDoubleTimeSeries even = partition.getFirst(); LocalDateDoubleTimeSeries odd = partition.getSecond(); assertThat(even.size()).isEqualTo(3); assertThat(odd.size()).isEqualTo(2); assertThat(even.get(DATE_2010_01_01)).hasValue(10); assertThat(even.get(DATE_2012_01_01)).hasValue(12); assertThat(even.get(DATE_2014_01_01)).hasValue(14); assertThat(odd.get(DATE_2011_06_01)).hasValue(11); assertThat(odd.get(DATE_2013_06_01)).hasValue(13); }
public void partitionSeries() { Map<LocalDate, Double> in = ImmutableMap.<LocalDate, Double>builder() .put(dt(2015, 1, 1), 10d) // Thursday .put(dt(2015, 1, 2), 11d) // Friday .put(dt(2015, 1, 5), 12d) .put(dt(2015, 1, 6), 13d) .put(dt(2015, 1, 7), 14d) .put(dt(2015, 1, 8), 15d) // Thursday .put(dt(2015, 1, 9), 16d) // Friday .build(); LocalDateDoubleTimeSeries ts = LocalDateDoubleTimeSeries.builder().putAll(in).build(); Pair<LocalDateDoubleTimeSeries, LocalDateDoubleTimeSeries> partitioned = ts.partition((ld, d) -> ld.getDayOfMonth() % 2 == 0); LocalDateDoubleTimeSeries even = partitioned.getFirst(); LocalDateDoubleTimeSeries odd = partitioned.getSecond(); assertThat(even.size()).isEqualTo(3); assertThat(even.get(dt(2015, 1, 2))).hasValue(11d); assertThat(even.get(dt(2015, 1, 6))).hasValue(13d); assertThat(even.get(dt(2015, 1, 8))).hasValue(15d); assertThat(odd.size()).isEqualTo(4); assertThat(odd.get(dt(2015, 1, 1))).hasValue(10d); assertThat(odd.get(dt(2015, 1, 5))).hasValue(12d); assertThat(odd.get(dt(2015, 1, 7))).hasValue(14d); assertThat(odd.get(dt(2015, 1, 9))).hasValue(16d); }