import java.io.*; import java.util.*; /** * This class creates a score matrix for the different positions a character * can have in a sequence of the same length as the input sequence. *
* This class creates an object of the class Matrix that holds the scoring
* table of the bases
* This class also holds a method to print the matrix
* @author Gard Thomassen
* @see ProgramManager
* @see PromoterSequenceScorer
* @see PromoterSearcher
* @see PromoterSearchManager
*/
public class ScoreTable{
double threshold;
String promoter_name;
int maxDistance, minDistance;
double[] A_score;
double[] T_score;
double[] C_score;
double[] G_score;
/**
* The method computes a scoring matrix.
* The method produces an array for each of the DNA bases,
* and holds the score for each base at every position i the sequence.
* Creates a Matrix object which holds the matrix
* @param seqv a char array which holds a given sequence
* @param inf_val a double array witch holds the different scores of
* the nucleotide at this position
* @param name name of the sigma subunit to this promoter sequence
* @param n an integer telling if it is a -10 or -35 region
*
*/
public void createTable(char [] seqv, double[] inf_val, String name, int n){
promoter_name = name;
A_score = new double [seqv.length];
T_score = new double [seqv.length];
C_score = new double [seqv.length];
G_score = new double [seqv.length];
if(n == 10 && name.equals("sigma 70(Dave)")){
A_score[0] = inf_val[0]*40 ;
T_score[0] = inf_val[0]*40 ;
C_score[0] = inf_val[0]*10 ;
G_score[0] = inf_val[0]*10 ;
A_score[1] = inf_val[1]*45.5 ;
T_score[1] = inf_val[1]*33.3 ;
C_score[1] = inf_val[1]*12.1 ;
G_score[1] = inf_val[1]*9.1 ;
A_score[2] = inf_val[2]*33.3 ;
T_score[2] = inf_val[2]*33.3 ;
C_score[2] = inf_val[2]*16.7 ;
G_score[2] = inf_val[2]*16.7 ;
A_score[3] = inf_val[3]*36.4 ;
T_score[3] = inf_val[3]*27.2 ;
C_score[3] = inf_val[3]*18.2 ;
G_score[3] = inf_val[3]*18.2 ;
A_score[4] = inf_val[4]*22.6 ;
T_score[4] = inf_val[4]*51.2 ;
C_score[4] = inf_val[4]*12.9 ;
G_score[4] = inf_val[4]*12.9 ;
A_score[5] = inf_val[5]*15.6 ;
T_score[5] = inf_val[5]*53.1 ;
C_score[5] = inf_val[5]*15.6 ;
G_score[5] = inf_val[5]*15.6 ;
}
if(n == 35 && name.equals("sigma 70(Dave)")){
A_score[0] = inf_val[0]*18.2 ;
T_score[0] = inf_val[0]*45.5 ;
C_score[0] = inf_val[0]*18.2 ;
G_score[0] = inf_val[0]*18.2 ;
A_score[1] = inf_val[1]*12.5 ;
T_score[1] = inf_val[1]*55.0 ;
C_score[1] = inf_val[1]*12.5 ;
G_score[1] = inf_val[1]*18.0;
A_score[2] = inf_val[2]*11.5 ;
T_score[2] = inf_val[2]*53.8;
C_score[2] = inf_val[2]*11.5 ;
G_score[2] = inf_val[2]*23.1 ;
A_score[3] = inf_val[3]*25.0 ;
T_score[3] = inf_val[3]*25.0 ;
C_score[3] = inf_val[3]*25.0 ;
G_score[3] = inf_val[3]*25.0 ;
A_score[4] = inf_val[4]*33.3 ;
T_score[4] = inf_val[4]*33.3;
C_score[4] = inf_val[4]*16.7 ;
G_score[4] = inf_val[4]*16.7 ;
A_score[5] = inf_val[5]*42.8 ;
T_score[5] = inf_val[5]*28.6 ;
C_score[5] = inf_val[5]*14.3 ;
G_score[5] = inf_val[5]*14.3 ;
}
if(n == 12 && name.equals("sigma 54(Dave)")){
A_score[0] = inf_val[0]*20 ;
T_score[0] = inf_val[0]*40 ;
C_score[0] = inf_val[0]*40 ;
G_score[0] = inf_val[0]*0 ;
A_score[1] = inf_val[1]* 0 ;
T_score[1] = inf_val[1]* 61.5 ;
C_score[1] = inf_val[1]* 30.8 ;
G_score[1] = inf_val[1]* 7.7 ;
A_score[2] = inf_val[2]* 0.0 ;
T_score[2] = inf_val[2]* 37.0 ;
C_score[2] = inf_val[2]* 22.2;
G_score[2] = inf_val[2]* 40.7 ;
A_score[3] = inf_val[3]* 2.3 ;
T_score[3] = inf_val[3]* 11.6 ;
C_score[3] = inf_val[3]* 39.6 ;
G_score[3] = inf_val[3]* 46.5 ;
A_score[4] = inf_val[4]* 20 ;
T_score[4] = inf_val[4]* 15 ;
C_score[4] = inf_val[4]* 50 ;
G_score[4] = inf_val[4]* 15 ;
}
if(n == 24 && name.equals("sigma 54(Dave)")){
A_score[0] = inf_val[0]*0;
T_score[0] = inf_val[0]*45.5;
C_score[0] = inf_val[0]*36.4;
G_score[0] = inf_val[0]*18.2;
A_score[1] = inf_val[1]*0;
T_score[1] = inf_val[1]*43.4;
C_score[1] = inf_val[1]*10.9;
G_score[1] = inf_val[1]*45.7;
A_score[2] = inf_val[2]*3.0;
T_score[2] = inf_val[2]*11.0;
C_score[2] = inf_val[2]*4;
G_score[2] = inf_val[2]*82;
A_score[3] = inf_val[3]*5.9;
T_score[3] = inf_val[3]*2.0;
C_score[3] = inf_val[3]*27.5;
G_score[3] = inf_val[3]*64.7;
A_score[4] = inf_val[4]*28.6;
T_score[4] = inf_val[4]*0;
C_score[4] = inf_val[4]*57.1;
G_score[4] = inf_val[4]*14.3;
A_score[5] = inf_val[5]*63.6;
T_score[5] = inf_val[5]*0;
C_score[5] = inf_val[5]*18.2;
G_score[5] = inf_val[5]*18.2;
}
if(n == 10 && name.equals("sigma 38(Dave)")){
A_score[0] = inf_val[0]*33.3;
T_score[0] = inf_val[0]*50;
C_score[0] = inf_val[0]*8.3;
G_score[0] = inf_val[0]*8.3;
A_score[1] = inf_val[1]*60.3;
T_score[1] = inf_val[1]*31.7;
C_score[1] = inf_val[1]*7.9;
G_score[1] = inf_val[1]*0;
A_score[2] = inf_val[2]*44.4;
T_score[2] = inf_val[2]*27.8;
C_score[2] = inf_val[2]*16.7;
G_score[2] = inf_val[2]*1.1;
A_score[3] = inf_val[3]*25;
T_score[3] = inf_val[3]*25;
C_score[3] = inf_val[3]*25;
G_score[3] = inf_val[3]*25;
A_score[4] = inf_val[4]*26.7;
T_score[4] = inf_val[4]*50;
C_score[4] = inf_val[4]*13.3;
G_score[4] = inf_val[4]*10;
A_score[5] = inf_val[5]*20.3;
T_score[5] = inf_val[5]*64.4;
C_score[5] = inf_val[5]*13.6;
G_score[5] = inf_val[5]*16.9;
A_score[6] = inf_val[6]*20.0;
T_score[6] = inf_val[6]*53.3;
C_score[6] = inf_val[6]*6.7;
G_score[6] = inf_val[6]*26.7;
}
if(n == 35 && name.equals("sigma 38(Dave)")){
A_score[0] = inf_val[0]*25;
T_score[0] = inf_val[0]*50;
C_score[0] = inf_val[0]*12.5;
G_score[0] = inf_val[0]*12.5;
A_score[1] = inf_val[1]*18.6;
T_score[1] = inf_val[1]*56.3;
C_score[1] = inf_val[1]*12.5;
G_score[1] = inf_val[1]*12.5;
A_score[2] = inf_val[2]*25;
T_score[2] = inf_val[2]*50;
C_score[2] = inf_val[2]*12.5;
G_score[2] = inf_val[2]*12.5;
A_score[3] = inf_val[3]*25;
T_score[3] = inf_val[3]*50;
C_score[3] = inf_val[3]*12.5;
G_score[3] = inf_val[3]*12.5;
A_score[4] = inf_val[4]*42.3;
T_score[4] = inf_val[4]*28.6;
C_score[4] = inf_val[4]*28.6;
G_score[4] = inf_val[4]*0;
A_score[5] = inf_val[5]*45.5;
T_score[5] = inf_val[5]*9.1;
C_score[5] = inf_val[5]*27.3;
G_score[5] = inf_val[5]*18.2;
}
if(n == 15 && name.equals("sigma 32(Dave)")){
A_score[0] = inf_val[0]*9.3;
T_score[0] = inf_val[0]*9.3;
C_score[0] = inf_val[0]*65.1;
G_score[0] = inf_val[0]*16.3;
A_score[1] = inf_val[1]*4.7;
T_score[1] = inf_val[1]*5.8;
C_score[1] = inf_val[1]*79.1;
G_score[1] = inf_val[1]*10.5;
A_score[2] = inf_val[2]*13.7;
T_score[2] = inf_val[2]*8.2;
C_score[2] = inf_val[2]*72.6;
G_score[2] = inf_val[2]*5.5;
A_score[3] = inf_val[3]*50;
T_score[3] = inf_val[3]*9.1;
C_score[3] = inf_val[3]*31.8;
G_score[3] = inf_val[3]*9.1;
A_score[4] = inf_val[4]*49;
T_score[4] = inf_val[4]*42.9;
C_score[4] = inf_val[4]*4.1;
G_score[4] = inf_val[4]*4.1;
A_score[5] = inf_val[5]*24.1;
T_score[5] = inf_val[5]*62.1;
C_score[5] = inf_val[5]*10.3;
G_score[5] = inf_val[5]*3.4;
A_score[6] = inf_val[6]*25;
T_score[6] = inf_val[6]*50;
C_score[6] = inf_val[6]*12.5;
G_score[6] = inf_val[6]*12.5;
A_score[7] = inf_val[7]*33.3;
T_score[7] = inf_val[7]*40;
C_score[7] = inf_val[7]*13.3;
G_score[7] = inf_val[7]*13.3;
}
if(n == 31 && name.equals("sigma 32(Dave)")){
A_score[0] = inf_val[0]*10.8;
T_score[0] = inf_val[0]*62.2;
C_score[0] = inf_val[0]*10.8;
G_score[0] = inf_val[0]*18.9;
A_score[1] = inf_val[1]*9.3;
T_score[1] = inf_val[1]*60.5;
C_score[1] = inf_val[1]*16.3;
G_score[1] = inf_val[1]*14.0;
A_score[2] = inf_val[2]*31.3;
T_score[2] = inf_val[2]*31.3;
C_score[2] = inf_val[2]*6.1;
G_score[2] = inf_val[2]*31.3;
A_score[3] = inf_val[3]*44.4;
T_score[3] = inf_val[3]*37.0;
C_score[3] = inf_val[3]*3.7;
G_score[3] = inf_val[3]*14.8;
A_score[4] = inf_val[4]*57.9;
T_score[4] = inf_val[4]*23.7;
C_score[4] = inf_val[4]*5.3;
G_score[4] = inf_val[4]*13.2;
A_score[5] = inf_val[5]*57.1;
T_score[5] = inf_val[5]*14.3;
C_score[5] = inf_val[5]*5.7;
G_score[5] = inf_val[5]*22.9;
A_score[6] = inf_val[6]*58.3;
T_score[6] = inf_val[6]*8.3;
C_score[6] = inf_val[6]*25;
G_score[6] = inf_val[6]*0;
A_score[7] = inf_val[7]*58.3;
T_score[7] = inf_val[7]*8.3;
C_score[7] = inf_val[7]*0;
G_score[7] = inf_val[7]*25;
}
if(n == 10 && name.equals("sigma all")){
A_score[0] = inf_val[0]*5;
T_score[0] = inf_val[0]*77;
C_score[0] = inf_val[0]*10;
G_score[0] = inf_val[0]*8;
A_score[1] = inf_val[1]*76;
T_score[1] = inf_val[1]*12;
C_score[1] = inf_val[1]*6;
G_score[1] = inf_val[1]*6;
A_score[2] = inf_val[2]*15;
T_score[2] = inf_val[2]*60;
C_score[2] = inf_val[2]*11;
G_score[2] = inf_val[2]*14;
A_score[3] = inf_val[3]*61;
T_score[3] = inf_val[3]*12;
C_score[3] = inf_val[3]*13;
G_score[3] = inf_val[3]*14;
A_score[4] = inf_val[4]*56;
T_score[4] = inf_val[4]*15;
C_score[4] = inf_val[4]*20;
G_score[4] = inf_val[4]*8;
A_score[5] = inf_val[5]*6;
T_score[5] = inf_val[5]*82;
C_score[5] = inf_val[5]*7;
G_score[5] = inf_val[5]*5;
}
if(n == 35 && name.equals("sigma all")){
A_score[0] = inf_val[0]*10;
T_score[0] = inf_val[0]*69;
C_score[0] = inf_val[0]*10;
G_score[0] = inf_val[0]*10;
A_score[1] = inf_val[1]*6;
T_score[1] = inf_val[1]*79;
C_score[1] = inf_val[1]*7;
G_score[1] = inf_val[1]*8;
A_score[2] = inf_val[2]*9;
T_score[2] = inf_val[2]*18;
C_score[2] = inf_val[2]*12;
G_score[2] = inf_val[2]*61;
A_score[3] = inf_val[3]*56;
T_score[3] = inf_val[3]*16;
C_score[3] = inf_val[3]*17;
G_score[3] = inf_val[3]*11;
A_score[4] = inf_val[4]*21;
T_score[4] = inf_val[4]*16;
C_score[4] = inf_val[4]*54;
G_score[4] = inf_val[4]*9;
A_score[5] = inf_val[5]*54;
T_score[5] = inf_val[5]*17;
C_score[5] = inf_val[5]*13;
G_score[5] = inf_val[5]*16;
}
if(n == 35 && name.equals("sigma_70_regulonDB")){
A_score[0] = inf_val[0]*24;
T_score[0] = inf_val[0]*31;
C_score[0] = inf_val[0]*22;
G_score[0] = inf_val[0]*24;
A_score[1] = inf_val[1]*22;
T_score[1] = inf_val[1]*36;
C_score[1] = inf_val[1]*20;
G_score[1] = inf_val[1]*21;
A_score[2] = inf_val[2]*27;
T_score[2] = inf_val[2]*47;
C_score[2] = inf_val[2]*17;
G_score[2] = inf_val[2]*19;
A_score[3] = inf_val[3]*14;
T_score[3] = inf_val[3]*46;
C_score[3] = inf_val[3]*17;
G_score[3] = inf_val[3]*23;
A_score[4] = inf_val[4]*17;
T_score[4] = inf_val[4]*36;
C_score[4] = inf_val[4]*19;
G_score[4] = inf_val[4]*27;
A_score[5] = inf_val[5]*21;
T_score[5] = inf_val[5]*32;
C_score[5] = inf_val[5]*26;
G_score[5] = inf_val[5]*21;
}
if(n == 10 && name.equals("sigma_70_regulonDB")){
A_score[0] = inf_val[0]*22;
T_score[0] = inf_val[0]*51;
C_score[0] = inf_val[0]*16;
G_score[0] = inf_val[0]*12;
A_score[1] = inf_val[1]*54;
T_score[1] = inf_val[1]*26;
C_score[1] = inf_val[1]*9;
G_score[1] = inf_val[1]*10;
A_score[2] = inf_val[2]*45;
T_score[2] = inf_val[2]*32;
C_score[2] = inf_val[2]*12;
G_score[2] = inf_val[2]*11;
A_score[3] = inf_val[3]*40;
T_score[3] = inf_val[3]*29;
C_score[3] = inf_val[3]*20;
G_score[3] = inf_val[3]*11;
A_score[4] = inf_val[4]*41;
T_score[4] = inf_val[4]*26;
C_score[4] = inf_val[4]*21;
G_score[4] = inf_val[4]*13;
A_score[5] = inf_val[5]*20;
T_score[5] = inf_val[5]*53;
C_score[5] = inf_val[5]*15;
G_score[5] = inf_val[5]*12;
}
if(n == 35 && name.equals("sigma_32_regulonDB")){
A_score[0] = inf_val[0]*31;
T_score[0] = inf_val[0]*37;
C_score[0] = inf_val[0]*12;
G_score[0] = inf_val[0]*23;
A_score[1] = inf_val[1]*37;
T_score[1] = inf_val[1]*27;
C_score[1] = inf_val[1]*12;
G_score[1] = inf_val[1]*27;
A_score[2] = inf_val[2]*44;
T_score[2] = inf_val[2]*25;
C_score[2] = inf_val[2]*10;
G_score[2] = inf_val[2]*23;
A_score[3] = inf_val[3]*56;
T_score[3] = inf_val[3]*17;
C_score[3] = inf_val[3]*10;
G_score[3] = inf_val[3]*19;
A_score[4] = inf_val[4]*50;
T_score[4] = inf_val[4]*21;
C_score[4] = inf_val[4]*15;
G_score[4] = inf_val[4]*15;
A_score[5] = inf_val[5]*46;
T_score[5] = inf_val[5]*21;
C_score[5] = inf_val[5]*13;
G_score[5] = inf_val[5]*21;
}
if(n == 10 && name.equals("sigma_32_regulonDB")){
A_score[0] = inf_val[0]*27;
T_score[0] = inf_val[0]*12;
C_score[0] = inf_val[0]*52;
G_score[0] = inf_val[0]*12;
A_score[1] = inf_val[1]*10;
T_score[1] = inf_val[1]*6;
C_score[1] = inf_val[1]*63;
G_score[1] = inf_val[1]*23;
A_score[2] = inf_val[2]*12;
T_score[2] = inf_val[2]*6;
C_score[2] = inf_val[2]*71;
G_score[2] = inf_val[2]*13;
A_score[3] = inf_val[3]*19;
T_score[3] = inf_val[3]*12;
C_score[3] = inf_val[3]*65;
G_score[3] = inf_val[3]*6;
A_score[4] = inf_val[4]*54;
T_score[4] = inf_val[4]*15;
C_score[4] = inf_val[4]*21;
G_score[4] = inf_val[4]*12;
A_score[5] = inf_val[5]*25;
T_score[5] = inf_val[5]*65;
C_score[5] = inf_val[5]*6;
G_score[5] = inf_val[5]*6;
A_score[6] = inf_val[6]*25;
T_score[6] = inf_val[6]*48;
C_score[6] = inf_val[6]*23;
G_score[6] = inf_val[6]*6;
}
if(n == 35 && name.equals("sigma_24_regulonDB")){
A_score[0] = inf_val[0]*19;
T_score[0] = inf_val[0]*11;
C_score[0] = inf_val[0]*27;
G_score[0] = inf_val[0]*43;
A_score[1] = inf_val[1]*27;
T_score[1] = inf_val[1]*19;
C_score[1] = inf_val[1]*16;
G_score[1] = inf_val[1]*38;
A_score[2] = inf_val[2]*43;
T_score[2] = inf_val[2]*5;
C_score[2] = inf_val[2]*11;
G_score[2] = inf_val[2]*41;
A_score[3] = inf_val[3]*43;
T_score[3] = inf_val[3]*16;
C_score[3] = inf_val[3]*11;
G_score[3] = inf_val[3]*41;
A_score[4] = inf_val[4]*49;
T_score[4] = inf_val[4]*27;
C_score[4] = inf_val[4]*16;
G_score[4] = inf_val[4]*8;
A_score[5] = inf_val[5]*41;
T_score[5] = inf_val[5]*24;
C_score[5] = inf_val[5]*19;
G_score[5] = inf_val[5]*17;
}
if(n == 10 && name.equals("sigma_24_regulonDB")){
A_score[0] = inf_val[0]*57;
T_score[0] = inf_val[0]*3;
C_score[0] = inf_val[0]*11;
G_score[0] = inf_val[0]*30;
A_score[1] = inf_val[1]*24;
T_score[1] = inf_val[1]*16;
C_score[1] = inf_val[1]*14;
G_score[1] = inf_val[1]*46;
A_score[2] = inf_val[2]*19;
T_score[2] = inf_val[2]*57;
C_score[2] = inf_val[2]*16;
G_score[2] = inf_val[2]*8;
A_score[3] = inf_val[3]*3;
T_score[3] = inf_val[3]*38;
C_score[3] = inf_val[3]*57;
G_score[3] = inf_val[3]*3;
A_score[4] = inf_val[4]*3;
T_score[4] = inf_val[4]*57;
C_score[4] = inf_val[4]*24;
G_score[4] = inf_val[4]*16;
A_score[5] = inf_val[5]*16;
T_score[5] = inf_val[5]*24;
C_score[5] = inf_val[5]*3;
G_score[5] = inf_val[5]*57;
A_score[6] = inf_val[6]*70;
T_score[6] = inf_val[6]*3;
C_score[6] = inf_val[6]*3;
G_score[6] = inf_val[6]*24;
A_score[7] = inf_val[7]*49;
T_score[7] = inf_val[7]*21;
C_score[7] = inf_val[7]*24;
G_score[7] = inf_val[7]*5;
}
}//end createTable
/**
* Method to print the Scoretable, only used as debugging
* @param n the name of the sigma factor to this scoretable
*/
public void printResultTable(String n){
String name = n ;
System.out.println(n);
System.out.print("A_score : ");
String tmp;
for(int i=0; i