import static org.testng.Assert.assertSame;
import static org.testng.Assert.assertTrue;
+import jalview.api.FeatureColourI;
import jalview.bin.Cache;
import jalview.bin.Jalview;
import jalview.datamodel.Alignment;
import jalview.datamodel.AlignmentI;
+import jalview.datamodel.HiddenColumns;
import jalview.datamodel.Sequence;
import jalview.datamodel.SequenceFeature;
import jalview.datamodel.SequenceGroup;
import jalview.io.Jalview2xmlTests;
import jalview.renderer.ResidueShaderI;
import jalview.schemes.BuriedColourScheme;
+import jalview.schemes.FeatureColour;
import jalview.schemes.HelixColourScheme;
import jalview.schemes.JalviewColourScheme;
import jalview.schemes.StrandColourScheme;
import jalview.util.MessageManager;
import java.awt.Color;
-import java.util.List;
+import java.util.Iterator;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeClass;
{
SequenceI seq1 = new Sequence("Seq1", "ABCDEFGHIJ");
SequenceI seq2 = new Sequence("Seq2", "ABCDEFGHIJ");
- seq1.addSequenceFeature(new SequenceFeature("Metal", "", 1, 5,
- Float.NaN, null));
- seq2.addSequenceFeature(new SequenceFeature("Metal", "", 6, 10,
- Float.NaN, null));
+ seq1.addSequenceFeature(new SequenceFeature("Metal", "", 1, 5, 0f, null));
+ seq2.addSequenceFeature(new SequenceFeature("Metal", "", 6, 10, 10f,
+ null));
seq1.addSequenceFeature(new SequenceFeature("Turn", "", 2, 4,
Float.NaN, null));
seq2.addSequenceFeature(new SequenceFeature("Turn", "", 7, 9,
Float.NaN, null));
AlignmentI al = new Alignment(new SequenceI[] { seq1, seq2 });
- AlignFrame alignFrame = new AlignFrame(al, al.getWidth(), al.getHeight());
+ AlignFrame alignFrame = new AlignFrame(al, al.getWidth(),
+ al.getHeight());
+
+ /*
+ * make all features visible (select feature columns checks visibility)
+ */
+ alignFrame.getFeatureRenderer().findAllFeatures(true);
/*
* hiding a feature not present does nothing
*/
assertFalse(alignFrame.hideFeatureColumns("exon", true));
assertTrue(alignFrame.getViewport().getColumnSelection().isEmpty());
- assertTrue(alignFrame.getViewport().getColumnSelection().getHiddenColumns()
- .isEmpty());
+
+ assertEquals(alignFrame.getViewport().getAlignment().getHiddenColumns()
+ .getNumberOfRegions(), 0);
+
assertFalse(alignFrame.hideFeatureColumns("exon", false));
assertTrue(alignFrame.getViewport().getColumnSelection().isEmpty());
- assertTrue(alignFrame.getViewport().getColumnSelection().getHiddenColumns()
- .isEmpty());
+
+ assertEquals(alignFrame.getViewport().getAlignment().getHiddenColumns()
+ .getNumberOfRegions(), 0);
/*
* hiding a feature in all columns does nothing
*/
assertFalse(alignFrame.hideFeatureColumns("Metal", true));
assertTrue(alignFrame.getViewport().getColumnSelection().isEmpty());
- List<int[]> hidden = alignFrame.getViewport().getColumnSelection()
- .getHiddenColumns();
- assertTrue(hidden.isEmpty());
+
+ assertEquals(alignFrame.getViewport().getAlignment().getHiddenColumns()
+ .getNumberOfRegions(), 0);
+
+
+ /*
+ * threshold Metal to hide features where score < 5
+ * seq1 feature in columns 1-5 is hidden
+ * seq2 feature in columns 6-10 is shown
+ */
+ FeatureColourI fc = new FeatureColour(null, Color.red, Color.blue, null,
+ 0f, 10f);
+ fc.setAboveThreshold(true);
+ fc.setThreshold(5f);
+ alignFrame.getFeatureRenderer().setColour("Metal", fc);
+ assertTrue(alignFrame.hideFeatureColumns("Metal", true));
+ HiddenColumns hidden = alignFrame.getViewport().getAlignment().getHiddenColumns();
+ assertEquals(hidden.getNumberOfRegions(), 1);
+ Iterator<int[]> regions = hidden.iterator();
+ int[] next = regions.next();
+ assertEquals(next[0], 5);
+ assertEquals(next[1], 9);
/*
* hide a feature present in some columns
* sequence positions [2-4], [7-9] are column positions
* [1-3], [6-8] base zero
*/
+ alignFrame.getViewport().showAllHiddenColumns();
assertTrue(alignFrame.hideFeatureColumns("Turn", true));
- hidden = alignFrame.getViewport().getColumnSelection().getHiddenColumns();
- assertEquals(hidden.size(), 2);
- assertEquals(hidden.get(0)[0], 1);
- assertEquals(hidden.get(0)[1], 3);
- assertEquals(hidden.get(1)[0], 6);
- assertEquals(hidden.get(1)[1], 8);
+ regions = alignFrame.getViewport().getAlignment()
+ .getHiddenColumns().iterator();
+ assertEquals(alignFrame.getViewport().getAlignment().getHiddenColumns()
+ .getNumberOfRegions(), 2);
+ next = regions.next();
+ assertEquals(next[0], 1);
+ assertEquals(next[1], 3);
+ next = regions.next();
+ assertEquals(next[0], 6);
+ assertEquals(next[1], 8);
}
@BeforeClass(alwaysRun = true)
af.applyToAllGroups_actionPerformed(false);
af.changeColour_actionPerformed(JalviewColourScheme.Buried.toString());
assertTrue(av.getGlobalColourScheme() instanceof BuriedColourScheme);
- assertFalse(av.getViewportColourScheme().conservationApplied());
- assertEquals(av.getViewportColourScheme().getThreshold(), 0);
+ assertFalse(av.getResidueShading().conservationApplied());
+ assertEquals(av.getResidueShading().getThreshold(), 0);
/*
* Apply Conservation 20%
new String[] { "Background" }));
assertTrue(sp.isForConservation());
sp.valueChanged(20);
- assertTrue(av.getViewportColourScheme().conservationApplied());
- assertEquals(av.getViewportColourScheme().getConservationInc(), 20);
+ assertTrue(av.getResidueShading().conservationApplied());
+ assertEquals(av.getResidueShading().getConservationInc(), 20);
/*
* Apply PID threshold 10% (conservation still applies as well)
"label.percentage_identity_threshold",
new String[] { "Background" }));
sp.valueChanged(10);
- assertEquals(av.getViewportColourScheme().getThreshold(), 10);
- assertTrue(av.getViewportColourScheme().conservationApplied());
- assertEquals(av.getViewportColourScheme().getConservationInc(), 20);
+ assertEquals(av.getResidueShading().getThreshold(), 10);
+ assertTrue(av.getResidueShading().conservationApplied());
+ assertEquals(av.getResidueShading().getConservationInc(), 20);
/*
* create a group with Strand colouring, 30% Conservation
*/
af.changeColour_actionPerformed(JalviewColourScheme.Turn.toString());
assertTrue(av.getGlobalColourScheme() instanceof TurnColourScheme);
- assertTrue(av.getViewportColourScheme().conservationApplied());
- assertEquals(av.getViewportColourScheme().getConservationInc(), 20);
- assertEquals(av.getViewportColourScheme().getThreshold(), 10);
+ assertTrue(av.getResidueShading().conservationApplied());
+ assertEquals(av.getResidueShading().getConservationInc(), 20);
+ assertEquals(av.getResidueShading().getThreshold(), 10);
assertTrue(sg.getColourScheme() instanceof StrandColourScheme);
assertTrue(sg.getGroupColourScheme().conservationApplied());
assertEquals(sg.getGroupColourScheme().getConservationInc(), 30);
af.applyToAllGroups_actionPerformed(true);
af.changeColour_actionPerformed(JalviewColourScheme.Helix.toString());
assertTrue(av.getGlobalColourScheme() instanceof HelixColourScheme);
- assertTrue(av.getViewportColourScheme().conservationApplied());
- assertEquals(av.getViewportColourScheme().getConservationInc(), 20);
- assertEquals(av.getViewportColourScheme().getThreshold(), 10);
+ assertTrue(av.getResidueShading().conservationApplied());
+ assertEquals(av.getResidueShading().getConservationInc(), 20);
+ assertEquals(av.getResidueShading().getThreshold(), 10);
assertTrue(sg.getColourScheme() instanceof HelixColourScheme);
assertTrue(sg.getGroupColourScheme().conservationApplied());
assertEquals(sg.getGroupColourScheme().getConservationInc(), 30);
af.applyToAllGroups_actionPerformed(false);
af.changeColour_actionPerformed(JalviewColourScheme.Helix.toString());
assertTrue(av.getGlobalColourScheme() instanceof HelixColourScheme);
- assertFalse(av.getViewportColourScheme().conservationApplied());
- assertEquals(av.getViewportColourScheme().getThreshold(), 0);
+ assertFalse(av.getResidueShading().conservationApplied());
+ assertEquals(av.getResidueShading().getThreshold(), 0);
/*
* inspect the colour of
* FER_CAPAN.10(SER), column 16 (15 base 0)
*/
SequenceI ferCapan = al.findName("FER_CAPAN");
- ResidueShaderI rs = av.getViewportColourScheme();
+ ResidueShaderI rs = av.getResidueShading();
Color c = rs.findColour('I', 14, ferCapan);
Color i_original = new Color(138, 117, 138);
assertEquals(c, i_original);
assertTrue(sp.isForConservation());
assertEquals(sp.getValue(), 30); // initial slider setting
sp.valueChanged(10);
- assertSame(rs, av.getViewportColourScheme());
+ assertSame(rs, av.getResidueShading());
c = rs.findColour('I', 14, ferCapan);
Color i_faded = new Color(196, 186, 196);
assertEquals(c, i_faded);
sp = SliderPanel.getSliderPanel();
assertTrue(sp.isForConservation());
sp.valueChanged(20);
- ResidueShaderI rs = av.getViewportColourScheme();
+ ResidueShaderI rs = av.getResidueShading();
assertEquals(rs.getThreshold(), 10);
assertTrue(rs.conservationApplied());
assertEquals(rs.getConservationInc(), 20);
assertEquals(af.alignPanel.getViewName(), "View 1");
AlignViewport av2 = af.getViewport();
assertNotSame(av, av2);
- rs = av2.getViewportColourScheme();
- assertNotSame(av.getViewportColourScheme(), rs);
+ assertSame(av2, af.alignPanel.av);
+ rs = av2.getResidueShading();
+ assertNotSame(av.getResidueShading(), rs);
assertEquals(rs.getThreshold(), 10);
- assertTrue(rs.conservationApplied());
+ assertTrue(rs.conservationApplied(), rs.toString());
assertEquals(rs.getConservationInc(), 20);
assertEquals(av2.getAlignment().getGroups().size(), 1);
sg = av2.getAlignment().getGroups().get(0);
"label.conservation_colour_increment",
new String[] { "View 1" }));
sp.valueChanged(22);
- assertEquals(av2.getViewportColourScheme().getConservationInc(), 22);
+ assertEquals(av2.getResidueShading().getConservationInc(), 22);
}
}