git://source.jalview.org
/
jalview.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
c1cfb99
)
fixed leafMapping bug for Id's like SequenceX (where X=14 matches all X=1,10,11,12...
author
jprocter
<Jim Procter>
Fri, 12 Aug 2005 14:26:15 +0000
(14:26 +0000)
committer
jprocter
<Jim Procter>
Fri, 12 Aug 2005 14:26:15 +0000
(14:26 +0000)
Fixes Mantis 0009227
src/jalview/analysis/SequenceIdMatcher.java
patch
|
blob
|
history
diff --git
a/src/jalview/analysis/SequenceIdMatcher.java
b/src/jalview/analysis/SequenceIdMatcher.java
index
1efe498
..
b88a03f
100755
(executable)
--- a/
src/jalview/analysis/SequenceIdMatcher.java
+++ b/
src/jalview/analysis/SequenceIdMatcher.java
@@
-26,7
+26,8
@@
import jalview.datamodel.*;
* <p>Title: </p>
\r
* SequenceIdMatcher
\r
* <p>Description: </p>
\r
* <p>Title: </p>
\r
* SequenceIdMatcher
\r
* <p>Description: </p>
\r
- * Routine which does approximate Sequence Id resolution by name using string containment rather than equivalence
\r
+ * Routine which does approximate Sequence Id resolution by name using
\r
+ * string containment (on word boundaries) rather than equivalence
\r
* <p>Copyright: Copyright (c) 2004</p>
\r
*
\r
* <p>Company: Dundee University</p>
\r
* <p>Copyright: Copyright (c) 2004</p>
\r
*
\r
* <p>Company: Dundee University</p>
\r
@@
-41,7
+42,6
@@
public class SequenceIdMatcher
public SequenceIdMatcher(SequenceI[] seqs)
\r
{
\r
names = new Hashtable();
\r
public SequenceIdMatcher(SequenceI[] seqs)
\r
{
\r
names = new Hashtable();
\r
-
\r
for (int i = 0; i < seqs.length; i++)
\r
{
\r
names.put(new SeqIdName(seqs[i].getName()), seqs[i]);
\r
for (int i = 0; i < seqs.length; i++)
\r
{
\r
names.put(new SeqIdName(seqs[i].getName()), seqs[i]);
\r
@@
-83,13
+83,13
@@
public class SequenceIdMatcher
*/
\r
SequenceI[] findIdMatch(SequenceI[] seqs)
\r
{
\r
*/
\r
SequenceI[] findIdMatch(SequenceI[] seqs)
\r
{
\r
- SequenceI[] namedseqs = new SequenceI[seqs.length];
\r
-
\r
+ SequenceI[] namedseqs = null;
\r
int i = 0;
\r
SeqIdName nam;
\r
\r
if (seqs.length > 0)
\r
{
\r
int i = 0;
\r
SeqIdName nam;
\r
\r
if (seqs.length > 0)
\r
{
\r
+ namedseqs = new SequenceI[seqs.length];
\r
do
\r
{
\r
nam = new SeqIdName(seqs[i].getName());
\r
do
\r
{
\r
nam = new SeqIdName(seqs[i].getName());
\r
@@
-103,7
+103,7
@@
public class SequenceIdMatcher
namedseqs[i] = null;
\r
}
\r
}
\r
namedseqs[i] = null;
\r
}
\r
}
\r
- while (i++ < seqs.length);
\r
+ while (++i < seqs.length);
\r
}
\r
\r
return namedseqs;
\r
}
\r
\r
return namedseqs;
\r
@@
-140,24
+140,34
@@
public class SequenceIdMatcher
return false;
\r
}
\r
\r
return false;
\r
}
\r
\r
+ /**
\r
+ * matches if one ID properly contains another at a whitespace boundary.
\r
+ * TODO: (JBPNote) These are not efficient. should use char[] for speed
\r
+ * @param s SeqIdName
\r
+ * @return boolean
\r
+ */
\r
public boolean equals(SeqIdName s)
\r
{
\r
public boolean equals(SeqIdName s)
\r
{
\r
- if (id.startsWith(s.id) || s.id.startsWith(id))
\r
- {
\r
- return true;
\r
- }
\r
-
\r
- return false;
\r
+ if (id.length()>s.id.length()) {
\r
+ return id.startsWith(s.id) ?
\r
+ (id.equals(s.id) ? true : id.startsWith(s.id+" "))
\r
+ : false;
\r
+ } else
\r
+ return s.id.startsWith(id) ?
\r
+ (s.id.equals(id) ? true : s.id.startsWith(id+" "))
\r
+ : false;
\r
}
\r
\r
public boolean equals(String s)
\r
{
\r
}
\r
\r
public boolean equals(String s)
\r
{
\r
- if (id.startsWith(s) || s.startsWith(id))
\r
- {
\r
- return true;
\r
- }
\r
-
\r
- return false;
\r
+ if (id.length()>s.length()) {
\r
+ return id.startsWith(s) ?
\r
+ (id.equals(s) ? true : id.startsWith(s+" "))
\r
+ : false;
\r
+ } else
\r
+ return s.startsWith(id) ?
\r
+ (s.equals(id) ? true : s.startsWith(id+" "))
\r
+ : false;
\r
}
\r
}
\r
}
\r
}
\r
}
\r
}
\r