package dr.evolution.alignment;
/**
* @author Chieh-Hsi
*/
public class MsatPatternStatistic {
Patterns msatPattern;
double msatLengthVar;
String mode;
public MsatPatternStatistic(Patterns msatPattern){
this(msatPattern, "variance");
}
public MsatPatternStatistic(Patterns msatPattern, String mode){
this.msatPattern = msatPattern;
this.msatLengthVar = computeMsatLengthVariance();
this.mode = mode;
}
public double computeMsatLengthVariance(){
double var = 0.0;
int[] msatPat = msatPattern.getPattern(0);
double mean = 0.0;
for(int i = 0; i < msatPat.length; i++){
mean += msatPat[i];
}
mean = mean/msatPat.length;
for(int i = 0; i < msatPat.length; i++){
var+=(msatPat[i] - mean)*(msatPat[i] - mean);
}
var = var/msatPat.length;
System.out.println(2*var);
return var;
}
public String toString(){
if(mode.equals("thetaV")){
return ""+2*msatLengthVar;
}else{
return ""+msatLengthVar;
}
}
}