2 |
26 Feb 07 |
jari |
1 |
/* |
2 |
26 Feb 07 |
jari |
* GeneAlterations.java |
2 |
26 Feb 07 |
jari |
3 |
* |
2 |
26 Feb 07 |
jari |
* Created on May 21, 2003, 5:43 PM |
2 |
26 Feb 07 |
jari |
5 |
*/ |
2 |
26 Feb 07 |
jari |
6 |
|
2 |
26 Feb 07 |
jari |
7 |
package org.tigr.microarray.mev.cgh.CGHAlgorithms.NumberOfAlterations.GeneAlterations; |
2 |
26 Feb 07 |
jari |
8 |
|
2 |
26 Feb 07 |
jari |
9 |
import java.util.Collections; |
2 |
26 Feb 07 |
jari |
10 |
import java.util.Iterator; |
2 |
26 Feb 07 |
jari |
11 |
import java.util.Vector; |
2 |
26 Feb 07 |
jari |
12 |
|
2 |
26 Feb 07 |
jari |
13 |
import javax.swing.tree.DefaultMutableTreeNode; |
2 |
26 Feb 07 |
jari |
14 |
|
2 |
26 Feb 07 |
jari |
15 |
import org.tigr.microarray.mev.ISlideData; |
2 |
26 Feb 07 |
jari |
16 |
import org.tigr.microarray.mev.cgh.CGHAlgorithms.NumberOfAlterations.NumberOfAlterationsCalculator; |
2 |
26 Feb 07 |
jari |
17 |
import org.tigr.microarray.mev.cgh.CGHDataObj.AlterationRegion; |
2 |
26 Feb 07 |
jari |
18 |
import org.tigr.microarray.mev.cgh.CGHDataObj.AlterationRegionsComparator; |
2 |
26 Feb 07 |
jari |
19 |
import org.tigr.microarray.mev.cgh.CGHDataObj.FlankingRegion; |
2 |
26 Feb 07 |
jari |
20 |
import org.tigr.microarray.mev.cgh.CGHDataObj.GeneDataSet; |
2 |
26 Feb 07 |
jari |
21 |
import org.tigr.microarray.mev.cgh.CGHDataObj.ICGHDataRegion; |
2 |
26 Feb 07 |
jari |
22 |
import org.tigr.microarray.mev.cgh.CGHDataObj.RefGeneLinkData; |
2 |
26 Feb 07 |
jari |
23 |
import org.tigr.microarray.mev.cluster.algorithm.AbortException; |
2 |
26 Feb 07 |
jari |
24 |
import org.tigr.microarray.mev.cluster.algorithm.AlgorithmException; |
2 |
26 Feb 07 |
jari |
25 |
import org.tigr.microarray.mev.cluster.gui.IFramework; |
2 |
26 Feb 07 |
jari |
26 |
/** |
2 |
26 Feb 07 |
jari |
* @author Adam Margolin |
2 |
26 Feb 07 |
jari |
* @author Raktim Sinha |
2 |
26 Feb 07 |
jari |
29 |
*/ |
2 |
26 Feb 07 |
jari |
30 |
|
2 |
26 Feb 07 |
jari |
31 |
public abstract class GeneAlterations extends NumberOfAlterationsCalculator{ |
2 |
26 Feb 07 |
jari |
32 |
private Vector vecGeneData = null; |
2 |
26 Feb 07 |
jari |
33 |
private boolean addGenInfo = true; |
2 |
26 Feb 07 |
jari |
34 |
|
2 |
26 Feb 07 |
jari |
/** Creates a new instance of GeneAlterations */ |
2 |
26 Feb 07 |
jari |
36 |
public GeneAlterations() { |
2 |
26 Feb 07 |
jari |
37 |
} |
2 |
26 Feb 07 |
jari |
38 |
|
2 |
26 Feb 07 |
jari |
39 |
public GeneAlterations(IFramework framework) { |
2 |
26 Feb 07 |
jari |
40 |
this.framework = framework; |
2 |
26 Feb 07 |
jari |
41 |
} |
2 |
26 Feb 07 |
jari |
42 |
|
2 |
26 Feb 07 |
jari |
/** This method should return a tree with calculation results or |
2 |
26 Feb 07 |
jari |
* null, if analysis start was canceled. |
2 |
26 Feb 07 |
jari |
45 |
* |
2 |
26 Feb 07 |
jari |
* @param framework the reference to <code>IFramework</code> implementation, |
2 |
26 Feb 07 |
jari |
* which is used to obtain an initial analysis data and parameters. |
2 |
26 Feb 07 |
jari |
* @throws AlgorithmException if calculation was failed. |
2 |
26 Feb 07 |
jari |
* @throws AbortException if calculation was canceled. |
2 |
26 Feb 07 |
jari |
* @see IFramework |
2 |
26 Feb 07 |
jari |
51 |
*/ |
2 |
26 Feb 07 |
jari |
52 |
public DefaultMutableTreeNode execute(IFramework framework) throws AlgorithmException { |
2 |
26 Feb 07 |
jari |
53 |
this.framework = framework; |
2 |
26 Feb 07 |
jari |
54 |
this.data = framework.getData(); |
2 |
26 Feb 07 |
jari |
//Vector vecGeneData = null; |
2 |
26 Feb 07 |
jari |
56 |
if(vecGeneData == null){ |
2 |
26 Feb 07 |
jari |
57 |
vecGeneData = getAllGenes(); |
2 |
26 Feb 07 |
jari |
58 |
} |
2 |
26 Feb 07 |
jari |
59 |
|
2 |
26 Feb 07 |
jari |
60 |
if(vecGeneData == null){ |
2 |
26 Feb 07 |
jari |
61 |
return null; |
2 |
26 Feb 07 |
jari |
62 |
} |
2 |
26 Feb 07 |
jari |
63 |
|
2 |
26 Feb 07 |
jari |
64 |
Iterator it = vecGeneData.iterator(); |
2 |
26 Feb 07 |
jari |
65 |
Vector alterationRegions = new Vector(); |
2 |
26 Feb 07 |
jari |
66 |
while(it.hasNext()){ |
2 |
26 Feb 07 |
jari |
67 |
|
2 |
26 Feb 07 |
jari |
68 |
RefGeneLinkData curGeneData = (RefGeneLinkData)it.next(); |
2 |
26 Feb 07 |
jari |
69 |
|
2 |
26 Feb 07 |
jari |
70 |
int numAlterations = getNumAlterations(curGeneData); |
2 |
26 Feb 07 |
jari |
71 |
|
2 |
26 Feb 07 |
jari |
72 |
AlterationRegion curAlterationRegion = new AlterationRegion(); |
2 |
26 Feb 07 |
jari |
73 |
curAlterationRegion.setDataRegion(curGeneData); |
2 |
26 Feb 07 |
jari |
74 |
curAlterationRegion.setNumAlterations(numAlterations); |
2 |
26 Feb 07 |
jari |
75 |
curAlterationRegion.setNumSamples(framework.getData().getFeaturesCount()); |
2 |
26 Feb 07 |
jari |
76 |
|
2 |
26 Feb 07 |
jari |
77 |
alterationRegions.add(curAlterationRegion); |
2 |
26 Feb 07 |
jari |
78 |
} |
2 |
26 Feb 07 |
jari |
79 |
Collections.sort(alterationRegions, new AlterationRegionsComparator()); |
2 |
26 Feb 07 |
jari |
80 |
if (!addGenInfo) //Capture File Path if LoadGeneList called |
2 |
26 Feb 07 |
jari |
81 |
return createResultsTree(alterationRegions, addGenInfo); |
2 |
26 Feb 07 |
jari |
82 |
return createResultsTree(alterationRegions); |
2 |
26 Feb 07 |
jari |
83 |
} |
2 |
26 Feb 07 |
jari |
84 |
|
2 |
26 Feb 07 |
jari |
85 |
public int getNumAlterations(ICGHDataRegion geneData){ |
2 |
26 Feb 07 |
jari |
86 |
int deletions = 0; |
2 |
26 Feb 07 |
jari |
87 |
int chromosomeIndex = geneData.getChromosomeIndex(); |
2 |
26 Feb 07 |
jari |
88 |
int geneStart = geneData.getStart(); |
2 |
26 Feb 07 |
jari |
89 |
int geneEnd = geneData.getStop(); |
2 |
26 Feb 07 |
jari |
90 |
|
2 |
26 Feb 07 |
jari |
91 |
if(chromosomeIndex < 0){ |
2 |
26 Feb 07 |
jari |
92 |
return 0; |
2 |
26 Feb 07 |
jari |
93 |
} |
2 |
26 Feb 07 |
jari |
94 |
|
2 |
26 Feb 07 |
jari |
95 |
if(framework == null){ |
2 |
26 Feb 07 |
jari |
96 |
System.out.println("gene alterations null framework"); |
2 |
26 Feb 07 |
jari |
97 |
} |
2 |
26 Feb 07 |
jari |
98 |
Iterator featuresIt = framework.getData().getFeaturesList().iterator(); |
2 |
26 Feb 07 |
jari |
99 |
while(featuresIt.hasNext()){ |
2 |
26 Feb 07 |
jari |
100 |
Vector expFrs = ((ISlideData)featuresIt.next()).getFlankingRegions()[chromosomeIndex]; |
2 |
26 Feb 07 |
jari |
101 |
Iterator itFrs = expFrs.iterator(); |
2 |
26 Feb 07 |
jari |
102 |
while(itFrs.hasNext()){ |
2 |
26 Feb 07 |
jari |
103 |
FlankingRegion fr = (FlankingRegion)itFrs.next(); |
2 |
26 Feb 07 |
jari |
104 |
int frStart = fr.getStart(); |
2 |
26 Feb 07 |
jari |
105 |
int frStop = fr.getStop(); |
2 |
26 Feb 07 |
jari |
106 |
|
2 |
26 Feb 07 |
jari |
107 |
if( (geneStart < frStop && geneStart > frStart) || (geneEnd < frStop && geneStart > frStart) ){ |
2 |
26 Feb 07 |
jari |
108 |
if(fr.getType() == getAlterationType()){ |
2 |
26 Feb 07 |
jari |
109 |
deletions++; |
2 |
26 Feb 07 |
jari |
110 |
break; |
2 |
26 Feb 07 |
jari |
111 |
} |
2 |
26 Feb 07 |
jari |
112 |
} |
2 |
26 Feb 07 |
jari |
113 |
} |
2 |
26 Feb 07 |
jari |
114 |
} |
2 |
26 Feb 07 |
jari |
115 |
|
2 |
26 Feb 07 |
jari |
116 |
return deletions; |
2 |
26 Feb 07 |
jari |
117 |
|
2 |
26 Feb 07 |
jari |
118 |
} |
2 |
26 Feb 07 |
jari |
119 |
|
2 |
26 Feb 07 |
jari |
120 |
protected abstract int getAlterationType(); |
2 |
26 Feb 07 |
jari |
121 |
|
2 |
26 Feb 07 |
jari |
122 |
private Vector getAllGenes(){ |
2 |
26 Feb 07 |
jari |
123 |
GeneDataSet geneDataSet = new GeneDataSet(); |
2 |
26 Feb 07 |
jari |
124 |
geneDataSet.loadAllGenes(data.getCGHSpecies()); |
2 |
26 Feb 07 |
jari |
125 |
Vector vecGeneData = geneDataSet.getGeneData(); |
2 |
26 Feb 07 |
jari |
126 |
return vecGeneData; |
2 |
26 Feb 07 |
jari |
127 |
} |
2 |
26 Feb 07 |
jari |
128 |
|
2 |
26 Feb 07 |
jari |
/** Getter for property vecGeneData. |
2 |
26 Feb 07 |
jari |
* @return Value of property vecGeneData. |
2 |
26 Feb 07 |
jari |
131 |
*/ |
2 |
26 Feb 07 |
jari |
132 |
public java.util.Vector getVecGeneData() { |
2 |
26 Feb 07 |
jari |
133 |
return vecGeneData; |
2 |
26 Feb 07 |
jari |
134 |
} |
2 |
26 Feb 07 |
jari |
135 |
|
2 |
26 Feb 07 |
jari |
/** Setter for property vecGeneData. |
2 |
26 Feb 07 |
jari |
* @param vecGeneData New value of property vecGeneData. |
2 |
26 Feb 07 |
jari |
138 |
*/ |
2 |
26 Feb 07 |
jari |
139 |
public void setVecGeneData(java.util.Vector vecGeneData) { |
2 |
26 Feb 07 |
jari |
140 |
this.vecGeneData = vecGeneData; |
2 |
26 Feb 07 |
jari |
141 |
} |
2 |
26 Feb 07 |
jari |
142 |
|
2 |
26 Feb 07 |
jari |
143 |
/** |
2 |
26 Feb 07 |
jari |
* Used tp cpature file used as parameter |
2 |
26 Feb 07 |
jari |
* @param path |
2 |
26 Feb 07 |
jari |
146 |
*/ |
2 |
26 Feb 07 |
jari |
147 |
public void setAddGenInfo(boolean val){ |
2 |
26 Feb 07 |
jari |
148 |
addGenInfo = val; |
2 |
26 Feb 07 |
jari |
149 |
} |
2 |
26 Feb 07 |
jari |
150 |
} |