2 |
26 Feb 07 |
jari |
1 |
/* |
2 |
26 Feb 07 |
jari |
* CGHCopyNumberCalculator.java |
2 |
26 Feb 07 |
jari |
* Raktim Sinha |
2 |
26 Feb 07 |
jari |
* Created on October 31, 2005 |
2 |
26 Feb 07 |
jari |
5 |
*/ |
2 |
26 Feb 07 |
jari |
6 |
|
2 |
26 Feb 07 |
jari |
7 |
package org.tigr.microarray.mev.cgh.CGHDataGenerator; |
2 |
26 Feb 07 |
jari |
8 |
|
2 |
26 Feb 07 |
jari |
9 |
import java.util.ArrayList; |
2 |
26 Feb 07 |
jari |
10 |
|
2 |
26 Feb 07 |
jari |
11 |
import org.tigr.microarray.mev.ISlideData; |
2 |
26 Feb 07 |
jari |
12 |
import org.tigr.microarray.mev.MultipleArrayData; |
2 |
26 Feb 07 |
jari |
13 |
import org.tigr.microarray.mev.cluster.gui.ICGHCloneValueMenu; |
2 |
26 Feb 07 |
jari |
14 |
import org.tigr.microarray.mev.cluster.gui.IFramework; |
2 |
26 Feb 07 |
jari |
15 |
/** |
2 |
26 Feb 07 |
jari |
* This class is used to make determinations about a CGHMultipleArrayData object |
2 |
26 Feb 07 |
jari |
* that must rely on other information. For example, this class makes copy number |
2 |
26 Feb 07 |
jari |
* determinations based on data stored in a CGHMultipleArrayData object and parameters |
2 |
26 Feb 07 |
jari |
* stored in an IFramework object |
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 |
|
2 |
26 Feb 07 |
jari |
26 |
public class CGHCopyNumberCalculator { |
2 |
26 Feb 07 |
jari |
27 |
public static final int BAD_CLONE = -10; |
2 |
26 Feb 07 |
jari |
28 |
public static final int NO_COPY_CHANGE = -11; |
2 |
26 Feb 07 |
jari |
29 |
|
2 |
26 Feb 07 |
jari |
30 |
MultipleArrayData data; |
2 |
26 Feb 07 |
jari |
31 |
IFramework framework; |
2 |
26 Feb 07 |
jari |
//CGHMultipleArrayDataFcd fcd; |
2 |
26 Feb 07 |
jari |
33 |
|
2 |
26 Feb 07 |
jari |
34 |
float ampThresh, delThresh, ampThresh2Copy, delThresh2Copy; |
2 |
26 Feb 07 |
jari |
35 |
float cloneDistributionPThresh; |
2 |
26 Feb 07 |
jari |
36 |
|
2 |
26 Feb 07 |
jari |
/** Creates a new instance of CGHMultipleArrayDataFcd */ |
2 |
26 Feb 07 |
jari |
//public CGHCopyNumberCalculator(MultipleArrayData data, IFramework framework, CGHMultipleArrayDataFcd fcd) { |
2 |
26 Feb 07 |
jari |
39 |
public CGHCopyNumberCalculator(MultipleArrayData data) { |
2 |
26 Feb 07 |
jari |
40 |
this.data = data; |
2 |
26 Feb 07 |
jari |
//this.framework = framework; |
2 |
26 Feb 07 |
jari |
//this.fcd = fcd; |
2 |
26 Feb 07 |
jari |
43 |
} |
2 |
26 Feb 07 |
jari |
44 |
|
2 |
26 Feb 07 |
jari |
45 |
public void onCopyDeterminationChanged(ICGHCloneValueMenu menu){ |
2 |
26 Feb 07 |
jari |
46 |
this.ampThresh = menu.getAmpThresh(); |
2 |
26 Feb 07 |
jari |
47 |
this.delThresh = menu.getDelThresh(); |
2 |
26 Feb 07 |
jari |
48 |
this.ampThresh2Copy = menu.getAmpThresh2Copy(); |
2 |
26 Feb 07 |
jari |
49 |
this.delThresh2Copy = menu.getDelThresh2Copy(); |
2 |
26 Feb 07 |
jari |
50 |
this.cloneDistributionPThresh = menu.getClonePThresh(); |
2 |
26 Feb 07 |
jari |
51 |
} |
2 |
26 Feb 07 |
jari |
52 |
|
2 |
26 Feb 07 |
jari |
53 |
public int getCopyNumberDetermination(int experiment, int clone, int chromosome){ |
2 |
26 Feb 07 |
jari |
54 |
return getCopyNumberDetermination(experiment, data.getCloneIndex(clone, chromosome)); |
2 |
26 Feb 07 |
jari |
55 |
} |
2 |
26 Feb 07 |
jari |
56 |
|
2 |
26 Feb 07 |
jari |
57 |
public int getCopyNumberDetermination(int experiment, int clone){ |
2 |
26 Feb 07 |
jari |
58 |
ArrayList featuresList = data.getFeaturesList(); |
2 |
26 Feb 07 |
jari |
59 |
ISlideData sampleData = (ISlideData)featuresList.get(experiment); |
2 |
26 Feb 07 |
jari |
60 |
return getCopyNumberDetermination(sampleData, clone); |
2 |
26 Feb 07 |
jari |
61 |
} |
2 |
26 Feb 07 |
jari |
62 |
|
2 |
26 Feb 07 |
jari |
63 |
public int getCopyNumberDetermination(ISlideData sampleData, int clone, int chromosome){ |
2 |
26 Feb 07 |
jari |
64 |
return getCopyNumberDetermination(sampleData, data.getCloneIndex(clone, chromosome)); |
2 |
26 Feb 07 |
jari |
65 |
} |
2 |
26 Feb 07 |
jari |
66 |
|
2 |
26 Feb 07 |
jari |
67 |
/** |
2 |
26 Feb 07 |
jari |
* Raktim Oct 31, 2005 |
2 |
26 Feb 07 |
jari |
* Chnaged to suit MeV struct |
2 |
26 Feb 07 |
jari |
* @param sampleData |
2 |
26 Feb 07 |
jari |
* @param clone |
2 |
26 Feb 07 |
jari |
* @return |
2 |
26 Feb 07 |
jari |
73 |
*/ |
2 |
26 Feb 07 |
jari |
74 |
public int getCopyNumberDetermination(ISlideData sampleData, int clone){ |
2 |
26 Feb 07 |
jari |
75 |
int copyNumber = determineCopyNumber(sampleData, clone); |
2 |
26 Feb 07 |
jari |
76 |
|
2 |
26 Feb 07 |
jari |
77 |
if(copyNumber == CGHCopyNumberCalculator.BAD_CLONE){ |
2 |
26 Feb 07 |
jari |
78 |
return CGHCopyNumberCalculator.BAD_CLONE; |
2 |
26 Feb 07 |
jari |
79 |
} |
2 |
26 Feb 07 |
jari |
80 |
if(copyNumber == CGHCopyNumberCalculator.NO_COPY_CHANGE){ |
2 |
26 Feb 07 |
jari |
81 |
return CGHCopyNumberCalculator.NO_COPY_CHANGE; |
2 |
26 Feb 07 |
jari |
82 |
}else{ |
2 |
26 Feb 07 |
jari |
83 |
if(copyNumber == -2 || copyNumber == -1){ |
2 |
26 Feb 07 |
jari |
84 |
return -1; |
2 |
26 Feb 07 |
jari |
85 |
}else if(copyNumber == 2 || copyNumber == 1 ){ |
2 |
26 Feb 07 |
jari |
86 |
return 1; |
2 |
26 Feb 07 |
jari |
87 |
} |
2 |
26 Feb 07 |
jari |
88 |
return CGHCopyNumberCalculator.NO_COPY_CHANGE; |
2 |
26 Feb 07 |
jari |
89 |
} |
2 |
26 Feb 07 |
jari |
90 |
} |
2 |
26 Feb 07 |
jari |
91 |
|
2 |
26 Feb 07 |
jari |
92 |
/* |
2 |
26 Feb 07 |
jari |
public int getCopyNumberDetermination(ISlideData sampleData, int clone){ |
2 |
26 Feb 07 |
jari |
94 |
|
2 |
26 Feb 07 |
jari |
int cy3CopyNumber = determineCopyNumber(sampleData, clone, ISlideData.CY3_SLIDES); |
2 |
26 Feb 07 |
jari |
int cy5CopyNumber = determineCopyNumber(sampleData, clone, ISlideData.CY5_SLIDES); |
2 |
26 Feb 07 |
jari |
97 |
|
2 |
26 Feb 07 |
jari |
if(cy3CopyNumber == CGHCopyNumberCalculator.BAD_CLONE || cy5CopyNumber == CGHCopyNumberCalculator.BAD_CLONE){ |
2 |
26 Feb 07 |
jari |
return CGHCopyNumberCalculator.BAD_CLONE; |
2 |
26 Feb 07 |
jari |
100 |
} |
2 |
26 Feb 07 |
jari |
if(cy3CopyNumber == CGHCopyNumberCalculator.NO_COPY_CHANGE || cy5CopyNumber == CGHCopyNumberCalculator.NO_COPY_CHANGE){ |
2 |
26 Feb 07 |
jari |
return CGHCopyNumberCalculator.NO_COPY_CHANGE; |
2 |
26 Feb 07 |
jari |
}else if(cy3CopyNumber == cy5CopyNumber){ |
2 |
26 Feb 07 |
jari |
return cy3CopyNumber; |
2 |
26 Feb 07 |
jari |
}else{ |
2 |
26 Feb 07 |
jari |
if((cy3CopyNumber == -2 && cy5CopyNumber == -1) || (cy3CopyNumber == -1 && cy5CopyNumber == -2)){ |
2 |
26 Feb 07 |
jari |
return -1; |
2 |
26 Feb 07 |
jari |
}else if((cy3CopyNumber == 2 && cy5CopyNumber == 1) || (cy3CopyNumber == 1 && cy5CopyNumber == 2)){ |
2 |
26 Feb 07 |
jari |
return 1; |
2 |
26 Feb 07 |
jari |
110 |
} |
2 |
26 Feb 07 |
jari |
111 |
|
2 |
26 Feb 07 |
jari |
return CGHCopyNumberCalculator.NO_COPY_CHANGE; |
2 |
26 Feb 07 |
jari |
113 |
} |
2 |
26 Feb 07 |
jari |
114 |
} |
2 |
26 Feb 07 |
jari |
115 |
*/ |
2 |
26 Feb 07 |
jari |
116 |
|
2 |
26 Feb 07 |
jari |
117 |
/* |
2 |
26 Feb 07 |
jari |
118 |
* |
2 |
26 Feb 07 |
jari |
* Old. Not to be Used now. May be used if CY3 & CY5 data are loaded separately |
2 |
26 Feb 07 |
jari |
public int determineCopyNumber(Vector slides, int clone, int testDye){ |
2 |
26 Feb 07 |
jari |
return determineCopyNumberByThreshold(slides, clone, testDye); |
2 |
26 Feb 07 |
jari |
122 |
} |
2 |
26 Feb 07 |
jari |
123 |
*/ |
2 |
26 Feb 07 |
jari |
124 |
|
2 |
26 Feb 07 |
jari |
125 |
/* |
2 |
26 Feb 07 |
jari |
* Conforming to CGH Data Struct |
2 |
26 Feb 07 |
jari |
public int determineCopyNumberByThreshold(Vector slides, int clone, int testDye){ |
2 |
26 Feb 07 |
jari |
Iterator it = slides.iterator(); |
2 |
26 Feb 07 |
jari |
int copyNumber = CGHCopyNumberCalculator.BAD_CLONE; |
2 |
26 Feb 07 |
jari |
130 |
|
2 |
26 Feb 07 |
jari |
if(it.hasNext()){ |
2 |
26 Feb 07 |
jari |
CGHSlideData slideData = (CGHSlideData)it.next(); |
2 |
26 Feb 07 |
jari |
copyNumber = determineCopyNumberByThreshold(slideData, clone, testDye); |
2 |
26 Feb 07 |
jari |
134 |
} |
2 |
26 Feb 07 |
jari |
135 |
|
2 |
26 Feb 07 |
jari |
while(it.hasNext()){ |
2 |
26 Feb 07 |
jari |
CGHSlideData slideData = (CGHSlideData)it.next(); |
2 |
26 Feb 07 |
jari |
int slideCopyNumber = determineCopyNumberByThreshold(slideData, clone, testDye); |
2 |
26 Feb 07 |
jari |
if(slideCopyNumber != CGHCopyNumberCalculator.BAD_CLONE){ |
2 |
26 Feb 07 |
jari |
if(copyNumber == CGHCopyNumberCalculator.BAD_CLONE){ |
2 |
26 Feb 07 |
jari |
copyNumber = slideCopyNumber; |
2 |
26 Feb 07 |
jari |
}else if (slideCopyNumber != copyNumber){ |
2 |
26 Feb 07 |
jari |
if((copyNumber == -2 && slideCopyNumber == -1) || (copyNumber == -1 && slideCopyNumber == -2)){ |
2 |
26 Feb 07 |
jari |
copyNumber = -1; |
2 |
26 Feb 07 |
jari |
}else if((copyNumber == 2 && slideCopyNumber == 1) || (copyNumber == 1 && slideCopyNumber == 2)){ |
2 |
26 Feb 07 |
jari |
copyNumber = 1; |
2 |
26 Feb 07 |
jari |
}else{ |
2 |
26 Feb 07 |
jari |
return CGHCopyNumberCalculator.NO_COPY_CHANGE; |
2 |
26 Feb 07 |
jari |
149 |
} |
2 |
26 Feb 07 |
jari |
150 |
} |
2 |
26 Feb 07 |
jari |
151 |
} |
2 |
26 Feb 07 |
jari |
152 |
} |
2 |
26 Feb 07 |
jari |
153 |
|
2 |
26 Feb 07 |
jari |
return copyNumber; |
2 |
26 Feb 07 |
jari |
155 |
} |
2 |
26 Feb 07 |
jari |
156 |
*/ |
2 |
26 Feb 07 |
jari |
//Test |
2 |
26 Feb 07 |
jari |
158 |
/* |
2 |
26 Feb 07 |
jari |
public int determineCopyNumberByThreshold(ISlideData slide, int clone, int testDye){ |
2 |
26 Feb 07 |
jari |
float ratio = slide.getRatio(clone, 0); |
2 |
26 Feb 07 |
jari |
if(Float.isNaN(ratio) || ratio <= 0){ |
2 |
26 Feb 07 |
jari |
return CGHCopyNumberCalculator.BAD_CLONE; |
2 |
26 Feb 07 |
jari |
163 |
} |
2 |
26 Feb 07 |
jari |
164 |
|
2 |
26 Feb 07 |
jari |
if(testDye == ISlideData.CY3_SLIDES){ |
2 |
26 Feb 07 |
jari |
return determineCy3CopyNumberByThreshold(ratio); |
2 |
26 Feb 07 |
jari |
}else{ |
2 |
26 Feb 07 |
jari |
return determineCy5CopyNumberByThreshold(ratio); |
2 |
26 Feb 07 |
jari |
169 |
} |
2 |
26 Feb 07 |
jari |
170 |
} |
2 |
26 Feb 07 |
jari |
171 |
*/ |
2 |
26 Feb 07 |
jari |
172 |
/** |
2 |
26 Feb 07 |
jari |
* Raktim Oct 31, 2005 |
2 |
26 Feb 07 |
jari |
* @param slide |
2 |
26 Feb 07 |
jari |
* @param clone |
2 |
26 Feb 07 |
jari |
* @param testDye |
2 |
26 Feb 07 |
jari |
* @return |
2 |
26 Feb 07 |
jari |
178 |
|
2 |
26 Feb 07 |
jari |
public int determineCopyNumber(ISlideData slide, int clone, int testDye){ |
2 |
26 Feb 07 |
jari |
return determineCopyNumberByThreshold(slide, clone, testDye); |
2 |
26 Feb 07 |
jari |
181 |
} |
2 |
26 Feb 07 |
jari |
182 |
*/ |
2 |
26 Feb 07 |
jari |
183 |
/** |
2 |
26 Feb 07 |
jari |
* Raktim Oct 31, 2005 |
2 |
26 Feb 07 |
jari |
* @param slides |
2 |
26 Feb 07 |
jari |
* @param clone |
2 |
26 Feb 07 |
jari |
* @return |
2 |
26 Feb 07 |
jari |
188 |
*/ |
2 |
26 Feb 07 |
jari |
189 |
public int determineCopyNumber(ISlideData slide, int clone){ |
2 |
26 Feb 07 |
jari |
190 |
return determineCopyNumberByThreshold(slide, clone); |
2 |
26 Feb 07 |
jari |
191 |
} |
2 |
26 Feb 07 |
jari |
192 |
|
2 |
26 Feb 07 |
jari |
193 |
/** |
2 |
26 Feb 07 |
jari |
* Remember getRatio Glitch |
2 |
26 Feb 07 |
jari |
* Raktim Oct 31, 2005 |
2 |
26 Feb 07 |
jari |
* @param slide |
2 |
26 Feb 07 |
jari |
* @param clone |
2 |
26 Feb 07 |
jari |
* @return |
2 |
26 Feb 07 |
jari |
199 |
*/ |
2 |
26 Feb 07 |
jari |
200 |
public int determineCopyNumberByThreshold(ISlideData slide, int clone){ |
2 |
26 Feb 07 |
jari |
201 |
float ratio = slide.getRatio(clone, 0); |
2 |
26 Feb 07 |
jari |
202 |
if(Float.isNaN(ratio) /*|| ratio <= 0*/){ |
2 |
26 Feb 07 |
jari |
203 |
return CGHCopyNumberCalculator.BAD_CLONE; |
2 |
26 Feb 07 |
jari |
204 |
} |
2 |
26 Feb 07 |
jari |
205 |
|
2 |
26 Feb 07 |
jari |
206 |
if(ratio < delThresh2Copy){ return -2; } |
2 |
26 Feb 07 |
jari |
207 |
if(ratio < delThresh){ return -1; } |
2 |
26 Feb 07 |
jari |
208 |
if(ratio > ampThresh2Copy){ return 2; } |
2 |
26 Feb 07 |
jari |
209 |
if(ratio > ampThresh){ return 1; } |
2 |
26 Feb 07 |
jari |
210 |
return CGHCopyNumberCalculator.NO_COPY_CHANGE; |
2 |
26 Feb 07 |
jari |
211 |
} |
2 |
26 Feb 07 |
jari |
212 |
|
2 |
26 Feb 07 |
jari |
213 |
/* |
2 |
26 Feb 07 |
jari |
//Old Adama Func |
2 |
26 Feb 07 |
jari |
public int determineCy3CopyNumberByThreshold(float ratio){ |
2 |
26 Feb 07 |
jari |
if(ratio < delThresh2Copy){ return -2; } |
2 |
26 Feb 07 |
jari |
if(ratio < delThresh){ return -1; } |
2 |
26 Feb 07 |
jari |
if(ratio > ampThresh2Copy){ return 2; } |
2 |
26 Feb 07 |
jari |
if(ratio > ampThresh){ return 1; } |
2 |
26 Feb 07 |
jari |
return CGHCopyNumberCalculator.NO_COPY_CHANGE; |
2 |
26 Feb 07 |
jari |
221 |
} |
2 |
26 Feb 07 |
jari |
//Old Adama Func |
2 |
26 Feb 07 |
jari |
public int determineCy5CopyNumberByThreshold(float ratio){ |
2 |
26 Feb 07 |
jari |
if(ratio < delThresh2Copy){ return 2; } |
2 |
26 Feb 07 |
jari |
if(ratio < delThresh){ return 1; } |
2 |
26 Feb 07 |
jari |
if(ratio > ampThresh2Copy){ return -2; } |
2 |
26 Feb 07 |
jari |
if(ratio > ampThresh){ return -1; } |
2 |
26 Feb 07 |
jari |
return CGHCopyNumberCalculator.NO_COPY_CHANGE; |
2 |
26 Feb 07 |
jari |
229 |
} |
2 |
26 Feb 07 |
jari |
230 |
*/ |
2 |
26 Feb 07 |
jari |
231 |
|
2 |
26 Feb 07 |
jari |
232 |
public int getCopyNumberDeterminationByLogCloneDistribution(int experiment, int clone){ |
2 |
26 Feb 07 |
jari |
233 |
|
2 |
26 Feb 07 |
jari |
234 |
int cy3CopyNumber = determineCopyNumberByLogCloneDistribution(experiment, clone, ISlideData.CY3_SLIDES); |
2 |
26 Feb 07 |
jari |
235 |
int cy5CopyNumber = determineCopyNumberByLogCloneDistribution(experiment, clone, ISlideData.CY5_SLIDES); |
2 |
26 Feb 07 |
jari |
236 |
|
2 |
26 Feb 07 |
jari |
237 |
if(cy3CopyNumber == CGHCopyNumberCalculator.BAD_CLONE || cy5CopyNumber == CGHCopyNumberCalculator.BAD_CLONE){ |
2 |
26 Feb 07 |
jari |
238 |
return CGHCopyNumberCalculator.BAD_CLONE; |
2 |
26 Feb 07 |
jari |
239 |
}else if(cy3CopyNumber == cy5CopyNumber){ |
2 |
26 Feb 07 |
jari |
240 |
return cy3CopyNumber; |
2 |
26 Feb 07 |
jari |
241 |
}else{ |
2 |
26 Feb 07 |
jari |
242 |
return CGHCopyNumberCalculator.NO_COPY_CHANGE; |
2 |
26 Feb 07 |
jari |
243 |
} |
2 |
26 Feb 07 |
jari |
244 |
} |
2 |
26 Feb 07 |
jari |
245 |
|
2 |
26 Feb 07 |
jari |
246 |
/** |
2 |
26 Feb 07 |
jari |
* Raktim Oct 31, 2005 |
2 |
26 Feb 07 |
jari |
* Modified for MeV data format |
2 |
26 Feb 07 |
jari |
* @param experiment |
2 |
26 Feb 07 |
jari |
* @param clone |
2 |
26 Feb 07 |
jari |
* @return |
2 |
26 Feb 07 |
jari |
252 |
*/ |
2 |
26 Feb 07 |
jari |
253 |
public int determineCopyNumberByLogCloneDistribution(int experiment, int clone){ |
2 |
26 Feb 07 |
jari |
254 |
float pValue = data.getPValueByLogCloneDistribution(experiment, clone); |
2 |
26 Feb 07 |
jari |
255 |
if(Float.isNaN(pValue)){ |
2 |
26 Feb 07 |
jari |
256 |
return CGHCopyNumberCalculator.BAD_CLONE; |
2 |
26 Feb 07 |
jari |
257 |
} |
2 |
26 Feb 07 |
jari |
258 |
|
2 |
26 Feb 07 |
jari |
259 |
if(pValue > cloneDistributionPThresh){ |
2 |
26 Feb 07 |
jari |
260 |
return 1; |
2 |
26 Feb 07 |
jari |
261 |
}else if (pValue < 1 - cloneDistributionPThresh){ |
2 |
26 Feb 07 |
jari |
262 |
return -1; |
2 |
26 Feb 07 |
jari |
263 |
}else |
2 |
26 Feb 07 |
jari |
264 |
return CGHCopyNumberCalculator.NO_COPY_CHANGE; |
2 |
26 Feb 07 |
jari |
265 |
} |
2 |
26 Feb 07 |
jari |
266 |
|
2 |
26 Feb 07 |
jari |
267 |
/** |
2 |
26 Feb 07 |
jari |
* Old Func. May be used later if CY3 & CY5 data are loaded separately |
2 |
26 Feb 07 |
jari |
* @param experiment |
2 |
26 Feb 07 |
jari |
* @param clone |
2 |
26 Feb 07 |
jari |
* @param testDye |
2 |
26 Feb 07 |
jari |
* @return |
2 |
26 Feb 07 |
jari |
273 |
*/ |
2 |
26 Feb 07 |
jari |
274 |
public int determineCopyNumberByLogCloneDistribution(int experiment, int clone, int testDye){ |
2 |
26 Feb 07 |
jari |
275 |
float pValue = data.getPValueByLogCloneDistribution(experiment, clone); |
2 |
26 Feb 07 |
jari |
276 |
if(Float.isNaN(pValue)){ |
2 |
26 Feb 07 |
jari |
277 |
return CGHCopyNumberCalculator.BAD_CLONE; |
2 |
26 Feb 07 |
jari |
278 |
} |
2 |
26 Feb 07 |
jari |
279 |
|
2 |
26 Feb 07 |
jari |
280 |
if(testDye == ISlideData.CY3_SLIDES){ |
2 |
26 Feb 07 |
jari |
281 |
if(pValue > cloneDistributionPThresh){ |
2 |
26 Feb 07 |
jari |
282 |
return 1; |
2 |
26 Feb 07 |
jari |
283 |
}else if (pValue < 1 - cloneDistributionPThresh){ |
2 |
26 Feb 07 |
jari |
284 |
return -1; |
2 |
26 Feb 07 |
jari |
285 |
|
2 |
26 Feb 07 |
jari |
286 |
} |
2 |
26 Feb 07 |
jari |
287 |
}else{ |
2 |
26 Feb 07 |
jari |
288 |
if(pValue > cloneDistributionPThresh){ |
2 |
26 Feb 07 |
jari |
289 |
return -1; |
2 |
26 Feb 07 |
jari |
290 |
}else if (pValue < 1 - cloneDistributionPThresh){ |
2 |
26 Feb 07 |
jari |
291 |
return 1; |
2 |
26 Feb 07 |
jari |
292 |
} |
2 |
26 Feb 07 |
jari |
293 |
} |
2 |
26 Feb 07 |
jari |
294 |
return CGHCopyNumberCalculator.NO_COPY_CHANGE; |
2 |
26 Feb 07 |
jari |
295 |
} |
2 |
26 Feb 07 |
jari |
296 |
|
2 |
26 Feb 07 |
jari |
297 |
public int getCopyNumberDeterminationByThresholdOrCloneDistribution(int experiment, int clone){ |
2 |
26 Feb 07 |
jari |
298 |
int threshCopyNumber = getCopyNumberDetermination(experiment, clone); |
2 |
26 Feb 07 |
jari |
299 |
int distCopyNumber = getCopyNumberDeterminationByLogCloneDistribution(experiment, clone); |
2 |
26 Feb 07 |
jari |
300 |
|
2 |
26 Feb 07 |
jari |
301 |
if(threshCopyNumber == CGHCopyNumberCalculator.BAD_CLONE){ |
2 |
26 Feb 07 |
jari |
302 |
return distCopyNumber; |
2 |
26 Feb 07 |
jari |
303 |
} |
2 |
26 Feb 07 |
jari |
304 |
|
2 |
26 Feb 07 |
jari |
305 |
if(distCopyNumber == CGHCopyNumberCalculator.BAD_CLONE){ |
2 |
26 Feb 07 |
jari |
306 |
return threshCopyNumber; |
2 |
26 Feb 07 |
jari |
307 |
} |
2 |
26 Feb 07 |
jari |
308 |
|
2 |
26 Feb 07 |
jari |
309 |
if(threshCopyNumber == CGHCopyNumberCalculator.NO_COPY_CHANGE){ |
2 |
26 Feb 07 |
jari |
310 |
return distCopyNumber; |
2 |
26 Feb 07 |
jari |
311 |
} |
2 |
26 Feb 07 |
jari |
312 |
|
2 |
26 Feb 07 |
jari |
313 |
if(distCopyNumber == CGHCopyNumberCalculator.NO_COPY_CHANGE){ |
2 |
26 Feb 07 |
jari |
314 |
return threshCopyNumber; |
2 |
26 Feb 07 |
jari |
315 |
} |
2 |
26 Feb 07 |
jari |
316 |
|
2 |
26 Feb 07 |
jari |
317 |
if(distCopyNumber < 0 && threshCopyNumber < 0){ |
2 |
26 Feb 07 |
jari |
318 |
return Math.min(distCopyNumber, threshCopyNumber); |
2 |
26 Feb 07 |
jari |
319 |
} |
2 |
26 Feb 07 |
jari |
320 |
|
2 |
26 Feb 07 |
jari |
321 |
if(distCopyNumber > 0 && threshCopyNumber > 0){ |
2 |
26 Feb 07 |
jari |
322 |
return Math.max(distCopyNumber, threshCopyNumber); |
2 |
26 Feb 07 |
jari |
323 |
} |
2 |
26 Feb 07 |
jari |
324 |
|
2 |
26 Feb 07 |
jari |
//if we get here, then one method said the clone is amplified and the other said it is deleted. This would |
2 |
26 Feb 07 |
jari |
// be bizzare (actually impossible unless the thresholds are set incorrectly), so I will just say it's a bad clone |
2 |
26 Feb 07 |
jari |
327 |
return CGHCopyNumberCalculator.BAD_CLONE; |
2 |
26 Feb 07 |
jari |
328 |
} |
2 |
26 Feb 07 |
jari |
329 |
|
2 |
26 Feb 07 |
jari |
/** Getter for property data. |
2 |
26 Feb 07 |
jari |
* @return Value of property data. |
2 |
26 Feb 07 |
jari |
332 |
*/ |
2 |
26 Feb 07 |
jari |
333 |
public MultipleArrayData getData() { |
2 |
26 Feb 07 |
jari |
334 |
return data; |
2 |
26 Feb 07 |
jari |
335 |
} |
2 |
26 Feb 07 |
jari |
336 |
|
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 |
339 |
*/ |
2 |
26 Feb 07 |
jari |
340 |
public void setData(MultipleArrayData data) { |
2 |
26 Feb 07 |
jari |
341 |
this.data = data; |
2 |
26 Feb 07 |
jari |
342 |
} |
2 |
26 Feb 07 |
jari |
343 |
|
2 |
26 Feb 07 |
jari |
344 |
} |