From 04fe5ab63df768c865eb40c9300b52239fbe8746 Mon Sep 17 00:00:00 2001 From: amwaterhouse Date: Tue, 1 May 2007 12:25:38 +0000 Subject: [PATCH] Can specify PDB chain to map sequence to - only used by applet so far --- src/jalview/appletgui/APopupMenu.java | 8 +- src/jalview/appletgui/AppletJmol.java | 9 +- src/jalview/appletgui/CutAndPasteTransfer.java | 8 +- src/jalview/bin/JalviewLite.java | 204 +++++++++++--------- src/jalview/gui/AppJMol.java | 8 +- src/jalview/gui/Jalview2XML.java | 2 +- src/jalview/gui/PopupMenu.java | 2 +- .../structure/StructureSelectionManager.java | 18 +- 8 files changed, 149 insertions(+), 110 deletions(-) diff --git a/src/jalview/appletgui/APopupMenu.java b/src/jalview/appletgui/APopupMenu.java index 072621b..41b5076 100755 --- a/src/jalview/appletgui/APopupMenu.java +++ b/src/jalview/appletgui/APopupMenu.java @@ -517,14 +517,14 @@ public class APopupMenu if ( ap.av.applet.jmolAvailable ) new jalview.appletgui.AppletJmol(entry, - new Sequence[] - {seq}, + new Sequence[]{seq}, + null, ap, AppletFormatAdapter.URL); else new MCview.AppletPDBViewer(entry, - new Sequence[] - {seq}, + new Sequence[]{seq}, + null, ap, AppletFormatAdapter.URL); diff --git a/src/jalview/appletgui/AppletJmol.java b/src/jalview/appletgui/AppletJmol.java index 4951516..29cc070 100644 --- a/src/jalview/appletgui/AppletJmol.java +++ b/src/jalview/appletgui/AppletJmol.java @@ -67,6 +67,7 @@ public class AppletJmol extends Frame TextField inputLine; TextArea history; SequenceI[] sequence; + String [] chains; StructureSelectionManager ssm; RenderPanel renderPanel; AlignmentPanel ap; @@ -78,11 +79,13 @@ public class AppletJmol extends Frame public AppletJmol(PDBEntry pdbentry, SequenceI[] seq, + String[] chains, AlignmentPanel ap, String protocol) { this.ap = ap; this.sequence = seq; + this.chains = chains; this.pdbentry = pdbentry; String alreadyMapped = StructureSelectionManager @@ -92,7 +95,7 @@ public class AppletJmol extends Frame if (alreadyMapped != null) { StructureSelectionManager.getStructureSelectionManager() - .setMapping(seq, pdbentry.getFile(), protocol); + .setMapping(seq, chains, pdbentry.getFile(), protocol); //PROMPT USER HERE TO ADD TO NEW OR EXISTING VIEW? //FOR NOW, LETS JUST OPEN A NEW WINDOW } @@ -616,14 +619,14 @@ public class AppletJmol extends Frame MCview.PDBfile pdb; if (loadedInline) { - pdb = ssm.setMapping(sequence, + pdb = ssm.setMapping(sequence,chains, pdbentry.getFile(), AppletFormatAdapter.PASTE); pdbentry.setFile("INLINE"+pdb.id); } else { - pdb = ssm.setMapping(sequence, + pdb = ssm.setMapping(sequence,chains, pdbentry.getFile(), AppletFormatAdapter.URL); } diff --git a/src/jalview/appletgui/CutAndPasteTransfer.java b/src/jalview/appletgui/CutAndPasteTransfer.java index 2506752..78d7ba7 100755 --- a/src/jalview/appletgui/CutAndPasteTransfer.java +++ b/src/jalview/appletgui/CutAndPasteTransfer.java @@ -128,15 +128,15 @@ public class CutAndPasteTransfer if ( alignFrame.alignPanel.av.applet.jmolAvailable ) new jalview.appletgui.AppletJmol(pdb, - new Sequence[] - {seq}, + new Sequence[]{seq}, + null, alignFrame.alignPanel, AppletFormatAdapter.PASTE); else new MCview.AppletPDBViewer(pdb, - new Sequence[] - {seq}, + new Sequence[]{seq}, + null, alignFrame.alignPanel, AppletFormatAdapter.PASTE); diff --git a/src/jalview/bin/JalviewLite.java b/src/jalview/bin/JalviewLite.java index 4e2d4b7..292c659 100755 --- a/src/jalview/bin/JalviewLite.java +++ b/src/jalview/bin/JalviewLite.java @@ -157,19 +157,6 @@ public class JalviewLite */ public void init() { - try - { - if (!System.getProperty("java.version").startsWith("1.1")) - { - Class.forName("org.jmol.adapter.smarter.SmarterJmolAdapter"); - jmolAvailable = true; - } - } - catch (java.lang.ClassNotFoundException ex) - { - System.out.println("Jmol not available - Using MCview for structures"); - } - int r = 255; int g = 255; int b = 255; @@ -217,6 +204,9 @@ public class JalviewLite } } + LoadJmolThread jmolAvailable = new LoadJmolThread(); + jmolAvailable.start(); + final JalviewLite applet = this; if (getParameter("embedded") != null && getParameter("embedded").equalsIgnoreCase("true")) @@ -246,33 +236,6 @@ public class JalviewLite } } - public static void main(String[] args) - { - if (args.length != 1) - { - System.out.println("\nUsage: java -jar jalviewApplet.jar fileName\n"); - System.exit(1); - } - - String format = new jalview.io.IdentifyFile().Identify(args[0], - AppletFormatAdapter.FILE); - - Alignment al = null; - try - { - al = new AppletFormatAdapter().readFile(args[0], AppletFormatAdapter.FILE, - format); - } - catch (java.io.IOException ex) - { - ex.printStackTrace(); - } - if ( (al != null) && (al.getHeight() > 0)) - { - AlignFrame af = new AlignFrame(al, null, args[0], false); - af.statusBar.setText("Successfully loaded file " + args[0]); - } - } /** * Initialises and displays a new java.awt.Frame @@ -345,9 +308,30 @@ public class JalviewLite g.drawString("Jalview Applet", 50, this.getSize().height / 2 - 30); g.drawString("Loading Data...", 50, this.getSize().height / 2); } + } + + class LoadJmolThread extends Thread + { + public void run() + { + try + { + if (!System.getProperty("java.version").startsWith("1.1")) + { + Class.forName("org.jmol.adapter.smarter.SmarterJmolAdapter"); + jmolAvailable = true; + System.out.println("JMOL FOUND"); + } + } + catch (java.lang.ClassNotFoundException ex) + { + System.out.println("Jmol not available - Using MCview for structures"); + } + } } + class LoadingThread extends Thread { @@ -380,6 +364,11 @@ public class JalviewLite public void run() { + startLoading(); + } + + private void startLoading() + { Alignment al = null; try { @@ -507,67 +496,106 @@ public class JalviewLite } } + /* + - param = getParameter("PDBFILE"); - if (param != null) - { + - PDBEntry pdb = new PDBEntry(); + + */ - String seqstring; - SequenceI [] seqs = null; - if(param.indexOf(" ")>-1) + int pdbFileCount = 0; + do{ + if (pdbFileCount > 0) + param = getParameter("PDBFILE" + pdbFileCount); + else + param = getParameter("PDBFILE"); + + if (param != null) { - seqstring = param.substring(param.indexOf(" ")+1); - param = param.substring(0, param.indexOf(" ")); - StringTokenizer st = new StringTokenizer(seqstring); - Vector tmp = new Vector(); - while(st.hasMoreTokens()) + PDBEntry pdb = new PDBEntry(); + + String seqstring; + SequenceI[] seqs = null; + String [] chains = null; + + StringTokenizer st = new StringTokenizer(param, " "); + + if (st.countTokens() < 2) { - tmp.addElement((Sequence) currentAlignFrame. - getAlignViewport().getAlignment(). - findName(st.nextToken())); - } + String sequence = applet.getParameter("PDBSEQ"); + if (sequence != null) + seqs = new SequenceI[] + { + (Sequence) currentAlignFrame. + getAlignViewport().getAlignment(). + findName(sequence)}; - seqs = new SequenceI[tmp.size()]; - tmp.copyInto(seqs); - } - else - { - String sequence = applet.getParameter("PDBSEQ"); - if (sequence != null) - seqs = new SequenceI[] - { - (Sequence) currentAlignFrame. - getAlignViewport().getAlignment(). - findName(sequence)}; - } + } + else + { + param = st.nextToken(); + Vector tmp = new Vector(); + Vector tmp2 = new Vector(); + + while (st.hasMoreTokens()) + { + seqstring = st.nextToken(); + StringTokenizer st2 = new StringTokenizer(seqstring,"="); + if(st2.countTokens()>1) + { + //This is the chain + tmp2.addElement(st2.nextToken()); + seqstring = st2.nextToken(); + } + tmp.addElement( (Sequence) currentAlignFrame. + getAlignViewport().getAlignment(). + findName(seqstring)); + } + + seqs = new SequenceI[tmp.size()]; + tmp.copyInto(seqs); + if(tmp2.size()==tmp.size()) + { + chains = new String[tmp2.size()]; + tmp2.copyInto(chains); + } + } - // if (!inArchive(param) || jmolAvailable) - { param = addProtocol(param); - } - - pdb.setFile(param); + pdb.setFile(param); - for(int i=0; i -1) + if(targetChains!=null && targetChains[s]!=null) + targetChain = targetChains[s]; + else if (sequence[s].getName().indexOf("|") > -1) { targetChain = sequence[s].getName().substring( sequence[s].getName().lastIndexOf("|") + 1); } + else + targetChain = ""; + int max = -10; AlignSeq maxAlignseq = null; -- 1.7.10.2