+ /**
+ * 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
+ * @return parsed version of entry that was added to seq (if any)
+ */
+ public static DBRefEntry parseToDbRef(SequenceI seq, String dbname, String version,
+ String acn)
+ {
+ DBRefEntry ref = null;
+ if (dbname!=null)
+ {
+ String locsrc = jalview.util.DBRefUtils
+ .getCanonicalName(dbname);
+ if (locsrc.equals(jalview.datamodel.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]+)");
+ 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.equals(" "))
+ {
+ chaincode = "_";
+ }
+ // construct pdb ref.
+ ref = new DBRefEntry(locsrc, version, pdbid+chaincode);
+ PDBEntry pdbr = new PDBEntry();
+ pdbr.setId(pdbid);
+ seq.addPDBId(pdbr);
+ }
+ } else {
+ // default:
+ ref = new DBRefEntry(locsrc, version, acn);
+ }
+ }
+ if (ref!=null)
+ {
+ seq.addDBRef(ref);
+ }
+ return ref;
+ }