package jalview.ws.dbsources;
import static org.testng.AssertJUnit.assertEquals;
-import static org.testng.AssertJUnit.assertFalse;
import static org.testng.AssertJUnit.assertNotNull;
import static org.testng.AssertJUnit.assertNull;
+import static org.testng.AssertJUnit.assertTrue;
-import jalview.datamodel.PDBEntry;
import jalview.datamodel.SequenceI;
-import jalview.datamodel.xdb.uniprot.UniprotEntry;
-import jalview.datamodel.xdb.uniprot.UniprotFeature;
import jalview.gui.JvOptionPane;
-
-import java.io.Reader;
-import java.io.StringReader;
-import java.util.Vector;
+import jalview.xml.binding.uniprot.DbReferenceType;
+import jalview.xml.binding.uniprot.Entry;
+import jalview.xml.binding.uniprot.FeatureType;
+import jalview.xml.binding.uniprot.LocationType;
+import jalview.xml.binding.uniprot.PositionType;
+
+import java.io.ByteArrayInputStream;
+import java.io.InputStream;
+import java.io.UnsupportedEncodingException;
+import java.math.BigInteger;
+import java.util.List;
import org.testng.Assert;
import org.testng.annotations.BeforeClass;
// adapted from http://www.uniprot.org/uniprot/A9CKP4.xml
private static final String UNIPROT_XML = "<?xml version='1.0' encoding='UTF-8'?>"
- + "<uniprot>"
+ + "<uniprot xmlns=\"http://uniprot.org/uniprot\">"
+ "<entry dataset=\"TrEMBL\" created=\"2008-01-15\" modified=\"2015-03-04\" version=\"38\">"
+ "<accession>A9CKP4</accession>"
+ "<accession>A9CKP5</accession>"
+ "<name>A9CKP4_AGRT5</name>"
+ "<name>A9CKP4_AGRT6</name>"
- + "<protein><recommendedName><fullName>Mitogen-activated protein kinase 13</fullName><fullName>Henry</fullName></recommendedName></protein>"
+ + "<protein><recommendedName><fullName>Mitogen-activated protein kinase 13</fullName></recommendedName></protein>"
+ "<dbReference type=\"PDB\" id=\"2FSQ\"><property type=\"method\" value=\"X-ray\"/><property type=\"resolution\" value=\"1.40\"/></dbReference>"
+ "<dbReference type=\"PDBsum\" id=\"2FSR\"/>"
+ "<dbReference type=\"EMBL\" id=\"AE007869\"><property type=\"protein sequence ID\" value=\"AAK85932.1\"/><property type=\"molecule type\" value=\"Genomic_DNA\"/></dbReference>"
/**
* Test the method that unmarshals XML to a Uniprot model
+ *
+ * @throws UnsupportedEncodingException
*/
@Test(groups = { "Functional" })
- public void testGetUniprotEntries()
+ public void testGetUniprotEntries() throws UnsupportedEncodingException
{
Uniprot u = new Uniprot();
- Reader reader = new StringReader(UNIPROT_XML);
- Vector<UniprotEntry> entries = u.getUniprotEntries(reader);
+ InputStream is = new ByteArrayInputStream(UNIPROT_XML.getBytes());
+ List<Entry> entries = u.getUniprotEntries(is);
assertEquals(1, entries.size());
- UniprotEntry entry = entries.get(0);
+ Entry entry = entries.get(0);
assertEquals(2, entry.getName().size());
assertEquals("A9CKP4_AGRT5", entry.getName().get(0));
assertEquals("A9CKP4_AGRT6", entry.getName().get(1));
assertEquals("A9CKP4", entry.getAccession().get(0));
assertEquals("A9CKP5", entry.getAccession().get(1));
- /*
- * UniprotSequence drops any space characters
- */
- assertEquals("MHAPLVSKDL", entry.getUniprotSequence().getContent());
+ assertEquals("MHAPL VSKDL", entry.getSequence().getValue());
- assertEquals(2, entry.getProtein().getName().size());
assertEquals("Mitogen-activated protein kinase 13", entry.getProtein()
- .getName().get(0));
- assertEquals("Henry", entry.getProtein().getName().get(1));
+ .getRecommendedName().getFullName().getValue());
/*
* Check sequence features
*/
- Vector<UniprotFeature> features = entry.getFeature();
+ List<FeatureType> features = entry.getFeature();
assertEquals(9, features.size());
- UniprotFeature sf = features.get(0);
+ FeatureType sf = features.get(0);
assertEquals("signal peptide", sf.getType());
assertNull(sf.getDescription());
assertNull(sf.getStatus());
- assertEquals(1, sf.getBegin());
- assertEquals(18, sf.getEnd());
+ assertNull(sf.getLocation().getPosition());
+ assertEquals(1, sf.getLocation().getBegin().getPosition().intValue());
+ assertEquals(18, sf.getLocation().getEnd().getPosition().intValue());
sf = features.get(1);
assertEquals("propeptide", sf.getType());
assertEquals("Activation peptide", sf.getDescription());
- assertEquals(19, sf.getPosition());
- assertEquals(19, sf.getBegin());
- assertEquals(20, sf.getEnd());
+ assertNull(sf.getLocation().getPosition());
+ assertEquals(19, sf.getLocation().getBegin().getPosition().intValue());
+ assertEquals(20, sf.getLocation().getEnd().getPosition().intValue());
sf = features.get(2);
assertEquals("chain", sf.getType());
assertEquals("Granzyme B", sf.getDescription());
- assertEquals(21, sf.getPosition());
- assertEquals(21, sf.getBegin());
- assertEquals(247, sf.getEnd());
+ assertNull(sf.getLocation().getPosition());
+ assertEquals(21, sf.getLocation().getBegin().getPosition().intValue());
+ assertEquals(247, sf.getLocation().getEnd().getPosition().intValue());
sf = features.get(3);
assertEquals("sequence variant", sf.getType());
assertNull(sf.getDescription());
- assertEquals(41, sf.getPosition());
- assertEquals(41, sf.getBegin());
- assertEquals(41, sf.getEnd());
+ assertEquals(41,
+ sf.getLocation().getPosition().getPosition().intValue());
+ assertNull(sf.getLocation().getBegin());
+ assertNull(sf.getLocation().getEnd());
sf = features.get(4);
assertEquals("sequence variant", sf.getType());
assertEquals("Pathogenic", sf.getDescription());
- assertEquals(41, sf.getPosition());
- assertEquals(41, sf.getBegin());
- assertEquals(41, sf.getEnd());
+ assertEquals(41,
+ sf.getLocation().getPosition().getPosition().intValue());
+ assertNull(sf.getLocation().getBegin());
+ assertNull(sf.getLocation().getEnd());
sf = features.get(5);
assertEquals("sequence variant", sf.getType());
assertEquals("Pathogenic", sf.getDescription());
- assertEquals(41, sf.getPosition());
- assertEquals(41, sf.getBegin());
- assertEquals(41, sf.getEnd());
+ assertEquals(41,
+ sf.getLocation().getPosition().getPosition().intValue());
+ assertNull(sf.getLocation().getBegin());
+ assertNull(sf.getLocation().getEnd());
sf = features.get(6);
assertEquals("sequence variant", sf.getType());
assertEquals("Foo",
sf.getDescription());
- assertEquals(42, sf.getPosition());
- assertEquals(42, sf.getBegin());
- assertEquals(42, sf.getEnd());
+ assertEquals(42,
+ sf.getLocation().getPosition().getPosition().intValue());
+ assertNull(sf.getLocation().getBegin());
+ assertNull(sf.getLocation().getEnd());
Assert.assertEquals(Uniprot.getDescription(sf),
"<html>p.Met42Leu" + "<br/> "
+ "p.Met42LeuMetVal Foo</html>");
sf = features.get(7);
- assertEquals(42, sf.getBegin());
- assertEquals(43, sf.getEnd());
+ assertNull(sf.getLocation().getPosition());
+ assertEquals(42, sf.getLocation().getBegin().getPosition().intValue());
+ assertEquals(43, sf.getLocation().getEnd().getPosition().intValue());
Assert.assertEquals(Uniprot.getDescription(sf),
"<html>p.MetLeu42LeuLeu" + "<br/> "
+ "p.MetLeu42LeuMetVal Foo</html>");
sf = features.get(8);
- assertEquals(42, sf.getBegin());
- assertEquals(45, sf.getEnd());
+ assertNull(sf.getLocation().getPosition());
+ assertEquals(42, sf.getLocation().getBegin().getPosition().intValue());
+ assertEquals(45, sf.getLocation().getEnd().getPosition().intValue());
Assert.assertEquals(Uniprot.getDescription(sf),
"<html>p.MLML42LeuLeu" + "<br/> "
+ "p.MLML42LMVK Foo Too</html>");
/*
* Check cross-references
*/
- Vector<PDBEntry> xrefs = entry.getDbReference();
+ List<DbReferenceType> xrefs = entry.getDbReference();
assertEquals(3, xrefs.size());
- PDBEntry xref = xrefs.get(0);
+ DbReferenceType xref = xrefs.get(0);
assertEquals("2FSQ", xref.getId());
assertEquals("PDB", xref.getType());
- assertEquals("X-ray", xref.getProperty("method"));
- assertEquals("1.40", xref.getProperty("resolution"));
+ assertEquals("X-ray",
+ Uniprot.getProperty(xref.getProperty(), "method"));
+ assertEquals("1.40",
+ Uniprot.getProperty(xref.getProperty(), "resolution"));
xref = xrefs.get(1);
assertEquals("2FSR", xref.getId());
assertEquals("PDBsum", xref.getType());
- assertFalse(xref.getProperties().hasMoreElements());
+ assertTrue(xref.getProperty().isEmpty());
xref = xrefs.get(2);
assertEquals("AE007869", xref.getId());
assertEquals("EMBL", xref.getType());
- assertEquals("AAK85932.1", xref.getProperty("protein sequence ID"));
- assertEquals("Genomic_DNA", xref.getProperty("molecule type"));
+ assertEquals("AAK85932.1",
+ Uniprot.getProperty(xref.getProperty(), "protein sequence ID"));
+ assertEquals("Genomic_DNA",
+ Uniprot.getProperty(xref.getProperty(), "molecule type"));
}
@Test(groups = { "Functional" })
- public void testGetUniprotSequence()
+ public void testGetUniprotSequence() throws UnsupportedEncodingException
{
- UniprotEntry entry = new Uniprot().getUniprotEntries(
- new StringReader(UNIPROT_XML)).get(0);
- SequenceI seq = new Uniprot().uniprotEntryToSequenceI(entry);
+ InputStream is = new ByteArrayInputStream(UNIPROT_XML.getBytes());
+ Entry entry = new Uniprot().getUniprotEntries(
+ is).get(0);
+ SequenceI seq = new Uniprot().uniprotEntryToSequence(entry);
assertNotNull(seq);
assertEquals(6, seq.getDBRefs().length); // 2*Uniprot, PDB, PDBsum, 2*EMBL
+ assertEquals(seq.getSequenceAsString(),
+ seq.createDatasetSequence().getSequenceAsString());
}
/**
* Test the method that formats the sequence id
+ *
+ * @throws UnsupportedEncodingException
*/
@Test(groups = { "Functional" })
- public void testGetUniprotEntryId()
+ public void testGetUniprotEntryId() throws UnsupportedEncodingException
{
- UniprotEntry entry = new Uniprot().getUniprotEntries(
- new StringReader(UNIPROT_XML)).get(0);
+ InputStream is = new ByteArrayInputStream(UNIPROT_XML.getBytes());
+ Entry entry = new Uniprot().getUniprotEntries(is).get(0);
/*
* name formatted with Uniprot Entry name
/**
* Test the method that formats the sequence description
+ *
+ * @throws UnsupportedEncodingException
*/
@Test(groups = { "Functional" })
public void testGetUniprotEntryDescription()
+ throws UnsupportedEncodingException
{
- UniprotEntry entry = new Uniprot().getUniprotEntries(
- new StringReader(UNIPROT_XML)).get(0);
+ InputStream is = new ByteArrayInputStream(UNIPROT_XML.getBytes());
+ Entry entry = new Uniprot().getUniprotEntries(is).get(0);
- /*
- * recommended names concatenated with space separator
- */
- String expectedDescription = "Mitogen-activated protein kinase 13 Henry";
- assertEquals(expectedDescription,
+ assertEquals("Mitogen-activated protein kinase 13",
Uniprot.getUniprotEntryDescription(entry));
}
@Test(groups = { "Functional" })
public void testGetDescription()
{
- UniprotFeature uf = new UniprotFeature();
- assertEquals("", Uniprot.getDescription(uf));
+ FeatureType ft = new FeatureType();
+ assertEquals("", Uniprot.getDescription(ft));
- uf.setDescription("Hello");
- assertEquals("Hello", Uniprot.getDescription(uf));
+ ft.setDescription("Hello");
+ assertEquals("Hello", Uniprot.getDescription(ft));
- uf.setPosition(23);
- uf.setOriginal("K");
- Vector<String> vars = new Vector<>();
- vars.add("y");
- uf.setVariation(vars);
- assertEquals("p.Lys23Tyr Hello", Uniprot.getDescription(uf));
+ ft.setLocation(new LocationType());
+ ft.getLocation().setPosition(new PositionType());
+ ft.getLocation().getPosition().setPosition(BigInteger.valueOf(23));
+ ft.setOriginal("K");
+ ft.getVariation().add("y");
+ assertEquals("p.Lys23Tyr Hello", Uniprot.getDescription(ft));
// multiple variants generate an html description over more than one line
- vars.add("W");
+ ft.getVariation().add("W");
assertEquals("<html>p.Lys23Tyr<br/> p.Lys23Trp Hello</html>",
- Uniprot.getDescription(uf));
+ Uniprot.getDescription(ft));
/*
* indel cases
* up to 3 bases (original or variant) are shown using 3 letter code
*/
- vars.clear();
- vars.add("KWE");
- uf.setOriginal("KLS");
- assertEquals(
- "p.LysLeuSer23LysTrpGlu Hello",
- Uniprot.getDescription(uf));
+ ft.getVariation().clear();
+ ft.getVariation().add("KWE");
+ ft.setOriginal("KLS");
+ assertEquals("p.LysLeuSer23LysTrpGlu Hello",
+ Uniprot.getDescription(ft));
// adding a fourth original base switches to single letter code
- uf.setOriginal("KLST");
- assertEquals("p.KLST23LysTrpGlu Hello",
- Uniprot.getDescription(uf));
-
- // adding a fourth variant switches to a condensed representation
- vars.clear();
- vars.add("KWES");
- assertEquals("p.KLST23KWES Hello", Uniprot.getDescription(uf));
-
- vars.clear();
- vars.add("z"); // unknown variant - fails gracefully
- uf.setOriginal("K");
- assertEquals("p.Lys23z Hello", Uniprot.getDescription(uf));
-
- uf.setVariation(null); // variant missing - is ignored
- assertEquals("Hello", Uniprot.getDescription(uf));
+ ft.setOriginal("KLST");
+ assertEquals("p.KLST23LysTrpGlu Hello", Uniprot.getDescription(ft));
+
+ // adding a fourth variant switches to single letter code
+ ft.getVariation().clear();
+ ft.getVariation().add("KWES");
+ assertEquals("p.KLST23KWES Hello", Uniprot.getDescription(ft));
+
+ ft.getVariation().clear();
+ ft.getVariation().add("z"); // unknown variant - fails gracefully
+ ft.setOriginal("K");
+ assertEquals("p.Lys23z Hello", Uniprot.getDescription(ft));
+
+ ft.getVariation().clear(); // variant missing - is ignored
+ assertEquals("Hello", Uniprot.getDescription(ft));
}
}