1 /* Copyright (c) 2011 Peter Troshin
\r
3 * JAva Bioinformatics Analysis Web Services (JABAWS) @version: 2.0
\r
5 * This library is free software; you can redistribute it and/or modify it under the terms of the
\r
6 * Apache License version 2 as published by the Apache Software Foundation
\r
8 * This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
\r
9 * even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Apache
\r
10 * License for more details.
\r
12 * A copy of the license is in apache_license.txt. It is also available here:
\r
13 * @see: http://www.apache.org/licenses/LICENSE-2.0.txt
\r
15 * Any republication or derived work distributed in source code form
\r
16 * must include this copyright and license notice.
\r
19 package compbio.ws.client;
\r
21 import java.net.URL;
\r
22 import java.util.Set;
\r
24 import javax.xml.bind.annotation.XmlAccessType;
\r
25 import javax.xml.bind.annotation.XmlAccessorType;
\r
26 import javax.xml.namespace.QName;
\r
27 import javax.xml.ws.Service;
\r
29 import compbio.data.msa.JABAService;
\r
30 import compbio.data.msa.MsaWS;
\r
31 import compbio.data.msa.SequenceAnnotation;
\r
34 * List of web services currently supported by JABAWS version 2
\r
37 public enum Services {
\r
39 * Make sure this class has NO references to runners or engines as it is a
\r
40 * part of minimal client package. Such things should go into ServicesUtil
\r
42 MafftWS, MuscleWS, ClustalWS, ClustalOWS, TcoffeeWS, ProbconsWS, AAConWS, JronnWS, DisemblWS, GlobPlotWS, IUPredWS, JpredWS, RNAalifoldWS;
\r
44 public static Services getService(String servName) {
\r
45 servName = servName.trim().toLowerCase();
\r
46 for (Services service : Services.values()) {
\r
47 if (service.toString().equalsIgnoreCase(servName)) {
\r
54 Service getService(URL url, String sqname) {
\r
55 QName qname = new QName(sqname, this.toString());
\r
56 return Service.create(url, qname);
\r
59 public static String toString(Set<Services> services) {
\r
60 if (services == null || services.isEmpty()) {
\r
64 String delim = ", ";
\r
65 for (Services serv : services) {
\r
66 value += serv.toString() + delim;
\r
68 value = value.substring(0, value.length() - delim.length());
\r
72 Class<? extends JABAService> getServiceType() {
\r
80 return SequenceAnnotation.class;
\r
91 throw new RuntimeException("Unrecognised Web Service Type " + this + " - Should never happen!");
\r
96 String getServiceNamespace() {
\r
104 return JABAService.V2_SERVICE_NAMESPACE;
\r
112 return JABAService.SERVICE_NAMESPACE;
\r
114 throw new RuntimeException("Unrecognised JABAWS Namespace for service " + this +"!");
\r
118 JABAService getInterface(Service service) {
\r
119 assert service != null;
\r
121 QName portName = new QName(service.getServiceName().getNamespaceURI(), this.toString() + "Port");
\r
122 return service.getPort(portName, this.getServiceType());
\r
125 public String getServiceInfo() {
\r
132 return CLUSTAL_OMEGA_INFO;
\r
134 return CLUSTAL_INFO;
\r
136 return DISEMBL_INFO;
\r
138 return GLOBPLOT_INFO;
\r
140 return IUPRED_INFO;
\r
146 return MUSCLE_INFO;
\r
148 return PROBCONS_INFO;
\r
150 return TCOFFEE_INFO;
\r
151 case RNAalifoldWS :
\r
152 return RNAALIFOLD_INFO;
\r
154 throw new RuntimeException("Unrecognised Web Service Type " + this + " - Should never happen!");
\r
158 public static final String AACON_INFO = new ServiceInfo(AAConWS,
\r
159 "in preparation", "1.0", "http://www.compbio.dundee.ac.uk/aacon").toString();
\r
161 public static final String JPRED_INFO = new ServiceInfo(JpredWS,
\r
162 "Cole C, Barber JD, Barton GJ.reparation" +
\r
163 "The Jpred 3 secondary structure prediction server\n" +
\r
164 "Nucl. Acids Res. (2008) 36 (suppl 2): W197-W201., doi: 10.1093/nar/gkn238",
\r
165 "3.0", "http://www.compbio.dundee.ac.uk/www-jpred").toString();
\r
167 public static final String CLUSTAL_INFO = new ServiceInfo(ClustalWS,
\r
168 "Larkin MA, Blackshields G, Brown NP, Chenna R, McGettigan PA, McWilliam H, Valentin F, " +
\r
169 "Wallace IM, Wilm A, Lopez R, Thompson JD, Gibson TJ, Higgins DG.\n" +
\r
170 "(2007). Clustal W and Clustal X version 2.0. Bioinformatics, 23, 2947-2948.",
\r
171 "2.0.12", "http://www.clustal.org/clustal2/").toString();
\r
173 public static final String CLUSTAL_OMEGA_INFO = new ServiceInfo(ClustalOWS,
\r
174 "Fast, scalable generation of high quality protein multiple sequence alignments using Clustal Omega\r\n"
\r
175 + "Fabian Sievers, Andreas Wilm, David Dineen, Toby J. Gibson, Kevin Karplus, Weizhong Li, Rodrigo Lopez, Hamish McWilliam, Michael Remmert, Johannes Söding, Julie D. Thompson, Desmond G. Higgins",
\r
176 "1.0.2", "http://www.clustal.org/omega").toString();
\r
178 public static final String DISEMBL_INFO = new ServiceInfo(DisemblWS,
\r
179 "R. Linding, L.J. Jensen, F. Diella, P. Bork, T.J. Gibson and R.B. Russell\r\n"
\r
180 + "Protein disorder prediction: implications for structural proteomics\r\n"
\r
181 + "Structure Vol 11, Issue 11, 4 November 2003", "1.5",
\r
182 "http://dis.embl.de/").toString();
\r
184 public static final String GLOBPLOT_INFO = new ServiceInfo(GlobPlotWS,
\r
185 "Rune Linding, Robert B. Russell, Victor Neduva and Toby J. Gibson " +
\r
186 "'GlobPlot: exploring protein sequences for globularity and disorder.' " +
\r
187 "Nucl. Acids Res. (2003) 31 (13): 3701-3708. doi: 10.1093/nar/gkg519\r\n",
\r
188 "2.3", "http://globplot.embl.de/").toString();
\r
190 public static final String IUPRED_INFO = new ServiceInfo(IUPredWS,
\r
191 "The Pairwise Energy Content Estimated from Amino Acid Composition Discriminates between Folded and Intrinsically Unstructured Proteins\r\n"
\r
192 + "Zsuzsanna Dosztányi, Veronika Csizmók, Péter Tompa and István Simon\r\n"
\r
193 + "J. Mol. Biol. (2005) 347, 827-839.", "1.0",
\r
194 "http://iupred.enzim.hu/").toString();
\r
196 public static final String TCOFFEE_INFO = new ServiceInfo(TcoffeeWS,
\r
197 "T-Coffee: A novel method for multiple sequence alignments "
\r
198 + "Notredame, Higgins, Heringa, JMB, 302 (205-217) 2000",
\r
199 "8.99", "http://tcoffee.crg.cat/apps/tcoffee/index.html").toString();
\r
201 public static final String MUSCLE_INFO = new ServiceInfo(
\r
203 "Edgar, R.C. (2004) MUSCLE: multiple sequence alignment with high accuracy and high throughput.Nucleic Acids Res. 32(5):1792-1797.\r\n"
\r
204 + "doi:10.1093/nar/gkh340", "3.8.31",
\r
205 "http://www.drive5.com/muscle/").toString();
\r
207 public static final String PROBCONS_INFO = new ServiceInfo(
\r
209 "Do, C.B., Mahabhashyam, M.S.P., Brudno, M., and Batzoglou, S. 2005. PROBCONS: "
\r
210 + "Probabilistic Consistency-based Multiple Sequence Alignment. Genome Research 15: 330-340. ",
\r
211 "1.12", "http://probcons.stanford.edu/").toString();
\r
213 public static final String JRONN_INFO = new ServiceInfo(
\r
215 "unpublished, original algorithm Yang,Z.R., Thomson,R., McMeil,P. and Esnouf,R.M. (2005) "
\r
216 + "RONN: the bio-basis function neural network technique applied to the "
\r
217 + "dectection of natively disordered regions in proteins Bioinformatics 21: 3369-3376\r\n",
\r
218 "1.0", "http://www.compbio.dundee.ac.uk/jabaws/").toString();
\r
220 public static final String MAFFT_INFO = new ServiceInfo(
\r
222 "Katoh, Toh 2010 (Bioinformatics 26:1899-1900)\r\n"
\r
223 + "Parallelization of the MAFFT multiple sequence alignment program. ",
\r
224 "6.8.57", "http://mafft.cbrc.jp/alignment/software/").toString();
\r
226 public static final String RNAALIFOLD_INFO = new ServiceInfo(
\r
228 "Ivo L. Hofacker, Martin Fekete, and Peter F. Stadler 'Secondary Structure Prediction"
\r
229 + " for Aligned RNA Sequences'. J.Mol.Biol. 319: 1059-1066, 2002. Stephan H. Bernhart,"
\r
230 + " Ivo L. Hofacker, Sebastian Will, Andreas R. Gruber, and Peter F. Stadler. "
\r
231 + "'RNAalifold: Improved consensus structure prediction for RNA alignments'. BMC Bioinformatics, 9:474, 2008.\r\n",
\r
232 "2.1.2", "http://www.tbi.univie.ac.at/RNA/").toString();
\r
234 @XmlAccessorType(XmlAccessType.FIELD)
\r
235 static class ServiceInfo {
\r
240 final static String jabaws_version = "2.5";
\r
241 final static String line_delimiter = "\n";
\r
243 private ServiceInfo() {
\r
244 // Default constructor for JAXB
\r
246 private ServiceInfo(Services service, String reference, String version,
\r
248 this.service = service;
\r
249 this.reference = reference;
\r
250 this.version = version;
\r
251 this.moreinfo = moreinfo;
\r
255 public String toString() {
\r
256 String value = "SERVICE: " + service + " version " + version + line_delimiter;
\r
257 value += "JABAWS v. " + jabaws_version + line_delimiter;
\r
258 value += "REFERENCES: " + reference + line_delimiter;
\r
259 value += "MORE INFORMATION: " + moreinfo + line_delimiter;
\r
264 public static void main(String[] args) {
\r
265 System.out.println(MUSCLE_INFO);
\r