// TransistionProbability.java
//
// (c) 1999-2000 PAL Development Core Team
//
// This package may be distributed under the
// terms of the GNU General Public License (GPL)

package pal.substmodel;

import pal.math.*;


/**
 * compute matrix exponential and, subsequently, transition probabilities
 * for a given rate matrix
 * MatrixExponential.java,v 1.3 2000/08/08 22:58:29 alexi Exp $
 *
 * @author Korbinian Strimmer
 */
public interface TransitionProbability extends Cloneable, java.io.Serializable {

	/**
	 * compute transition probabilities for a expected distance
	 * using the prespecified rate matrix
	 *
	 * @param arc expected distance
	 */
	void setDistance(double arc);
	/**
	 * compute transition probabilities for a expected time span
	 * using the prespecified rate matrix
	 *
	 * @param start start time
	 * @param end end time
	 */
	void setTime(double start, double end);
	
	double getTransitionProbability(int row, int column);

	int getDimension();
}
