X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=test%2Fjalview%2Fio%2Fgff%2FInterProScanHelperTest.java;fp=test%2Fjalview%2Fio%2Fgff%2FInterProScanHelperTest.java;h=2ef4c99396e15ba50b71483386e602fe14550fb1;hb=4da7d6ec8ef5ff030c6d06d37a099da2d92d7246;hp=0000000000000000000000000000000000000000;hpb=43ee8686fab13cd6952335ade1382adf3226f7a1;p=jalview.git diff --git a/test/jalview/io/gff/InterProScanHelperTest.java b/test/jalview/io/gff/InterProScanHelperTest.java new file mode 100644 index 0000000..2ef4c99 --- /dev/null +++ b/test/jalview/io/gff/InterProScanHelperTest.java @@ -0,0 +1,71 @@ +package jalview.io.gff; + +import static org.testng.AssertJUnit.assertEquals; +import static org.testng.AssertJUnit.assertSame; +import static org.testng.AssertJUnit.assertTrue; +import static org.testng.internal.junit.ArrayAsserts.assertArrayEquals; + +import jalview.datamodel.AlignedCodonFrame; +import jalview.datamodel.Alignment; +import jalview.datamodel.AlignmentI; +import jalview.datamodel.Sequence; +import jalview.datamodel.SequenceDummy; +import jalview.datamodel.SequenceI; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +import org.testng.annotations.Test; + +public class InterProScanHelperTest +{ + + /** + * Test processing one InterProScan GFF line + * + * @throws IOException + */ + @Test(groups = "Functional") + public void testProcessProteinMatch() throws IOException + { + InterProScanHelper testee = new InterProScanHelper(); + List newseqs = new ArrayList(); + String[] gff = "Submitted\tPfam\tprotein_match\t5\t30\t0\t+\t.\tName=PF12838;Target=Submitted 5 30;signature_desc=4Fe-4S dicluster domain;ID=match$17_5_30" + .split("\\t"); + SequenceI seq = new Sequence("Prot1", "PQRASTGKEEDVMIWCHQN"); + seq.createDatasetSequence(); + AlignmentI align = new Alignment(new SequenceI[] {}); + Map> set = Gff3Helper.parseNameValuePairs(gff[8]); + + /* + * this should create a mapping from Prot1/5-30 to virtual sequence + * match$17_5_30 (added to newseqs) positions 1-26 + */ + testee.processProteinMatch(set, seq, gff, align, newseqs, false); + assertEquals(1, newseqs.size()); + assertTrue(newseqs.get(0) instanceof SequenceDummy); + assertEquals("match$17_5_30", newseqs.get(0).getName()); + assertEquals(1, align.getCodonFrames().size()); + AlignedCodonFrame mapping = align.getCodonFrames().iterator().next(); + + /* + * 'dnaseqs' (map from) is here [Prot1] + * 'aaseqs' (map to) is here [match$17_5_30] + */ + // TODO use more suitable naming in AlignedCodonFrame + assertEquals(1, mapping.getAaSeqs().length); + assertSame(seq.getDatasetSequence(), mapping.getdnaSeqs()[0]); + assertEquals(1, mapping.getdnaSeqs().length); + assertSame(newseqs.get(0), mapping.getAaSeqs()[0]); + assertEquals(1, mapping.getdnaToProt().length); + assertEquals(1, mapping.getdnaToProt()[0].getFromRanges().size()); + assertArrayEquals(new int[] { 5, 30 }, mapping.getdnaToProt()[0] + .getFromRanges().get(0)); + assertEquals(1, mapping.getdnaToProt()[0].getToRanges().size()); + assertArrayEquals(new int[] { 1, 26 }, mapping.getdnaToProt()[0] + .getToRanges().get(0)); + } + +}