-\r
- /**\r
- * creates a jalview sequence feature from a das feature document\r
- * @param dasfeature\r
- * @return sequence feature object created using dasfeature information\r
- */\r
- SequenceFeature newSequenceFeature(Map dasfeature, String nickname)\r
- {\r
- try {\r
- /**\r
- * Different qNames for a DAS Feature - are string keys to the HashMaps in features\r
- * "METHOD") ||\r
- qName.equals("TYPE") ||\r
- qName.equals("START") ||\r
- qName.equals("END") ||\r
- qName.equals("NOTE") ||\r
- qName.equals("LINK") ||\r
- qName.equals("SCORE")\r
- */\r
- String desc = new String();\r
- if (dasfeature.containsKey("NOTE"))\r
- desc+=(String) dasfeature.get("NOTE");\r
-\r
-\r
- int start = 0, end = 0;\r
- float score = 0f;\r
-\r
- try{ start = Integer.parseInt( dasfeature.get("START").toString()); }\r
- catch( Exception ex){}\r
- try{ end = Integer.parseInt( dasfeature.get("END").toString()); }\r
- catch (Exception ex){}\r
- try{ score = Integer.parseInt( dasfeature.get("SCORE").toString()); }\r
- catch (Exception ex){}\r
-\r
-\r
- SequenceFeature f = new SequenceFeature(\r
- (String) dasfeature.get("TYPE"),\r
- desc,\r
- start,\r
- end,\r
- score,\r
- nickname);\r
-\r
- if (dasfeature.containsKey("LINK"))\r
- {\r
- f.addLink(f.getType()+" "+f.begin+"_"+f.end\r
- +"|"+ dasfeature.get("LINK"));\r
- }\r
- // (String) dasfeature.get("ID"),\r
- //// (String) dasfeature.get("METHOD"),\r
- // (String) dasfeature.get("SCORE"),\r
- // null\r
- // );\r
-\r
- return f;\r
- }\r
- catch (Exception e) {\r
- System.out.println("ERRR "+e);\r
- e.printStackTrace();\r
- System.out.println("############");\r
- Cache.log.debug("Failed to parse "+dasfeature.toString(), e);\r
- return null;\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
- * @param seq\r
- * @param SourceUrl\r
- * @param id\r
- */\r
- protected void createFeatureFetcher(final SequenceI seq,\r
- final String sourceUrl,\r
- String id,\r
- String nickname)\r
- {\r
- //////////////\r
- /// fetch DAS features\r
- final Das1Source source = new Das1Source();\r
- source.setUrl(sourceUrl);\r
- source.setNickname(nickname);\r
-\r
-\r
- Cache.log.debug("new Das Feature Fetcher for " + id + " querying " +\r
- sourceUrl);\r
-\r
- if (id != null && id.length() > 0)\r
- {\r
- setThreadsRunning(+1);\r
-\r
- // int start=seq.getStart(), end = seq.getEnd();\r
- /* if(af.getViewport().getSelectionGroup()!=null)\r
- {\r
- SequenceI tmp = af.getViewport().getAlignment().findName(seq.getName());\r
- start = tmp.findPosition(\r
- af.getViewport().getSelectionGroup().getStartRes()\r
- );\r
-\r
- end = tmp.findPosition(\r
- af.getViewport().getSelectionGroup().getEndRes()\r
- );\r
- }*/\r
-\r
- FeatureThread fetcher = new FeatureThread(id\r
- // + ":" + start + "," + end,\r
- , source);\r
-\r
-\r
- fetcher.addFeatureListener(new FeatureListener()\r
- {\r
- public void comeBackLater(FeatureEvent e)\r
- {\r
- setThreadsRunning(-1);\r
- Cache.log.debug("das source " + e.getDasSource().getNickname() +\r
- " asked us to come back in " + e.getComeBackLater() +\r
- " secs.");\r
- }\r
-\r
- public void newFeatures(FeatureEvent e)\r
- {\r
- setThreadsRunning(-1);\r
- Das1Source ds = e.getDasSource();\r
-\r
- Map[] features = e.getFeatures();\r
- // add features to sequence\r
- Cache.log.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
- SequenceFeature f = newSequenceFeature(features[i],\r
- source.getNickname());\r
-\r
- seq.addSequenceFeature(f);\r
- }\r
- }\r
- else\r
- {\r
- System.out.println("No features found for sequence " +seq.getName()\r
- +" from: "+ e.getDasSource().getNickname());\r
- }\r
-\r
- }\r
- }\r
-\r
- );\r
-\r
- //NOTE alignPanel listener will be called after the previous\r
- //anonymous listener!!!\r
- fetcher.addFeatureListener(af);\r
-\r
- fetcher.start();\r
- }\r
- }\r
-\r
- synchronized void setThreadsRunning(int i)\r
- {\r
- threadsRunning += i;\r
- if(threadsRunning<1 && allBatchesComplete)\r
- {\r
- af.setProgressBar("DAS Feature Fetching Complete", startTime);\r
-\r
- if(af.featureSettings!=null)\r
- af.featureSettings.setTableData();\r
- }\r
- }\r
-\r