X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fws%2Fdbsources%2FPfam.java;h=4136e62834a95b9ec8159b4970df9675affde5b6;hb=25ae256a88bf092f45a78b649a48f41e6fd5d70b;hp=4d9c93d6184928fb056033c2291277af376e89a9;hpb=6b406c397d41a0f2d84b75f13e7ab478932bf57d;p=jalview.git diff --git a/src/jalview/ws/dbsources/Pfam.java b/src/jalview/ws/dbsources/Pfam.java index 4d9c93d..4136e62 100644 --- a/src/jalview/ws/dbsources/Pfam.java +++ b/src/jalview/ws/dbsources/Pfam.java @@ -8,18 +8,28 @@ import java.util.Hashtable; import com.stevesoft.pat.Regex; import jalview.datamodel.AlignmentI; +import jalview.datamodel.DBRefEntry; +import jalview.io.AppletFormatAdapter; +import jalview.io.FastaFile; +import jalview.io.StockholmFile; import jalview.ws.seqfetcher.DbSourceProxy; import jalview.ws.seqfetcher.DbSourceProxyImpl; /** - * TODO: later PFAM is a complex datasource - it currently returns a seed alignment, but could optionally return a full alignment. * TODO: later PFAM is a complex datasource - it could return a tree in addition to an alignment - * TODO: HP: Incorporate jalview.gui.SequenceFetcher retrieval code here. + * TODO: create interface to pass alignment properties and tree back to sequence fetcher * @author JimP * */ -public class Pfam extends DbSourceProxyImpl implements DbSourceProxy +abstract public class Pfam extends DbSourceProxyImpl implements DbSourceProxy { + public Pfam() + { + super(); + // all extensions of this PFAM source base class are DOMAINDB sources + addDbSourceProperty(jalview.datamodel.DBRefSource.DOMAINDB); + } + /* (non-Javadoc) * @see jalview.ws.DbSourceProxy#getAccessionSeparator() */ @@ -40,22 +50,24 @@ public class Pfam extends DbSourceProxyImpl implements DbSourceProxy /* (non-Javadoc) * @see jalview.ws.DbSourceProxy#getDbSource() - */ public String getDbSource() { - // TODO Auto-generated method stub - return null; + ** this doesn't work - DbSource is key for the hash of DbSourceProxy instances - 1:many mapping for DbSource to proxy will be lost. + ** suggest : PFAM is an 'alignment' source - means proxy is higher level than a sequence source. + return jalview.datamodel.DBRefSource.PFAM; } + */ + /* (non-Javadoc) * @see jalview.ws.DbSourceProxy#getDbSourceProperties() - */ public Hashtable getDbSourceProperties() { - // TODO Auto-generated method stub + return null; } - + */ + /* (non-Javadoc) * @see jalview.ws.DbSourceProxy#getDbVersion() */ @@ -64,22 +76,33 @@ public class Pfam extends DbSourceProxyImpl implements DbSourceProxy // TODO Auto-generated method stub return null; } - - /* (non-Javadoc) - * @see jalview.ws.DbSourceProxy#getRawRecords() + /** + * + * @return PFAM URL stub for this DbSource */ - public StringBuffer getRawRecords() - { - // TODO Auto-generated method stub - return null; - } - + protected abstract String getPFAMURL(); /* (non-Javadoc) * @see jalview.ws.DbSourceProxy#getSequenceRecords(java.lang.String[]) */ public AlignmentI getSequenceRecords(String queries) throws Exception { - throw new Exception("PFAM Retrieval not yet implemented - see jalview.gui.SequenceFetcher for current implementation"); + // 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. + startQuery(); + AlignmentI rcds = new jalview.io.FormatAdapter().readFile(getPFAMURL()+queries.trim().toUpperCase(), jalview.io.FormatAdapter.URL,"STH"); + for (int s=0,sNum=rcds.getHeight(); s