mev-4.0.01/source/org/tigr/microarray/mev/motif/TranskriptionFactor.java

Code
Comments
Other
Rev Date Author Line
2 26 Feb 07 jari 1 /*
2 26 Feb 07 jari 2 Copyright @ 1999-2005, The Institute for Genomic Research (TIGR).
2 26 Feb 07 jari 3 All rights reserved.
2 26 Feb 07 jari 4 */
2 26 Feb 07 jari 5 /*
2 26 Feb 07 jari 6  * $RCSfile: TranskriptionFactor.java,v $
2 26 Feb 07 jari 7  * $Revision: 1.4 $
2 26 Feb 07 jari 8  * $Date: 2006/02/23 20:59:57 $
2 26 Feb 07 jari 9  * $Author: caliente $
2 26 Feb 07 jari 10  * $State: Exp $
2 26 Feb 07 jari 11  */
2 26 Feb 07 jari 12 package org.tigr.microarray.mev.motif;
2 26 Feb 07 jari 13
2 26 Feb 07 jari 14 import java.awt.Color;
2 26 Feb 07 jari 15 import java.awt.Font;
2 26 Feb 07 jari 16 import java.awt.Frame;
2 26 Feb 07 jari 17 import java.awt.Graphics2D;
2 26 Feb 07 jari 18 import java.io.BufferedReader;
2 26 Feb 07 jari 19 import java.io.FileInputStream;
2 26 Feb 07 jari 20 import java.io.InputStreamReader;
2 26 Feb 07 jari 21 import java.util.Vector;
2 26 Feb 07 jari 22
2 26 Feb 07 jari 23 import javax.swing.JOptionPane;
2 26 Feb 07 jari 24
2 26 Feb 07 jari 25 public class TranskriptionFactor {
2 26 Feb 07 jari 26     private static String fsep = System.getProperty("file.separator");
2 26 Feb 07 jari 27     public Frame ParentFrame;
2 26 Feb 07 jari 28     public String Name;
2 26 Feb 07 jari 29     public String Accession;
2 26 Feb 07 jari 30     public String Definition;
2 26 Feb 07 jari 31     public int Size=0;
2 26 Feb 07 jari 32     public int[][] Matrix;
2 26 Feb 07 jari 33     public SequenceLogo MySequenceLogo;
2 26 Feb 07 jari 34     public Vector Sequences;
2 26 Feb 07 jari 35     public boolean FastaFile=false;
2 26 Feb 07 jari 36     
2 26 Feb 07 jari 37     
2 26 Feb 07 jari 38     public TranskriptionFactor(Frame parentFrame) {
2 26 Feb 07 jari 39   ParentFrame=parentFrame;
2 26 Feb 07 jari 40     }
2 26 Feb 07 jari 41     
2 26 Feb 07 jari 42     public void ReadFile(String FilePath) {
2 26 Feb 07 jari 43   BufferedReader in;
2 26 Feb 07 jari 44   Vector DummyVector=new Vector();
2 26 Feb 07 jari 45   String Dummy=new String();
2 26 Feb 07 jari 46   String WorkString=new String();
2 26 Feb 07 jari 47   String Value=new String();
2 26 Feb 07 jari 48   int Position;
2 26 Feb 07 jari 49   try {
2 26 Feb 07 jari 50       in = new BufferedReader(new InputStreamReader(new FileInputStream(FilePath)));
2 26 Feb 07 jari 51       Dummy=in.readLine();
2 26 Feb 07 jari 52       while (Dummy!=null) {
2 26 Feb 07 jari 53     if (Dummy.substring(0,2).compareTo("NA")==0) {
2 26 Feb 07 jari 54         Name=Dummy.substring(2,Dummy.length()).trim();
2 26 Feb 07 jari 55     }
2 26 Feb 07 jari 56     if (Dummy.substring(0,2).compareTo("AC")==0) {
2 26 Feb 07 jari 57         Accession=Dummy.substring(2,Dummy.length()).trim();
2 26 Feb 07 jari 58     }
2 26 Feb 07 jari 59     if (Dummy.substring(0,2).compareTo("DE")==0) {
2 26 Feb 07 jari 60         Definition=Dummy.substring(2,Dummy.length()).trim();
2 26 Feb 07 jari 61     }
2 26 Feb 07 jari 62     if (Dummy.substring(0,2).compareTo("P0")==0) {
2 26 Feb 07 jari 63         Dummy=in.readLine();
2 26 Feb 07 jari 64         while ((Dummy!=null) && (Dummy.substring(0,2).compareTo("XX")!=0)) {
2 26 Feb 07 jari 65       DummyVector.add(new String(Dummy));
2 26 Feb 07 jari 66       Dummy=in.readLine();
2 26 Feb 07 jari 67         }
2 26 Feb 07 jari 68         Size=DummyVector.size();
2 26 Feb 07 jari 69         Matrix=new int[4][Size];
2 26 Feb 07 jari 70         for (int i=0; i<DummyVector.size(); i++) {
2 26 Feb 07 jari 71       Dummy=(String)DummyVector.get(i);
2 26 Feb 07 jari 72       //                    System.out.println(Integer.valueOf(Dummy.substring(2,2+10).trim()).intValue());
2 26 Feb 07 jari 73       for (int j=0; j<4; j++) {
2 26 Feb 07 jari 74           Matrix[j][i]=Integer.valueOf(Dummy.substring(2+j*7,Math.min(2+7*(j+1),Dummy.length())).trim()).intValue();
2 26 Feb 07 jari 75       }
2 26 Feb 07 jari 76       //                    System.out.println(Matrix[i][j]);
2 26 Feb 07 jari 77         }
2 26 Feb 07 jari 78     }
2 26 Feb 07 jari 79     Dummy=in.readLine();
2 26 Feb 07 jari 80       }
2 26 Feb 07 jari 81       
2 26 Feb 07 jari 82       if (Name==null) {
2 26 Feb 07 jari 83     Position=FilePath.lastIndexOf(fsep);
2 26 Feb 07 jari 84     Dummy=FilePath.substring(Position+1,FilePath.length());
2 26 Feb 07 jari 85     Position=Dummy.indexOf(".");
2 26 Feb 07 jari 86     Name=Dummy.substring(0,Position);
2 26 Feb 07 jari 87       }
2 26 Feb 07 jari 88       MySequenceLogo=new SequenceLogo(Matrix);
2 26 Feb 07 jari 89       in.close();
2 26 Feb 07 jari 90   } catch (Exception e2) {
2 26 Feb 07 jari 91       JOptionPane.showMessageDialog(null, "Can not read file "+FilePath+"!",e2.toString(), JOptionPane.ERROR_MESSAGE);
2 26 Feb 07 jari 92   }
2 26 Feb 07 jari 93     }
2 26 Feb 07 jari 94     
2 26 Feb 07 jari 95     public void ReadFastaFile(String FilePath) {
2 26 Feb 07 jari 96   BufferedReader in;
2 26 Feb 07 jari 97   Vector DummyVector=new Vector();
2 26 Feb 07 jari 98   String Dummy=new String();
2 26 Feb 07 jari 99   String WorkString=new String();
2 26 Feb 07 jari 100   String Value=new String();
2 26 Feb 07 jari 101   String Sequence=new String();
2 26 Feb 07 jari 102   Sequences=new Vector();
2 26 Feb 07 jari 103   int Position;
2 26 Feb 07 jari 104   Position=FilePath.lastIndexOf(fsep);
2 26 Feb 07 jari 105   Dummy=FilePath.substring(Position+1,FilePath.length());
2 26 Feb 07 jari 106   Position=Dummy.indexOf(".");
2 26 Feb 07 jari 107   Name=Dummy.substring(0,Position);
2 26 Feb 07 jari 108   
2 26 Feb 07 jari 109   try {
2 26 Feb 07 jari 110       in = new BufferedReader(new InputStreamReader(new FileInputStream(FilePath)));
2 26 Feb 07 jari 111       Dummy=in.readLine();
2 26 Feb 07 jari 112       while (Dummy!=null) {
2 26 Feb 07 jari 113     if (Dummy.substring(0,1).compareTo(">")==0) {
2 26 Feb 07 jari 114         if (Sequence.length()!=0) {
2 26 Feb 07 jari 115       Sequences.add(Sequence);
2 26 Feb 07 jari 116       Sequence="";
2 26 Feb 07 jari 117         }
2 26 Feb 07 jari 118     } else {
2 26 Feb 07 jari 119         Sequence=Sequence.concat(Dummy);
2 26 Feb 07 jari 120     }
2 26 Feb 07 jari 121     Dummy=in.readLine();
2 26 Feb 07 jari 122       }
2 26 Feb 07 jari 123       Sequences.add(Sequence);
2 26 Feb 07 jari 124       FastaFile=true;
2 26 Feb 07 jari 125       Size=((String)Sequences.get(0)).length();
2 26 Feb 07 jari 126       Matrix=new int[4][Size];
2 26 Feb 07 jari 127       int CountA;
2 26 Feb 07 jari 128       int CountC;
2 26 Feb 07 jari 129       int CountG;
2 26 Feb 07 jari 130       int CountT;
2 26 Feb 07 jari 131       for (int i=0; i<Size; i++) {
2 26 Feb 07 jari 132     CountA=0;
2 26 Feb 07 jari 133     CountC=0;
2 26 Feb 07 jari 134     CountG=0;
2 26 Feb 07 jari 135     CountT=0;
2 26 Feb 07 jari 136     for (int j=0; j<Sequences.size(); j++) {
2 26 Feb 07 jari 137         switch (((String)Sequences.get(j)).charAt(i)) {
2 26 Feb 07 jari 138       case 'A': CountA++; break;
2 26 Feb 07 jari 139       case 'C': CountC++; break;
2 26 Feb 07 jari 140       case 'G': CountG++; break;
2 26 Feb 07 jari 141       case 'T': CountT++; break;
2 26 Feb 07 jari 142         }
2 26 Feb 07 jari 143     }
2 26 Feb 07 jari 144     Matrix[0][i]=CountA;
2 26 Feb 07 jari 145     Matrix[1][i]=CountC;
2 26 Feb 07 jari 146     Matrix[2][i]=CountG;
2 26 Feb 07 jari 147     Matrix[3][i]=CountT;
2 26 Feb 07 jari 148       }
2 26 Feb 07 jari 149       MySequenceLogo=new SequenceLogo(Matrix);
2 26 Feb 07 jari 150       in.close();
2 26 Feb 07 jari 151   } catch (Exception e2) {
2 26 Feb 07 jari 152       JOptionPane.showMessageDialog(null, "Can not read file "+FilePath+"!",e2.toString(), JOptionPane.ERROR_MESSAGE);
2 26 Feb 07 jari 153   }
2 26 Feb 07 jari 154     }
2 26 Feb 07 jari 155     
2 26 Feb 07 jari 156     public void Paint(Graphics2D g2, int Width, int Height) {
2 26 Feb 07 jari 157   g2.setColor(new Color(0,0,128));
2 26 Feb 07 jari 158   Font HeadlineFont = new Font("serif",Font.BOLD, 20);
2 26 Feb 07 jari 159   Font ReferenceFont = new Font("serif",Font.BOLD, 12);
2 26 Feb 07 jari 160   g2.setFont(HeadlineFont);
2 26 Feb 07 jari 161   g2.drawString(Name,20,40);
2 26 Feb 07 jari 162   g2.setColor(Color.black);
2 26 Feb 07 jari 163   Font InfoFont = new Font("monospaced",Font.PLAIN, 12);
2 26 Feb 07 jari 164   Font TableFont = new Font("monospaced",Font.BOLD, 13);
2 26 Feb 07 jari 165   g2.setFont(InfoFont);
2 26 Feb 07 jari 166   if (Accession!=null) g2.drawString("Accession number: " +Accession,20,75);
2 26 Feb 07 jari 167   if (Definition!=null) g2.drawString("Definition: " +Definition,20,90);
2 26 Feb 07 jari 168   g2.setFont(TableFont);
2 26 Feb 07 jari 169   g2.setColor(new Color(0,0,128));
2 26 Feb 07 jari 170   g2.fillRect(20,200,35+Size*25,25);
2 26 Feb 07 jari 171   g2.fillRect(20,225,25,110);
2 26 Feb 07 jari 172   g2.drawRect(20,200,35+Size*25,135);
2 26 Feb 07 jari 173   g2.setColor(Color.white);
2 26 Feb 07 jari 174   //      g2.drawLine(45,201,45,225);
2 26 Feb 07 jari 175   //      g2.drawLine(21,225,45,225);
2 26 Feb 07 jari 176   g2.drawString("A",28,250);
2 26 Feb 07 jari 177   g2.drawString("C",28,275);
2 26 Feb 07 jari 178   g2.drawString("G",28,300);
2 26 Feb 07 jari 179   g2.drawString("T",28,325);
2 26 Feb 07 jari 180   for (int i=0; i<Size; i++) {
2 26 Feb 07 jari 181       g2.setFont(TableFont);
2 26 Feb 07 jari 182       g2.setColor(Color.white);
2 26 Feb 07 jari 183       g2.drawString(String.valueOf(i+1),60+i*25,218);
2 26 Feb 07 jari 184       g2.setColor(Color.black);
2 26 Feb 07 jari 185       g2.setFont(InfoFont);
2 26 Feb 07 jari 186       for (int j=0; j<4; j++) {
2 26 Feb 07 jari 187     g2.drawString(String.valueOf(Matrix[j][i]),60+i*25,250+j*25);
2 26 Feb 07 jari 188     
2 26 Feb 07 jari 189       }
2 26 Feb 07 jari 190   }
2 26 Feb 07 jari 191   MySequenceLogo.Paint(g2,45,400,10+Size*25,400,1,true);
2 26 Feb 07 jari 192     }
2 26 Feb 07 jari 193 }