Add mapping details to stringbuffer
authoramwaterhouse <Andrew Waterhouse>
Thu, 10 Nov 2005 14:19:48 +0000 (14:19 +0000)
committeramwaterhouse <Andrew Waterhouse>
Thu, 10 Nov 2005 14:19:48 +0000 (14:19 +0000)
src/MCview/PDBCanvas.java
src/MCview/PDBChain.java
src/MCview/PDBViewer.java
src/MCview/PDBfile.java

index e9f8dce..ccb1643 100755 (executable)
@@ -68,18 +68,22 @@ public class PDBCanvas extends JPanel implements MouseListener, MouseMotionListe
     Font font = new Font("Helvetica", Font.PLAIN, 10);\r
     jalview.gui.SequenceRenderer sr;\r
     jalview.gui.FeatureRenderer  fr;\r
+    jalview.gui.SeqCanvas seqcanvas;\r
+    Sequence sequence;\r
+    final StringBuffer mappingDetails = new StringBuffer();\r
 \r
-    public PDBCanvas()\r
+    public PDBCanvas(jalview.gui.SeqCanvas seqcanvas, Sequence seq)\r
     {\r
+      this.seqcanvas = seqcanvas;\r
+      this.sequence = seq;\r
+      sr = seqcanvas.getSequenceRenderer();\r
+      fr = seqcanvas.getFeatureRenderer();\r
 \r
+      seqcanvas.setPDBViewer(this);\r
     }\r
 \r
-  public void setPDBFile(PDBfile pdb, Sequence sequence,\r
-                     jalview.gui.SequenceRenderer sr,\r
-                     jalview.gui.FeatureRenderer fr)\r
+  public void setPDBFile(PDBfile pdb)\r
    {\r
-\r
-\r
         this.sr = sr;\r
         this.fr = fr;\r
         int max = -10;\r
@@ -89,7 +93,12 @@ public class PDBCanvas extends JPanel implements MouseListener, MouseMotionListe
         int seqstart = 0;\r
         int seqend = 0;\r
 \r
-        for (int i = 0; i < pdb.chains.size(); i++) {\r
+        for (int i = 0; i < pdb.chains.size(); i++)\r
+        {\r
+\r
+          mappingDetails.append("\n\nPDB Sequence is :\nSequence = " + ((PDBChain) pdb.chains.elementAt(i)).sequence.getSequence());\r
+          mappingDetails.append("\nNo of residues = " + ((PDBChain) pdb.chains.elementAt(i)).residues.size()+"\n\n");\r
+\r
             // Now lets compare the sequences to get\r
             // the start and end points.\r
             // Align the sequence to the pdb\r
@@ -97,8 +106,18 @@ public class PDBCanvas extends JPanel implements MouseListener, MouseMotionListe
                     ((PDBChain) pdb.chains.elementAt(i)).sequence, "pep");\r
             as.calcScoreMatrix();\r
             as.traceAlignment();\r
-            as.printAlignment();\r
-\r
+            PrintStream  ps = new PrintStream(System.out)\r
+           {\r
+              public void print(String x) {\r
+                   mappingDetails.append(x);\r
+               }\r
+               public void println()\r
+               {\r
+                 mappingDetails.append("\n");\r
+               }\r
+            };\r
+\r
+            as.printAlignment(ps);\r
 \r
             if (as.maxscore > max) {\r
                 max = as.maxscore;\r
@@ -110,8 +129,8 @@ public class PDBCanvas extends JPanel implements MouseListener, MouseMotionListe
                 seqend = as.seq1end + sequence.getEnd()-1;\r
             }\r
 \r
-            System.out.println("PDB start/end "  + pdbstart + " " + pdbend);\r
-            System.out.println("SEQ start/end "+ seqstart + " " + seqend);\r
+            mappingDetails.append("\nPDB start/end "  + pdbstart + " " + pdbend);\r
+            mappingDetails.append("\nSEQ start/end "+ seqstart + " " + seqend);\r
         }\r
 \r
         ((PDBChain) pdb.chains.elementAt(maxchain)).pdbstart = pdbstart;\r
@@ -145,7 +164,6 @@ public class PDBCanvas extends JPanel implements MouseListener, MouseMotionListe
 \r
         scale = findScale();\r
 \r
-        System.out.println("Scale factor = " + scale);\r
 \r
         updateSeqColours();\r
         ToolTipManager.sharedInstance().registerComponent(this);\r
@@ -240,10 +258,10 @@ public class PDBCanvas extends JPanel implements MouseListener, MouseMotionListe
                 }\r
             }\r
         }\r
-\r
+        /*\r
         System.out.println("xmax " + max[0] + " min " + min[0]);\r
         System.out.println("ymax " + max[1] + " min " + min[1]);\r
-        System.out.println("zmax " + max[2] + " min " + min[2]);\r
+        System.out.println("zmax " + max[2] + " min " + min[2]);*/\r
 \r
         width[0] = (float) Math.abs(max[0] - min[0]);\r
         width[1] = (float) Math.abs(max[1] - min[1]);\r
@@ -259,7 +277,7 @@ public class PDBCanvas extends JPanel implements MouseListener, MouseMotionListe
             maxwidth = width[2];\r
         }\r
 \r
-        System.out.println("Maxwidth = " + maxwidth);\r
+       // System.out.println("Maxwidth = " + maxwidth);\r
     }\r
 \r
     public float findScale() {\r
@@ -318,12 +336,13 @@ public class PDBCanvas extends JPanel implements MouseListener, MouseMotionListe
 \r
     public void paintComponent(Graphics g) {\r
 \r
+      super.paintComponent(g);\r
+\r
       if(pdb==null)\r
       {\r
         g.setColor(Color.black);\r
         g.setFont(new Font("Verdana", Font.BOLD, 14));\r
         g.drawString("Retrieving PDB data....", 20, getHeight()/2);\r
-\r
         return;\r
       }\r
 \r
@@ -368,7 +387,7 @@ public class PDBCanvas extends JPanel implements MouseListener, MouseMotionListe
 \r
     public void updateSeqColours()\r
     {\r
-      if(bysequence)\r
+      if(bysequence && pdb!=null)\r
       {\r
         for (int ii = 0; ii < pdb.chains.size(); ii++)\r
         {\r
@@ -487,7 +506,6 @@ public class PDBCanvas extends JPanel implements MouseListener, MouseMotionListe
 \r
     public void keyPressed(KeyEvent evt) {\r
       int key = evt.getKeyChar();\r
-      System.out.println(key);\r
       if (evt.getKeyCode() == KeyEvent.VK_UP)\r
       {\r
         scale = (float) (scale * 1.1);\r
@@ -521,6 +539,19 @@ public class PDBCanvas extends JPanel implements MouseListener, MouseMotionListe
 \r
         myAtom fatom = findAtom(e.getX(), e.getY());\r
 \r
+        if(foundchain!=-1)\r
+        {\r
+          PDBChain chain = (PDBChain) pdb.chains.elementAt(foundchain);\r
+          int pos = chain.seqstart +\r
+              (fatom.resNumber - chain.pdbstart - chain.offset)+1;\r
+\r
+          int index = seqcanvas.getViewport().getAlignment().findIndex(sequence);\r
+\r
+          seqcanvas.highlightSearchResults(new int[]{index, pos, pos});\r
+        }\r
+        else\r
+          seqcanvas.highlightSearchResults(null);\r
+\r
         if (fatom != null) {\r
             this.setToolTipText(fatom.resNumber+" "+ fatom.resName);\r
         } else {\r
@@ -636,10 +667,11 @@ public class PDBCanvas extends JPanel implements MouseListener, MouseMotionListe
         }\r
     }\r
 \r
+    int foundchain = -1;\r
     public myAtom findAtom(int x, int y) {\r
         myAtom fatom = null;\r
 \r
-        int foundchain = -1;\r
+        foundchain = -1;\r
 \r
         for (int ii = 0; ii < pdb.chains.size(); ii++) {\r
             PDBChain chain = (PDBChain) pdb.chains.elementAt(ii);\r
@@ -661,6 +693,7 @@ public class PDBCanvas extends JPanel implements MouseListener, MouseMotionListe
                         {\r
                             fatom = tmpBond.at1;\r
                             foundchain = ii;\r
+                            break;\r
                         }\r
                     }\r
                 }\r
@@ -669,18 +702,9 @@ public class PDBCanvas extends JPanel implements MouseListener, MouseMotionListe
             if (fatom != null) //)&& chain.ds != null)\r
              {\r
                 chain = (PDBChain) pdb.chains.elementAt(foundchain);\r
-\r
-                // SMJS TODO\r
-                // int tmp = chain.ds.seqstart + fatom.resNumber - chain.offset;\r
-                // int pos = chain.ds.findIndex(tmp);\r
-                // System.out.println("Found seq " + chain.ds.name + " "  + tmp + " " + pos);\r
             }\r
         }\r
 \r
         return fatom;\r
     }\r
-\r
-    public void update(Graphics g) {\r
-        paint(g);\r
-    }\r
 }\r
index 86755dd..166e537 100755 (executable)
@@ -140,12 +140,11 @@ public class PDBChain {
                 seq = seq + tmpres2;\r
             }\r
 \r
-            //      System.out.println(tmpat.resName + " " + tmpres2);\r
         }\r
 \r
         sequence = new Sequence("PDB_seq", seq, 1, seq.length());\r
-        System.out.println("PDB Sequence is :\nSequence = " + seq);\r
-        System.out.println("No of residues = " + residues.size());\r
+      //  System.out.println("PDB Sequence is :\nSequence = " + seq);\r
+      //  System.out.println("No of residues = " + residues.size());\r
     }\r
 \r
     public void setChargeColours() {\r
index 2610b40..49c1b11 100755 (executable)
@@ -19,7 +19,6 @@ public class PDBViewer extends JInternalFrame implements Runnable
 {\r
   PDBEntry pdb;\r
   Sequence sequence;\r
-  SeqCanvas seqcanvas;\r
   PDBCanvas pdbcanvas;\r
 \r
 \r
@@ -29,8 +28,6 @@ public class PDBViewer extends JInternalFrame implements Runnable
   {\r
     pdb = entry;\r
     sequence = seq;\r
-    this.seqcanvas = seqcanvas;\r
-\r
 \r
     try\r
     {\r
@@ -41,7 +38,8 @@ public class PDBViewer extends JInternalFrame implements Runnable
       ex.printStackTrace();\r
     }\r
 \r
-    pdbcanvas = new PDBCanvas();\r
+    pdbcanvas = new PDBCanvas(seqcanvas, seq);\r
+\r
     setContentPane(pdbcanvas);\r
     Desktop.addInternalFrame(this,\r
                          sequence.getName() + ":" + pdb.getId()\r
@@ -63,12 +61,8 @@ public class PDBViewer extends JInternalFrame implements Runnable
 \r
       PDBfile pdbfile = new PDBfile(result);\r
 \r
-      pdbcanvas.setPDBFile(pdbfile,\r
-                        sequence,\r
-                        seqcanvas.getSequenceRenderer(),\r
-                        seqcanvas.getFeatureRenderer());\r
+      pdbcanvas.setPDBFile(pdbfile);\r
 \r
-      seqcanvas.setPDBViewer(pdbcanvas);\r
     }\r
     catch (Exception ex)\r
     {\r
@@ -83,7 +77,6 @@ public class PDBViewer extends JInternalFrame implements Runnable
         {\r
             public void keyPressed(KeyEvent evt)\r
             {\r
-              System.out.println("key press");\r
               pdbcanvas.keyPressed(evt);\r
             }\r
         });\r
@@ -110,6 +103,13 @@ public class PDBViewer extends JInternalFrame implements Runnable
       }\r
     });\r
     mapping.setText("View Mapping");\r
+    mapping.addActionListener(new ActionListener()\r
+    {\r
+      public void actionPerformed(ActionEvent e)\r
+      {\r
+        mapping_actionPerformed(e);\r
+      }\r
+    });\r
     wire.setText("Wireframe");\r
     wire.addActionListener(new ActionListener()\r
     {\r
@@ -337,6 +337,7 @@ public class PDBViewer extends JInternalFrame implements Runnable
 \r
   public void charge_actionPerformed(ActionEvent e)\r
   {\r
+    clearButtonGroup();\r
     pdbcanvas.pdb.setChargeColours();\r
     pdbcanvas.redrawneeded=true;\r
     pdbcanvas.repaint();\r
@@ -344,6 +345,7 @@ public class PDBViewer extends JInternalFrame implements Runnable
 \r
   public void hydro_actionPerformed(ActionEvent e)\r
   {\r
+    clearButtonGroup();\r
     pdbcanvas.pdb.setHydrophobicityColours();\r
     pdbcanvas.redrawneeded=true;\r
     pdbcanvas.repaint();\r
@@ -351,6 +353,7 @@ public class PDBViewer extends JInternalFrame implements Runnable
 \r
   public void chain_actionPerformed(ActionEvent e)\r
   {\r
+    clearButtonGroup();\r
     pdbcanvas.pdb.setChainColours();\r
     pdbcanvas.redrawneeded=true;\r
     pdbcanvas.repaint();\r
@@ -386,15 +389,21 @@ public class PDBViewer extends JInternalFrame implements Runnable
 \r
   public void seqButton_actionPerformed(ActionEvent e)\r
   {\r
+    clearButtonGroup();\r
     pdbcanvas.bysequence = seqButton.isSelected();\r
     pdbcanvas.updateSeqColours();\r
   }\r
 \r
   void clearButtonGroup()\r
   {\r
-   charge.setSelected(false);\r
-   hydro.setSelected(false);\r
-   chain.setSelected(false);\r
-   seqButton.setSelected(false);\r
+   pdbcanvas.bysequence = false;\r
+   pdbcanvas.bymolecule = false;\r
+  }\r
+\r
+  public void mapping_actionPerformed(ActionEvent e)\r
+  {\r
+    jalview.gui.CutAndPasteTransfer cap = new jalview.gui.CutAndPasteTransfer();\r
+    Desktop.addInternalFrame(cap, "PDB - Sequence Mapping", 500, 600);\r
+    cap.setText(pdbcanvas.mappingDetails.toString());\r
   }\r
 }\r
index ae1e4ec..8cbe37d 100755 (executable)
@@ -18,8 +18,6 @@
 */\r
 package MCview;\r
 \r
-import jalview.datamodel.*;\r
-\r
 import java.io.*;\r
 \r
 import java.net.*;\r