code: package dotnet54.tscore.data;
  
  public interface TimeSeries {
  
      static boolean zNormalize = true;	// NOTE: boss doesnt use z-normalize, so rename this and refactor
  
      public int dimensions();
  
      public int length();
  
      public Integer label();
  
      public void setLabel(Integer classLabel);
  
      public double[][] data();
  
      public double[] data(int dimension);
  
      public double value(int dimension, int index);
  
      public double value(int index); //assumes dimension 0
  
      public void setValue(int dimension, int index, double value);
  
      public double weight();
  
      public void setWeight(double weight);
  
      public TimeSeries clone();
  
      public TimeSeries clone(double[][] newData);
  
      public double getMean(int dimension);
  
      public double getStdDev(int dimension);
  
      public void normalize();
  
      public void normalize(boolean normMean);
  
      public void normalize(boolean normMean, double mean, double stdDev);
  
      public boolean isNormalized();
  
      public void setIsNormalized(boolean isNormalized);
  
      public TimeSeries getSubsequence(int offset, int windowSize, boolean zeroMeanNormalize);
  
      public TimeSeries[] getSubsequences(int windowSize, boolean zeroMeanNormalize);
  
      public TimeSeries[] getDisjointSequences(int windowSize, boolean normMean);
  
      public void calcIncrementalMeanStddev(int windowLength, double[] tsData, double[] means, double[] stds);
  
  
      // DEV
  
  //    public double[] getMin();
  
  //    public double[] getMax();
  
  //    public double getMin(int dimension);
  
  //    public double getMax(int dimension);
  
      // z-score normalization
  //    public void standardize();
  
      //min-max normalization
  //    public void rescale();
  
  //    public void zNormalize();
  
  }
  