/**
* Copyright (C) 2010-14 diirt developers. See COPYRIGHT.TXT
* All rights reserved. Use is subject to license terms. See LICENSE.TXT
*/
package org.diirt.graphene;
import org.diirt.util.stats.StatisticsUtil;
import org.diirt.util.stats.Statistics;
import java.util.List;
import org.diirt.util.array.ListDouble;
import org.diirt.util.array.ListNumber;
import org.diirt.util.time.TimeInterval;
import java.time.Instant;
/**
*
* @author carcassi
*/
public class TimeSeriesDatasets {
/**
*Returns a TimeSeriesDataset with the <code>Statistics</code> and time interval.
* the time interval is the difference in time between the first and second time intervals
* @param values - List of values associated with timestamps
* @param timestamps - list of <code>Timestamp</code>
* @return TimeSeriesDataset
*/
public static TimeSeriesDataset timeSeriesOf(final ListNumber values, final List<Instant> timestamps) {
// TODO: make sure timestamps are monotinic
final TimeInterval timeInterval = TimeInterval.between(timestamps.get(0), timestamps.get(timestamps.size() - 1));
final Statistics stats = StatisticsUtil.statisticsOf(values);
return new TimeSeriesDataset() {
@Override
public ListNumber getValues() {
return values;
}
@Override
public List<Instant> getTimestamps() {
return timestamps;
}
@Override
public ListNumber getNormalizedTime( final TimeInterval normalizationRange ) {
return new ListDouble() {
@Override
public double getDouble(int index) {
return TimeScales.normalize(timestamps.get(index), normalizationRange );
}
@Override
public int size() {
return timestamps.size();
}
};
}
@Override
public Statistics getStatistics() {
return stats;
}
@Override
public TimeInterval getTimeInterval() {
return timeInterval;
}
@Override
public int getCount() {
return values.size();
}
};
}
}