1 package jalview.ws.dbsources;
3 import static org.testng.AssertJUnit.assertEquals;
4 import static org.testng.AssertJUnit.assertNull;
6 import jalview.datamodel.PDBEntry;
7 import jalview.datamodel.SequenceFeature;
8 import jalview.datamodel.UniprotEntry;
10 import java.io.Reader;
11 import java.io.StringReader;
12 import java.util.Vector;
14 import org.testng.annotations.Test;
16 public class UniprotTest
18 // adapted from http://www.uniprot.org/uniprot/A9CKP4.xml
19 private static final String UNIPROT_XML = "<?xml version='1.0' encoding='UTF-8'?>"
21 + "<entry dataset=\"TrEMBL\" created=\"2008-01-15\" modified=\"2015-03-04\" version=\"38\">"
22 + "<accession>A9CKP4</accession>"
23 + "<accession>A9CKP5</accession>"
24 + "<name>A9CKP4_AGRT5</name>"
25 + "<name>A9CKP4_AGRT6</name>"
26 + "<protein><recommendedName><fullName>Mitogen-activated protein kinase 13</fullName><fullName>Henry</fullName></recommendedName></protein>"
27 + "<dbReference type=\"PDB\" id=\"2FSQ\"><property type=\"method\" value=\"X-ray\"/><property type=\"resolution\" value=\"1.40\"/></dbReference>"
28 + "<dbReference type=\"PDBsum\" id=\"2FSR\"/>"
29 + "<feature type=\"signal peptide\" evidence=\"7\"><location><begin position=\"1\"/><end position=\"18\"/></location></feature>"
30 + "<feature type=\"propeptide\" description=\"Activation peptide\" id=\"PRO_0000027399\" evidence=\"9 16 17 18\"><location><begin position=\"19\"/><end position=\"20\"/></location></feature>"
31 + "<feature type=\"chain\" description=\"Granzyme B\" id=\"PRO_0000027400\"><location><begin position=\"21\"/><end position=\"247\"/></location></feature>"
32 + "<sequence length=\"10\" mass=\"27410\" checksum=\"8CB760AACF88FE6C\" modified=\"2008-01-15\" version=\"1\">MHAPL VSKDL</sequence></entry>"
36 * Test the method that unmarshals XML to a Uniprot model
38 @Test(groups ={ "Functional" })
39 public void testGetUniprotEntries()
41 Uniprot u = new Uniprot();
42 Reader reader = new StringReader(UNIPROT_XML);
43 Vector<UniprotEntry> entries = u.getUniprotEntries(reader);
44 assertEquals(1, entries.size());
45 UniprotEntry entry = entries.get(0);
46 assertEquals(2, entry.getName().size());
47 assertEquals("A9CKP4_AGRT5", entry.getName().get(0));
48 assertEquals("A9CKP4_AGRT6", entry.getName().get(1));
49 assertEquals(2, entry.getAccession().size());
50 assertEquals("A9CKP4", entry.getAccession().get(0));
51 assertEquals("A9CKP5", entry.getAccession().get(1));
54 * UniprotSequence drops any space characters
56 assertEquals("MHAPLVSKDL", entry.getUniprotSequence()
59 assertEquals(2, entry.getProtein().getName().size());
60 assertEquals("Mitogen-activated protein kinase 13", entry.getProtein()
62 assertEquals("Henry", entry.getProtein().getName().get(1));
65 * Check sequence features
67 Vector<SequenceFeature> features = entry.getFeature();
68 assertEquals(3, features.size());
69 SequenceFeature sf = features.get(0);
70 assertEquals("signal peptide", sf.getType());
71 assertNull(sf.getDescription());
72 assertNull(sf.getStatus());
73 assertEquals(1, sf.getPosition()); // wrong - Castor bug??
74 assertEquals(1, sf.getBegin());
75 assertEquals(18, sf.getEnd());
77 assertEquals("propeptide", sf.getType());
78 assertEquals("Activation peptide", sf.getDescription());
79 assertEquals(19, sf.getPosition()); // wrong - Castor bug??
80 assertEquals(19, sf.getBegin());
81 assertEquals(20, sf.getEnd());
83 assertEquals("chain", sf.getType());
84 assertEquals("Granzyme B", sf.getDescription());
85 assertEquals(21, sf.getPosition()); // wrong - Castor bug??
86 assertEquals(21, sf.getBegin());
87 assertEquals(247, sf.getEnd());
90 * Check cross-references
92 Vector<PDBEntry> xrefs = entry.getDbReference();
93 assertEquals(2, xrefs.size());
95 PDBEntry xref = xrefs.get(0);
96 assertEquals("2FSQ", xref.getId());
97 assertEquals("PDB", xref.getType());
98 assertEquals(2, xref.getProperty().size());
99 assertEquals("X-ray", xref.getProperty().get("method"));
100 assertEquals("1.40", xref.getProperty().get("resolution"));
103 assertEquals("2FSR", xref.getId());
104 assertEquals("PDBsum", xref.getType());
105 assertNull(xref.getProperty());
109 * Test the method that formats the sequence name in Fasta style
111 @Test(groups ={ "Functional" })
112 public void testConstructSequenceFastaHeader()
114 Uniprot u = new Uniprot();
115 Reader reader = new StringReader(UNIPROT_XML);
116 Vector<UniprotEntry> entries = u.getUniprotEntries(reader);
117 UniprotEntry entry = entries.get(0);
119 // source + accession ids + names + protein names
120 String expectedName = ">UniProt/Swiss-Prot|A9CKP4|A9CKP5|A9CKP4_AGRT5|A9CKP4_AGRT6 Mitogen-activated protein kinase 13 Henry";
121 assertEquals(expectedName, Uniprot.constructSequenceFastaHeader(entry)