2 |
26 Feb 07 |
jari |
1 |
/* |
2 |
26 Feb 07 |
jari |
* Created on Feb 24, 2006 |
2 |
26 Feb 07 |
jari |
3 |
*/ |
2 |
26 Feb 07 |
jari |
4 |
package org.tigr.microarray.mev.cluster.gui.impl.bridge; |
2 |
26 Feb 07 |
jari |
5 |
|
2 |
26 Feb 07 |
jari |
6 |
import java.io.File; |
2 |
26 Feb 07 |
jari |
7 |
import java.io.FileWriter; |
2 |
26 Feb 07 |
jari |
8 |
import java.io.IOException; |
2 |
26 Feb 07 |
jari |
9 |
import java.util.Calendar; |
2 |
26 Feb 07 |
jari |
10 |
import java.util.GregorianCalendar; |
2 |
26 Feb 07 |
jari |
11 |
|
2 |
26 Feb 07 |
jari |
12 |
import javax.swing.JFrame; |
2 |
26 Feb 07 |
jari |
13 |
import javax.swing.JOptionPane; |
2 |
26 Feb 07 |
jari |
14 |
|
2 |
26 Feb 07 |
jari |
15 |
import org.tigr.microarray.mev.r.RProgress; |
2 |
26 Feb 07 |
jari |
16 |
import org.tigr.microarray.mev.r.RSrvException; |
2 |
26 Feb 07 |
jari |
17 |
import org.tigr.microarray.mev.r.Rconnection; |
2 |
26 Feb 07 |
jari |
18 |
import org.tigr.microarray.mev.r.SwingWorker; |
2 |
26 Feb 07 |
jari |
19 |
|
2 |
26 Feb 07 |
jari |
20 |
/** |
2 |
26 Feb 07 |
jari |
* @author iVu |
2 |
26 Feb 07 |
jari |
22 |
*/ |
2 |
26 Feb 07 |
jari |
23 |
public class BridgeWorker extends SwingWorker { |
2 |
26 Feb 07 |
jari |
24 |
private Rconnection rc; |
2 |
26 Feb 07 |
jari |
25 |
|
2 |
26 Feb 07 |
jari |
26 |
private String sClear; |
2 |
26 Feb 07 |
jari |
27 |
private String sLibrary; |
2 |
26 Feb 07 |
jari |
28 |
private String sData; |
2 |
26 Feb 07 |
jari |
29 |
private String sReform; |
2 |
26 Feb 07 |
jari |
30 |
private String sMcmc; |
2 |
26 Feb 07 |
jari |
31 |
private String sAvg1; |
2 |
26 Feb 07 |
jari |
32 |
private String sAvg2; |
2 |
26 Feb 07 |
jari |
33 |
private String sPost; |
2 |
26 Feb 07 |
jari |
34 |
|
2 |
26 Feb 07 |
jari |
35 |
private double threshold; |
2 |
26 Feb 07 |
jari |
36 |
|
2 |
26 Feb 07 |
jari |
37 |
private boolean ok; |
2 |
26 Feb 07 |
jari |
38 |
private boolean done; |
2 |
26 Feb 07 |
jari |
39 |
|
2 |
26 Feb 07 |
jari |
40 |
private RProgress progress; |
2 |
26 Feb 07 |
jari |
41 |
|
2 |
26 Feb 07 |
jari |
42 |
private BridgeResult result; |
2 |
26 Feb 07 |
jari |
43 |
|
2 |
26 Feb 07 |
jari |
44 |
|
2 |
26 Feb 07 |
jari |
45 |
public BridgeWorker( Rconnection rcP, String clearP, String libraryP, |
2 |
26 Feb 07 |
jari |
46 |
String dataP, String reformP, String mcmcP, String avg1P, |
2 |
26 Feb 07 |
jari |
47 |
String avg2P, String postP, double thresholdP, RProgress progressP ) { |
2 |
26 Feb 07 |
jari |
48 |
this.rc = rcP; |
2 |
26 Feb 07 |
jari |
49 |
this.sClear = clearP; |
2 |
26 Feb 07 |
jari |
50 |
this.sLibrary = libraryP; |
2 |
26 Feb 07 |
jari |
51 |
this.sData = dataP; |
2 |
26 Feb 07 |
jari |
52 |
this.sReform = reformP; |
2 |
26 Feb 07 |
jari |
53 |
this.sMcmc = mcmcP; |
2 |
26 Feb 07 |
jari |
54 |
this.sAvg1 = avg1P; |
2 |
26 Feb 07 |
jari |
55 |
this.sAvg2 = avg2P; |
2 |
26 Feb 07 |
jari |
56 |
this.sPost = postP; |
2 |
26 Feb 07 |
jari |
57 |
this.threshold = thresholdP; |
2 |
26 Feb 07 |
jari |
58 |
this.progress = progressP; |
2 |
26 Feb 07 |
jari |
59 |
}//constructor() |
2 |
26 Feb 07 |
jari |
60 |
|
2 |
26 Feb 07 |
jari |
61 |
|
2 |
26 Feb 07 |
jari |
62 |
/** |
2 |
26 Feb 07 |
jari |
* Write the String s to File f |
2 |
26 Feb 07 |
jari |
64 |
* |
2 |
26 Feb 07 |
jari |
* @param f |
2 |
26 Feb 07 |
jari |
* @param s |
2 |
26 Feb 07 |
jari |
67 |
*/ |
2 |
26 Feb 07 |
jari |
68 |
private void writeFile(File f, String s) { |
2 |
26 Feb 07 |
jari |
69 |
try { |
2 |
26 Feb 07 |
jari |
70 |
FileWriter fw = new FileWriter(f); |
2 |
26 Feb 07 |
jari |
71 |
fw.write(s); |
2 |
26 Feb 07 |
jari |
72 |
fw.flush(); |
2 |
26 Feb 07 |
jari |
73 |
fw.close(); |
2 |
26 Feb 07 |
jari |
74 |
} catch( IOException e ) { |
2 |
26 Feb 07 |
jari |
75 |
e.printStackTrace(); |
2 |
26 Feb 07 |
jari |
76 |
} |
2 |
26 Feb 07 |
jari |
77 |
}//writeFile() |
2 |
26 Feb 07 |
jari |
78 |
|
2 |
26 Feb 07 |
jari |
79 |
|
2 |
26 Feb 07 |
jari |
80 |
public Object construct() { |
2 |
26 Feb 07 |
jari |
81 |
this.ok = false; |
2 |
26 Feb 07 |
jari |
82 |
this.done = false; |
2 |
26 Feb 07 |
jari |
83 |
|
2 |
26 Feb 07 |
jari |
//record the start time |
2 |
26 Feb 07 |
jari |
85 |
Calendar startCal = new GregorianCalendar(); |
2 |
26 Feb 07 |
jari |
86 |
int startHour = startCal.get( Calendar.HOUR_OF_DAY ); |
2 |
26 Feb 07 |
jari |
87 |
int startMin = startCal.get( Calendar.MINUTE ); |
2 |
26 Feb 07 |
jari |
88 |
String startTime = startHour + ":" + startMin; |
2 |
26 Feb 07 |
jari |
89 |
System.out.println( "Bridge started at " + startTime ); |
2 |
26 Feb 07 |
jari |
90 |
|
2 |
26 Feb 07 |
jari |
91 |
try { |
2 |
26 Feb 07 |
jari |
//should clear R |
2 |
26 Feb 07 |
jari |
93 |
this.rc.voidEval( this.sClear ); |
2 |
26 Feb 07 |
jari |
94 |
|
2 |
26 Feb 07 |
jari |
//load rama |
2 |
26 Feb 07 |
jari |
96 |
this.rc.voidEval( this.sLibrary ); |
2 |
26 Feb 07 |
jari |
97 |
|
2 |
26 Feb 07 |
jari |
//load data as vector |
2 |
26 Feb 07 |
jari |
99 |
this.rc.voidEval( this.sData ); |
2 |
26 Feb 07 |
jari |
100 |
|
2 |
26 Feb 07 |
jari |
//reform vector data into matrix |
2 |
26 Feb 07 |
jari |
102 |
this.rc.voidEval( this.sReform ); |
2 |
26 Feb 07 |
jari |
103 |
|
2 |
26 Feb 07 |
jari |
//for testing |
2 |
26 Feb 07 |
jari |
105 |
double[][] matrix = this.rc.eval( "bData" ).asDoubleMatrix(); |
2 |
26 Feb 07 |
jari |
106 |
StringBuffer sb = new StringBuffer(); |
2 |
26 Feb 07 |
jari |
107 |
for( int i = 0; i < matrix.length; i ++ ) { |
2 |
26 Feb 07 |
jari |
108 |
if( i > 0 ) { |
2 |
26 Feb 07 |
jari |
109 |
sb.append( "\r\n" ); |
2 |
26 Feb 07 |
jari |
110 |
} |
2 |
26 Feb 07 |
jari |
111 |
|
2 |
26 Feb 07 |
jari |
112 |
for( int j = 0; j < matrix[ i ].length; j ++ ) { |
2 |
26 Feb 07 |
jari |
//System.out.println(i+":"+j + "="+matrix[ i ][j ]); |
2 |
26 Feb 07 |
jari |
114 |
if( j > 0 ) { |
2 |
26 Feb 07 |
jari |
115 |
sb.append( "\t" ); |
2 |
26 Feb 07 |
jari |
116 |
} |
2 |
26 Feb 07 |
jari |
117 |
sb.append( matrix[ i ][ j ] ); |
2 |
26 Feb 07 |
jari |
118 |
} |
2 |
26 Feb 07 |
jari |
119 |
} |
2 |
26 Feb 07 |
jari |
//File f = new File("/Users/iVu/Documents/Dev/MeV/out.txt"); |
2 |
26 Feb 07 |
jari |
//this.writeFile( f, sb.toString() ); |
2 |
26 Feb 07 |
jari |
122 |
|
2 |
26 Feb 07 |
jari |
123 |
|
2 |
26 Feb 07 |
jari |
//call fit.model() |
2 |
26 Feb 07 |
jari |
125 |
this.rc.voidEval( this.sMcmc ); |
2 |
26 Feb 07 |
jari |
126 |
|
2 |
26 Feb 07 |
jari |
//record the end time |
2 |
26 Feb 07 |
jari |
128 |
Calendar endCal = new GregorianCalendar(); |
2 |
26 Feb 07 |
jari |
129 |
int endHour = endCal.get( Calendar.HOUR_OF_DAY ); |
2 |
26 Feb 07 |
jari |
130 |
int endMin = endCal.get( Calendar.MINUTE ); |
2 |
26 Feb 07 |
jari |
131 |
String endTime = endHour + ":" + endMin; |
2 |
26 Feb 07 |
jari |
132 |
System.out.println( "Bridge ended at " + endTime ); |
2 |
26 Feb 07 |
jari |
133 |
|
2 |
26 Feb 07 |
jari |
//avg gammas first |
2 |
26 Feb 07 |
jari |
135 |
this.rc.voidEval( this.sAvg1 ); |
2 |
26 Feb 07 |
jari |
136 |
this.rc.voidEval( this.sAvg2 ); |
2 |
26 Feb 07 |
jari |
137 |
|
2 |
26 Feb 07 |
jari |
//retrieve gammas |
2 |
26 Feb 07 |
jari |
139 |
double[] gamma1 = rc.eval( "gamma1" ).asDoubleArray(); |
2 |
26 Feb 07 |
jari |
140 |
double[] gamma2 = rc.eval( "gamma2" ).asDoubleArray(); |
2 |
26 Feb 07 |
jari |
141 |
|
2 |
26 Feb 07 |
jari |
142 |
double[] postP = rc.eval( this.sPost ).asDoubleArray(); |
2 |
26 Feb 07 |
jari |
143 |
|
2 |
26 Feb 07 |
jari |
144 |
this.result = new BridgeResult( gamma1, gamma2, postP, this.threshold ); |
2 |
26 Feb 07 |
jari |
145 |
|
2 |
26 Feb 07 |
jari |
//seems to have worked |
2 |
26 Feb 07 |
jari |
147 |
this.ok = true; |
2 |
26 Feb 07 |
jari |
148 |
this.done = true; |
2 |
26 Feb 07 |
jari |
149 |
} catch ( RSrvException e ) { |
2 |
26 Feb 07 |
jari |
150 |
e.printStackTrace(); |
2 |
26 Feb 07 |
jari |
//this.rama.error( e.getMessage() ); |
2 |
26 Feb 07 |
jari |
152 |
this.ok = false; |
2 |
26 Feb 07 |
jari |
153 |
this.done = false; |
2 |
26 Feb 07 |
jari |
154 |
this.error( e.getMessage() ); |
2 |
26 Feb 07 |
jari |
155 |
} finally { |
2 |
26 Feb 07 |
jari |
156 |
this.progress.kill(); |
2 |
26 Feb 07 |
jari |
157 |
} |
2 |
26 Feb 07 |
jari |
158 |
|
2 |
26 Feb 07 |
jari |
//System.out.println( "Done with construct()" ); |
2 |
26 Feb 07 |
jari |
160 |
return this.result; |
2 |
26 Feb 07 |
jari |
161 |
}//construct() |
2 |
26 Feb 07 |
jari |
162 |
|
2 |
26 Feb 07 |
jari |
163 |
|
2 |
26 Feb 07 |
jari |
164 |
public void finished() { |
2 |
26 Feb 07 |
jari |
165 |
this.ok = true; |
2 |
26 Feb 07 |
jari |
166 |
this.done = true; |
2 |
26 Feb 07 |
jari |
//System.out.println( "Finished" ); |
2 |
26 Feb 07 |
jari |
168 |
} |
2 |
26 Feb 07 |
jari |
169 |
|
2 |
26 Feb 07 |
jari |
170 |
|
2 |
26 Feb 07 |
jari |
171 |
/** |
2 |
26 Feb 07 |
jari |
* Displays an error dialog |
2 |
26 Feb 07 |
jari |
* @param message |
2 |
26 Feb 07 |
jari |
174 |
*/ |
2 |
26 Feb 07 |
jari |
175 |
public void error( String message ) { |
2 |
26 Feb 07 |
jari |
176 |
JOptionPane.showMessageDialog( new JFrame(), |
2 |
26 Feb 07 |
jari |
177 |
message, "Input Error", JOptionPane.ERROR_MESSAGE ); |
2 |
26 Feb 07 |
jari |
178 |
}//end error() |
2 |
26 Feb 07 |
jari |
179 |
|
2 |
26 Feb 07 |
jari |
180 |
|
2 |
26 Feb 07 |
jari |
181 |
|
2 |
26 Feb 07 |
jari |
182 |
public boolean isOk() { |
2 |
26 Feb 07 |
jari |
183 |
return this.ok; |
2 |
26 Feb 07 |
jari |
184 |
} |
2 |
26 Feb 07 |
jari |
185 |
public boolean isDone() { |
2 |
26 Feb 07 |
jari |
186 |
return this.done; |
2 |
26 Feb 07 |
jari |
187 |
} |
2 |
26 Feb 07 |
jari |
188 |
public BridgeResult getResult() { |
2 |
26 Feb 07 |
jari |
189 |
return this.result; |
2 |
26 Feb 07 |
jari |
190 |
} |
2 |
26 Feb 07 |
jari |
191 |
}//end class |