/*\r
* Jalview - A Sequence Alignment Editor and Viewer\r
- * Copyright (C) 2006 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle\r
+ * Copyright (C) 2007 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle\r
*\r
* This program is free software; you can redistribute it and/or\r
* modify it under the terms of the GNU General Public License\r
*/\r
package jalview.io;\r
\r
-import jalview.datamodel.*;\r
-\r
-import jalview.gui.*;\r
-\r
+import java.net.*;\r
import java.util.*;\r
\r
-import java.net.URL;\r
-\r
-import org.biojava.dasobert.das.FeatureThread;\r
-import org.biojava.dasobert.eventmodel.FeatureEvent;\r
-import org.biojava.dasobert.eventmodel.FeatureListener;\r
-import org.biojava.dasobert.dasregistry.DasSource;\r
-\r
-import org.biojava.dasobert.das2.io.DasSourceReaderImpl;\r
-import org.biojava.dasobert.dasregistry.Das1Source;\r
-import org.biojava.dasobert.dasregistry.DasSource;\r
-import org.biojava.dasobert.das2.Das2Source;\r
-import org.biojava.dasobert.das2.DasSourceConverter;\r
+import javax.swing.*;\r
\r
+import org.biojava.dasobert.das.*;\r
+import org.biojava.dasobert.das2.*;\r
+import org.biojava.dasobert.das2.io.*;\r
+import org.biojava.dasobert.dasregistry.*;\r
+import org.biojava.dasobert.eventmodel.*;\r
import jalview.bin.Cache;\r
-import org.biojava.dasobert.dasregistry.DasCoordinateSystem;\r
-\r
-import javax.swing.*;\r
+import jalview.datamodel.*;\r
+import jalview.gui.*;\r
\r
/**\r
* DOCUMENT ME!\r
thread.start();\r
}\r
else\r
+ {\r
startFetching();\r
+ }\r
}\r
else\r
+ {\r
startFetching();\r
-\r
}\r
\r
+ }\r
+\r
class FetchDBRefs\r
implements Runnable\r
{\r
}\r
}\r
\r
+ /**\r
+ * Spawns a number of dasobert Fetcher threads to add features to sequences in the dataset\r
+ */\r
+ void startFetching()\r
+ {\r
+ cancelled = false;\r
+ startTime = System.currentTimeMillis();\r
+ af.setProgressBar("Fetching DAS Sequence Features", startTime);\r
+\r
+ DasSource[] sources = new jalview.gui.DasSourceBrowser().getDASSource();\r
+\r
+ if (selectedSources == null || selectedSources.size() == 0)\r
+ {\r
+ String active = jalview.bin.Cache.getDefault("DAS_ACTIVE_SOURCE",\r
+ "uniprot");\r
+ StringTokenizer st = new StringTokenizer(active, "\t");\r
+ Vector selectedSources = new Vector();\r
+ String token;\r
+ while (st.hasMoreTokens())\r
+ {\r
+ token = st.nextToken();\r
+ for (int i = 0; i < sources.length; i++)\r
+ {\r
+ if (sources[i].getNickname().equals(token))\r
+ {\r
+ selectedSources.addElement(sources[i]);\r
+ break;\r
+ }\r
+ }\r
+ }\r
+ }\r
+\r
+ if (selectedSources == null || selectedSources.size() == 0)\r
+ {\r
+ System.out.println("No DAS Sources active");\r
+ af.setProgressBar("No DAS Sources Active", startTime);\r
+ return;\r
+ }\r
+\r
+ sourcesRemaining = selectedSources.size();\r
+ //Now sending requests one at a time to each server\r
+ for (int sourceIndex = 0;\r
+ sourceIndex < selectedSources.size()\r
+ && !cancelled;\r
+ sourceIndex++)\r
+ {\r
+ DasSource dasSource = (DasSource) selectedSources.elementAt(\r
+ sourceIndex);\r
+\r
+ nextSequence(dasSource, sequences[0]);\r
+ }\r
+ }\r
+\r
+ public void cancel()\r
+ {\r
+ af.setProgressBar("DAS Feature Fetching Cancelled", startTime);\r
+ cancelled = true;\r
+ }\r
+\r
+ int sourcesRemaining = 0;\r
+ void responseComplete(DasSource dasSource, SequenceI seq)\r
+ {\r
+ if (seq != null)\r
+ {\r
+ for (int seqIndex = 0;\r
+ seqIndex < sequences.length - 1\r
+ && !cancelled; seqIndex++)\r
+ {\r
+ if (sequences[seqIndex] == seq)\r
+ {\r
+ nextSequence(dasSource, sequences[++seqIndex]);\r
+ return;\r
+ }\r
+ }\r
+ }\r
+\r
+ sourcesRemaining--;\r
+\r
+ if (sourcesRemaining == 0)\r
+ {\r
+ af.setProgressBar("DAS Feature Fetching Complete", startTime);\r
+\r
+ if (af.featureSettings != null)\r
+ {\r
+ af.featureSettings.setTableData();\r
+ }\r
+\r
+ fsettings.complete();\r
+ }\r
+\r
+ }\r
\r
- /**\r
- * Spawns a number of dasobert Fetcher threads to add features to sequences in the dataset\r
- */\r
- void startFetching()\r
- {\r
- cancelled = false;\r
- startTime = System.currentTimeMillis();\r
- af.setProgressBar("Fetching DAS Sequence Features", startTime);\r
-\r
- DasSource[] sources = new jalview.gui.DasSourceBrowser().getDASSource();\r
-\r
- if (selectedSources == null || selectedSources.size() == 0)\r
- {\r
- String active = jalview.bin.Cache.getDefault("DAS_ACTIVE_SOURCE",\r
- "uniprot");\r
- StringTokenizer st = new StringTokenizer(active, "\t");\r
- Vector selectedSources = new Vector();\r
- String token;\r
- while (st.hasMoreTokens())\r
- {\r
- token = st.nextToken();\r
- for (int i = 0; i < sources.length; i++)\r
- {\r
- if (sources[i].getNickname().equals(token))\r
- {\r
- selectedSources.addElement(sources[i]);\r
- break;\r
- }\r
- }\r
- }\r
- }\r
-\r
- if (selectedSources == null || selectedSources.size() == 0)\r
- {\r
- System.out.println("No DAS Sources active");\r
- af.setProgressBar("No DAS Sources Active", startTime);\r
- return;\r
- }\r
-\r
- sourcesRemaining = selectedSources.size();\r
- //Now sending requests one at a time to each server\r
- for (int sourceIndex = 0;\r
- sourceIndex < selectedSources.size()\r
- && !cancelled;\r
- sourceIndex++)\r
- {\r
- DasSource dasSource = (DasSource) selectedSources.elementAt(\r
- sourceIndex);\r
-\r
- nextSequence(dasSource, sequences[0]);\r
- }\r
- }\r
-\r
- public void cancel()\r
- {\r
- af.setProgressBar("DAS Feature Fetching Cancelled", startTime);\r
- cancelled = true;\r
- }\r
-\r
- int sourcesRemaining=0;\r
- void responseComplete(DasSource dasSource, SequenceI seq)\r
- {\r
- if (seq != null)\r
- {\r
- for (int seqIndex = 0;\r
- seqIndex < sequences.length-1\r
- && !cancelled; seqIndex++)\r
- {\r
- if (sequences[seqIndex] == seq)\r
- {\r
- nextSequence(dasSource, sequences[++seqIndex]);\r
- return;\r
- }\r
- }\r
- }\r
-\r
- sourcesRemaining --;\r
-\r
- if(sourcesRemaining==0)\r
- {\r
- af.setProgressBar("DAS Feature Fetching Complete", startTime);\r
-\r
- if(af.featureSettings!=null)\r
- af.featureSettings.setTableData();\r
-\r
- fsettings.complete();\r
- }\r
-\r
- }\r
-\r
- void featuresAdded(SequenceI seq)\r
- {\r
- af.getFeatureRenderer().featuresAdded();\r
-\r
- int start = af.getViewport().getStartSeq();\r
- int end = af.getViewport().getEndSeq();\r
- int index;\r
- for(index=start; index<end; index++)\r
- if(seq == af.getViewport().getAlignment().getSequenceAt(index).getDatasetSequence())\r
- {\r
- af.alignPanel.repaint();\r
- break;\r
- }\r
- }\r
+ void featuresAdded(SequenceI seq)\r
+ {\r
+ af.getFeatureRenderer().featuresAdded();\r
\r
+ int start = af.getViewport().getStartSeq();\r
+ int end = af.getViewport().getEndSeq();\r
+ int index;\r
+ for (index = start; index < end; index++)\r
+ {\r
+ if (seq ==\r
+ af.getViewport().getAlignment().getSequenceAt(index).getDatasetSequence())\r
+ {\r
+ af.alignPanel.repaint();\r
+ break;\r
+ }\r
+ }\r
+ }\r
\r
void nextSequence(DasSource dasSource, SequenceI seq)\r
{\r
- DBRefEntry[] uprefs = jalview.util.DBRefUtils.selectRefs(seq.getDBRef(),\r
- new String[]\r
- {\r
+ DBRefEntry[] uprefs = jalview.util.DBRefUtils.selectRefs(seq.getDBRef(),\r
+ new String[]\r
+ {\r
// jalview.datamodel.DBRefSource.PDB,\r
- jalview.datamodel.DBRefSource.UNIPROT\r
- });\r
+ jalview.datamodel.DBRefSource.UNIPROT\r
+ });\r
\r
- if (uprefs != null)\r
+ if (uprefs != null)\r
+ {\r
+ // we know the id for this entry, so don't note its ID in the unknownSequences list\r
+ // for (int j = 0; j < uprefs.length; j++)\r
+ {\r
+ // Will have to pass any mapping information to the fetcher\r
+ //- the start/end for the DBRefEntry may not be the same as the sequence's start/end\r
+ DasCoordinateSystem cs[] = dasSource.getCoordinateSystem();\r
+ if (cs.length > 0)\r
{\r
- // we know the id for this entry, so don't note its ID in the unknownSequences list\r
- // for (int j = 0; j < uprefs.length; j++)\r
+ // for (int l = 0; l < cs.length; l++)\r
{\r
- // Will have to pass any mapping information to the fetcher\r
- //- the start/end for the DBRefEntry may not be the same as the sequence's start/end\r
- DasCoordinateSystem cs[] = dasSource.getCoordinateSystem();\r
- if(cs.length>0)\r
+ //\r
+ if (jalview.util.DBRefUtils\r
+ .isDasCoordinateSystem(cs[0].getName(), uprefs[0]))\r
{\r
- // for (int l = 0; l < cs.length; l++)\r
- {\r
- //\r
- if (jalview.util.DBRefUtils\r
- .isDasCoordinateSystem(cs[0].getName(), uprefs[0]))\r
- {\r
- Cache.log.debug("Launched fetcher for coordinate system " +\r
- cs[0].getName());\r
-\r
- createFeatureFetcher(seq,\r
- dasSource,\r
- uprefs[0].getAccessionId());\r
- }\r
- }\r
+ Cache.log.debug("Launched fetcher for coordinate system " +\r
+ cs[0].getName());\r
+\r
+ createFeatureFetcher(seq,\r
+ dasSource,\r
+ uprefs[0].getAccessionId());\r
}\r
}\r
}\r
- else\r
- {\r
- String id = null;\r
- // try and use the name as the sequence id\r
- if (seq.getName().indexOf("|") > -1)\r
- {\r
- id = seq.getName().substring(\r
- seq.getName().lastIndexOf("|") + 1);\r
- }\r
- else\r
- {\r
- id = seq.getName();\r
- }\r
- if (id != null)\r
- {\r
- // Should try to call a general feature fetcher that\r
- // queries many sources with name to discover applicable ID references\r
- createFeatureFetcher(seq,\r
- dasSource,\r
- id);\r
- }\r
- }\r
+ }\r
+ }\r
+ else\r
+ {\r
+ String id = null;\r
+ // try and use the name as the sequence id\r
+ if (seq.getName().indexOf("|") > -1)\r
+ {\r
+ id = seq.getName().substring(\r
+ seq.getName().lastIndexOf("|") + 1);\r
+ }\r
+ else\r
+ {\r
+ id = seq.getName();\r
+ }\r
+ if (id != null)\r
+ {\r
+ // Should try to call a general feature fetcher that\r
+ // queries many sources with name to discover applicable ID references\r
+ createFeatureFetcher(seq,\r
+ dasSource,\r
+ id);\r
+ }\r
+ }\r
\r
- }\r
+ }\r
\r
/**\r
* fetch and add das features to a sequence using the given source URL and Id to create a feature request\r
}\r
else\r
{\r
- // System.out.println("No features found for " + seq.getName()\r
- // + " from: " + e.getDasSource().getNickname());\r
+ // System.out.println("No features found for " + seq.getName()\r
+ // + " from: " + e.getDasSource().getNickname());\r
}\r
responseComplete(dasSource, seq);\r
\r
*/\r
String desc = new String();\r
if (dasfeature.containsKey("NOTE"))\r
+ {\r
desc += (String) dasfeature.get("NOTE");\r
+ }\r
\r
int start = 0, end = 0;\r
float score = 0f;\r
DasSourceReaderImpl reader = new DasSourceReaderImpl();\r
\r
String registryURL = jalview.bin.Cache.getDefault("DAS_REGISTRY_URL",\r
- "http://www.dasregistry.org/registry/das1/sources/"\r
+ DasSourceBrowser.DEFAULT_REGISTRY\r
);\r
\r
try\r
}\r
\r
}\r
-\r