import jalview.datamodel.Alignment;
import jalview.datamodel.AlignmentI;
import jalview.datamodel.ColumnSelection;
-import jalview.datamodel.SearchResults;
-import jalview.datamodel.SearchResults.Match;
+import jalview.datamodel.SearchResultMatchI;
+import jalview.datamodel.SearchResultsI;
import jalview.datamodel.Sequence;
import jalview.datamodel.SequenceGroup;
import jalview.datamodel.SequenceI;
import jalview.gui.AlignViewport;
+import jalview.gui.JvOptionPane;
import jalview.io.AppletFormatAdapter;
import jalview.io.FormatAdapter;
import java.util.Arrays;
import java.util.List;
+import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
public class MappingUtilsTest
{
+
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
private AlignViewportI dnaView;
private AlignViewportI proteinView;
/*
* Check protein residue 12 maps to codon 5-7, 13 to codon 8-10
*/
- SearchResults sr = MappingUtils.buildSearchResults(aseq1, 12, acfList);
+ SearchResultsI sr = MappingUtils.buildSearchResults(aseq1, 12, acfList);
assertEquals(1, sr.getResults().size());
- Match m = sr.getResults().get(0);
+ SearchResultMatchI m = sr.getResults().get(0);
assertEquals(seq1.getDatasetSequence(), m.getSequence());
assertEquals(5, m.getStart());
assertEquals(7, m.getEnd());
/*
* Check protein residue 8 maps to [6, 8, 9]
*/
- SearchResults sr = MappingUtils.buildSearchResults(aseq1, 8, acfList);
+ SearchResultsI sr = MappingUtils.buildSearchResults(aseq1, 8, acfList);
assertEquals(2, sr.getResults().size());
- Match m = sr.getResults().get(0);
+ SearchResultMatchI m = sr.getResults().get(0);
assertEquals(seq1.getDatasetSequence(), m.getSequence());
assertEquals(6, m.getStart());
assertEquals(6, m.getEnd());
assertEquals(0, result.size());
}
+ /**
+ * just like the one above, but this time, we provide a set of sequences to
+ * subselect the mapping search
+ */
+ @Test(groups = { "Functional" })
+ public void testFindMappingsForSequenceAndOthers()
+ {
+ SequenceI seq1 = new Sequence("Seq1", "ABC");
+ SequenceI seq2 = new Sequence("Seq2", "ABC");
+ SequenceI seq3 = new Sequence("Seq3", "ABC");
+ SequenceI seq4 = new Sequence("Seq4", "ABC");
+ seq1.createDatasetSequence();
+ seq2.createDatasetSequence();
+ seq3.createDatasetSequence();
+ seq4.createDatasetSequence();
+
+ /*
+ * Create mappings from seq1 to seq2, seq2 to seq1, seq3 to seq1, seq3 to seq4
+ */
+ AlignedCodonFrame acf1 = new AlignedCodonFrame();
+ MapList map = new MapList(new int[] { 1, 3 }, new int[] { 1, 3 }, 1, 1);
+ acf1.addMap(seq1.getDatasetSequence(), seq2.getDatasetSequence(), map);
+ AlignedCodonFrame acf2 = new AlignedCodonFrame();
+ acf2.addMap(seq2.getDatasetSequence(), seq1.getDatasetSequence(), map);
+ AlignedCodonFrame acf3 = new AlignedCodonFrame();
+ acf3.addMap(seq3.getDatasetSequence(), seq1.getDatasetSequence(), map);
+ AlignedCodonFrame acf4 = new AlignedCodonFrame();
+ acf4.addMap(seq3.getDatasetSequence(), seq4.getDatasetSequence(), map);
+
+ List<AlignedCodonFrame> mappings = new ArrayList<AlignedCodonFrame>();
+ mappings.add(acf1);
+ mappings.add(acf2);
+ mappings.add(acf3);
+ mappings.add(acf4);
+
+ /*
+ * test for null args
+ */
+ List<AlignedCodonFrame> result = MappingUtils
+ .findMappingsForSequenceAndOthers(null, mappings,
+ Arrays.asList(new SequenceI[] { seq1, seq2 }));
+ assertTrue(result.isEmpty());
+
+ result = MappingUtils.findMappingsForSequenceAndOthers(seq1, null,
+ Arrays.asList(new SequenceI[] { seq1, seq2 }));
+ assertTrue(result.isEmpty());
+
+ /*
+ * Seq1 has three mappings, but filter argument will only accept
+ * those to seq2
+ */
+ result = MappingUtils.findMappingsForSequenceAndOthers(
+ seq1,
+ mappings,
+ Arrays.asList(new SequenceI[] { seq1, seq2,
+ seq1.getDatasetSequence() }));
+ assertEquals(2, result.size());
+ assertTrue(result.contains(acf1));
+ assertTrue(result.contains(acf2));
+ assertFalse("Did not expect to find mapping acf3 - subselect failed",
+ result.contains(acf3));
+ assertFalse(
+ "Did not expect to find mapping acf4 - doesn't involve sequence",
+ result.contains(acf4));
+
+ /*
+ * and verify the no filter case
+ */
+ result = MappingUtils.findMappingsForSequenceAndOthers(seq1, mappings,
+ null);
+ assertEquals(3, result.size());
+ assertTrue(result.contains(acf1));
+ assertTrue(result.contains(acf2));
+ assertTrue(result.contains(acf3));
+ }
+
@Test(groups = { "Functional" })
public void testMapEditCommand()
{
public void testMapColumnSelection_hiddenColumns() throws IOException
{
setupMappedAlignments();
-
+
ColumnSelection proteinSelection = new ColumnSelection();
/*
* in dna respectively, overall 0-4
*/
proteinSelection.hideColumns(0);
- ColumnSelection dnaSelection = MappingUtils.mapColumnSelection(proteinSelection,
- proteinView, dnaView);
+ ColumnSelection dnaSelection = MappingUtils.mapColumnSelection(
+ proteinSelection, proteinView, dnaView);
assertEquals("[]", dnaSelection.getSelected().toString());
List<int[]> hidden = dnaSelection.getHiddenColumns();
assertEquals(1, hidden.size());
// deselect these or hideColumns will be expanded to include 0
proteinSelection.clear();
proteinSelection.hideColumns(1);
- dnaSelection = MappingUtils.mapColumnSelection(proteinSelection, proteinView, dnaView);
+ dnaSelection = MappingUtils.mapColumnSelection(proteinSelection,
+ proteinView, dnaView);
hidden = dnaSelection.getHiddenColumns();
assertEquals(1, hidden.size());
assertEquals("[0, 3]", Arrays.toString(hidden.get(0)));
proteinSelection.revealAllHiddenColumns();
proteinSelection.clear();
proteinSelection.hideColumns(2);
- dnaSelection = MappingUtils.mapColumnSelection(proteinSelection, proteinView, dnaView);
+ dnaSelection = MappingUtils.mapColumnSelection(proteinSelection,
+ proteinView, dnaView);
assertTrue(dnaSelection.getHiddenColumns().isEmpty());
/*
proteinSelection.clear();
proteinSelection.hideColumns(3); // 5-10 hidden in dna
proteinSelection.addElement(1); // 0-3 selected in dna
- dnaSelection = MappingUtils.mapColumnSelection(proteinSelection, proteinView, dnaView);
+ dnaSelection = MappingUtils.mapColumnSelection(proteinSelection,
+ proteinView, dnaView);
assertEquals("[0, 1, 2, 3]", dnaSelection.getSelected().toString());
hidden = dnaSelection.getHiddenColumns();
assertEquals(1, hidden.size());
proteinSelection.clear();
proteinSelection.hideColumns(1);
proteinSelection.hideColumns(3);
- dnaSelection = MappingUtils.mapColumnSelection(proteinSelection, proteinView, dnaView);
+ dnaSelection = MappingUtils.mapColumnSelection(proteinSelection,
+ proteinView, dnaView);
hidden = dnaSelection.getHiddenColumns();
assertEquals(2, hidden.size());
assertEquals("[0, 3]", Arrays.toString(hidden.get(0)));
int[] adjusted = MappingUtils.removeStartPositions(0, ranges);
assertEquals("[10, 1]", Arrays.toString(adjusted));
assertEquals("[10, 1]", Arrays.toString(ranges));
-
+
ranges = adjusted;
adjusted = MappingUtils.removeStartPositions(1, ranges);
assertEquals("[9, 1]", Arrays.toString(adjusted));
assertEquals("[10, 1]", Arrays.toString(ranges));
-
+
ranges = adjusted;
adjusted = MappingUtils.removeStartPositions(1, ranges);
assertEquals("[8, 1]", Arrays.toString(adjusted));
assertEquals("[9, 1]", Arrays.toString(ranges));
-
+
ranges = new int[] { 12, 11, 9, 6 };
adjusted = MappingUtils.removeStartPositions(1, ranges);
assertEquals("[11, 11, 9, 6]", Arrays.toString(adjusted));
assertEquals("[12, 11, 9, 6]", Arrays.toString(ranges));
-
+
ranges = new int[] { 12, 12, 8, 4 };
adjusted = MappingUtils.removeStartPositions(1, ranges);
assertEquals("[8, 4]", Arrays.toString(adjusted));
assertEquals("[12, 12, 8, 4]", Arrays.toString(ranges));
-
+
ranges = new int[] { 12, 12, 8, 4 };
adjusted = MappingUtils.removeStartPositions(2, ranges);
assertEquals("[7, 4]", Arrays.toString(adjusted));
assertEquals("[12, 12, 8, 4]", Arrays.toString(ranges));
-
+
ranges = new int[] { 12, 12, 10, 10, 8, 4 };
adjusted = MappingUtils.removeStartPositions(1, ranges);
assertEquals("[10, 10, 8, 4]", Arrays.toString(adjusted));
assertEquals("[12, 12, 10, 10, 8, 4]", Arrays.toString(ranges));
-
+
ranges = new int[] { 12, 12, 10, 10, 8, 4 };
adjusted = MappingUtils.removeStartPositions(2, ranges);
assertEquals("[8, 4]", Arrays.toString(adjusted));
assertEquals("[12, 12, 10, 10, 8, 4]", Arrays.toString(ranges));
-
+
ranges = new int[] { 12, 11, 8, 4 };
adjusted = MappingUtils.removeStartPositions(3, ranges);
assertEquals("[7, 4]", Arrays.toString(adjusted));