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