2 |
26 Feb 07 |
jari |
1 |
/* |
2 |
26 Feb 07 |
jari |
Copyright @ 1999-2005, 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 |
* KNNClassificationEditor.java |
2 |
26 Feb 07 |
jari |
7 |
* |
2 |
26 Feb 07 |
jari |
* Created on September 8, 2003, 4:05 PM |
2 |
26 Feb 07 |
jari |
9 |
*/ |
2 |
26 Feb 07 |
jari |
10 |
|
2 |
26 Feb 07 |
jari |
11 |
package org.tigr.microarray.mev.cluster.gui.impl.knnc; |
2 |
26 Feb 07 |
jari |
12 |
|
2 |
26 Feb 07 |
jari |
13 |
import java.awt.Color; |
2 |
26 Feb 07 |
jari |
14 |
import java.awt.Dimension; |
2 |
26 Feb 07 |
jari |
15 |
import java.awt.GridBagConstraints; |
2 |
26 Feb 07 |
jari |
16 |
import java.awt.GridBagLayout; |
2 |
26 Feb 07 |
jari |
17 |
import java.awt.Toolkit; |
2 |
26 Feb 07 |
jari |
18 |
import java.awt.event.ActionEvent; |
2 |
26 Feb 07 |
jari |
19 |
import java.awt.event.ActionListener; |
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.FileOutputStream; |
2 |
26 Feb 07 |
jari |
23 |
import java.io.FileReader; |
2 |
26 Feb 07 |
jari |
24 |
import java.io.PrintWriter; |
2 |
26 Feb 07 |
jari |
25 |
import java.util.Arrays; |
2 |
26 Feb 07 |
jari |
26 |
import java.util.Vector; |
2 |
26 Feb 07 |
jari |
27 |
|
2 |
26 Feb 07 |
jari |
28 |
import javax.swing.ButtonGroup; |
2 |
26 Feb 07 |
jari |
29 |
import javax.swing.JButton; |
2 |
26 Feb 07 |
jari |
30 |
import javax.swing.JFileChooser; |
2 |
26 Feb 07 |
jari |
31 |
import javax.swing.JFrame; |
2 |
26 Feb 07 |
jari |
32 |
import javax.swing.JMenu; |
2 |
26 Feb 07 |
jari |
33 |
import javax.swing.JMenuBar; |
2 |
26 Feb 07 |
jari |
34 |
import javax.swing.JMenuItem; |
2 |
26 Feb 07 |
jari |
35 |
import javax.swing.JOptionPane; |
2 |
26 Feb 07 |
jari |
36 |
import javax.swing.JPanel; |
2 |
26 Feb 07 |
jari |
37 |
import javax.swing.JRadioButton; |
2 |
26 Feb 07 |
jari |
38 |
import javax.swing.JScrollPane; |
2 |
26 Feb 07 |
jari |
39 |
import javax.swing.JTable; |
2 |
26 Feb 07 |
jari |
40 |
import javax.swing.JTextArea; |
2 |
26 Feb 07 |
jari |
41 |
import javax.swing.border.EtchedBorder; |
2 |
26 Feb 07 |
jari |
42 |
import javax.swing.event.TableModelEvent; |
2 |
26 Feb 07 |
jari |
43 |
import javax.swing.event.TableModelListener; |
2 |
26 Feb 07 |
jari |
44 |
import javax.swing.table.AbstractTableModel; |
2 |
26 Feb 07 |
jari |
45 |
import javax.swing.table.TableColumn; |
2 |
26 Feb 07 |
jari |
46 |
import javax.swing.table.TableColumnModel; |
2 |
26 Feb 07 |
jari |
47 |
|
2 |
26 Feb 07 |
jari |
48 |
import org.tigr.microarray.mev.cluster.gui.IData; |
2 |
26 Feb 07 |
jari |
49 |
import org.tigr.microarray.mev.cluster.gui.IFramework; |
2 |
26 Feb 07 |
jari |
50 |
import org.tigr.util.StringSplitter; |
2 |
26 Feb 07 |
jari |
51 |
|
2 |
26 Feb 07 |
jari |
52 |
/** |
2 |
26 Feb 07 |
jari |
53 |
* |
2 |
26 Feb 07 |
jari |
* @author nbhagaba |
2 |
26 Feb 07 |
jari |
55 |
*/ |
2 |
26 Feb 07 |
jari |
56 |
public class KNNClassificationEditor extends javax.swing.JDialog {// JFrame { |
2 |
26 Feb 07 |
jari |
57 |
|
2 |
26 Feb 07 |
jari |
58 |
IFramework framework; |
2 |
26 Feb 07 |
jari |
59 |
IData data; |
2 |
26 Feb 07 |
jari |
60 |
boolean classifyGenes; |
2 |
26 Feb 07 |
jari |
61 |
private boolean stopHere = true; |
2 |
26 Feb 07 |
jari |
62 |
private boolean nextPressed = false; |
2 |
26 Feb 07 |
jari |
63 |
private boolean incompatible = false; |
2 |
26 Feb 07 |
jari |
64 |
private boolean fileSaved = false; |
2 |
26 Feb 07 |
jari |
65 |
int numClasses; |
2 |
26 Feb 07 |
jari |
66 |
String[] fieldNames; |
2 |
26 Feb 07 |
jari |
67 |
int numGenes, numExps; |
2 |
26 Feb 07 |
jari |
68 |
JTable knnClassTable; |
2 |
26 Feb 07 |
jari |
69 |
KNNClassTableModel kModel; |
2 |
26 Feb 07 |
jari |
70 |
JMenuBar menuBar; |
2 |
26 Feb 07 |
jari |
71 |
JMenu fileMenu, editMenu, toolsMenu, assignSubMenu, sortAscMenu, sortDescMenu; |
2 |
26 Feb 07 |
jari |
72 |
JMenuItem saveItem, closeItem, selectAllItem, searchItem, sortByClassItem, origOrderItem; |
2 |
26 Feb 07 |
jari |
73 |
JMenuItem[] classItem, labelsAscItem, labelsDescItem; |
2 |
26 Feb 07 |
jari |
74 |
JRadioButton saveButton, doNotSaveButton; |
2 |
26 Feb 07 |
jari |
75 |
JButton nextButton; |
2 |
26 Feb 07 |
jari |
76 |
JFrame mainFrame; |
2 |
26 Feb 07 |
jari |
77 |
|
2 |
26 Feb 07 |
jari |
78 |
KNNCSearchDialog searchDialog; |
2 |
26 Feb 07 |
jari |
79 |
|
2 |
26 Feb 07 |
jari |
//SortListener sorter; |
2 |
26 Feb 07 |
jari |
81 |
|
2 |
26 Feb 07 |
jari |
82 |
Object[][] origData; |
2 |
26 Feb 07 |
jari |
83 |
|
2 |
26 Feb 07 |
jari |
/** Creates a new instance of KNNClassificationEditor */ |
2 |
26 Feb 07 |
jari |
85 |
public KNNClassificationEditor(IFramework framework, boolean classifyGenes, int numClasses) { |
2 |
26 Feb 07 |
jari |
86 |
super(framework.getFrame(), true); |
2 |
26 Feb 07 |
jari |
87 |
this.setTitle("KNN Classification Editor"); |
2 |
26 Feb 07 |
jari |
88 |
mainFrame = (JFrame)(framework.getFrame()); |
2 |
26 Feb 07 |
jari |
//super((JFrame)(framework.getFrame()), "KNN Classification Editor", true); |
2 |
26 Feb 07 |
jari |
90 |
setBounds(0, 0, 550, 800); |
2 |
26 Feb 07 |
jari |
91 |
setBackground(Color.white); |
2 |
26 Feb 07 |
jari |
92 |
setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); |
2 |
26 Feb 07 |
jari |
93 |
this.framework = framework; |
2 |
26 Feb 07 |
jari |
94 |
this.data = framework.getData(); |
2 |
26 Feb 07 |
jari |
95 |
this.numGenes = data.getFeaturesSize(); |
2 |
26 Feb 07 |
jari |
96 |
this.numExps = data.getFeaturesCount(); |
2 |
26 Feb 07 |
jari |
97 |
this.fieldNames = data.getFieldNames(); |
2 |
26 Feb 07 |
jari |
98 |
this.classifyGenes = classifyGenes; |
2 |
26 Feb 07 |
jari |
99 |
this.numClasses = numClasses; |
2 |
26 Feb 07 |
jari |
100 |
|
2 |
26 Feb 07 |
jari |
101 |
menuBar = new JMenuBar(); |
2 |
26 Feb 07 |
jari |
102 |
this.setJMenuBar(menuBar); |
2 |
26 Feb 07 |
jari |
103 |
|
2 |
26 Feb 07 |
jari |
104 |
GridBagLayout gridbag = new GridBagLayout(); |
2 |
26 Feb 07 |
jari |
105 |
GridBagConstraints constraints = new GridBagConstraints(); |
2 |
26 Feb 07 |
jari |
106 |
constraints.fill = GridBagConstraints.BOTH; |
2 |
26 Feb 07 |
jari |
107 |
|
2 |
26 Feb 07 |
jari |
108 |
JPanel pane = new JPanel(); |
2 |
26 Feb 07 |
jari |
109 |
pane.setLayout(gridbag); |
2 |
26 Feb 07 |
jari |
110 |
|
2 |
26 Feb 07 |
jari |
111 |
JPanel tablePanel = new JPanel(); |
2 |
26 Feb 07 |
jari |
112 |
GridBagLayout grid1 = new GridBagLayout(); |
2 |
26 Feb 07 |
jari |
113 |
tablePanel.setLayout(grid1); |
2 |
26 Feb 07 |
jari |
114 |
|
2 |
26 Feb 07 |
jari |
115 |
kModel = new KNNClassTableModel(); |
2 |
26 Feb 07 |
jari |
116 |
knnClassTable = new JTable(kModel); |
2 |
26 Feb 07 |
jari |
117 |
knnClassTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); |
2 |
26 Feb 07 |
jari |
118 |
TableColumn column = null; |
2 |
26 Feb 07 |
jari |
119 |
for (int i = 0; i < kModel.getColumnCount(); i++) { |
2 |
26 Feb 07 |
jari |
120 |
column = knnClassTable.getColumnModel().getColumn(i); |
2 |
26 Feb 07 |
jari |
121 |
column.setMinWidth(30); |
2 |
26 Feb 07 |
jari |
122 |
} |
2 |
26 Feb 07 |
jari |
123 |
knnClassTable.setColumnModel(new KNNClassTableColumnModel(knnClassTable.getColumnModel())); |
2 |
26 Feb 07 |
jari |
124 |
knnClassTable.getModel().addTableModelListener(new ClassSelectionListener()); |
2 |
26 Feb 07 |
jari |
125 |
|
2 |
26 Feb 07 |
jari |
126 |
searchDialog = new KNNCSearchDialog(this, knnClassTable, numClasses, false); //persistent search dialog |
2 |
26 Feb 07 |
jari |
//JOptionPane.getFrameForComponent(this) |
2 |
26 Feb 07 |
jari |
128 |
JScrollPane scroll = new JScrollPane(knnClassTable); |
2 |
26 Feb 07 |
jari |
129 |
buildConstraints(constraints, 0, 0, 1, 1, 100, 100); |
2 |
26 Feb 07 |
jari |
130 |
grid1.setConstraints(scroll, constraints); |
2 |
26 Feb 07 |
jari |
131 |
tablePanel.add(scroll); |
2 |
26 Feb 07 |
jari |
132 |
|
2 |
26 Feb 07 |
jari |
133 |
buildConstraints(constraints, 0, 0, 1, 1, 100, 90); |
2 |
26 Feb 07 |
jari |
134 |
gridbag.setConstraints(tablePanel, constraints); |
2 |
26 Feb 07 |
jari |
135 |
pane.add(tablePanel); |
2 |
26 Feb 07 |
jari |
136 |
|
2 |
26 Feb 07 |
jari |
137 |
JPanel bottomPanel = new JPanel(); |
2 |
26 Feb 07 |
jari |
138 |
bottomPanel.setBorder(new EtchedBorder()); |
2 |
26 Feb 07 |
jari |
139 |
bottomPanel.setBackground(Color.white); |
2 |
26 Feb 07 |
jari |
140 |
GridBagLayout grid2 = new GridBagLayout(); |
2 |
26 Feb 07 |
jari |
141 |
bottomPanel.setLayout(grid2); |
2 |
26 Feb 07 |
jari |
142 |
|
2 |
26 Feb 07 |
jari |
143 |
saveButton = new JRadioButton("Save classification to file", true); |
2 |
26 Feb 07 |
jari |
144 |
saveButton.setBackground(Color.white); |
2 |
26 Feb 07 |
jari |
145 |
doNotSaveButton = new JRadioButton("Do not save classification to file", false); |
2 |
26 Feb 07 |
jari |
146 |
doNotSaveButton.setBackground(Color.white); |
2 |
26 Feb 07 |
jari |
147 |
ButtonGroup saveOrNot = new ButtonGroup(); |
2 |
26 Feb 07 |
jari |
148 |
saveOrNot.add(saveButton); |
2 |
26 Feb 07 |
jari |
149 |
saveOrNot.add(doNotSaveButton); |
2 |
26 Feb 07 |
jari |
150 |
|
2 |
26 Feb 07 |
jari |
151 |
final JFileChooser fc = new JFileChooser(); |
2 |
26 Feb 07 |
jari |
152 |
fc.setCurrentDirectory(new File("Data")); |
2 |
26 Feb 07 |
jari |
153 |
fc.setDialogTitle("Save classification"); |
2 |
26 Feb 07 |
jari |
154 |
|
2 |
26 Feb 07 |
jari |
155 |
nextButton = new JButton("Next >"); |
2 |
26 Feb 07 |
jari |
156 |
nextButton.addActionListener(new ActionListener() { |
2 |
26 Feb 07 |
jari |
157 |
public void actionPerformed(ActionEvent evt) { |
2 |
26 Feb 07 |
jari |
158 |
if (doNotSaveButton.isSelected()) { |
2 |
26 Feb 07 |
jari |
159 |
KNNClassificationEditor.this.dispose(); |
2 |
26 Feb 07 |
jari |
160 |
stopHere = false; |
2 |
26 Feb 07 |
jari |
161 |
nextPressed = true; |
2 |
26 Feb 07 |
jari |
//KNNClassificationEditor.this.dispose(); |
2 |
26 Feb 07 |
jari |
163 |
} else { |
2 |
26 Feb 07 |
jari |
164 |
int returnVal = fc.showSaveDialog(KNNClassificationEditor.this); |
2 |
26 Feb 07 |
jari |
165 |
if (returnVal == JFileChooser.APPROVE_OPTION) { |
2 |
26 Feb 07 |
jari |
166 |
File file = fc.getSelectedFile(); |
2 |
26 Feb 07 |
jari |
167 |
saveToFile(file); |
2 |
26 Feb 07 |
jari |
168 |
KNNClassificationEditor.this.dispose(); |
2 |
26 Feb 07 |
jari |
169 |
KNNCSecondDialog kSecDialog = new KNNCSecondDialog(mainFrame, true); |
2 |
26 Feb 07 |
jari |
170 |
kSecDialog.setVisible(true); |
2 |
26 Feb 07 |
jari |
171 |
if (!kSecDialog.proceed()) { |
2 |
26 Feb 07 |
jari |
172 |
stopHere = true; |
2 |
26 Feb 07 |
jari |
173 |
} else { |
2 |
26 Feb 07 |
jari |
174 |
stopHere = false; |
2 |
26 Feb 07 |
jari |
175 |
} |
2 |
26 Feb 07 |
jari |
176 |
fileSaved = true; |
2 |
26 Feb 07 |
jari |
177 |
nextPressed = true; |
2 |
26 Feb 07 |
jari |
178 |
/* |
2 |
26 Feb 07 |
jari |
KNNClassificationEditor.this.dispose(); |
2 |
26 Feb 07 |
jari |
KNNCSecondDialog kSecDialog = new KNNCSecondDialog(mainFrame, true); |
2 |
26 Feb 07 |
jari |
kSecDialog.setVisible(true); |
2 |
26 Feb 07 |
jari |
if (!kSecDialog.proceed()) { |
2 |
26 Feb 07 |
jari |
stopHere = true; |
2 |
26 Feb 07 |
jari |
184 |
} |
2 |
26 Feb 07 |
jari |
185 |
*/ |
2 |
26 Feb 07 |
jari |
186 |
} |
2 |
26 Feb 07 |
jari |
187 |
} |
2 |
26 Feb 07 |
jari |
188 |
} |
2 |
26 Feb 07 |
jari |
189 |
}); |
2 |
26 Feb 07 |
jari |
190 |
constraints.fill = GridBagConstraints.NONE; |
2 |
26 Feb 07 |
jari |
191 |
|
2 |
26 Feb 07 |
jari |
192 |
buildConstraints(constraints, 0, 0, 1, 1, 100, 33); |
2 |
26 Feb 07 |
jari |
193 |
grid2.setConstraints(saveButton, constraints); |
2 |
26 Feb 07 |
jari |
194 |
bottomPanel.add(saveButton); |
2 |
26 Feb 07 |
jari |
195 |
|
2 |
26 Feb 07 |
jari |
196 |
buildConstraints(constraints, 0, 1, 1, 1, 0, 33); |
2 |
26 Feb 07 |
jari |
197 |
grid2.setConstraints(doNotSaveButton, constraints); |
2 |
26 Feb 07 |
jari |
198 |
bottomPanel.add(doNotSaveButton); |
2 |
26 Feb 07 |
jari |
199 |
|
2 |
26 Feb 07 |
jari |
200 |
buildConstraints(constraints, 0, 2, 1, 1, 0, 34); |
2 |
26 Feb 07 |
jari |
201 |
grid2.setConstraints(nextButton, constraints); |
2 |
26 Feb 07 |
jari |
202 |
bottomPanel.add(nextButton); |
2 |
26 Feb 07 |
jari |
203 |
|
2 |
26 Feb 07 |
jari |
204 |
constraints.fill = GridBagConstraints.BOTH; |
2 |
26 Feb 07 |
jari |
205 |
buildConstraints(constraints, 0, 1, 1, 1, 0, 10); |
2 |
26 Feb 07 |
jari |
206 |
gridbag.setConstraints(bottomPanel, constraints); |
2 |
26 Feb 07 |
jari |
207 |
pane.add(bottomPanel); |
2 |
26 Feb 07 |
jari |
208 |
|
2 |
26 Feb 07 |
jari |
209 |
this.setContentPane(pane); |
2 |
26 Feb 07 |
jari |
210 |
|
2 |
26 Feb 07 |
jari |
211 |
if (classifyGenes) { |
2 |
26 Feb 07 |
jari |
212 |
labelsAscItem = new JMenuItem[fieldNames.length]; |
2 |
26 Feb 07 |
jari |
213 |
labelsDescItem = new JMenuItem[fieldNames.length]; |
2 |
26 Feb 07 |
jari |
214 |
for (int i = 0; i < fieldNames.length; i++) { |
2 |
26 Feb 07 |
jari |
215 |
labelsAscItem[i] = new JMenuItem(fieldNames[i]); |
2 |
26 Feb 07 |
jari |
216 |
labelsDescItem[i] = new JMenuItem(fieldNames[i]); |
2 |
26 Feb 07 |
jari |
217 |
} |
2 |
26 Feb 07 |
jari |
218 |
} else { |
2 |
26 Feb 07 |
jari |
219 |
labelsAscItem = new JMenuItem[1]; |
2 |
26 Feb 07 |
jari |
220 |
labelsAscItem[0] = new JMenuItem("Sample Name"); |
2 |
26 Feb 07 |
jari |
221 |
labelsDescItem = new JMenuItem[1]; |
2 |
26 Feb 07 |
jari |
222 |
labelsDescItem[0] = new JMenuItem("Sample Name"); |
2 |
26 Feb 07 |
jari |
223 |
} |
2 |
26 Feb 07 |
jari |
224 |
|
2 |
26 Feb 07 |
jari |
225 |
for (int i = 0; i < labelsAscItem.length; i++) { |
2 |
26 Feb 07 |
jari |
226 |
labelsAscItem[i].addActionListener(new SortListener(true, false)); |
2 |
26 Feb 07 |
jari |
227 |
labelsDescItem[i].addActionListener(new SortListener(false, false)); |
2 |
26 Feb 07 |
jari |
228 |
} |
2 |
26 Feb 07 |
jari |
229 |
|
2 |
26 Feb 07 |
jari |
230 |
classItem = new JMenuItem[numClasses + 1]; |
2 |
26 Feb 07 |
jari |
231 |
|
2 |
26 Feb 07 |
jari |
232 |
for (int i = 0; i < numClasses; i++) { |
2 |
26 Feb 07 |
jari |
233 |
classItem[i] = new JMenuItem("Class " + (i + 1)); |
2 |
26 Feb 07 |
jari |
234 |
} |
2 |
26 Feb 07 |
jari |
235 |
|
2 |
26 Feb 07 |
jari |
236 |
classItem[numClasses] = new JMenuItem("Neutral"); |
2 |
26 Feb 07 |
jari |
237 |
|
2 |
26 Feb 07 |
jari |
238 |
for (int i = 0; i < classItem.length; i++) { |
2 |
26 Feb 07 |
jari |
239 |
classItem[i].addActionListener(new AssignListener()); |
2 |
26 Feb 07 |
jari |
240 |
} |
2 |
26 Feb 07 |
jari |
241 |
/* |
2 |
26 Feb 07 |
jari |
fileMenu = new JMenu("File"); |
2 |
26 Feb 07 |
jari |
saveItem = new JMenuItem("Save classification"); |
2 |
26 Feb 07 |
jari |
fileMenu.add(saveItem); |
2 |
26 Feb 07 |
jari |
closeItem = new JMenuItem("Close editor"); |
2 |
26 Feb 07 |
jari |
246 |
|
2 |
26 Feb 07 |
jari |
closeItem.addActionListener(new ActionListener() { |
2 |
26 Feb 07 |
jari |
public void actionPerformed(ActionEvent evt) { |
2 |
26 Feb 07 |
jari |
KNNClassificationEditor.this.dispose(); |
2 |
26 Feb 07 |
jari |
250 |
} |
2 |
26 Feb 07 |
jari |
251 |
}); |
2 |
26 Feb 07 |
jari |
252 |
|
2 |
26 Feb 07 |
jari |
fileMenu.add(closeItem); |
2 |
26 Feb 07 |
jari |
menuBar.add(fileMenu); |
2 |
26 Feb 07 |
jari |
255 |
*/ |
2 |
26 Feb 07 |
jari |
256 |
editMenu = new JMenu("Edit"); |
2 |
26 Feb 07 |
jari |
257 |
selectAllItem = new JMenuItem("Select all rows"); |
2 |
26 Feb 07 |
jari |
258 |
selectAllItem.addActionListener(new ActionListener() { |
2 |
26 Feb 07 |
jari |
259 |
public void actionPerformed(ActionEvent evt) { |
2 |
26 Feb 07 |
jari |
260 |
knnClassTable.selectAll(); |
2 |
26 Feb 07 |
jari |
261 |
} |
2 |
26 Feb 07 |
jari |
262 |
}); |
2 |
26 Feb 07 |
jari |
263 |
editMenu.add(selectAllItem); |
2 |
26 Feb 07 |
jari |
264 |
assignSubMenu = new JMenu("Assign selected rows to"); |
2 |
26 Feb 07 |
jari |
265 |
for (int i = 0; i < classItem.length; i++) { |
2 |
26 Feb 07 |
jari |
266 |
assignSubMenu.add(classItem[i]); |
2 |
26 Feb 07 |
jari |
267 |
} |
2 |
26 Feb 07 |
jari |
268 |
editMenu.add(assignSubMenu); |
2 |
26 Feb 07 |
jari |
269 |
menuBar.add(editMenu); |
2 |
26 Feb 07 |
jari |
270 |
|
2 |
26 Feb 07 |
jari |
271 |
toolsMenu = new JMenu("Tools"); |
2 |
26 Feb 07 |
jari |
272 |
searchItem = new JMenuItem("Search"); |
2 |
26 Feb 07 |
jari |
273 |
searchItem.addActionListener(new ActionListener() { |
2 |
26 Feb 07 |
jari |
274 |
public void actionPerformed(ActionEvent evt) { |
2 |
26 Feb 07 |
jari |
275 |
searchTable(); |
2 |
26 Feb 07 |
jari |
276 |
} |
2 |
26 Feb 07 |
jari |
277 |
}); |
2 |
26 Feb 07 |
jari |
278 |
toolsMenu.add(searchItem); |
2 |
26 Feb 07 |
jari |
279 |
sortAscMenu = new JMenu("Sort ascending by"); |
2 |
26 Feb 07 |
jari |
280 |
for (int i = 0; i < labelsAscItem.length; i++) { |
2 |
26 Feb 07 |
jari |
281 |
sortAscMenu.add(labelsAscItem[i]); |
2 |
26 Feb 07 |
jari |
282 |
} |
2 |
26 Feb 07 |
jari |
283 |
toolsMenu.add(sortAscMenu); |
2 |
26 Feb 07 |
jari |
284 |
sortDescMenu = new JMenu("Sort descending by"); |
2 |
26 Feb 07 |
jari |
285 |
for (int i = 0; i < labelsDescItem.length; i++) { |
2 |
26 Feb 07 |
jari |
286 |
sortDescMenu.add(labelsDescItem[i]); |
2 |
26 Feb 07 |
jari |
287 |
} |
2 |
26 Feb 07 |
jari |
288 |
toolsMenu.add(sortDescMenu); |
2 |
26 Feb 07 |
jari |
289 |
sortByClassItem = new JMenuItem("Sort by classification"); |
2 |
26 Feb 07 |
jari |
290 |
sortByClassItem.addActionListener(new ActionListener() { |
2 |
26 Feb 07 |
jari |
291 |
public void actionPerformed(ActionEvent evt) { |
2 |
26 Feb 07 |
jari |
292 |
sortByClassification(); |
2 |
26 Feb 07 |
jari |
293 |
} |
2 |
26 Feb 07 |
jari |
294 |
}); |
2 |
26 Feb 07 |
jari |
295 |
toolsMenu.add(sortByClassItem); |
2 |
26 Feb 07 |
jari |
296 |
origOrderItem = new JMenuItem("Restore original ordering"); |
2 |
26 Feb 07 |
jari |
297 |
origOrderItem.addActionListener(new SortListener(true, true)); |
2 |
26 Feb 07 |
jari |
298 |
toolsMenu.add(origOrderItem); |
2 |
26 Feb 07 |
jari |
299 |
|
2 |
26 Feb 07 |
jari |
300 |
menuBar.add(toolsMenu); |
2 |
26 Feb 07 |
jari |
301 |
} |
2 |
26 Feb 07 |
jari |
302 |
|
2 |
26 Feb 07 |
jari |
303 |
|
2 |
26 Feb 07 |
jari |
304 |
void buildConstraints(GridBagConstraints gbc, int gx, int gy, |
2 |
26 Feb 07 |
jari |
305 |
int gw, int gh, int wx, int wy) { |
2 |
26 Feb 07 |
jari |
306 |
|
2 |
26 Feb 07 |
jari |
307 |
gbc.gridx = gx; |
2 |
26 Feb 07 |
jari |
308 |
gbc.gridy = gy; |
2 |
26 Feb 07 |
jari |
309 |
gbc.gridwidth = gw; |
2 |
26 Feb 07 |
jari |
310 |
gbc.gridheight = gh; |
2 |
26 Feb 07 |
jari |
311 |
gbc.weightx = wx; |
2 |
26 Feb 07 |
jari |
312 |
gbc.weighty = wy; |
2 |
26 Feb 07 |
jari |
313 |
} |
2 |
26 Feb 07 |
jari |
314 |
|
2 |
26 Feb 07 |
jari |
315 |
public void showModal(boolean visible) { |
2 |
26 Feb 07 |
jari |
316 |
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); |
2 |
26 Feb 07 |
jari |
317 |
setLocation((screenSize.width - getSize().width)/2, (screenSize.height - getSize().height)/2); |
2 |
26 Feb 07 |
jari |
318 |
showWarningMessage(); |
2 |
26 Feb 07 |
jari |
319 |
super.setVisible(visible); |
2 |
26 Feb 07 |
jari |
320 |
} |
2 |
26 Feb 07 |
jari |
321 |
|
2 |
26 Feb 07 |
jari |
322 |
class KNNClassifierTable extends JTable { |
2 |
26 Feb 07 |
jari |
323 |
} |
2 |
26 Feb 07 |
jari |
324 |
|
2 |
26 Feb 07 |
jari |
325 |
class KNNClassTableModel extends AbstractTableModel { |
2 |
26 Feb 07 |
jari |
326 |
String[] columnNames; |
2 |
26 Feb 07 |
jari |
327 |
Object tableData[][]; |
2 |
26 Feb 07 |
jari |
328 |
int indexLastClass; |
2 |
26 Feb 07 |
jari |
329 |
|
2 |
26 Feb 07 |
jari |
330 |
public KNNClassTableModel() { |
2 |
26 Feb 07 |
jari |
331 |
indexLastClass = numClasses; |
2 |
26 Feb 07 |
jari |
332 |
if (classifyGenes) { |
2 |
26 Feb 07 |
jari |
333 |
columnNames = new String[fieldNames.length + numClasses + 2]; |
2 |
26 Feb 07 |
jari |
334 |
columnNames[0] = "Index"; |
2 |
26 Feb 07 |
jari |
335 |
for (int i = 0; i < numClasses; i++) { |
2 |
26 Feb 07 |
jari |
336 |
columnNames[i + 1] = "Class " + (i+1); |
2 |
26 Feb 07 |
jari |
337 |
} |
2 |
26 Feb 07 |
jari |
338 |
columnNames[numClasses + 1] = "Neutral"; |
2 |
26 Feb 07 |
jari |
339 |
|
2 |
26 Feb 07 |
jari |
340 |
for (int i = 0; i < fieldNames.length; i++) { |
2 |
26 Feb 07 |
jari |
341 |
columnNames[numClasses + 2 + i] = fieldNames[i]; |
2 |
26 Feb 07 |
jari |
342 |
} |
2 |
26 Feb 07 |
jari |
343 |
|
2 |
26 Feb 07 |
jari |
344 |
tableData = new Object[numGenes][columnNames.length]; |
2 |
26 Feb 07 |
jari |
345 |
|
2 |
26 Feb 07 |
jari |
346 |
for (int i = 0; i < tableData.length; i++) { |
2 |
26 Feb 07 |
jari |
347 |
for (int j = 0; j < columnNames.length; j++) { |
2 |
26 Feb 07 |
jari |
348 |
if (j == 0) { |
2 |
26 Feb 07 |
jari |
349 |
tableData[i][j] = new Integer(i); |
2 |
26 Feb 07 |
jari |
350 |
} else if ((j > 0) && (j < (numClasses + 1))) { |
2 |
26 Feb 07 |
jari |
351 |
tableData[i][j] = new Boolean(false); |
2 |
26 Feb 07 |
jari |
352 |
} else if (j == numClasses + 1) { |
2 |
26 Feb 07 |
jari |
353 |
tableData[i][j] = new Boolean(true); |
2 |
26 Feb 07 |
jari |
354 |
} else { |
2 |
26 Feb 07 |
jari |
355 |
tableData[i][j] = data.getElementAttribute(i, j - (numClasses + 2)); |
2 |
26 Feb 07 |
jari |
356 |
} |
2 |
26 Feb 07 |
jari |
357 |
} |
2 |
26 Feb 07 |
jari |
358 |
} |
2 |
26 Feb 07 |
jari |
359 |
|
2 |
26 Feb 07 |
jari |
360 |
} else { // (!classifyGenes) |
2 |
26 Feb 07 |
jari |
361 |
columnNames = new String[numClasses + 3]; |
2 |
26 Feb 07 |
jari |
362 |
columnNames[0] = "Index"; |
2 |
26 Feb 07 |
jari |
363 |
for (int i = 0; i < numClasses; i++) { |
2 |
26 Feb 07 |
jari |
364 |
columnNames[i + 1] = "Class " + (i+1); |
2 |
26 Feb 07 |
jari |
365 |
} |
2 |
26 Feb 07 |
jari |
366 |
columnNames[numClasses + 1] = "Neutral"; |
2 |
26 Feb 07 |
jari |
367 |
columnNames[numClasses + 2] = "Sample Name"; |
2 |
26 Feb 07 |
jari |
368 |
tableData = new Object[numExps][columnNames.length]; |
2 |
26 Feb 07 |
jari |
369 |
|
2 |
26 Feb 07 |
jari |
370 |
for (int i = 0; i < tableData.length; i++) { |
2 |
26 Feb 07 |
jari |
371 |
for (int j = 0; j < columnNames.length; j++) { |
2 |
26 Feb 07 |
jari |
372 |
if (j == 0) { |
2 |
26 Feb 07 |
jari |
373 |
tableData[i][j] = new Integer(i); |
2 |
26 Feb 07 |
jari |
374 |
} else if ((j > 0) && (j < (numClasses + 1))) { |
2 |
26 Feb 07 |
jari |
375 |
tableData[i][j] = new Boolean(false); |
2 |
26 Feb 07 |
jari |
376 |
} else if (j == numClasses + 1) { |
2 |
26 Feb 07 |
jari |
377 |
tableData[i][j] = new Boolean(true); |
2 |
26 Feb 07 |
jari |
378 |
} else if (j == numClasses + 2) { |
2 |
26 Feb 07 |
jari |
379 |
tableData[i][j] = data.getFullSampleName(i); |
2 |
26 Feb 07 |
jari |
380 |
} |
2 |
26 Feb 07 |
jari |
381 |
} |
2 |
26 Feb 07 |
jari |
382 |
} |
2 |
26 Feb 07 |
jari |
383 |
} |
2 |
26 Feb 07 |
jari |
384 |
|
2 |
26 Feb 07 |
jari |
385 |
origData = new Object[tableData.length][tableData[0].length]; |
2 |
26 Feb 07 |
jari |
386 |
|
2 |
26 Feb 07 |
jari |
387 |
for (int i = 0; i < tableData.length; i++) { |
2 |
26 Feb 07 |
jari |
388 |
for (int j = 0; j < tableData[0].length; j++) { |
2 |
26 Feb 07 |
jari |
389 |
origData[i][j] = tableData[i][j]; |
2 |
26 Feb 07 |
jari |
390 |
} |
2 |
26 Feb 07 |
jari |
391 |
} |
2 |
26 Feb 07 |
jari |
392 |
|
2 |
26 Feb 07 |
jari |
393 |
} |
2 |
26 Feb 07 |
jari |
394 |
|
2 |
26 Feb 07 |
jari |
395 |
public int getColumnCount() { |
2 |
26 Feb 07 |
jari |
396 |
return columnNames.length; |
2 |
26 Feb 07 |
jari |
397 |
} |
2 |
26 Feb 07 |
jari |
398 |
|
2 |
26 Feb 07 |
jari |
399 |
public int getRowCount() { |
2 |
26 Feb 07 |
jari |
400 |
return tableData.length; |
2 |
26 Feb 07 |
jari |
401 |
} |
2 |
26 Feb 07 |
jari |
402 |
|
2 |
26 Feb 07 |
jari |
403 |
public String getColumnName(int col) { |
2 |
26 Feb 07 |
jari |
404 |
return columnNames[col]; |
2 |
26 Feb 07 |
jari |
405 |
} |
2 |
26 Feb 07 |
jari |
406 |
|
2 |
26 Feb 07 |
jari |
407 |
public int getColumnIndex(String name) { |
2 |
26 Feb 07 |
jari |
408 |
int i; |
2 |
26 Feb 07 |
jari |
409 |
for (i = 0; i < columnNames.length; i++) { |
2 |
26 Feb 07 |
jari |
410 |
if (columnNames[i].equals(name)) { |
2 |
26 Feb 07 |
jari |
411 |
break; |
2 |
26 Feb 07 |
jari |
412 |
} |
2 |
26 Feb 07 |
jari |
413 |
} |
2 |
26 Feb 07 |
jari |
414 |
if (i < columnNames.length) { |
2 |
26 Feb 07 |
jari |
415 |
return i; |
2 |
26 Feb 07 |
jari |
416 |
} else { |
2 |
26 Feb 07 |
jari |
417 |
return -1; |
2 |
26 Feb 07 |
jari |
418 |
} |
2 |
26 Feb 07 |
jari |
419 |
} |
2 |
26 Feb 07 |
jari |
420 |
|
2 |
26 Feb 07 |
jari |
421 |
public Object getValueAt(int row, int col) { |
2 |
26 Feb 07 |
jari |
422 |
return tableData[row][col]; |
2 |
26 Feb 07 |
jari |
423 |
} |
2 |
26 Feb 07 |
jari |
424 |
|
2 |
26 Feb 07 |
jari |
425 |
public void setValueAt(Object value, int row, int col) { |
2 |
26 Feb 07 |
jari |
426 |
tableData[row][col] = value; |
2 |
26 Feb 07 |
jari |
//fireTableCellUpdated(row, col); |
2 |
26 Feb 07 |
jari |
428 |
this.fireTableChanged(new TableModelEvent(this, row, row, col)); |
2 |
26 Feb 07 |
jari |
429 |
} |
2 |
26 Feb 07 |
jari |
430 |
|
2 |
26 Feb 07 |
jari |
431 |
|
2 |
26 Feb 07 |
jari |
432 |
public Class getColumnClass(int c) { |
2 |
26 Feb 07 |
jari |
433 |
if (c == 0) { |
2 |
26 Feb 07 |
jari |
434 |
return java.lang.Integer.class; |
2 |
26 Feb 07 |
jari |
435 |
} else if ((c > 0) && (c <= (numClasses + 1))) { |
2 |
26 Feb 07 |
jari |
436 |
return java.lang.Boolean.class; |
2 |
26 Feb 07 |
jari |
437 |
} else { |
2 |
26 Feb 07 |
jari |
438 |
return getValueAt(0, c).getClass(); |
2 |
26 Feb 07 |
jari |
439 |
} |
2 |
26 Feb 07 |
jari |
440 |
} |
2 |
26 Feb 07 |
jari |
441 |
|
2 |
26 Feb 07 |
jari |
442 |
|
2 |
26 Feb 07 |
jari |
443 |
public boolean isCellEditable(int row, int col) { |
2 |
26 Feb 07 |
jari |
//Note that the data/cell address is constant, |
2 |
26 Feb 07 |
jari |
//no matter where the cell appears onscreen. |
2 |
26 Feb 07 |
jari |
446 |
if ((col > 0) && (col <= (numClasses + 1))) { |
2 |
26 Feb 07 |
jari |
447 |
return true; |
2 |
26 Feb 07 |
jari |
448 |
} else { |
2 |
26 Feb 07 |
jari |
449 |
return false; |
2 |
26 Feb 07 |
jari |
450 |
} |
2 |
26 Feb 07 |
jari |
451 |
} |
2 |
26 Feb 07 |
jari |
452 |
} |
2 |
26 Feb 07 |
jari |
453 |
|
2 |
26 Feb 07 |
jari |
454 |
|
2 |
26 Feb 07 |
jari |
455 |
class KNNClassTableColumnModel implements TableColumnModel { |
2 |
26 Feb 07 |
jari |
456 |
|
2 |
26 Feb 07 |
jari |
457 |
TableColumnModel tcm; |
2 |
26 Feb 07 |
jari |
458 |
|
2 |
26 Feb 07 |
jari |
459 |
public KNNClassTableColumnModel(TableColumnModel TCM) { |
2 |
26 Feb 07 |
jari |
460 |
this.tcm = TCM; |
2 |
26 Feb 07 |
jari |
461 |
} |
2 |
26 Feb 07 |
jari |
462 |
|
2 |
26 Feb 07 |
jari |
463 |
public void addColumn(javax.swing.table.TableColumn tableColumn) { |
2 |
26 Feb 07 |
jari |
464 |
tcm.addColumn(tableColumn); |
2 |
26 Feb 07 |
jari |
465 |
} |
2 |
26 Feb 07 |
jari |
466 |
|
2 |
26 Feb 07 |
jari |
467 |
public void addColumnModelListener(javax.swing.event.TableColumnModelListener tableColumnModelListener) { |
2 |
26 Feb 07 |
jari |
468 |
tcm.addColumnModelListener(tableColumnModelListener); |
2 |
26 Feb 07 |
jari |
469 |
} |
2 |
26 Feb 07 |
jari |
470 |
|
2 |
26 Feb 07 |
jari |
471 |
public javax.swing.table.TableColumn getColumn(int param) { |
2 |
26 Feb 07 |
jari |
472 |
return tcm.getColumn(param); |
2 |
26 Feb 07 |
jari |
473 |
} |
2 |
26 Feb 07 |
jari |
474 |
|
2 |
26 Feb 07 |
jari |
475 |
public int getColumnCount() { |
2 |
26 Feb 07 |
jari |
476 |
return tcm.getColumnCount(); |
2 |
26 Feb 07 |
jari |
477 |
} |
2 |
26 Feb 07 |
jari |
478 |
|
2 |
26 Feb 07 |
jari |
479 |
public int getColumnIndex(Object obj) { |
2 |
26 Feb 07 |
jari |
480 |
return tcm.getColumnIndex(obj); |
2 |
26 Feb 07 |
jari |
481 |
} |
2 |
26 Feb 07 |
jari |
482 |
|
2 |
26 Feb 07 |
jari |
483 |
public int getColumnIndexAtX(int param) { |
2 |
26 Feb 07 |
jari |
484 |
return tcm.getColumnIndexAtX(param); |
2 |
26 Feb 07 |
jari |
485 |
} |
2 |
26 Feb 07 |
jari |
486 |
|
2 |
26 Feb 07 |
jari |
487 |
public int getColumnMargin() { |
2 |
26 Feb 07 |
jari |
488 |
return tcm.getColumnMargin(); |
2 |
26 Feb 07 |
jari |
489 |
} |
2 |
26 Feb 07 |
jari |
490 |
|
2 |
26 Feb 07 |
jari |
491 |
public boolean getColumnSelectionAllowed() { |
2 |
26 Feb 07 |
jari |
492 |
return tcm.getColumnSelectionAllowed(); |
2 |
26 Feb 07 |
jari |
493 |
} |
2 |
26 Feb 07 |
jari |
494 |
|
2 |
26 Feb 07 |
jari |
495 |
public java.util.Enumeration getColumns() { |
2 |
26 Feb 07 |
jari |
496 |
return tcm.getColumns(); |
2 |
26 Feb 07 |
jari |
497 |
} |
2 |
26 Feb 07 |
jari |
498 |
|
2 |
26 Feb 07 |
jari |
499 |
public int getSelectedColumnCount() { |
2 |
26 Feb 07 |
jari |
500 |
return tcm.getSelectedColumnCount(); |
2 |
26 Feb 07 |
jari |
501 |
} |
2 |
26 Feb 07 |
jari |
502 |
|
2 |
26 Feb 07 |
jari |
503 |
public int[] getSelectedColumns() { |
2 |
26 Feb 07 |
jari |
504 |
return tcm.getSelectedColumns(); |
2 |
26 Feb 07 |
jari |
505 |
} |
2 |
26 Feb 07 |
jari |
506 |
|
2 |
26 Feb 07 |
jari |
507 |
public javax.swing.ListSelectionModel getSelectionModel() { |
2 |
26 Feb 07 |
jari |
508 |
return tcm.getSelectionModel(); |
2 |
26 Feb 07 |
jari |
509 |
} |
2 |
26 Feb 07 |
jari |
510 |
|
2 |
26 Feb 07 |
jari |
511 |
public int getTotalColumnWidth() { |
2 |
26 Feb 07 |
jari |
512 |
return tcm.getTotalColumnWidth(); |
2 |
26 Feb 07 |
jari |
513 |
} |
2 |
26 Feb 07 |
jari |
514 |
|
2 |
26 Feb 07 |
jari |
515 |
public void moveColumn(int from, int to) { |
2 |
26 Feb 07 |
jari |
516 |
if (from <= (numClasses + 1) || to <= (numClasses + 1)) { |
2 |
26 Feb 07 |
jari |
517 |
return; |
2 |
26 Feb 07 |
jari |
518 |
} else { |
2 |
26 Feb 07 |
jari |
519 |
tcm.moveColumn(from, to); |
2 |
26 Feb 07 |
jari |
520 |
} |
2 |
26 Feb 07 |
jari |
521 |
} |
2 |
26 Feb 07 |
jari |
522 |
|
2 |
26 Feb 07 |
jari |
523 |
public void removeColumn(javax.swing.table.TableColumn tableColumn) { |
2 |
26 Feb 07 |
jari |
524 |
tcm.removeColumn(tableColumn); |
2 |
26 Feb 07 |
jari |
525 |
} |
2 |
26 Feb 07 |
jari |
526 |
|
2 |
26 Feb 07 |
jari |
527 |
public void removeColumnModelListener(javax.swing.event.TableColumnModelListener tableColumnModelListener) { |
2 |
26 Feb 07 |
jari |
528 |
tcm.removeColumnModelListener(tableColumnModelListener); |
2 |
26 Feb 07 |
jari |
529 |
} |
2 |
26 Feb 07 |
jari |
530 |
|
2 |
26 Feb 07 |
jari |
531 |
public void setColumnMargin(int param) { |
2 |
26 Feb 07 |
jari |
532 |
tcm.setColumnMargin(param); |
2 |
26 Feb 07 |
jari |
533 |
} |
2 |
26 Feb 07 |
jari |
534 |
|
2 |
26 Feb 07 |
jari |
535 |
public void setColumnSelectionAllowed(boolean param) { |
2 |
26 Feb 07 |
jari |
536 |
tcm.setColumnSelectionAllowed(param); |
2 |
26 Feb 07 |
jari |
537 |
} |
2 |
26 Feb 07 |
jari |
538 |
|
2 |
26 Feb 07 |
jari |
539 |
public void setSelectionModel(javax.swing.ListSelectionModel listSelectionModel) { |
2 |
26 Feb 07 |
jari |
540 |
tcm.setSelectionModel(listSelectionModel); |
2 |
26 Feb 07 |
jari |
541 |
} |
2 |
26 Feb 07 |
jari |
542 |
|
2 |
26 Feb 07 |
jari |
543 |
} |
2 |
26 Feb 07 |
jari |
544 |
|
2 |
26 Feb 07 |
jari |
545 |
|
2 |
26 Feb 07 |
jari |
546 |
class ClassSelectionListener implements TableModelListener { |
2 |
26 Feb 07 |
jari |
547 |
|
2 |
26 Feb 07 |
jari |
548 |
public void tableChanged(TableModelEvent tme) { |
2 |
26 Feb 07 |
jari |
//TableModel tabMod = (TableModel)tme.getSource(); |
2 |
26 Feb 07 |
jari |
550 |
int selectedCol = tme.getColumn(); // |
2 |
26 Feb 07 |
jari |
551 |
int selectedRow = tme.getFirstRow(); // |
2 |
26 Feb 07 |
jari |
552 |
|
2 |
26 Feb 07 |
jari |
553 |
if ((selectedCol < 1) || (selectedCol > (numClasses + 1) )) { |
2 |
26 Feb 07 |
jari |
554 |
return; |
2 |
26 Feb 07 |
jari |
555 |
} |
2 |
26 Feb 07 |
jari |
556 |
|
2 |
26 Feb 07 |
jari |
557 |
if( verifySelected(selectedRow, selectedCol)){ |
2 |
26 Feb 07 |
jari |
558 |
changeNeighbors(selectedRow, selectedCol); |
2 |
26 Feb 07 |
jari |
559 |
} |
2 |
26 Feb 07 |
jari |
560 |
|
2 |
26 Feb 07 |
jari |
561 |
int origDataRow = ((Integer)(kModel.getValueAt(selectedRow, 0))).intValue(); |
2 |
26 Feb 07 |
jari |
562 |
|
2 |
26 Feb 07 |
jari |
563 |
origData[origDataRow][selectedCol] = new Boolean(true); |
2 |
26 Feb 07 |
jari |
564 |
|
2 |
26 Feb 07 |
jari |
565 |
for (int i = 1; i <= (numClasses + 1); i++) { |
2 |
26 Feb 07 |
jari |
566 |
if (i != selectedCol) { |
2 |
26 Feb 07 |
jari |
567 |
origData[origDataRow][i] = new Boolean(false); |
2 |
26 Feb 07 |
jari |
568 |
} |
2 |
26 Feb 07 |
jari |
569 |
} |
2 |
26 Feb 07 |
jari |
570 |
} |
2 |
26 Feb 07 |
jari |
571 |
|
2 |
26 Feb 07 |
jari |
572 |
private void changeNeighbors(int first, int col){ |
2 |
26 Feb 07 |
jari |
573 |
for (int i = 1; i <= (numClasses + 1); i++) { |
2 |
26 Feb 07 |
jari |
574 |
if (i != col) { |
2 |
26 Feb 07 |
jari |
575 |
knnClassTable.setValueAt(new Boolean(false), first, i); |
2 |
26 Feb 07 |
jari |
//origData[first][i] = new Boolean(false); |
2 |
26 Feb 07 |
jari |
577 |
} |
2 |
26 Feb 07 |
jari |
578 |
} |
2 |
26 Feb 07 |
jari |
579 |
} |
2 |
26 Feb 07 |
jari |
580 |
|
2 |
26 Feb 07 |
jari |
581 |
private boolean verifySelected(int row, int col){ |
2 |
26 Feb 07 |
jari |
582 |
|
2 |
26 Feb 07 |
jari |
583 |
boolean selVal = ((Boolean)knnClassTable.getValueAt(row,col)).booleanValue(); |
2 |
26 Feb 07 |
jari |
//boolean value1, value2; |
2 |
26 Feb 07 |
jari |
585 |
|
2 |
26 Feb 07 |
jari |
586 |
if(selVal == true){ |
2 |
26 Feb 07 |
jari |
587 |
return true; |
2 |
26 Feb 07 |
jari |
588 |
} else { |
2 |
26 Feb 07 |
jari |
589 |
Vector truthValues = new Vector(); |
2 |
26 Feb 07 |
jari |
590 |
for (int i = 1; i <=(numClasses + 1); i++) { |
2 |
26 Feb 07 |
jari |
591 |
if (i != col) { |
2 |
26 Feb 07 |
jari |
592 |
boolean value = ((Boolean)(knnClassTable.getValueAt(row,i))).booleanValue(); |
2 |
26 Feb 07 |
jari |
593 |
truthValues.add(new Boolean(value)); |
2 |
26 Feb 07 |
jari |
594 |
} |
2 |
26 Feb 07 |
jari |
595 |
} |
2 |
26 Feb 07 |
jari |
596 |
boolean val1 = true; |
2 |
26 Feb 07 |
jari |
597 |
for (int i = 0; i < truthValues.size(); i++) { |
2 |
26 Feb 07 |
jari |
598 |
boolean val2 = ((Boolean)(truthValues.get(i))).booleanValue(); |
2 |
26 Feb 07 |
jari |
599 |
if (val2 == true) { |
2 |
26 Feb 07 |
jari |
600 |
val1 = false; |
2 |
26 Feb 07 |
jari |
601 |
break; |
2 |
26 Feb 07 |
jari |
602 |
} |
2 |
26 Feb 07 |
jari |
603 |
} |
2 |
26 Feb 07 |
jari |
604 |
|
2 |
26 Feb 07 |
jari |
605 |
if (val1 == true) { |
2 |
26 Feb 07 |
jari |
606 |
knnClassTable.setValueAt(new Boolean(true), row, col); |
2 |
26 Feb 07 |
jari |
//origData[row][col] = new Boolean(true); |
2 |
26 Feb 07 |
jari |
608 |
} |
2 |
26 Feb 07 |
jari |
609 |
|
2 |
26 Feb 07 |
jari |
610 |
} |
2 |
26 Feb 07 |
jari |
611 |
return false; |
2 |
26 Feb 07 |
jari |
612 |
|
2 |
26 Feb 07 |
jari |
/*else { |
2 |
26 Feb 07 |
jari |
knnClassTable.setValueAt(new Boolean(true), selectedRow, selectedCol); |
2 |
26 Feb 07 |
jari |
615 |
|
2 |
26 Feb 07 |
jari |
for (int i = 1; i <= (numClasses + 1); i++) { |
2 |
26 Feb 07 |
jari |
if (i != selectedCol) { |
2 |
26 Feb 07 |
jari |
knnClassTable.setValueAt(new Boolean(false), selectedRow, i); |
2 |
26 Feb 07 |
jari |
619 |
} |
2 |
26 Feb 07 |
jari |
620 |
} |
2 |
26 Feb 07 |
jari |
621 |
|
2 |
26 Feb 07 |
jari |
622 |
} |
2 |
26 Feb 07 |
jari |
623 |
*/ |
2 |
26 Feb 07 |
jari |
624 |
|
2 |
26 Feb 07 |
jari |
625 |
} |
2 |
26 Feb 07 |
jari |
626 |
|
2 |
26 Feb 07 |
jari |
627 |
} |
2 |
26 Feb 07 |
jari |
628 |
|
2 |
26 Feb 07 |
jari |
629 |
public void sortByColumn(int column, boolean ascending, boolean originalOrder) { |
2 |
26 Feb 07 |
jari |
630 |
if (originalOrder) { |
2 |
26 Feb 07 |
jari |
//double[] indices = new int[kModel.getRowCount()]; |
2 |
26 Feb 07 |
jari |
//for (int i = 0; i < kModel.getRowCount(); i++) { |
2 |
26 Feb 07 |
jari |
//indices[i] = ((Integer)(kModel.getValueAt(i, 0))).doubleValue(); |
2 |
26 Feb 07 |
jari |
634 |
/* |
2 |
26 Feb 07 |
jari |
QSort sortIndices = new QSort(indices); |
2 |
26 Feb 07 |
jari |
int[] sorted = sortIndices.getOrigIndx(); |
2 |
26 Feb 07 |
jari |
637 |
*/ |
2 |
26 Feb 07 |
jari |
638 |
Object[][] sortedData = new Object[kModel.getRowCount()][kModel.getColumnCount()]; |
2 |
26 Feb 07 |
jari |
639 |
|
2 |
26 Feb 07 |
jari |
640 |
for (int i = 0; i < sortedData.length; i++) { |
2 |
26 Feb 07 |
jari |
641 |
for (int j = 0; j < sortedData[0].length; j++) { |
2 |
26 Feb 07 |
jari |
642 |
sortedData[i][j] = origData[i][j]; |
2 |
26 Feb 07 |
jari |
643 |
} |
2 |
26 Feb 07 |
jari |
644 |
} |
2 |
26 Feb 07 |
jari |
645 |
|
2 |
26 Feb 07 |
jari |
646 |
for (int i = 0; i < sortedData.length; i++) { |
2 |
26 Feb 07 |
jari |
647 |
for (int j = 0; j < sortedData[0].length; j++) { |
2 |
26 Feb 07 |
jari |
648 |
kModel.setValueAt(sortedData[i][j], i, j); |
2 |
26 Feb 07 |
jari |
649 |
} |
2 |
26 Feb 07 |
jari |
650 |
validateTable(sortedData, i); |
2 |
26 Feb 07 |
jari |
651 |
} |
2 |
26 Feb 07 |
jari |
652 |
return; |
2 |
26 Feb 07 |
jari |
653 |
//} |
2 |
26 Feb 07 |
jari |
654 |
/* |
2 |
26 Feb 07 |
jari |
for (int i = 0; i < kModel.getRowCount(); i++) { |
2 |
26 Feb 07 |
jari |
for (int j = 0; j < kModel.getColumnCount(); j++) { |
2 |
26 Feb 07 |
jari |
kModel.setValueAt(origData[i][j], i, j); |
2 |
26 Feb 07 |
jari |
658 |
} |
2 |
26 Feb 07 |
jari |
validateTable(origData, i); |
2 |
26 Feb 07 |
jari |
660 |
} |
2 |
26 Feb 07 |
jari |
return; |
2 |
26 Feb 07 |
jari |
662 |
*/ |
2 |
26 Feb 07 |
jari |
663 |
} |
2 |
26 Feb 07 |
jari |
664 |
if ((column < 0)|| (column > kModel.getColumnCount())) { |
2 |
26 Feb 07 |
jari |
665 |
return; |
2 |
26 Feb 07 |
jari |
666 |
} |
2 |
26 Feb 07 |
jari |
667 |
Object[][] sortedData = new Object[kModel.getRowCount()][kModel.getColumnCount()]; |
2 |
26 Feb 07 |
jari |
//float[] origArray = new float[kModel.getRowCount()]; |
2 |
26 Feb 07 |
jari |
669 |
SortableField[] sortFields = new SortableField[kModel.getRowCount()]; |
2 |
26 Feb 07 |
jari |
670 |
|
2 |
26 Feb 07 |
jari |
671 |
for (int i = 0; i < sortFields.length; i++) { |
2 |
26 Feb 07 |
jari |
672 |
int origDataRow = ((Integer)(kModel.getValueAt(i, 0))).intValue(); |
2 |
26 Feb 07 |
jari |
673 |
sortFields[i] = new SortableField(origDataRow, column); |
2 |
26 Feb 07 |
jari |
674 |
} |
2 |
26 Feb 07 |
jari |
675 |
Arrays.sort(sortFields); |
2 |
26 Feb 07 |
jari |
676 |
int[] sortedIndices = new int[sortFields.length]; |
2 |
26 Feb 07 |
jari |
677 |
for (int i = 0; i < sortedIndices.length; i++) { |
2 |
26 Feb 07 |
jari |
678 |
sortedIndices[i] = sortFields[i].getIndex(); |
2 |
26 Feb 07 |
jari |
679 |
} |
2 |
26 Feb 07 |
jari |
680 |
if (!ascending) { |
2 |
26 Feb 07 |
jari |
681 |
sortedIndices = reverse(sortedIndices); |
2 |
26 Feb 07 |
jari |
682 |
} |
2 |
26 Feb 07 |
jari |
683 |
|
2 |
26 Feb 07 |
jari |
684 |
for (int i = 0; i < sortedData.length; i++) { |
2 |
26 Feb 07 |
jari |
685 |
for (int j = 0; j < sortedData[i].length; j++) { |
2 |
26 Feb 07 |
jari |
//sortedData[i][j] = tModel.getValueAt(sortedMeansAIndices[i], j); |
2 |
26 Feb 07 |
jari |
687 |
sortedData[i][j] = origData[sortedIndices[i]][j]; |
2 |
26 Feb 07 |
jari |
688 |
} |
2 |
26 Feb 07 |
jari |
689 |
} |
2 |
26 Feb 07 |
jari |
690 |
|
2 |
26 Feb 07 |
jari |
691 |
for (int i = 0; i < sortedData.length; i++) { |
2 |
26 Feb 07 |
jari |
692 |
for (int j = 0; j < sortedData[i].length; j++) { |
2 |
26 Feb 07 |
jari |
693 |
kModel.setValueAt(sortedData[i][j], i, j); |
2 |
26 Feb 07 |
jari |
694 |
} |
2 |
26 Feb 07 |
jari |
695 |
validateTable(sortedData, i); |
2 |
26 Feb 07 |
jari |
696 |
} |
2 |
26 Feb 07 |
jari |
697 |
|
2 |
26 Feb 07 |
jari |
698 |
knnClassTable.removeRowSelectionInterval(0, knnClassTable.getRowCount() - 1); |
2 |
26 Feb 07 |
jari |
699 |
} |
2 |
26 Feb 07 |
jari |
700 |
|
2 |
26 Feb 07 |
jari |
701 |
private int[] reverse(int[] arr) { |
2 |
26 Feb 07 |
jari |
702 |
int[] revArr = new int[arr.length]; |
2 |
26 Feb 07 |
jari |
703 |
int revCount = 0; |
2 |
26 Feb 07 |
jari |
704 |
int count = arr.length - 1; |
2 |
26 Feb 07 |
jari |
705 |
for (int i=0; i < arr.length; i++) { |
2 |
26 Feb 07 |
jari |
706 |
revArr[revCount] = arr[count]; |
2 |
26 Feb 07 |
jari |
707 |
revCount++; |
2 |
26 Feb 07 |
jari |
708 |
count--; |
2 |
26 Feb 07 |
jari |
709 |
} |
2 |
26 Feb 07 |
jari |
710 |
return revArr; |
2 |
26 Feb 07 |
jari |
711 |
} |
2 |
26 Feb 07 |
jari |
712 |
|
2 |
26 Feb 07 |
jari |
713 |
private void sortByClassification() { |
2 |
26 Feb 07 |
jari |
714 |
Vector[] classVectors = new Vector[numClasses + 1]; |
2 |
26 Feb 07 |
jari |
715 |
for (int i = 0; i < classVectors.length; i++) { |
2 |
26 Feb 07 |
jari |
716 |
classVectors[i] = new Vector(); |
2 |
26 Feb 07 |
jari |
717 |
} |
2 |
26 Feb 07 |
jari |
718 |
|
2 |
26 Feb 07 |
jari |
719 |
for (int i = 0; i < kModel.getRowCount(); i++) { |
2 |
26 Feb 07 |
jari |
720 |
for (int j = 1; (j <= numClasses + 1); j++) { |
2 |
26 Feb 07 |
jari |
721 |
boolean b = ((Boolean)(kModel.getValueAt(i, j))).booleanValue(); |
2 |
26 Feb 07 |
jari |
722 |
if (b) { |
2 |
26 Feb 07 |
jari |
723 |
classVectors[j - 1].add(new Integer(i)); |
2 |
26 Feb 07 |
jari |
724 |
break; |
2 |
26 Feb 07 |
jari |
725 |
} |
2 |
26 Feb 07 |
jari |
726 |
} |
2 |
26 Feb 07 |
jari |
727 |
} |
2 |
26 Feb 07 |
jari |
728 |
|
2 |
26 Feb 07 |
jari |
729 |
int[] sortedIndices = new int[kModel.getRowCount()]; |
2 |
26 Feb 07 |
jari |
730 |
int counter = 0; |
2 |
26 Feb 07 |
jari |
731 |
|
2 |
26 Feb 07 |
jari |
732 |
for (int i = 0; i < classVectors.length; i++) { |
2 |
26 Feb 07 |
jari |
733 |
for (int j = 0; j < classVectors[i].size(); j++) { |
2 |
26 Feb 07 |
jari |
734 |
sortedIndices[counter] = ((Integer)(classVectors[i].get(j))).intValue(); |
2 |
26 Feb 07 |
jari |
735 |
counter++; |
2 |
26 Feb 07 |
jari |
736 |
} |
2 |
26 Feb 07 |
jari |
737 |
} |
2 |
26 Feb 07 |
jari |
738 |
|
2 |
26 Feb 07 |
jari |
739 |
Object sortedData[][] = new Object[kModel.getRowCount()][kModel.getColumnCount()]; |
2 |
26 Feb 07 |
jari |
740 |
|
2 |
26 Feb 07 |
jari |
741 |
for (int i = 0; i < sortedData.length; i++) { |
2 |
26 Feb 07 |
jari |
742 |
for (int j = 0; j < sortedData[0].length; j++) { |
2 |
26 Feb 07 |
jari |
743 |
sortedData[i][j] = kModel.getValueAt(sortedIndices[i], j); |
2 |
26 Feb 07 |
jari |
744 |
} |
2 |
26 Feb 07 |
jari |
745 |
} |
2 |
26 Feb 07 |
jari |
746 |
|
2 |
26 Feb 07 |
jari |
747 |
for (int i = 0; i < kModel.getRowCount(); i++) { |
2 |
26 Feb 07 |
jari |
748 |
for (int j = 0; j < kModel.getColumnCount(); j++) { |
2 |
26 Feb 07 |
jari |
749 |
kModel.setValueAt(sortedData[i][j], i, j); |
2 |
26 Feb 07 |
jari |
750 |
} |
2 |
26 Feb 07 |
jari |
751 |
validateTable(sortedData, i); |
2 |
26 Feb 07 |
jari |
752 |
} |
2 |
26 Feb 07 |
jari |
753 |
|
2 |
26 Feb 07 |
jari |
754 |
knnClassTable.removeRowSelectionInterval(0, knnClassTable.getRowCount() - 1); |
2 |
26 Feb 07 |
jari |
755 |
} |
2 |
26 Feb 07 |
jari |
756 |
|
2 |
26 Feb 07 |
jari |
757 |
private void validateTable(Object[][] tabData, int row) { |
2 |
26 Feb 07 |
jari |
758 |
for (int i = 1; i <= (numClasses + 1); i++) { |
2 |
26 Feb 07 |
jari |
759 |
boolean check = ((Boolean)(tabData[row][i])).booleanValue(); |
2 |
26 Feb 07 |
jari |
760 |
if (check) { |
2 |
26 Feb 07 |
jari |
761 |
kModel.setValueAt(new Boolean(true), row, i); |
2 |
26 Feb 07 |
jari |
762 |
break; |
2 |
26 Feb 07 |
jari |
763 |
} |
2 |
26 Feb 07 |
jari |
764 |
} |
2 |
26 Feb 07 |
jari |
765 |
} |
2 |
26 Feb 07 |
jari |
766 |
|
2 |
26 Feb 07 |
jari |
767 |
private void searchTable(){ |
2 |
26 Feb 07 |
jari |
768 |
|
2 |
26 Feb 07 |
jari |
769 |
searchDialog.setVisible(true); |
2 |
26 Feb 07 |
jari |
770 |
searchDialog.toFront(); |
2 |
26 Feb 07 |
jari |
//searchDialog.requestFocus(); |
2 |
26 Feb 07 |
jari |
772 |
searchDialog.setLocation(this.getLocation().x + 100, this.getLocation().y +100); |
2 |
26 Feb 07 |
jari |
773 |
|
2 |
26 Feb 07 |
jari |
774 |
} |
2 |
26 Feb 07 |
jari |
775 |
|
2 |
26 Feb 07 |
jari |
776 |
private void saveToFile(File file) { |
2 |
26 Feb 07 |
jari |
777 |
try { |
2 |
26 Feb 07 |
jari |
778 |
PrintWriter out = new PrintWriter(new FileOutputStream(file)); |
2 |
26 Feb 07 |
jari |
779 |
for (int i = 0; i < kModel.getRowCount(); i++) { |
2 |
26 Feb 07 |
jari |
780 |
out.print(((Integer)(kModel.getValueAt(i, 0))).intValue()); |
2 |
26 Feb 07 |
jari |
781 |
out.print("\t"); |
2 |
26 Feb 07 |
jari |
782 |
for (int j = 1; j <= numClasses; j++) { |
2 |
26 Feb 07 |
jari |
783 |
if (((Boolean)(kModel.getValueAt(i, j))).booleanValue()) { |
2 |
26 Feb 07 |
jari |
784 |
out.print(j); |
2 |
26 Feb 07 |
jari |
785 |
break; |
2 |
26 Feb 07 |
jari |
786 |
} |
2 |
26 Feb 07 |
jari |
787 |
} |
2 |
26 Feb 07 |
jari |
788 |
if (((Boolean)(kModel.getValueAt(i, numClasses + 1))).booleanValue()) { |
2 |
26 Feb 07 |
jari |
789 |
out.print(-1); |
2 |
26 Feb 07 |
jari |
790 |
} |
2 |
26 Feb 07 |
jari |
//out.print("\t"); |
2 |
26 Feb 07 |
jari |
792 |
for (int j = numClasses + 2; j < kModel.getColumnCount(); j++) { |
2 |
26 Feb 07 |
jari |
793 |
out.print("\t"); |
2 |
26 Feb 07 |
jari |
794 |
out.print(kModel.getValueAt(i, j)); |
2 |
26 Feb 07 |
jari |
795 |
} |
2 |
26 Feb 07 |
jari |
796 |
out.print("\n"); |
2 |
26 Feb 07 |
jari |
797 |
} |
2 |
26 Feb 07 |
jari |
798 |
out.flush(); |
2 |
26 Feb 07 |
jari |
799 |
out.close(); |
2 |
26 Feb 07 |
jari |
800 |
|
2 |
26 Feb 07 |
jari |
801 |
} catch (Exception e) { |
2 |
26 Feb 07 |
jari |
//e.printStackTrace(); |
2 |
26 Feb 07 |
jari |
803 |
} |
2 |
26 Feb 07 |
jari |
804 |
} |
2 |
26 Feb 07 |
jari |
805 |
|
2 |
26 Feb 07 |
jari |
806 |
public void loadFromFile (File file) { |
2 |
26 Feb 07 |
jari |
807 |
Vector indicesVector = new Vector(); |
2 |
26 Feb 07 |
jari |
808 |
Vector classVector = new Vector(); |
2 |
26 Feb 07 |
jari |
809 |
try { |
2 |
26 Feb 07 |
jari |
810 |
BufferedReader buff = new BufferedReader(new FileReader(file)); |
2 |
26 Feb 07 |
jari |
811 |
String line = new String(); |
2 |
26 Feb 07 |
jari |
812 |
StringSplitter st; |
2 |
26 Feb 07 |
jari |
813 |
|
2 |
26 Feb 07 |
jari |
814 |
while ((line = buff.readLine()) != null) { |
2 |
26 Feb 07 |
jari |
815 |
st = new StringSplitter('\t'); |
2 |
26 Feb 07 |
jari |
816 |
st.init(line); |
2 |
26 Feb 07 |
jari |
817 |
String currIndex = st.nextToken(); |
2 |
26 Feb 07 |
jari |
818 |
indicesVector.add(new Integer(currIndex)); |
2 |
26 Feb 07 |
jari |
819 |
String currClass = st.nextToken(); |
2 |
26 Feb 07 |
jari |
820 |
classVector.add(new Integer(currClass)); |
2 |
26 Feb 07 |
jari |
821 |
} |
2 |
26 Feb 07 |
jari |
822 |
|
2 |
26 Feb 07 |
jari |
823 |
for (int i = 0; i < indicesVector.size(); i++) { |
2 |
26 Feb 07 |
jari |
824 |
int currInd = ((Integer)(indicesVector.get(i))).intValue(); |
2 |
26 Feb 07 |
jari |
825 |
int currCl = ((Integer)(classVector.get(i))).intValue(); |
2 |
26 Feb 07 |
jari |
826 |
|
2 |
26 Feb 07 |
jari |
827 |
if (currCl == (-1)) { |
2 |
26 Feb 07 |
jari |
828 |
kModel.setValueAt(new Boolean(true), currInd, (numClasses + 1)); |
2 |
26 Feb 07 |
jari |
829 |
} else { |
2 |
26 Feb 07 |
jari |
830 |
kModel.setValueAt(new Boolean(true), currInd, currCl); |
2 |
26 Feb 07 |
jari |
831 |
} |
2 |
26 Feb 07 |
jari |
832 |
} |
2 |
26 Feb 07 |
jari |
833 |
KNNClassificationEditor.this.showModal(true); |
2 |
26 Feb 07 |
jari |
834 |
|
2 |
26 Feb 07 |
jari |
//KNNClassificationEditor.this.setVisible(true); |
2 |
26 Feb 07 |
jari |
// showWarningMessage(); |
2 |
26 Feb 07 |
jari |
837 |
} catch (Exception e) { |
2 |
26 Feb 07 |
jari |
838 |
JOptionPane.showMessageDialog(framework.getFrame(), "Incompatible file!", "Error", JOptionPane.WARNING_MESSAGE); |
2 |
26 Feb 07 |
jari |
839 |
incompatible = true; |
2 |
26 Feb 07 |
jari |
//KNNClassificationEditor.this.dispose(); |
2 |
26 Feb 07 |
jari |
//e.printStackTrace(); |
2 |
26 Feb 07 |
jari |
842 |
} |
2 |
26 Feb 07 |
jari |
843 |
/* |
2 |
26 Feb 07 |
jari |
for (int i = 0; i < indicesVector.size(); i++) { |
2 |
26 Feb 07 |
jari |
int currInd = ((Integer)(indicesVector.get(i))).intValue(); |
2 |
26 Feb 07 |
jari |
int currCl = ((Integer)(classVector.get(i))).intValue(); |
2 |
26 Feb 07 |
jari |
847 |
} |
2 |
26 Feb 07 |
jari |
848 |
*/ |
2 |
26 Feb 07 |
jari |
849 |
} |
2 |
26 Feb 07 |
jari |
850 |
|
2 |
26 Feb 07 |
jari |
851 |
public Vector[] getClassification() { |
2 |
26 Feb 07 |
jari |
852 |
Vector indicesVector = new Vector(); |
2 |
26 Feb 07 |
jari |
853 |
Vector classVector = new Vector(); |
2 |
26 Feb 07 |
jari |
854 |
Vector[] vectArray = new Vector[2]; |
2 |
26 Feb 07 |
jari |
855 |
|
2 |
26 Feb 07 |
jari |
856 |
for (int i = 0; i < kModel.getRowCount(); i++) { |
2 |
26 Feb 07 |
jari |
857 |
if (((Boolean)(kModel.getValueAt(i, numClasses + 1))).booleanValue()) { |
2 |
26 Feb 07 |
jari |
858 |
continue; |
2 |
26 Feb 07 |
jari |
859 |
} else { |
2 |
26 Feb 07 |
jari |
860 |
indicesVector.add((Integer)(kModel.getValueAt(i, 0))); |
2 |
26 Feb 07 |
jari |
861 |
classVector.add(new Integer(getClass(i))); |
2 |
26 Feb 07 |
jari |
862 |
} |
2 |
26 Feb 07 |
jari |
863 |
} |
2 |
26 Feb 07 |
jari |
864 |
|
2 |
26 Feb 07 |
jari |
865 |
vectArray[0] = indicesVector; |
2 |
26 Feb 07 |
jari |
866 |
vectArray[1] = classVector; |
2 |
26 Feb 07 |
jari |
867 |
return vectArray; |
2 |
26 Feb 07 |
jari |
868 |
} |
2 |
26 Feb 07 |
jari |
869 |
|
2 |
26 Feb 07 |
jari |
870 |
public boolean isNextPressed() { |
2 |
26 Feb 07 |
jari |
871 |
return nextPressed; |
2 |
26 Feb 07 |
jari |
872 |
} |
2 |
26 Feb 07 |
jari |
873 |
|
2 |
26 Feb 07 |
jari |
874 |
private int getClass(int row) { |
2 |
26 Feb 07 |
jari |
875 |
int i; |
2 |
26 Feb 07 |
jari |
876 |
for (i = 1; i <= numClasses + 1; i++) { |
2 |
26 Feb 07 |
jari |
877 |
if (((Boolean)(kModel.getValueAt(row, i))).booleanValue()) { |
2 |
26 Feb 07 |
jari |
878 |
break; |
2 |
26 Feb 07 |
jari |
879 |
} |
2 |
26 Feb 07 |
jari |
880 |
} |
2 |
26 Feb 07 |
jari |
881 |
|
2 |
26 Feb 07 |
jari |
882 |
return i; |
2 |
26 Feb 07 |
jari |
883 |
} |
2 |
26 Feb 07 |
jari |
884 |
|
2 |
26 Feb 07 |
jari |
885 |
public boolean proceed() { |
2 |
26 Feb 07 |
jari |
886 |
return !(stopHere); |
2 |
26 Feb 07 |
jari |
887 |
} |
2 |
26 Feb 07 |
jari |
888 |
|
2 |
26 Feb 07 |
jari |
889 |
public boolean fileIsIncompatible() { |
2 |
26 Feb 07 |
jari |
890 |
return incompatible; |
2 |
26 Feb 07 |
jari |
891 |
} |
2 |
26 Feb 07 |
jari |
892 |
|
2 |
26 Feb 07 |
jari |
893 |
public void showWarningMessage() { |
2 |
26 Feb 07 |
jari |
894 |
JTextArea area = new JTextArea(); |
2 |
26 Feb 07 |
jari |
895 |
area.append("The editor displays all genes or expts in the data set loaded into MeV,"); |
2 |
26 Feb 07 |
jari |
896 |
area.append("\nincluding those that have been removed from analysis by variance filtering"); |
2 |
26 Feb 07 |
jari |
897 |
area.append("\nin the previous stage, or by applying cutoffs under the Adjust Data"); |
2 |
26 Feb 07 |
jari |
898 |
area.append("\nmenu. If you designate such genes or samples as classifiers,"); |
2 |
26 Feb 07 |
jari |
899 |
area.append("\nthey will not be used for classification"); |
2 |
26 Feb 07 |
jari |
900 |
area.setEditable(false); |
2 |
26 Feb 07 |
jari |
901 |
area.setBackground(Color.gray.brighter()); |
2 |
26 Feb 07 |
jari |
902 |
JOptionPane.showMessageDialog(KNNClassificationEditor.this, area, "Warning", JOptionPane.WARNING_MESSAGE); |
2 |
26 Feb 07 |
jari |
903 |
} |
2 |
26 Feb 07 |
jari |
904 |
|
2 |
26 Feb 07 |
jari |
905 |
private class SortableField implements Comparable { |
2 |
26 Feb 07 |
jari |
906 |
private String field; |
2 |
26 Feb 07 |
jari |
907 |
private int index; |
2 |
26 Feb 07 |
jari |
908 |
|
2 |
26 Feb 07 |
jari |
909 |
SortableField(int index, int column) { |
2 |
26 Feb 07 |
jari |
910 |
this.index = index; |
2 |
26 Feb 07 |
jari |
911 |
this.field = (String)(origData[index][column]); |
2 |
26 Feb 07 |
jari |
//System.out.println("SortableField[" + index + "][" + column + "]: index = " + index + ", field = " + field); |
2 |
26 Feb 07 |
jari |
913 |
} |
2 |
26 Feb 07 |
jari |
914 |
|
2 |
26 Feb 07 |
jari |
915 |
public int compareTo(Object other) { |
2 |
26 Feb 07 |
jari |
916 |
SortableField otherField = (SortableField)other; |
2 |
26 Feb 07 |
jari |
917 |
return this.field.compareTo(otherField.getField()); |
2 |
26 Feb 07 |
jari |
918 |
} |
2 |
26 Feb 07 |
jari |
919 |
|
2 |
26 Feb 07 |
jari |
920 |
public int getIndex() { |
2 |
26 Feb 07 |
jari |
921 |
return this.index; |
2 |
26 Feb 07 |
jari |
922 |
} |
2 |
26 Feb 07 |
jari |
923 |
public String getField() { |
2 |
26 Feb 07 |
jari |
924 |
return this.field; |
2 |
26 Feb 07 |
jari |
925 |
} |
2 |
26 Feb 07 |
jari |
926 |
} |
2 |
26 Feb 07 |
jari |
927 |
|
2 |
26 Feb 07 |
jari |
928 |
public class AssignListener implements ActionListener { |
2 |
26 Feb 07 |
jari |
929 |
|
2 |
26 Feb 07 |
jari |
930 |
public void actionPerformed(ActionEvent evt) { |
2 |
26 Feb 07 |
jari |
931 |
Object source = evt.getSource(); |
2 |
26 Feb 07 |
jari |
932 |
|
2 |
26 Feb 07 |
jari |
933 |
if (source instanceof JMenuItem) { |
2 |
26 Feb 07 |
jari |
934 |
String key = ((JMenuItem)source).getText(); |
2 |
26 Feb 07 |
jari |
935 |
int classCol = kModel.getColumnIndex(key); |
2 |
26 Feb 07 |
jari |
936 |
int[] selectedRows = knnClassTable.getSelectedRows(); |
2 |
26 Feb 07 |
jari |
937 |
int[] selectedIndices = new int[selectedRows.length]; |
2 |
26 Feb 07 |
jari |
938 |
|
2 |
26 Feb 07 |
jari |
939 |
for (int i = 0; i < selectedRows.length; i++) { |
2 |
26 Feb 07 |
jari |
940 |
kModel.setValueAt(new Boolean(true), selectedRows[i], classCol); |
2 |
26 Feb 07 |
jari |
//int currIndex = ((Integer)(kModel.getValueAt(selectedRows[i], 0))).intValue(); |
2 |
26 Feb 07 |
jari |
//origData[currIndex][classCol] = new Boolean(true); |
2 |
26 Feb 07 |
jari |
943 |
} |
2 |
26 Feb 07 |
jari |
944 |
} |
2 |
26 Feb 07 |
jari |
945 |
} |
2 |
26 Feb 07 |
jari |
946 |
|
2 |
26 Feb 07 |
jari |
947 |
} |
2 |
26 Feb 07 |
jari |
948 |
|
2 |
26 Feb 07 |
jari |
949 |
public class SortListener implements ActionListener { |
2 |
26 Feb 07 |
jari |
950 |
boolean asc, origOrd; |
2 |
26 Feb 07 |
jari |
951 |
public SortListener(boolean asc, boolean origOrd) { |
2 |
26 Feb 07 |
jari |
952 |
this.asc = asc; |
2 |
26 Feb 07 |
jari |
953 |
this.origOrd = origOrd; |
2 |
26 Feb 07 |
jari |
954 |
} |
2 |
26 Feb 07 |
jari |
955 |
|
2 |
26 Feb 07 |
jari |
956 |
public void actionPerformed(ActionEvent evt) { |
2 |
26 Feb 07 |
jari |
957 |
Object source = evt.getSource(); |
2 |
26 Feb 07 |
jari |
958 |
|
2 |
26 Feb 07 |
jari |
959 |
if (source instanceof JMenuItem) { |
2 |
26 Feb 07 |
jari |
960 |
String key = ((JMenuItem)source).getText(); |
2 |
26 Feb 07 |
jari |
961 |
int colToSort = kModel.getColumnIndex(key); |
2 |
26 Feb 07 |
jari |
962 |
sortByColumn(colToSort, asc, origOrd); |
2 |
26 Feb 07 |
jari |
963 |
} |
2 |
26 Feb 07 |
jari |
964 |
} |
2 |
26 Feb 07 |
jari |
965 |
} |
2 |
26 Feb 07 |
jari |
966 |
|
2 |
26 Feb 07 |
jari |
967 |
} |