import java.util.*;
/**
* Class that calculates thresholds for every chosen promoter
* sequence. Also calculates threshold for a user defined
* consensus sequence.
* @author Gard Thomassen
* @see Interaction
* @see Control
* @see Invoke
* @see ProgramManager
* @see PromoterScoreManager
* @see ScoreTable
*/
public class Threshold{
public Vector score;
/**
* Constructor, establishes a pointer to the score Vector
* @param s vector containing score tables
*/
public Threshold(Vector s){
score = s;
}
/**
* Method that iterates through all given sequences and
* sets a threshold for this sequences
* @param thresholds an array holding all the user defined thresholds
*/
public void setThreshold(double [] thresholds){
boolean more = true;
int i = 0;
double max;
double threshold;
ScoreTable table = (ScoreTable)score.elementAt(i);
int counter = 0;
//iterating through all objects in score vector
while(more){
max = 0;
for(int n=0; n
=
table.T_score[n] &&
table.A_score[n] >=
table.C_score[n] &&
table.A_score[n] >=
table.G_score[n])
max += (double)table.A_score[n];
else if (table.T_score[n] >=
table.A_score[n] &&
table.T_score[n] >=
table.C_score[n] &&
table.T_score[n] >=
table.G_score[n])
max += (double)table.T_score[n];
else if (table.C_score[n] >=
table.T_score[n] &&
table.C_score[n] >=
table.A_score[n] &&
table.C_score[n] >=
table.G_score[n])
max += (double)table.C_score[n];
else
max += (double)table.G_score[n];
}//end for
//set threshold as product of threshold and max score
table.setThreshold(max*(thresholds[counter]/100));
//for debugging
//System.out.println("threshold% :"+ thresholds[counter]);
//System.out.println("threshold set to: "+ table.getThreshold());
i += 1;
//takes care of iteration
if(i < score.size()){
table = (ScoreTable)score.elementAt(i);
counter ++;
}
else{
more = false;
}
}//end while
}//end setThreshold
} //end class Threshold