+ /**\r
+ * returns the closest SequenceI in matches to SeqIdName and returns all the matches\r
+ * to the names hash.\r
+ * @param candName SeqIdName\r
+ * @param matches Vector of SequenceI objects\r
+ * @return SequenceI closest SequenceI to SeqIdName\r
+ */\r
+ private SequenceI pickbestMatch(SeqIdName candName, Vector matches) {\r
+ SequenceI match=null;\r
+ if (candName==null || matches==null || matches.size()==0)\r
+ return null;\r
+ match=(SequenceI) matches.elementAt(0);\r
+ matches.removeElementAt(0);\r
+ names.put(new SeqIdName(match.getName()), match);\r
+ int matchlen=match.getName().length();\r
+ int namlen=candName.id.length();\r
+ while (matches.size()>0) {\r
+ // look through for a better one.\r
+ SequenceI cand=(SequenceI) matches.elementAt(0);\r
+ names.put(new SeqIdName(cand.getName()), cand);\r
+ int candlen = cand.getName().length();\r
+ // keep the one with an id 'closer' to the given seqnam string\r
+ if (Math.abs(matchlen-namlen)>Math.abs(candlen-namlen) && candlen>matchlen) {\r
+ match = cand;\r
+ matchlen = candlen;\r
+ }\r
+ }\r
+ return match;\r
+ }\r