4 package jalview.ws.dbsources;
\r
7 import java.io.IOException;
\r
8 import java.util.Enumeration;
\r
9 import java.util.Hashtable;
\r
10 import java.util.Vector;
\r
12 import com.stevesoft.pat.Regex;
\r
14 import jalview.datamodel.Alignment;
\r
15 import jalview.datamodel.AlignmentI;
\r
16 import jalview.datamodel.DBRefEntry;
\r
17 import jalview.datamodel.DBRefSource;
\r
18 import jalview.datamodel.PDBEntry;
\r
19 import jalview.datamodel.SequenceFeature;
\r
20 import jalview.datamodel.SequenceI;
\r
21 import jalview.datamodel.UniprotEntry;
\r
22 import jalview.io.FormatAdapter;
\r
23 import jalview.io.IdentifyFile;
\r
24 import jalview.ws.DBRefFetcher;
\r
25 import jalview.ws.DbSourceProxy;
\r
26 import jalview.ws.DbSourceProxyImpl;
\r
27 import jalview.ws.EBIFetchClient;
\r
33 public class Uniprot extends DbSourceProxyImpl implements DbSourceProxy
\r
37 addDbSourceProperty(DBRefSource.SEQDB, DBRefSource.SEQDB);
\r
38 addDbSourceProperty(DBRefSource.PROTSEQDB);
\r
39 addDbSourceProperty(DBRefSource.MULTIACC);
\r
45 * @see jalview.ws.DbSourceProxy#getAccessionSeparator()
\r
47 public String getAccessionSeparator()
\r
55 * @see jalview.ws.DbSourceProxy#getAccessionValidator()
\r
57 public Regex getAccessionValidator()
\r
65 * @see jalview.ws.DbSourceProxy#getDbSource()
\r
67 public String getDbSource()
\r
69 return DBRefSource.UNIPROT;
\r
75 * @see jalview.ws.DbSourceProxy#getDbVersion()
\r
77 public String getDbVersion()
\r
79 return "0"; // we really don't know what version we're on.
\r
82 private EBIFetchClient ebi = null;
\r
87 * @see jalview.ws.DbSourceProxy#getSequenceRecords(java.lang.String[])
\r
89 public AlignmentI getSequenceRecords(String queries) throws Exception
\r
95 ebi = new EBIFetchClient();
\r
96 StringBuffer result=new StringBuffer();
\r
97 File file = ebi.fetchDataAsFile("uniprot:" + queries, "xml", null);
\r
98 DBRefFetcher dbref = new DBRefFetcher();
\r
99 Vector entries = dbref.getUniprotEntries(file);
\r
101 if (entries != null)
\r
103 // First, make the new sequences
\r
104 Enumeration en = entries.elements();
\r
105 while (en.hasMoreElements())
\r
107 UniprotEntry entry = (UniprotEntry) en.nextElement();
\r
109 StringBuffer name = new StringBuffer(">UniProt/Swiss-Prot");
\r
110 Enumeration en2 = entry.getAccession().elements();
\r
111 while (en2.hasMoreElements())
\r
114 name.append(en2.nextElement());
\r
116 en2 = entry.getName().elements();
\r
117 while (en2.hasMoreElements())
\r
120 name.append(en2.nextElement());
\r
123 if (entry.getProtein() != null)
\r
125 name.append(" " + entry.getProtein().getName().elementAt(0));
\r
128 result.append(name + "\n"
\r
129 + entry.getUniprotSequence().getContent() + "\n");
\r
133 // Then read in the features and apply them to the dataset
\r
134 al = parseResult(result.toString());
\r
137 // Decorate the alignment with database entries.
\r
138 addUniprotXrefs(al, entries);
\r
145 } catch (Exception e)
\r
153 * add an ordered set of UniprotEntry objects to an ordered set of seuqences.
\r
156 * a sequence of n sequences
\r
158 * a seuqence of n uniprot entries to be analysed.
\r
160 public void addUniprotXrefs(Alignment al, Vector entries)
\r
162 for (int i = 0; i < entries.size(); i++)
\r
164 UniprotEntry entry = (UniprotEntry) entries.elementAt(i);
\r
165 Enumeration e = entry.getDbReference().elements();
\r
166 Vector onlyPdbEntries = new Vector();
\r
167 while (e.hasMoreElements())
\r
169 PDBEntry pdb = (PDBEntry) e.nextElement();
\r
170 if (!pdb.getType().equals("PDB"))
\r
175 onlyPdbEntries.addElement(pdb);
\r
177 SequenceI sq = al.getSequenceAt(i);
\r
178 while (sq.getDatasetSequence()!=null)
\r
180 sq = sq.getDatasetSequence();
\r
183 Enumeration en2 = entry.getAccession().elements();
\r
184 while (en2.hasMoreElements())
\r
187 new DBRefEntry(getDbSource(), getDbVersion(), en2.nextElement()
\r
190 sq.setPDBId(onlyPdbEntries);
\r
191 if (entry.getFeature() != null)
\r
193 e = entry.getFeature().elements();
\r
194 while (e.hasMoreElements())
\r
196 SequenceFeature sf = (SequenceFeature) e.nextElement();
\r
197 sf.setFeatureGroup("Uniprot");
\r
198 sq.addSequenceFeature(sf);
\r
207 * @see jalview.ws.DbSourceProxy#isValidReference(java.lang.String)
\r
209 public boolean isValidReference(String accession)
\r
214 * return LDHA_CHICK uniprot entry
\r
216 public String getTestQuery()
\r