/*
* TraceList.java
*
* Copyright (c) 2002-2015 Alexei Drummond, Andrew Rambaut and Marc Suchard
*
* This file is part of BEAST.
* See the NOTICE file distributed with this work for additional
* information regarding copyright ownership and licensing.
*
* BEAST is free software; you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* BEAST 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 Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with BEAST; if not, write to the
* Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
* Boston, MA 02110-1301 USA
*/
package dr.inference.trace;
import java.util.List;
/**
* An interface and default class that stores a set of traces from a single chain
*
* @author Andrew Rambaut
* @author Alexei Drummond
* @version $Id: TraceList.java,v 1.2 2006/05/22 15:52:06 rambaut Exp $
*/
public interface TraceList {
/**
* @return the name of this trace list
*/
String getName();
/**
* @return the number of traces in this trace list
*/
int getTraceCount();
/**
* @param name trace name
* @return the index of the trace with the given name
*/
int getTraceIndex(String name);
/**
* @param index trace ordinal index
* @return the name of the trace with the given index
*/
String getTraceName(int index);
/**
* @return the burn-in for this trace list (the number of actual states to discard)
*/
long getBurnIn();
/**
* @return the number of states in the traces (without the burnin)
*/
int getStateCount();
/**
* @return the number of states in the burnin
*/
int getBurninStateCount();
/**
* @return the size of the step between states
*/
long getStepSize();
/**
* @return the last state in the chain
*/
long getMaxState();
boolean isIncomplete();
/**
* get the values of trace with the given index (without burnin)
* @param index the index of trace
* @param fromIndex low endpoint (inclusive) of the subList.
* @param toIndex high endpoint (exclusive) of the subList.
* @return The list of values (which are selected values if filter applied)
*/
List getValues(int index, int fromIndex, int toIndex);
/**
* get the values of trace with the given index (without burnin)
* @param index the index of trace
* @return The list of values (which are selected values if filter applied)
*/
List getValues(int index);
/**
* get the values of the burnin of the trace
* @param index the index of trace
* @return The list of values (which are selected values if filter applied)
*/
List getBurninValues(int index);
/**
* @param traceIndex the index of the trace
* @return the trace distribution statistic object for the given index
*/
@Deprecated
TraceDistribution getDistributionStatistics(int traceIndex);
/**
* @param traceIndex the index of the trace
* @return the trace correlation statistic object for the given index
*/
TraceCorrelation getCorrelationStatistics(int traceIndex);
// create TraceCorrelation regarding Trace
void analyseTrace(int index);
Trace getTrace(int index);
// public interface D extends TraceList {
// Double[] getValues(int index, int length);
// Double[] getValues(int index, int length, int offset);
// Double[] getBurninValues(int index, int length);
// }
}