X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fws%2Fdbsources%2FUniprot.java;h=bc16a0f050cf002f19d27b07e0c3a0f1771a8ec6;hb=ea219b852b0e66a7b025ebfee49030033de23967;hp=789688c72424d116c3b54ab12a82df5a1a20151c;hpb=5d88ae6bbf1ea113cefcb43b7918b5baf560a76e;p=jalview.git diff --git a/src/jalview/ws/dbsources/Uniprot.java b/src/jalview/ws/dbsources/Uniprot.java index 789688c..bc16a0f 100644 --- a/src/jalview/ws/dbsources/Uniprot.java +++ b/src/jalview/ws/dbsources/Uniprot.java @@ -4,11 +4,14 @@ package jalview.ws.dbsources; import java.io.File; +import java.io.FileReader; import java.io.IOException; import java.util.Enumeration; import java.util.Hashtable; import java.util.Vector; +import org.exolab.castor.xml.Unmarshaller; + import com.stevesoft.pat.Regex; import jalview.datamodel.Alignment; @@ -19,12 +22,13 @@ import jalview.datamodel.PDBEntry; import jalview.datamodel.SequenceFeature; import jalview.datamodel.SequenceI; import jalview.datamodel.UniprotEntry; +import jalview.datamodel.UniprotFile; import jalview.io.FormatAdapter; import jalview.io.IdentifyFile; import jalview.ws.DBRefFetcher; -import jalview.ws.DbSourceProxy; -import jalview.ws.DbSourceProxyImpl; -import jalview.ws.EBIFetchClient; +import jalview.ws.ebi.EBIFetchClient; +import jalview.ws.seqfetcher.DbSourceProxy; +import jalview.ws.seqfetcher.DbSourceProxyImpl; /** * @author JimP @@ -36,7 +40,7 @@ public class Uniprot extends DbSourceProxyImpl implements DbSourceProxy super(); addDbSourceProperty(DBRefSource.SEQDB, DBRefSource.SEQDB); addDbSourceProperty(DBRefSource.PROTSEQDB); - addDbSourceProperty(DBRefSource.MULTIACC); + addDbSourceProperty(DBRefSource.MULTIACC, new Integer(50)); } /* @@ -81,6 +85,31 @@ public class Uniprot extends DbSourceProxyImpl implements DbSourceProxy private EBIFetchClient ebi = null; + public Vector getUniprotEntries(File file) + { + UniprotFile uni = new UniprotFile(); + try + { + // 1. Load the mapping information from the file + org.exolab.castor.mapping.Mapping map = new org.exolab.castor.mapping.Mapping(uni.getClass().getClassLoader()); + java.net.URL url = getClass().getResource("/uniprot_mapping.xml"); + map.loadMapping(url); + + // 2. Unmarshal the data + Unmarshaller unmar = new Unmarshaller(uni); + unmar.setIgnoreExtraElements(true); + unmar.setMapping(map); + + uni = (UniprotFile) unmar.unmarshal(new FileReader(file)); + } + catch (Exception e) + { + System.out.println("Error getUniprotEntries() " + e); + } + + return uni.getUniprotEntries(); + } + /* * (non-Javadoc) * @@ -94,9 +123,9 @@ public class Uniprot extends DbSourceProxyImpl implements DbSourceProxy Alignment al=null; ebi = new EBIFetchClient(); StringBuffer result=new StringBuffer(); - File file = ebi.fetchDataAsFile("uniprot:" + queries, "xml", null); - DBRefFetcher dbref = new DBRefFetcher(); - Vector entries = dbref.getUniprotEntries(file); + // uniprotxml parameter required since december 2007 + File file = ebi.fetchDataAsFile("uniprot:" + queries, "uniprotxml", null); + Vector entries = getUniprotEntries(file); if (entries != null) { @@ -175,13 +204,17 @@ public class Uniprot extends DbSourceProxyImpl implements DbSourceProxy onlyPdbEntries.addElement(pdb); } SequenceI sq = al.getSequenceAt(i); - sq = (sq.getDatasetSequence()==null) ? sq : sq.getDatasetSequence(); + while (sq.getDatasetSequence()!=null) + { + sq = sq.getDatasetSequence(); + } Enumeration en2 = entry.getAccession().elements(); while (en2.hasMoreElements()) { + // we always add as uniprot if we retrieved from uniprot or uniprot name sq.addDBRef( - new DBRefEntry(getDbSource(), getDbVersion(), en2.nextElement() + new DBRefEntry(DBRefSource.UNIPROT, getDbVersion(), en2.nextElement() .toString())); } sq.setPDBId(onlyPdbEntries); @@ -214,4 +247,8 @@ public class Uniprot extends DbSourceProxyImpl implements DbSourceProxy { return "P00340"; } + public String getDbName() + { + return getDbSource(); + } }