2 |
26 Feb 07 |
jari |
1 |
/* |
2 |
26 Feb 07 |
jari |
* CGHBrowserModelAdaptor.java |
2 |
26 Feb 07 |
jari |
3 |
* |
2 |
26 Feb 07 |
jari |
* Created on July 4, 2003, 8:13 AM |
2 |
26 Feb 07 |
jari |
5 |
*/ |
2 |
26 Feb 07 |
jari |
6 |
|
2 |
26 Feb 07 |
jari |
7 |
package org.tigr.microarray.mev.cgh.CGHDataModel; |
2 |
26 Feb 07 |
jari |
8 |
|
2 |
26 Feb 07 |
jari |
//import org.tigr.microarray.mev.cgh.CGHDataObj.ICGHFeatureData; |
2 |
26 Feb 07 |
jari |
10 |
import java.util.EventListener; |
2 |
26 Feb 07 |
jari |
11 |
|
2 |
26 Feb 07 |
jari |
12 |
import javax.swing.event.ChangeEvent; |
2 |
26 Feb 07 |
jari |
13 |
import javax.swing.event.ChangeListener; |
2 |
26 Feb 07 |
jari |
14 |
import javax.swing.event.EventListenerList; |
2 |
26 Feb 07 |
jari |
15 |
|
2 |
26 Feb 07 |
jari |
16 |
import org.tigr.microarray.mev.ISlideData; |
2 |
26 Feb 07 |
jari |
17 |
import org.tigr.microarray.mev.cluster.gui.IData; |
2 |
26 Feb 07 |
jari |
18 |
|
2 |
26 Feb 07 |
jari |
19 |
/** |
2 |
26 Feb 07 |
jari |
20 |
* |
2 |
26 Feb 07 |
jari |
* @author Adam Margolin |
2 |
26 Feb 07 |
jari |
* @author Raktim Sinha |
2 |
26 Feb 07 |
jari |
23 |
*/ |
2 |
26 Feb 07 |
jari |
24 |
|
2 |
26 Feb 07 |
jari |
25 |
public class CGHBrowserModelAdaptor { |
2 |
26 Feb 07 |
jari |
26 |
public static final int ALL_EXPERIMENTS = -1; |
2 |
26 Feb 07 |
jari |
27 |
public static final int ALL_CHROMOSOMES = -1; |
2 |
26 Feb 07 |
jari |
28 |
|
2 |
26 Feb 07 |
jari |
29 |
public static final int CLONE_VALUES_P_SCORE = 0; |
2 |
26 Feb 07 |
jari |
30 |
public static final int CLONE_VALUES_DYE_SWAP = 1; |
2 |
26 Feb 07 |
jari |
31 |
public static final int CLONE_VALUES_LOG_AVERAGE_INVERTED= 2; |
2 |
26 Feb 07 |
jari |
32 |
public static final int CLONE_VALUES_LOG_DYE_SWAP = 3; |
2 |
26 Feb 07 |
jari |
33 |
|
2 |
26 Feb 07 |
jari |
34 |
public static final int CLONE_VALUES_RATIOS= 4; |
2 |
26 Feb 07 |
jari |
35 |
public static final int CLONE_VALUES_LOG_RATIOS = 5; |
2 |
26 Feb 07 |
jari |
36 |
|
2 |
26 Feb 07 |
jari |
37 |
int cloneValueType; |
2 |
26 Feb 07 |
jari |
38 |
|
2 |
26 Feb 07 |
jari |
39 |
EventListenerList listenerList = new EventListenerList(); |
2 |
26 Feb 07 |
jari |
40 |
|
2 |
26 Feb 07 |
jari |
41 |
int[] mapCloneToIndex; |
2 |
26 Feb 07 |
jari |
42 |
int[] mapIndexToClone; |
2 |
26 Feb 07 |
jari |
43 |
|
2 |
26 Feb 07 |
jari |
44 |
int experimentIndices[]; |
2 |
26 Feb 07 |
jari |
45 |
int chromosomeIndex; |
2 |
26 Feb 07 |
jari |
46 |
int numClones; |
2 |
26 Feb 07 |
jari |
47 |
IData data; |
2 |
26 Feb 07 |
jari |
48 |
|
2 |
26 Feb 07 |
jari |
/** Creates a new instance of CGHBrowserModelAdaptor */ |
2 |
26 Feb 07 |
jari |
50 |
public CGHBrowserModelAdaptor(IData data, int experimentIndex, int chromosomeIndex, int cloneValueType) { |
2 |
26 Feb 07 |
jari |
51 |
this.data = data; |
2 |
26 Feb 07 |
jari |
52 |
setExperimentIndex(experimentIndex); |
2 |
26 Feb 07 |
jari |
53 |
setChromosomeIndex(chromosomeIndex); |
2 |
26 Feb 07 |
jari |
54 |
this.cloneValueType = cloneValueType; |
2 |
26 Feb 07 |
jari |
55 |
setNumClones(data.getNumDataPointsInChrom(chromosomeIndex)); |
2 |
26 Feb 07 |
jari |
56 |
} |
2 |
26 Feb 07 |
jari |
57 |
|
2 |
26 Feb 07 |
jari |
58 |
/** |
2 |
26 Feb 07 |
jari |
* Generates a mapping between the clone indexes as stored in the data, and |
2 |
26 Feb 07 |
jari |
* their positions on the viewable chart or table |
2 |
26 Feb 07 |
jari |
61 |
*/ |
2 |
26 Feb 07 |
jari |
62 |
public void generateIndices(){ |
2 |
26 Feb 07 |
jari |
63 |
|
2 |
26 Feb 07 |
jari |
64 |
mapCloneToIndex = new int[numClones]; |
2 |
26 Feb 07 |
jari |
65 |
int[] mapTmpIndexToClone = new int[numClones]; |
2 |
26 Feb 07 |
jari |
66 |
|
2 |
26 Feb 07 |
jari |
67 |
ISlideData[] sampleData = new ISlideData[experimentIndices.length]; |
2 |
26 Feb 07 |
jari |
68 |
for(int i = 0; i < experimentIndices.length; i++){ |
2 |
26 Feb 07 |
jari |
69 |
sampleData[i] = (ISlideData)data.getFeaturesList().get(experimentIndices[i]); |
2 |
26 Feb 07 |
jari |
70 |
} |
2 |
26 Feb 07 |
jari |
71 |
|
2 |
26 Feb 07 |
jari |
72 |
int chartIndex = 0; |
2 |
26 Feb 07 |
jari |
73 |
|
2 |
26 Feb 07 |
jari |
74 |
for(int i = 0; i < numClones; i++){ |
2 |
26 Feb 07 |
jari |
75 |
boolean isMissing = true; |
2 |
26 Feb 07 |
jari |
76 |
for(int sampleIndex = 0; sampleIndex < sampleData.length; sampleIndex++){ |
2 |
26 Feb 07 |
jari |
77 |
if(! sampleData[sampleIndex].isMissingData(getDataCloneIndex(i))){ |
2 |
26 Feb 07 |
jari |
78 |
isMissing = false; |
2 |
26 Feb 07 |
jari |
79 |
break; |
2 |
26 Feb 07 |
jari |
80 |
} |
2 |
26 Feb 07 |
jari |
81 |
} |
2 |
26 Feb 07 |
jari |
82 |
|
2 |
26 Feb 07 |
jari |
83 |
if(isMissing){ |
2 |
26 Feb 07 |
jari |
84 |
mapCloneToIndex[i] = -1; |
2 |
26 Feb 07 |
jari |
85 |
}else{ |
2 |
26 Feb 07 |
jari |
86 |
mapCloneToIndex[i] = chartIndex; |
2 |
26 Feb 07 |
jari |
87 |
mapTmpIndexToClone[chartIndex] = i; |
2 |
26 Feb 07 |
jari |
88 |
chartIndex++; |
2 |
26 Feb 07 |
jari |
89 |
} |
2 |
26 Feb 07 |
jari |
90 |
} |
2 |
26 Feb 07 |
jari |
91 |
|
2 |
26 Feb 07 |
jari |
92 |
mapIndexToClone = new int[chartIndex]; |
2 |
26 Feb 07 |
jari |
93 |
for(int i = 0; i < mapIndexToClone.length; i++){ |
2 |
26 Feb 07 |
jari |
94 |
mapIndexToClone[i] = mapTmpIndexToClone[i]; |
2 |
26 Feb 07 |
jari |
95 |
} |
2 |
26 Feb 07 |
jari |
96 |
} |
2 |
26 Feb 07 |
jari |
97 |
|
2 |
26 Feb 07 |
jari |
98 |
public int getSeriesSize(){ |
2 |
26 Feb 07 |
jari |
99 |
return mapIndexToClone.length; |
2 |
26 Feb 07 |
jari |
100 |
} |
2 |
26 Feb 07 |
jari |
101 |
|
2 |
26 Feb 07 |
jari |
102 |
public void addChangeListener(ChangeListener listener){ |
2 |
26 Feb 07 |
jari |
103 |
listenerList.add(ChangeListener.class, listener); |
2 |
26 Feb 07 |
jari |
104 |
} |
2 |
26 Feb 07 |
jari |
105 |
|
2 |
26 Feb 07 |
jari |
/** This method is just used to determine whether to get the relative or absolute |
2 |
26 Feb 07 |
jari |
* clone index from the data |
2 |
26 Feb 07 |
jari |
108 |
*/ |
2 |
26 Feb 07 |
jari |
109 |
public int getDataCloneIndex(int index){ |
2 |
26 Feb 07 |
jari |
110 |
if(chromosomeIndex == ALL_CHROMOSOMES){ |
2 |
26 Feb 07 |
jari |
111 |
return index; |
2 |
26 Feb 07 |
jari |
112 |
}else{ |
2 |
26 Feb 07 |
jari |
113 |
return data.getCloneIndex(index, chromosomeIndex); |
2 |
26 Feb 07 |
jari |
114 |
} |
2 |
26 Feb 07 |
jari |
115 |
} |
2 |
26 Feb 07 |
jari |
116 |
|
2 |
26 Feb 07 |
jari |
/* Returns the index of a clone as stored in the data, given its relative chart index |
2 |
26 Feb 07 |
jari |
* @param coordinateIndex the index of the clone on the chart |
2 |
26 Feb 07 |
jari |
119 |
*/ |
2 |
26 Feb 07 |
jari |
120 |
public int getCloneIndex(int coordinateIndex){ |
2 |
26 Feb 07 |
jari |
121 |
return getDataCloneIndex(mapIndexToClone[coordinateIndex]); |
2 |
26 Feb 07 |
jari |
122 |
} |
2 |
26 Feb 07 |
jari |
123 |
|
2 |
26 Feb 07 |
jari |
/* Returns the index on the chart of a clone |
2 |
26 Feb 07 |
jari |
* @param cloneIndex the index of the clone as stored in the data |
2 |
26 Feb 07 |
jari |
126 |
*/ |
2 |
26 Feb 07 |
jari |
127 |
public int getIndexOf(int cloneIndex){ |
2 |
26 Feb 07 |
jari |
128 |
return mapCloneToIndex[cloneIndex]; |
2 |
26 Feb 07 |
jari |
129 |
} |
2 |
26 Feb 07 |
jari |
130 |
|
2 |
26 Feb 07 |
jari |
/** Getter for property mapCloneToIndex. |
2 |
26 Feb 07 |
jari |
* @return Value of property mapCloneToIndex. |
2 |
26 Feb 07 |
jari |
133 |
*/ |
2 |
26 Feb 07 |
jari |
134 |
public int[] getMapCloneToIndex() { |
2 |
26 Feb 07 |
jari |
135 |
return this.mapCloneToIndex; |
2 |
26 Feb 07 |
jari |
136 |
} |
2 |
26 Feb 07 |
jari |
137 |
|
2 |
26 Feb 07 |
jari |
/** Setter for property mapCloneToIndex. |
2 |
26 Feb 07 |
jari |
* @param mapCloneToIndex New value of property mapCloneToIndex. |
2 |
26 Feb 07 |
jari |
140 |
*/ |
2 |
26 Feb 07 |
jari |
141 |
public void setMapCloneToIndex(int[] mapCloneToIndex) { |
2 |
26 Feb 07 |
jari |
142 |
this.mapCloneToIndex = mapCloneToIndex; |
2 |
26 Feb 07 |
jari |
143 |
} |
2 |
26 Feb 07 |
jari |
144 |
|
2 |
26 Feb 07 |
jari |
/** Getter for property mapIndexToClone. |
2 |
26 Feb 07 |
jari |
* @return Value of property mapIndexToClone. |
2 |
26 Feb 07 |
jari |
147 |
*/ |
2 |
26 Feb 07 |
jari |
148 |
public int[] getMapIndexToClone() { |
2 |
26 Feb 07 |
jari |
149 |
return this.mapIndexToClone; |
2 |
26 Feb 07 |
jari |
150 |
} |
2 |
26 Feb 07 |
jari |
151 |
|
2 |
26 Feb 07 |
jari |
/** Setter for property mapIndexToClone. |
2 |
26 Feb 07 |
jari |
* @param mapIndexToClone New value of property mapIndexToClone. |
2 |
26 Feb 07 |
jari |
154 |
*/ |
2 |
26 Feb 07 |
jari |
155 |
public void setMapIndexToClone(int[] mapIndexToClone) { |
2 |
26 Feb 07 |
jari |
156 |
this.mapIndexToClone = mapIndexToClone; |
2 |
26 Feb 07 |
jari |
157 |
} |
2 |
26 Feb 07 |
jari |
158 |
|
2 |
26 Feb 07 |
jari |
/** Getter for property experimentIndices. |
2 |
26 Feb 07 |
jari |
* @return Value of property experimentIndices. |
2 |
26 Feb 07 |
jari |
161 |
*/ |
2 |
26 Feb 07 |
jari |
162 |
public int[] getExperimentIndices() { |
2 |
26 Feb 07 |
jari |
163 |
return this.experimentIndices; |
2 |
26 Feb 07 |
jari |
164 |
} |
2 |
26 Feb 07 |
jari |
165 |
|
2 |
26 Feb 07 |
jari |
/** Setter for property experimentIndices. |
2 |
26 Feb 07 |
jari |
* @param experimentIndices New value of property experimentIndices. |
2 |
26 Feb 07 |
jari |
168 |
*/ |
2 |
26 Feb 07 |
jari |
169 |
public void setExperimentIndices(int[] experimentIndices) { |
2 |
26 Feb 07 |
jari |
170 |
this.experimentIndices = experimentIndices; |
2 |
26 Feb 07 |
jari |
171 |
} |
2 |
26 Feb 07 |
jari |
172 |
|
2 |
26 Feb 07 |
jari |
/** Getter for property chromosomeIndex. |
2 |
26 Feb 07 |
jari |
* @return Value of property chromosomeIndex. |
2 |
26 Feb 07 |
jari |
175 |
*/ |
2 |
26 Feb 07 |
jari |
176 |
public int getChromosomeIndex() { |
2 |
26 Feb 07 |
jari |
177 |
return chromosomeIndex; |
2 |
26 Feb 07 |
jari |
178 |
} |
2 |
26 Feb 07 |
jari |
179 |
|
2 |
26 Feb 07 |
jari |
180 |
public void setChromosomeIndex(int chromosomeIndex){ |
2 |
26 Feb 07 |
jari |
181 |
this.chromosomeIndex = chromosomeIndex; |
2 |
26 Feb 07 |
jari |
182 |
if(chromosomeIndex == ALL_CHROMOSOMES){ |
2 |
26 Feb 07 |
jari |
183 |
this.numClones = data.getFeaturesSize(); |
2 |
26 Feb 07 |
jari |
184 |
}else{ |
2 |
26 Feb 07 |
jari |
185 |
this.numClones = data.getNumDataPointsInChrom(chromosomeIndex); |
2 |
26 Feb 07 |
jari |
186 |
} |
2 |
26 Feb 07 |
jari |
187 |
|
2 |
26 Feb 07 |
jari |
188 |
generateIndices(); |
2 |
26 Feb 07 |
jari |
189 |
fireDataChanged(); |
2 |
26 Feb 07 |
jari |
190 |
} |
2 |
26 Feb 07 |
jari |
191 |
|
2 |
26 Feb 07 |
jari |
/** Getter for property numClones. |
2 |
26 Feb 07 |
jari |
* @return Value of property numClones. |
2 |
26 Feb 07 |
jari |
194 |
*/ |
2 |
26 Feb 07 |
jari |
195 |
public int getNumClones() { |
2 |
26 Feb 07 |
jari |
196 |
return numClones; |
2 |
26 Feb 07 |
jari |
197 |
} |
2 |
26 Feb 07 |
jari |
198 |
|
2 |
26 Feb 07 |
jari |
/** Setter for property numClones. |
2 |
26 Feb 07 |
jari |
* @param numClones New value of property numClones. |
2 |
26 Feb 07 |
jari |
201 |
*/ |
2 |
26 Feb 07 |
jari |
202 |
public void setNumClones(int numClones) { |
2 |
26 Feb 07 |
jari |
203 |
this.numClones = numClones; |
2 |
26 Feb 07 |
jari |
204 |
} |
2 |
26 Feb 07 |
jari |
205 |
|
2 |
26 Feb 07 |
jari |
/** Getter for property data. |
2 |
26 Feb 07 |
jari |
* @return Value of property data. |
2 |
26 Feb 07 |
jari |
208 |
*/ |
2 |
26 Feb 07 |
jari |
209 |
public IData getData() { |
2 |
26 Feb 07 |
jari |
210 |
return data; |
2 |
26 Feb 07 |
jari |
211 |
} |
2 |
26 Feb 07 |
jari |
212 |
|
2 |
26 Feb 07 |
jari |
/** Setter for property data. |
2 |
26 Feb 07 |
jari |
* @param data New value of property data. |
2 |
26 Feb 07 |
jari |
215 |
*/ |
2 |
26 Feb 07 |
jari |
216 |
public void setData(IData data) { |
2 |
26 Feb 07 |
jari |
217 |
this.data = data; |
2 |
26 Feb 07 |
jari |
218 |
} |
2 |
26 Feb 07 |
jari |
219 |
|
2 |
26 Feb 07 |
jari |
220 |
public void setExperimentIndex(int experimentIndex){ |
2 |
26 Feb 07 |
jari |
//Raktim |
2 |
26 Feb 07 |
jari |
222 |
System.out.println("CGHBrowserModelAdaptor.setExperimentIndex experimentIndex: " + experimentIndex); |
2 |
26 Feb 07 |
jari |
223 |
if(experimentIndex == ALL_EXPERIMENTS){ |
2 |
26 Feb 07 |
jari |
224 |
this.experimentIndices = new int[data.getFeaturesCount()]; |
2 |
26 Feb 07 |
jari |
225 |
for(int i = 0; i < experimentIndices.length; i++){ |
2 |
26 Feb 07 |
jari |
226 |
experimentIndices[i] = i; |
2 |
26 Feb 07 |
jari |
227 |
} |
2 |
26 Feb 07 |
jari |
228 |
}else{ |
2 |
26 Feb 07 |
jari |
229 |
this.experimentIndices = new int[1]; |
2 |
26 Feb 07 |
jari |
230 |
this.experimentIndices[0] = experimentIndex; |
2 |
26 Feb 07 |
jari |
231 |
} |
2 |
26 Feb 07 |
jari |
232 |
|
2 |
26 Feb 07 |
jari |
233 |
generateIndices(); |
2 |
26 Feb 07 |
jari |
234 |
fireDataChanged(); |
2 |
26 Feb 07 |
jari |
235 |
} |
2 |
26 Feb 07 |
jari |
236 |
|
2 |
26 Feb 07 |
jari |
237 |
|
2 |
26 Feb 07 |
jari |
238 |
public void fireDataChanged(){ |
2 |
26 Feb 07 |
jari |
239 |
EventListener[] listeners = listenerList.getListeners(ChangeListener.class); |
2 |
26 Feb 07 |
jari |
240 |
for(int i = 0; i < listeners.length; i++){ |
2 |
26 Feb 07 |
jari |
241 |
((ChangeListener)listeners[i]).stateChanged(new ChangeEvent(new Object())); |
2 |
26 Feb 07 |
jari |
242 |
} |
2 |
26 Feb 07 |
jari |
243 |
} |
2 |
26 Feb 07 |
jari |
244 |
|
2 |
26 Feb 07 |
jari |
/** Getter for property cloneValueType. |
2 |
26 Feb 07 |
jari |
* @return Value of property cloneValueType. |
2 |
26 Feb 07 |
jari |
247 |
*/ |
2 |
26 Feb 07 |
jari |
248 |
public int getCloneValueType() { |
2 |
26 Feb 07 |
jari |
249 |
return cloneValueType; |
2 |
26 Feb 07 |
jari |
250 |
} |
2 |
26 Feb 07 |
jari |
251 |
|
2 |
26 Feb 07 |
jari |
/** Setter for property cloneValueType. |
2 |
26 Feb 07 |
jari |
* @param cloneValueType New value of property cloneValueType. |
2 |
26 Feb 07 |
jari |
254 |
*/ |
2 |
26 Feb 07 |
jari |
255 |
public void setCloneValueType(int cloneValueType) { |
2 |
26 Feb 07 |
jari |
256 |
this.cloneValueType = cloneValueType; |
2 |
26 Feb 07 |
jari |
257 |
fireDataChanged(); |
2 |
26 Feb 07 |
jari |
258 |
} |
2 |
26 Feb 07 |
jari |
259 |
|
2 |
26 Feb 07 |
jari |
260 |
} |