JAL-1705 various refactoring towards Uniprot-to-Ensembl fetching
[jalview.git] / src / jalview / ext / ensembl / EnsemblProtein.java
index 8f23984..29c7eda 100644 (file)
@@ -12,7 +12,7 @@ public class EnsemblProtein extends EnsemblSeqProxy
 {
   // TODO modify to accept other species e.g. ENSMUSPnnn
   private static final Regex ACCESSION_REGEX = new Regex(
-          "((ENSP|CCDS)[0-9.]{3,})");
+          "(ENSP|CCDS)[0-9.]{3,}$");
 
   private static final List<String> CROSSREFS = Arrays.asList(new String[] {
       "PDB", "Uniprot/SPTREMBL", "Uniprot/SWISSPROT" });
@@ -87,4 +87,28 @@ public class EnsemblProtein extends EnsemblSeqProxy
     return ACCESSION_REGEX;
   }
 
+  /**
+   * Returns an accession id for a query, including conversion of ENST* to
+   * ENSP*. This supports querying for the protein sequence for a transcript
+   * (ENST identifier) and returning the ENSP identifier.
+   */
+  @Override
+  public String getAccessionIdFromQuery(String query)
+  {
+    String accId = super.getAccessionIdFromQuery(query);
+
+    /*
+     * ensure last character before (11) digits is P
+     * ENST00000288602 -> ENSP00000288602
+     * ENSMUST00000288602 -> ENSMUSP00000288602
+     */
+    if (accId != null && accId.length() >= 12)
+    {
+      char[] chars = accId.toCharArray();
+      chars[chars.length - 12] = 'P';
+      accId = new String(chars);
+    }
+    return accId;
+  }
+
 }