import java.io.BufferedReader; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; import java.io.PrintWriter; public class Eval extends Thread{ String datei; double schwelle, start = 0.01, conc1, conc2, fc, fce, pvalue, ln_p, pv; Double[] schwellen; double tp[], tpln[], out_tpln[], out_tp[]; double fp[], fpln[], out_fpln[], out_fp[]; Thread th; String[] values; int cfp = 0, ctp = 0; // Konstruktor public Eval(String datei) { this.datei = datei; this.schwelle = Double.parseDouble(Stammfenster.ttthreshold.getText()); } // Überarbeitete Start public void start(Thread t) { th = t; super.start(); } // Neue Run public void run() { readTT(); } // Einlesen der TTestout public void readTT() { // Array mit Schwellenwerten füllen schwellen = new Double[(int) (schwelle/0.01)]; int i = 0; out_tpln = new double[schwellen.length]; out_tp = new double[schwellen.length]; out_fpln = new double[schwellen.length]; out_fp = new double[schwellen.length]; fpln = new double[schwellen.length]; tpln = new double[schwellen.length]; fp = new double[schwellen.length]; tp = new double[schwellen.length]; try { for(double db = start;db <= schwelle+0.01;db = db + 0.01) { schwellen[i] = db; i++; } }catch(Exception e){} // READ BufferedReader mrg; try {mrg = new BufferedReader(new FileReader(datei)); String line = ""; line = mrg.readLine(); while(line != null) { int elements = line.compareTo("\t"); values = new String[elements]; values = line.split("\t"); // Kontrolle, damit keine Striche... if(values[1].equals("-")){conc1 = 0.0; conc2 = 0.0;} else{conc1 = Double.parseDouble(values[1]); conc2 = Double.parseDouble(values[5]);} fc = Double.parseDouble(values[10]); fce = Double.parseDouble(values[9]); values[11] = values[11].replace("p:",""); values[12] = values[12].replace("lnp:",""); pvalue = Double.parseDouble(values[11]); ln_p = Double.parseDouble(values[12]); //Falsch Positiv -> kleine Schwelle und nicht gespikte (conc1 und conc2 = 0.0) if(conc1 == 0.0 && conc2 == 0.0 && pv <= schwelle) { cfp++; // Wert mit den einzelnen Schwellen int y = 0; for(double sw:schwellen) { if(ln_p <= (sw+schwelle)){fpln[y]++;} // wenn Wert unter der Schwelle -> ++ if(pvalue <= sw){fp[y]++;} y++; } } // True-Positives -> gespikte 0.5 - 64 else if(conc1+conc2 <= 64 && conc1 >= 0.5 && conc2 >= 0.5) { ctp++; // Wert mit den einzelnen Schwellen int y = 0; for(double sw:schwellen) { if(ln_p <= (sw+schwelle))// wenn Wert unter der Schwelle -> ++ { if(((fce-1)*(fc-1)) > 0) { tpln[y]++; } } if(pvalue <= sw) { if(((fce-1)*(fc-1)) > 0) { tp[y]++; } } y++; } } line = mrg.readLine(); } // OUTPUT PrintWriter daten = new PrintWriter("eval_ttest.txt"); for (int j = 0; j < schwellen.length; j++) { out_tpln[j] = Math.round((tpln[j]/ctp)*100000.)/100000.; out_fpln[j] = Math.round((fpln[j]/cfp)*100000.)/100000.; out_tp[j] = Math.round((tp[j]/ctp)*100000.)/100000.; out_fp[j] = Math.round((fp[j]/cfp)*100000.)/100000.; } //daten.println("fp\ttp"); for (int j = 0; j < schwellen.length; j++) { daten.println(out_fp[j]+ "\t" +out_tp[j]); //Math.round(schwellen[j]*100.)/100.+"\t"+ } //daten.println("\nfpln\ttpln"); daten.println(); for (int j = 0; j < schwellen.length; j++) { daten.println(out_fpln[j]+ "\t" +out_tpln[j]); //Math.round(schwellen[j]*100.)/100.+"\t"+ } daten.close(); } catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();} } }