X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=test%2Fjalview%2Fws%2Fdbsources%2FUniprotTest.java;h=f2d3b663c65023c7204c6ff23089d74520db31a3;hb=56d72101b0584635cf539d5413db27abc8deb575;hp=24f62bc42e33f12c202cb3e04b51205f36985366;hpb=57738a1f3c19b1c3a00bd3ac5108f8cd0af32f99;p=jalview.git
diff --git a/test/jalview/ws/dbsources/UniprotTest.java b/test/jalview/ws/dbsources/UniprotTest.java
index 24f62bc..f2d3b66 100644
--- a/test/jalview/ws/dbsources/UniprotTest.java
+++ b/test/jalview/ws/dbsources/UniprotTest.java
@@ -26,8 +26,20 @@ import static org.testng.AssertJUnit.assertNotNull;
import static org.testng.AssertJUnit.assertNull;
import static org.testng.AssertJUnit.assertTrue;
+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;
+import org.testng.annotations.DataProvider;
+import org.testng.annotations.Test;
+
import jalview.datamodel.DBRefEntry;
import jalview.datamodel.DBRefSource;
+import jalview.datamodel.SequenceFeature;
import jalview.datamodel.SequenceI;
import jalview.gui.JvOptionPane;
import jalview.util.DBRefUtils;
@@ -37,16 +49,6 @@ 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;
-import org.testng.annotations.Test;
-
public class UniprotTest
{
@@ -229,6 +231,17 @@ public class UniprotTest
*/
assertTrue(res.get(0).isCanonical());
assertFalse(res.get(1).isCanonical());
+
+ // check version is preserved for EMBLCDS
+ res = DBRefUtils.searchRefs(seq.getDBRefs(), "AAK85932");
+ assertEquals(1, res.size());
+ // Ideally we would expect AAK85932.1 -> AAK85932
+ // assertTrue("1".equals(res.get(0).getVersion()));
+ // but it also passes through DBrefUtils.ensurePrimaries which adds
+ // (promoted) to the version string
+ // FIXME: Jim needs to specify what (promoted) means !! - or perhaps we just
+ // ignore it !
+ assertEquals("1 (promoted)", (res.get(0).getVersion()));
}
/**
@@ -313,4 +326,329 @@ public class UniprotTest
ft.getVariation().clear(); // variant missing - is ignored
assertEquals("Hello", Uniprot.getDescription(ft));
}
+
+ public static String Q29079 = Q29079 = new String(
+ "\n"
+ + "\n"
+ + "Q29079\n"
+ + "Q29017\n"
+ + "PAG2_PIG\n" + "\n"
+ + "\n"
+ + "Pregnancy-associated glycoprotein 2\n"
+ + "PAG 2\n"
+ + "3.4.23.-\n"
+ + "\n" + "\n" + "\n"
+ + "PAG2\n" + "\n"
+ + "\n"
+ + "Sus scrofa\n"
+ + "Pig\n"
+ + "\n"
+ + "\n" + "Eukaryota\n"
+ + "Metazoa\n" + "Chordata\n"
+ + "Craniata\n"
+ + "Vertebrata\n"
+ + "Euteleostomi\n"
+ + "Mammalia\n"
+ + "Eutheria\n"
+ + "Laurasiatheria\n"
+ + "Artiodactyla\n"
+ + "Suina\n" + "Suidae\n"
+ + "Sus\n" + "\n"
+ + "\n" + "\n"
+ + "\n"
+ + "Porcine pregnancy-associated glycoproteins: new members of the aspartic proteinase gene family expressed in trophectoderm.\n"
+ + "\n" + "\n"
+ + "\n"
+ + "\n"
+ + "\n" + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "NUCLEOTIDE SEQUENCE [GENOMIC DNA]\n"
+ + "\n" + "\n"
+ + "\n"
+ + "Gene for porcine pregnancy-associated glycoprotein 2 (poPAG2): its structural organization and analysis of its promoter.\n"
+ + "\n" + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n" + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "NUCLEOTIDE SEQUENCE [GENOMIC DNA]\n"
+ + "\n" + "\n"
+ + "\n"
+ + "\n"
+ + "Secreted\n"
+ + "Extracellular space\n"
+ + "\n" + "\n"
+ + "\n"
+ + "Expressed throughout the chorion, with the signal localized exclusively over the trophectoderm.\n"
+ + "\n"
+ + "\n"
+ + "Expression was detected at day 15, coinciding with the beginning of implantation, and continued throughout gestation.\n"
+ + "\n" + "\n"
+ + "Belongs to the peptidase A1 family.\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "Aspartyl protease\n"
+ + "Disulfide bond\n"
+ + "Glycoprotein\n"
+ + "Hydrolase\n"
+ + "Protease\n"
+ + "Reference proteome\n"
+ + "Secreted\n"
+ + "Signal\n"
+ + "Zymogen\n"
+ + "\n"
+ + "\n" + "\n"
+ + "\n" + "\n"
+ + "\n"
+ + "\n"
+ + "\n" + "\n"
+ + "\n" + "\n"
+ + "\n"
+ + "\n"
+ + "\n" + "\n"
+ + "\n" + "\n"
+ + "\n"
+ + "\n"
+ + "\n" + "\n"
+ + "\n" + "\n"
+ + "\n"
+ + "\n"
+ + "\n" + "\n"
+ + "\n" + "\n"
+ + "\n"
+ + "\n" + "\n"
+ + "\n" + "\n"
+ + "\n"
+ + "\n" + "\n"
+ + "\n" + "\n"
+ + "\n"
+ + "\n" + "\n"
+ + "\n" + "\n"
+ + "\n"
+ + "\n" + "\n"
+ + "\n" + "\n"
+ + "\n"
+ + "\n"
+ + "\n" + "\n"
+ + "\n" + "\n"
+ + "\n"
+ + "\n"
+ + "\n" + "\n"
+ + "\n" + "\n"
+ + "\n"
+ + "\n"
+ + "\n" + "\n"
+ + "\n" + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n" + "\n"
+ + "\n"
+ + "\n" + "\n"
+ + "\n"
+ + "MKWLVILGLVALSDCLVMIPLTKVKSVRESLREKGLLKNFLKEHPYNMIQNLLSKNSSHVQKFSYQPLRNYLDMVYVGNISIGTPPQQFSVVFDTGSSDLWVPSIYCKSKACVTHRSFNPSHSSTFHDRGKSIKLEYGSGKMSGFLGQDTVRIGQLTSTGQAFGLSKEETGKAFEHAIFDGILGLAYPSIAIKGTTTVIDNLKKQDQISEPVFAFYLSSDKEEGSVVMFGGVDKKYYKGDLKWVPLTQTSYWQIALDRITCRGRVIGCPRGCQAIVDTGTSMLHGPSKAVAKIHSLIKHFEKEYVVPCNARKALPDIVFTINNVDYPVPAQAYIRKYVVPCNARKALPDIVFTINNVDYPVPAQAYIRKNANNNRCYSTFEDIMDTLNQREIWILGDVFLRLYFTVYDEGQNRIGLAQAT\n"
+ + "\n"
+ + " Copyrighted by the UniProt Consortium, see https://www.uniprot.org/terms Distributed under the Creative Commons Attribution (CC BY 4.0) License \n"
+ + "");
+
+ @DataProvider
+ public Object[][] problemEntries()
+ {
+ return new Object[][] { new Object[] { Q29079 } };
+ }
+
+ @Test(groups = "Functional", dataProvider = "problemEntries")
+ public SequenceI testimportOfProblemEntries(String entry)
+ {
+ Uniprot u = new Uniprot();
+ InputStream is = new ByteArrayInputStream(entry.getBytes());
+ List entries = u.getUniprotEntries(is);
+ assertEquals(1, entries.size());
+ SequenceI sq = u.uniprotEntryToSequence(entries.get(0));
+ assertNotNull(sq);
+ return sq;
+ }
+
+ @Test(groups = "Functional")
+ public void checkIndefiniteSequenceFeatures()
+ {
+ SequenceI upseq = testimportOfProblemEntries(Q29079);
+ List sf = upseq.getFeatures()
+ .getPositionalFeatures("chain");
+ assertNotNull(sf);
+ assertTrue(sf.size() == 1);
+ SequenceFeature chainFeaure = sf.get(0);
+ assertTrue(chainFeaure.getBegin() == 1);
+ assertTrue(chainFeaure.getEnd() == upseq.getEnd());
+ assertNotNull(chainFeaure.getValueAsString("start_status"));
+ assertNull(chainFeaure.getValueAsString("end_status"));
+ assertTrue(
+ "unknown".equals(chainFeaure.getValueAsString("start_status")));
+ }
}