- }\r
-\r
- /**\r
- * fetch and add das features to a sequence using the given source URL and\r
- * compatible DbRef id. new features are mapped using the DbRef mapping to the\r
- * local coordinate system.\r
- * \r
- * @param seq\r
- * @param SourceUrl\r
- * @param dbref\r
- */\r
- protected void createFeatureFetcher(final SequenceI seq,\r
- final DasSource dasSource, final DBRefEntry dbref)\r
- {\r
-\r
- // ////////////\r
- // / fetch DAS features\r
- final Das1Source source = new Das1Source();\r
- source.setUrl(dasSource.getUrl());\r
- source.setNickname(dasSource.getNickname());\r
- if (dbref == null || dbref.getAccessionId() == null\r
- || dbref.getAccessionId().length() < 1)\r
- {\r
- responseComplete(dasSource, seq); // reduce thread count anyhow\r
- return;\r
- }\r
- debug("new Das Feature Fetcher for " + dbref.getSource() + ":"\r
- + dbref.getAccessionId() + " querying " + dasSource.getUrl());\r
- FeatureThread fetcher = new FeatureThread(dbref.getAccessionId()\r
- // + ":" + start + "," + end,\r
- , source);\r
-\r
- fetcher.addFeatureListener(new FeatureListener()\r
- {\r
- public void comeBackLater(FeatureEvent e)\r
- {\r
- responseComplete(dasSource, seq);\r
- debug("das source " + e.getSource().getNickname()\r
- + " asked us to come back in " + e.getComeBackLater()\r
- + " secs.");\r
- }\r
-\r
- public void newFeatures(FeatureEvent e)\r
- {\r
-\r
- Das1Source ds = e.getSource();\r
-\r
- Map[] features = e.getFeatures();\r
- // add features to sequence\r
- debug("das source " + ds.getUrl() + " returned " + features.length\r
- + " features");\r
-\r
- if (features.length > 0)\r
- {\r
- for (int i = 0; i < features.length; i++)\r
- {\r
- // standard DAS feature-> jalview sequence feature transformation\r
- SequenceFeature f = newSequenceFeature(features[i], source\r
- .getNickname());\r
- if (!parseSeqFeature(seq, f, features[i], source))\r
- {\r
- if (dbref.getMap() != null && f.getBegin() > 0\r
- && f.getEnd() > 0)\r
- {\r
- debug("mapping from " + f.getBegin() + " - " + f.getEnd());\r
- SequenceFeature vf[] = null;\r
-\r
- try\r
- {\r
- vf = dbref.getMap().locateFeature(f);\r
- } catch (Exception ex)\r
- {\r
- Cache.log\r
- .info("Error in 'experimental' mapping of features. Please try to reproduce and then report info to jalview-discuss@jalview.org.");\r
- Cache.log.info("Mapping feature from " + f.getBegin()\r
- + " to " + f.getEnd() + " in dbref "\r
- + dbref.getAccessionId() + " in "\r
- + dbref.getSource());\r
- Cache.log.info("using das Source " + ds.getUrl());\r
- Cache.log.info("Exception", ex);\r
- }\r
-\r
- if (vf != null)\r
- {\r
- for (int v = 0; v < vf.length; v++)\r
- {\r
- debug("mapping to " + v + ": " + vf[v].getBegin()\r
- + " - " + vf[v].getEnd());\r
- seq.addSequenceFeature(vf[v]);\r
- }\r
- }\r
- }\r
- else\r
- {\r
- seq.addSequenceFeature(f);\r
- }\r
- }\r
- }\r
- featuresAdded(seq);\r
- }\r
- else\r
- {\r
- // System.out.println("No features found for " + seq.getName()\r
- // + " from: " + e.getDasSource().getNickname());\r
- }\r
- responseComplete(dasSource, seq);\r
-\r
- }\r
- }\r
-\r
- );\r
-\r
- fetcher.start();\r
- }\r
-\r
- protected void createFeatureFetcher(final SequenceI seq,\r
- final DasSource dasSource, String id)\r
- {\r
- // ////////////\r
- // / fetch DAS features\r
- final Das1Source source = new Das1Source();\r
- source.setUrl(dasSource.getUrl());\r
- source.setNickname(dasSource.getNickname());\r
-\r
- if (id != null)\r
- {\r
- id = id.trim();\r
- }\r
- if (id != null && id.length() > 0)\r
- {\r
- debug("new Das Feature Fetcher for " + id + " querying "\r
- + dasSource.getUrl());\r
- FeatureThread fetcher = new FeatureThread(id\r
- // + ":" + start + "," + end,\r
- , source);\r
-\r
- fetcher.addFeatureListener(new FeatureListener()\r
- {\r
- public void comeBackLater(FeatureEvent e)\r
- {\r
- responseComplete(dasSource, seq);\r
- debug("das source " + e.getSource().getNickname()\r
- + " asked us to come back in " + e.getComeBackLater()\r
- + " secs.");\r
- }\r
-\r
- public void newFeatures(FeatureEvent e)\r
- {\r
-\r
- Das1Source ds = e.getSource();\r
-\r
- Map[] features = e.getFeatures();\r
- // add features to sequence\r
- debug("das source " + ds.getUrl() + " returned "\r
- + features.length + " features");\r
-\r
- if (features.length > 0)\r
- {\r
- for (int i = 0; i < features.length; i++)\r
- {\r
- // standard DAS feature-> jalview sequence feature transformation\r
- SequenceFeature f = newSequenceFeature(features[i], source\r
- .getNickname());\r
- if (!parseSeqFeature(seq, f, features[i], source))\r
- {\r
- // just add as a simple sequence feature\r
- seq.addSequenceFeature(f);\r
- }\r
- }\r
-\r
- featuresAdded(seq);\r
- }\r
- else\r
- {\r
- // System.out.println("No features found for " + seq.getName()\r
- // + " from: " + e.getDasSource().getNickname());\r
- }\r
- responseComplete(dasSource, seq);\r
-\r
- }\r
- }\r
-\r
- );\r
-\r
- fetcher.start();\r
- }\r
- else\r
- {\r
- // invalid fetch - indicate it is finished.\r
- debug("Skipping empty ID for querying " + dasSource.getUrl());\r
- responseComplete(dasSource, seq);\r
- }\r