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