JAL-1705 add exon name to features and render on peptide (to show
[jalview.git] / src / jalview / ext / ensembl / EnsemblCdna.java
1 package jalview.ext.ensembl;
2
3 import jalview.datamodel.SequenceFeature;
4 import jalview.io.gff.SequenceOntology;
5
6 import com.stevesoft.pat.Regex;
7
8 public class EnsemblCdna extends EnsemblSeqProxy
9 {
10   /*
11    * fetch exon features on genomic sequence (to identify the cdnaregions)
12    * and cds and variation features (to retain)
13    */
14   private static final EnsemblFeatureType[] FEATURES_TO_FETCH = {
15       EnsemblFeatureType.exon, EnsemblFeatureType.cds,
16       EnsemblFeatureType.variation };
17
18   public EnsemblCdna()
19   {
20     super();
21   }
22
23   @Override
24   public String getDbName()
25   {
26     return "ENSEMBL (CDNA)";
27   }
28
29   @Override
30   protected EnsemblSeqType getSourceEnsemblType()
31   {
32     return EnsemblSeqType.CDNA;
33   }
34
35   @Override
36   public Regex getAccessionValidator()
37   {
38     return new Regex("((ENST|ENSG|CCDS)[0-9.]{3,})");
39   }
40
41   @Override
42   protected EnsemblFeatureType[] getFeaturesToFetch()
43   {
44     return FEATURES_TO_FETCH;
45   }
46
47   /**
48    * Answers true unless the feature type is 'transcript' (or a sub-type in the
49    * Sequence Ontology).
50    */
51   @Override
52   protected boolean retainFeature(SequenceFeature sf, String accessionId)
53   {
54     if (isTranscript(sf.getType()))
55     {
56       return false;
57     }
58     return featureMayBelong(sf, accessionId);
59   }
60
61   /**
62    * Answers true if the sequence feature type is 'exon' (or a subtype of exon
63    * in the Sequence Ontology), and the Parent of the feature is the transcript
64    * we are retrieving
65    */
66   @Override
67   protected boolean identifiesSequence(SequenceFeature sf, String accId)
68   {
69     if (SequenceOntology.getInstance().isA(sf.getType(),
70             SequenceOntology.EXON))
71     {
72       String parentFeature = (String) sf.getValue(PARENT);
73       if (("transcript:" + accId).equals(parentFeature))
74       {
75         return true;
76       }
77     }
78     return false;
79   }
80
81 }