mev-4.0.01/source/org/tigr/microarray/mev/cgh/CGHAlgorithms/NumberOfAlterations/GeneAlterations/GeneAlterations.java

Code
Comments
Other
Rev Date Author Line
2 26 Feb 07 jari 1 /*
2 26 Feb 07 jari 2  * GeneAlterations.java
2 26 Feb 07 jari 3  *
2 26 Feb 07 jari 4  * 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 27  * @author  Adam Margolin
2 26 Feb 07 jari 28  * @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 35     /** 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 43     /** This method should return a tree with calculation results or
2 26 Feb 07 jari 44      * null, if analysis start was canceled.
2 26 Feb 07 jari 45      *
2 26 Feb 07 jari 46      * @param framework the reference to <code>IFramework</code> implementation,
2 26 Feb 07 jari 47      *        which is used to obtain an initial analysis data and parameters.
2 26 Feb 07 jari 48      * @throws AlgorithmException if calculation was failed.
2 26 Feb 07 jari 49      * @throws AbortException if calculation was canceled.
2 26 Feb 07 jari 50      * @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 55         //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 129     /** Getter for property vecGeneData.
2 26 Feb 07 jari 130      * @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 136     /** Setter for property vecGeneData.
2 26 Feb 07 jari 137      * @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 144      * Used tp cpature file used as parameter
2 26 Feb 07 jari 145      * @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 }