/* * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$) * Copyright (C) $$Year-Rel$$ The Jalview Authors * * This file is part of Jalview. * * Jalview is free software: you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation, either version 3 * of the License, or (at your option) any later version. * * Jalview is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty * of MERCHANTABILITY or FITNESS FOR A PARTICULAR * PURPOSE. See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with Jalview. If not, see . * The Jalview Authors are detailed in the 'AUTHORS' file. */ 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 jalview.gui.JvOptionPane; import java.io.IOException; import java.util.ArrayList; import java.util.List; import java.util.Map; import org.testng.annotations.BeforeClass; import org.testng.annotations.Test; public class InterProScanHelperTest { @BeforeClass(alwaysRun = true) public void setUpJvOptionPane() { JvOptionPane.setInteractiveMode(false); JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION); } /** * 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)); } }