diff --git a/psimitab-parser/src/test/java/psidev/psi/mi/tab/PsimiTabIteratorTest.java b/psimitab-parser/src/test/java/psidev/psi/mi/tab/PsimiTabIteratorTest.java index 513061da4..06b35772f 100644 --- a/psimitab-parser/src/test/java/psidev/psi/mi/tab/PsimiTabIteratorTest.java +++ b/psimitab-parser/src/test/java/psidev/psi/mi/tab/PsimiTabIteratorTest.java @@ -21,29 +21,6 @@ */ public class PsimiTabIteratorTest { - @Test - public void getInteractionsProcessedCount() throws Exception { - - String[] lines = { - "uniprotkb:P23367 uniprotkb:P06722 interpro:IPR003594|interpro:IPR002099|go:\"GO:0005515\"|intact:EBI-554913 interpro:IPR004230|uniprotkb:Q9R2X2|uniprotkb:Q9R3A8|uniprotkb:Q9R411|uniprotkb:Q9S6P5|uniprotkb:Q9S6P6|uniprotkb:Q9S6P7|go:\"GO:0005515\"|intact:EBI-545170 gene name:mutL|locus name:b4170 gene name:mutH|gene name synonym:mutR|gene name synonym:prv|locus name:b2831 adenylate cyclase:\"MI:0014\" - pubmed:11585365 taxid:562 taxid:562 physical interaction:\"MI:0218\" - - -\n", - "uniprotkb:P23367 uniprotkb:P06722 - - - - - - - taxid:562 taxid:562 - - - -\n", - "uniprotkb:P23909 uniprotkb:P23909 interpro:IPR005748|interpro:IPR000432|interpro:IPR007860|interpro:IPR007696|interpro:IPR007861|interpro:IPR007695|uniprotkb:P71279|go:\"GO:0005515\"|intact:EBI-554920 interpro:IPR005748|interpro:IPR000432|interpro:IPR007860|interpro:IPR007696|interpro:IPR007861|interpro:IPR007695|uniprotkb:P71279|go:\"GO:0005515\"|intact:EBI-554920 gene name:mutS|gene name synonym:fdv|locus name:b2733 gene name:mutS|gene name synonym:fdv|locus name:b2733 adenylate cyclase:\"MI:0014\" - pubmed:11585365 taxid:562 taxid:562 physical interaction:\"MI:0218\" - - -\n", - "uniprotkb:P23367 uniprotkb:P23367 interpro:IPR003594|interpro:IPR002099|go:\"GO:0005515\"|intact:EBI-554913 interpro:IPR003594|interpro:IPR002099|go:\"GO:0005515\"|intact:EBI-554913 gene name:mutL|locus name:b4170 gene name:mutL|locus name:b4170 adenylate cyclase:\"MI:0014\" - pubmed:11585365 taxid:562 taxid:562 physical interaction:\"MI:0218\" - - -\n", - "uniprotkb:P23367 uniprotkb:P09184 interpro:IPR003594|interpro:IPR002099|go:\"GO:0005515\"|intact:EBI-554913 interpro:IPR004603|intact:EBI-765033 gene name:mutL|locus name:b4170 gene name:vsr|locus name:b1960 two hybrid:\"MI:0018\"|adenylate cyclase:\"MI:0014\" - pubmed:11585365 taxid:562 taxid:562 physical interaction:\"MI:0218\" - - -\n", - "uniprotkb:P06722 uniprotkb:P23367 interpro:IPR004230|uniprotkb:Q9R2X2|uniprotkb:Q9R3A8|uniprotkb:Q9R411|uniprotkb:Q9S6P5|uniprotkb:Q9S6P6|uniprotkb:Q9S6P7|go:\"GO:0005515\"|intact:EBI-545170 interpro:IPR003594|interpro:IPR002099|go:\"GO:0005515\"|intact:EBI-554913 gene name:mutH|gene name synonym:mutR|gene name synonym:prv|locus name:b2831 gene name:mutL|locus name:b4170 two hybrid:\"MI:0018\" - pubmed:11585365 taxid:562 taxid:562 physical interaction:\"MI:0218\" - - -\n" - }; - - - psidev.psi.mi.tab.io.PsimiTabReader reader = new PsimiTabReader(); - Iterator iterator = reader.iterate(TestHelper.HEADER_TAB_11585365); - int i = 0; - while (iterator.hasNext()) { - assertEquals(lines[i], MitabWriterUtils.buildLine(iterator.next(), PsimiTabVersion.v2_5)); - i++; - } - assertEquals(6, ((PsimiTabIterator) iterator).getInteractionsProcessedCount()); - } - @Test public void next() throws Exception { psidev.psi.mi.tab.io.PsimiTabReader reader = new PsimiTabReader(); @@ -84,7 +61,30 @@ public void hasNext() throws Exception { } @Test - public void getInteractionsProcessedCountWithoutHeader() throws Exception { + public void getInteractionsProcessedCountMitab25() throws Exception { + + String[] lines = { + "uniprotkb:P23367 uniprotkb:P06722 interpro:IPR003594|interpro:IPR002099|go:\"GO:0005515\"|intact:EBI-554913 interpro:IPR004230|uniprotkb:Q9R2X2|uniprotkb:Q9R3A8|uniprotkb:Q9R411|uniprotkb:Q9S6P5|uniprotkb:Q9S6P6|uniprotkb:Q9S6P7|go:\"GO:0005515\"|intact:EBI-545170 gene name:mutL|locus name:b4170 gene name:mutH|gene name synonym:mutR|gene name synonym:prv|locus name:b2831 adenylate cyclase:\"MI:0014\" - pubmed:11585365 taxid:562 taxid:562 physical interaction:\"MI:0218\" - - -\n", + "uniprotkb:P23367 uniprotkb:P06722 - - - - - - - taxid:562 taxid:562 - - - -\n", + "uniprotkb:P23909 uniprotkb:P23909 interpro:IPR005748|interpro:IPR000432|interpro:IPR007860|interpro:IPR007696|interpro:IPR007861|interpro:IPR007695|uniprotkb:P71279|go:\"GO:0005515\"|intact:EBI-554920 interpro:IPR005748|interpro:IPR000432|interpro:IPR007860|interpro:IPR007696|interpro:IPR007861|interpro:IPR007695|uniprotkb:P71279|go:\"GO:0005515\"|intact:EBI-554920 gene name:mutS|gene name synonym:fdv|locus name:b2733 gene name:mutS|gene name synonym:fdv|locus name:b2733 adenylate cyclase:\"MI:0014\" - pubmed:11585365 taxid:562 taxid:562 physical interaction:\"MI:0218\" - - -\n", + "uniprotkb:P23367 uniprotkb:P23367 interpro:IPR003594|interpro:IPR002099|go:\"GO:0005515\"|intact:EBI-554913 interpro:IPR003594|interpro:IPR002099|go:\"GO:0005515\"|intact:EBI-554913 gene name:mutL|locus name:b4170 gene name:mutL|locus name:b4170 adenylate cyclase:\"MI:0014\" - pubmed:11585365 taxid:562 taxid:562 physical interaction:\"MI:0218\" - - -\n", + "uniprotkb:P23367 uniprotkb:P09184 interpro:IPR003594|interpro:IPR002099|go:\"GO:0005515\"|intact:EBI-554913 interpro:IPR004603|intact:EBI-765033 gene name:mutL|locus name:b4170 gene name:vsr|locus name:b1960 two hybrid:\"MI:0018\"|adenylate cyclase:\"MI:0014\" - pubmed:11585365 taxid:562 taxid:562 physical interaction:\"MI:0218\" - - -\n", + "uniprotkb:P06722 uniprotkb:P23367 interpro:IPR004230|uniprotkb:Q9R2X2|uniprotkb:Q9R3A8|uniprotkb:Q9R411|uniprotkb:Q9S6P5|uniprotkb:Q9S6P6|uniprotkb:Q9S6P7|go:\"GO:0005515\"|intact:EBI-545170 interpro:IPR003594|interpro:IPR002099|go:\"GO:0005515\"|intact:EBI-554913 gene name:mutH|gene name synonym:mutR|gene name synonym:prv|locus name:b2831 gene name:mutL|locus name:b4170 two hybrid:\"MI:0018\" - pubmed:11585365 taxid:562 taxid:562 physical interaction:\"MI:0218\" - - -\n" + }; + + + PsimiTabReader reader = new PsimiTabReader(); + Iterator iterator = reader.iterate(TestHelper.HEADER_TAB_11585365); + int i = 0; + while (iterator.hasNext()) { + assertEquals(lines[i], MitabWriterUtils.buildLine(iterator.next(), PsimiTabVersion.v2_5)); + i++; + } + assertEquals(6, ((PsimiTabIterator) iterator).getInteractionsProcessedCount()); + } + + @Test + public void getInteractionsProcessedCountMitab25WithoutHeader() throws Exception { String[] lines = { "uniprotkb:P23367 uniprotkb:P06722 interpro:IPR003594|interpro:IPR002099|go:\"GO:0005515\"|intact:EBI-554913 interpro:IPR004230|uniprotkb:Q9R2X2|uniprotkb:Q9R3A8|uniprotkb:Q9R411|uniprotkb:Q9S6P5|uniprotkb:Q9S6P6|uniprotkb:Q9S6P7|go:\"GO:0005515\"|intact:EBI-545170 gene name:mutL|locus name:b4170 gene name:mutH|gene name synonym:mutR|gene name synonym:prv|locus name:b2831 adenylate cyclase:\"MI:0014\" - pubmed:11585365 taxid:562 taxid:562 physical interaction:\"MI:0218\" - - -\n", @@ -106,6 +106,87 @@ public void getInteractionsProcessedCountWithoutHeader() throws Exception { assertEquals(6, ((PsimiTabIterator) iterator).getInteractionsProcessedCount()); } + @Test + public void getInteractionsProcessedCountMitab26() throws Exception { + String[] mitab26line = { + "uniprotkb:Q9Y5J7|intact:EBI-123456\tuniprotkb:Q9Y584\tuniprotkb:TIMM9(gene name)\tuniprotkb:TIMM22(gene name)\t" + + "uniprotkb:TIM9\tuniprotkb:TEX4\t" + + "psi-mi:\"MI:0006\"(anti bait coip)\tPeter et al (2010)\tpubmed:14726512\ttaxid:9606(human)\ttaxid:9606(human)\t" + + "psi-mi:\"MI:0218\"(physical interaction)\tpsi-mi:\"MI:0469\"(intact)\tintact:EBI-1200556\t-\t" + + "psi-mi:\"MI:xxxx\"(spoke)\tpsi-mi:\"MI:0499\"(unspecified role)\tpsi-mi:\"MI:0499\"(unspecified role)\t" + + "psi-mi:\"MI:0497\"(bait)\tpsi-mi:\"MI:0498\"(prey)\tpsi-mi:\"MI:0326\"(protein)\tpsi-mi:\"MI:0326\"(protein)\t" + + "interpro:IPR004046(GST_C)\t" + + "go:\"GO:0004709\"(\"F:MAP kinase kinase kinase act\")\tgo:\"GO:xxxxx\"\t" + + "caution:AnnotA\tcaution:AnnotB\tdataset:Test\ttaxid:9606(human-293t)\tkd:2.0\t2009/03/09\t2010/03/30\t" + + "seguid:checksumA\tseguid:checksumB\tseguid:checksumI\tfalse\n" + }; + + psidev.psi.mi.tab.io.PsimiTabReader reader = new PsimiTabReader(); + Iterator iterator = reader.iterate(TestHelper.MITAB26_LINE_HEADER); + int i = 0; + while (iterator.hasNext()) { + assertEquals(mitab26line[i], MitabWriterUtils.buildLine(iterator.next(), PsimiTabVersion.v2_6)); + i++; + } + assertEquals(1, ((PsimiTabIterator) iterator).getInteractionsProcessedCount()); + + } + + @Test + public void getInteractionsProcessedCountMitab27() throws Exception { + String[] mitab27line = { + "uniprotkb:Q9Y5J7|intact:EBI-123456\tuniprotkb:Q9Y584\tuniprotkb:TIMM9(gene name)\tuniprotkb:TIMM22(gene name)\t" + + "uniprotkb:TIM9\tuniprotkb:TEX4\t" + + "psi-mi:\"MI:0006\"(anti bait coip)\tPeter et al (2010)\tpubmed:14726512\ttaxid:9606(human)\ttaxid:9606(human)\t" + + "psi-mi:\"MI:0218\"(physical interaction)\tpsi-mi:\"MI:0469\"(intact)\tintact:EBI-1200556\t-\t" + + "psi-mi:\"MI:xxxx\"(spoke)\tpsi-mi:\"MI:0499\"(unspecified role)\tpsi-mi:\"MI:0499\"(unspecified role)\t" + + "psi-mi:\"MI:0497\"(bait)\tpsi-mi:\"MI:0498\"(prey)\tpsi-mi:\"MI:0326\"(protein)\tpsi-mi:\"MI:0326\"(protein)\t" + + "interpro:IPR004046(GST_C)\t" + + "go:\"GO:0004709\"(\"F:MAP kinase kinase kinase act\")\tgo:\"GO:xxxxx\"\t" + + "caution:AnnotA\tcaution:AnnotB\tdataset:Test\ttaxid:9606(human-293t)\tkd:2.0\t2009/03/09\t2010/03/30\t" + + "seguid:checksumA\tseguid:checksumB\tseguid:checksumI\tfalse\t" + + "tag:?-?\t-\t-\t-\tpsi-mi:\"MI:0102\"(sequence tag identification)\tpsi-mi:\"MI:0102\"(sequence tag identification)\n" + }; + + psidev.psi.mi.tab.io.PsimiTabReader reader = new PsimiTabReader(); + Iterator iterator = reader.iterate(TestHelper.MITAB27_LINE_HEADER); + int i = 0; + while (iterator.hasNext()) { + assertEquals(mitab27line[i], MitabWriterUtils.buildLine(iterator.next(), PsimiTabVersion.v2_7)); + i++; + } + assertEquals(1, ((PsimiTabIterator) iterator).getInteractionsProcessedCount()); + + } + + @Test + public void getInteractionsProcessedCountMitab28() throws Exception { + String[] mitab28line = { + "uniprotkb:Q9Y5J7|intact:EBI-123456\tuniprotkb:Q9Y584\tuniprotkb:TIMM9(gene name)\tuniprotkb:TIMM22(gene name)\t" + + "uniprotkb:TIM9\tuniprotkb:TEX4\t" + + "psi-mi:\"MI:0006\"(anti bait coip)\tPeter et al (2010)\tpubmed:14726512\ttaxid:9606(human)\ttaxid:9606(human)\t" + + "psi-mi:\"MI:0218\"(physical interaction)\tpsi-mi:\"MI:0469\"(intact)\tintact:EBI-1200556\t-\t" + + "psi-mi:\"MI:xxxx\"(spoke)\tpsi-mi:\"MI:0499\"(unspecified role)\tpsi-mi:\"MI:0499\"(unspecified role)\t" + + "psi-mi:\"MI:0497\"(bait)\tpsi-mi:\"MI:0498\"(prey)\tpsi-mi:\"MI:0326\"(protein)\tpsi-mi:\"MI:0326\"(protein)\t" + + "interpro:IPR004046(GST_C)\t" + + "go:\"GO:0004709\"(\"F:MAP kinase kinase kinase act\")\tgo:\"GO:xxxxx\"\t" + + "caution:AnnotA\tcaution:AnnotB\tdataset:Test\ttaxid:9606(human-293t)\tkd:2.0\t2009/03/09\t2010/03/30\t" + + "seguid:checksumA\tseguid:checksumB\tseguid:checksumI\tfalse\t" + + "tag:?-?\t-\t-\t-\tpsi-mi:\"MI:0102\"(sequence tag identification)\tpsi-mi:\"MI:0102\"(sequence tag identification)\t" + + "-\t-\tpsi-mi:\"MI:2247\"(transcriptional regulation)\tpsi-mi:\"MI:2236\"(up-regulates activity)\n" + }; + + psidev.psi.mi.tab.io.PsimiTabReader reader = new PsimiTabReader(); + Iterator iterator = reader.iterate(TestHelper.MITAB28_LINE_HEADER); + int i = 0; + while (iterator.hasNext()) { + assertEquals(mitab28line[i], MitabWriterUtils.buildLine(iterator.next(), PsimiTabVersion.v2_8)); + i++; + } + assertEquals(1, ((PsimiTabIterator) iterator).getInteractionsProcessedCount()); + + } + @Test public void readEmptyFile() throws Exception { diff --git a/psimitab-parser/src/test/java/psidev/psi/mi/tab/PsimiTabReaderTest.java b/psimitab-parser/src/test/java/psidev/psi/mi/tab/PsimiTabReaderTest.java index 8dfccd872..ebe8cf0de 100644 --- a/psimitab-parser/src/test/java/psidev/psi/mi/tab/PsimiTabReaderTest.java +++ b/psimitab-parser/src/test/java/psidev/psi/mi/tab/PsimiTabReaderTest.java @@ -5,11 +5,14 @@ import psidev.psi.mi.tab.model.BinaryInteraction; import psidev.psi.mi.tab.model.ConfidenceImpl; +import java.io.File; import java.io.IOException; +import java.text.SimpleDateFormat; import java.util.Collection; import java.util.Iterator; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; /** * PsimiTabReader Tester. @@ -21,26 +24,27 @@ public class PsimiTabReaderTest { @Test - public void readFileNoHeader() throws PsimiTabException, IOException { + public void readStringNoHeader() throws PsimiTabException, IOException { - psidev.psi.mi.tab.io.PsimiTabReader reader = new PsimiTabReader(); + PsimiTabReader reader = new PsimiTabReader(); Collection interactions = reader.read(TestHelper.TAB_11585365); assertEquals(4, interactions.size()); } @Test - public void readFileWithHeader() throws PsimiTabException, IOException { + public void readStringWithHeader() throws PsimiTabException, IOException { - psidev.psi.mi.tab.io.PsimiTabReader reader = new PsimiTabReader(); + PsimiTabReader reader = new PsimiTabReader(); Collection interactions = reader.read(TestHelper.TXT_11585365); assertEquals(4, interactions.size()); } @Test - public void iterate_withHeader() throws Exception { - psidev.psi.mi.tab.io.PsimiTabReader reader = new PsimiTabReader(); + public void iterateStringWithHeader() throws Exception { + + PsimiTabReader reader = new PsimiTabReader(); Iterator iterator = reader.iterate(TestHelper.TXT_11585365); int count = 0; @@ -57,65 +61,343 @@ public void iterate_withHeader() throws Exception { } @Test - public void read_file() throws PsimiTabException, IOException { - psidev.psi.mi.tab.io.PsimiTabReader mitabReader = new PsimiTabReader(); - Collection interactions = mitabReader.read(TestHelper.TXT_11585365); + public void readMitab25String() throws PsimiTabException, IOException { + + PsimiTabReader mitabReader = new PsimiTabReader(); + Collection interactions = mitabReader.read(TestHelper.MITAB25_2LINES_HEADER); + int count = 0; for (BinaryInteraction interaction : interactions) { + assertEquals("P23367", interaction.getInteractorA().getIdentifiers().iterator().next().getIdentifier()); + assertEquals("P06722", interaction.getInteractorB().getIdentifiers().iterator().next().getIdentifier()); count++; } - assertEquals(4, count); + + assertEquals(2, count); + assertEquals(2, interactions.size()); } @Test - public void iterate_file() throws PsimiTabException, IOException { - psidev.psi.mi.tab.io.PsimiTabReader mitabReader = new PsimiTabReader(); - Iterator ii = mitabReader.iterate(TestHelper.TXT_11585365); + public void iterateMitab25String() throws IOException { + + PsimiTabReader mitabReader = new PsimiTabReader(); + Iterator iterator = mitabReader.iterate(TestHelper.MITAB25_2LINES_HEADER); + PsimiTabIterator mitabIterator = (PsimiTabIterator) iterator; int count = 0; - while (ii.hasNext()) { - ii.next(); + while (mitabIterator.hasNext()) { + BinaryInteraction interaction = mitabIterator.next(); + assertEquals("P23367", interaction.getInteractorA().getIdentifiers().iterator().next().getIdentifier()); + assertEquals("P06722", interaction.getInteractorB().getIdentifiers().iterator().next().getIdentifier()); count++; } - assertEquals(4, count); + assertEquals(2, count); + assertEquals(2,mitabIterator.getInteractionsProcessedCount()); } - public static final String MITAB_2_LINE_WITH_HEADER = - "#ID interactor A\tID interactor B\tAlt. ID interactor A\tAlt. ID interactor B\tAliases interactor A\tAliases interactor B\tinteraction detection method(s)\tpublication(s) 1st author(s) surname\tPublication ID\ttaxid interactor A\ttaxid interactor B\tInteraction types\tSource databases and identifiers\tInteraction ID\tConfidenceImpl\n" + - "uniprotkb:P23367\tuniprotkb:P06722\tinterpro:IPR003594|interpro:IPR002099|go:GO:0005515|intact:EBI-554913\tinterpro:IPR004230|uniprotkb:Q9R2X2|uniprotkb:Q9R3A8|uniprotkb:Q9R411|uniprotkb:Q9S6P5|uniprotkb:Q9S6P6|uniprotkb:Q9S6P7|go:GO:0005515|intact:EBI-545170\tgene name:mutL|locus name:b4170\tgene name:mutH|gene name synonym:mutR|gene name synonym:prv|locus name:b2831\tadenylate cyclase:MI:0014\t-\tpubmed:11585365\ttaxid:562\ttaxid:562\tphysical interaction:MI:0218\t-\t-\t-\n" + - "uniprotkb:P23367\tuniprotkb:P06722\t-\t-\t-\t-\t-\t-\t-\ttaxid:562\ttaxid:562\t-\t-\t-\t-\t-"; + @Test + public void readMitab25File() throws Exception { + + PsimiTabReader mitabReader = new PsimiTabReader(); + File file = TestHelper.getFileByResources("/mitab-samples/14726512.txt", PsimiTabReader.class); + Collection interactions = mitabReader.read(file); + + assertEquals(8, interactions.size()); + + BinaryInteraction firstBinaryInteraction = interactions.iterator().next(); + + // test idB + assertEquals("uniprotkb", firstBinaryInteraction.getInteractorB().getIdentifiers().get(0).getDatabase()); + assertEquals("Q9Y584", firstBinaryInteraction.getInteractorB().getIdentifiers().get(0).getIdentifier()); + + // test AltIdA + assertEquals("uniprotkb", firstBinaryInteraction.getInteractorA().getAlternativeIdentifiers().get(0).getDatabase()); + assertEquals("TIMM9", firstBinaryInteraction.getInteractorA().getAlternativeIdentifiers().get(0).getIdentifier()); + + // test pubauth + assertTrue(firstBinaryInteraction.getAuthors().isEmpty()); + + // test pubid + assertEquals("pubmed", firstBinaryInteraction.getPublications().get(0).getDatabase()); + assertEquals("14726512", firstBinaryInteraction.getPublications().get(0).getIdentifier()); + + // test interaction type + assertEquals("MI", firstBinaryInteraction.getInteractionTypes().get(0).getDatabase()); + assertEquals("0218", firstBinaryInteraction.getInteractionTypes().get(0).getIdentifier()); + assertEquals("physical interaction", firstBinaryInteraction.getInteractionTypes().get(0).getText()); + + // test confidence score + assertTrue(firstBinaryInteraction.getConfidenceValues().isEmpty()); + } @Test - public void read_String() throws PsimiTabException, IOException { + public void iterateMitab25File() throws Exception { - psidev.psi.mi.tab.io.PsimiTabReader mitabReader = new PsimiTabReader(); - Collection interactions = mitabReader.read(MITAB_2_LINE_WITH_HEADER); - int count = 0; - for (BinaryInteraction interaction : interactions) { - assertEquals("P23367", interaction.getInteractorA().getIdentifiers().iterator().next().getIdentifier()); - assertEquals("P06722", interaction.getInteractorB().getIdentifiers().iterator().next().getIdentifier()); - count++; + PsimiTabReader mitabReader = new PsimiTabReader(); + File file = TestHelper.getFileByResources("/mitab-samples/14726512.txt", PsimiTabReader.class); + + Iterator iterator = mitabReader.iterate(file); + PsimiTabIterator mitabIterator = (PsimiTabIterator) iterator; + + while (mitabIterator.hasNext()) { + BinaryInteraction interaction = mitabIterator.next(); + assertTrue(interaction.getConfidenceValues().isEmpty()); } - assertEquals(2, count); + + assertEquals(8, mitabIterator.getInteractionsProcessedCount()); } @Test - public void iterate_String() throws PsimiTabException, IOException { - psidev.psi.mi.tab.io.PsimiTabReader mitabReader = new PsimiTabReader(); - Iterator ii = mitabReader.iterate(MITAB_2_LINE_WITH_HEADER); + public void readMitab27String() throws Exception { - int count = 0; - while (ii.hasNext()) { - BinaryInteraction interaction = ii.next(); + PsimiTabReader mitabReader = new PsimiTabReader(); + Collection interactions = mitabReader.read(TestHelper.MITAB27_LINE_HEADER); - assertEquals("P23367", interaction.getInteractorA().getIdentifiers().iterator().next().getIdentifier()); - assertEquals("P06722", interaction.getInteractorB().getIdentifiers().iterator().next().getIdentifier()); + assertEquals(1,interactions.size()); - count++; + BinaryInteraction firstBinaryInteraction = interactions.iterator().next(); + + // test biological role A + Assert.assertEquals("psi-mi", firstBinaryInteraction.getInteractorA().getBiologicalRoles().get(0).getDatabase()); + Assert.assertEquals("MI:0499", firstBinaryInteraction.getInteractorA().getBiologicalRoles().get(0).getIdentifier()); + Assert.assertEquals("unspecified role", firstBinaryInteraction.getInteractorA().getBiologicalRoles().get(0).getText()); + + // test interactor type B + Assert.assertEquals("psi-mi", firstBinaryInteraction.getInteractorB().getInteractorTypes().get(0).getDatabase()); + Assert.assertEquals("MI:0326", firstBinaryInteraction.getInteractorB().getInteractorTypes().get(0).getIdentifier()); + Assert.assertEquals("protein", firstBinaryInteraction.getInteractorB().getInteractorTypes().get(0).getText()); + + // test xref for interaction + Assert.assertEquals("go", firstBinaryInteraction.getXrefs().get(0).getDatabase()); + Assert.assertEquals("GO:xxxxx", firstBinaryInteraction.getXrefs().get(0).getIdentifier()); + + // test parameters of the interaction + Assert.assertEquals("kd", firstBinaryInteraction.getParameters().get(0).getType()); + Assert.assertEquals("2.0", firstBinaryInteraction.getParameters().get(0).getValue()); + + // test update date + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy/MM/dd"); + Assert.assertEquals("2010/03/30", simpleDateFormat.format(firstBinaryInteraction.getUpdateDate().get(0))); + + // test checksumB + Assert.assertEquals("seguid", firstBinaryInteraction.getInteractorB().getChecksums().get(0).getMethodName()); + Assert.assertEquals("checksumB", firstBinaryInteraction.getInteractorB().getChecksums().get(0).getChecksum()); + + // test negative + Assert.assertFalse(firstBinaryInteraction.isNegativeInteraction()); + + // test features + Assert.assertEquals("tag", firstBinaryInteraction.getInteractorA().getFeatures().get(0).getFeatureType()); + Assert.assertEquals("?-?", firstBinaryInteraction.getInteractorA().getFeatures().get(0).getRanges().get(0)); + Assert.assertTrue(firstBinaryInteraction.getInteractorB().getFeatures().isEmpty()); + + // test stoichiometries + Assert.assertTrue(firstBinaryInteraction.getInteractorA().getStoichiometry().isEmpty()); + Assert.assertTrue(firstBinaryInteraction.getInteractorB().getStoichiometry().isEmpty()); + + // test participant identification methods + Assert.assertEquals("psi-mi", firstBinaryInteraction.getInteractorA().getParticipantIdentificationMethods().get(0).getDatabase()); + Assert.assertEquals("MI:0102", firstBinaryInteraction.getInteractorA().getParticipantIdentificationMethods().get(0).getIdentifier()); + Assert.assertEquals("sequence tag identification", firstBinaryInteraction.getInteractorA().getParticipantIdentificationMethods().get(0).getText()); + Assert.assertEquals("psi-mi", firstBinaryInteraction.getInteractorB().getParticipantIdentificationMethods().get(0).getDatabase()); + Assert.assertEquals("MI:0102", firstBinaryInteraction.getInteractorB().getParticipantIdentificationMethods().get(0).getIdentifier()); + Assert.assertEquals("sequence tag identification", firstBinaryInteraction.getInteractorB().getParticipantIdentificationMethods().get(0).getText()); + } + + @Test + public void iterateMitab27String() throws Exception { + + PsimiTabReader mitabReader = new PsimiTabReader(); + Iterator iterator = mitabReader.iterate(TestHelper.MITAB27_LINE_HEADER); + PsimiTabIterator mitabIterator = (PsimiTabIterator) iterator; + + while (mitabIterator.hasNext()) { + BinaryInteraction firstBinaryInteraction = mitabIterator.next(); + + // test interactor type B + Assert.assertEquals("psi-mi", firstBinaryInteraction.getInteractorB().getInteractorTypes().get(0).getDatabase()); + Assert.assertEquals("MI:0326", firstBinaryInteraction.getInteractorB().getInteractorTypes().get(0).getIdentifier()); + Assert.assertEquals("protein", firstBinaryInteraction.getInteractorB().getInteractorTypes().get(0).getText()); + + // test checksumB + Assert.assertEquals("seguid", firstBinaryInteraction.getInteractorB().getChecksums().get(0).getMethodName()); + Assert.assertEquals("checksumB", firstBinaryInteraction.getInteractorB().getChecksums().get(0).getChecksum()); + + // test negative + Assert.assertFalse(firstBinaryInteraction.isNegativeInteraction()); + + // test features + Assert.assertEquals("tag", firstBinaryInteraction.getInteractorA().getFeatures().get(0).getFeatureType()); + Assert.assertEquals("?-?", firstBinaryInteraction.getInteractorA().getFeatures().get(0).getRanges().get(0)); + Assert.assertTrue(firstBinaryInteraction.getInteractorB().getFeatures().isEmpty()); } - assertEquals(2, count); + assertEquals(1, mitabIterator.getInteractionsProcessedCount()); + } + + @Test + public void readMitab27File() throws Exception { + + PsimiTabReader mitabReader = new PsimiTabReader(); + File file = TestHelper.getFileByResources("/mitab-samples/mitab_27_example.txt", PsimiTabReader.class); + Collection interactions = mitabReader.read(file); + + assertEquals(14, interactions.size()); + + BinaryInteraction firstBinaryInteraction = interactions.iterator().next(); + + // test IdA + assertEquals("innatedb", firstBinaryInteraction.getInteractorA().getIdentifiers().get(0).getDatabase()); + assertEquals("IDBG-82738", firstBinaryInteraction.getInteractorA().getIdentifiers().get(0).getIdentifier()); + + // test pubauth + assertEquals("Shimazu et al. (1999)", firstBinaryInteraction.getAuthors().get(0).getName()); + + // test confidence scores + assertEquals("lpr", firstBinaryInteraction.getConfidenceValues().get(0).getType()); + assertEquals("2", firstBinaryInteraction.getConfidenceValues().get(0).getValue()); + assertEquals("hpr", firstBinaryInteraction.getConfidenceValues().get(1).getType()); + assertEquals("2", firstBinaryInteraction.getConfidenceValues().get(1).getValue()); + assertEquals("np", firstBinaryInteraction.getConfidenceValues().get(2).getType()); + assertEquals("1", firstBinaryInteraction.getConfidenceValues().get(2).getValue()); + + // test parameters of the interaction + assertTrue(firstBinaryInteraction.getParameters().isEmpty()); + + // test negative + Assert.assertFalse(firstBinaryInteraction.isNegativeInteraction()); + + // test participant identification methods + assertEquals("psi-mi", firstBinaryInteraction.getInteractorA().getParticipantIdentificationMethods().get(0).getDatabase()); + assertEquals("MI:0363", firstBinaryInteraction.getInteractorA().getParticipantIdentificationMethods().get(0).getIdentifier()); + assertEquals("inferred by author", firstBinaryInteraction.getInteractorA().getParticipantIdentificationMethods().get(0).getText()); + assertEquals("psi-mi", firstBinaryInteraction.getInteractorB().getParticipantIdentificationMethods().get(0).getDatabase()); + assertEquals("MI:0363", firstBinaryInteraction.getInteractorB().getParticipantIdentificationMethods().get(0).getIdentifier()); + assertEquals("inferred by author", firstBinaryInteraction.getInteractorB().getParticipantIdentificationMethods().get(0).getText()); + } + + @Test + public void iterateMitab27File() throws Exception { + + PsimiTabReader mitabReader = new PsimiTabReader(); + File file = TestHelper.getFileByResources("/mitab-samples/mitab_27_example.txt", PsimiTabReader.class); + + Iterator iterator = mitabReader.iterate(file); + PsimiTabIterator mitabIterator = (PsimiTabIterator) iterator; + + while (mitabIterator.hasNext()) { + BinaryInteraction interaction = mitabIterator.next(); + assertEquals("psi-mi", interaction.getInteractorA().getParticipantIdentificationMethods().get(0).getDatabase()); + assertEquals("MI:0363", interaction.getInteractorA().getParticipantIdentificationMethods().get(0).getIdentifier()); + assertEquals("inferred by author", interaction.getInteractorA().getParticipantIdentificationMethods().get(0).getText()); + } + + assertEquals(14, mitabIterator.getInteractionsProcessedCount()); + } + + @Test + public void readMitab28String() throws Exception { + + PsimiTabReader mitabReader = new PsimiTabReader(); + Collection interactions = mitabReader.read(TestHelper.MITAB28_LINE_HEADER); + + assertEquals(1,interactions.size()); + + BinaryInteraction firstBinaryInteraction = interactions.iterator().next(); + + // test biological effects + assertTrue(firstBinaryInteraction.getInteractorA().getBiologicalEffects().isEmpty()); + assertTrue(firstBinaryInteraction.getInteractorB().getBiologicalEffects().isEmpty()); + + // test causal regulatory mechanism + assertEquals("psi-mi", firstBinaryInteraction.getCausalRegulatoryMechanism().get(0).getDatabase()); + assertEquals("MI:2247", firstBinaryInteraction.getCausalRegulatoryMechanism().get(0).getIdentifier()); + assertEquals("transcriptional regulation", firstBinaryInteraction.getCausalRegulatoryMechanism().get(0).getText()); + + // test causal statement + assertEquals("psi-mi", firstBinaryInteraction.getCausalStatement().get(0).getDatabase()); + assertEquals("MI:2236", firstBinaryInteraction.getCausalStatement().get(0).getIdentifier()); + assertEquals("up-regulates activity", firstBinaryInteraction.getCausalStatement().get(0).getText()); + } + + @Test + public void iterateMitab28String() throws Exception { + + PsimiTabReader mitabReader = new PsimiTabReader(); + Iterator iterator = mitabReader.iterate(TestHelper.MITAB28_LINE_HEADER); + PsimiTabIterator mitabIterator = (PsimiTabIterator) iterator; + + while (mitabIterator.hasNext()) { + BinaryInteraction interaction = mitabIterator.next(); + + // test biological effects + assertTrue(interaction.getInteractorA().getBiologicalEffects().isEmpty()); + assertTrue(interaction.getInteractorB().getBiologicalEffects().isEmpty()); + + // test causal regulatory mechanism + assertEquals("psi-mi", interaction.getCausalRegulatoryMechanism().get(0).getDatabase()); + assertEquals("MI:2247", interaction.getCausalRegulatoryMechanism().get(0).getIdentifier()); + assertEquals("transcriptional regulation", interaction.getCausalRegulatoryMechanism().get(0).getText()); + + // test causal statement + assertEquals("psi-mi", interaction.getCausalStatement().get(0).getDatabase()); + assertEquals("MI:2236", interaction.getCausalStatement().get(0).getIdentifier()); + assertEquals("up-regulates activity", interaction.getCausalStatement().get(0).getText()); + } + + assertEquals(1, mitabIterator.getInteractionsProcessedCount()); + } + + @Test + public void readMitab28File() throws Exception { + + PsimiTabReader mitabReader = new PsimiTabReader(); + File file = TestHelper.getFileByResources("/mitab-samples/sampleFileMitab28.txt", PsimiTabReader.class); + Collection interactions = mitabReader.read(file); + + assertEquals(4, interactions.size()); + + BinaryInteraction firstBinaryInteraction = interactions.iterator().next(); + + // test biological effects + assertEquals("go", firstBinaryInteraction.getInteractorA().getBiologicalEffects().get(0).getDatabase()); + assertEquals("GO:0016301", firstBinaryInteraction.getInteractorA().getBiologicalEffects().get(0).getIdentifier()); + assertEquals("kinase activity", firstBinaryInteraction.getInteractorA().getBiologicalEffects().get(0).getText()); + assertEquals("go", firstBinaryInteraction.getInteractorB().getBiologicalEffects().get(0).getDatabase()); + assertEquals("GO:0016301", firstBinaryInteraction.getInteractorB().getBiologicalEffects().get(0).getIdentifier()); + assertEquals("kinase activity", firstBinaryInteraction.getInteractorB().getBiologicalEffects().get(0).getText()); + + // test causal regulatory mechanism + assertEquals("psi-mi", firstBinaryInteraction.getCausalRegulatoryMechanism().get(0).getDatabase()); + assertEquals("MI:2249", firstBinaryInteraction.getCausalRegulatoryMechanism().get(0).getIdentifier()); + assertEquals("post transcriptional regulation", firstBinaryInteraction.getCausalRegulatoryMechanism().get(0).getText()); + + // test causal statement + assertEquals("psi-mi", firstBinaryInteraction.getCausalStatement().get(0).getDatabase()); + assertEquals("MI:2235", firstBinaryInteraction.getCausalStatement().get(0).getIdentifier()); + assertEquals("up regulates", firstBinaryInteraction.getCausalStatement().get(0).getText()); + } + + @Test + public void iterateMitab28File() throws Exception { + + PsimiTabReader mitabReader = new PsimiTabReader(); + File file = TestHelper.getFileByResources("/mitab-samples/sampleFileMitab28.txt", PsimiTabReader.class); + + Iterator iterator = mitabReader.iterate(file); + PsimiTabIterator mitabIterator = (PsimiTabIterator) iterator; + + while (mitabIterator.hasNext()) { + BinaryInteraction interaction = mitabIterator.next(); + + // test causal regulatory mechanism + assertEquals("psi-mi", interaction.getCausalRegulatoryMechanism().get(0).getDatabase()); + assertEquals("MI:2249", interaction.getCausalRegulatoryMechanism().get(0).getIdentifier()); + assertEquals("post transcriptional regulation", interaction.getCausalRegulatoryMechanism().get(0).getText()); + } + + assertEquals(4, mitabIterator.getInteractionsProcessedCount()); } @Test diff --git a/psimitab-parser/src/test/java/psidev/psi/mi/tab/PsimiTabWriterTest.java b/psimitab-parser/src/test/java/psidev/psi/mi/tab/PsimiTabWriterTest.java index 173aa6ec1..d132eb191 100755 --- a/psimitab-parser/src/test/java/psidev/psi/mi/tab/PsimiTabWriterTest.java +++ b/psimitab-parser/src/test/java/psidev/psi/mi/tab/PsimiTabWriterTest.java @@ -44,6 +44,16 @@ private int lineCount(File file) throws IOException { return count; } + private void printlines(File file) throws IOException { + + BufferedReader in = new BufferedReader(new FileReader(file)); + String line; + + while ((line = in.readLine()) != null) { + System.out.println(line); + } + } + @Test public void writeToFile() throws Exception { File file = TestHelper.getFileByResources("/psi25-samples/11585365.xml", Xml2TabTest.class); @@ -242,7 +252,6 @@ public void readAndWriteMitab27WithHeader() throws ConverterException, IOExcepti File inputFile = TestHelper.getFileByResources("/mitab-samples/mitab_27_example.txt", PsimiTabReader.class); File outputFile = new File(inputFile.getAbsolutePath() + ".csv"); - PsimiTabReader firstReader = new psidev.psi.mi.tab.PsimiTabReader(); PsimiTabWriter writer = new psidev.psi.mi.tab.PsimiTabWriter(PsimiTabVersion.v2_7); @@ -279,7 +288,6 @@ public void compareTwoMITAB27() throws ConverterException, IOException { writer.write(interaction, outputFile); } - PsimiTabReader firstReader = new psidev.psi.mi.tab.PsimiTabReader(); PsimiTabReader secondReader = new psidev.psi.mi.tab.PsimiTabReader(); @@ -288,11 +296,78 @@ public void compareTwoMITAB27() throws ConverterException, IOException { while (iterator1.hasNext() && iterator2.hasNext()) { - BinaryInteraction interaction1 = iterator1.next(); BinaryInteraction interaction2 = iterator2.next(); assertEquals(interaction1, interaction2); + } + + outputFile.deleteOnExit(); + } + + @Test + public void readAndWriteMitab28WithHeader() throws IOException { + + File inputFile = TestHelper.getFileByResources("/mitab-samples/sampleFileMitab28.txt", PsimiTabReader.class); + File outputFile = new File(inputFile.getAbsolutePath() + ".txt"); + + if (outputFile.exists()) { + outputFile.delete(); + } + + PsimiTabReader mitabReader = new psidev.psi.mi.tab.PsimiTabReader(); + PsimiTabWriter mitabWriter = new psidev.psi.mi.tab.PsimiTabWriter(PsimiTabVersion.v2_8); + + Iterator iterator = mitabReader.iterate(inputFile); + PsimiTabIterator mitabIterator = (PsimiTabIterator) iterator; + + mitabWriter.writeMitabHeader(outputFile); + + while (mitabIterator.hasNext()) { + BinaryInteraction interaction = mitabIterator.next(); + mitabWriter.write(interaction, outputFile); + } + assertEquals(4, mitabIterator.getInteractionsProcessedCount()); + assertEquals(5, lineCount(outputFile)); // +1 for the header we wrote + + // printlines(outputFile); + + outputFile.deleteOnExit(); + } + + @Test + public void compareTwoMITAB28() throws IOException { + + File inputFile = TestHelper.getFileByResources("/mitab-samples/sampleFileMitab28.txt", PsimiTabReader.class); + File outputFile = new File(inputFile.getAbsolutePath() + ".txt"); + + if (outputFile.exists()) { + outputFile.delete(); + } + + PsimiTabReader mitabReader = new psidev.psi.mi.tab.PsimiTabReader(); + PsimiTabWriter mitabWriter = new psidev.psi.mi.tab.PsimiTabWriter(PsimiTabVersion.v2_8); + + Iterator iterator = mitabReader.iterate(inputFile); + PsimiTabIterator mitabIterator = (PsimiTabIterator) iterator; + + mitabWriter.writeMitabHeader(outputFile); + + while (mitabIterator.hasNext()) { + BinaryInteraction interaction = mitabIterator.next(); + mitabWriter.write(interaction, outputFile); + } + + PsimiTabReader firstReader = new psidev.psi.mi.tab.PsimiTabReader(); + PsimiTabReader secondReader = new psidev.psi.mi.tab.PsimiTabReader(); + + Iterator iterator1 = firstReader.iterate(inputFile); + Iterator iterator2 = secondReader.iterate(outputFile); + + while (iterator1.hasNext() && iterator2.hasNext()) { + BinaryInteraction interaction1 = iterator1.next(); + BinaryInteraction interaction2 = iterator2.next(); + assertEquals(interaction1, interaction2); } outputFile.deleteOnExit(); diff --git a/psimitab-parser/src/test/java/psidev/psi/mi/tab/RoundTripTest.java b/psimitab-parser/src/test/java/psidev/psi/mi/tab/RoundTripTest.java index 5f4e83a64..737e24fc8 100644 --- a/psimitab-parser/src/test/java/psidev/psi/mi/tab/RoundTripTest.java +++ b/psimitab-parser/src/test/java/psidev/psi/mi/tab/RoundTripTest.java @@ -1,9 +1,8 @@ package psidev.psi.mi.tab; import org.junit.Test; -import psidev.psi.mi.tab.io.PsimiTabReader; -import psidev.psi.mi.tab.io.PsimiTabWriter; import psidev.psi.mi.tab.model.BinaryInteraction; +import psidev.psi.mi.tab.model.builder.PsimiTabVersion; import java.io.BufferedWriter; import java.io.StringWriter; @@ -21,24 +20,82 @@ */ public class RoundTripTest { - public static final String NEW_LINE = System.getProperty("line.separator"); + @Test + public void roundTripMitab25() throws Exception { + + PsimiTabReader mitabReader = new PsimiTabReader(); + Collection interactions = mitabReader.read(TestHelper.MITAB25_2LINES_HEADER); + assertEquals(2, interactions.size()); + + // convert it back to a String + + PsimiTabWriter mitabWriter = new PsimiTabWriter(); + StringWriter stringWriter = new StringWriter(); + + BufferedWriter bw = new BufferedWriter(stringWriter); + mitabWriter.writeMitabHeader(bw); + mitabWriter.write(interactions, bw); + + assertNotNull(bw); - public static final String MITAB_2_LINE_WITH_HEADER = - "#ID(s) interactor A\tID(s) interactor B\tAlt. ID(s) interactor A\tAlt. ID(s) interactor B\tAlias(es) interactor A\tAlias(es) interactor B\tInteraction detection method(s)\tPublication 1st author(s)\tPublication Identifier(s)\tTaxid interactor A\tTaxid interactor B\tInteraction type(s)\tSource database(s)\tInteraction identifier(s)\tConfidence value(s)" + NEW_LINE + - "uniprotkb:Q8I0U6|intact:EBI-825868\tuniprotkb:Q8I0U6|intact:EBI-825868\tuniprotkb:PFA0110w(gene name)\tuniprotkb:PFA0110w(gene name)\tintact:MAL1P1.13\tintact:MAL1P1.13\tpsi-mi:\"MI:0398\"(two hybrid pooling)\tLacount et al. (2005)\tpubmed:16267556\ttaxid:36329(plaf7)\ttaxid:36329(plaf7)\tpsi-mi:\"MI:0218\"(physical interaction)\tpsi-mi:\"MI:0469\"(intact)\tintact:EBI-840450\t-" + NEW_LINE + - "uniprotkb:P23367\tuniprotkb:P06722\t-\t-\t-\t-\t-\t-\t-\ttaxid:562\ttaxid:562\t-\t-\t-\t-" + NEW_LINE; + assertEquals(TestHelper.MITAB25_2LINES_HEADER, stringWriter.getBuffer().toString()); + bw.close(); + } @Test - public void roundTrip() throws Exception { + public void roundTripMitab26() throws Exception { + PsimiTabReader mitabReader = new PsimiTabReader(); + Collection interactions = mitabReader.read(TestHelper.MITAB26_LINE_HEADER); + assertEquals(1, interactions.size()); - PsimiTabReader mitabReader = new psidev.psi.mi.tab.PsimiTabReader(); - Collection interactions = mitabReader.read(MITAB_2_LINE_WITH_HEADER); - assertEquals(2, interactions.size()); + // convert it back to a String + + PsimiTabWriter mitabWriter = new PsimiTabWriter(PsimiTabVersion.v2_6); + StringWriter stringWriter = new StringWriter(); + + BufferedWriter bw = new BufferedWriter(stringWriter); + mitabWriter.writeMitabHeader(bw); + mitabWriter.write(interactions, bw); + + assertNotNull(bw); + + assertEquals(TestHelper.MITAB26_LINE_HEADER, stringWriter.getBuffer().toString()); + + bw.close(); + } + + @Test + public void roundTripMitab27() throws Exception { + PsimiTabReader mitabReader = new PsimiTabReader(); + Collection interactions = mitabReader.read(TestHelper.MITAB27_LINE_HEADER); + assertEquals(1, interactions.size()); + + // convert it back to a String + + PsimiTabWriter mitabWriter = new PsimiTabWriter(PsimiTabVersion.v2_7); + StringWriter stringWriter = new StringWriter(); + + BufferedWriter bw = new BufferedWriter(stringWriter); + mitabWriter.writeMitabHeader(bw); + mitabWriter.write(interactions, bw); + + assertNotNull(bw); + + assertEquals(TestHelper.MITAB27_LINE_HEADER, stringWriter.getBuffer().toString()); + + bw.close(); + } + + @Test + public void roundTripMitab28() throws Exception { + PsimiTabReader mitabReader = new PsimiTabReader(); + Collection interactions = mitabReader.read(TestHelper.MITAB28_LINE_HEADER); + assertEquals(1, interactions.size()); // convert it back to a String - PsimiTabWriter mitabWriter = new psidev.psi.mi.tab.PsimiTabWriter(); + PsimiTabWriter mitabWriter = new PsimiTabWriter(PsimiTabVersion.v2_8); StringWriter stringWriter = new StringWriter(); BufferedWriter bw = new BufferedWriter(stringWriter); @@ -47,7 +104,7 @@ public void roundTrip() throws Exception { assertNotNull(bw); - assertEquals(MITAB_2_LINE_WITH_HEADER, stringWriter.getBuffer().toString()); + assertEquals(TestHelper.MITAB28_LINE_HEADER, stringWriter.getBuffer().toString()); bw.close(); } diff --git a/psimitab-parser/src/test/java/psidev/psi/mi/tab/TestHelper.java b/psimitab-parser/src/test/java/psidev/psi/mi/tab/TestHelper.java index c71919ec8..829e3c44c 100644 --- a/psimitab-parser/src/test/java/psidev/psi/mi/tab/TestHelper.java +++ b/psimitab-parser/src/test/java/psidev/psi/mi/tab/TestHelper.java @@ -30,12 +30,20 @@ */ public abstract class TestHelper { + private static final String NEW_LINE = System.getProperty("line.separator"); + + // MITAB 2.5 + private static final String MITAB25_HEADER = "#ID(s) interactor A\tID(s) interactor B\tAlt. ID(s) interactor A\t" + + "Alt. ID(s) interactor B\tAlias(es) interactor A\tAlias(es) interactor B\tInteraction detection method(s)\t" + + "Publication 1st author(s)\tPublication Identifier(s)\tTaxid interactor A\tTaxid interactor B\t" + + "Interaction type(s)\tSource database(s)\tInteraction identifier(s)\tConfidence value(s)"; + static final String TAB_11585365 = "uniprotkb:P23367 uniprotkb:P23367 gene name:mutL gene name:mutL locus name:b4170 locus name:b4170 MI:0014(adenylate cyclase) - pubmed:11585365 taxid:562(ecoli) taxid:562(ecoli) MI:0218(physical interaction) European Bioinformatics Institute:\"MI:0469\" - - -\n" + "uniprotkb:P23909 uniprotkb:P23909 gene name:mutS gene name:mutS gene name synonym:fdv|locus name:b2733 gene name synonym:fdv|locus name:b2733 MI:0014(adenylate cyclase) - pubmed:11585365 taxid:562(ecoli) taxid:562(ecoli) MI:0218(physical interaction) European Bioinformatics Institute:\"MI:0469\" - - -\n" + "uniprotkb:P06722 uniprotkb:P23367 gene name:mutH gene name:mutL gene name synonym:mutR|gene name synonym:prv|locus name:b2831 locus name:b4170 MI:0018(two hybrid)|MI:0014(adenylate cyclase) - pubmed:11585365 taxid:562(ecoli) taxid:562(ecoli) MI:0218(physical interaction) European Bioinformatics Institute:\"MI:0469\" - - -\n" + "uniprotkb:P23367 uniprotkb:P09184 gene name:mutL gene name:vsr locus name:b4170 locus name:b1960 MI:0018(two hybrid)|MI:0014(adenylate cyclase) - pubmed:11585365 taxid:562(ecoli) taxid:562(ecoli) MI:0218(physical interaction) European Bioinformatics Institute:\"MI:0469\" - - -\n"; - static final String HEADER_TAB_11585365 = "#ID interactor A ID interactor B Alt. ID interactor A Alt. ID interactor B Alias(es) interactor A Alias(es) interactor B Interaction detection method(s) Publication 1st author(s) Publication Identifier(s) Taxid interactor A Taxid interactor B Interaction type(s) Source database(s) Interaction identifier(s) Confidence value(s)\n" + static final String HEADER_TAB_11585365 = MITAB25_HEADER + NEW_LINE + "uniprotkb:P23367 uniprotkb:P06722 interpro:IPR003594|interpro:IPR002099|go:\"GO:0005515\"|intact:EBI-554913 interpro:IPR004230|uniprotkb:Q9R2X2|uniprotkb:Q9R3A8|uniprotkb:Q9R411|uniprotkb:Q9S6P5|uniprotkb:Q9S6P6|uniprotkb:Q9S6P7|go:\"GO:0005515\"|intact:EBI-545170 gene name:mutL|locus name:b4170 gene name:mutH|gene name synonym:mutR|gene name synonym:prv|locus name:b2831 adenylate cyclase:\"MI:0014\" - pubmed:11585365 taxid:562 taxid:562 physical interaction:\"MI:0218\" - - -\n" + "uniprotkb:P23367 uniprotkb:P06722 - - - - - - - taxid:562 taxid:562 - - - - -\n" + "uniprotkb:P23909 uniprotkb:P23909 interpro:IPR005748|interpro:IPR000432|interpro:IPR007860|interpro:IPR007696|interpro:IPR007861|interpro:IPR007695|uniprotkb:P71279|go:\"GO:0005515\"|intact:EBI-554920 interpro:IPR005748|interpro:IPR000432|interpro:IPR007860|interpro:IPR007696|interpro:IPR007861|interpro:IPR007695|uniprotkb:P71279|go:\"GO:0005515\"|intact:EBI-554920 gene name:mutS|gene name synonym:fdv|locus name:b2733 gene name:mutS|gene name synonym:fdv|locus name:b2733 adenylate cyclase:\"MI:0014\" - pubmed:11585365 taxid:562 taxid:562 physical interaction:\"MI:0218\" - - -\n" @@ -43,19 +51,64 @@ public abstract class TestHelper { + "uniprotkb:P23367 uniprotkb:P09184 interpro:IPR003594|interpro:IPR002099|go:\"GO:0005515\"|intact:EBI-554913 interpro:IPR004603|intact:EBI-765033 gene name:mutL|locus name:b4170 gene name:vsr|locus name:b1960 two hybrid:\"MI:0018\"|adenylate cyclase:\"MI:0014\" - pubmed:11585365 taxid:562 taxid:562 physical interaction:\"MI:0218\" - - -\n" + "uniprotkb:P06722 uniprotkb:P23367 interpro:IPR004230|uniprotkb:Q9R2X2|uniprotkb:Q9R3A8|uniprotkb:Q9R411|uniprotkb:Q9S6P5|uniprotkb:Q9S6P6|uniprotkb:Q9S6P7|go:\"GO:0005515\"|intact:EBI-545170 interpro:IPR003594|interpro:IPR002099|go:\"GO:0005515\"|intact:EBI-554913 gene name:mutH|gene name synonym:mutR|gene name synonym:prv|locus name:b2831 gene name:mutL|locus name:b4170 two hybrid:\"MI:0018\" - pubmed:11585365 taxid:562 taxid:562 physical interaction:\"MI:0218\" - - -\n"; - static final String NOHEADER_TAB_11585365 = "uniprotkb:P23367 uniprotkb:P06722 interpro:IPR003594|interpro:IPR002099|go:\"GO:0005515\"|intact:EBI-554913 interpro:IPR004230|uniprotkb:Q9R2X2|uniprotkb:Q9R3A8|uniprotkb:Q9R411|uniprotkb:Q9S6P5|uniprotkb:Q9S6P6|uniprotkb:Q9S6P7|go:\"GO:0005515\"|intact:EBI-545170 gene name:mutL|locus name:b4170 gene name:mutH|gene name synonym:mutR|gene name synonym:prv|locus name:b2831 adenylate cyclase:\"MI:0014\" - pubmed:11585365 taxid:562 taxid:562 physical interaction:\"MI:0218\" - - -\n" + static final String NOHEADER_TAB_11585365 = + "uniprotkb:P23367 uniprotkb:P06722 interpro:IPR003594|interpro:IPR002099|go:\"GO:0005515\"|intact:EBI-554913 interpro:IPR004230|uniprotkb:Q9R2X2|uniprotkb:Q9R3A8|uniprotkb:Q9R411|uniprotkb:Q9S6P5|uniprotkb:Q9S6P6|uniprotkb:Q9S6P7|go:\"GO:0005515\"|intact:EBI-545170 gene name:mutL|locus name:b4170 gene name:mutH|gene name synonym:mutR|gene name synonym:prv|locus name:b2831 adenylate cyclase:\"MI:0014\" - pubmed:11585365 taxid:562 taxid:562 physical interaction:\"MI:0218\" - - -\n" + "uniprotkb:P23367 uniprotkb:P06722 - - - - - - - taxid:562 taxid:562 - - - - -\n" + "uniprotkb:P23909 uniprotkb:P23909 interpro:IPR005748|interpro:IPR000432|interpro:IPR007860|interpro:IPR007696|interpro:IPR007861|interpro:IPR007695|uniprotkb:P71279|go:\"GO:0005515\"|intact:EBI-554920 interpro:IPR005748|interpro:IPR000432|interpro:IPR007860|interpro:IPR007696|interpro:IPR007861|interpro:IPR007695|uniprotkb:P71279|go:\"GO:0005515\"|intact:EBI-554920 gene name:mutS|gene name synonym:fdv|locus name:b2733 gene name:mutS|gene name synonym:fdv|locus name:b2733 adenylate cyclase:\"MI:0014\" - pubmed:11585365 taxid:562 taxid:562 physical interaction:\"MI:0218\" - - -\n" + "uniprotkb:P23367 uniprotkb:P23367 interpro:IPR003594|interpro:IPR002099|go:\"GO:0005515\"|intact:EBI-554913 interpro:IPR003594|interpro:IPR002099|go:\"GO:0005515\"|intact:EBI-554913 gene name:mutL|locus name:b4170 gene name:mutL|locus name:b4170 adenylate cyclase:\"MI:0014\" - pubmed:11585365 taxid:562 taxid:562 physical interaction:\"MI:0218\" - - -\n" + "uniprotkb:P23367 uniprotkb:P09184 interpro:IPR003594|interpro:IPR002099|go:\"GO:0005515\"|intact:EBI-554913 interpro:IPR004603|intact:EBI-765033 gene name:mutL|locus name:b4170 gene name:vsr|locus name:b1960 two hybrid:\"MI:0018\"|adenylate cyclase:\"MI:0014\" - pubmed:11585365 taxid:562 taxid:562 physical interaction:\"MI:0218\" - - -\n" + "uniprotkb:P06722 uniprotkb:P23367 interpro:IPR004230|uniprotkb:Q9R2X2|uniprotkb:Q9R3A8|uniprotkb:Q9R411|uniprotkb:Q9S6P5|uniprotkb:Q9S6P6|uniprotkb:Q9S6P7|go:\"GO:0005515\"|intact:EBI-545170 interpro:IPR003594|interpro:IPR002099|go:\"GO:0005515\"|intact:EBI-554913 gene name:mutH|gene name synonym:mutR|gene name synonym:prv|locus name:b2831 gene name:mutL|locus name:b4170 two hybrid:\"MI:0018\" - pubmed:11585365 taxid:562 taxid:562 physical interaction:\"MI:0218\" - - -\n"; - static final String TXT_11585365 = "#ID interactor A ID interactor B Alt. ID interactor A Alt. ID interactor B Alias(es) interactor A Alias(es) interactor B Interaction detection method(s) Publication 1st author(s) Publication Identifier(s) Taxid interactor A Taxid interactor B Interaction type(s) Source database(s) Interaction identifier(s) ConfidenceImpl value(s)\n" + static final String TXT_11585365 = MITAB25_HEADER + NEW_LINE + "uniprotkb:P23367|intact:EBI-554913 uniprotkb:P09184|intact:EBI-765033 intact:b4170|intact:JW4128 intact:b1960|intact:JW1943 uniprotkb:mutL uniprotkb:vsr MI:0014(adenylate cyclase)|MI:0018(2 hybrid) Mansour et al. (2001)|Mansour et al. (2001) pubmed:11585365|pubmed:11585365 taxid:83333(ecoli-2) taxid:83333(ecoli-2) MI:0218(physical interaction)|MI:0218(physical interaction) MI:0469(intact)|MI:0469(intact) intact:EBI-765062|intact:EBI-765039 -\n" + "uniprotkb:P23367|intact:EBI-554913 uniprotkb:P23367|intact:EBI-554913 intact:b4170|intact:JW4128 intact:b4170|intact:JW4128 uniprotkb:mutL uniprotkb:mutL MI:0014(adenylate cyclase) Mansour et al. (2001) pubmed:11585365 taxid:83333(ecoli-2) taxid:83333(ecoli-2) MI:0218(physical interaction) MI:0469(intact) intact:EBI-765068 -\n" + "uniprotkb:P23909|intact:EBI-554920 uniprotkb:P23909|intact:EBI-554920 intact:fdv|intact:b2733|intact:JW2703 intact:fdv|intact:b2733|intact:JW2703 uniprotkb:mutS uniprotkb:mutS MI:0014(adenylate cyclase) Mansour et al. (2001) pubmed:11585365 taxid:83333(ecoli-2) taxid:83333(ecoli-2) MI:0218(physical interaction) MI:0469(intact) intact:EBI-765077 -\n" + "uniprotkb:P23367|intact:EBI-554913 uniprotkb:P06722|intact:EBI-545170 intact:b4170|intact:JW4128 intact:mutR|intact:prv|intact:b2831|intact:JW2799 uniprotkb:mutL uniprotkb:mutH MI:0014(adenylate cyclase)|MI:0014(adenylate cyclase)|MI:0014(adenylate cyclase)|MI:0018(2 hybrid)|MI:0004(affinity chrom)|MI:0018(2 hybrid)|MI:0018(2 hybrid) Mansour et al. (2001)|Mansour et al. (2001)|Mansour et al. (2001)|Mansour et al. (2001)|Hall et al. (1999)|Hall et al. (1999)|Hall et al. (1999) pubmed:11585365|pubmed:11585365|pubmed:11585365|pubmed:11585365|pubmed:9880500|pubmed:9880500|pubmed:9880500 taxid:83333(ecoli-2) taxid:83333(ecoli-2) MI:0218(physical interaction)|MI:0218(physical interaction)|MI:0218(physical interaction)|MI:0218(physical interaction)|MI:0407(direct interaction)|MI:0218(physical interaction)|MI:0218(physical interaction) MI:0469(intact)|MI:0469(intact)|MI:0469(intact)|MI:0469(intact)|MI:0469(intact)|MI:0469(intact)|MI:0469(intact) intact:EBI-765171|intact:EBI-765153|intact:EBI-765065|intact:EBI-765042|intact:EBI-761711|intact:EBI-762624|intact:EBI-761694 -\n"; + static final String MITAB25_2LINES_HEADER = MITAB25_HEADER + NEW_LINE + + "uniprotkb:P23367|intact:EBI-825868\tuniprotkb:P06722|intact:EBI-825868\tuniprotkb:PFA0110w(gene name)\tuniprotkb:PFA0110w(gene name)\tintact:MAL1P1.13\tintact:MAL1P1.13\tpsi-mi:\"MI:0398\"(two hybrid pooling)\tLacount et al. (2005)\tpubmed:16267556\ttaxid:36329(plaf7)\ttaxid:36329(plaf7)\tpsi-mi:\"MI:0218\"(physical interaction)\tpsi-mi:\"MI:0469\"(intact)\tintact:EBI-840450\t-\n" + + "uniprotkb:P23367\tuniprotkb:P06722\t-\t-\t-\t-\t-\t-\t-\ttaxid:562\ttaxid:562\t-\t-\t-\t-\n"; + + // MITAB 2.6 + private static final String MITAB26_HEADER = MITAB25_HEADER + "\t" + + "Expansion method(s)\tBiological role(s) interactor A\tBiological role(s) interactor B\t" + + "Experimental role(s) interactor A\tExperimental role(s) interactor B\t" + + "Type(s) interactor A\tType(s) interactor B\tXref(s) interactor A\tXref(s) interactor B\t" + + "Interaction Xref(s)\tAnnotation(s) interactor A\tAnnotation(s) interactor B\tInteraction annotation(s)\t" + + "Host organism(s)\tInteraction parameter(s)\tCreation date\tUpdate date\tChecksum(s) interactor A\t" + + "Checksum(s) interactor B\tInteraction Checksum(s)\tNegative"; + + private static final String MITAB26_LINE = "uniprotkb:Q9Y5J7|intact:EBI-123456\tuniprotkb:Q9Y584\tuniprotkb:TIMM9(gene name)\tuniprotkb:TIMM22(gene name)\t" + + "uniprotkb:TIM9\tuniprotkb:TEX4\t" + + "psi-mi:\"MI:0006\"(anti bait coip)\tPeter et al (2010)\tpubmed:14726512\ttaxid:9606(human)\ttaxid:9606(human)\t" + + "psi-mi:\"MI:0218\"(physical interaction)\tpsi-mi:\"MI:0469\"(intact)\tintact:EBI-1200556\t-\t" + + "psi-mi:\"MI:xxxx\"(spoke)\tpsi-mi:\"MI:0499\"(unspecified role)\tpsi-mi:\"MI:0499\"(unspecified role)\t" + + "psi-mi:\"MI:0497\"(bait)\tpsi-mi:\"MI:0498\"(prey)\tpsi-mi:\"MI:0326\"(protein)\tpsi-mi:\"MI:0326\"(protein)\t" + + "interpro:IPR004046(GST_C)\t" + + "go:\"GO:0004709\"(\"F:MAP kinase kinase kinase act\")\tgo:\"GO:xxxxx\"\t" + + "caution:AnnotA\tcaution:AnnotB\tdataset:Test\ttaxid:9606(human-293t)\tkd:2.0\t2009/03/09\t2010/03/30\t" + + "seguid:checksumA\tseguid:checksumB\tseguid:checksumI\tfalse"; + static final String MITAB26_LINE_HEADER = MITAB26_HEADER + NEW_LINE + MITAB26_LINE + NEW_LINE; + + // MITAB 2.7 + private static final String MITAB27_HEADER = MITAB26_HEADER + "\t" + + "Feature(s) interactor A\tFeature(s) interactor B\t" + + "Stoichiometry(s) interactor A\tStoichiometry(s) interactor B\t" + + "Identification method participant A\tIdentification method participant B"; + + private static final String MITAB27_LINE = MITAB26_LINE + "\ttag:?-?\t-\t-\t-\tpsi-mi:\"MI:0102\"(sequence tag identification)\tpsi-mi:\"MI:0102\"(sequence tag identification)"; + + static final String MITAB27_LINE_HEADER = MITAB27_HEADER + NEW_LINE + MITAB27_LINE + NEW_LINE; + + // MITAB 2.8 + private static final String MITAB28_HEADER = MITAB27_HEADER + "\t" + + "Biological effect(s) interactor A\tBiological effect(s) interactor B\t" + + "Causal regulatory mechanism\tCausal statement"; + + private static final String MITAB28_LINE = MITAB27_LINE + "\t-\t-\tpsi-mi:\"MI:2247\"(transcriptional regulation)\tpsi-mi:\"MI:2236\"(up-regulates activity)"; + + static final String MITAB28_LINE_HEADER = MITAB28_HEADER + NEW_LINE + MITAB28_LINE + NEW_LINE; + public static File getFileByResources(String fileName, Class clazz) throws UnsupportedEncodingException { String strFile = clazz.getResource(fileName).getFile(); return new File(URLDecoder.decode(strFile, "utf-8")); diff --git a/psimitab-parser/src/test/java/psidev/psi/mi/tab/model/ParameterImplTest.java b/psimitab-parser/src/test/java/psidev/psi/mi/tab/model/ParameterImplTest.java index d4530991f..6a5f2abc2 100644 --- a/psimitab-parser/src/test/java/psidev/psi/mi/tab/model/ParameterImplTest.java +++ b/psimitab-parser/src/test/java/psidev/psi/mi/tab/model/ParameterImplTest.java @@ -23,8 +23,7 @@ public void testParameterOnlyFactor() throws Exception { assertEquals(parameter.getUncertainty(), Double.valueOf(0.0)); assertEquals(parameter.getUnit(), "molar"); assertEquals(parameter.getType(), "Kd"); - - + assertEquals(parameter.getValue(), "4.0"); } @Test @@ -38,8 +37,7 @@ public void testParameterFactorAndBase() throws Exception { assertEquals(parameter.getUncertainty(), Double.valueOf(0.0)); assertEquals(parameter.getUnit(), "molar"); assertEquals(parameter.getType(), "Kd"); - - + assertEquals(parameter.getValue(), "4.0x2"); } @Test @@ -53,7 +51,7 @@ public void testParameterFactorBaseAndExponent() throws Exception { assertEquals(parameter.getUncertainty(), Double.valueOf(0.0)); assertEquals(parameter.getUnit(), "molar"); assertEquals(parameter.getType(), "Kd"); - + assertEquals(parameter.getValue(), "4.0x3^2"); } @Test @@ -67,7 +65,7 @@ public void testParameterAll() throws Exception { assertEquals(parameter.getUncertainty(), Double.valueOf(0.3)); assertEquals(parameter.getUnit(), "molar"); assertEquals(parameter.getType(), "Kd"); - + assertEquals(parameter.getValue(), "4.0x2^5 ~0.3"); } @Test @@ -81,8 +79,7 @@ public void testParameterOnlyNegFactor() throws Exception { assertEquals(parameter.getUncertainty(), Double.valueOf(0.0)); assertEquals(parameter.getUnit(), "molar"); assertEquals(parameter.getType(), "Kd"); - - + assertEquals(parameter.getValue(), "-4.0"); } @Test @@ -96,8 +93,7 @@ public void testParameterNegFactorAndBase() throws Exception { assertEquals(parameter.getUncertainty(), Double.valueOf(0.0)); assertEquals(parameter.getUnit(), "molar"); assertEquals(parameter.getType(), "Kd"); - - + assertEquals(parameter.getValue(), "-4.0x-2"); } @Test @@ -111,7 +107,7 @@ public void testParameterNegFactorBaseAndExponent() throws Exception { assertEquals(parameter.getUncertainty(), Double.valueOf(0.0)); assertEquals(parameter.getUnit(), "molar"); assertEquals(parameter.getType(), "Kd"); - + assertEquals(parameter.getValue(), "-4.0x-12^-2"); } @Test @@ -125,7 +121,54 @@ public void testParameterAllNeg() throws Exception { assertEquals(parameter.getUncertainty(), Double.valueOf(-0.3)); assertEquals(parameter.getUnit(), "molar"); assertEquals(parameter.getType(), "Kd"); + assertEquals(parameter.getValue(), "-4.0x-12^-2 ~-0.3"); + } + + @Test + public void testbaseEqualTo1() throws Exception { + + Parameter parameter = new ParameterImpl("Kd", "4.5x1^13 ~-0.2", "molar"); + + assertEquals(parameter.getFactor(), Double.valueOf(4.5)); + assertEquals(parameter.getBase(), Integer.valueOf(1)); + assertEquals(parameter.getExponent(), Integer.valueOf(13)); + assertEquals(parameter.getUncertainty(), Double.valueOf(-0.2)); + assertEquals(parameter.getUnit(), "molar"); + assertEquals(parameter.getType(), "Kd"); + assertEquals(parameter.getValue(), "4.5 ~-0.2"); + } + + @Test(expected = IllegalArgumentException.class) + public void testbaseEqualTo0() throws Exception { + new ParameterImpl("Kd", "4.5x0^13 ~-0.2", "molar"); + } + + @Test + public void testExponentEqualTo1() throws Exception { + + Parameter parameter = new ParameterImpl("Kd", "4.5x2^1 ~-0.2", "molar"); + + assertEquals(parameter.getFactor(), Double.valueOf(4.5)); + assertEquals(parameter.getBase(), Integer.valueOf(2)); + assertEquals(parameter.getExponent(), Integer.valueOf(1)); + assertEquals(parameter.getUncertainty(), Double.valueOf(-0.2)); + assertEquals(parameter.getUnit(), "molar"); + assertEquals(parameter.getType(), "Kd"); + assertEquals(parameter.getValue(), "4.5x2 ~-0.2"); + } + @Test + public void testExponentEqualTo0() throws Exception { + + Parameter parameter = new ParameterImpl("Kd", "4.5x2^0 ~-0.2", "molar"); + + assertEquals(parameter.getFactor(), Double.valueOf(4.5)); + assertEquals(parameter.getBase(), Integer.valueOf(2)); + assertEquals(parameter.getExponent(), Integer.valueOf(0)); + assertEquals(parameter.getUncertainty(), Double.valueOf(-0.2)); + assertEquals(parameter.getUnit(), "molar"); + assertEquals(parameter.getType(), "Kd"); + assertEquals(parameter.getValue(), "4.5 ~-0.2"); } @Test @@ -151,7 +194,5 @@ public void testParameterDifferentConstructor() throws Exception { assertEquals(parameterTwo.getValue(),"1.62x10^-8 ~0.01"); assertEquals(parameterOne, parameterTwo); - - } } diff --git a/psimitab-parser/src/test/java/psidev/psi/mi/tab/model/builder/MitabParserUtilsTest.java b/psimitab-parser/src/test/java/psidev/psi/mi/tab/model/builder/MitabParserUtilsTest.java index a30edcbba..9657c3e4d 100644 --- a/psimitab-parser/src/test/java/psidev/psi/mi/tab/model/builder/MitabParserUtilsTest.java +++ b/psimitab-parser/src/test/java/psidev/psi/mi/tab/model/builder/MitabParserUtilsTest.java @@ -75,7 +75,7 @@ public void quoteAwareSplit2() throws Exception { @Test public void testBuildBinaryInteraction() throws Exception { - //TODO Update the line with one that has all the fields + String[] line = { "innatedb:IDBG-40102", "innatedb:IDBG-4279", @@ -89,38 +89,40 @@ public void testBuildBinaryInteraction() throws Exception { "taxid:9606(Human)", "taxid:9606(Human)", "psi-mi:\"MI:0915\"(physical association)", -// "psi-mi:\"MI:0974(innatedb)\"(innatedb)", TODO Report this problem "psi-mi:\"MI:0974\"(innatedb)", "innatedb:IDB-113260", -// "lpr:2|hpr:2|np:1|", "lpr:2|", - "-", + "psi-mi:\"MI:1060\"(spoke expansion)", "psi-mi:\"MI:0499\"(unspecified role)", "psi-mi:\"MI:0499\"(unspecified role)", "psi-mi:\"MI:0498\"(\"prey\")", "psi-mi:\"MI:0496\"(\"bait\")", "psi-mi:\"MI:0326\"(protein)", "psi-mi:\"MI:0326\"(protein)", - "-", - "-", - "-", - "-", - "-", - "-", + "uniprotkb:D3DRX9(secondary-ac)", + "refseq:NP_001447.2", + "intact:EBI-5627041(see-also)|imex:IM-17229-3(imex-primary)", + "comment:\"sequence not available in uniprotKb\"", + "anti-bacterial", + "curation depth:imex curation", "taxid:9606", - "-", + "kd:1.36x10^-6(molar)", "2008/03/30", "2008/03/30", - "-", - "-", - "-", + "crc64:6C1A07041DF50142", + "crc64:2F6FEFCDF2C80457", + "intact-crc:08C4486B755C70C0", "false", - "-", - "-", - "-", - "-", + "necessary binding region:2171-2647", + "necessary binding region:757-800", + "2", + "2", "psi-mi:\"MI:0363\"(inferred by author)", - "psi-mi:\"MI:0363\"(inferred by author)"}; + "psi-mi:\"MI:0363\"(inferred by author)", + "go:\"GO:0016301\"(kinase activity)", + "go:\"GO:0016301\"(kinase activity)", + "psi-mi:\"MI:2249\"(post transcriptional regulation)", + "psi-mi:\"MI:2240\"(down regulates)"}; BinaryInteraction interactionBuilt = MitabParserUtils.buildBinaryInteraction(line); @@ -129,7 +131,7 @@ public void testBuildBinaryInteraction() throws Exception { BinaryInteraction interactionToCompare = new BinaryInteractionImpl(A, B); - + // MITAB 2.5 A.setIdentifiers(new ArrayList( Collections.singletonList(new CrossReferenceImpl("innatedb", "IDBG-40102")))); B.setIdentifiers(new ArrayList( @@ -184,13 +186,13 @@ public void testBuildBinaryInteraction() throws Exception { List confidences = new ArrayList() {{ add(new ConfidenceImpl("lpr", "2")); -// add(new ConfidenceImpl("hpr", "2")); -// add(new ConfidenceImpl("np", "1")); }}; interactionToCompare.setConfidenceValues(confidences); -// interactionToCompare.setComplexExpansion(); + // MITAB 2.6 + interactionToCompare.setComplexExpansion(new ArrayList( + Collections.singletonList(new CrossReferenceImpl("psi-mi", "MI:1060", "spoke expansion")))); A.setBiologicalRoles(new ArrayList( Collections.singletonList(new CrossReferenceImpl("psi-mi", "MI:0499", "unspecified role")))); @@ -205,12 +207,29 @@ public void testBuildBinaryInteraction() throws Exception { B.setInteractorTypes(new ArrayList( Collections.singletonList(new CrossReferenceImpl("psi-mi", "MI:0326", "protein")))); -// A.setXrefs(); -// B.setXrefs(); -// interactionToCompare.setXrefs(); -// A.setAnnotations(); -// B.setAnnotations(); -// interactionToCompare.setAnnotations(); + A.setXrefs(new ArrayList( + Collections.singletonList(new CrossReferenceImpl("uniprotkb", "D3DRX9", "secondary-ac")))); + B.setXrefs(new ArrayList( + Collections.singletonList(new CrossReferenceImpl("refseq", "NP_001447.2")))); + ArrayList xrefs = new ArrayList(); + xrefs.add(new CrossReferenceImpl("intact", "EBI-5627041", "see-also")); + xrefs.add(new CrossReferenceImpl("imex", "IM-17229-3", "imex-primary")); + interactionToCompare.setXrefs(xrefs); + + List annotationsA = new ArrayList() {{ + add(new AnnotationImpl("comment", "sequence not available in uniprotKb")); + }}; + A.setAnnotations(annotationsA); + + List annotationsB = new ArrayList() {{ + add(new AnnotationImpl("anti-bacterial")); + }}; + B.setAnnotations(annotationsB); + + List annotations = new ArrayList() {{ + add(new AnnotationImpl("curation depth", "imex curation")); + }}; + interactionToCompare.setAnnotations(annotations); Organism hostOrganism = new OrganismImpl(); hostOrganism.setIdentifiers(new ArrayList( @@ -218,7 +237,10 @@ public void testBuildBinaryInteraction() throws Exception { interactionToCompare.setHostOrganism(hostOrganism); -// interactionToCompare.setParameters(); + List parameters = new ArrayList() {{ + add(new ParameterImpl("kd", "1.36x10^-6", "molar")); + }}; + interactionToCompare.setParameters(parameters); DateFormat formatter = new SimpleDateFormat("yyyy/MM/dd"); Date date = formatter.parse("2008/03/30"); @@ -228,22 +250,46 @@ public void testBuildBinaryInteraction() throws Exception { interactionToCompare.setUpdateDate(new ArrayList( Collections.singletonList(date))); -// A.setChecksums(); -// B.setChecksums(); -// interactionToCompare.setChecksums(); + A.setChecksums(new ArrayList( + Collections.singletonList(new ChecksumImpl("crc64", "6C1A07041DF50142")))); + B.setChecksums(new ArrayList( + Collections.singletonList(new ChecksumImpl("crc64", "2F6FEFCDF2C80457")))); + interactionToCompare.setChecksums(new ArrayList( + Collections.singletonList(new ChecksumImpl("intact-crc", "08C4486B755C70C0")))); interactionToCompare.setNegativeInteraction(false); -// A.setFeatures(); -// B.setFeatures(); -// A.setStoichiometry(); -// B.setStoichiometry(); + // MITAB 2.7 + ArrayList rangesA = new ArrayList(); + rangesA.add("2171-2647"); + ArrayList rangesB = new ArrayList(); + rangesB.add("757-800"); + A.setFeatures(new ArrayList( + Collections.singletonList(new FeatureImpl("necessary binding region", rangesA)))); + B.setFeatures(new ArrayList( + Collections.singletonList(new FeatureImpl("necessary binding region", rangesB)))); + + A.setStoichiometry(new ArrayList( + Collections.singletonList(new Integer("2")))); + B.setStoichiometry(new ArrayList( + Collections.singletonList(new Integer("2")))); A.setParticipantIdentificationMethods(new ArrayList( Collections.singletonList(new CrossReferenceImpl("psi-mi", "MI:0363", "inferred by author")))); B.setParticipantIdentificationMethods(new ArrayList( Collections.singletonList(new CrossReferenceImpl("psi-mi", "MI:0363", "inferred by author")))); + // MITAB 2.8 + A.setBiologicalEffects(new ArrayList( + Collections.singletonList(new CrossReferenceImpl("go", "GO:0016301", "kinase activity")))); + B.setBiologicalEffects(new ArrayList( + Collections.singletonList(new CrossReferenceImpl("go", "GO:0016301", "kinase activity")))); + + interactionToCompare.setCausalRegulatoryMechanism(new ArrayList( + Collections.singletonList(new CrossReferenceImpl("psi-mi", "MI:2249", "post transcriptional regulation")))); + interactionToCompare.setCausalStatement(new ArrayList( + Collections.singletonList(new CrossReferenceImpl("psi-mi", "MI:2240", "down regulates")))); + Assert.assertEquals(A, A); Assert.assertEquals(B, B); Assert.assertEquals(A, interactionBuilt.getInteractorA()); @@ -355,35 +401,111 @@ public void testExtendFormat() throws Exception { "psi-mi:\"MI:0363\"(inferred by author)", "psi-mi:\"MI:0363\"(inferred by author)"}; + String[] line28 = { + "innatedb:IDBG-40102", + "innatedb:IDBG-4279", + "ensembl:ENSG00000175104", + "ensembl:ENSG00000141655", + "uniprotkb:Q9Y4K3|uniprotkb:TRAF6_HUMAN|refseq:NM_145803|refseq:NM_004620|refseq:NP_004611|refseq:NP_665802|hgnc:TNFRSF11A(display_short)", + "uniprotkb:Q9Y6Q6|uniprotkb:TNR11_HUMAN|refseq:NM_003839|refseq:NP_003830|hgnc:TNFRSF11A(display_short)", + "psi-mi:\"MI:0007\"(\"anti tag coimmunoprecipitation\")", + "Arron et al. (2001)", + "pubmed:11406619", + "taxid:9606(Human)", + "taxid:9606(Human)", + "psi-mi:\"MI:0915\"(physical association)", + "psi-mi:\"MI:0974\"(innatedb)", + "innatedb:IDB-113260", + "lpr:2|hpr:2|np:1|", + "psi-mi:\"MI:1060\"(spoke expansion)", + "psi-mi:\"MI:0499\"(unspecified role)", + "psi-mi:\"MI:0499\"(unspecified role)", + "psi-mi:\"MI:0498\"(\"prey\")", + "psi-mi:\"MI:0496\"(\"bait\")", + "psi-mi:\"MI:0326\"(protein)", + "psi-mi:\"MI:0326\"(protein)", + "uniprotkb:D3DRX9(secondary-ac)", + "refseq:NP_001447.2", + "intact:EBI-5627041(see-also)|imex:IM-17229-3(imex-primary)", + "-", + "-", + "curation depth:imex curation", + "taxid:9606", + "kd:1.36x10^-6(molar)", + "2008/03/30", + "2008/03/30", + "crc64:6C1A07041DF50142", + "crc64:2F6FEFCDF2C80457", + "intact-crc:08C4486B755C70C0", + "false", + "necessary binding region:2171-2647", + "necessary binding region:757-800", + "-", + "-", + "psi-mi:\"MI:0363\"(inferred by author)", + "psi-mi:\"MI:0363\"(inferred by author)", + "go:\"GO:0016301\"(kinase activity)", + "go:\"GO:0016301\"(kinase activity)", + "psi-mi:\"MI:2249\"(post transcriptional regulation)", + "psi-mi:\"MI:2240\"(down regulates)"}; int numColumns2_5 = PsimiTabVersion.v2_5.getNumberOfColumns(); int numColumns2_6 = PsimiTabVersion.v2_6.getNumberOfColumns(); int numColumns2_7 = PsimiTabVersion.v2_7.getNumberOfColumns(); + int numColumns2_8 = PsimiTabVersion.v2_8.getNumberOfColumns(); - String[] result1 = MitabParserUtils.extendFormat(line27, numColumns2_5); - Assert.assertEquals(numColumns2_7, result1.length); + String[] result1 = MitabParserUtils.extendFormat(line28, numColumns2_5); + Assert.assertEquals(numColumns2_8, result1.length); - String[] result2 = MitabParserUtils.extendFormat(line26, numColumns2_5); - Assert.assertEquals(numColumns2_6, result2.length); + String[] result2 = MitabParserUtils.extendFormat(line27, numColumns2_5); + Assert.assertEquals(numColumns2_7, result2.length); - String[] result3 = MitabParserUtils.extendFormat(line25, numColumns2_5); - Assert.assertEquals(numColumns2_5, result3.length); + String[] result3 = MitabParserUtils.extendFormat(line26, numColumns2_5); + Assert.assertEquals(numColumns2_6, result3.length); - String[] result4 = MitabParserUtils.extendFormat(line25, numColumns2_6); - Assert.assertEquals(numColumns2_6, result4.length); + String[] result4 = MitabParserUtils.extendFormat(line25, numColumns2_5); + Assert.assertEquals(numColumns2_5, result4.length); - String[] result5 = MitabParserUtils.extendFormat(line25, numColumns2_7); - Assert.assertEquals(numColumns2_7, result5.length); + String[] result5 = MitabParserUtils.extendFormat(line28, numColumns2_6); + Assert.assertEquals(numColumns2_8, result5.length); - String[] result6 = MitabParserUtils.extendFormat(line26, numColumns2_7); + String[] result6 = MitabParserUtils.extendFormat(line27, numColumns2_6); Assert.assertEquals(numColumns2_7, result6.length); + String[] result7 = MitabParserUtils.extendFormat(line26, numColumns2_6); + Assert.assertEquals(numColumns2_6, result7.length); + + String[] result8 = MitabParserUtils.extendFormat(line25, numColumns2_6); + Assert.assertEquals(numColumns2_6, result8.length); + + String[] result9 = MitabParserUtils.extendFormat(line28, numColumns2_7); + Assert.assertEquals(numColumns2_8, result9.length); + + String[] result10 = MitabParserUtils.extendFormat(line27, numColumns2_7); + Assert.assertEquals(numColumns2_7, result10.length); + + String[] result11 = MitabParserUtils.extendFormat(line26, numColumns2_7); + Assert.assertEquals(numColumns2_7, result11.length); + + String[] result12 = MitabParserUtils.extendFormat(line25, numColumns2_7); + Assert.assertEquals(numColumns2_7, result12.length); + + String[] result13 = MitabParserUtils.extendFormat(line28, numColumns2_8); + Assert.assertEquals(numColumns2_8, result13.length); + + String[] result14 = MitabParserUtils.extendFormat(line27, numColumns2_8); + Assert.assertEquals(numColumns2_8, result14.length); + + String[] result15 = MitabParserUtils.extendFormat(line26, numColumns2_8); + Assert.assertEquals(numColumns2_8, result15.length); + + String[] result16 = MitabParserUtils.extendFormat(line25, numColumns2_8); + Assert.assertEquals(numColumns2_8, result16.length); } @Test public void testIntraInterMoleculeInteraction() throws Exception { - //TODO Change for a real example String[] interactorANull ={ "-", "innatedb:IDBG-4279", @@ -426,7 +548,11 @@ public void testIntraInterMoleculeInteraction() throws Exception { "-", "2", "-", - "psi-mi:\"MI:0363\"(inferred by author)"}; + "psi-mi:\"MI:0363\"(inferred by author)", + "-", + "go:\"GO:0016301\"(kinase activity)", + "psi-mi:\"MI:2249\"(post transcriptional regulation)", + "psi-mi:\"MI:2240\"(down regulates)"}; String[] interactorBNull = { "innatedb:IDBG-40102", @@ -470,7 +596,11 @@ public void testIntraInterMoleculeInteraction() throws Exception { "2", "-", "psi-mi:\"MI:0363\"(inferred by author)", - "-"}; + "-", + "go:\"GO:0016301\"(kinase activity)", + "-", + "psi-mi:\"MI:2249\"(post transcriptional regulation)", + "psi-mi:\"MI:2240\"(down regulates)"}; BinaryInteraction interactionABuilt = MitabParserUtils.buildBinaryInteraction(interactorBNull); BinaryInteraction interactionBBuilt = MitabParserUtils.buildBinaryInteraction(interactorANull); @@ -518,6 +648,11 @@ public void testIntraInterMoleculeInteraction() throws Exception { interactionANullToCompare.setNegativeInteraction(false); + interactionANullToCompare.setCausalRegulatoryMechanism(new ArrayList( + Collections.singletonList(new CrossReferenceImpl("psi-mi","MI:2249", "post transcriptional regulation")))); + interactionANullToCompare.setCausalStatement(new ArrayList( + Collections.singletonList(new CrossReferenceImpl("psi-mi","MI:2240", "down regulates")))); + Interactor AOK = interactionABuilt.getInteractorA(); Interactor BNull = null; @@ -549,6 +684,11 @@ public void testIntraInterMoleculeInteraction() throws Exception { interactionBNullToCompare.setNegativeInteraction(false); + interactionBNullToCompare.setCausalRegulatoryMechanism(new ArrayList( + Collections.singletonList(new CrossReferenceImpl("psi-mi","MI:2249", "post transcriptional regulation")))); + interactionBNullToCompare.setCausalStatement(new ArrayList( + Collections.singletonList(new CrossReferenceImpl("psi-mi","MI:2240", "down regulates")))); + Interactor AEmpty = new Interactor(); BinaryInteraction interactionAEmptyToCompare = new BinaryInteractionImpl(AEmpty, BOK); @@ -567,6 +707,5 @@ public void testIntraInterMoleculeInteraction() throws Exception { //It is not the same when you have an empty interaction than a null interactor Assert.assertNotSame(interactionBBuilt,interactionBEmptyToCompare); Assert.assertEquals(interactionBBuilt,interactionANullToCompare); - } } diff --git a/psimitab-parser/src/test/java/psidev/psi/mi/tab/model/builder/MitabWriterUtilsTest.java b/psimitab-parser/src/test/java/psidev/psi/mi/tab/model/builder/MitabWriterUtilsTest.java index c94396f24..b7d32224a 100644 --- a/psimitab-parser/src/test/java/psidev/psi/mi/tab/model/builder/MitabWriterUtilsTest.java +++ b/psimitab-parser/src/test/java/psidev/psi/mi/tab/model/builder/MitabWriterUtilsTest.java @@ -25,7 +25,6 @@ public class MitabWriterUtilsTest { public void testBuildHeaderException() throws Exception { MitabWriterUtils.buildHeader(null); - } @@ -39,6 +38,9 @@ public void testBuildLine() throws Exception { String result3 = MitabWriterUtils.buildLine(buildInteraction(), PsimiTabVersion.v2_7); Assert.assertEquals(result3, MitabWriterUtils.createMitabLine(line27, PsimiTabVersion.v2_7)); + + String result4 = MitabWriterUtils.buildLine(buildInteraction(), PsimiTabVersion.v2_8); + Assert.assertEquals(result4, MitabWriterUtils.createMitabLine(line28, PsimiTabVersion.v2_8)); } @Test(expected = IllegalArgumentException.class) @@ -48,12 +50,11 @@ public void testBuildLineException() throws Exception { @Test public void testIntraIterMoleculeInteractionLine() throws Exception { - String result1 = MitabWriterUtils.buildLine(buildIntraIterMoleculeAInteraction(), PsimiTabVersion.v2_7); - Assert.assertEquals(result1, MitabWriterUtils.createMitabLine(interactorBNull, PsimiTabVersion.v2_7)); - - String result2 = MitabWriterUtils.buildLine(buildIntraIterMoleculeBInteraction(), PsimiTabVersion.v2_7); - Assert.assertEquals(result2, MitabWriterUtils.createMitabLine(interactorANull, PsimiTabVersion.v2_7)); + String result1 = MitabWriterUtils.buildLine(buildIntraIterMoleculeAInteraction(), PsimiTabVersion.v2_8); + Assert.assertEquals(result1, MitabWriterUtils.createMitabLine(interactorBNull, PsimiTabVersion.v2_8)); + String result2 = MitabWriterUtils.buildLine(buildIntraIterMoleculeBInteraction(), PsimiTabVersion.v2_8); + Assert.assertEquals(result2, MitabWriterUtils.createMitabLine(interactorANull, PsimiTabVersion.v2_8)); } @@ -91,26 +92,26 @@ public void testIntraIterMoleculeInteractionLine() throws Exception { "psi-mi:\"MI:0974\"(innatedb)", "innatedb:IDB-113260", "lpr:2|hpr:2|np:1", - "-", + "psi-mi:\"MI:1060\"(spoke expansion)", "psi-mi:\"MI:0499\"(unspecified role)", "psi-mi:\"MI:0499\"(unspecified role)", "psi-mi:\"MI:0498\"(prey)", "psi-mi:\"MI:0496\"(bait)", "psi-mi:\"MI:0326\"(protein)", "psi-mi:\"MI:0326\"(protein)", + "uniprotkb:D3DRX9(secondary-ac)", + "refseq:NP_001447.2", + "intact:EBI-5627041(see-also)|imex:IM-17229-3(imex-primary)", "-", "-", - "-", - "-", - "-", - "-", + "curation depth:imex curation", "taxid:9606", - "-", + "kd:1.36x10^-6(molar)", "2008/03/30", "2008/03/30", - "-", - "-", - "-", + "crc64:6C1A07041DF50142", + "crc64:2F6FEFCDF2C80457", + "intact-crc:08C4486B755C70C0", "false" }; @@ -130,35 +131,85 @@ public void testIntraIterMoleculeInteractionLine() throws Exception { "psi-mi:\"MI:0974\"(innatedb)", "innatedb:IDB-113260", "lpr:2|hpr:2|np:1", - "-", + "psi-mi:\"MI:1060\"(spoke expansion)", "psi-mi:\"MI:0499\"(unspecified role)", "psi-mi:\"MI:0499\"(unspecified role)", "psi-mi:\"MI:0498\"(prey)", "psi-mi:\"MI:0496\"(bait)", "psi-mi:\"MI:0326\"(protein)", "psi-mi:\"MI:0326\"(protein)", + "uniprotkb:D3DRX9(secondary-ac)", + "refseq:NP_001447.2", + "intact:EBI-5627041(see-also)|imex:IM-17229-3(imex-primary)", "-", "-", + "curation depth:imex curation", + "taxid:9606", + "kd:1.36x10^-6(molar)", + "2008/03/30", + "2008/03/30", + "crc64:6C1A07041DF50142", + "crc64:2F6FEFCDF2C80457", + "intact-crc:08C4486B755C70C0", + "false", + "necessary binding region:2171-2647", + "necessary binding region:757-800", "-", "-", + "psi-mi:\"MI:0363\"(inferred by author)", + "psi-mi:\"MI:0363\"(inferred by author)" + }; + + private String[] line28 = { + "innatedb:IDBG-40102", + "innatedb:IDBG-4279", + "ensembl:ENSG00000175104", + "ensembl:ENSG00000141655", + "uniprotkb:Q9Y4K3|uniprotkb:TRAF6_HUMAN|refseq:NM_145803|refseq:NM_004620|refseq:NP_004611|refseq:NP_665802|hgnc:TNFRSF11A(display_short)", + "uniprotkb:Q9Y6Q6|uniprotkb:TNR11_HUMAN|refseq:NM_003839|refseq:NP_003830|hgnc:TNFRSF11A(display_short)", + "psi-mi:\"MI:0007\"(anti tag coimmunoprecipitation)", + "Arron et al. (2001)", + "pubmed:11406619", + "taxid:9606(Human)", + "taxid:9606(Human)", + "psi-mi:\"MI:0915\"(physical association)", + "psi-mi:\"MI:0974\"(innatedb)", + "innatedb:IDB-113260", + "lpr:2|hpr:2|np:1", + "psi-mi:\"MI:1060\"(spoke expansion)", + "psi-mi:\"MI:0499\"(unspecified role)", + "psi-mi:\"MI:0499\"(unspecified role)", + "psi-mi:\"MI:0498\"(prey)", + "psi-mi:\"MI:0496\"(bait)", + "psi-mi:\"MI:0326\"(protein)", + "psi-mi:\"MI:0326\"(protein)", + "uniprotkb:D3DRX9(secondary-ac)", + "refseq:NP_001447.2", + "intact:EBI-5627041(see-also)|imex:IM-17229-3(imex-primary)", "-", "-", + "curation depth:imex curation", "taxid:9606", - "-", + "kd:1.36x10^-6(molar)", "2008/03/30", "2008/03/30", - "-", - "-", - "-", + "crc64:6C1A07041DF50142", + "crc64:2F6FEFCDF2C80457", + "intact-crc:08C4486B755C70C0", "false", + "necessary binding region:2171-2647", + "necessary binding region:757-800", "-", "-", - "-", - "-", "psi-mi:\"MI:0363\"(inferred by author)", - "psi-mi:\"MI:0363\"(inferred by author)"}; + "psi-mi:\"MI:0363\"(inferred by author)", + "go:\"GO:0016301\"(kinase activity)", + "go:\"GO:0016301\"(kinase activity)", + "psi-mi:\"MI:2249\"(post transcriptional regulation)", + "psi-mi:\"MI:2240\"(down regulates)" + }; - String[] interactorANull ={ + private String[] interactorANull = { "-", "innatedb:IDBG-4279", "-", @@ -174,7 +225,7 @@ public void testIntraIterMoleculeInteractionLine() throws Exception { "psi-mi:\"MI:0974\"(innatedb)", "innatedb:IDB-113260", "lpr:2|hpr:2|np:1", - "-", + "psi-mi:\"MI:1060\"(spoke expansion)", "-", "psi-mi:\"MI:0499\"(unspecified role)", "-", @@ -182,27 +233,32 @@ public void testIntraIterMoleculeInteractionLine() throws Exception { "-", "psi-mi:\"MI:0326\"(protein)", "-", + "refseq:NP_001447.2", + "intact:EBI-5627041(see-also)|imex:IM-17229-3(imex-primary)", "-", "-", - "-", - "-", - "-", + "curation depth:imex curation", "taxid:9606", - "-", + "kd:1.36x10^-6(molar)", "2008/03/30", "2008/03/30", "-", - "-", - "-", + "crc64:2F6FEFCDF2C80457", + "intact-crc:08C4486B755C70C0", "false", "-", - "-", + "necessary binding region:757-800", "-", "2", "-", - "psi-mi:\"MI:0363\"(inferred by author)"}; + "psi-mi:\"MI:0363\"(inferred by author)", + "-", + "go:\"GO:0016301\"(kinase activity)", + "psi-mi:\"MI:2249\"(post transcriptional regulation)", + "psi-mi:\"MI:2240\"(down regulates)" + }; - String[] interactorBNull = { + private String[] interactorBNull = { "innatedb:IDBG-40102", "-", "ensembl:ENSG00000175104", @@ -218,43 +274,48 @@ public void testIntraIterMoleculeInteractionLine() throws Exception { "psi-mi:\"MI:0974\"(innatedb)", "innatedb:IDB-113260", "lpr:2|hpr:2|np:1", - "-", + "psi-mi:\"MI:1060\"(spoke expansion)", "psi-mi:\"MI:0499\"(unspecified role)", "-", "psi-mi:\"MI:0498\"(prey)", "-", "psi-mi:\"MI:0326\"(protein)", "-", + "uniprotkb:D3DRX9(secondary-ac)", "-", + "intact:EBI-5627041(see-also)|imex:IM-17229-3(imex-primary)", "-", "-", - "-", - "-", - "-", + "curation depth:imex curation", "taxid:9606", - "-", + "kd:1.36x10^-6(molar)", "2008/03/30", "2008/03/30", + "crc64:6C1A07041DF50142", "-", - "-", - "-", + "intact-crc:08C4486B755C70C0", "false", - "-", + "necessary binding region:2171-2647", "-", "2", "-", "psi-mi:\"MI:0363\"(inferred by author)", - "-"}; + "-", + "go:\"GO:0016301\"(kinase activity)", + "-", + "psi-mi:\"MI:2249\"(post transcriptional regulation)", + "psi-mi:\"MI:2240\"(down regulates)" + }; - BinaryInteraction buildInteraction() { + private BinaryInteraction buildInteraction() { Interactor A = new Interactor(); Interactor B = new Interactor(); BinaryInteraction interactionToCompare = new BinaryInteractionImpl(A, B); - + // MITAB 2.5 A.setIdentifiers(new ArrayList( Collections.singletonList(new CrossReferenceImpl("innatedb", "IDBG-40102")))); B.setIdentifiers(new ArrayList( @@ -315,7 +376,9 @@ BinaryInteraction buildInteraction() { interactionToCompare.setConfidenceValues(confidences); -// interactionToCompare.setComplexExpansion(); + // MITAB 2.6 + interactionToCompare.setComplexExpansion(new ArrayList( + Collections.singletonList(new CrossReferenceImpl("psi-mi", "MI:1060", "spoke expansion")))); A.setBiologicalRoles(new ArrayList( Collections.singletonList(new CrossReferenceImpl("psi-mi", "MI:0499", "unspecified role")))); @@ -330,12 +393,19 @@ BinaryInteraction buildInteraction() { B.setInteractorTypes(new ArrayList( Collections.singletonList(new CrossReferenceImpl("psi-mi", "MI:0326", "protein")))); -// A.setXrefs(); -// B.setXrefs(); -// interactionToCompare.setXrefs(); -// A.setAnnotations(); -// B.setAnnotations(); -// interactionToCompare.setAnnotations(); + A.setXrefs(new ArrayList( + Collections.singletonList(new CrossReferenceImpl("uniprotkb", "D3DRX9", "secondary-ac")))); + B.setXrefs(new ArrayList( + Collections.singletonList(new CrossReferenceImpl("refseq", "NP_001447.2")))); + ArrayList xrefs = new ArrayList(); + xrefs.add(new CrossReferenceImpl("intact", "EBI-5627041", "see-also")); + xrefs.add(new CrossReferenceImpl("imex", "IM-17229-3", "imex-primary")); + interactionToCompare.setXrefs(xrefs); + + List annotations = new ArrayList() {{ + add(new AnnotationImpl("curation depth", "imex curation")); + }}; + interactionToCompare.setAnnotations(annotations); Organism hostOrganism = new OrganismImpl(); hostOrganism.setIdentifiers(new ArrayList( @@ -343,7 +413,10 @@ BinaryInteraction buildInteraction() { interactionToCompare.setHostOrganism(hostOrganism); -// interactionToCompare.setParameters(); + List parameters = new ArrayList() {{ + add(new ParameterImpl("kd", "1.36x10^-6", "molar")); + }}; + interactionToCompare.setParameters(parameters); DateFormat formatter = new SimpleDateFormat("yyyy/MM/dd"); Date date = null; @@ -358,33 +431,51 @@ BinaryInteraction buildInteraction() { interactionToCompare.setUpdateDate(new ArrayList( Collections.singletonList(date))); -// A.setChecksums(); -// B.setChecksums(); -// interactionToCompare.setChecksums(); + A.setChecksums(new ArrayList( + Collections.singletonList(new ChecksumImpl("crc64", "6C1A07041DF50142")))); + B.setChecksums(new ArrayList( + Collections.singletonList(new ChecksumImpl("crc64", "2F6FEFCDF2C80457")))); + interactionToCompare.setChecksums(new ArrayList( + Collections.singletonList(new ChecksumImpl("intact-crc", "08C4486B755C70C0")))); interactionToCompare.setNegativeInteraction(false); -// A.setFeatures(); -// B.setFeatures(); -// A.setStoichiometry(); -// B.setStoichiometry(); - + // MITAB 2.7 + ArrayList rangesA = new ArrayList(); + rangesA.add("2171-2647"); + ArrayList rangesB = new ArrayList(); + rangesB.add("757-800"); + A.setFeatures(new ArrayList( + Collections.singletonList(new FeatureImpl("necessary binding region", rangesA)))); + B.setFeatures(new ArrayList( + Collections.singletonList(new FeatureImpl("necessary binding region", rangesB)))); A.setParticipantIdentificationMethods(new ArrayList( Collections.singletonList(new CrossReferenceImpl("psi-mi", "MI:0363", "inferred by author")))); B.setParticipantIdentificationMethods(new ArrayList( Collections.singletonList(new CrossReferenceImpl("psi-mi", "MI:0363", "inferred by author")))); + // MITAB 2.8 + A.setBiologicalEffects(new ArrayList( + Collections.singletonList(new CrossReferenceImpl("go", "GO:0016301", "kinase activity")))); + B.setBiologicalEffects(new ArrayList( + Collections.singletonList(new CrossReferenceImpl("go", "GO:0016301", "kinase activity")))); + + interactionToCompare.setCausalRegulatoryMechanism(new ArrayList( + Collections.singletonList(new CrossReferenceImpl("psi-mi", "MI:2249", "post transcriptional regulation")))); + interactionToCompare.setCausalStatement(new ArrayList( + Collections.singletonList(new CrossReferenceImpl("psi-mi", "MI:2240", "down regulates")))); + return interactionToCompare; } - BinaryInteraction buildIntraIterMoleculeAInteraction() { + private BinaryInteraction buildIntraIterMoleculeAInteraction() { Interactor A = new Interactor(); BinaryInteraction interactionToCompare = new BinaryInteractionImpl(A, null); - + // MITAB 2.5 A.setIdentifiers(new ArrayList( Collections.singletonList(new CrossReferenceImpl("innatedb", "IDBG-40102")))); A.setAlternativeIdentifiers(new ArrayList( @@ -424,7 +515,9 @@ BinaryInteraction buildIntraIterMoleculeAInteraction() { interactionToCompare.setConfidenceValues(confidences); -// interactionToCompare.setComplexExpansion(); + // MITAB 2.6 + interactionToCompare.setComplexExpansion(new ArrayList( + Collections.singletonList(new CrossReferenceImpl("psi-mi", "MI:1060", "spoke expansion")))); A.setBiologicalRoles(new ArrayList( Collections.singletonList(new CrossReferenceImpl("psi-mi", "MI:0499", "unspecified role")))); @@ -433,10 +526,18 @@ BinaryInteraction buildIntraIterMoleculeAInteraction() { A.setInteractorTypes(new ArrayList( Collections.singletonList(new CrossReferenceImpl("psi-mi", "MI:0326", "protein")))); -// A.setXrefs(); -// interactionToCompare.setXrefs(); -// A.setAnnotations(); -// interactionToCompare.setAnnotations(); + A.setXrefs(new ArrayList( + Collections.singletonList(new CrossReferenceImpl("uniprotkb", "D3DRX9", "secondary-ac")))); + + ArrayList xrefs = new ArrayList(); + xrefs.add(new CrossReferenceImpl("intact", "EBI-5627041", "see-also")); + xrefs.add(new CrossReferenceImpl("imex", "IM-17229-3", "imex-primary")); + interactionToCompare.setXrefs(xrefs); + + List annotations = new ArrayList() {{ + add(new AnnotationImpl("curation depth", "imex curation")); + }}; + interactionToCompare.setAnnotations(annotations); Organism hostOrganism = new OrganismImpl(); hostOrganism.setIdentifiers(new ArrayList( @@ -444,7 +545,10 @@ BinaryInteraction buildIntraIterMoleculeAInteraction() { interactionToCompare.setHostOrganism(hostOrganism); -// interactionToCompare.setParameters(); + List parameters = new ArrayList() {{ + add(new ParameterImpl("kd", "1.36x10^-6", "molar")); + }}; + interactionToCompare.setParameters(parameters); DateFormat formatter = new SimpleDateFormat("yyyy/MM/dd"); Date date = null; @@ -459,12 +563,18 @@ BinaryInteraction buildIntraIterMoleculeAInteraction() { interactionToCompare.setUpdateDate(new ArrayList( Collections.singletonList(date))); -// A.setChecksums(); -// interactionToCompare.setChecksums(); + A.setChecksums(new ArrayList( + Collections.singletonList(new ChecksumImpl("crc64", "6C1A07041DF50142")))); + interactionToCompare.setChecksums(new ArrayList( + Collections.singletonList(new ChecksumImpl("intact-crc", "08C4486B755C70C0")))); interactionToCompare.setNegativeInteraction(false); -// A.setFeatures(); + // MITAB 2.7 + ArrayList rangesA = new ArrayList(); + rangesA.add("2171-2647"); + A.setFeatures(new ArrayList( + Collections.singletonList(new FeatureImpl("necessary binding region", rangesA)))); A.setStoichiometry(new ArrayList( Collections.singletonList(new Integer("2")))); @@ -472,15 +582,25 @@ BinaryInteraction buildIntraIterMoleculeAInteraction() { A.setParticipantIdentificationMethods(new ArrayList( Collections.singletonList(new CrossReferenceImpl("psi-mi", "MI:0363", "inferred by author")))); + // MITAB 2.8 + A.setBiologicalEffects(new ArrayList( + Collections.singletonList(new CrossReferenceImpl("go", "GO:0016301", "kinase activity")))); + + interactionToCompare.setCausalRegulatoryMechanism(new ArrayList( + Collections.singletonList(new CrossReferenceImpl("psi-mi", "MI:2249", "post transcriptional regulation")))); + interactionToCompare.setCausalStatement(new ArrayList( + Collections.singletonList(new CrossReferenceImpl("psi-mi", "MI:2240", "down regulates")))); + return interactionToCompare; } - BinaryInteraction buildIntraIterMoleculeBInteraction() { + private BinaryInteraction buildIntraIterMoleculeBInteraction() { Interactor B = new Interactor(); BinaryInteraction interactionToCompare = new BinaryInteractionImpl(null, B); + // MITAB 2.5 B.setIdentifiers(new ArrayList( Collections.singletonList(new CrossReferenceImpl("innatedb", "IDBG-4279")))); B.setAlternativeIdentifiers(new ArrayList( @@ -521,7 +641,9 @@ BinaryInteraction buildIntraIterMoleculeBInteraction() { interactionToCompare.setConfidenceValues(confidences); -// interactionToCompare.setComplexExpansion(); + // MITAB 2.6 + interactionToCompare.setComplexExpansion(new ArrayList( + Collections.singletonList(new CrossReferenceImpl("psi-mi", "MI:1060", "spoke expansion")))); B.setBiologicalRoles(new ArrayList( Collections.singletonList(new CrossReferenceImpl("psi-mi", "MI:0499", "unspecified role")))); @@ -530,11 +652,18 @@ BinaryInteraction buildIntraIterMoleculeBInteraction() { B.setInteractorTypes(new ArrayList( Collections.singletonList(new CrossReferenceImpl("psi-mi", "MI:0326", "protein")))); + B.setXrefs(new ArrayList( + Collections.singletonList(new CrossReferenceImpl("refseq", "NP_001447.2")))); + ArrayList xrefs = new ArrayList(); + + xrefs.add(new CrossReferenceImpl("intact", "EBI-5627041", "see-also")); + xrefs.add(new CrossReferenceImpl("imex", "IM-17229-3", "imex-primary")); + interactionToCompare.setXrefs(xrefs); -// B.setXrefs(); -// interactionToCompare.setXrefs(); -// B.setAnnotations(); -// interactionToCompare.setAnnotations(); + List annotations = new ArrayList() {{ + add(new AnnotationImpl("curation depth", "imex curation")); + }}; + interactionToCompare.setAnnotations(annotations); Organism hostOrganism = new OrganismImpl(); hostOrganism.setIdentifiers(new ArrayList( @@ -542,7 +671,10 @@ BinaryInteraction buildIntraIterMoleculeBInteraction() { interactionToCompare.setHostOrganism(hostOrganism); -// interactionToCompare.setParameters(); + List parameters = new ArrayList() {{ + add(new ParameterImpl("kd", "1.36x10^-6", "molar")); + }}; + interactionToCompare.setParameters(parameters); DateFormat formatter = new SimpleDateFormat("yyyy/MM/dd"); Date date = null; @@ -557,13 +689,18 @@ BinaryInteraction buildIntraIterMoleculeBInteraction() { interactionToCompare.setUpdateDate(new ArrayList( Collections.singletonList(date))); -// B.setChecksums(); -// interactionToCompare.setChecksums(); + B.setChecksums(new ArrayList( + Collections.singletonList(new ChecksumImpl("crc64", "2F6FEFCDF2C80457")))); + interactionToCompare.setChecksums(new ArrayList( + Collections.singletonList(new ChecksumImpl("intact-crc", "08C4486B755C70C0")))); interactionToCompare.setNegativeInteraction(false); - -// B.setFeatures(); + // MITAB 2.7 + ArrayList rangesB = new ArrayList(); + rangesB.add("757-800"); + B.setFeatures(new ArrayList( + Collections.singletonList(new FeatureImpl("necessary binding region", rangesB)))); B.setStoichiometry(new ArrayList( Collections.singletonList(new Integer("2")))); @@ -571,6 +708,15 @@ BinaryInteraction buildIntraIterMoleculeBInteraction() { B.setParticipantIdentificationMethods(new ArrayList( Collections.singletonList(new CrossReferenceImpl("psi-mi", "MI:0363", "inferred by author")))); + // MITAB 2.8 + B.setBiologicalEffects(new ArrayList( + Collections.singletonList(new CrossReferenceImpl("go", "GO:0016301", "kinase activity")))); + + interactionToCompare.setCausalRegulatoryMechanism(new ArrayList( + Collections.singletonList(new CrossReferenceImpl("psi-mi", "MI:2249", "post transcriptional regulation")))); + interactionToCompare.setCausalStatement(new ArrayList( + Collections.singletonList(new CrossReferenceImpl("psi-mi", "MI:2240", "down regulates")))); + return interactionToCompare; }