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