1 package jalview.ext.ensembl;
3 import jalview.datamodel.DBRefSource;
4 import jalview.ws.seqfetcher.DbSourceProxyImpl;
6 import com.stevesoft.pat.Regex;
9 * A base class for Ensembl sequence fetchers
13 abstract class EnsemblSequenceFetcher extends DbSourceProxyImpl
16 * accepts ENSG/T/E/P with 11 digits
17 * or ENSMUSP or similar for other species
18 * or CCDSnnnnn.nn with at least 3 digits
20 private static final Regex ACCESSION_REGEX = new Regex(
21 "(ENS([A-Z]{3}|)[GTEP]{1}[0-9]{11}$)" + "|" + "(CCDS[0-9.]{3,}$)");
23 protected static final String ENSEMBL_GENOMES_REST = "http://rest.ensemblgenomes.org";
25 protected static final String ENSEMBL_REST = "http://rest.ensembl.org";
28 * possible values for the 'feature' parameter of the /overlap REST service
29 * @see http://rest.ensembl.org/documentation/info/overlap_id
31 protected enum EnsemblFeatureType
33 gene, transcript, cds, exon, repeat, simple, misc, variation,
34 somatic_variation, structural_variation, somatic_structural_variation,
35 constrained, regulatory
38 private String domain = ENSEMBL_REST;
41 public String getDbSource()
43 // NB ensure Uniprot xrefs are canonicalised from "Ensembl" to "ENSEMBL"
44 if (ENSEMBL_GENOMES_REST.equals(getDomain()))
46 return DBRefSource.ENSEMBLGENOMES;
48 return DBRefSource.ENSEMBL;
52 public String getAccessionSeparator()
58 * Ensembl accession are ENST + 11 digits for human transcript, ENSG for human
59 * gene. Other species insert 3 letters e.g. ENSMUST..., ENSMUSG...
61 * @see http://www.ensembl.org/Help/View?id=151
64 public Regex getAccessionValidator()
66 return ACCESSION_REGEX;
70 public boolean isValidReference(String accession)
72 return getAccessionValidator().search(accession);
82 * Default test query is a transcript
85 public String getTestQuery()
87 // has CDS on reverse strand:
88 return "ENST00000288602";
89 // ENST00000461457 // forward strand
93 public boolean isDnaCoding()
99 * Returns the domain name to query e.g. http://rest.ensembl.org or
100 * http://rest.ensemblgenomes.org
104 protected String getDomain()
109 protected void setDomain(String d)