4 package jalview.ws.dbsources;
\r
6 import java.util.Hashtable;
\r
8 import com.stevesoft.pat.Regex;
\r
10 import jalview.datamodel.AlignmentI;
\r
11 import jalview.datamodel.DBRefEntry;
\r
12 import jalview.io.FastaFile;
\r
13 import jalview.ws.seqfetcher.DbSourceProxy;
\r
14 import jalview.ws.seqfetcher.DbSourceProxyImpl;
\r
16 * TODO: later PFAM is a complex datasource - it currently returns a seed alignment, but could optionally return a full alignment.
\r
17 * TODO: later PFAM is a complex datasource - it could return a tree in addition to an alignment
\r
18 * TODO: HP: Incorporate jalview.gui.SequenceFetcher retrieval code here.
\r
22 public class Pfam extends DbSourceProxyImpl implements DbSourceProxy
\r
32 * @see jalview.ws.DbSourceProxy#getAccessionSeparator()
\r
34 public String getAccessionSeparator()
\r
36 // TODO Auto-generated method stub
\r
41 * @see jalview.ws.DbSourceProxy#getAccessionValidator()
\r
43 public Regex getAccessionValidator()
\r
45 // TODO Auto-generated method stub
\r
50 * @see jalview.ws.DbSourceProxy#getDbSource()
\r
52 public String getDbSource()
\r
54 return jalview.datamodel.DBRefSource.PFAM;
\r
58 * @see jalview.ws.DbSourceProxy#getDbSourceProperties()
\r
60 public Hashtable getDbSourceProperties()
\r
62 // TODO Auto-generated method stub
\r
67 * @see jalview.ws.DbSourceProxy#getDbVersion()
\r
69 public String getDbVersion()
\r
71 // TODO Auto-generated method stub
\r
74 public static String PFAMURL = "http://www.sanger.ac.uk/cgi-bin/Pfam/getalignment.pl?format=fal&acc=";
\r
76 * @see jalview.ws.DbSourceProxy#getSequenceRecords(java.lang.String[])
\r
78 public AlignmentI getSequenceRecords(String queries) throws Exception
\r
80 // TODO: this is not a perfect implementation. We need to be able to add individual references to each sequence in each family alignment that's retrieved.
\r
82 results = new StringBuffer();
\r
83 // split queries into many little ones.
\r
84 results.append(new FastaFile(
\r
85 PFAMURL+queries.trim().toUpperCase(), "URL").print());
\r
87 AlignmentI rcds = parseResult(results.toString());
\r
88 for (int s=0,sNum=rcds.getHeight(); s<sNum;s++)
\r
90 rcds.getSequenceAt(s).addDBRef(new DBRefEntry(getDbSource(), getDbVersion(), queries.trim().toUpperCase()));
\r
96 * @see jalview.ws.DbSourceProxy#isValidReference(java.lang.String)
\r
98 public boolean isValidReference(String accession)
\r
100 return accession.indexOf("PF")==0;
\r
103 public String getTestQuery()
\r
108 public String getDbName()
\r
110 return "PFAM"; // getDbSource();
\r