937d260378fc3967bc399750489e047f0689da59
[jalview.git] / test / jalview / datamodel / ontology / OntologyBaseTest.java
1 package jalview.datamodel.ontology;
2
3 import static org.testng.Assert.assertEquals;
4 import static org.testng.Assert.assertTrue;
5
6 import jalview.ext.so.SequenceOntology;
7 import jalview.io.gff.SequenceOntologyFactory;
8
9 import java.util.Arrays;
10 import java.util.List;
11 import java.util.Map;
12
13 import org.testng.annotations.AfterClass;
14 import org.testng.annotations.BeforeClass;
15 import org.testng.annotations.Test;
16
17 public class OntologyBaseTest
18 {
19   @BeforeClass(alwaysRun = true)
20   public void setUp()
21   {
22     SequenceOntologyFactory.setInstance(new SequenceOntology());
23   }
24
25   @AfterClass(alwaysRun = true)
26   public void tearDown()
27   {
28     SequenceOntologyFactory.setInstance(null);
29   }
30
31   @Test(groups = "Functional")
32   public void testfindSequenceOntologyGroupings()
33   {
34     /*
35      * typical gnomAD feature types, plus the top level 'sequence_variant' as in dbSNP
36      */
37     List<String> featureTypes = Arrays.asList("sequence_variant",
38             "inframe_insertion", "stop_lost", "stop_gained",
39             "5_prime_UTR_variant", "non_coding_transcript_exon_variant",
40             "synonymous_variant", "inframe_deletion", "frameshift_variant",
41             "upstream_gene_variant", "splice_region_variant",
42             "missense_variant");
43
44     /*
45      * for stop_gained:
46      * transcript_variant further adds 5_prime_UTR_variant, 
47      *     non_coding_transcript_exon_variant, synonymous_variant, splice_region_variant
48      * feature_variant further adds upstream_gene_variant
49      * sequence_variant further adds sequence_variant
50      */
51     Map<String, List<String>> map = SequenceOntologyFactory.getInstance()
52             .findSequenceOntologyGroupings("stop_gained", featureTypes);
53     assertEquals(map.size(), 10);
54
55     /*
56      * feature_truncation adds inframe_deletion
57      */
58     List<String> terms = map.get("feature_truncation");
59     assertEquals(terms.size(), 1);
60     assertTrue(terms.contains("inframe_deletion"));
61
62     /*
63      * nonsynonymous_variant adds stop_lost, missense_variant
64      */
65     terms = map.get("nonsynonymous_variant");
66     assertEquals(terms.size(), 2);
67     assertEquals(terms.toString(), "[missense_variant, stop_lost]");
68
69     /*
70      * inframe_variant further adds inframe_deletion, inframe_insertion
71      */
72     terms = map.get("inframe_variant");
73     assertEquals(terms.size(), 4);
74     assertEquals(terms.toString(),
75             "[inframe_deletion, inframe_insertion, missense_variant, stop_lost]");
76
77     /*
78      * protein_altering_variant further adds frameshift_variant
79      */
80     terms = map.get("protein_altering_variant");
81     assertEquals(terms.size(), 5);
82     assertEquals(terms.toString(),
83             "[frameshift_variant, inframe_deletion, inframe_insertion, "
84                     + "missense_variant, stop_lost]");
85
86     /*
87      * coding_sequence_variant further adds synonymous_variant
88      */
89     terms = map.get("coding_sequence_variant");
90     assertEquals(terms.size(), 6);
91     assertEquals(terms.toString(),
92             "[frameshift_variant, inframe_deletion, inframe_insertion, "
93                     + "missense_variant, stop_lost, synonymous_variant]");
94
95     /*
96      * coding_transcript_variant further adds 5_prime_UTR_variant
97      */
98     terms = map.get("coding_transcript_variant");
99     assertEquals(terms.size(), 7);
100     assertEquals(terms.toString(),
101             "[5_prime_UTR_variant, frameshift_variant, inframe_deletion, "
102                     + "inframe_insertion, missense_variant, stop_lost, synonymous_variant]");
103
104     /*
105      * exon_variant further adds non_coding_transcript_exon_variant
106      */
107     terms = map.get("exon_variant");
108     assertEquals(terms.size(), 8);
109     assertEquals(terms.toString(),
110             "[5_prime_UTR_variant, frameshift_variant, inframe_deletion, "
111                     + "inframe_insertion, missense_variant, "
112                     + "non_coding_transcript_exon_variant, stop_lost, synonymous_variant]");
113
114     /*
115      * transcript_variant further adds splice_region_variant
116      */
117     terms = map.get("transcript_variant");
118     assertEquals(terms.size(), 9);
119     assertEquals(terms.toString(),
120             "[5_prime_UTR_variant, frameshift_variant, inframe_deletion, "
121                     + "inframe_insertion, missense_variant, "
122                     + "non_coding_transcript_exon_variant, splice_region_variant, "
123                     + "stop_lost, synonymous_variant]");
124
125     /*
126      * feature_variant further adds upstream_gene_variant
127      */
128     terms = map.get("feature_variant");
129     assertEquals(terms.size(), 10);
130     assertEquals(terms.toString(),
131             "[5_prime_UTR_variant, frameshift_variant, inframe_deletion, "
132                     + "inframe_insertion, missense_variant, "
133                     + "non_coding_transcript_exon_variant, splice_region_variant, "
134                     + "stop_lost, synonymous_variant, upstream_gene_variant]");
135
136     /*
137      * sequence_variant adds itself
138      */
139     terms = map.get("sequence_variant");
140     assertEquals(terms.size(), 11);
141     assertEquals(terms.toString(),
142             "[5_prime_UTR_variant, frameshift_variant, inframe_deletion, "
143                     + "inframe_insertion, missense_variant, "
144                     + "non_coding_transcript_exon_variant, sequence_variant, splice_region_variant, "
145                     + "stop_lost, synonymous_variant, upstream_gene_variant]");
146   }
147
148 }