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)); } }