X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fws%2Fdbsources%2FPfam.java;h=2075a0bd30502af112f62b66f1816007533925a3;hb=1facaef788a7570369f6f0e4fee6c8bce78335ea;hp=4077c51d885d29f3dc540b5be55caf81dbcb9739;hpb=0eda2ac2f334f55f6e5f137789453a9f4dfe4d73;p=jalview.git diff --git a/src/jalview/ws/dbsources/Pfam.java b/src/jalview/ws/dbsources/Pfam.java index 4077c51..2075a0b 100644 --- a/src/jalview/ws/dbsources/Pfam.java +++ b/src/jalview/ws/dbsources/Pfam.java @@ -1,5 +1,20 @@ -/** +/* + * Jalview - A Sequence Alignment Editor and Viewer (Version 2.4) + * Copyright (C) 2008 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA */ package jalview.ws.dbsources; @@ -8,18 +23,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 +65,24 @@ public class Pfam extends DbSourceProxyImpl implements DbSourceProxy /* (non-Javadoc) * @see jalview.ws.DbSourceProxy#getDbSource() - */ public String getDbSource() { - // TODO Auto-generated method stub + ** 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 +91,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