2 |
26 Feb 07 |
jari |
1 |
/* |
2 |
26 Feb 07 |
jari |
Copyright @ 1999-2003, The Institute for Genomic Research (TIGR). |
2 |
26 Feb 07 |
jari |
All rights reserved. |
2 |
26 Feb 07 |
jari |
4 |
*/ |
2 |
26 Feb 07 |
jari |
5 |
/* |
2 |
26 Feb 07 |
jari |
* $RCSfile: EASEGUI.java,v $ |
2 |
26 Feb 07 |
jari |
* $Revision: 1.8 $ |
2 |
26 Feb 07 |
jari |
* $Date: 2006/02/23 20:59:50 $ |
2 |
26 Feb 07 |
jari |
* $Author: caliente $ |
2 |
26 Feb 07 |
jari |
* $State: Exp $ |
2 |
26 Feb 07 |
jari |
11 |
*/ |
2 |
26 Feb 07 |
jari |
12 |
/* |
2 |
26 Feb 07 |
jari |
* EASEGUI.java |
2 |
26 Feb 07 |
jari |
14 |
* |
2 |
26 Feb 07 |
jari |
* Created on August 22, 2003, 1:28 PM |
2 |
26 Feb 07 |
jari |
16 |
*/ |
2 |
26 Feb 07 |
jari |
17 |
|
2 |
26 Feb 07 |
jari |
18 |
package org.tigr.microarray.mev.cluster.gui.impl.ease; |
2 |
26 Feb 07 |
jari |
19 |
|
2 |
26 Feb 07 |
jari |
20 |
import java.io.BufferedReader; |
2 |
26 Feb 07 |
jari |
21 |
import java.io.File; |
2 |
26 Feb 07 |
jari |
22 |
import java.io.FileReader; |
2 |
26 Feb 07 |
jari |
23 |
import java.io.IOException; |
2 |
26 Feb 07 |
jari |
24 |
import java.util.Vector; |
2 |
26 Feb 07 |
jari |
25 |
|
2 |
26 Feb 07 |
jari |
26 |
import javax.swing.JOptionPane; |
2 |
26 Feb 07 |
jari |
27 |
import javax.swing.tree.DefaultMutableTreeNode; |
2 |
26 Feb 07 |
jari |
28 |
|
2 |
26 Feb 07 |
jari |
29 |
import org.tigr.microarray.mev.cluster.algorithm.Algorithm; |
2 |
26 Feb 07 |
jari |
30 |
import org.tigr.microarray.mev.cluster.algorithm.AlgorithmData; |
2 |
26 Feb 07 |
jari |
31 |
import org.tigr.microarray.mev.cluster.algorithm.AlgorithmEvent; |
2 |
26 Feb 07 |
jari |
32 |
import org.tigr.microarray.mev.cluster.algorithm.AlgorithmException; |
2 |
26 Feb 07 |
jari |
33 |
import org.tigr.microarray.mev.cluster.algorithm.AlgorithmListener; |
2 |
26 Feb 07 |
jari |
34 |
import org.tigr.microarray.mev.cluster.algorithm.AlgorithmParameters; |
2 |
26 Feb 07 |
jari |
35 |
import org.tigr.microarray.mev.cluster.clusterUtil.Cluster; |
2 |
26 Feb 07 |
jari |
36 |
import org.tigr.microarray.mev.cluster.clusterUtil.ClusterRepository; |
2 |
26 Feb 07 |
jari |
37 |
import org.tigr.microarray.mev.cluster.gui.Experiment; |
2 |
26 Feb 07 |
jari |
38 |
import org.tigr.microarray.mev.cluster.gui.IClusterGUI; |
2 |
26 Feb 07 |
jari |
39 |
import org.tigr.microarray.mev.cluster.gui.IFramework; |
2 |
26 Feb 07 |
jari |
40 |
import org.tigr.microarray.mev.cluster.gui.IViewer; |
2 |
26 Feb 07 |
jari |
41 |
import org.tigr.microarray.mev.cluster.gui.LeafInfo; |
2 |
26 Feb 07 |
jari |
42 |
import org.tigr.microarray.mev.cluster.gui.helpers.CentroidUserObject; |
2 |
26 Feb 07 |
jari |
43 |
import org.tigr.microarray.mev.cluster.gui.impl.dialogs.DialogListener; |
2 |
26 Feb 07 |
jari |
44 |
import org.tigr.microarray.mev.cluster.gui.impl.dialogs.Logger; |
2 |
26 Feb 07 |
jari |
45 |
import org.tigr.microarray.mev.cluster.gui.impl.dialogs.Progress; |
2 |
26 Feb 07 |
jari |
46 |
import org.tigr.microarray.mev.cluster.gui.impl.ease.gotree.GOTreeViewer; |
2 |
26 Feb 07 |
jari |
47 |
import org.tigr.microarray.mev.script.scriptGUI.IScriptGUI; |
2 |
26 Feb 07 |
jari |
48 |
|
2 |
26 Feb 07 |
jari |
49 |
|
2 |
26 Feb 07 |
jari |
/** The <CODE>EASEGUI</CODE> class contains code to gather parameters |
2 |
26 Feb 07 |
jari |
* for EASE annotation analysis, to run the analysis, and to display |
2 |
26 Feb 07 |
jari |
* various results from the analysis. |
2 |
26 Feb 07 |
jari |
53 |
*/ |
2 |
26 Feb 07 |
jari |
54 |
public class EASEGUI implements IClusterGUI, IScriptGUI { |
2 |
26 Feb 07 |
jari |
55 |
|
2 |
26 Feb 07 |
jari |
/** The algorithm class for execution of EASE. |
2 |
26 Feb 07 |
jari |
57 |
*/ |
2 |
26 Feb 07 |
jari |
58 |
private Algorithm algorithm; |
2 |
26 Feb 07 |
jari |
/** The <CODE>AlgorithmData<\CODE> object to encapsulate parameters, input data, and results |
2 |
26 Feb 07 |
jari |
60 |
*/ |
2 |
26 Feb 07 |
jari |
61 |
private AlgorithmData algorithmData; |
2 |
26 Feb 07 |
jari |
/** The <CODE>Experiment</CODE> data wrapper class. |
2 |
26 Feb 07 |
jari |
63 |
*/ |
2 |
26 Feb 07 |
jari |
64 |
private Experiment experiment; |
2 |
26 Feb 07 |
jari |
/** The input <CODE>Cluster</CODE> object for cluster analysis |
2 |
26 Feb 07 |
jari |
66 |
*/ |
2 |
26 Feb 07 |
jari |
67 |
private Cluster cluster; |
2 |
26 Feb 07 |
jari |
/** Encapsulates the indices of clusters created by the analysis. |
2 |
26 Feb 07 |
jari |
69 |
*/ |
2 |
26 Feb 07 |
jari |
70 |
private int [][] clusters; |
2 |
26 Feb 07 |
jari |
/** Names of the theme categories found in the gene list. |
2 |
26 Feb 07 |
jari |
72 |
*/ |
2 |
26 Feb 07 |
jari |
73 |
private String [] categoryNames; |
2 |
26 Feb 07 |
jari |
/** The main result matrix for table display. |
2 |
26 Feb 07 |
jari |
75 |
*/ |
2 |
26 Feb 07 |
jari |
76 |
private String [][] resultMatrix; |
2 |
26 Feb 07 |
jari |
/** Indicates if accession numbers were appended. |
2 |
26 Feb 07 |
jari |
78 |
*/ |
2 |
26 Feb 07 |
jari |
79 |
private boolean haveAccessionNumbers; |
2 |
26 Feb 07 |
jari |
/** Indicates if the mode is cluster analysis (or if not then a survey) |
2 |
26 Feb 07 |
jari |
81 |
*/ |
2 |
26 Feb 07 |
jari |
82 |
private boolean isClusterAnalysis; |
2 |
26 Feb 07 |
jari |
/** Verbose progress dialog |
2 |
26 Feb 07 |
jari |
84 |
*/ |
2 |
26 Feb 07 |
jari |
85 |
private Logger logger; |
2 |
26 Feb 07 |
jari |
/** Optional progress bar. |
2 |
26 Feb 07 |
jari |
87 |
*/ |
2 |
26 Feb 07 |
jari |
88 |
private Progress progress; |
2 |
26 Feb 07 |
jari |
/** Algorithm event listener. |
2 |
26 Feb 07 |
jari |
90 |
*/ |
2 |
26 Feb 07 |
jari |
91 |
private Listener listener; |
2 |
26 Feb 07 |
jari |
92 |
|
2 |
26 Feb 07 |
jari |
93 |
boolean stop = false; |
2 |
26 Feb 07 |
jari |
/** Annotation type to use as a key (annotation field name) |
2 |
26 Feb 07 |
jari |
95 |
*/ |
2 |
26 Feb 07 |
jari |
96 |
private String annotationKeyType; |
2 |
26 Feb 07 |
jari |
/** Indicates path of EASE base file system for this analysis |
2 |
26 Feb 07 |
jari |
98 |
*/ |
2 |
26 Feb 07 |
jari |
99 |
private String baseFileSystem; |
2 |
26 Feb 07 |
jari |
/** Indicates if the algorithm run is via a script execution |
2 |
26 Feb 07 |
jari |
101 |
*/ |
2 |
26 Feb 07 |
jari |
102 |
boolean isScripting = false; |
2 |
26 Feb 07 |
jari |
103 |
|
2 |
26 Feb 07 |
jari |
/** Creates a new instance of EASEGUI */ |
2 |
26 Feb 07 |
jari |
105 |
public EASEGUI() { |
2 |
26 Feb 07 |
jari |
106 |
} |
2 |
26 Feb 07 |
jari |
107 |
|
2 |
26 Feb 07 |
jari |
/** Accumulates parameters for execution of the EASE analysis |
2 |
26 Feb 07 |
jari |
* calls algorithm class and coordinates result viewer |
2 |
26 Feb 07 |
jari |
* creation. |
2 |
26 Feb 07 |
jari |
* @param framework The framework object |
2 |
26 Feb 07 |
jari |
* @throws AlgorithmException |
2 |
26 Feb 07 |
jari |
* @return |
2 |
26 Feb 07 |
jari |
114 |
*/ |
2 |
26 Feb 07 |
jari |
115 |
public DefaultMutableTreeNode execute(IFramework framework) throws AlgorithmException { |
2 |
26 Feb 07 |
jari |
116 |
|
2 |
26 Feb 07 |
jari |
117 |
algorithmData = new AlgorithmData(); |
2 |
26 Feb 07 |
jari |
118 |
|
2 |
26 Feb 07 |
jari |
119 |
ClusterRepository repository = framework.getClusterRepository(Cluster.GENE_CLUSTER); |
2 |
26 Feb 07 |
jari |
120 |
|
2 |
26 Feb 07 |
jari |
121 |
EASEInitDialog dialog = new EASEInitDialog(framework.getFrame(), repository, framework.getData().getFieldNames()); |
2 |
26 Feb 07 |
jari |
122 |
|
2 |
26 Feb 07 |
jari |
123 |
if(dialog.showModal() != JOptionPane.OK_OPTION) |
2 |
26 Feb 07 |
jari |
124 |
return null; |
2 |
26 Feb 07 |
jari |
125 |
|
2 |
26 Feb 07 |
jari |
126 |
listener = new Listener(); |
2 |
26 Feb 07 |
jari |
127 |
logger = new Logger(framework.getFrame(), "EASE Analysis", listener); |
2 |
26 Feb 07 |
jari |
128 |
logger.show(); |
2 |
26 Feb 07 |
jari |
129 |
progress = new Progress(framework.getFrame(), "Probability Analysis Resampling Progress", listener); |
2 |
26 Feb 07 |
jari |
130 |
|
2 |
26 Feb 07 |
jari |
131 |
baseFileSystem = dialog.getBaseFileLocation(); |
2 |
26 Feb 07 |
jari |
132 |
algorithmData.addParam("base-file-system", baseFileSystem); |
2 |
26 Feb 07 |
jari |
133 |
isClusterAnalysis = dialog.isClusterModeSelected(); |
2 |
26 Feb 07 |
jari |
134 |
String converterFileName = dialog.getConverterFileName(); |
2 |
26 Feb 07 |
jari |
135 |
annotationKeyType = dialog.getAnnotationKeyType(); |
2 |
26 Feb 07 |
jari |
136 |
String [] annotationFileList = dialog.getAnnToGOFileList(); |
2 |
26 Feb 07 |
jari |
137 |
int minClusterSize = dialog.getMinClusterSize(); |
2 |
26 Feb 07 |
jari |
138 |
int [] indices; |
2 |
26 Feb 07 |
jari |
139 |
boolean isPvalueCorrectionSelected; |
2 |
26 Feb 07 |
jari |
140 |
experiment = framework.getData().getExperiment(); |
2 |
26 Feb 07 |
jari |
141 |
|
2 |
26 Feb 07 |
jari |
142 |
if(isClusterAnalysis){ |
2 |
26 Feb 07 |
jari |
143 |
cluster = dialog.getSelectedCluster(); |
2 |
26 Feb 07 |
jari |
144 |
experiment = cluster.getExperiment(); //asign proper experiment object |
2 |
26 Feb 07 |
jari |
145 |
indices = cluster.getIndices(); //**These map to IDATA** |
2 |
26 Feb 07 |
jari |
146 |
algorithmData.addParam("report-ease-score", String.valueOf(dialog.isEaseScoreSelected())); |
2 |
26 Feb 07 |
jari |
147 |
isPvalueCorrectionSelected = dialog.isCorrectPvaluesSelected(); |
2 |
26 Feb 07 |
jari |
148 |
algorithmData.addParam("p-value-corrections", String.valueOf(isPvalueCorrectionSelected)); |
2 |
26 Feb 07 |
jari |
149 |
if(isPvalueCorrectionSelected){ |
2 |
26 Feb 07 |
jari |
150 |
algorithmData.addParam("bonferroni-correction", String.valueOf(dialog.isBonferroniSelected())); |
2 |
26 Feb 07 |
jari |
151 |
algorithmData.addParam("bonferroni-step-down-correction", String.valueOf(dialog.isStepDownBonferroniSelected())); |
2 |
26 Feb 07 |
jari |
152 |
algorithmData.addParam("sidak-correction", String.valueOf(dialog.isSidakSelected())); |
2 |
26 Feb 07 |
jari |
153 |
} |
2 |
26 Feb 07 |
jari |
154 |
|
2 |
26 Feb 07 |
jari |
155 |
algorithmData.addParam("run-permutation-analysis", String.valueOf(dialog.isPermutationAnalysisSelected())); |
2 |
26 Feb 07 |
jari |
156 |
if(dialog.isPermutationAnalysisSelected()) |
2 |
26 Feb 07 |
jari |
157 |
algorithmData.addParam("permutation-count", String.valueOf(dialog.getPermutationCount())); |
2 |
26 Feb 07 |
jari |
158 |
|
2 |
26 Feb 07 |
jari |
159 |
logger.append("Extracting Annotation Key Lists\n"); |
2 |
26 Feb 07 |
jari |
160 |
String [] clusterKeys = framework.getData().getAnnotationList(annotationKeyType, indices); |
2 |
26 Feb 07 |
jari |
161 |
algorithmData.addStringArray("sample-list", clusterKeys); |
2 |
26 Feb 07 |
jari |
162 |
algorithmData.addIntArray("sample-indices", cluster.getExperimentIndices()); //drop in experiment indices |
2 |
26 Feb 07 |
jari |
163 |
} |
2 |
26 Feb 07 |
jari |
164 |
|
2 |
26 Feb 07 |
jari |
//Use file or IData for population, only permit file use for cluster analysis |
2 |
26 Feb 07 |
jari |
166 |
String [] populationKeys; |
2 |
26 Feb 07 |
jari |
167 |
if(isClusterAnalysis && dialog.isPopFileModeSelected()) { |
2 |
26 Feb 07 |
jari |
168 |
try { |
2 |
26 Feb 07 |
jari |
169 |
populationKeys = getPopulationKeysFromFile(dialog.getPopulationFileName()); |
2 |
26 Feb 07 |
jari |
170 |
algorithmData.addParam("population-file-name", dialog.getPopulationFileName()); |
2 |
26 Feb 07 |
jari |
171 |
if(populationKeys == null) { |
2 |
26 Feb 07 |
jari |
172 |
return null; |
2 |
26 Feb 07 |
jari |
173 |
} |
2 |
26 Feb 07 |
jari |
174 |
} catch (IOException ioe) { |
2 |
26 Feb 07 |
jari |
//Bad file format |
2 |
26 Feb 07 |
jari |
176 |
JOptionPane.showMessageDialog(framework.getFrame(), "Error loading population file.", "Population File Load Error", JOptionPane.ERROR_MESSAGE); |
2 |
26 Feb 07 |
jari |
177 |
return null; |
2 |
26 Feb 07 |
jari |
178 |
} |
2 |
26 Feb 07 |
jari |
179 |
} else { |
2 |
26 Feb 07 |
jari |
//populationKeys = framework.getData().getAnnotationList(annotationKeyType, experiment.getRowMappingArrayCopy()); |
2 |
26 Feb 07 |
jari |
181 |
populationKeys = framework.getData().getAnnotationList(annotationKeyType, framework.getData().getExperiment().getRowMappingArrayCopy()); |
2 |
26 Feb 07 |
jari |
182 |
} |
2 |
26 Feb 07 |
jari |
183 |
|
2 |
26 Feb 07 |
jari |
184 |
algorithmData.addParam("perform-cluster-analysis", String.valueOf(isClusterAnalysis)); |
2 |
26 Feb 07 |
jari |
185 |
algorithmData.addStringArray("population-list", populationKeys); |
2 |
26 Feb 07 |
jari |
186 |
if(converterFileName != null) |
2 |
26 Feb 07 |
jari |
187 |
algorithmData.addParam("converter-file-name", converterFileName); |
2 |
26 Feb 07 |
jari |
188 |
algorithmData.addStringArray("annotation-file-list", annotationFileList); |
2 |
26 Feb 07 |
jari |
189 |
algorithmData.addMatrix("expression", experiment.getMatrix()); |
2 |
26 Feb 07 |
jari |
190 |
|
2 |
26 Feb 07 |
jari |
//Trim options |
2 |
26 Feb 07 |
jari |
192 |
String [] trimOptions = dialog.getTrimOptions(); |
2 |
26 Feb 07 |
jari |
193 |
algorithmData.addParam("trim-option", trimOptions[0]); |
2 |
26 Feb 07 |
jari |
194 |
algorithmData.addParam("trim-value", trimOptions[1]); |
2 |
26 Feb 07 |
jari |
195 |
|
2 |
26 Feb 07 |
jari |
196 |
algorithm = framework.getAlgorithmFactory().getAlgorithm("EASE"); |
2 |
26 Feb 07 |
jari |
197 |
algorithm.addAlgorithmListener(listener); |
2 |
26 Feb 07 |
jari |
198 |
algorithm.execute(algorithmData); |
2 |
26 Feb 07 |
jari |
199 |
|
2 |
26 Feb 07 |
jari |
200 |
if(stop) |
2 |
26 Feb 07 |
jari |
201 |
return null; |
2 |
26 Feb 07 |
jari |
202 |
|
2 |
26 Feb 07 |
jari |
203 |
progress.dispose(); |
2 |
26 Feb 07 |
jari |
204 |
categoryNames = algorithmData.getStringArray("category-names"); |
2 |
26 Feb 07 |
jari |
205 |
|
2 |
26 Feb 07 |
jari |
206 |
clusters = algorithmData.getIntMatrix("cluster-matrix"); |
2 |
26 Feb 07 |
jari |
207 |
resultMatrix = (String [][])algorithmData.getObjectMatrix("result-matrix"); |
2 |
26 Feb 07 |
jari |
208 |
haveAccessionNumbers = algorithmData.getParams().getBoolean("have-accession-numbers", false); |
2 |
26 Feb 07 |
jari |
209 |
|
2 |
26 Feb 07 |
jari |
210 |
DefaultMutableTreeNode node; |
2 |
26 Feb 07 |
jari |
211 |
logger.append("Creating Result Viewers\n"); |
2 |
26 Feb 07 |
jari |
212 |
|
2 |
26 Feb 07 |
jari |
213 |
if(resultMatrix == null) |
2 |
26 Feb 07 |
jari |
214 |
node = createEmptyResultNode(algorithmData); |
2 |
26 Feb 07 |
jari |
215 |
else |
2 |
26 Feb 07 |
jari |
216 |
node = createResultNode(algorithmData, clusters); |
2 |
26 Feb 07 |
jari |
217 |
|
2 |
26 Feb 07 |
jari |
218 |
if (algorithm != null) { |
2 |
26 Feb 07 |
jari |
219 |
algorithm.removeAlgorithmListener(listener); |
2 |
26 Feb 07 |
jari |
220 |
} |
2 |
26 Feb 07 |
jari |
221 |
if (logger != null) logger.dispose(); |
2 |
26 Feb 07 |
jari |
222 |
|
2 |
26 Feb 07 |
jari |
223 |
return node; |
2 |
26 Feb 07 |
jari |
224 |
} |
2 |
26 Feb 07 |
jari |
225 |
|
2 |
26 Feb 07 |
jari |
226 |
|
2 |
26 Feb 07 |
jari |
227 |
|
2 |
26 Feb 07 |
jari |
228 |
public AlgorithmData getScriptParameters(IFramework framework) { |
2 |
26 Feb 07 |
jari |
229 |
algorithmData = new AlgorithmData(); |
2 |
26 Feb 07 |
jari |
230 |
|
2 |
26 Feb 07 |
jari |
// ClusterRepository repository = framework.getClusterRepository(Cluster.GENE_CLUSTER); |
2 |
26 Feb 07 |
jari |
232 |
|
2 |
26 Feb 07 |
jari |
233 |
EASEInitDialog dialog = new EASEInitDialog(framework.getFrame(), framework.getData().getFieldNames()); |
2 |
26 Feb 07 |
jari |
234 |
|
2 |
26 Feb 07 |
jari |
235 |
if(dialog.showModal() != JOptionPane.OK_OPTION) |
2 |
26 Feb 07 |
jari |
236 |
return null; |
2 |
26 Feb 07 |
jari |
237 |
|
2 |
26 Feb 07 |
jari |
238 |
baseFileSystem = dialog.getBaseFileLocation(); |
2 |
26 Feb 07 |
jari |
239 |
algorithmData.addParam("base-file-system", baseFileSystem); |
2 |
26 Feb 07 |
jari |
240 |
isClusterAnalysis = dialog.isClusterModeSelected(); |
2 |
26 Feb 07 |
jari |
241 |
String converterFileName = dialog.getConverterFileName(); |
2 |
26 Feb 07 |
jari |
242 |
annotationKeyType = dialog.getAnnotationKeyType(); |
2 |
26 Feb 07 |
jari |
243 |
algorithmData.addParam("annotation-key-type", annotationKeyType); |
2 |
26 Feb 07 |
jari |
244 |
String [] annotationFileList = dialog.getAnnToGOFileList(); |
2 |
26 Feb 07 |
jari |
245 |
int minClusterSize = dialog.getMinClusterSize(); |
2 |
26 Feb 07 |
jari |
246 |
int [] indices; |
2 |
26 Feb 07 |
jari |
247 |
boolean isPvalueCorrectionSelected; |
2 |
26 Feb 07 |
jari |
248 |
experiment = framework.getData().getExperiment(); |
2 |
26 Feb 07 |
jari |
249 |
|
2 |
26 Feb 07 |
jari |
250 |
if(isClusterAnalysis){ |
2 |
26 Feb 07 |
jari |
251 |
algorithmData.addParam("report-ease-score", String.valueOf(dialog.isEaseScoreSelected())); |
2 |
26 Feb 07 |
jari |
252 |
isPvalueCorrectionSelected = dialog.isCorrectPvaluesSelected(); |
2 |
26 Feb 07 |
jari |
253 |
algorithmData.addParam("p-value-corrections", String.valueOf(isPvalueCorrectionSelected)); |
2 |
26 Feb 07 |
jari |
254 |
if(isPvalueCorrectionSelected){ |
2 |
26 Feb 07 |
jari |
255 |
algorithmData.addParam("bonferroni-correction", String.valueOf(dialog.isBonferroniSelected())); |
2 |
26 Feb 07 |
jari |
256 |
algorithmData.addParam("bonferroni-step-down-correction", String.valueOf(dialog.isStepDownBonferroniSelected())); |
2 |
26 Feb 07 |
jari |
257 |
algorithmData.addParam("sidak-correction", String.valueOf(dialog.isSidakSelected())); |
2 |
26 Feb 07 |
jari |
258 |
} |
2 |
26 Feb 07 |
jari |
259 |
|
2 |
26 Feb 07 |
jari |
260 |
algorithmData.addParam("run-permutation-analysis", String.valueOf(dialog.isPermutationAnalysisSelected())); |
2 |
26 Feb 07 |
jari |
261 |
if(dialog.isPermutationAnalysisSelected()) |
2 |
26 Feb 07 |
jari |
262 |
algorithmData.addParam("permutation-count", String.valueOf(dialog.getPermutationCount())); |
2 |
26 Feb 07 |
jari |
263 |
} |
2 |
26 Feb 07 |
jari |
264 |
|
2 |
26 Feb 07 |
jari |
//Use file or IData for population, only permit file use for cluster analysis |
2 |
26 Feb 07 |
jari |
266 |
String [] populationKeys; |
2 |
26 Feb 07 |
jari |
267 |
if(isClusterAnalysis && dialog.isPopFileModeSelected()) { |
2 |
26 Feb 07 |
jari |
// try { |
2 |
26 Feb 07 |
jari |
// populationKeys = getPopulationKeysFromFile(dialog.getPopulationFileName()); |
2 |
26 Feb 07 |
jari |
270 |
algorithmData.addParam("population-file-name", dialog.getPopulationFileName()); |
2 |
26 Feb 07 |
jari |
// if(populationKeys == null) { |
2 |
26 Feb 07 |
jari |
// return null; |
2 |
26 Feb 07 |
jari |
273 |
// } |
2 |
26 Feb 07 |
jari |
// } catch (IOException ioe) { |
2 |
26 Feb 07 |
jari |
//Bad file format |
2 |
26 Feb 07 |
jari |
// JOptionPane.showMessageDialog(framework.getFrame(), "Error loading population file.", "Population File Load Error", JOptionPane.ERROR_MESSAGE); |
2 |
26 Feb 07 |
jari |
// return null; |
2 |
26 Feb 07 |
jari |
278 |
// } |
2 |
26 Feb 07 |
jari |
279 |
} //else { |
2 |
26 Feb 07 |
jari |
// populationKeys = framework.getData().getAnnotationList(annotationKeyType, experiment.getRowMappingArrayCopy()); |
2 |
26 Feb 07 |
jari |
281 |
// } |
2 |
26 Feb 07 |
jari |
282 |
|
2 |
26 Feb 07 |
jari |
283 |
algorithmData.addParam("perform-cluster-analysis", String.valueOf(isClusterAnalysis)); |
2 |
26 Feb 07 |
jari |
// algorithmData.addStringArray("population-list", populationKeys); |
2 |
26 Feb 07 |
jari |
285 |
if(converterFileName != null) |
2 |
26 Feb 07 |
jari |
286 |
algorithmData.addParam("converter-file-name", converterFileName); |
2 |
26 Feb 07 |
jari |
287 |
algorithmData.addStringArray("annotation-file-list", annotationFileList); |
2 |
26 Feb 07 |
jari |
// algorithmData.addMatrix("expression", experiment.getMatrix()); |
2 |
26 Feb 07 |
jari |
289 |
|
2 |
26 Feb 07 |
jari |
//Trim options |
2 |
26 Feb 07 |
jari |
291 |
String [] trimOptions = dialog.getTrimOptions(); |
2 |
26 Feb 07 |
jari |
292 |
algorithmData.addParam("trim-option", trimOptions[0]); |
2 |
26 Feb 07 |
jari |
293 |
algorithmData.addParam("trim-value", trimOptions[1]); |
2 |
26 Feb 07 |
jari |
294 |
|
2 |
26 Feb 07 |
jari |
//script control parameters |
2 |
26 Feb 07 |
jari |
296 |
|
2 |
26 Feb 07 |
jari |
// alg name |
2 |
26 Feb 07 |
jari |
298 |
algorithmData.addParam("name", "EASE"); |
2 |
26 Feb 07 |
jari |
299 |
|
2 |
26 Feb 07 |
jari |
// alg type |
2 |
26 Feb 07 |
jari |
301 |
algorithmData.addParam("alg-type", "cluster-genes"); |
2 |
26 Feb 07 |
jari |
302 |
|
2 |
26 Feb 07 |
jari |
// output class |
2 |
26 Feb 07 |
jari |
304 |
algorithmData.addParam("output-class", "multi-gene-cluster-output"); |
2 |
26 Feb 07 |
jari |
305 |
|
2 |
26 Feb 07 |
jari |
//output nodes |
2 |
26 Feb 07 |
jari |
307 |
String [] outputNodes = new String[1]; |
2 |
26 Feb 07 |
jari |
308 |
outputNodes[0] = "Multi-cluster"; |
2 |
26 Feb 07 |
jari |
309 |
algorithmData.addStringArray("output-nodes", outputNodes); |
2 |
26 Feb 07 |
jari |
310 |
return algorithmData; |
2 |
26 Feb 07 |
jari |
311 |
} |
2 |
26 Feb 07 |
jari |
312 |
|
2 |
26 Feb 07 |
jari |
313 |
|
2 |
26 Feb 07 |
jari |
314 |
|
2 |
26 Feb 07 |
jari |
315 |
|
2 |
26 Feb 07 |
jari |
316 |
public DefaultMutableTreeNode executeScript(IFramework framework, AlgorithmData algData, Experiment experiment) throws AlgorithmException { |
2 |
26 Feb 07 |
jari |
317 |
this.isScripting = true; |
2 |
26 Feb 07 |
jari |
318 |
this.algorithmData = algData; |
2 |
26 Feb 07 |
jari |
319 |
this.experiment = experiment; |
2 |
26 Feb 07 |
jari |
320 |
algData.addMatrix("expression", framework.getData().getExperiment().getMatrix()); |
2 |
26 Feb 07 |
jari |
321 |
|
2 |
26 Feb 07 |
jari |
322 |
AlgorithmParameters params = algData.getParams(); |
2 |
26 Feb 07 |
jari |
323 |
|
2 |
26 Feb 07 |
jari |
324 |
this.isClusterAnalysis = params.getBoolean("perform-cluster-analysis"); |
2 |
26 Feb 07 |
jari |
325 |
this.annotationKeyType = params.getString("annotation-key-type"); |
2 |
26 Feb 07 |
jari |
326 |
|
2 |
26 Feb 07 |
jari |
327 |
|
2 |
26 Feb 07 |
jari |
328 |
listener = new Listener(); |
2 |
26 Feb 07 |
jari |
329 |
logger = new Logger(framework.getFrame(), "EASE Analysis", listener); |
2 |
26 Feb 07 |
jari |
330 |
logger.show(); |
2 |
26 Feb 07 |
jari |
331 |
progress = new Progress(framework.getFrame(), "Probability Analysis Resampling Progress", listener); |
2 |
26 Feb 07 |
jari |
332 |
|
2 |
26 Feb 07 |
jari |
333 |
if(this.isClusterAnalysis) { |
2 |
26 Feb 07 |
jari |
//cluster keys |
2 |
26 Feb 07 |
jari |
335 |
int indices [] = experiment.getRowMappingArrayCopy(); |
2 |
26 Feb 07 |
jari |
336 |
String [] clusterKeys = framework.getData().getAnnotationList(annotationKeyType, indices); |
2 |
26 Feb 07 |
jari |
337 |
|
2 |
26 Feb 07 |
jari |
338 |
algData.addStringArray("sample-list", clusterKeys); |
2 |
26 Feb 07 |
jari |
339 |
|
2 |
26 Feb 07 |
jari |
//since we have an experiment containing only genes in cluster we can make |
2 |
26 Feb 07 |
jari |
//default indices |
2 |
26 Feb 07 |
jari |
342 |
int [] tempArray = new int[indices.length]; |
2 |
26 Feb 07 |
jari |
343 |
for(int i = 0; i < indices.length; i++) { |
2 |
26 Feb 07 |
jari |
344 |
tempArray[i]= i; |
2 |
26 Feb 07 |
jari |
345 |
} |
2 |
26 Feb 07 |
jari |
346 |
|
2 |
26 Feb 07 |
jari |
347 |
algData.addIntArray("sample-indices", tempArray); //drop in experiment indices |
2 |
26 Feb 07 |
jari |
348 |
} |
2 |
26 Feb 07 |
jari |
349 |
|
2 |
26 Feb 07 |
jari |
// population keys |
2 |
26 Feb 07 |
jari |
351 |
String popFileName = params.getString("population-file-name"); |
2 |
26 Feb 07 |
jari |
352 |
String [] populationKeys; |
2 |
26 Feb 07 |
jari |
353 |
if(isClusterAnalysis && popFileName != null){// && dialog.isPopFileModeSelected()) { |
2 |
26 Feb 07 |
jari |
354 |
try { |
2 |
26 Feb 07 |
jari |
355 |
populationKeys = getPopulationKeysFromFile(params.getString("population-file-name")); |
2 |
26 Feb 07 |
jari |
356 |
if(populationKeys == null) { |
2 |
26 Feb 07 |
jari |
357 |
return null; |
2 |
26 Feb 07 |
jari |
358 |
} |
2 |
26 Feb 07 |
jari |
359 |
} catch (IOException ioe) { |
2 |
26 Feb 07 |
jari |
//Bad file format |
2 |
26 Feb 07 |
jari |
361 |
JOptionPane.showMessageDialog(framework.getFrame(), "Error loading population file.", "Population File Load Error", JOptionPane.ERROR_MESSAGE); |
2 |
26 Feb 07 |
jari |
362 |
return null; |
2 |
26 Feb 07 |
jari |
363 |
} |
2 |
26 Feb 07 |
jari |
364 |
} else { |
2 |
26 Feb 07 |
jari |
365 |
populationKeys = framework.getData().getAnnotationList(annotationKeyType, framework.getData().getExperiment().getRowMappingArrayCopy()); |
2 |
26 Feb 07 |
jari |
366 |
} |
2 |
26 Feb 07 |
jari |
367 |
|
2 |
26 Feb 07 |
jari |
368 |
algData.addStringArray("population-list", populationKeys); |
2 |
26 Feb 07 |
jari |
369 |
|
2 |
26 Feb 07 |
jari |
370 |
|
2 |
26 Feb 07 |
jari |
371 |
algorithm = framework.getAlgorithmFactory().getAlgorithm("EASE"); |
2 |
26 Feb 07 |
jari |
372 |
algorithm.addAlgorithmListener(listener); |
2 |
26 Feb 07 |
jari |
373 |
algorithm.execute(algorithmData); |
2 |
26 Feb 07 |
jari |
374 |
|
2 |
26 Feb 07 |
jari |
375 |
if(stop) |
2 |
26 Feb 07 |
jari |
376 |
return null; |
2 |
26 Feb 07 |
jari |
377 |
|
2 |
26 Feb 07 |
jari |
378 |
progress.dispose(); |
2 |
26 Feb 07 |
jari |
379 |
categoryNames = algorithmData.getStringArray("category-names"); |
2 |
26 Feb 07 |
jari |
380 |
|
2 |
26 Feb 07 |
jari |
381 |
clusters = algorithmData.getIntMatrix("cluster-matrix"); |
2 |
26 Feb 07 |
jari |
382 |
resultMatrix = (String [][])algorithmData.getObjectMatrix("result-matrix"); |
2 |
26 Feb 07 |
jari |
383 |
haveAccessionNumbers = algorithmData.getParams().getBoolean("have-accession-numbers", false); |
2 |
26 Feb 07 |
jari |
384 |
|
2 |
26 Feb 07 |
jari |
385 |
DefaultMutableTreeNode node; |
2 |
26 Feb 07 |
jari |
386 |
logger.append("Creating Result Viewers\n"); |
2 |
26 Feb 07 |
jari |
387 |
|
2 |
26 Feb 07 |
jari |
388 |
if(resultMatrix == null) |
2 |
26 Feb 07 |
jari |
389 |
node = createEmptyResultNode(algorithmData); |
2 |
26 Feb 07 |
jari |
390 |
else |
2 |
26 Feb 07 |
jari |
391 |
node = createResultNode(algorithmData, clusters); |
2 |
26 Feb 07 |
jari |
392 |
|
2 |
26 Feb 07 |
jari |
393 |
if (algorithm != null) { |
2 |
26 Feb 07 |
jari |
394 |
algorithm.removeAlgorithmListener(listener); |
2 |
26 Feb 07 |
jari |
395 |
} |
2 |
26 Feb 07 |
jari |
396 |
if (logger != null) logger.dispose(); |
2 |
26 Feb 07 |
jari |
397 |
|
2 |
26 Feb 07 |
jari |
398 |
return node; |
2 |
26 Feb 07 |
jari |
399 |
} |
2 |
26 Feb 07 |
jari |
400 |
|
2 |
26 Feb 07 |
jari |
401 |
|
2 |
26 Feb 07 |
jari |
402 |
private String [] getPopulationKeysFromFile(String fileName) throws IOException { |
2 |
26 Feb 07 |
jari |
403 |
File file = new File(fileName); |
2 |
26 Feb 07 |
jari |
404 |
if(file.exists()) { |
2 |
26 Feb 07 |
jari |
405 |
BufferedReader reader = new BufferedReader(new FileReader(file)); |
2 |
26 Feb 07 |
jari |
406 |
Vector ann = new Vector(); |
2 |
26 Feb 07 |
jari |
407 |
String key; |
2 |
26 Feb 07 |
jari |
408 |
while( (key = reader.readLine()) != null ) { |
2 |
26 Feb 07 |
jari |
409 |
ann.add(key); |
2 |
26 Feb 07 |
jari |
410 |
} |
2 |
26 Feb 07 |
jari |
411 |
String [] annot = new String [ann.size()]; |
2 |
26 Feb 07 |
jari |
412 |
for(int i = 0; i < annot.length; i++) { |
2 |
26 Feb 07 |
jari |
413 |
annot[i] = (String)(ann.elementAt(i)); |
2 |
26 Feb 07 |
jari |
414 |
} |
2 |
26 Feb 07 |
jari |
415 |
return annot; |
2 |
26 Feb 07 |
jari |
416 |
} |
2 |
26 Feb 07 |
jari |
417 |
return null; |
2 |
26 Feb 07 |
jari |
418 |
} |
2 |
26 Feb 07 |
jari |
419 |
|
2 |
26 Feb 07 |
jari |
420 |
|
2 |
26 Feb 07 |
jari |
/** Creates the result node. |
2 |
26 Feb 07 |
jari |
* @param result result matrix |
2 |
26 Feb 07 |
jari |
* @param clusters cluster indices |
2 |
26 Feb 07 |
jari |
* @return returns the result node |
2 |
26 Feb 07 |
jari |
425 |
*/ |
2 |
26 Feb 07 |
jari |
426 |
private DefaultMutableTreeNode createResultNode(AlgorithmData result, int [][] clusters){ |
2 |
26 Feb 07 |
jari |
427 |
DefaultMutableTreeNode root; |
2 |
26 Feb 07 |
jari |
428 |
if(this.isClusterAnalysis) |
2 |
26 Feb 07 |
jari |
429 |
root = new DefaultMutableTreeNode("EASE Analysis"); |
2 |
26 Feb 07 |
jari |
430 |
else |
2 |
26 Feb 07 |
jari |
431 |
root = new DefaultMutableTreeNode("EASE Survey"); |
2 |
26 Feb 07 |
jari |
432 |
addTableViewer(root, result); |
2 |
26 Feb 07 |
jari |
433 |
addExpressionViewers(root, result); |
2 |
26 Feb 07 |
jari |
434 |
addGeneralInfo(root, result); |
2 |
26 Feb 07 |
jari |
435 |
if(isClusterAnalysis) |
2 |
26 Feb 07 |
jari |
436 |
addGOTree(root, result); |
2 |
26 Feb 07 |
jari |
437 |
return root; |
2 |
26 Feb 07 |
jari |
438 |
} |
2 |
26 Feb 07 |
jari |
439 |
|
2 |
26 Feb 07 |
jari |
440 |
private void addGOTree(DefaultMutableTreeNode root, AlgorithmData result) { |
2 |
26 Feb 07 |
jari |
441 |
String [][] data = (String [][]) (result.getObjectMatrix("result-matrix")); |
2 |
26 Feb 07 |
jari |
442 |
String [] headerNames = result.getStringArray("header-names"); |
2 |
26 Feb 07 |
jari |
443 |
|
2 |
26 Feb 07 |
jari |
444 |
String categories = new String(""); |
2 |
26 Feb 07 |
jari |
445 |
|
2 |
26 Feb 07 |
jari |
446 |
for(int i = 0; i < categoryNames.length; i++) |
2 |
26 Feb 07 |
jari |
447 |
categories += categoryNames[i]; |
2 |
26 Feb 07 |
jari |
448 |
|
2 |
26 Feb 07 |
jari |
449 |
if(categories.indexOf("GO Biological Process") != -1) { |
2 |
26 Feb 07 |
jari |
450 |
DefaultMutableTreeNode node = new DefaultMutableTreeNode(); |
2 |
26 Feb 07 |
jari |
451 |
GOTreeViewer viewer = new GOTreeViewer("GO Biological Process", headerNames, data, root, this.baseFileSystem); |
2 |
26 Feb 07 |
jari |
452 |
node.setUserObject(new LeafInfo("GO Hierarchy -- Biological Process", viewer)); |
2 |
26 Feb 07 |
jari |
453 |
root.add(node); |
2 |
26 Feb 07 |
jari |
454 |
} |
2 |
26 Feb 07 |
jari |
455 |
|
2 |
26 Feb 07 |
jari |
456 |
if(categories.indexOf("GO Cellular Component") != -1) { |
2 |
26 Feb 07 |
jari |
457 |
DefaultMutableTreeNode node = new DefaultMutableTreeNode(); |
2 |
26 Feb 07 |
jari |
458 |
GOTreeViewer viewer = new GOTreeViewer("GO Cellular Component", headerNames, data, root, this.baseFileSystem); |
2 |
26 Feb 07 |
jari |
459 |
node.setUserObject(new LeafInfo("GO Hierarchy -- Cellular Component", viewer)); |
2 |
26 Feb 07 |
jari |
460 |
root.add(node); |
2 |
26 Feb 07 |
jari |
461 |
} |
2 |
26 Feb 07 |
jari |
462 |
|
2 |
26 Feb 07 |
jari |
463 |
if(categories.indexOf("GO Molecular Function") != -1) { |
2 |
26 Feb 07 |
jari |
464 |
DefaultMutableTreeNode node = new DefaultMutableTreeNode(); |
2 |
26 Feb 07 |
jari |
465 |
GOTreeViewer viewer = new GOTreeViewer("GO Molecular Function", headerNames, data, root, this.baseFileSystem); |
2 |
26 Feb 07 |
jari |
466 |
node.setUserObject(new LeafInfo("GO Hierarchy -- Molecular Function", viewer)); |
2 |
26 Feb 07 |
jari |
467 |
root.add(node); |
2 |
26 Feb 07 |
jari |
468 |
} |
2 |
26 Feb 07 |
jari |
469 |
} |
2 |
26 Feb 07 |
jari |
470 |
|
2 |
26 Feb 07 |
jari |
/** creates an empty result if the result is null. |
2 |
26 Feb 07 |
jari |
* @param result |
2 |
26 Feb 07 |
jari |
* @return */ |
2 |
26 Feb 07 |
jari |
474 |
private DefaultMutableTreeNode createEmptyResultNode(AlgorithmData result){ |
2 |
26 Feb 07 |
jari |
475 |
DefaultMutableTreeNode root = new DefaultMutableTreeNode("EASE"); |
2 |
26 Feb 07 |
jari |
476 |
root.add(new DefaultMutableTreeNode("No Annotation Hits")); |
2 |
26 Feb 07 |
jari |
477 |
addGeneralInfo(root, result); |
2 |
26 Feb 07 |
jari |
478 |
return root; |
2 |
26 Feb 07 |
jari |
479 |
} |
2 |
26 Feb 07 |
jari |
480 |
|
2 |
26 Feb 07 |
jari |
/** Adds nodes to display cluster data. |
2 |
26 Feb 07 |
jari |
* @param root root node |
2 |
26 Feb 07 |
jari |
* @param result result matrix |
2 |
26 Feb 07 |
jari |
484 |
*/ |
2 |
26 Feb 07 |
jari |
485 |
private void addExpressionViewers(DefaultMutableTreeNode root, AlgorithmData result) { |
2 |
26 Feb 07 |
jari |
486 |
DefaultMutableTreeNode node = new DefaultMutableTreeNode("Expression Viewers"); |
2 |
26 Feb 07 |
jari |
487 |
|
2 |
26 Feb 07 |
jari |
488 |
IViewer expViewer = new EASEExperimentViewer(this.experiment, this.clusters); |
2 |
26 Feb 07 |
jari |
489 |
EASECentroidViewer graphViewer = new EASECentroidViewer(this.experiment, this.clusters); |
2 |
26 Feb 07 |
jari |
//set means and variances in the graph viewer |
2 |
26 Feb 07 |
jari |
491 |
graphViewer.setMeans(result.getMatrix("means").A); |
2 |
26 Feb 07 |
jari |
492 |
graphViewer.setVariances(result.getMatrix("variances").A); |
2 |
26 Feb 07 |
jari |
493 |
DefaultMutableTreeNode clusterNode, annotNode, popNode; |
2 |
26 Feb 07 |
jari |
494 |
for (int i=0; i<this.clusters.length; i++) { |
2 |
26 Feb 07 |
jari |
495 |
clusterNode = new DefaultMutableTreeNode("Term "+String.valueOf(i+1)); |
2 |
26 Feb 07 |
jari |
496 |
clusterNode.add(new DefaultMutableTreeNode(new LeafInfo("Expression Image", expViewer, new Integer(i)))); |
2 |
26 Feb 07 |
jari |
497 |
clusterNode.add(new DefaultMutableTreeNode(new LeafInfo("Centroid Graph", graphViewer, new CentroidUserObject(i, CentroidUserObject.VARIANCES_MODE)))); |
2 |
26 Feb 07 |
jari |
498 |
clusterNode.add(new DefaultMutableTreeNode(new LeafInfo("Expression Graph", graphViewer, new CentroidUserObject(i, CentroidUserObject.VALUES_MODE)))); |
2 |
26 Feb 07 |
jari |
499 |
clusterNode.add(new DefaultMutableTreeNode(resultMatrix[i][1])); |
2 |
26 Feb 07 |
jari |
500 |
if(this.haveAccessionNumbers) |
2 |
26 Feb 07 |
jari |
501 |
clusterNode.add(new DefaultMutableTreeNode(resultMatrix[i][2])); |
2 |
26 Feb 07 |
jari |
502 |
clusterNode.add(new DefaultMutableTreeNode("Number of Genes: "+this.clusters[i].length)); |
2 |
26 Feb 07 |
jari |
503 |
|
2 |
26 Feb 07 |
jari |
504 |
node.add(clusterNode); |
2 |
26 Feb 07 |
jari |
505 |
} |
2 |
26 Feb 07 |
jari |
506 |
root.add(node); |
2 |
26 Feb 07 |
jari |
507 |
} |
2 |
26 Feb 07 |
jari |
508 |
|
2 |
26 Feb 07 |
jari |
509 |
|
2 |
26 Feb 07 |
jari |
/** Adds the table viewer |
2 |
26 Feb 07 |
jari |
* @param root root node |
2 |
26 Feb 07 |
jari |
* @param result |
2 |
26 Feb 07 |
jari |
513 |
*/ |
2 |
26 Feb 07 |
jari |
514 |
private void addTableViewer(DefaultMutableTreeNode root, AlgorithmData result){ |
2 |
26 Feb 07 |
jari |
515 |
Object [][] data = result.getObjectMatrix("result-matrix"); |
2 |
26 Feb 07 |
jari |
516 |
String [] headerNames = result.getStringArray("header-names"); |
2 |
26 Feb 07 |
jari |
517 |
|
2 |
26 Feb 07 |
jari |
518 |
if(data == null || data.length < 1) |
2 |
26 Feb 07 |
jari |
519 |
return; |
2 |
26 Feb 07 |
jari |
520 |
|
2 |
26 Feb 07 |
jari |
521 |
EASETableViewer tv = new EASETableViewer(headerNames, data, root, experiment, clusters, haveAccessionNumbers, this.isClusterAnalysis); |
2 |
26 Feb 07 |
jari |
522 |
DefaultMutableTreeNode node = new DefaultMutableTreeNode(new LeafInfo("Table Viewer", tv)); |
2 |
26 Feb 07 |
jari |
523 |
root.add(node); |
2 |
26 Feb 07 |
jari |
524 |
} |
2 |
26 Feb 07 |
jari |
525 |
|
2 |
26 Feb 07 |
jari |
/** Returns the indices mapped to IData indices. Appropriate indices for |
2 |
26 Feb 07 |
jari |
* direct access to IData encapsulated annotation. |
2 |
26 Feb 07 |
jari |
* @param indices |
2 |
26 Feb 07 |
jari |
* @return |
2 |
26 Feb 07 |
jari |
530 |
*/ |
2 |
26 Feb 07 |
jari |
531 |
private int [] getDataIndices(int [] indices){ |
2 |
26 Feb 07 |
jari |
532 |
int [] dataIndices = new int[indices.length]; |
2 |
26 Feb 07 |
jari |
533 |
for(int i = 0; i < dataIndices.length; i++){ |
2 |
26 Feb 07 |
jari |
534 |
dataIndices[i] = this.experiment.getGeneIndexMappedToData(indices[i]); |
2 |
26 Feb 07 |
jari |
535 |
} |
2 |
26 Feb 07 |
jari |
536 |
return dataIndices; |
2 |
26 Feb 07 |
jari |
537 |
} |
2 |
26 Feb 07 |
jari |
538 |
|
2 |
26 Feb 07 |
jari |
/** Adds general algorithm information. |
2 |
26 Feb 07 |
jari |
* @param root root node |
2 |
26 Feb 07 |
jari |
* @param result |
2 |
26 Feb 07 |
jari |
542 |
*/ |
2 |
26 Feb 07 |
jari |
543 |
private void addGeneralInfo(DefaultMutableTreeNode root, AlgorithmData result){ |
2 |
26 Feb 07 |
jari |
544 |
DefaultMutableTreeNode generalInfo = new DefaultMutableTreeNode("General Information"); |
2 |
26 Feb 07 |
jari |
545 |
String converterFileName = result.getParams().getString("converter-file-name"); |
2 |
26 Feb 07 |
jari |
546 |
DefaultMutableTreeNode newNode; |
2 |
26 Feb 07 |
jari |
547 |
|
2 |
26 Feb 07 |
jari |
548 |
if(this.isClusterAnalysis && !isScripting){ |
2 |
26 Feb 07 |
jari |
549 |
newNode = new DefaultMutableTreeNode("Input Cluster Info"); |
2 |
26 Feb 07 |
jari |
550 |
newNode.add(new DefaultMutableTreeNode("Cluster Serial # :"+String.valueOf(this.cluster.getSerialNumber()))); |
2 |
26 Feb 07 |
jari |
551 |
newNode.add(new DefaultMutableTreeNode("Cluster Source: "+String.valueOf(this.cluster.getSource()))); |
2 |
26 Feb 07 |
jari |
552 |
newNode.add(new DefaultMutableTreeNode("Cluster Analysis Node: "+String.valueOf(this.cluster.getAlgorithmName()))); |
2 |
26 Feb 07 |
jari |
553 |
newNode.add(new DefaultMutableTreeNode("Cluster Cluster Node: "+String.valueOf(this.cluster.getClusterID()))); |
2 |
26 Feb 07 |
jari |
554 |
newNode.add(new DefaultMutableTreeNode("Cluster Label: "+String.valueOf(this.cluster.getClusterLabel()))); |
2 |
26 Feb 07 |
jari |
555 |
newNode.add(new DefaultMutableTreeNode("Cluster Size: "+String.valueOf(this.cluster.getSize()))); |
2 |
26 Feb 07 |
jari |
556 |
generalInfo.add(newNode); |
2 |
26 Feb 07 |
jari |
557 |
} |
2 |
26 Feb 07 |
jari |
558 |
|
2 |
26 Feb 07 |
jari |
559 |
if(this.isScripting) { |
2 |
26 Feb 07 |
jari |
560 |
newNode = new DefaultMutableTreeNode("Input Data: Script Data Input"); |
2 |
26 Feb 07 |
jari |
561 |
} |
2 |
26 Feb 07 |
jari |
562 |
|
2 |
26 Feb 07 |
jari |
563 |
newNode = new DefaultMutableTreeNode("Analysis Options"); |
2 |
26 Feb 07 |
jari |
564 |
DefaultMutableTreeNode fileNode = new DefaultMutableTreeNode("Selected Index and Files"); |
2 |
26 Feb 07 |
jari |
565 |
|
2 |
26 Feb 07 |
jari |
566 |
String popFileName = result.getParams().getString("population-file-name"); |
2 |
26 Feb 07 |
jari |
567 |
if(popFileName == null) |
2 |
26 Feb 07 |
jari |
568 |
fileNode.add(new DefaultMutableTreeNode("Population Selection: Data in Current Viewer")); |
2 |
26 Feb 07 |
jari |
569 |
else |
2 |
26 Feb 07 |
jari |
570 |
fileNode.add(new DefaultMutableTreeNode("Population Selection: File Input ("+popFileName+")")); |
2 |
26 Feb 07 |
jari |
571 |
|
2 |
26 Feb 07 |
jari |
572 |
fileNode.add(new DefaultMutableTreeNode("MeV Index: "+this.annotationKeyType)); |
2 |
26 Feb 07 |
jari |
573 |
AlgorithmParameters params = this.algorithmData.getParams(); |
2 |
26 Feb 07 |
jari |
574 |
fileNode.add(new DefaultMutableTreeNode("Conversion File: "+params.getString("converter-file-name", "Not Selected"))); |
2 |
26 Feb 07 |
jari |
575 |
DefaultMutableTreeNode annFileNode = new DefaultMutableTreeNode("Annotation-to-Theme Files"); |
2 |
26 Feb 07 |
jari |
576 |
String [] annFiles = this.algorithmData.getStringArray("annotation-file-list"); |
2 |
26 Feb 07 |
jari |
577 |
if(annFiles != null) |
2 |
26 Feb 07 |
jari |
578 |
for(int i = 0; i < annFiles.length; i++) |
2 |
26 Feb 07 |
jari |
579 |
annFileNode.add(new DefaultMutableTreeNode("File: "+annFiles[i])); |
2 |
26 Feb 07 |
jari |
580 |
fileNode.add(annFileNode); |
2 |
26 Feb 07 |
jari |
581 |
newNode.add(fileNode); |
2 |
26 Feb 07 |
jari |
582 |
|
2 |
26 Feb 07 |
jari |
583 |
if(this.isClusterAnalysis || !(params.getString("trim-option").equals("NO_TRIM"))){ |
2 |
26 Feb 07 |
jari |
584 |
DefaultMutableTreeNode statNode = new DefaultMutableTreeNode("Stat Parameters"); |
2 |
26 Feb 07 |
jari |
585 |
if(this.isClusterAnalysis){ |
2 |
26 Feb 07 |
jari |
586 |
statNode.add(new DefaultMutableTreeNode("Reported Statistic:"+ ((params.getBoolean("report-ease-score"))?"EASE Score":"Fisher's Exact"))); |
2 |
26 Feb 07 |
jari |
587 |
if(params.getBoolean("bonferroni-correction", false)) |
2 |
26 Feb 07 |
jari |
588 |
statNode.add(new DefaultMutableTreeNode("Mult.-Correct.: Bonferroni")); |
2 |
26 Feb 07 |
jari |
589 |
if(params.getBoolean("bonferroni-step-down-correction", false)) |
2 |
26 Feb 07 |
jari |
590 |
statNode.add(new DefaultMutableTreeNode("Mult.-Correct.: Bonferroni Step Down")); |
2 |
26 Feb 07 |
jari |
591 |
if(params.getBoolean("sidak-correction", false)) |
2 |
26 Feb 07 |
jari |
592 |
statNode.add(new DefaultMutableTreeNode("Mult.-Correct.: Sidak Method")); |
2 |
26 Feb 07 |
jari |
593 |
} |
2 |
26 Feb 07 |
jari |
594 |
if(!(params.getString("trim-option").equals("NO_TRIM"))){ |
2 |
26 Feb 07 |
jari |
595 |
if(params.getString("trim-option").equals("N_TRIM")) |
2 |
26 Feb 07 |
jari |
596 |
statNode.add(new DefaultMutableTreeNode("Trim out if hit number < "+params.getInt("trim-value"))); |
2 |
26 Feb 07 |
jari |
597 |
else |
2 |
26 Feb 07 |
jari |
598 |
statNode.add(new DefaultMutableTreeNode("Trim out if hit percent < "+params.getInt("trim-value"))); |
2 |
26 Feb 07 |
jari |
599 |
} |
2 |
26 Feb 07 |
jari |
600 |
newNode.add(statNode); |
2 |
26 Feb 07 |
jari |
601 |
} |
2 |
26 Feb 07 |
jari |
602 |
generalInfo.add(newNode); |
2 |
26 Feb 07 |
jari |
603 |
|
2 |
26 Feb 07 |
jari |
604 |
root.add(generalInfo); |
2 |
26 Feb 07 |
jari |
605 |
} |
2 |
26 Feb 07 |
jari |
606 |
|
2 |
26 Feb 07 |
jari |
607 |
|
2 |
26 Feb 07 |
jari |
608 |
|
2 |
26 Feb 07 |
jari |
/** Listens to algorithm events and updates the logger. |
2 |
26 Feb 07 |
jari |
610 |
*/ |
2 |
26 Feb 07 |
jari |
611 |
private class Listener extends DialogListener implements AlgorithmListener{ |
2 |
26 Feb 07 |
jari |
612 |
String eventDescription; |
2 |
26 Feb 07 |
jari |
/** Handles algorithm events. |
2 |
26 Feb 07 |
jari |
* @param actionEvent event object |
2 |
26 Feb 07 |
jari |
615 |
*/ |
2 |
26 Feb 07 |
jari |
616 |
public void actionPerformed(java.awt.event.ActionEvent actionEvent) { |
2 |
26 Feb 07 |
jari |
617 |
String command = actionEvent.getActionCommand(); |
2 |
26 Feb 07 |
jari |
618 |
if (command.equals("cancel-command")) { |
2 |
26 Feb 07 |
jari |
619 |
System.out.println("abort execution"); |
2 |
26 Feb 07 |
jari |
620 |
stop = true; |
2 |
26 Feb 07 |
jari |
621 |
algorithm.abort(); |
2 |
26 Feb 07 |
jari |
622 |
progress.dispose(); |
2 |
26 Feb 07 |
jari |
623 |
logger.dispose(); |
2 |
26 Feb 07 |
jari |
624 |
} |
2 |
26 Feb 07 |
jari |
625 |
} |
2 |
26 Feb 07 |
jari |
626 |
|
2 |
26 Feb 07 |
jari |
/** Invoked when an algorithm progress value was changed. |
2 |
26 Feb 07 |
jari |
628 |
* |
2 |
26 Feb 07 |
jari |
* @param event a <code>AlgorithmEvent</code> object. |
2 |
26 Feb 07 |
jari |
630 |
*/ |
2 |
26 Feb 07 |
jari |
631 |
public void valueChanged(AlgorithmEvent event) { |
2 |
26 Feb 07 |
jari |
632 |
if(event.getId() == AlgorithmEvent.MONITOR_VALUE){ |
2 |
26 Feb 07 |
jari |
633 |
logger.append( event.getDescription() ); |
2 |
26 Feb 07 |
jari |
634 |
} else { //event to progress |
2 |
26 Feb 07 |
jari |
635 |
|
2 |
26 Feb 07 |
jari |
636 |
eventDescription = event.getDescription(); |
2 |
26 Feb 07 |
jari |
637 |
|
2 |
26 Feb 07 |
jari |
638 |
if(eventDescription.equals("SET_VALUE")){ |
2 |
26 Feb 07 |
jari |
639 |
progress.setValue(event.getIntValue()); |
2 |
26 Feb 07 |
jari |
640 |
return; |
2 |
26 Feb 07 |
jari |
641 |
} else if(eventDescription.equals("SET_UNITS")){ |
2 |
26 Feb 07 |
jari |
642 |
progress.setDescription("Resampling Analysis Iterations"); |
2 |
26 Feb 07 |
jari |
643 |
progress.setValue(0); |
2 |
26 Feb 07 |
jari |
644 |
progress.setUnits(event.getIntValue()); |
2 |
26 Feb 07 |
jari |
645 |
progress.show(); |
2 |
26 Feb 07 |
jari |
646 |
java.awt.Point p = progress.getLocation(); |
2 |
26 Feb 07 |
jari |
647 |
java.awt.Point loggerP = logger.getLocation(); |
2 |
26 Feb 07 |
jari |
648 |
progress.setLocation(p.x, loggerP.y-progress.getHeight()); |
2 |
26 Feb 07 |
jari |
649 |
return; |
2 |
26 Feb 07 |
jari |
650 |
} else { //default dispose |
2 |
26 Feb 07 |
jari |
651 |
progress.setVisible(false); |
2 |
26 Feb 07 |
jari |
652 |
progress.dispose(); |
2 |
26 Feb 07 |
jari |
653 |
} |
2 |
26 Feb 07 |
jari |
654 |
} |
2 |
26 Feb 07 |
jari |
655 |
} |
2 |
26 Feb 07 |
jari |
656 |
} |
2 |
26 Feb 07 |
jari |
657 |
} |