67c5e6350970eac576d19fa8adf28b66935ef373
[jalview.git] / src / jalview / ext / ensembl / EnsemblSequenceFetcher.java
1 package jalview.ext.ensembl;
2
3 import jalview.datamodel.DBRefSource;
4 import jalview.ws.seqfetcher.DbSourceProxyImpl;
5
6 import com.stevesoft.pat.Regex;
7
8 /**
9  * A base class for Ensembl sequence fetchers
10  * 
11  * @author gmcarstairs
12  */
13 abstract class EnsemblSequenceFetcher extends DbSourceProxyImpl
14 {
15   // TODO modify to accept other species e.g. ENSMUSTnnn
16   private static final Regex ACCESSION_REGEX = new Regex(
17           "(ENSP|ENST|ENSG|CCDS)[0-9.]{3,}$");
18
19   /*
20    * possible values for the 'feature' parameter of the /overlap REST service
21    * @see http://rest.ensembl.org/documentation/info/overlap_id
22    */
23   protected enum EnsemblFeatureType
24   {
25     gene, transcript, cds, exon, repeat, simple, misc, variation,
26     somatic_variation, structural_variation, somatic_structural_variation,
27     constrained, regulatory
28   }
29
30   @Override
31   public String getDbSource()
32   {
33     // NB ensure Uniprot xrefs are canonicalised from "Ensembl" to "ENSEMBL"
34     return DBRefSource.ENSEMBL; // "ENSEMBL"
35   }
36
37   @Override
38   public String getDbVersion()
39   {
40     return "0";
41   }
42
43   @Override
44   public String getAccessionSeparator()
45   {
46     return " ";
47   }
48
49   /**
50    * Ensembl accession are ENST + 11 digits for human transcript, ENSG for human
51    * gene. Other species insert 3 letters e.g. ENSMUST..., ENSMUSG...
52    * 
53    * @see http://www.ensembl.org/Help/View?id=151
54    */
55   @Override
56   public Regex getAccessionValidator()
57   {
58     return ACCESSION_REGEX;
59   }
60
61   @Override
62   public boolean isValidReference(String accession)
63   {
64     return getAccessionValidator().search(accession);
65   }
66
67   @Override
68   public int getTier()
69   {
70     return 0;
71   }
72
73   /**
74    * Default test query is a transcript
75    */
76   @Override
77   public String getTestQuery()
78   {
79     // has CDS on reverse strand:
80     return "ENST00000288602";
81     // ENST00000461457 // forward strand
82   }
83
84   @Override
85   public boolean isDnaCoding()
86   {
87     return true;
88   }
89 }