1 package jalview.datamodel.xdb.embl;
3 import static org.testng.AssertJUnit.assertEquals;
4 import static org.testng.AssertJUnit.assertSame;
6 import jalview.datamodel.DBRefEntry;
7 import jalview.datamodel.Sequence;
8 import jalview.datamodel.SequenceI;
10 import java.util.ArrayList;
11 import java.util.Arrays;
12 import java.util.List;
14 import org.testng.annotations.Test;
16 public class EmblEntryTest
18 @Test(groups = "Functional")
19 public void testGetCdsRanges()
21 EmblEntry testee = new EmblEntry();
24 * Make a (CDS) Feature with 4 locations
26 EmblFeature cds = new EmblFeature();
27 cds.setLocation("join(10..20,complement(30..40),50..60,70..80,complement(110..120))");
29 int[] exons = testee.getCdsRanges(cds);
30 assertEquals("[10, 20, 40, 30, 50, 60, 70, 80, 120, 110]",
31 Arrays.toString(exons));
34 @Test(groups = "Functional")
35 public void testParseCodingFeature()
37 // not the whole sequence but enough for this test...
38 SequenceI dna = new Sequence("J03321", "GGATCCGTAAGTTAGACGAAATT");
39 List<SequenceI> peptides = new ArrayList<SequenceI>();
40 EmblFile ef = EmblTestHelper.getEmblFile();
43 * parse two CDS features, one with two Uniprot cross-refs,
46 EmblEntry testee = new EmblEntry();
47 for (EmblFeature feature : ef.getEntries().get(0).getFeatures())
49 if ("CDS".equals(feature.getName()))
51 testee.parseCodingFeature(feature, "EMBL", dna, peptides);
56 * peptides should now have five entries:
57 * EMBL product and two Uniprot accessions for the first CDS / translation
58 * EMBL product and one Uniprot accession for the second CDS / translation
60 assertEquals(5, peptides.size());
61 assertEquals("CAA30420.1", peptides.get(0).getName());
62 assertEquals("MLCF", peptides.get(0).getSequenceAsString());
63 assertEquals("UNIPROT|B0BCM4", peptides.get(1).getName());
64 assertEquals("MLCF", peptides.get(1).getSequenceAsString());
65 assertEquals("UNIPROT|P0CE20", peptides.get(2).getName());
66 assertEquals("MLCF", peptides.get(2).getSequenceAsString());
67 assertEquals("CAA30421.1", peptides.get(3).getName());
68 assertEquals("MSSS", peptides.get(3).getSequenceAsString());
69 assertEquals("UNIPROT|B0BCM3", peptides.get(4).getName());
70 assertEquals("MSSS", peptides.get(4).getSequenceAsString());
73 * verify dna sequence has dbrefs with mappings to the peptide 'products'
75 DBRefEntry[] dbrefs = dna.getDBRefs();
76 assertEquals(3, dbrefs.length);
77 DBRefEntry dbRefEntry = dbrefs[0];
78 assertEquals("UNIPROT", dbRefEntry.getSource());
79 assertEquals("B0BCM4", dbRefEntry.getAccessionId());
80 assertSame(peptides.get(1), dbRefEntry.getMap().getTo());
81 List<int[]> fromRanges = dbRefEntry.getMap().getMap().getFromRanges();
82 assertEquals(1, fromRanges.size());
83 assertEquals(57, fromRanges.get(0)[0]);
84 assertEquals(46, fromRanges.get(0)[1]);
85 List<int[]> toRanges = dbRefEntry.getMap().getMap().getToRanges();
86 assertEquals(1, toRanges.size());
87 assertEquals(1, toRanges.get(0)[0]);
88 assertEquals(4, toRanges.get(0)[1]);
90 dbRefEntry = dbrefs[1];
91 assertEquals("UNIPROT", dbRefEntry.getSource());
92 assertEquals("P0CE20", dbRefEntry.getAccessionId());
93 assertSame(peptides.get(2), dbRefEntry.getMap().getTo());
94 fromRanges = dbRefEntry.getMap().getMap().getFromRanges();
95 assertEquals(1, fromRanges.size());
96 assertEquals(57, fromRanges.get(0)[0]);
97 assertEquals(46, fromRanges.get(0)[1]);
98 toRanges = dbRefEntry.getMap().getMap().getToRanges();
99 assertEquals(1, toRanges.size());
100 assertEquals(1, toRanges.get(0)[0]);
101 assertEquals(4, toRanges.get(0)[1]);
103 dbRefEntry = dbrefs[2];
104 assertEquals("UNIPROT", dbRefEntry.getSource());
105 assertEquals("B0BCM3", dbRefEntry.getAccessionId());
106 assertSame(peptides.get(4), dbRefEntry.getMap().getTo());
107 fromRanges = dbRefEntry.getMap().getMap().getFromRanges();
108 assertEquals(1, fromRanges.size());
109 assertEquals(4, fromRanges.get(0)[0]);
110 assertEquals(15, fromRanges.get(0)[1]);
111 toRanges = dbRefEntry.getMap().getMap().getToRanges();
112 assertEquals(1, toRanges.size());
113 assertEquals(1, toRanges.get(0)[0]);
114 assertEquals(4, toRanges.get(0)[1]);