1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93
|
package dna;
import java.util.HashMap;
import java.util.Set;
import fileIO.MatrixFile;
public class Matrix {
public Matrix(float[][] g, int pre, String nm){
grid=g;
prefix=pre;
name=nm;
}
public float[][] subGrid(int prefixLength, int length){
float[][] r=new float[length][];
int start=prefix-prefixLength;
for(int i=0; i<length; i++){
r[i]=grid[i+start].clone();
}
return r;
}
public float[][] grid;
public int prefix;
public String name;
private static HashMap<String, Matrix> table=null;
public static Set<?> keys(){return table.keySet();}
public static Matrix get(String s){
if(table==null){
table=new HashMap<String, Matrix>(64);
// fillTable("matrices.txt");
// fillTable("matrices2.txt");
// fillTable("matrixN1.txt");
// fillTable("matrixN2.txt");
// fillTable("matrixN3.txt");
// fillTable("matrixN4.txt");
fillTable("matrix_build37_N1.txt");
fillTable("matrix_build37_N2.txt");
fillTable("matrix_build37_N3.txt");
// fillTable("matrix_build37_N4.txt");
// fillTable("asmGstart_sept9.txt");
// fillTable("asmEstart_sept9.txt");
// fillTable("asmTRstart_sept9.txt");
// fillTable("asmGstop_sept9.txt");
// fillTable("asmEstop_sept9.txt");
// fillTable("asmTRstop_sept9.txt");
// fillTable("asmEstop_sept16.txt");
// fillTable("SplicePercentiles_b37_Sept16.txt");
fillTable("SplicePercentiles_b37_Nov24.txt");
}
Matrix m=table.get(s);
// assert(table.containsKey(s)) : "\nCan't find "+s+" in\n\n"+table.keySet()+"\n";
// assert(m!=null) : "\nValue for "+s+" is null\n";
if(!table.containsKey(s) || m==null){
if(!table.containsKey(s)){throw new RuntimeException("Can't find "+s+" in\n\n"+table.keySet()+"\n");}
if(m==null){throw new RuntimeException("\nValue for "+s+" is null");}
}
return m;
}
private static void fillTable(String fname){
MatrixFile mf=new MatrixFile(fname);
Matrix mat=mf.nextMatrix();
while(mat!=null){
// System.out.println("Adding "+mat.name);
table.put(mat.name, mat);
table.put(mat.name.toLowerCase(), mat);
mat=mf.nextMatrix();
}
mf.close();
}
}
|