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: GDMExpSpotInfoDisplay.java,v $ |
2 |
26 Feb 07 |
jari |
* $Revision: 1.3 $ |
2 |
26 Feb 07 |
jari |
* $Date: 2005/03/10 20:22:00 $ |
2 |
26 Feb 07 |
jari |
* $Author: braistedj $ |
2 |
26 Feb 07 |
jari |
* $State: Exp $ |
2 |
26 Feb 07 |
jari |
11 |
*/ |
2 |
26 Feb 07 |
jari |
12 |
package org.tigr.microarray.mev.cluster.gui.impl.gdm; |
2 |
26 Feb 07 |
jari |
13 |
|
2 |
26 Feb 07 |
jari |
14 |
import java.awt.Color; |
2 |
26 Feb 07 |
jari |
15 |
import java.awt.Font; |
2 |
26 Feb 07 |
jari |
16 |
import java.awt.Graphics; |
2 |
26 Feb 07 |
jari |
17 |
import java.awt.GridBagLayout; |
2 |
26 Feb 07 |
jari |
18 |
import java.awt.Insets; |
2 |
26 Feb 07 |
jari |
19 |
import java.awt.event.ActionEvent; |
2 |
26 Feb 07 |
jari |
20 |
import java.awt.event.ActionListener; |
2 |
26 Feb 07 |
jari |
21 |
import java.awt.event.KeyEvent; |
2 |
26 Feb 07 |
jari |
22 |
import java.awt.event.KeyListener; |
2 |
26 Feb 07 |
jari |
23 |
|
2 |
26 Feb 07 |
jari |
24 |
import javax.swing.JButton; |
2 |
26 Feb 07 |
jari |
25 |
import javax.swing.JFrame; |
2 |
26 Feb 07 |
jari |
26 |
import javax.swing.JLabel; |
2 |
26 Feb 07 |
jari |
27 |
import javax.swing.JScrollPane; |
2 |
26 Feb 07 |
jari |
28 |
import javax.swing.JTextPane; |
2 |
26 Feb 07 |
jari |
29 |
import javax.swing.JViewport; |
2 |
26 Feb 07 |
jari |
30 |
import javax.swing.ScrollPaneConstants; |
2 |
26 Feb 07 |
jari |
31 |
|
2 |
26 Feb 07 |
jari |
32 |
import org.tigr.microarray.mev.cluster.gui.Experiment; |
2 |
26 Feb 07 |
jari |
33 |
import org.tigr.microarray.mev.cluster.gui.IData; |
2 |
26 Feb 07 |
jari |
34 |
import org.tigr.microarray.mev.cluster.gui.impl.GUIFactory; |
2 |
26 Feb 07 |
jari |
35 |
import org.tigr.util.FloatMatrix; |
2 |
26 Feb 07 |
jari |
36 |
import org.tigr.util.awt.ActionInfoDialog; |
2 |
26 Feb 07 |
jari |
37 |
import org.tigr.util.awt.GBA; |
2 |
26 Feb 07 |
jari |
38 |
|
2 |
26 Feb 07 |
jari |
39 |
public class GDMExpSpotInfoDisplay extends ActionInfoDialog { |
2 |
26 Feb 07 |
jari |
40 |
|
2 |
26 Feb 07 |
jari |
41 |
private int col; |
2 |
26 Feb 07 |
jari |
42 |
private int row; |
2 |
26 Feb 07 |
jari |
43 |
private FloatMatrix expDistMatrix; |
2 |
26 Feb 07 |
jari |
44 |
private FloatMatrix rawMatrix; |
2 |
26 Feb 07 |
jari |
45 |
|
2 |
26 Feb 07 |
jari |
46 |
private int LINEAR = 0; // to return just ratio |
2 |
26 Feb 07 |
jari |
47 |
private int LOG = 1; //for log2(ratio) |
2 |
26 Feb 07 |
jari |
48 |
private String distanceMetric; |
2 |
26 Feb 07 |
jari |
49 |
private int vectorSize=0; |
2 |
26 Feb 07 |
jari |
50 |
|
2 |
26 Feb 07 |
jari |
51 |
private int rowMissingValues=0; |
2 |
26 Feb 07 |
jari |
52 |
private int colMissingValues=0; |
2 |
26 Feb 07 |
jari |
53 |
private int distanceBasedOn=0; |
2 |
26 Feb 07 |
jari |
54 |
private IData expData; |
2 |
26 Feb 07 |
jari |
55 |
private Experiment experiment; |
2 |
26 Feb 07 |
jari |
56 |
private Color rowExperimentColor; |
2 |
26 Feb 07 |
jari |
57 |
private Color colExperimentColor; |
2 |
26 Feb 07 |
jari |
58 |
|
2 |
26 Feb 07 |
jari |
59 |
public static Color zeroColor = Color.black; |
2 |
26 Feb 07 |
jari |
60 |
public static Color NaNColor = Color.gray; |
2 |
26 Feb 07 |
jari |
61 |
public static Color diagColor = Color.white; |
2 |
26 Feb 07 |
jari |
62 |
|
2 |
26 Feb 07 |
jari |
63 |
private boolean haveColor = true; |
2 |
26 Feb 07 |
jari |
64 |
|
2 |
26 Feb 07 |
jari |
65 |
public GDMExpSpotInfoDisplay(JFrame parent, IData expData, FloatMatrix gdMatrix, |
2 |
26 Feb 07 |
jari |
66 |
FloatMatrix rawMatrix, String distMetric, int col, int row) { |
2 |
26 Feb 07 |
jari |
67 |
super(parent, true); |
2 |
26 Feb 07 |
jari |
68 |
this.expData = expData; |
2 |
26 Feb 07 |
jari |
69 |
this.experiment = expData.getExperiment(); |
2 |
26 Feb 07 |
jari |
70 |
|
2 |
26 Feb 07 |
jari |
71 |
this.expDistMatrix = gdMatrix; |
2 |
26 Feb 07 |
jari |
72 |
this.rawMatrix = rawMatrix; |
2 |
26 Feb 07 |
jari |
73 |
this.col = col; |
2 |
26 Feb 07 |
jari |
74 |
this.row = row; |
2 |
26 Feb 07 |
jari |
75 |
this.distanceMetric = distMetric; |
2 |
26 Feb 07 |
jari |
76 |
|
2 |
26 Feb 07 |
jari |
77 |
this.vectorSize = this.expData.getFeaturesSize(); |
2 |
26 Feb 07 |
jari |
78 |
|
2 |
26 Feb 07 |
jari |
79 |
this.colExperimentColor = expData.getExperimentColor(col); |
2 |
26 Feb 07 |
jari |
80 |
this.rowExperimentColor = expData.getExperimentColor(row); |
2 |
26 Feb 07 |
jari |
81 |
|
2 |
26 Feb 07 |
jari |
82 |
if(colExperimentColor == null && rowExperimentColor == null){ |
2 |
26 Feb 07 |
jari |
83 |
haveColor = false; |
2 |
26 Feb 07 |
jari |
84 |
} else { |
2 |
26 Feb 07 |
jari |
85 |
if(this.rowExperimentColor == null) |
2 |
26 Feb 07 |
jari |
86 |
this.rowExperimentColor = new Color(Integer.parseInt("FFFFCC",16)); |
2 |
26 Feb 07 |
jari |
87 |
if(this.colExperimentColor == null) |
2 |
26 Feb 07 |
jari |
88 |
this.colExperimentColor = new Color(Integer.parseInt("FFFFCC",16)); |
2 |
26 Feb 07 |
jari |
89 |
} |
2 |
26 Feb 07 |
jari |
90 |
this.setValues(col, row); |
2 |
26 Feb 07 |
jari |
91 |
init(); |
2 |
26 Feb 07 |
jari |
92 |
} |
2 |
26 Feb 07 |
jari |
93 |
|
2 |
26 Feb 07 |
jari |
94 |
private void init(){ |
2 |
26 Feb 07 |
jari |
95 |
|
2 |
26 Feb 07 |
jari |
96 |
Font infoDisplayFont = new Font("monospaced", Font.PLAIN, 10); |
2 |
26 Feb 07 |
jari |
97 |
JLabel spotImage = new JLabel(GUIFactory.getIcon("spot.gif")); |
2 |
26 Feb 07 |
jari |
98 |
EventListener listener = new EventListener(); |
2 |
26 Feb 07 |
jari |
99 |
|
2 |
26 Feb 07 |
jari |
100 |
JTextPane infoDisplayTextPane = new JTextPane(); |
2 |
26 Feb 07 |
jari |
101 |
infoDisplayTextPane.setContentType("text/html"); |
2 |
26 Feb 07 |
jari |
102 |
infoDisplayTextPane.setFont(infoDisplayFont); |
2 |
26 Feb 07 |
jari |
103 |
infoDisplayTextPane.setEditable(false); |
2 |
26 Feb 07 |
jari |
104 |
infoDisplayTextPane.setBackground(new Color(Integer.parseInt("FFFFCC",16))); |
2 |
26 Feb 07 |
jari |
105 |
infoDisplayTextPane.setMargin(new Insets(10,15,10,10)); |
2 |
26 Feb 07 |
jari |
106 |
infoDisplayTextPane.setText(createMessage()); |
2 |
26 Feb 07 |
jari |
107 |
infoDisplayTextPane.setCaretPosition(0); |
2 |
26 Feb 07 |
jari |
108 |
infoDisplayTextPane.addKeyListener(listener); |
2 |
26 Feb 07 |
jari |
109 |
JButton closeButton = new JButton("Close"); |
2 |
26 Feb 07 |
jari |
110 |
closeButton.setActionCommand("close"); |
2 |
26 Feb 07 |
jari |
111 |
closeButton.addActionListener(listener); |
2 |
26 Feb 07 |
jari |
112 |
|
2 |
26 Feb 07 |
jari |
113 |
contentPane.setLayout(new GridBagLayout()); |
2 |
26 Feb 07 |
jari |
114 |
JScrollPane scrollPane = new JScrollPane(infoDisplayTextPane, ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED, ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED); |
2 |
26 Feb 07 |
jari |
115 |
scrollPane.getViewport().setBackground(Color.white); |
2 |
26 Feb 07 |
jari |
116 |
scrollPane.getViewport().setScrollMode(JViewport.SIMPLE_SCROLL_MODE); |
2 |
26 Feb 07 |
jari |
117 |
scrollPane.getVerticalScrollBar().setValues(10, 10, 0, 100); |
2 |
26 Feb 07 |
jari |
118 |
|
2 |
26 Feb 07 |
jari |
119 |
GBA gba = new GBA(); |
2 |
26 Feb 07 |
jari |
120 |
gba.add(contentPane, scrollPane, 0, 0, 3, 2, 1, 1, GBA.B, GBA.C, new Insets(5, 5, 5, 5), 0, 0); |
2 |
26 Feb 07 |
jari |
121 |
gba.add(contentPane, closeButton, 0, 3, 1, 1, 0, 0, GBA.NONE, GBA.C, new Insets(5, 5, 5, 5), 0, 0); |
2 |
26 Feb 07 |
jari |
122 |
gba.add(contentPane, spotImage, 2, 3, 1, 1, 0, 0, GBA.NONE, GBA.E, new Insets(5, 5, 5, 5), 0, 0); |
2 |
26 Feb 07 |
jari |
123 |
pack(); |
2 |
26 Feb 07 |
jari |
124 |
setSize(500, 500); |
2 |
26 Feb 07 |
jari |
125 |
setResizable(true); |
2 |
26 Feb 07 |
jari |
126 |
setTitle("Sample Distance Spot Information"); |
2 |
26 Feb 07 |
jari |
127 |
setLocation(300, 100); |
2 |
26 Feb 07 |
jari |
128 |
show(); |
2 |
26 Feb 07 |
jari |
129 |
} |
2 |
26 Feb 07 |
jari |
130 |
|
2 |
26 Feb 07 |
jari |
131 |
private String createMessage() { |
2 |
26 Feb 07 |
jari |
132 |
int stringLength = 0; |
2 |
26 Feb 07 |
jari |
133 |
|
2 |
26 Feb 07 |
jari |
134 |
String rowName = this.expData.getSampleName(this.row); |
2 |
26 Feb 07 |
jari |
135 |
String colName = this.expData.getSampleName(this.col); |
2 |
26 Feb 07 |
jari |
136 |
|
2 |
26 Feb 07 |
jari |
137 |
int displayRowNum = this.row + 1; |
2 |
26 Feb 07 |
jari |
138 |
int displayColNum = this.col + 1; |
2 |
26 Feb 07 |
jari |
139 |
|
2 |
26 Feb 07 |
jari |
140 |
String colColor= ""; |
2 |
26 Feb 07 |
jari |
141 |
String rowColor= ""; |
2 |
26 Feb 07 |
jari |
142 |
if(haveColor){ |
2 |
26 Feb 07 |
jari |
143 |
colColor = '#' + (Integer.toHexString(colExperimentColor.getRGB())).substring(2, 8); |
2 |
26 Feb 07 |
jari |
144 |
rowColor = '#' + (Integer.toHexString(rowExperimentColor.getRGB())).substring(2, 8); |
2 |
26 Feb 07 |
jari |
145 |
} |
2 |
26 Feb 07 |
jari |
146 |
String message = "<h3>Experiment Information</h3>" + |
2 |
26 Feb 07 |
jari |
147 |
"<table border=2 cellpadding=4 valign=top >" + |
2 |
26 Feb 07 |
jari |
148 |
"<tr><td valign=top></td><td valign=top><b>Column Experiment</b></td><td valign=top><b>Row Experiment</b></td></tr>" + |
2 |
26 Feb 07 |
jari |
149 |
"<tr><td valign=top><b>Name</b></td><td valign=top>" + colName + "</td><td valign=top>" + rowName + "</td></tr>"; |
2 |
26 Feb 07 |
jari |
150 |
if(haveColor) |
2 |
26 Feb 07 |
jari |
151 |
message += "<tr><td valign=top><b>Experiment Color</b></td><td valign=top bgcolor=" + colColor + "></td><td valign=top bgcolor=" + rowColor + "></td></tr>"; |
2 |
26 Feb 07 |
jari |
152 |
|
2 |
26 Feb 07 |
jari |
153 |
message += "</table>" + |
2 |
26 Feb 07 |
jari |
154 |
"<h3>Experiment Distance</h3>" + |
2 |
26 Feb 07 |
jari |
155 |
"<table border=2 cellpadding=4 valign=top >" + |
2 |
26 Feb 07 |
jari |
156 |
"<tr><td valign=top><b>GDM Matrix Row </b></td><td width=34% valign=top>" + displayRowNum + "</td></tr>" + |
2 |
26 Feb 07 |
jari |
157 |
"<tr><td valign=top><b>GDM Matrix Column </b></td><td width=34% valign=top>" + displayColNum + "</td></tr>" + |
2 |
26 Feb 07 |
jari |
158 |
"<tr><td valign=top><b>Scaled Experiment Distance</b></td><td width=34% valign=top>" + expDistMatrix.get(col, row) + "</td></tr>" + |
2 |
26 Feb 07 |
jari |
159 |
"<tr><td valign=top><b>Actual Experiment Distance</b></td><td width=34% valign=top>" + rawMatrix.get(col, row) + "</td></tr>" + |
2 |
26 Feb 07 |
jari |
160 |
"<tr><td valign=top><b>Distance Metric</b></td><td width=34% valign=top>" + distanceMetric + "</td></tr>" + |
2 |
26 Feb 07 |
jari |
161 |
"<tr><td valign=top><b>Vector Size</b></td><td width=34% valign=top>" + this.vectorSize + "</td></tr>" + |
2 |
26 Feb 07 |
jari |
162 |
"<tr><td valign=top><b>Missing Values</b></td><td valign=top>" + colMissingValues + ", " + rowMissingValues + "</td></tr>" + |
2 |
26 Feb 07 |
jari |
163 |
"<tr><td valign=top><b>Distance Based on</b></td><td width=34% valign=top>" + this.distanceBasedOn+ "</td></tr>"; |
2 |
26 Feb 07 |
jari |
164 |
|
2 |
26 Feb 07 |
jari |
165 |
return message; |
2 |
26 Feb 07 |
jari |
166 |
} |
2 |
26 Feb 07 |
jari |
167 |
|
2 |
26 Feb 07 |
jari |
168 |
private void setValues(int col, int row) { |
2 |
26 Feb 07 |
jari |
169 |
|
2 |
26 Feb 07 |
jari |
170 |
int rows = this.expData.getFeaturesSize(); |
2 |
26 Feb 07 |
jari |
171 |
boolean [] rowMissingVector = new boolean[rows]; |
2 |
26 Feb 07 |
jari |
172 |
boolean [] colMissingVector = new boolean[rows]; |
2 |
26 Feb 07 |
jari |
173 |
|
2 |
26 Feb 07 |
jari |
174 |
for( int i=0; i< rows; i++) { |
2 |
26 Feb 07 |
jari |
175 |
rowMissingVector[i] = false; |
2 |
26 Feb 07 |
jari |
176 |
colMissingVector[i] = false; |
2 |
26 Feb 07 |
jari |
177 |
} |
2 |
26 Feb 07 |
jari |
178 |
|
2 |
26 Feb 07 |
jari |
179 |
for (int i = 0; i < rows; i++) { |
2 |
26 Feb 07 |
jari |
180 |
float value = experiment.get(i, row); |
2 |
26 Feb 07 |
jari |
181 |
if (Float.isNaN(value)) { |
2 |
26 Feb 07 |
jari |
182 |
rowMissingVector[i] = true; |
2 |
26 Feb 07 |
jari |
183 |
this.rowMissingValues ++; |
2 |
26 Feb 07 |
jari |
184 |
} |
2 |
26 Feb 07 |
jari |
185 |
} |
2 |
26 Feb 07 |
jari |
186 |
|
2 |
26 Feb 07 |
jari |
187 |
for (int i = 0; i < rows; i++) { |
2 |
26 Feb 07 |
jari |
188 |
float value = experiment.get(i, col); |
2 |
26 Feb 07 |
jari |
189 |
if (Float.isNaN(value)) { |
2 |
26 Feb 07 |
jari |
190 |
colMissingVector[i] = true; |
2 |
26 Feb 07 |
jari |
191 |
this.colMissingValues ++; |
2 |
26 Feb 07 |
jari |
192 |
} |
2 |
26 Feb 07 |
jari |
193 |
} |
2 |
26 Feb 07 |
jari |
194 |
|
2 |
26 Feb 07 |
jari |
195 |
for(int i =0; i<rows; i++) { |
2 |
26 Feb 07 |
jari |
196 |
if ((rowMissingVector[i] == false) && (colMissingVector[i] == false) && (row != col)) { |
2 |
26 Feb 07 |
jari |
197 |
this.distanceBasedOn++; |
2 |
26 Feb 07 |
jari |
198 |
} |
2 |
26 Feb 07 |
jari |
199 |
} |
2 |
26 Feb 07 |
jari |
200 |
} |
2 |
26 Feb 07 |
jari |
201 |
|
2 |
26 Feb 07 |
jari |
202 |
private void drawExperimentColor() { |
2 |
26 Feb 07 |
jari |
203 |
|
2 |
26 Feb 07 |
jari |
204 |
Graphics g = getGraphics(); |
2 |
26 Feb 07 |
jari |
205 |
|
2 |
26 Feb 07 |
jari |
206 |
if (g != null) { |
2 |
26 Feb 07 |
jari |
207 |
g.setColor(rowExperimentColor); |
2 |
26 Feb 07 |
jari |
208 |
g.fillRect(0, 0, 10, 10); |
2 |
26 Feb 07 |
jari |
209 |
|
2 |
26 Feb 07 |
jari |
210 |
g.setColor(colExperimentColor); |
2 |
26 Feb 07 |
jari |
211 |
g.fillRect(20, 0, 10, 10); |
2 |
26 Feb 07 |
jari |
212 |
} |
2 |
26 Feb 07 |
jari |
213 |
} |
2 |
26 Feb 07 |
jari |
214 |
|
2 |
26 Feb 07 |
jari |
215 |
|
2 |
26 Feb 07 |
jari |
216 |
class EventListener implements ActionListener, KeyListener { |
2 |
26 Feb 07 |
jari |
217 |
|
2 |
26 Feb 07 |
jari |
218 |
public void actionPerformed(ActionEvent event) { |
2 |
26 Feb 07 |
jari |
219 |
String command = event.getActionCommand(); |
2 |
26 Feb 07 |
jari |
220 |
if (command.equals("close")) { |
2 |
26 Feb 07 |
jari |
221 |
dispose(); |
2 |
26 Feb 07 |
jari |
222 |
} |
2 |
26 Feb 07 |
jari |
223 |
} |
2 |
26 Feb 07 |
jari |
224 |
|
2 |
26 Feb 07 |
jari |
225 |
public void keyPressed(KeyEvent event) { |
2 |
26 Feb 07 |
jari |
226 |
if (event.getKeyCode() == KeyEvent.VK_ENTER) { |
2 |
26 Feb 07 |
jari |
227 |
dispose(); |
2 |
26 Feb 07 |
jari |
228 |
} |
2 |
26 Feb 07 |
jari |
229 |
} |
2 |
26 Feb 07 |
jari |
230 |
|
2 |
26 Feb 07 |
jari |
231 |
public void keyReleased(KeyEvent event) {} |
2 |
26 Feb 07 |
jari |
232 |
public void keyTyped(KeyEvent event) {} |
2 |
26 Feb 07 |
jari |
233 |
} |
2 |
26 Feb 07 |
jari |
234 |
} |