import org.biojava.dasobert.dasregistry.Das1Source;\r
import org.biojava.dasobert.eventmodel.FeatureEvent;\r
import org.biojava.dasobert.eventmodel.FeatureListener;\r
-import org.biojava.services.das.registry.DasRegistryAxisClient;\r
-import org.biojava.services.das.registry.DasSource;\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
\r
-import jalview.bin.Cache;\r
\r
+import jalview.bin.Cache;\r
\r
\r
/**\r
public class DasSequenceFeatureFetcher implements Runnable\r
{\r
final AlignmentI dataset;\r
- final AlignmentPanel ap;\r
+ final AlignFrame af;\r
StringBuffer sbuffer = new StringBuffer();\r
\r
\r
* @param align DOCUMENT ME!\r
* @param ap DOCUMENT ME!\r
*/\r
- public DasSequenceFeatureFetcher(AlignmentI align, AlignmentPanel ap)\r
+ public DasSequenceFeatureFetcher(AlignmentI align,\r
+ AlignFrame af)\r
{\r
this.dataset = align.getDataset();\r
- this.ap = ap;\r
+ this.af = af;\r
\r
Thread thread = new Thread(this);\r
thread.start();\r
sourceUrl);\r
if (id != null && id.length() > 0)\r
{\r
- FeatureThread fetcher = new FeatureThread(id + ":" + seq.getStart() + "," +seq.getEnd()\r
- , source);\r
+ FeatureThread fetcher = new FeatureThread(id\r
+ // + ":" + seq.getStart() + "," +seq.getEnd()\r
+ , source);\r
\r
fetcher.addFeatureListener(new FeatureListener()\r
{\r
Cache.log.debug("das source " + ds.getUrl() + " returned " +\r
features.length + " features");\r
\r
-\r
if (features.length > 0)\r
{\r
for (int i = 0; i < features.length; i++)\r
{\r
-\r
- SequenceFeature f = newSequenceFeature(features[i],\r
+ SequenceFeature f = newSequenceFeature(features[i],\r
source.getNickname());\r
\r
- if (seq.sequenceFeatures != null)\r
- {\r
- for (int j = 0; (f != null) && j < seq.sequenceFeatures.length;\r
- j++)\r
- {\r
- if (seq.sequenceFeatures[j].equals(f))\r
- {\r
- f = null;\r
- }\r
- }\r
- }\r
- if (f != null)\r
- {\r
seq.addSequenceFeature(f);\r
- }\r
}\r
}\r
}\r
-\r
}\r
\r
);\r
\r
//NOTE alignPanel listener will be called after the previous\r
//anonymous listener!!!\r
- fetcher.addFeatureListener(ap);\r
+ fetcher.addFeatureListener(af);\r
\r
fetcher.start();\r
}\r
*/\r
public void run()\r
{\r
+ long startTime = System.currentTimeMillis();\r
+ af.setProgressBar("Fetching DAS Sequence Features", startTime);\r
+\r
DasSource [] sources = new jalview.gui.DasSourceBrowser().getDASSource();\r
\r
String active = jalview.bin.Cache.getDefault("DAS_ACTIVE_SOURCE", "uniprot");\r
}\r
}\r
}\r
- // DasSource test = new DasSource();\r
- // test.setUrl("http://localhost:8080/das/gffdb/");\r
- //test.setNickname("Trixkid");\r
- // selectedSources.addElement(test);\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
while (seqIndex < sequences.size())\r
{\r
Sequence sequence = (Sequence) sequences.get(seqIndex);\r
- Vector uprefs = jalview.util.DBRefUtils.selectRefs(sequence.getDBRef(), new String[] {"DBREF"});\r
+ Vector uprefs = jalview.util.DBRefUtils.selectRefs(sequence.getDBRef(),\r
+ new String[] {\r
+ jalview.datamodel.DBRefSource.PDB,\r
+ jalview.datamodel.DBRefSource.UNIPROT});\r
\r
for(int sourceIndex=0; sourceIndex<selectedSources.size(); sourceIndex++)\r
{\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, k = uprefs.size(); j < k; j++)\r
+ for (int j = 0; j < uprefs.size(); j++)\r
{\r
\r
- createFeatureFetcher(sequence,\r
- dasSource.getUrl(),\r
- ( (DBRefEntry) uprefs.get(j)).getAccessionId(),\r
- dasSource.getNickname());\r
+ // Will have to pass any mapping information to the fetcher - the start/end for the DBRefEntry may not be the same as the sequence's start/end\r
+ org.biojava.dasobert.dasregistry.DasCoordinateSystem cs[] = dasSource.getCoordinateSystem();\r
+ for (int l=0; l<cs.length; l++)\r
+ {\r
+ if (jalview.util.DBRefUtils.isDasCoordinateSystem(cs[l].getName(), (DBRefEntry)\r
+ uprefs.get(j)))\r
+ {\r
+ Cache.log.debug("Launched fetcher for coordinate system " +\r
+ cs[l].getName());\r
+\r
+\r
+ createFeatureFetcher(sequence,\r
+ dasSource.getUrl(),\r
+ ( (DBRefEntry) uprefs.get(j)).\r
+ getAccessionId(),\r
+ dasSource.getNickname());\r
+ }\r
+ }\r
}\r
}\r
else\r
{\r
ex.printStackTrace();\r
}\r
+\r
+ af.setProgressBar("DAS Feature Fetching Complete", startTime);\r
}\r
\r
\r
- public static DasSource[] getDASSources()\r
+ public static DasSource[] getDASSources()\r
{\r
- try\r
- {\r
- String registryURL = jalview.bin.Cache.getDefault("DAS_REGISTRY_URL",\r
- "http://servlet.sanger.ac.uk/dasregistry/services/das_registry");\r
+ DasSourceReaderImpl reader = new DasSourceReaderImpl();\r
\r
+ String registryURL =jalview.bin.Cache.getDefault("DAS_REGISTRY_URL",\r
+ "http://www.spice-3d.org/dasregistry/das1/sources"\r
+ );\r
\r
+ try\r
+ {\r
URL url = new URL(registryURL);\r
\r
- DasRegistryAxisClient client = new DasRegistryAxisClient(url);\r
+ DasSource[] sources = reader.readDasSource(url);\r
\r
- DasSource[] services = client.listServices();\r
+ List das1sources = new ArrayList();\r
+ for (int i = 0; i < sources.length; i++)\r
+ {\r
+ DasSource ds = sources[i];\r
+ if (ds instanceof Das2Source)\r
+ {\r
+ Das2Source d2s = (Das2Source) ds;\r
+ if (d2s.hasDas1Capabilities())\r
+ {\r
+ Das1Source d1s = DasSourceConverter.toDas1Source(d2s);\r
+ das1sources.add(d1s);\r
+ }\r
\r
- return services;\r
+ }\r
+ else if (ds instanceof Das1Source)\r
+ {\r
+ das1sources.add( (Das1Source) ds);\r
+ }\r
+ }\r
+\r
+ return (Das1Source[]) das1sources.toArray(new Das1Source[das1sources.size()]);\r
}\r
catch (Exception ex)\r
{\r
ex.printStackTrace();\r
+ return null;\r
}\r
- return null;\r
\r
}\r
-\r
}\r
\r
\r