X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=test%2Fjalview%2Fschemes%2FFeatureColourTest.java;h=a96caec9a3d9b542ab19585ec0f641ad1ad5a3b9;hb=4c43b10447a141c73446fc2bc368b06245a675c3;hp=72c29d344da0feaf0728733286445df9dcd5125d;hpb=9e926ac4305fd9dff38b6e079e55b4f50664d544;p=jalview.git diff --git a/test/jalview/schemes/FeatureColourTest.java b/test/jalview/schemes/FeatureColourTest.java index 72c29d3..a96caec 100644 --- a/test/jalview/schemes/FeatureColourTest.java +++ b/test/jalview/schemes/FeatureColourTest.java @@ -27,6 +27,7 @@ import static org.testng.AssertJUnit.assertTrue; import static org.testng.AssertJUnit.fail; import static org.testng.internal.junit.ArrayAsserts.assertArrayEquals; +import jalview.api.FeatureColourI; import jalview.datamodel.SequenceFeature; import jalview.gui.JvOptionPane; import jalview.util.ColorUtils; @@ -325,20 +326,29 @@ public class FeatureColourTest assertEquals("domain\tlabel", fc.toJalviewFormat("domain")); /* + * colour by attribute text (no threshold) + */ + fc = new FeatureColour(); + fc.setColourByLabel(true); + fc.setAttributeName("CLIN_SIG"); + assertEquals("domain\tattribute|CLIN_SIG", fc.toJalviewFormat("domain")); + + /* * colour by label (autoscaled) (an odd state you can reach by selecting * 'above threshold', then deselecting 'threshold is min/max' then 'colour * by label') */ + fc.setAttributeName((String[]) null); fc.setAutoScaled(true); assertEquals("domain\tlabel", fc.toJalviewFormat("domain")); /* - * colour by label (above threshold) (min/max values are output though not - * used by this scheme) + * colour by label (above threshold) */ fc.setAutoScaled(false); fc.setThreshold(12.5f); fc.setAboveThreshold(true); + // min/max values are output though not used by this scheme assertEquals("domain\tlabel|||0.0|0.0|above|12.5", fc.toJalviewFormat("domain")); @@ -350,38 +360,80 @@ public class FeatureColourTest fc.toJalviewFormat("domain")); /* - * graduated colour, no threshold + * colour by attributes text (below threshold) + */ + fc.setBelowThreshold(true); + fc.setAttributeName("CSQ", "Consequence"); + assertEquals("domain\tattribute|CSQ:Consequence|||0.0|0.0|below|12.5", + fc.toJalviewFormat("domain")); + + /* + * graduated colour by score, no threshold + * - default constructor sets noValueColor = minColor */ fc = new FeatureColour(Color.GREEN, Color.RED, 12f, 25f); String greenHex = Format.getHexString(Color.GREEN); - String expected = String.format("domain\t%s|%s|abso|12.0|25.0|none", - greenHex, redHex); + String expected = String.format( + "domain\tscore|%s|%s|noValueMin|abso|12.0|25.0|none", greenHex, + redHex); + assertEquals(expected, fc.toJalviewFormat("domain")); + + /* + * graduated colour by score, no threshold, no value gets min colour + */ + fc = new FeatureColour(Color.GREEN, Color.RED, Color.GREEN, 12f, 25f); + expected = String.format( + "domain\tscore|%s|%s|noValueMin|abso|12.0|25.0|none", greenHex, + redHex); assertEquals(expected, fc.toJalviewFormat("domain")); /* + * graduated colour by score, no threshold, no value gets max colour + */ + fc = new FeatureColour(Color.GREEN, Color.RED, Color.RED, 12f, 25f); + expected = String.format( + "domain\tscore|%s|%s|noValueMax|abso|12.0|25.0|none", greenHex, + redHex); + assertEquals(expected, fc.toJalviewFormat("domain")); + + /* * colour ranges over the actual score ranges (not min/max) */ fc.setAutoScaled(true); - expected = String.format("domain\t%s|%s|12.0|25.0|none", greenHex, + expected = String.format( + "domain\tscore|%s|%s|noValueMax|12.0|25.0|none", greenHex, redHex); assertEquals(expected, fc.toJalviewFormat("domain")); /* - * graduated colour below threshold + * graduated colour by score, below threshold */ fc.setThreshold(12.5f); fc.setBelowThreshold(true); - expected = String.format("domain\t%s|%s|12.0|25.0|below|12.5", + expected = String.format( + "domain\tscore|%s|%s|noValueMax|12.0|25.0|below|12.5", greenHex, redHex); assertEquals(expected, fc.toJalviewFormat("domain")); /* - * graduated colour above threshold + * graduated colour by score, above threshold */ fc.setThreshold(12.5f); fc.setAboveThreshold(true); fc.setAutoScaled(false); - expected = String.format("domain\t%s|%s|abso|12.0|25.0|above|12.5", + expected = String.format( + "domain\tscore|%s|%s|noValueMax|abso|12.0|25.0|above|12.5", + greenHex, redHex); + assertEquals(expected, fc.toJalviewFormat("domain")); + + /* + * graduated colour by attribute, above threshold + */ + fc.setAttributeName("CSQ", "AF"); + fc.setAboveThreshold(true); + fc.setAutoScaled(false); + expected = String.format( + "domain\tattribute|CSQ:AF|%s|%s|noValueMax|abso|12.0|25.0|above|12.5", greenHex, redHex); assertEquals(expected, fc.toJalviewFormat("domain")); } @@ -395,7 +447,7 @@ public class FeatureColourTest /* * simple colour by name */ - FeatureColour fc = FeatureColour.parseJalviewFeatureColour("red"); + FeatureColourI fc = FeatureColour.parseJalviewFeatureColour("red"); assertTrue(fc.isSimpleColour()); assertEquals(Color.RED, fc.getColour()); @@ -443,19 +495,117 @@ public class FeatureColourTest assertEquals(12.0f, fc.getThreshold()); /* - * graduated colour (by name) (no threshold) + * colour by attribute text (no threshold) + */ + fc = FeatureColour.parseJalviewFeatureColour("attribute|CLIN_SIG"); + assertTrue(fc.isColourByAttribute()); + assertTrue(fc.isColourByLabel()); + assertFalse(fc.hasThreshold()); + assertArrayEquals(new String[] { "CLIN_SIG" }, fc.getAttributeName()); + + /* + * colour by attributes text (with score threshold) + */ + fc = FeatureColour.parseJalviewFeatureColour( + "attribute|CSQ:Consequence|||0.0|0.0|above|12.0"); + assertTrue(fc.isColourByLabel()); + assertTrue(fc.isColourByAttribute()); + assertArrayEquals(new String[] { "CSQ", "Consequence" }, + fc.getAttributeName()); + assertTrue(fc.isAboveThreshold()); + assertEquals(12.0f, fc.getThreshold()); + + /* + * graduated colour by score (with colour names) (no threshold) */ fc = FeatureColour.parseJalviewFeatureColour("red|green|10.0|20.0"); assertTrue(fc.isGraduatedColour()); assertFalse(fc.hasThreshold()); assertEquals(Color.RED, fc.getMinColour()); assertEquals(Color.GREEN, fc.getMaxColour()); + assertEquals(Color.RED, fc.getNoColour()); + assertEquals(10f, fc.getMin()); + assertEquals(20f, fc.getMax()); + assertTrue(fc.isAutoScaled()); + + /* + * the same, with 'no value colour' specified as max + */ + fc = FeatureColour + .parseJalviewFeatureColour("red|green|novaluemax|10.0|20.0"); + assertEquals(Color.RED, fc.getMinColour()); + assertEquals(Color.GREEN, fc.getMaxColour()); + assertEquals(Color.GREEN, fc.getNoColour()); + assertEquals(10f, fc.getMin()); + assertEquals(20f, fc.getMax()); + + /* + * the same, with 'no value colour' specified as min + */ + fc = FeatureColour + .parseJalviewFeatureColour("red|green|novalueMin|10.0|20.0"); + assertEquals(Color.RED, fc.getMinColour()); + assertEquals(Color.GREEN, fc.getMaxColour()); + assertEquals(Color.RED, fc.getNoColour()); + assertEquals(10f, fc.getMin()); + assertEquals(20f, fc.getMax()); + + /* + * the same, with 'no value colour' specified as none + */ + fc = FeatureColour + .parseJalviewFeatureColour("red|green|novaluenone|10.0|20.0"); + assertEquals(Color.RED, fc.getMinColour()); + assertEquals(Color.GREEN, fc.getMaxColour()); + assertNull(fc.getNoColour()); + assertEquals(10f, fc.getMin()); + assertEquals(20f, fc.getMax()); + + /* + * the same, with invalid 'no value colour' + */ + try + { + fc = FeatureColour + .parseJalviewFeatureColour("red|green|blue|10.0|20.0"); + fail("expected exception"); + } catch (IllegalArgumentException e) + { + assertEquals( + "Couldn't parse the minimum value for graduated colour ('blue')", + e.getMessage()); + } + + /* + * graduated colour (explicitly by 'score') (no threshold) + */ + fc = FeatureColour + .parseJalviewFeatureColour("Score|red|green|10.0|20.0"); + assertTrue(fc.isGraduatedColour()); + assertFalse(fc.hasThreshold()); + assertEquals(Color.RED, fc.getMinColour()); + assertEquals(Color.GREEN, fc.getMaxColour()); + assertEquals(10f, fc.getMin()); + assertEquals(20f, fc.getMax()); + assertTrue(fc.isAutoScaled()); + + /* + * graduated colour by attribute (no threshold) + */ + fc = FeatureColour + .parseJalviewFeatureColour("attribute|AF|red|green|10.0|20.0"); + assertTrue(fc.isGraduatedColour()); + assertTrue(fc.isColourByAttribute()); + assertArrayEquals(new String[] { "AF" }, fc.getAttributeName()); + assertFalse(fc.hasThreshold()); + assertEquals(Color.RED, fc.getMinColour()); + assertEquals(Color.GREEN, fc.getMaxColour()); assertEquals(10f, fc.getMin()); assertEquals(20f, fc.getMax()); assertTrue(fc.isAutoScaled()); /* - * graduated colour (by hex code) (above threshold) + * graduated colour by score (colours by hex code) (above threshold) */ String descriptor = String.format("%s|%s|10.0|20.0|above|15", Format.getHexString(Color.RED), @@ -472,9 +622,26 @@ public class FeatureColourTest assertTrue(fc.isAutoScaled()); /* + * graduated colour by attributes (below threshold) + */ + fc = FeatureColour.parseJalviewFeatureColour( + "attribute|CSQ:AF|red|green|10.0|20.0|below|13"); + assertTrue(fc.isGraduatedColour()); + assertTrue(fc.isColourByAttribute()); + assertArrayEquals(new String[] { "CSQ", "AF" }, fc.getAttributeName()); + assertTrue(fc.hasThreshold()); + assertTrue(fc.isBelowThreshold()); + assertEquals(13f, fc.getThreshold()); + assertEquals(Color.RED, fc.getMinColour()); + assertEquals(Color.GREEN, fc.getMaxColour()); + assertEquals(10f, fc.getMin()); + assertEquals(20f, fc.getMax()); + assertTrue(fc.isAutoScaled()); + + /* * graduated colour (by RGB triplet) (below threshold), absolute scale */ - descriptor = String.format("255,0,0|0,255,0|abso|10.0|20.0|below|15"); + descriptor = "255,0,0|0,255,0|abso|10.0|20.0|below|15"; fc = FeatureColour.parseJalviewFeatureColour(descriptor); assertTrue(fc.isGraduatedColour()); assertFalse(fc.isAutoScaled()); @@ -486,8 +653,7 @@ public class FeatureColourTest assertEquals(10f, fc.getMin()); assertEquals(20f, fc.getMax()); - descriptor = String - .format("blue|255,0,255|absolute|20.0|95.0|below|66.0"); + descriptor = "blue|255,0,255|absolute|20.0|95.0|below|66.0"; fc = FeatureColour.parseJalviewFeatureColour(descriptor); assertTrue(fc.isGraduatedColour()); }