From 33c59ebddbc51bbd26bc4c8576ec17c1498b19e8 Mon Sep 17 00:00:00 2001 From: jprocter Date: Sun, 22 May 2005 17:56:13 +0000 Subject: [PATCH] Added alignment ordering option to 'Sort by' and implemented generic MsaWS client. --- src/ext/jemboss/JembossJarUtil.java | 167 -- src/ext/jemboss/JembossParams.java | 1295 ------------ src/ext/jemboss/soap/JembossRun.java | 142 -- src/ext/jemboss/soap/JembossSoapException.java | 46 - src/ext/jemboss/soap/MakeFileSafe.java | 83 - src/ext/jemboss/soap/PrivateRequest.java | 240 --- src/ext/jemboss/soap/PublicRequest.java | 186 -- src/jalview/analysis/AlignmentSorter.java | 6 +- src/jalview/analysis/SeqsetUtils.java | 52 + src/jalview/datamodel/AlignmentOrder.java | 117 ++ src/jalview/gui/AlignFrame.java | 2565 ++++++++++++------------ src/jalview/ws/Jemboss.java | 181 -- src/jalview/ws/MsaWSClient.java | 49 +- src/jalview/ws/MsaWServices.java | 39 + 14 files changed, 1557 insertions(+), 3611 deletions(-) delete mode 100755 src/ext/jemboss/JembossJarUtil.java delete mode 100755 src/ext/jemboss/JembossParams.java delete mode 100755 src/ext/jemboss/soap/JembossRun.java delete mode 100755 src/ext/jemboss/soap/JembossSoapException.java delete mode 100755 src/ext/jemboss/soap/MakeFileSafe.java delete mode 100755 src/ext/jemboss/soap/PrivateRequest.java delete mode 100755 src/ext/jemboss/soap/PublicRequest.java create mode 100755 src/jalview/analysis/SeqsetUtils.java create mode 100755 src/jalview/datamodel/AlignmentOrder.java delete mode 100755 src/jalview/ws/Jemboss.java create mode 100755 src/jalview/ws/MsaWServices.java diff --git a/src/ext/jemboss/JembossJarUtil.java b/src/ext/jemboss/JembossJarUtil.java deleted file mode 100755 index ad10cd2..0000000 --- a/src/ext/jemboss/JembossJarUtil.java +++ /dev/null @@ -1,167 +0,0 @@ -/*************************************************************** -* -* This program is free software; you can redistribute it and/or -* modify it under the terms of the GNU General Public License -* as published by the Free Software Foundation; either version 2 -* of the License, or (at your option) any later version. -* -* This program is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* You should have received a copy of the GNU General Public License -* along with this program; if not, write to the Free Software -* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -* -* @author: Copyright (C) Tim Carver -* -***************************************************************/ - -package ext.jemboss; - -import java.util.*; -import java.util.zip.*; -import java.io.*; - - -/** -* -* Unpacks a Jar file into a Hashtable -* -*/ -public class JembossJarUtil -{ - - /** Hashtable containing the unpacked contents of the jar file */ - private Hashtable jarStore = new Hashtable(); - - /** - * - * Given the path to a jar file unpack to a hashtable - * @param jarFile path to jar file to unpack - * @throws Exception if it is not possible to read jar file - * - */ - public JembossJarUtil(String jarFile) throws Exception - { - - try - { - // extracts just sizes only - ClassLoader cl = this.getClass().getClassLoader(); - ZipInputStream zis= new ZipInputStream( - cl.getResourceAsStream(jarFile)); - ZipEntry ze=null; - Hashtable htSizes = new Hashtable(); - - while((ze=zis.getNextEntry())!=null) - { - int ret=0; - int cnt=0; - int rb = 0; - while(ret != -1) - { - byte[] b1 = new byte[1]; - ret=zis.read(b1,rb,1); - cnt++; - } - htSizes.put(ze.getName(),new Integer(cnt)); - } - zis.close(); - - // extract resources and put them into the hashtable - zis = new ZipInputStream(cl.getResourceAsStream(jarFile)); - ze=null; - while ((ze=zis.getNextEntry())!=null) - { - if(ze.isDirectory()) - continue; - - int size=(int)ze.getSize(); // -1 means unknown size - if(size==-1) - size=((Integer)htSizes.get(ze.getName())).intValue(); - - byte[] b=new byte[(int)size]; - int rb=0; - int chunk=0; - while (((int)size - rb) > 0) - { - chunk=zis.read(b,rb,(int)size - rb); - if(chunk==-1) - break; - rb+=chunk; - } - - // add to internal resource hashtable - jarStore.put(ze.getName(),b); - -// System.out.println(ze.getName()); - } - zis.close(); - } - catch (Exception e) { throw new Exception();} - -// catch (NullPointerException e) -// { -// System.out.println("JembossJarUtil Error: jarStore"); -// } -// catch (FileNotFoundException e) -// { -// e.printStackTrace(); -// } -// catch (IOException e) -// { -// e.printStackTrace(); -// } - } - - - /** - * - * Return the hashtable - * @return jarStore the hashtable containing the contents - * of the jar - * - */ - public Hashtable getHash() - { - return jarStore; - } - - /** - * - * Return an element of the hashtable - * @param el key of an element in the hashtable - * @return the hashtable containing the contents - * of the jar - * - */ - public Object getElement(String el) - { - return jarStore.get(el); - } - - /** - * - * Write contents of an element in the hashtable - * @param el key of an element in the hashtable - * @param f path of file to write to - * @return true if written file - * - */ - public boolean writeByteFile(String el, String f) - { - try - { - FileOutputStream out = new FileOutputStream(f); - out.write((byte []) jarStore.get(el)); - out.close(); - } - catch(FileNotFoundException fnfe) {return false;} - catch(IOException ioe) {return false;} - - return true; - } - -} diff --git a/src/ext/jemboss/JembossParams.java b/src/ext/jemboss/JembossParams.java deleted file mode 100755 index b9580b5..0000000 --- a/src/ext/jemboss/JembossParams.java +++ /dev/null @@ -1,1295 +0,0 @@ -/*************************************************************** -* -* This program is free software; you can redistribute it and/or -* modify it under the terms of the GNU General Public License -* as published by the Free Software Foundation; either version 2 -* of the License, or (at your option) any later version. -* -* This program is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* You should have received a copy of the GNU General Public License -* along with this program; if not, write to the Free Software -* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -* -* @author: Copyright (C) Tim Carver -* -***************************************************************/ - -package ext.jemboss; - -import java.util.*; -import java.io.FileInputStream; -import java.io.FileOutputStream; -import java.net.InetAddress; - - -/** -* -* Contains all property information about the client -* and the server. -* -*/ -public class JembossParams -{ - -/** denotes a server is OK */ - static public final int SERVER_OK = 0; -/** denotes a server is giving errors */ - static public final int SERVER_ERR = 1; -/** denotes a server is not responding */ - static public final int SERVER_DOWN = 2; - - // these are the things that could be set - private boolean useHTTPSProxy = false; - private String useHTTPSProxyName = "useHTTPSProxy"; - - private boolean useProxy = false; - private String useProxyName = "proxy.use"; - - private String proxyHost = "wwwcache"; - private String proxyHostName = "proxy.host"; - - private int proxyPortNum = 8080; - private String proxyPortNumName = "proxy.port"; - -//browser proxy - - /** use a separate proxy for browsing the web */ - private boolean useBrowserProxy = false; - /** property name for using separate proxy for browsing the web */ - private String useBrowserProxyName = "browserProxy.use"; - /** browser proxy host */ - private String browserProxyHost = "wwwcache"; - /** property name for browser proxy host */ - private String browserProxyHostName = "browserProxy.host"; - /** browser proxy port */ - private int browserProxyPort = 8080; - /** property name for browser proxy port */ - private String browserProxyPortName = "browserProxy.port"; - - private boolean useTFM; - private String useTFMName = "tfm.use"; - - /** use proxy authentication */ - private boolean useProxyAuth = false; - /** property name for using proxy authentication */ - private String useProxyAuthName = "proxy.auth"; - - private String proxyAuthUser = ""; - private String proxyAuthUserName = "proxy.user"; - - private String proxyAuthPasswd = ""; - private String proxyAuthPasswdName = "proxy.passwd"; - - private boolean proxyOverride = false; - private String proxyOverrideName = "proxy.override"; - - /** use unix authentication to run applications on the server */ - private boolean useAuth = false; - /** property name for using unix authentication */ - private String useAuthName = "user.auth"; - - /** public services URL */ - private String publicSoapURL = - "http://anaplog.compbio.dundee.ac.uk:8080/axis/services"; - /** property name for public services URL */ - private String publicSoapURLName = "server.public"; - - /** private services URL */ - private String privateSoapURL = - "http://anaplog.compbio.dundee.ac.uk:8080/axis/services"; - /** property name for private services URL */ - private String privateSoapURLName = "server.private"; - - /** service name */ - private String soapService = "JembossServer"; - /** property name for service name */ - private String soapServiceName = "VAMSAS Services"; - - /** private service name */ - private String privateSoapService = "JembossServer"; - /** property name for private service name */ - private String privateSoapServiceName = "VAMSAS Services"; - - /** public service name */ - private String publicSoapService = "JembossServer"; - /** property name for public service name */ - private String publicSoapServiceName = "VAMSAS Services"; - - //soap options - private boolean debug = false; - private String debugName = "jemboss.debug"; - - /** batch mode support */ - private boolean hasBatchMode = true; - /** property name for batch mode support */ - private String hasBatchModeName = "jemboss.hasbatchmode"; - /** interactive mode support */ - private boolean hasInteractiveMode = true; - /** property name for interactive mode support */ - private String hasInteractiveModeName = "jemboss.hasinteractivemode"; - /** current mode for running an application */ - private String currentMode = "interactive"; - /** property name for current mode */ - private String currentModeName = "jemboss.mode"; - - // server lists for redundancy - private String serverPublicList = ""; - private String serverPublicListName = "server.publiclist"; - - private String serverPrivateList = ""; - private String serverPrivateListName = "server.privatelist"; - - // we don't remember these perhaps we should for captive systems - private String serviceUserName = "jalview"; - private String serviceUserNameName = "user.name"; - private char[] servicePasswd = null; - /** services password */ - private byte[] servicePasswdByte = null; - - Properties jembossSettings; - - // Internal flags to help in the dynamic evaluation of properties - private boolean useJavaProxy = false; - private String javaProxyPort = ""; - private String javaProxyHost = ""; - private boolean useJavaNoProxy = false; - private String javaNoProxy = ""; - private Vector javaNoProxyEntries; - private int javaProxyPortNum = 8080; - - // structures for server redundancy - private boolean publicServerFailOver = false; - private boolean privateServerFailOver = false; - private Hashtable serverStatusHash; - private Vector publicServers; - private Vector privateServers; - - /** Jemboss java server */ - private static boolean jembossServer = false; - /** property name for Jemboss java server */ - private String jembossServerName = "jemboss.server"; - - /** cygwin */ - private static String cygwin = null; - /** property name for Jemboss java server */ - private String cygwinName = "cygwin"; - - //EMBOSS directories - /** plplot library location */ - private String plplot = "/usr/local/share/EMBOSS/"; - /** property name for plplot library location */ - private String plplotName = "plplot"; - /** emboss data location */ - private String embossData = "/usr/local/share/EMBOSS/data/"; - /** property name for emboss data location */ - private String embossDataName = "embossData"; - /** emboss binary location */ - private String embossBin = "/usr/local/bin/"; - /** property name for emboss binary location */ - private String embossBinName = "embossBin"; - /** emboss path environment variable */ - private String embossPath = "/usr/bin/:/bin"; - /** property name for emboss path environment variable */ - private String embossPathName = "embossPath"; - /** emboss environment */ - private String embossEnvironment = ""; - /** property name for emboss environment */ - private String embossEnvironmentName = "embossEnvironment"; - /** acd file location */ - private String acdDirToParse = "/usr/local/share/EMBOSS/acd/"; - /** property name for acd file location */ - private String acdDirToParseName = "acdDirToParse"; - - //EMBOSS Application pages - /** documentation URL */ - private String embURL = "http://www.uk.embnet.org/Software/EMBOSS/Apps/"; - /** property name for documentation URL */ - private String embossURL = "embossURL"; - - // user properties - /** user home directory */ - private String userHome = System.getProperty("user.home"); - /** property name for user home directory */ - private String userHomeName = "user.home"; - - -/** -* -* Loads and holds the properties -* -*/ - public JembossParams() - { - Properties defaults = new Properties(); - ClassLoader cl = this.getClass().getClassLoader(); - - // initialize data structures - serverStatusHash = new Hashtable(); - publicServers = new Vector(); - privateServers = new Vector(); - - // initialize settings from table above - defaults.put(userHomeName,userHome); - defaults.put(embossURL,embURL); - defaults.put(plplotName,plplot); - defaults.put(embossDataName,embossData); - defaults.put(embossBinName,embossBin); - defaults.put(embossPathName,embossPath); - defaults.put(embossEnvironmentName,embossEnvironment); - defaults.put(acdDirToParseName,acdDirToParse); - - defaults.put(useBrowserProxyName, new Boolean(useBrowserProxy).toString()); - defaults.put(browserProxyHostName,browserProxyHost); - defaults.put(browserProxyPortName,new Integer(browserProxyPort).toString()); - - defaults.put(useTFMName,new Boolean(useTFM).toString()); - - defaults.put(useProxyName, new Boolean(useProxy).toString()); - defaults.put(useHTTPSProxyName, new Boolean(useHTTPSProxy).toString()); - defaults.put(proxyHostName,proxyHost); - defaults.put(proxyPortNumName, new Integer(proxyPortNum).toString()); - defaults.put(useProxyAuthName, new Boolean(useProxyAuth).toString()); - defaults.put(proxyAuthUserName, proxyAuthUser); - defaults.put(proxyAuthPasswdName, proxyAuthPasswd); - defaults.put(proxyOverrideName, new Boolean(proxyOverride).toString()); - defaults.put(useAuthName, new Boolean(useAuth).toString()); - defaults.put(publicSoapURLName, publicSoapURL); - defaults.put(privateSoapURLName, privateSoapURL); - defaults.put(privateSoapServiceName, privateSoapService); - defaults.put(publicSoapServiceName, publicSoapService); - defaults.put(debugName, new Boolean(debug).toString()); - defaults.put(hasBatchModeName, new Boolean(hasBatchMode).toString()); - defaults.put(hasInteractiveModeName, new Boolean(hasInteractiveMode).toString()); - defaults.put(currentModeName, currentMode); - defaults.put(serverPublicListName, serverPublicList); - defaults.put(serverPrivateListName, serverPrivateList); - defaults.put(serviceUserNameName, serviceUserName); - - // load into real settings - jembossSettings = new Properties(defaults); - - // try out of the classpath - try - { - jembossSettings.load(cl.getResourceAsStream("resources/jemboss.properties")); - } - catch (Exception e) - { - if(debug) - System.out.println("Didn't find properties file in classpath."); - } - - // override with local system settings - loadIn(System.getProperty("user.dir")); - - // override with local user settings - loadIn(System.getProperty("user.home")); - - // update our settings - updateSettingsFromProperties(); - - if(System.getProperty("useHTTPSProxy") != null) - if(System.getProperty("useHTTPSProxy").equalsIgnoreCase("true")) - useHTTPSProxy=true; - - // set up for overrides - javaNoProxyEntries = new Vector(); - if(System.getProperty("proxyPort") != null) - { - if(System.getProperty("proxyHost") != null) - { - useJavaProxy = true; - useProxy = useJavaProxy; - useBrowserProxy = useJavaProxy; - - javaProxyPort = System.getProperty("proxyPort"); - javaProxyPortNum = Integer.parseInt(javaProxyPort); - javaProxyHost = System.getProperty("proxyHost"); - - browserProxyHost = javaProxyHost; - browserProxyPort = javaProxyPortNum; - - if(System.getProperty("http.nonProxyHosts") != null) - { - useJavaNoProxy = true; - javaNoProxy = System.getProperty("http.nonProxyHosts"); - StringTokenizer tok = new StringTokenizer(javaNoProxy,"|"); - while (tok.hasMoreTokens()) - { - String toks = tok.nextToken() + "/"; - javaNoProxyEntries.add(toks); - } - } - } - } - - } - - /** - * - * Load a property from the jemboss.property file. - * @param folder location of jemboss.property - * - */ - private void loadIn(String folder) - { - FileInputStream in = null; - try - { - String fs = System.getProperty("file.separator"); - in = new FileInputStream(folder + fs + "jemboss.properties"); - jembossSettings.load(in); - } - catch (java.io.FileNotFoundException e) - { - in = null; - if(debug) - System.out.println("Can't find properties file in"+folder+"."+ - " Using defaults."); - } - catch (java.io.IOException e) - { - if(debug) - System.out.println("Can't read properties file. " + - "Using defaults."); - } - finally - { - if (in != null) - { - try { in.close(); } catch (java.io.IOException e) { } - in = null; - } - } - - } - - /** - * - * Update the property settings for jembossSettings. - * - */ - protected void updateSettingsFromProperties() - { - - try - { - String tmp; - - userHome = jembossSettings.getProperty(userHomeName); - embURL = jembossSettings.getProperty(embossURL); - plplot = jembossSettings.getProperty(plplotName); - embossData = jembossSettings.getProperty(embossDataName); - embossBin = jembossSettings.getProperty(embossBinName); - embossPath = jembossSettings.getProperty(embossPathName); - embossEnvironment = jembossSettings.getProperty(embossEnvironmentName); - acdDirToParse = jembossSettings.getProperty(acdDirToParseName); - tmp = jembossSettings.getProperty(jembossServerName); - jembossServer = new Boolean(tmp).booleanValue(); - - cygwin = jembossSettings.getProperty(cygwinName); - - tmp = jembossSettings.getProperty(useHTTPSProxyName); - useHTTPSProxy = new Boolean(tmp).booleanValue(); - tmp = jembossSettings.getProperty(useProxyName); - useProxy = new Boolean(tmp).booleanValue(); - proxyHost = jembossSettings.getProperty(proxyHostName); - tmp = jembossSettings.getProperty(proxyPortNumName); - proxyPortNum = Integer.parseInt(tmp); - - tmp = jembossSettings.getProperty(useBrowserProxyName); - useBrowserProxy = new Boolean(tmp).booleanValue(); - browserProxyHost = jembossSettings.getProperty(browserProxyHostName); - tmp = jembossSettings.getProperty(browserProxyPortName); - browserProxyPort = Integer.parseInt(tmp); - - tmp = jembossSettings.getProperty(useTFMName); - useTFM = new Boolean(tmp).booleanValue(); - - tmp = jembossSettings.getProperty(useProxyAuthName); - useProxyAuth = new Boolean(tmp).booleanValue(); - proxyAuthUser = jembossSettings.getProperty(proxyAuthUserName); - proxyAuthPasswd = jembossSettings.getProperty(proxyAuthPasswdName); - tmp = jembossSettings.getProperty(proxyOverrideName); - proxyOverride = new Boolean(tmp).booleanValue(); - tmp = jembossSettings.getProperty(useAuthName); - useAuth = new Boolean(tmp).booleanValue(); - publicSoapURL = jembossSettings.getProperty(publicSoapURLName); - privateSoapURL = jembossSettings.getProperty(privateSoapURLName); - soapService = jembossSettings.getProperty(soapServiceName); - privateSoapService = jembossSettings.getProperty(privateSoapServiceName); - publicSoapService = jembossSettings.getProperty(publicSoapServiceName); - tmp = jembossSettings.getProperty(debugName); - debug = new Boolean(tmp).booleanValue(); - tmp = jembossSettings.getProperty(hasBatchModeName); - hasBatchMode = new Boolean(tmp).booleanValue(); - tmp = jembossSettings.getProperty(hasInteractiveModeName); - hasInteractiveMode = new Boolean(tmp).booleanValue(); - currentMode = jembossSettings.getProperty(currentModeName); - serverPublicList = jembossSettings.getProperty(serverPublicListName); - serverPrivateList = jembossSettings.getProperty(serverPrivateListName); -// serviceUserName = jembossSettings.getProperty(serviceUserNameName); - } - catch (Exception e) { } - } - -/** -* -* Initialize the server redundancy data. This is a separate -* method because the server info might not be initialized in -* the constructor, but may be imported later from the command line. -* -*/ - protected void setupServerRedundancy() - { - if (!serverPublicList.equals("")) - { - if(debug) - System.out.println("JembossParams: Redundant public servers\n " - +serverPublicList); - - publicServerFailOver = true; - StringTokenizer tok = new StringTokenizer(serverPublicList,"|"); - while (tok.hasMoreTokens()) - { - String toks = tok.nextToken(); - publicServers.add(toks); - if(debug) - System.out.println(" Entry " + toks); - - serverStatusHash.put(toks, new Integer(SERVER_OK)); - } - } - - if(!serverPrivateList.equals("")) - { - if(debug) - System.out.println("JembossParams: Redundant private servers\n " - +serverPrivateList); - - privateServerFailOver = true; - StringTokenizer tok = new StringTokenizer(serverPrivateList,"|"); - while (tok.hasMoreTokens()) - { - String toks = tok.nextToken(); - privateServers.add(toks); - if(debug) - System.out.println(" Entry " + toks); - - serverStatusHash.put(toks,new Integer(SERVER_OK)); - } - } - } - - -/** -* -* If using a proxy server -* -*/ - public boolean getUseProxy() - { - return useProxy; - } - - -/** -* -* If using an https proxy server -* -*/ - public boolean getUseHTTPSProxy() - { - return useHTTPSProxy; - } - - -/** -* -* If using a proxy server for a given URL -* @param s the URL we wish to connect to -* -*/ - public boolean getUseProxy(String s) - { - if(proxyOverride) - return useProxy; - else - { - if(!useJavaProxy) - return useProxy; - else - { - boolean jp = true; - if (useJavaNoProxy) - { - int ip = javaNoProxyEntries.size(); - for(int j = 0 ; j') - dest.append('_'); - else if(c == '<') - dest.append('_'); - else if(c == ';') - dest.append('_'); - else if(c == '\\') - dest.append('_'); - else - dest.append(c); - - } - safeFileName = dest.toString(); - } - - /** - * - * Get the safe/sanitised file name - * @return sanitised file name - * - */ - public String getSafeFileName() - { - return safeFileName; - } -} diff --git a/src/ext/jemboss/soap/PrivateRequest.java b/src/ext/jemboss/soap/PrivateRequest.java deleted file mode 100755 index 892db3a..0000000 --- a/src/ext/jemboss/soap/PrivateRequest.java +++ /dev/null @@ -1,240 +0,0 @@ -/**************************************************************** -* -* This program is free software; you can redistribute it and/or -* modify it under the terms of the GNU General Public License -* as published by the Free Software Foundation; either version 2 -* of the License, or (at your option) any later version. -* -* This program is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* You should have received a copy of the GNU General Public License -* along with this program; if not, write to the Free Software -* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -* -* @author: Copyright (C) Tim Carver -* -***************************************************************/ - -package ext.jemboss.soap; - -import java.io.*; -import java.util.*; - -import ext.jemboss.JembossParams; -import javax.swing.JOptionPane; -//AXIS -import org.apache.axis.client.Call; -import org.apache.axis.client.Service; -import javax.xml.namespace.QName; -import org.apache.axis.encoding.XMLType; - -/** -* -* Make a axis call to a private server, using the default service -* -*/ -public class PrivateRequest -{ - - /** results from calling the web service */ - private Hashtable proganswer; - - /** - * - * @param mysettings jemboss properties - * @param method method to call - * @param args arguments - * @throws JembossSoapException if authentication fails - * - */ - public PrivateRequest(JembossParams mysettings, String method, Vector args) - throws JembossSoapException - { - this(mysettings, mysettings.getPrivateSoapService(), method, args); - } - - /** - * - * @param mysettings jemboss properties - * @param service service to call - * @param method method to call - * @throws JembossSoapException If authentication fails - * - */ - public PrivateRequest(JembossParams mysettings, String service, String method) - throws JembossSoapException - { - this(mysettings, service, method, (Vector) null); - } - - /** - * - * @param mysettings jemboss properties - * @param service service to call - * @param method method to call - * @param args arguments - * @throws JembossSoapException if authentication fails - */ - public PrivateRequest(JembossParams mysettings, String service, String method, - Vector args) throws JembossSoapException - { - try - { - String endpoint = mysettings.getPublicSoapURL()+"/"+service; - org.apache.axis.client.Service serv = - new org.apache.axis.client.Service(); - Call call = (Call) serv.createCall(); - QName qn = new QName(service, method); - call.setTargetEndpointAddress( new java.net.URL(endpoint) ); - call.setOperationName(new QName(service, method)); - call.setEncodingStyle(org.apache.axis.Constants.URI_SOAP12_ENC); - - int nargs = 0; - Object params[] = null; - if(args != null) - { - if(mysettings.getUseAuth()) - nargs = args.size()+2; - else - nargs = args.size()+1; - - params = new Object[nargs]; - Enumeration e = args.elements(); - for(int i=0;iTitle:

+ * + *

Description:

+ * + *

Copyright: Copyright (c) 2004

+ * + *

Company: Dundee University

+ * + * @author not attributable + * @version 1.0 + */ +public class SeqsetUtils +{ + public static Hashtable uniquify(SequenceI[] sequences) + { + // Generate a safely named sequence set and a hash to recover the sequence names + Hashtable map = new Hashtable(); + for (int i = 0; i < sequences.length; i++) + { + String safename = new String("Sequence" + i); + map.put(safename, sequences[i].getName()); + sequences[i].setName(safename); + } + return map; + } + + public static boolean deuniquify(Hashtable map, SequenceI[] sequences) + { + // recover unsafe sequence names for a sequence set + boolean allfound = true; + for (int i = 0; i < sequences.length; i++) + { + if (map.containsKey(sequences[i].getName())) + { + String unsafename = (String) map.get(sequences[i].getName()); + sequences[i].setName(unsafename); + } + else + { + allfound = false; + } + } + return allfound; + } + +} diff --git a/src/jalview/datamodel/AlignmentOrder.java b/src/jalview/datamodel/AlignmentOrder.java new file mode 100755 index 0000000..445671d --- /dev/null +++ b/src/jalview/datamodel/AlignmentOrder.java @@ -0,0 +1,117 @@ +package jalview.datamodel; + +import java.util.*; + +/** + *

Title:

+ * + *

Description:

+ * + *

Copyright: Copyright (c) 2004

+ * + *

Company: Dundee University

+ * + * @author not attributable + * @version 1.0 + */ +public class AlignmentOrder +{ + public AlignmentOrder() + { + } + + public void setType(int Type) + { + this.Type = Type; + } + + public int getType() + { + return Type; + } + + public void setName(String Name) + { + this.Name = Name; + } + + public String getName() + { + return Name; + } + + public void setOrder(Vector Order) + { + this.Order = Order; + } + + public Vector getOrder() + { + + return Order; + } +// JBPNote : this method would return a vector containing all sequences in seqset +// with those also contained in order at the beginning of the vector in the order +// given by order. AlignmentSorter.vectorSubsetToArray already does this, but that method +// should be here for completeness. + +/* public Vector getOrder(AlignmentI seqset) + { + Vector perm = new Vector(seqset.getHeight()); + for (i=0, o = 0, n=seqset.getHeight(), p = Order.size(); i0) - { - undoMenuItem.setEnabled(true); - Object [] history = (Object[])historyList.get(0); - undoMenuItem.setText("Undo "+history[0]); - } - else - { - undoMenuItem.setEnabled(false); - undoMenuItem.setText("Undo"); - } - - if(redoList.size()>0) - { - redoMenuItem.setEnabled(true); - Object [] history = (Object[])redoList.get(0); - redoMenuItem.setText("Redo "+history[0]); - } - else - { - redoMenuItem.setEnabled(false); - redoMenuItem.setText("Redo"); - } - } - - public void addHistoryItem(String type) - { - // must make sure we add new sequence objects her, not refs to the existing sequences - redoList.clear(); - - SequenceI[] seq = new SequenceI[viewport.getAlignment().getHeight()]; - for(int i=0; i -1; i--) - { - SequenceI seq = viewport.alignment.getSequenceAt(i); - if (!sg.sequences.contains(seq)) - continue; - - SequenceI temp = viewport.alignment.getSequenceAt(i + 1); - if (sg.sequences.contains(temp)) - continue; - - viewport.alignment.getSequences().setElementAt(temp, i); - viewport.alignment.getSequences().setElementAt(seq, i + 1); - } - } - - alignPanel.repaint(); - } - - - - protected void copy_actionPerformed(ActionEvent e) - { - if(viewport.getSelectionGroup()==null) - return; - - SequenceGroup sg = viewport.getSelectionGroup(); - - Clipboard c = Toolkit.getDefaultToolkit().getSystemClipboard(); - StringBuffer buffer= new StringBuffer(); - - Hashtable orderedSeqs = new Hashtable(); - for(int i=0; i 0) - { - int min = colSel.getMin(); - viewport.getAlignment().trimLeft(min); - colSel.compensateForEdit(0,min); - - if(viewport.getSelectionGroup()!=null) - viewport.getSelectionGroup().adjustForRemoveLeft(min); - - Vector groups = viewport.alignment.getGroups(); - for(int i=0; i 0) - { - int max = colSel.getMax(); - viewport.getAlignment().trimRight(max); - if(viewport.getSelectionGroup()!=null) - viewport.getSelectionGroup().adjustForRemoveRight(max); - - Vector groups = viewport.alignment.getGroups(); - for(int i=0; i0) - || viewport.getAlignment().getHeight()<4) - { - JOptionPane.showInternalMessageDialog(this, "Principal component analysis must take\n" - +"at least 4 input sequences.", - "Sequence selection insufficient", - JOptionPane.WARNING_MESSAGE); - return; - } - - try{ - PCAPanel pcaPanel = new PCAPanel(viewport, null); - JInternalFrame frame = new JInternalFrame(); - frame.setContentPane(pcaPanel); - Desktop.addInternalFrame(frame, "Principal component analysis", 400, 400); - }catch(java.lang.OutOfMemoryError ex) - { - JOptionPane.showInternalMessageDialog(this, "Too many sequences selected\nfor Principal Component Analysis!!", - "Out of memory", JOptionPane.WARNING_MESSAGE); - } - - - } - - public void averageDistanceTreeMenuItem_actionPerformed(ActionEvent e) - { - NewTreePanel("AV", "PID", "Average distance tree using PID"); - } - - public void neighbourTreeMenuItem_actionPerformed(ActionEvent e) - { - NewTreePanel("NJ", "PID", "Neighbour joining tree using PID"); - } - - - protected void njTreeBlosumMenuItem_actionPerformed(ActionEvent e) - { - NewTreePanel("NJ", "BL", "Neighbour joining tree using BLOSUM62"); - } - - protected void avTreeBlosumMenuItem_actionPerformed(ActionEvent e) - { - NewTreePanel("AV", "BL", "Average distance tree using BLOSUM62PID"); - } - - void NewTreePanel(String type, String pwType, String title) - { - //are the sequences aligned? - if(!viewport.alignment.isAligned()) - { - JOptionPane.showMessageDialog(Desktop.desktop, "The sequences must be aligned before creating a tree.", - "Sequences not aligned", JOptionPane.WARNING_MESSAGE); - return; - } - - final TreePanel tp; - if (viewport.getSelectionGroup() != null && - viewport.getSelectionGroup().getSize() > 3) - { - tp = new TreePanel(viewport, viewport.getSelectionGroup().sequences, type, - pwType, - 0, viewport.alignment.getWidth()); - } - else - { - tp = new TreePanel(viewport, viewport.getAlignment().getSequences(), - type, pwType, 0, viewport.alignment.getWidth()); - } - - addTreeMenuItem(tp, title); - - Desktop.addInternalFrame(tp, title, 600, 500); - } - - void addTreeMenuItem(final TreePanel treePanel, String title) - { - final JMenuItem item = new JMenuItem(title); - sortByTreeMenu.add(item); - item.addActionListener(new java.awt.event.ActionListener() - { - public void actionPerformed(ActionEvent e) - { - addHistoryItem("sort"); - AlignmentSorter.sortByTree(viewport.getAlignment(), treePanel.getTree()); - alignPanel.repaint(); - } - }); - - treePanel.addInternalFrameListener(new javax.swing.event.InternalFrameAdapter() - { - public void internalFrameClosed(javax.swing.event.InternalFrameEvent evt) - { - sortByTreeMenu.remove(item); - }; - }); - - } - - - public void clustalAlignMenuItem_actionPerformed(ActionEvent e) - { - WebserviceInfo info = new WebserviceInfo("Clustal web service", - "\"Thompson, J.D., Higgins, D.G. and Gibson, T.J. (1994) CLUSTAL W: improving the sensitivity of progressive multiple"+ - " sequence alignment through sequence weighting, position specific gap penalties and weight matrix choice." - +" Nucleic Acids Research, submitted, June 1994.", - 450, 150); - - ClustalThread thread = new ClustalThread(info); - thread.start(); - } - - class ClustalThread extends Thread - { - WebserviceInfo info; - public ClustalThread(WebserviceInfo info) - {this.info = info; } - - public void run() - { - info.setStatus(WebserviceInfo.STATE_RUNNING); - jalview.ws.Jemboss jemboss = new jalview.ws.Jemboss(); - Vector sv = viewport.getAlignment().getSequences(); - SequenceI[] seqs = new SequenceI[sv.size()]; - - int i = 0; - do - { - seqs[i] = (SequenceI) sv.elementAt(i); - } - while (++i < sv.size()); - - SequenceI[] alignment = jemboss.clustalW(seqs); // gaps removed within method - if (alignment != null) - { - AlignFrame af = new AlignFrame(new Alignment(alignment)); - Desktop.addInternalFrame(af, title.concat(" - ClustalW Alignment"), - NEW_WINDOW_WIDTH, NEW_WINDOW_HEIGHT); - af.clustalColour_actionPerformed(null); - af.clustalColour.setSelected(true); - info.setStatus(WebserviceInfo.STATE_STOPPED_OK); - } - else - { - info.setStatus(WebserviceInfo.STATE_STOPPED_ERROR); - info.appendProgressText("Problem obtaining clustal alignment"); - } - } - } - - protected void jpred_actionPerformed(ActionEvent e) -{ - - if (viewport.getSelectionGroup() != null && viewport.getSelectionGroup().getSize()>0) - { - // JBPNote UGLY! To prettify, make SequenceGroup and Alignment conform to some common interface! - SequenceGroup seqs = viewport.getSelectionGroup(); - if (seqs.getSize() == 1 || !viewport.alignment.isAligned()) - { - JPredClient ct = new JPredClient( (SequenceI)seqs.getSequenceAt(0)); - } - else - { - int sz; - SequenceI[] msa = new SequenceI[sz=seqs.getSize()]; - for (int i = 0; i < sz; i++) - { - msa[i] = (SequenceI) seqs.getSequenceAt(i); - } - - JPredClient ct = new JPredClient(msa); - } - - } - else - { - Vector seqs = viewport.getAlignment().getSequences(); - - if (seqs.size() == 1 || !viewport.alignment.isAligned()) - { - JPredClient ct = new JPredClient( (SequenceI) - seqs.elementAt(0)); - } - else - { - SequenceI[] msa = new SequenceI[seqs.size()]; - for (int i = 0; i < seqs.size(); i++) - { - msa[i] = (SequenceI) seqs.elementAt(i); - } - - JPredClient ct = new JPredClient(msa); - } - - } - } - protected void msaAlignMenuItem_actionPerformed(ActionEvent e) - { - // TODO:resolve which menu item was actually selected - // Now, check we have enough sequences - if (viewport.getSelectionGroup() != null && viewport.getSelectionGroup().getSize()>1) - { - // JBPNote UGLY! To prettify, make SequenceGroup and Alignment conform to some common interface! - SequenceGroup seqs = viewport.getSelectionGroup(); - int sz; - SequenceI[] msa = new SequenceI[sz=seqs.getSize()]; - for (int i = 0; i < sz; i++) - { - msa[i] = (SequenceI) seqs.getSequenceAt(i); - } - - MsaWSClient ct = new jalview.ws.MsaWSClient(msa); - } - else - { - Vector seqs = viewport.getAlignment().getSequences(); - - if (seqs.size() > 1) { - SequenceI[] msa = new SequenceI[seqs.size()]; - for (int i = 0; i < seqs.size(); i++) - { - msa[i] = (SequenceI) seqs.elementAt(i); - } - - MsaWSClient ct = new MsaWSClient(msa); - } - - } - } - - protected void LoadtreeMenuItem_actionPerformed(ActionEvent e) { - // Pick the tree file - JalviewFileChooser chooser = new JalviewFileChooser(jalview.bin.Cache. - getProperty("LAST_DIRECTORY")); - chooser.setFileView(new JalviewFileView()); - chooser.setDialogTitle("Select a newick-like tree file"); - chooser.setToolTipText("Load a tree file"); - int value = chooser.showOpenDialog(null); - if (value == JalviewFileChooser.APPROVE_OPTION) - { - String choice = chooser.getSelectedFile().getPath(); - jalview.bin.Cache.setProperty("LAST_DIRECTORY", choice); - try - { - jalview.io.NewickFile fin = new jalview.io.NewickFile(choice, "File"); - ShowNewickTree(fin, choice); - } - catch (Exception ex) - { - JOptionPane.showMessageDialog(Desktop.desktop, - "Problem reading tree file", - ex.getMessage(), - JOptionPane.WARNING_MESSAGE); - ex.printStackTrace(); - } - } - } - - public void ShowNewickTree(NewickFile nf, String title) - { - try{ - nf.parse(); - if (nf.getTree() != null) - { - TreePanel tp = new TreePanel(viewport, - viewport.getAlignment().getSequences(), - nf, "FromFile", title); - Desktop.addInternalFrame(tp, title, 600, 500); - addTreeMenuItem(tp, title); - viewport.setCurrentTree(tp.getTree()); - } - }catch(Exception ex){ex.printStackTrace();} - } - - -} +/******************** + * 2004 Jalview Reengineered + * Barton Group + * Dundee University + * + * AM Waterhouse + *******************/ + + + + +package jalview.gui; + +import jalview.jbgui.GAlignFrame; +import jalview.schemes.*; +import jalview.datamodel.*; +import jalview.analysis.*; +import jalview.io.*; +import jalview.ws.*; +import java.awt.*; +import java.awt.event.*; +import java.awt.print.*; +import javax.swing.*; +import javax.swing.event.*; +import java.util.*; +import java.awt.datatransfer.*; + + +public class AlignFrame extends GAlignFrame +{ + final AlignmentPanel alignPanel; + final AlignViewport viewport; + public static final int NEW_WINDOW_WIDTH = 700; + public static final int NEW_WINDOW_HEIGHT = 500; + public String currentFileFormat = "Jalview"; + + public AlignFrame(AlignmentI al) + { + viewport = new AlignViewport(al); + + alignPanel = new AlignmentPanel(this, viewport); + alignPanel.annotationPanel.adjustPanelHeight(); + alignPanel.annotationSpaceFillerHolder.setPreferredSize(alignPanel.annotationPanel.getPreferredSize()); + alignPanel.annotationScroller.setPreferredSize(alignPanel.annotationPanel.getPreferredSize()); + alignPanel.setAnnotationVisible( viewport.getShowAnnotation() ); + + getContentPane().add(alignPanel, java.awt.BorderLayout.CENTER); + + addInternalFrameListener(new InternalFrameAdapter() + { + public void internalFrameActivated(InternalFrameEvent evt) + { + javax.swing.SwingUtilities.invokeLater(new Runnable() + { + public void run() + { alignPanel.requestFocus(); } + }); + + } + }); + + } + + public void saveAlignmentMenu_actionPerformed(ActionEvent e) + { + JalviewFileChooser chooser = new JalviewFileChooser(jalview.bin.Cache.getProperty("LAST_DIRECTORY") + , new String[]{"fa, fasta, fastq", "aln", "pfam", "msf", "pir","blc","jar"}, + new String[]{"Fasta", "Clustal", "PFAM", "MSF", "PIR", "BLC", "Jalview"}, + currentFileFormat); + + chooser.setAcceptAllFileFilterUsed(false); + chooser.setFileView(new JalviewFileView()); + chooser.setDialogTitle("Save Alignment to file"); + chooser.setToolTipText("Save"); + int value = chooser.showSaveDialog(this); + if(value == JalviewFileChooser.APPROVE_OPTION) + { + currentFileFormat = chooser.getSelectedFormat(); + + if (currentFileFormat.equals("Jalview")) + { + String shortName = title.replace('/', '_'); + title = title.replace('\\', '_'); + String choice = chooser.getSelectedFile().getPath(); + Jalview2XML.SaveState(this, System.currentTimeMillis(), shortName, + choice); + // USE Jalview2XML to save this file + return; + } + + String choice = chooser.getSelectedFile().getPath(); + jalview.bin.Cache.setProperty("LAST_DIRECTORY", choice); + String output = FormatAdapter.formatSequences(currentFileFormat, viewport.getAlignment().getSequences()); + try{ + java.io.PrintWriter out = new java.io.PrintWriter( new java.io.FileWriter( choice ) ); + out.println(output); + out.close(); + } + catch(Exception ex){} + } + + } + + protected void outputText_actionPerformed(ActionEvent e) + { + CutAndPasteTransfer cap = new CutAndPasteTransfer(false); + JInternalFrame frame = new JInternalFrame(); + cap.formatForOutput(); + frame.setContentPane(cap); + Desktop.addInternalFrame(frame, "Alignment output - "+e.getActionCommand(), 600, 500); + cap.setText( FormatAdapter.formatSequences(e.getActionCommand(), viewport.getAlignment().getSequences())); + } + + protected void htmlMenuItem_actionPerformed(ActionEvent e) + { + HTMLOutput htmlOutput = new HTMLOutput(viewport); + htmlOutput = null; + } + + protected void createPNG_actionPerformed(ActionEvent e) + { + alignPanel.makePNG(); + } + + protected void epsFile_actionPerformed(ActionEvent e) + { + alignPanel.makeEPS(); + } + + + public void printMenuItem_actionPerformed(ActionEvent e) + { + //Putting in a thread avoids Swing painting problems + PrintThread thread = new PrintThread(); + thread.start(); + } + + class PrintThread extends Thread + { + public void run() + { + PrinterJob printJob = PrinterJob.getPrinterJob(); + PageFormat pf = printJob.pageDialog(printJob.defaultPage()); + printJob.setPrintable(alignPanel, pf); + if (printJob.printDialog()) + { + try + { + printJob.print(); + } + catch (Exception PrintException) + { + PrintException.printStackTrace(); + } + } + } + + } + + + + + public void closeMenuItem_actionPerformed(ActionEvent e) + { + try{ + this.setClosed(true); + }catch(Exception ex){} + } + + Stack historyList = new Stack(); + Stack redoList = new Stack(); + + void updateEditMenuBar() + { + if(historyList.size()>0) + { + undoMenuItem.setEnabled(true); + Object [] history = (Object[])historyList.get(0); + undoMenuItem.setText("Undo "+history[0]); + } + else + { + undoMenuItem.setEnabled(false); + undoMenuItem.setText("Undo"); + } + + if(redoList.size()>0) + { + redoMenuItem.setEnabled(true); + Object [] history = (Object[])redoList.get(0); + redoMenuItem.setText("Redo "+history[0]); + } + else + { + redoMenuItem.setEnabled(false); + redoMenuItem.setText("Redo"); + } + } + + public void addHistoryItem(String type) + { + // must make sure we add new sequence objects her, not refs to the existing sequences + redoList.clear(); + + SequenceI[] seq = new SequenceI[viewport.getAlignment().getHeight()]; + for(int i=0; i -1; i--) + { + SequenceI seq = viewport.alignment.getSequenceAt(i); + if (!sg.sequences.contains(seq)) + continue; + + SequenceI temp = viewport.alignment.getSequenceAt(i + 1); + if (sg.sequences.contains(temp)) + continue; + + viewport.alignment.getSequences().setElementAt(temp, i); + viewport.alignment.getSequences().setElementAt(seq, i + 1); + } + } + + alignPanel.repaint(); + } + + + + protected void copy_actionPerformed(ActionEvent e) + { + if(viewport.getSelectionGroup()==null) + return; + + SequenceGroup sg = viewport.getSelectionGroup(); + + Clipboard c = Toolkit.getDefaultToolkit().getSystemClipboard(); + StringBuffer buffer= new StringBuffer(); + + Hashtable orderedSeqs = new Hashtable(); + for(int i=0; i 0) + { + int min = colSel.getMin(); + viewport.getAlignment().trimLeft(min); + colSel.compensateForEdit(0,min); + + if(viewport.getSelectionGroup()!=null) + viewport.getSelectionGroup().adjustForRemoveLeft(min); + + Vector groups = viewport.alignment.getGroups(); + for(int i=0; i 0) + { + int max = colSel.getMax(); + viewport.getAlignment().trimRight(max); + if(viewport.getSelectionGroup()!=null) + viewport.getSelectionGroup().adjustForRemoveRight(max); + + Vector groups = viewport.alignment.getGroups(); + for(int i=0; i0) + || viewport.getAlignment().getHeight()<4) + { + JOptionPane.showInternalMessageDialog(this, "Principal component analysis must take\n" + +"at least 4 input sequences.", + "Sequence selection insufficient", + JOptionPane.WARNING_MESSAGE); + return; + } + + try{ + PCAPanel pcaPanel = new PCAPanel(viewport, null); + JInternalFrame frame = new JInternalFrame(); + frame.setContentPane(pcaPanel); + Desktop.addInternalFrame(frame, "Principal component analysis", 400, 400); + }catch(java.lang.OutOfMemoryError ex) + { + JOptionPane.showInternalMessageDialog(this, "Too many sequences selected\nfor Principal Component Analysis!!", + "Out of memory", JOptionPane.WARNING_MESSAGE); + } + + + } + + public void averageDistanceTreeMenuItem_actionPerformed(ActionEvent e) + { + NewTreePanel("AV", "PID", "Average distance tree using PID"); + } + + public void neighbourTreeMenuItem_actionPerformed(ActionEvent e) + { + NewTreePanel("NJ", "PID", "Neighbour joining tree using PID"); + } + + + protected void njTreeBlosumMenuItem_actionPerformed(ActionEvent e) + { + NewTreePanel("NJ", "BL", "Neighbour joining tree using BLOSUM62"); + } + + protected void avTreeBlosumMenuItem_actionPerformed(ActionEvent e) + { + NewTreePanel("AV", "BL", "Average distance tree using BLOSUM62PID"); + } + + void NewTreePanel(String type, String pwType, String title) + { + //are the sequences aligned? + if(!viewport.alignment.isAligned()) + { + JOptionPane.showMessageDialog(Desktop.desktop, "The sequences must be aligned before creating a tree.", + "Sequences not aligned", JOptionPane.WARNING_MESSAGE); + return; + } + + final TreePanel tp; + if (viewport.getSelectionGroup() != null && + viewport.getSelectionGroup().getSize() > 3) + { + tp = new TreePanel(viewport, viewport.getSelectionGroup().sequences, type, + pwType, + 0, viewport.alignment.getWidth()); + } + else + { + tp = new TreePanel(viewport, viewport.getAlignment().getSequences(), + type, pwType, 0, viewport.alignment.getWidth()); + } + + addTreeMenuItem(tp, title); + + Desktop.addInternalFrame(tp, title, 600, 500); + } + + public void addSortByOrderMenuItem(String title, final AlignmentOrder order) { + final JMenuItem item = new JMenuItem(title); + sortByTreeMenu.add(item); + item.addActionListener(new java.awt.event.ActionListener() + { + public void actionPerformed(ActionEvent e) + { + addHistoryItem("sort"); + AlignmentSorter.sortBy(viewport.getAlignment(), order); + alignPanel.repaint(); + } + }); + } + + void addTreeMenuItem(final TreePanel treePanel, String title) + { + final JMenuItem item = new JMenuItem(title); + sortByTreeMenu.add(item); + item.addActionListener(new java.awt.event.ActionListener() + { + public void actionPerformed(ActionEvent e) + { + addHistoryItem("sort"); + AlignmentSorter.sortByTree(viewport.getAlignment(), treePanel.getTree()); + alignPanel.repaint(); + } + }); + + treePanel.addInternalFrameListener(new javax.swing.event.InternalFrameAdapter() + { + public void internalFrameClosed(javax.swing.event.InternalFrameEvent evt) + { + sortByTreeMenu.remove(item); + }; + }); + + } + + + public void clustalAlignMenuItem_actionPerformed(ActionEvent e) + { + // TODO:resolve which menu item was actually selected + // Now, check we have enough sequences + SequenceI[] msa=null; + if (viewport.getSelectionGroup() != null && viewport.getSelectionGroup().getSize()>1) + { + // JBPNote UGLY! To prettify, make SequenceGroup and Alignment conform to some common interface! + SequenceGroup seqs = viewport.getSelectionGroup(); + int sz; + msa = new SequenceI[sz=seqs.getSize()]; + for (int i = 0; i < sz; i++) + { + msa[i] = (SequenceI) seqs.getSequenceAt(i); + } + + } + else + { + Vector seqs = viewport.getAlignment().getSequences(); + + if (seqs.size() > 1) { + msa = new SequenceI[seqs.size()]; + for (int i = 0; i < seqs.size(); i++) + { + msa[i] = (SequenceI) seqs.elementAt(i); + } + + } + + } + if (msa!=null) { + jalview.ws.MsaWSClient ct = new jalview.ws.MsaWSClient("ClustalWS", title, msa, true, true); + } + } +/* Old cLustalW + WebserviceInfo info = new WebserviceInfo("Clustal web service", + "\"Thompson, J.D., Higgins, D.G. and Gibson, T.J. (1994) CLUSTAL W: improving the sensitivity of progressive multiple"+ + " sequence alignment through sequence weighting, position specific gap penalties and weight matrix choice." + +" Nucleic Acids Research, submitted, June 1994.", + 450, 150); + + ClustalThread thread = new ClustalThread(info); + thread.start(); + } + + class ClustalThread extends Thread + { + WebserviceInfo info; + public ClustalThread(WebserviceInfo info) + {this.info = info; } + + public void run() + { + info.setStatus(WebserviceInfo.STATE_RUNNING); + jalview.ws.Jemboss jemboss = new jalview.ws.Jemboss(); + Vector sv = viewport.getAlignment().getSequences(); + SequenceI[] seqs = new SequenceI[sv.size()]; + + int i = 0; + do + { + seqs[i] = (SequenceI) sv.elementAt(i); + } + while (++i < sv.size()); + + SequenceI[] alignment = jemboss.clustalW(seqs); // gaps removed within method + if (alignment != null) + { + AlignFrame af = new AlignFrame(new Alignment(alignment)); + Desktop.addInternalFrame(af, title.concat(" - ClustalW Alignment"), + NEW_WINDOW_WIDTH, NEW_WINDOW_HEIGHT); + af.clustalColour_actionPerformed(null); + af.clustalColour.setSelected(true); + info.setStatus(WebserviceInfo.STATE_STOPPED_OK); + } + else + { + info.setStatus(WebserviceInfo.STATE_STOPPED_ERROR); + info.appendProgressText("Problem obtaining clustal alignment"); + } + } + } +*/ + + protected void jpred_actionPerformed(ActionEvent e) +{ + + if (viewport.getSelectionGroup() != null && viewport.getSelectionGroup().getSize()>0) + { + // JBPNote UGLY! To prettify, make SequenceGroup and Alignment conform to some common interface! + SequenceGroup seqs = viewport.getSelectionGroup(); + if (seqs.getSize() == 1 || !viewport.alignment.isAligned()) + { + JPredClient ct = new JPredClient( (SequenceI)seqs.getSequenceAt(0)); + } + else + { + int sz; + SequenceI[] msa = new SequenceI[sz=seqs.getSize()]; + for (int i = 0; i < sz; i++) + { + msa[i] = (SequenceI) seqs.getSequenceAt(i); + } + + JPredClient ct = new JPredClient(msa); + } + + } + else + { + Vector seqs = viewport.getAlignment().getSequences(); + + if (seqs.size() == 1 || !viewport.alignment.isAligned()) + { + JPredClient ct = new JPredClient( (SequenceI) + seqs.elementAt(0)); + } + else + { + SequenceI[] msa = new SequenceI[seqs.size()]; + for (int i = 0; i < seqs.size(); i++) + { + msa[i] = (SequenceI) seqs.elementAt(i); + } + + JPredClient ct = new JPredClient(msa); + } + + } + } + protected void msaAlignMenuItem_actionPerformed(ActionEvent e) + { + // TODO:resolve which menu item was actually selected + // Now, check we have enough sequences + SequenceI[] msa=null; + if (viewport.getSelectionGroup() != null && viewport.getSelectionGroup().getSize()>1) + { + // JBPNote UGLY! To prettify, make SequenceGroup and Alignment conform to some common interface! + SequenceGroup seqs = viewport.getSelectionGroup(); + int sz; + msa = new SequenceI[sz=seqs.getSize()]; + for (int i = 0; i < sz; i++) + { + msa[i] = (SequenceI) seqs.getSequenceAt(i); + } + + + } + else + { + Vector seqs = viewport.getAlignment().getSequences(); + + if (seqs.size() > 1) { + msa = new SequenceI[seqs.size()]; + for (int i = 0; i < seqs.size(); i++) + { + msa[i] = (SequenceI) seqs.elementAt(i); + } + + } + + } + if (msa!=null) { + MsaWSClient ct = new jalview.ws.MsaWSClient("MuscleWS",title, msa, true, true); + } + } + protected void LoadtreeMenuItem_actionPerformed(ActionEvent e) { + // Pick the tree file + JalviewFileChooser chooser = new JalviewFileChooser(jalview.bin.Cache. + getProperty("LAST_DIRECTORY")); + chooser.setFileView(new JalviewFileView()); + chooser.setDialogTitle("Select a newick-like tree file"); + chooser.setToolTipText("Load a tree file"); + int value = chooser.showOpenDialog(null); + if (value == JalviewFileChooser.APPROVE_OPTION) + { + String choice = chooser.getSelectedFile().getPath(); + jalview.bin.Cache.setProperty("LAST_DIRECTORY", choice); + try + { + jalview.io.NewickFile fin = new jalview.io.NewickFile(choice, "File"); + ShowNewickTree(fin, choice); + } + catch (Exception ex) + { + JOptionPane.showMessageDialog(Desktop.desktop, + "Problem reading tree file", + ex.getMessage(), + JOptionPane.WARNING_MESSAGE); + ex.printStackTrace(); + } + } + } + + public void ShowNewickTree(NewickFile nf, String title) + { + try{ + nf.parse(); + if (nf.getTree() != null) + { + TreePanel tp = new TreePanel(viewport, + viewport.getAlignment().getSequences(), + nf, "FromFile", title); + Desktop.addInternalFrame(tp, title, 600, 500); + addTreeMenuItem(tp, title); + viewport.setCurrentTree(tp.getTree()); + } + }catch(Exception ex){ex.printStackTrace();} + } + + +} diff --git a/src/jalview/ws/Jemboss.java b/src/jalview/ws/Jemboss.java deleted file mode 100755 index a2e97f6..0000000 --- a/src/jalview/ws/Jemboss.java +++ /dev/null @@ -1,181 +0,0 @@ -package jalview.ws; - -/** - *

Title: JalviewX

- *

Description: Jalview Re-engineered

- *

Copyright: Copyright (c) 2004

- *

Company: Dundee University

- * @author not attributable - * @version 1.0 - * Commenced 14th January 2005, Jim Procter - * Contains and depends on GPL-2 jemboss classes - * see http://www.rfcgr.mrc.ac.uk/Software/EMBOSS/Jemboss/index.html - */ - -/** - * Philosophy - * Jemboss webservices are implemented here as re-entrant synchronous SOAP - * exchanges. It is up to the user of the class whether these exchanges - * are executed in their own thread to effect background processing - * functionality. - * - * Things to do - * Standardise the exceptions (currently errors are output on stdout) - * Allow server configuration - * Throw away JembossParams and Jemboss dependence - * Generalise results to return collections of objects - alignments, trees, annotations, etc. - */ - -import java.net.*; -import java.security.*; -import java.util.*; - -import ext.jemboss.*; -import ext.jemboss.soap.*; -import jalview.datamodel.*; -import jalview.io.*; - - -public class Jemboss -{ - private static ext.jemboss.JembossParams vamsas_server; - - public Jemboss() - { - // Set up default jalview-jemboss server properties - // - vamsas_server = new JembossParams(); - vamsas_server.setCurrentMode("interactive"); - System.out.println("Jemboss Server Init\n" - + vamsas_server.serverDescription() - + "\nUser Authorisation ? " - + vamsas_server.getUseAuth() - +"\n"); - } - - /* public void updateServer(JembossParams props) - { - vamsas_server.updateJembossPropStrings ( - props.getEmbossEnvironmentArray()); - } - */ - public SequenceI[] clustalW(SequenceI[] sequences) { - // Does the same as below but keeps initial sequence order. - return (this.clustalW(sequences, true)); - } - public SequenceI[] clustalW(SequenceI[] sequences, boolean PreserveOrder) - { - - // Simplest client call - with gumph from jemboss.server.TestPrivateServer - if (vamsas_server.getPublicSoapURL().startsWith("https")) - { - //SSL settings - // System.setProperty ("javax.net.debug", "all"); - com.sun.net.ssl.internal.ssl.Provider p = - new com.sun.net.ssl.internal.ssl.Provider(); - Security.addProvider(p); - - //have to do it this way to work with JNLP - URL.setURLStreamHandlerFactory( new URLStreamHandlerFactory() - { - public URLStreamHandler createURLStreamHandler(final String protocol) - { - if(protocol != null && protocol.compareTo("https") == 0) - { - return new com.sun.net.ssl.internal.www.protocol.https.Handler(); - } - return null; - } - }); - - //location of keystore - System.setProperty("javax.net.ssl.trustStore", - "resources/client.keystore"); - - String jembossClientKeyStore = System.getProperty("user.home") + - "/.jembossClientKeystore"; - - try - { - new JembossJarUtil("resources/client.jar").writeByteFile( - "client.keystore",jembossClientKeyStore); - System.setProperty("javax.net.ssl.trustStore", - jembossClientKeyStore); - } - catch(Exception exp){} - - } - - Hashtable filesToMove = new Hashtable(); - String embossCommand = "emma -sequence jalseqs.fasta -auto"; - // Duplicate - SequenceI[] myseq = new SequenceI[sequences.length]; - for (int i=0; iTitle: MsaWServices

+ * + *

Description: Registry of MsaWSI style services

+ * + *

Copyright: Copyright (c) 2004

+ * + *

Company: Dundee University

+ * + * @author not attributable + * @version 1.0 + */ +public class MsaWServices { + public static Hashtable info; + static + { + info = new Hashtable(); + info.put("ClustalWS", + new String[] + { + "http://www.compbio.dundee.ac.uk/JalviewWS/services/ClustalWS", + "ClustalW Alignment job", + "\"Thompson, J.D., Higgins, D.G. and Gibson, T.J. (1994) CLUSTAL W: improving the sensitivity of progressive multiple" + + " sequence alignment through sequence weighting, position specific gap penalties and weight matrix choice." + + " Nucleic Acids Research, submitted, June 1994." + }); + info.put("MuscleWS", + new String[] + { + "http://www.compbio.dundee.ac.uk/JalviewWS/services/MuscleWS", + "Muscle Alignment job", + "Edgar, Robert C. (2004), MUSCLE: multiple sequence alignment " + + + "with high accuracy and high throughput, Nucleic Acids Research 32(5), 1792-97." + }); + }; +} -- 1.7.10.2