Clover icon

jalviewX

  1. Project Clover database Wed Oct 31 2018 15:13:58 GMT
  2. Package jalview.ext.ensembl

File EnsemblCdsTest.java

 

Code metrics

0
71
7
1
201
122
7
0.1
10.14
7
1

Classes

Class Line # Actions
EnsemblCdsTest 42 71 7 0
1.0100%
 

Contributing tests

This file is covered by 4 tests. .

Source view

1    /*
2    * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
3    * Copyright (C) $$Year-Rel$$ The Jalview Authors
4    *
5    * This file is part of Jalview.
6    *
7    * Jalview is free software: you can redistribute it and/or
8    * modify it under the terms of the GNU General Public License
9    * as published by the Free Software Foundation, either version 3
10    * of the License, or (at your option) any later version.
11    *
12    * Jalview is distributed in the hope that it will be useful, but
13    * WITHOUT ANY WARRANTY; without even the implied warranty
14    * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
15    * PURPOSE. See the GNU General Public License for more details.
16    *
17    * You should have received a copy of the GNU General Public License
18    * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
19    * The Jalview Authors are detailed in the 'AUTHORS' file.
20    */
21    package jalview.ext.ensembl;
22   
23    import static org.testng.AssertJUnit.assertEquals;
24    import static org.testng.AssertJUnit.assertFalse;
25    import static org.testng.AssertJUnit.assertTrue;
26   
27    import jalview.datamodel.SequenceDummy;
28    import jalview.datamodel.SequenceFeature;
29    import jalview.datamodel.SequenceI;
30    import jalview.gui.JvOptionPane;
31    import jalview.io.gff.SequenceOntologyFactory;
32    import jalview.io.gff.SequenceOntologyLite;
33    import jalview.util.MapList;
34   
35    import java.util.List;
36   
37    import org.testng.Assert;
38    import org.testng.annotations.AfterClass;
39    import org.testng.annotations.BeforeClass;
40    import org.testng.annotations.Test;
41   
 
42    public class EnsemblCdsTest
43    {
44   
 
45  1 toggle @BeforeClass(alwaysRun = true)
46    public void setUpJvOptionPane()
47    {
48  1 JvOptionPane.setInteractiveMode(false);
49  1 JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
50    }
51   
 
52  1 toggle @BeforeClass(alwaysRun = true)
53    public void setUp()
54    {
55  1 SequenceOntologyFactory.setInstance(new SequenceOntologyLite());
56    }
57   
 
58  1 toggle @AfterClass(alwaysRun = true)
59    public void tearDown()
60    {
61  1 SequenceOntologyFactory.setInstance(null);
62    }
63   
64    /**
65    * Test that the cdna part of genomic sequence is correctly identified by
66    * 'CDS' features (or subtypes) with the desired transcript as parent
67    */
 
68  1 toggle @Test(groups = "Functional")
69    public void testGetGenomicRangesFromFeatures()
70    {
71  1 EnsemblCds testee = new EnsemblCds();
72  1 SequenceI genomic = new SequenceDummy("chr7");
73  1 genomic.setStart(10000);
74  1 genomic.setEnd(50000);
75  1 String transcriptId = "ABC123";
76   
77    // CDS at (start+10000) length 501
78  1 SequenceFeature sf = new SequenceFeature("CDS", "", 20000, 20500, 0f,
79    null);
80  1 sf.setValue("Parent", "transcript:" + transcriptId);
81  1 sf.setStrand("+");
82  1 genomic.addSequenceFeature(sf);
83   
84    // CDS (sub-type) at (start + 10500) length 101
85  1 sf = new SequenceFeature("CDS_predicted", "", 10500, 10600, 0f, null);
86  1 sf.setValue("Parent", "transcript:" + transcriptId);
87  1 sf.setStrand("+");
88  1 genomic.addSequenceFeature(sf);
89   
90    // CDS belonging to a different transcript doesn't count
91  1 sf = new SequenceFeature("CDS", "", 11500, 12600, 0f, null);
92  1 sf.setValue("Parent", "transcript:anotherOne");
93  1 genomic.addSequenceFeature(sf);
94   
95    // exon feature doesn't count
96  1 sf = new SequenceFeature("exon", "", 10000, 50000, 0f, null);
97  1 genomic.addSequenceFeature(sf);
98   
99    // mRNA_region feature doesn't count (parent of CDS)
100  1 sf = new SequenceFeature("mRNA_region", "", 10000, 50000, 0f, null);
101  1 genomic.addSequenceFeature(sf);
102   
103  1 MapList ranges = testee.getGenomicRangesFromFeatures(genomic,
104    transcriptId, 23);
105  1 List<int[]> fromRanges = ranges.getFromRanges();
106  1 assertEquals(2, fromRanges.size());
107    // from ranges should be sorted by start order
108  1 assertEquals(10500, fromRanges.get(0)[0]);
109  1 assertEquals(10600, fromRanges.get(0)[1]);
110  1 assertEquals(20000, fromRanges.get(1)[0]);
111  1 assertEquals(20500, fromRanges.get(1)[1]);
112    // to range should start from given start numbering
113  1 List<int[]> toRanges = ranges.getToRanges();
114  1 assertEquals(1, toRanges.size());
115  1 assertEquals(23, toRanges.get(0)[0]);
116  1 assertEquals(624, toRanges.get(0)[1]);
117    }
118   
119    /**
120    * Test the method that retains features except for 'CDS' (or subtypes), or
121    * features with parent other than the given id
122    */
 
123  1 toggle @Test(groups = "Functional")
124    public void testRetainFeature()
125    {
126  1 String accId = "ABC123";
127  1 EnsemblCds testee = new EnsemblCds();
128   
129  1 SequenceFeature sf = new SequenceFeature("CDS", "", 20000, 20500, 0f,
130    null);
131  1 assertFalse(testee.retainFeature(sf, accId));
132   
133  1 sf = new SequenceFeature("CDS_predicted", "", 20000, 20500, 0f, null);
134  1 assertFalse(testee.retainFeature(sf, accId));
135   
136    // other feature with no parent is retained
137  1 sf = new SequenceFeature("CDS_psequence_variantredicted", "", 20000,
138    20500, 0f, null);
139  1 assertTrue(testee.retainFeature(sf, accId));
140   
141    // other feature with desired parent is retained
142  1 sf.setValue("Parent", "transcript:" + accId);
143  1 assertTrue(testee.retainFeature(sf, accId));
144   
145    // feature with wrong parent is not retained
146  1 sf.setValue("Parent", "transcript:XYZ");
147  1 assertFalse(testee.retainFeature(sf, accId));
148    }
149   
150    /**
151    * Test the method that picks out 'CDS' (or subtype) features with the
152    * accession id as parent
153    */
 
154  1 toggle @Test(groups = "Functional")
155    public void testIdentifiesSequence()
156    {
157  1 String accId = "ABC123";
158  1 EnsemblCds testee = new EnsemblCds();
159   
160    // cds with no parent not valid
161  1 SequenceFeature sf = new SequenceFeature("CDS", "", 1, 2, 0f, null);
162  1 assertFalse(testee.identifiesSequence(sf, accId));
163   
164    // cds with wrong parent not valid
165  1 sf.setValue("Parent", "transcript:XYZ");
166  1 assertFalse(testee.identifiesSequence(sf, accId));
167   
168    // cds with right parent is valid
169  1 sf.setValue("Parent", "transcript:" + accId);
170  1 assertTrue(testee.identifiesSequence(sf, accId));
171   
172    // cds sub-type with right parent is valid
173  1 sf = new SequenceFeature("CDS_predicted", "", 1, 2, 0f, null);
174  1 sf.setValue("Parent", "transcript:" + accId);
175  1 assertTrue(testee.identifiesSequence(sf, accId));
176   
177    // transcript not valid:
178  1 sf = new SequenceFeature("transcript", "", 1, 2, 0f, null);
179  1 sf.setValue("Parent", "transcript:" + accId);
180  1 assertFalse(testee.identifiesSequence(sf, accId));
181   
182    // exon not valid:
183  1 sf = new SequenceFeature("exon", "", 1, 2, 0f, null);
184  1 sf.setValue("Parent", "transcript:" + accId);
185  1 assertFalse(testee.identifiesSequence(sf, accId));
186    }
187   
 
188  1 toggle @Test(groups = "Functional")
189    public void testIsValidReference() throws Exception
190    {
191  1 EnsemblSequenceFetcher esq = new EnsemblCds();
192  1 Assert.assertTrue(esq.isValidReference("CCDS5863.1"));
193  1 Assert.assertTrue(esq.isValidReference("ENST00000288602"));
194  1 Assert.assertTrue(esq.isValidReference("ENSG00000288602"));
195  1 Assert.assertTrue(esq.isValidReference("ENSP00000288602"));
196  1 Assert.assertFalse(esq.isValidReference("ENST0000288602"));
197    // non-human species have a 3 character identifier included:
198  1 Assert.assertTrue(esq.isValidReference("ENSMUSG00000099398"));
199    }
200   
201    }