'Add Rfam database sequence retrieval' merged; JAL-580
authorjanengelhardt <engelhardt87@googlemail.com>
Mon, 23 May 2011 17:09:37 +0000 (19:09 +0200)
committerjanengelhardt <engelhardt87@googlemail.com>
Mon, 25 Jul 2011 12:58:32 +0000 (14:58 +0200)
Change-Id: Ic7de2f4904af47bb04c91ffef4be6c66ff134607

src/jalview/ws/dbsources/Pfam.java
src/jalview/ws/dbsources/Rfam.java [new file with mode: 0644]
src/jalview/ws/dbsources/RfamFull.java [new file with mode: 0644]
src/jalview/ws/dbsources/RfamSeed.java [new file with mode: 0644]
src/jalview/ws/dbsources/Xfam.java [new file with mode: 0644]

index 1ae72fb..1afccd6 100644 (file)
@@ -120,7 +120,7 @@ protected abstract String getXFAMURL();
     // individual references to each sequence in each family alignment that's\r
     // retrieved.\r
     startQuery();\r
-    AlignmentI rcds = new jalview.io.FormatAdapter().readFile(getPFAMURL()\r
+    AlignmentI rcds = new jalview.io.FormatAdapter().readFile(getXFAMURL()\r
             + queries.trim().toUpperCase(), jalview.io.FormatAdapter.URL,\r
             "STH");\r
     for (int s = 0, sNum = rcds.getHeight(); s < sNum; s++)\r
diff --git a/src/jalview/ws/dbsources/Rfam.java b/src/jalview/ws/dbsources/Rfam.java
new file mode 100644 (file)
index 0000000..d720f4b
--- /dev/null
@@ -0,0 +1,111 @@
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer (Version 2.5)
+ * Copyright (C) 2010 J Procter, AM Waterhouse, G Barton, M Clamp, S Searle
+ * 
+ * This file is part of Jalview.
+ * 
+ * Jalview 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 3 of the License, or (at your option) any later version.
+ * 
+ * Jalview 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 Jalview.  If not, see <http://www.gnu.org/licenses/>.
+ */
+package jalview.ws.dbsources;
+
+import com.stevesoft.pat.Regex;
+
+import jalview.ws.seqfetcher.DbSourceProxy;
+
+/**
+ * Contains methods for fetching sequences from Rfam database
+ * 
+ * @author Lauren Michelle Lui
+ */
+abstract public class Rfam extends Xfam implements DbSourceProxy
+{
+
+  public Rfam()
+  {
+    super();
+    // all extensions of this RFAM source base class are DOMAINDB sources
+    addDbSourceProperty(jalview.datamodel.DBRefSource.DOMAINDB);
+  }
+
+  /*
+   * (non-Javadoc)
+   * 
+   * @see jalview.ws.DbSourceProxy#getAccessionSeparator() Left here for
+   * consistency with Pfam class
+   */
+  public String getAccessionSeparator()
+  {
+    // TODO Auto-generated method stub
+    return null;
+  }
+
+  /*
+   * (non-Javadoc)
+   * 
+   * @see jalview.ws.DbSourceProxy#getAccessionValidator() * Left here for
+   */
+  public Regex getAccessionValidator()
+  {
+    // TODO Auto-generated method stub
+    return null;
+  }
+
+  /*
+   * (non-Javadoc)
+   * 
+   * Left here for consistency with Pfam class
+   * 
+   * @see jalview.ws.DbSourceProxy#getDbSource() public String getDbSource() { *
+   * this doesn't work - DbSource is key for the hash of DbSourceProxy instances
+   * - 1:many mapping for DbSource to proxy will be lost. * suggest : RFAM is an
+   * 'alignment' source - means proxy is higher level than a sequence source.
+   * return jalview.datamodel.DBRefSource.RFAM; }
+   */
+
+  /*
+   * (non-Javadoc)
+   * 
+   * @see jalview.ws.DbSourceProxy#getDbVersion()
+   */
+  @Override
+  public String getDbVersion()
+  {
+    // TODO Auto-generated method stub
+    return null;
+  }
+
+  /**Returns base URL for selected Rfam alignment type
+   * 
+   * @return RFAM URL stub for this DbSource
+   */
+  @Override
+  protected abstract String getXFAMURL();
+
+  /*
+   * (non-Javadoc)
+   * 
+   * @see jalview.ws.DbSourceProxy#isValidReference(java.lang.String)
+   */
+  public boolean isValidReference(String accession)
+  {
+    return accession.indexOf("RF") == 0;
+  }
+
+  /* (non-Javadoc)
+   * @see jalview.ws.dbsources.Xfam#getXfamSource()
+   */
+  public String getXfamSource()
+  {
+    return jalview.datamodel.DBRefSource.RFAM;
+  }
+
+}
diff --git a/src/jalview/ws/dbsources/RfamFull.java b/src/jalview/ws/dbsources/RfamFull.java
new file mode 100644 (file)
index 0000000..f8b1952
--- /dev/null
@@ -0,0 +1,74 @@
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer (Version 2.5)
+ * Copyright (C) 2010 J Procter, AM Waterhouse, G Barton, M Clamp, S Searle
+ * 
+ * This file is part of Jalview.
+ * 
+ * Jalview 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 3 of the License, or (at your option) any later version.
+ * 
+ * Jalview 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 Jalview.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+package jalview.ws.dbsources;
+
+import jalview.ws.seqfetcher.DbSourceProxy;
+
+/**
+ * Flyweight class specifying retrieval of Full family alignments from RFAM
+ * 
+ * @author Lauren Michelle Lui
+ * 
+ */
+public class RfamFull extends Rfam implements DbSourceProxy
+{
+  public RfamFull()
+  {
+    super();
+  }
+
+  /*
+   * (non-Javadoc)
+   * 
+   * @see jalview.ws.dbsources.Rfam#getXFAMURL()
+   */
+  protected String getXFAMURL()
+  {
+    return "http://rfam.sanger.ac.uk/family/alignment/download/format?alnType=full&nseLabels=0&format=stockholm&acc=";
+  }
+
+  /*
+   * (non-Javadoc)
+   * 
+   * @see jalview.ws.seqfetcher.DbSourceProxy#getDbName()
+   */
+  public String getDbName()
+  {
+    return "RFAM (Full)";
+  }
+
+  public String getDbSource()
+  {
+    return getDbName(); // so we have unique DbSource string.
+  }
+
+  public String getTestQuery()
+  {
+    // Can be retrieved from http://rfam.janelia.org/cgi-bin/getdesc?acc=RF00014
+    // or
+    // http://rfam.sanger.ac.uk/family/alignment/download/format?alnType=full&nseLabels=0&format=stockholm&acc=RF00014
+    return "RF00014";
+  }
+
+  public String getDbVersion()
+  {
+    return null;
+  }
+
+}
diff --git a/src/jalview/ws/dbsources/RfamSeed.java b/src/jalview/ws/dbsources/RfamSeed.java
new file mode 100644 (file)
index 0000000..7c6a82d
--- /dev/null
@@ -0,0 +1,72 @@
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer (Version 2.5)
+ * Copyright (C) 2010 J Procter, AM Waterhouse, G Barton, M Clamp, S Searle
+ * 
+ * This file is part of Jalview.
+ * 
+ * Jalview 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 3 of the License, or (at your option) any later version.
+ * 
+ * Jalview 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 Jalview.  If not, see <http://www.gnu.org/licenses/>.
+ */
+package jalview.ws.dbsources;
+
+import jalview.ws.seqfetcher.DbSourceProxy;
+
+/**
+ * Flyweight class specifying retrieval of Seed family alignments from RFAM
+ * 
+ * @author Lauren Michelle Lui
+ * 
+ */
+public class RfamSeed extends Rfam implements DbSourceProxy
+{
+  public RfamSeed()
+  {
+    super();
+  }
+
+  /*
+   * (non-Javadoc)
+   * 
+   * @see jalview.ws.dbsources.Rfam#getRFAMURL()
+   */
+  protected String getXFAMURL()
+  {
+    return "http://rfam.sanger.ac.uk/family/alignment/download/format?alnType=seed&nseLabels=0&format=stockholm&acc=";
+    // Janelia Farms url
+    // "http://rfam.janelia.org/cgi-bin/getalignment?type=seed&fmt=stockholm&acc=";
+  }
+
+  /*
+   * (non-Javadoc)
+   * 
+   * @see jalview.ws.seqfetcher.DbSourceProxy#getDbName()
+   */
+  public String getDbName()
+  {
+    return "RFAM (Seed)";
+  }
+
+  public String getDbSource()
+  {
+    return getDbName(); // so we have unique DbSource string.
+  }
+
+  public String getTestQuery()
+  {
+    return "RF00014";
+  } // http://rfam.janelia.org/cgi-bin/getdesc?acc=RF00014
+
+  public String getDbVersion()
+  {
+    return null;
+  }
+
+}
diff --git a/src/jalview/ws/dbsources/Xfam.java b/src/jalview/ws/dbsources/Xfam.java
new file mode 100644 (file)
index 0000000..b092a25
--- /dev/null
@@ -0,0 +1,69 @@
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer (Version 2.5)
+ * Copyright (C) 2010 J Procter, AM Waterhouse, G Barton, M Clamp, S Searle
+ * 
+ * This file is part of Jalview.
+ * 
+ * Jalview 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 3 of the License, or (at your option) any later version.
+ * 
+ * Jalview 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 Jalview.  If not, see <http://www.gnu.org/licenses/>.
+ */
+package jalview.ws.dbsources;
+
+import jalview.datamodel.AlignmentI;
+import jalview.datamodel.DBRefEntry;
+import jalview.ws.seqfetcher.DbSourceProxyImpl;
+
+/**
+ * Acts as a superclass for the Rfam and Pfam classes
+ * 
+ * @author Lauren Michelle Lui
+ * 
+ */
+public abstract class Xfam extends DbSourceProxyImpl
+{
+
+  public Xfam()
+  {
+    super();
+  }
+
+  protected abstract String getXFAMURL();
+
+  public abstract String getDbVersion();
+
+  abstract String getXfamSource();
+
+  public AlignmentI getSequenceRecords(String queries) throws Exception
+  {
+    // 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(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(getXfamSource(),
+      // getDbSource(),
+              getDbVersion(), queries.trim().toUpperCase()));
+      if (!getDbSource().equals(getXfamSource()))
+      { // add the specific ref too
+        rcds.getSequenceAt(s).addDBRef(
+                new DBRefEntry(getDbSource(), getDbVersion(), queries
+                        .trim().toUpperCase()));
+      }
+    }
+    stopQuery();
+    return rcds;
+  }
+
+}
\ No newline at end of file