2e32bd25007ab22b3e6dc431d4567927f1c5c17a
[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("((ENSP|ENST|ENSG|CCDS)[0-9.]{3,})");
17
18   /*
19    * possible values for the 'feature' parameter of the /overlap REST service
20    * @see http://rest.ensembl.org/documentation/info/overlap_id
21    */
22   protected enum EnsemblFeatureType
23   {
24     gene, transcript, cds, exon, repeat, simple, misc, variation,
25     somatic_variation, structural_variation, somatic_structural_variation,
26     constrained, regulatory
27   }
28
29   @Override
30   public String getDbSource()
31   {
32     // NB ensure Uniprot xrefs are canonicalised from "Ensembl" to "ENSEMBL"
33     return DBRefSource.ENSEMBL; // "ENSEMBL"
34   }
35
36   @Override
37   public String getDbVersion()
38   {
39     return "0";
40   }
41
42   @Override
43   public String getAccessionSeparator()
44   {
45     return " ";
46   }
47
48   /**
49    * Ensembl accession are ENST + 11 digits for human transcript, ENSG for human
50    * gene. Other species insert 3 letters e.g. ENSMUST..., ENSMUSG...
51    * 
52    * @see http://www.ensembl.org/Help/View?id=151
53    */
54   @Override
55   public Regex getAccessionValidator()
56   {
57     return ACCESSION_REGEX;
58   }
59
60   @Override
61   public boolean isValidReference(String accession)
62   {
63     return getAccessionValidator().search(accession);
64   }
65
66   @Override
67   public int getTier()
68   {
69     return 0;
70   }
71
72   /**
73    * Default test query is a transcript
74    */
75   @Override
76   public String getTestQuery()
77   {
78     // has CDS on reverse strand:
79     return "ENST00000288602";
80     // ENST00000461457 // forward strand
81   }
82
83   @Override
84   public boolean isDnaCoding()
85   {
86     return true;
87   }
88 }