JAL-1705 EnsemblGene added, and related refactoring
[jalview.git] / src / jalview / ext / ensembl / EnsemblGenome.java
1 package jalview.ext.ensembl;
2
3 import jalview.datamodel.SequenceFeature;
4 import jalview.io.gff.SequenceOntology;
5
6 public class EnsemblGenome extends EnsemblSeqProxy
7 {
8   /*
9    * fetch transcript features on genomic sequence (to identify the transcript 
10    * regions) and cds, exon and variation features (to retain)
11    */
12   private static final EnsemblFeatureType[] FEATURES_TO_FETCH = {
13       EnsemblFeatureType.transcript, EnsemblFeatureType.exon,
14       EnsemblFeatureType.cds, EnsemblFeatureType.variation };
15
16   public EnsemblGenome()
17   {
18     super();
19   }
20
21   @Override
22   public String getDbName()
23   {
24     return "ENSEMBL (Genome)";
25   }
26
27   @Override
28   protected EnsemblSeqType getSourceEnsemblType()
29   {
30     return EnsemblSeqType.GENOMIC;
31   }
32
33   @Override
34   protected EnsemblFeatureType[] getFeaturesToFetch()
35   {
36     return FEATURES_TO_FETCH;
37   }
38
39   /**
40    * Answers true unless the feature type is 'transcript' (or a sub-type of
41    * transcript in the Sequence Ontology). Transcript features are only
42    * retrieved in order to identify the transcript sequence range, and are
43    * redundant information on the transcript sequence itself.
44    */
45   @Override
46   protected boolean retainFeature(SequenceFeature sf, String accessionId)
47   {
48     if (SequenceOntology.getInstance().isA(sf.getType(),
49             SequenceOntology.TRANSCRIPT))
50     {
51       return false;
52     }
53     return super.retainFeature(sf, accessionId);
54   }
55
56   /**
57    * Answers true if the sequence feature type is 'transcript' (or a subtype of
58    * transcript in the Sequence Ontology), and the ID of the feature is the
59    * transcript we are retrieving
60    */
61   @Override
62   protected boolean identifiesSequence(SequenceFeature sf, String accId)
63   {
64     if (SequenceOntology.getInstance().isA(sf.getType(),
65             SequenceOntology.TRANSCRIPT))
66     {
67       String id = (String) sf.getValue(ID);
68       if (("transcript:" + accId).equals(id))
69       {
70         return true;
71       }
72     }
73     return false;
74   }
75
76 }