X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fws%2Fdbsources%2FPfam.java;h=316c1aac7d3e7711ddd38598a87fc1343838d09d;hb=e2ca25dc2cebc1603445864c1bcf41bb13fc2d61;hp=4f081ee3bb1a76a0ad4fb8d5f5b6e908720330a7;hpb=409fd993c6e32e999b24082aae107a043a590f8f;p=jalview.git diff --git a/src/jalview/ws/dbsources/Pfam.java b/src/jalview/ws/dbsources/Pfam.java index 4f081ee..316c1aa 100644 --- a/src/jalview/ws/dbsources/Pfam.java +++ b/src/jalview/ws/dbsources/Pfam.java @@ -20,13 +20,14 @@ */ package jalview.ws.dbsources; -import jalview.datamodel.AlignmentI; -import jalview.datamodel.DBRefEntry; -import jalview.datamodel.DBRefSource; -import jalview.io.FormatAdapter; +import java.util.Locale; import com.stevesoft.pat.Regex; +import jalview.bin.Cache; +import jalview.datamodel.DBRefSource; +import jalview.util.Platform; + /** * TODO: later PFAM is a complex datasource - it could return a tree in addition * to an alignment TODO: create interface to pass alignment properties and tree @@ -37,12 +38,43 @@ import com.stevesoft.pat.Regex; */ abstract public class Pfam extends Xfam { + public static final String FULL = "full", RP35 = "rp35", RP15 = "rp15", + RP75 = "rp75", RP55 = "rp55", SEED = "seed", UNIPROT = "uniprot"; + + public String getPfamDownloadURL(String id, String alType) + { + String url = Cache.getDefault(PFAM_BASEURL_KEY, DEFAULT_PFAM_BASEURL); + url = url.replace("$PFAMID$", id); + url = url.replace("$ALTYPE$", alType); + return url; + } + + static final String PFAM_BASEURL_KEY = "PFAM_INTERPRO_URL_TEMPLATE"; + + protected String alignmentType; + + /** + * docs are http://www.ebi.ac.uk/interpro/api/ + */ + private static final String DEFAULT_PFAM_BASEURL = "https://www.ebi.ac.uk/interpro/api/entry/pfam/$PFAMID$/?annotation=alignment:$ALTYPE$"; + + static + { + Platform.addJ2SDirectDatabaseCall(DEFAULT_PFAM_BASEURL); + } public Pfam() { super(); } + @Override + String getURL(String queries) + { + return getPfamDownloadURL(queries.trim().toUpperCase(Locale.ROOT), + alignmentType); + } + /* * (non-Javadoc) * @@ -51,7 +83,6 @@ abstract public class Pfam extends Xfam @Override public String getAccessionSeparator() { - // TODO Auto-generated method stub return null; } @@ -63,7 +94,6 @@ abstract public class Pfam extends Xfam @Override public Regex getAccessionValidator() { - // TODO Auto-generated method stub return null; } @@ -94,48 +124,13 @@ abstract public class Pfam extends Xfam @Override public String getDbVersion() { - // TODO Auto-generated method stub return null; } - /** - * Returns base URL for selected Pfam alignment type - * - * @return PFAM URL stub for this DbSource - */ - @Override - protected abstract String getXFAMURL(); - - /* - * (non-Javadoc) - * - * @see jalview.ws.DbSourceProxy#getSequenceRecords(java.lang.String[]) - */ @Override - public AlignmentI getSequenceRecords(String queries) throws Exception + protected String getURLPrefix() { - // 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 FormatAdapter().readFile(getXFAMURL() - + queries.trim().toUpperCase(), jalview.io.FormatAdapter.URL, - "STH"); - for (int s = 0, sNum = rcds.getHeight(); s < sNum; s++) - { - rcds.getSequenceAt(s).addDBRef( -new DBRefEntry(DBRefSource.PFAM, - // getDbSource(), - getDbVersion(), queries.trim().toUpperCase())); - if (!getDbSource().equals(DBRefSource.PFAM)) - { // add the specific ref too - rcds.getSequenceAt(s).addDBRef( - new DBRefEntry(getDbSource(), getDbVersion(), queries - .trim().toUpperCase())); - } - } - stopQuery(); - return rcds; + return Cache.getDefault(PFAM_BASEURL_KEY, DEFAULT_PFAM_BASEURL); } /* @@ -158,5 +153,4 @@ new DBRefEntry(DBRefSource.PFAM, { return DBRefSource.PFAM; } - }