();
+ for (int i = 0; i < refs.length; i++)
{
- if (comparator.matches(entry, ref[i]))
+ if (comparator.matches(entry, refs[i]))
{
- rfs.addElement(ref[i]);
+ rfs.add(refs[i]);
}
}
- // TODO Auto-generated method stub
- if (rfs.size() > 0)
- {
- DBRefEntry[] rf = new DBRefEntry[rfs.size()];
- rfs.copyInto(rf);
- return rf;
- }
- return null;
+ return rfs.size() == 0 ? null : rfs.toArray(new DBRefEntry[rfs.size()]);
}
- public interface DbRefComp
+ interface DbRefComp
{
public boolean matches(DBRefEntry refa, DBRefEntry refb);
}
@@ -301,14 +307,16 @@ public class DBRefUtils
{
if ((refa.getMap() == null && refb.getMap() == null)
|| (refa.getMap() != null && refb.getMap() != null))
+ {
if ((refb.getMap().getMap() == null && refa.getMap().getMap() == null)
|| (refb.getMap().getMap() != null
&& refa.getMap().getMap() != null && refb
- .getMap().getMap().getInverse().equals(
- refa.getMap().getMap())))
+ .getMap().getMap().getInverse()
+ .equals(refa.getMap().getMap())))
{
return true;
}
+ }
}
}
return false;
@@ -362,6 +370,8 @@ public class DBRefUtils
{
public boolean matches(DBRefEntry refa, DBRefEntry refb)
{
+ // System.err.println("Comparing A: "+refa.getSrcAccString()+(refa.hasMap()?" has map.":"."));
+ // System.err.println("Comparing B: "+refb.getSrcAccString()+(refb.hasMap()?" has map.":"."));
if (refa.getSource() != null && refb.getSource() != null
&& refb.getSource().equals(refa.getSource()))
{
@@ -380,9 +390,9 @@ public class DBRefUtils
&& (refb.getMap().getMap() == null && refa.getMap()
.getMap() == null)
|| (refb.getMap().getMap() != null
- && refa.getMap().getMap() != null && refb
- .getMap().getMap().equals(refa.getMap().getMap())))
- {
+ && refa.getMap().getMap() != null && (refb
+ .getMap().getMap().equals(refa.getMap().getMap()))))
+ { // getMap().getMap().containsEither(false,refa.getMap().getMap())
return true;
}
}
@@ -392,14 +402,17 @@ public class DBRefUtils
};
/**
- * used by file parsers to generate DBRefs from annotation within file (eg
- * stockholm)
+ * Parses a DBRefEntry and adds it to the sequence, also a PDBEntry if the
+ * database is PDB.
+ *
+ * Used by file parsers to generate DBRefs from annotation within file (eg
+ * Stockholm)
*
* @param dbname
* @param version
* @param acn
* @param seq
- * where to anotate with reference
+ * where to annotate with reference
* @return parsed version of entry that was added to seq (if any)
*/
public static DBRefEntry parseToDbRef(SequenceI seq, String dbname,
@@ -408,19 +421,25 @@ public class DBRefUtils
DBRefEntry ref = null;
if (dbname != null)
{
- String locsrc = jalview.util.DBRefUtils.getCanonicalName(dbname);
- if (locsrc.equals(jalview.datamodel.DBRefSource.PDB))
+ String locsrc = DBRefUtils.getCanonicalName(dbname);
+ if (locsrc.equals(DBRefSource.PDB))
{
- // check for chaincode and mapping
- // PFAM style stockhom PDB citation
- com.stevesoft.pat.Regex r = new com.stevesoft.pat.Regex(
- "([0-9][0-9A-Za-z]{3})\\s*(.?)\\s*;([0-9]+)-([0-9]+)");
+ /*
+ * Check for PFAM style stockhom PDB accession id citation e.g.
+ * "1WRI A; 7-80;"
+ */
+ Regex r = new com.stevesoft.pat.Regex(
+ "([0-9][0-9A-Za-z]{3})\\s*(.?)\\s*;\\s*([0-9]+)-([0-9]+)");
if (r.search(acn.trim()))
{
String pdbid = r.stringMatched(1);
String chaincode = r.stringMatched(2);
- String mapstart = r.stringMatched(3);
- String mapend = r.stringMatched(4);
+ if (chaincode == null)
+ {
+ chaincode = " ";
+ }
+ // String mapstart = r.stringMatched(3);
+ // String mapend = r.stringMatched(4);
if (chaincode.equals(" "))
{
chaincode = "_";
@@ -429,8 +448,16 @@ public class DBRefUtils
ref = new DBRefEntry(locsrc, version, pdbid + chaincode);
PDBEntry pdbr = new PDBEntry();
pdbr.setId(pdbid);
+ pdbr.setType(PDBEntry.Type.PDB);
+ pdbr.setProperty(new Hashtable());
+ pdbr.setChainCode(chaincode);
+ // pdbr.getProperty().put("CHAIN", chaincode);
seq.addPDBId(pdbr);
}
+ else
+ {
+ System.err.println("Malformed PDB DR line:" + acn);
+ }
}
else
{