From 98ad3bbc158402de19c2fc47ea72845c54c18a2a Mon Sep 17 00:00:00 2001 From: jprocter Date: Wed, 28 Apr 2010 10:21:20 +0000 Subject: [PATCH 1/1] graduated feature schemes (with visual indication of thresholding) --- help/html/features/fcsgtthan.gif | Bin 0 -> 136 bytes help/html/features/fcsltthan.gif | Bin 0 -> 136 bytes help/html/features/fcsminmax.gif | Bin 0 -> 104 bytes help/html/features/fcsntlabel.gif | Bin 0 -> 121 bytes help/html/features/featureSettings.gif | Bin 34630 -> 23195 bytes help/html/features/featurecoloursettings.gif | Bin 0 -> 8518 bytes help/html/features/featuresFormat.html | 2 +- help/html/features/featureschemes.html | 57 ++++++++++++++++++++ help/html/features/featuresettings.html | 19 ++++--- help/html/features/seqfeatures.html | 74 ++++++++++++++++---------- src/jalview/gui/FeatureColourChooser.java | 19 +++++-- src/jalview/gui/FeatureRenderer.java | 10 +++- src/jalview/gui/FeatureSettings.java | 41 +++++++++++--- 13 files changed, 172 insertions(+), 50 deletions(-) create mode 100644 help/html/features/fcsgtthan.gif create mode 100644 help/html/features/fcsltthan.gif create mode 100644 help/html/features/fcsminmax.gif create mode 100644 help/html/features/fcsntlabel.gif create mode 100644 help/html/features/featurecoloursettings.gif create mode 100644 help/html/features/featureschemes.html diff --git a/help/html/features/fcsgtthan.gif b/help/html/features/fcsgtthan.gif new file mode 100644 index 0000000000000000000000000000000000000000..3d4f7299ead3484f5f6693684ab557ef2eaa52a6 GIT binary patch literal 136 zcmZ?wbhEHb^k(2@SjfZx1jhfNK=GfTb5UwyNotBhd1gt5g1e`00D}%l2}rR6lTT0o zO0~EAi&?hZ>VADI+U`N+O^+fqA*YaA6W)~`(>YQ1UUq(|_j2=jkKeR4-PhJoxz?kX gl76k($oO2Vk=4wg)t#zlOYRo&d*$BVADIx{9&J*KOLJ&W_|2>z=M&nDKjqd=K-dH9;mbs^9wUj}NeTBNFW% gT$H%w?yQ;WAu6dshGDKDySJ7Idl$?IVqmZa095-oT>t<8 literal 0 HcmV?d00001 diff --git a/help/html/features/fcsminmax.gif b/help/html/features/fcsminmax.gif new file mode 100644 index 0000000000000000000000000000000000000000..5d3fb29aad320427bcb41fb5cf812c060f148dcb GIT binary patch literal 104 zcmZ?wbhEHb^k(2@XkcOh0^|Sx75@o37o{eaq^2m8XO?6rxO@5rFzA3JLCPGMjC%T4 zo@V4_^;2wD+VDdq6`ey E0Ll3!lK=n! literal 0 HcmV?d00001 diff --git a/help/html/features/fcsntlabel.gif b/help/html/features/fcsntlabel.gif new file mode 100644 index 0000000000000000000000000000000000000000..16d6fc3aa47e72ef7735b8c8f4384d3b8d6e45d5 GIT binary patch literal 121 zcmZ?wbhEHb^k(2@XkcUjg8%>jEB+I7E=o--Nlj5G&n(GMaQE~LV9)_cf|NNhIrsFh zJbmE#yg6GMv-PeSzKCgkbXnD}-09wlZA(8LdMh*S1=l{qv)}*e-(1;rU=iQrpD7a# XDZSniSQz9t-?!^*==M7Sj11NQ+s`zP literal 0 HcmV?d00001 diff --git a/help/html/features/featureSettings.gif b/help/html/features/featureSettings.gif index cf786251a86d2bb9f0d2e4c1889858cda1ff51d1..31f245cef054c434a1ae91f3986215e3ee6fafa2 100755 GIT binary patch literal 23195 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 SzYKHCGS5tN%{Idv5CA(9M(Q^J literal 34630 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 Aj{pDw literal 0 HcmV?d00001 diff --git a/help/html/features/featuresFormat.html b/help/html/features/featuresFormat.html index 2e40a19..b7ddab5 100755 --- a/help/html/features/featuresFormat.html +++ b/help/html/features/featuresFormat.html @@ -33,7 +33,7 @@ type has a text label, and a colour specification. This can be either:
  • A single colour specified as either a red,green,blue 24 bit triplet in hexadecimal (eg. 00ff00) or as comma separated numbers (ranging from 0 to 255))
  • -
  • A graduated colour specified as a "|" separated list +
  • A graduated colourscheme specified as a "|" separated list of fields:
     <mincolor>|<maxcolor>|[absolute|]<minvalue>|<maxvalue>[|<thresholdtype>|[<threshold value>]]
     
    The fields are as follows diff --git a/help/html/features/featureschemes.html b/help/html/features/featureschemes.html new file mode 100644 index 0000000..7e4e5d8 --- /dev/null +++ b/help/html/features/featureschemes.html @@ -0,0 +1,57 @@ + + + +Sequence feature colour schemes + + + +

    Sequence feature colour schemes

    +

    Jalview can visualize annotation present on parts of a sequence by +overlaying colours according to the annotation present at each position. +It allows features to be colored either according to type, or for a +particular type, according to an individual feature's associated label +or score. The Feature Settings dialog +box controls the order and display of each sequence annotation type, and +also allows the colour scheme used for the the feature to be changed via +the 'Graduated Colour' option in the sequence feature pop-up menu +(obtained by right-clicking on a sequence feature).

    + +

    Graduated +feature colour scheme settings dialog box
    +

    The Graduated Feature Colour dialog box has the following +controls: +

      +
    • Colour by Label - when checked this derives a colour + for each feature based on the label text.
    • +
    • Min and Max Color boxes - Click on these boxes to set + the minimum and maximum colours used to shade features by their + associated score.
    • +
    • Threshold type combo box - Allows features to be + hidden features if their score is below or above a given threshold.
      + Set the threshold using the slider or type it in to the text + box. The threshold cannot be set outside the available range of feature + scores. +
    • +
    • Threshold is Min/Max - When checked, the threshold + will be used as the upper or lower limit when shading the features + according to their score using the Min and Max colour.
    • +
    +

    +

    Icon styles for graduated feature styles
    +

    When a graduated colourscheme is applied to a feature, it is indicated in the feature settings or amend feature dialog box by the following types of icon:
    +

    + + + + + + +
    Type of ColouringIcon
    Graduated colour by Feature Score
    Graduated colour thresholded (less than) by feature Score
    Graduated colour thresholded (greater than) by feature Score
    Colour by Feature Label (may also be thresholded)
    + + The current threshold is given in the + icon's tooltip. + +

    +Graduated feature colours were introduced in Jalview 2.5 + + diff --git a/help/html/features/featuresettings.html b/help/html/features/featuresettings.html index 7c4840d..6a89009 100755 --- a/help/html/features/featuresettings.html +++ b/help/html/features/featuresettings.html @@ -8,7 +8,7 @@ in an alignment window to open the feature settings dialog box, which allows you to precisely control the presence and appearance of sequence features for the current alignment.

    -
    +

    Sequence Feature Settings for the Jalview Application

    The top section of the dialog box lists all the sequence feature @@ -21,15 +21,18 @@ for a feature in the associated alignment by clicking on its colour box.Feature settings pop-up menu
    Right-click on a feature to open a pop-up menu that allows you to sort the alignment or current selection using that feature -type (see below), or create a feature colourscheme based on either the -scores associated with that feature or from the feature's description -(e.g. to distinguish different names associated with a DOMAIN feature).

    +type (see below), or create a feature +colourscheme based on either the scores associated with that feature or +from the feature's description (e.g. to distinguish different names +associated with a DOMAIN feature).

    Ordering alignment by features
    -The 'Order by Score' and 'Order by Density' buttons will order the +The 'Seq Sort by Score' and 'Seq Sort by Density' buttons will sort the alignment based on the average score or total number of currently active -features and groups on each sequence.
    -Feature sorting and colour feature by score and description was -introduced in jalview 2.4.1

    +features and groups on each sequence. To order the alignment using a +specific feature type, use the sort by .. entries in the pop-up +menu for that type.
    +Feature sorting and graduated feature colouring was introduced +in jalview 2.5

    Transparency and Feature Ordering

    It is important to realise that sequence features are often not diff --git a/help/html/features/seqfeatures.html b/help/html/features/seqfeatures.html index 13fd306..97db3bd 100755 --- a/help/html/features/seqfeatures.html +++ b/help/html/features/seqfeatures.html @@ -1,48 +1,64 @@ -Sequence Features + +Sequence Features +

    Sequence Features

    Jalview can colour parts of a sequence based on the presence of sequence features - which may be retrieved from database records (such as Uniprot), the result of sequence motif -searches or simply read from a sequence features file.

    +searches or simply read from a sequence +features file. You can also create +features from the results of searches or the current selection, and edit features by double clicking on +them.

    +

    Sequence Feature Colouring Styles

    +

    By default, Jalview will assign a color to each feature based on +its type. These colours can be changed from the feature settings and amend features dialog boxes. Since +Jalview 2.5, it is also possible to define feature +colourschemes to shade features based on their associated scores or text +labels.

    Sequence Feature Groups

    -

    Since Jalview 2.08, sequence features assigned to a sequence can be -organised into groups, which may indicate that the features were all retrieved -from the same database (such as Uniprot features), or generated by the -same analysis process (as might be specified in a sequence features file).

    +

    Since Jalview 2.08, sequence features assigned to a sequence can +be organised into groups, which may indicate that the features were all +retrieved from the same database (such as Uniprot features), or +generated by the same analysis process (as might be specified in a sequence features file).

    Sequence Feature Inheritance

    -

    Since Jalview 2.08, sequence features are global to a set of -sequences appearing (independently or together) in many different +

    Since Jalview 2.08, sequence features are global to a +set of sequences appearing (independently or together) in many different alignments. Practically, this means features loaded onto one alignment can be viewed in any alignments involving the same sequences. The same sequence appears in different alignments when a new alignment is generated by submitting an existing set of sequences to one of the -alignment or prediction web services, and when sequences are copied -and pasted into other alignment windows.

    +alignment or prediction web services, and when sequences are copied and +pasted into other alignment windows.

    View→Show Sequence Features

    Toggle the display of sequence features in this alignment. If feature retrieval has not already been carried out, then Jalview will automatically try to fetch sequence features (as described below).

    View→Sequence Feature Settings...

    -

    Once sequence features have been loaded, their display can be fully controlled - using the alignment window's Sequence Feature Settings dialog box. Feature - colour schemes and display parameters are unique to a particular alignment, - so it is possible to colour the same sequence features differently in different - alignment views.
    - Since Jalview 2.1, it is possible to add DAS features - to an alignment via the DAS tabbed pane of the feature settings window.

    -

    View→Sequence ID Tooltip→Show Non-Positional features
    - Only available in application

    -

    Toggles the display of non-positional features in the sequence ID tooltip, - and whether they will be included when sequence features are exported using - "File→Export Features".

    -

    Precalculated Sequence Features may be added to an alignment from the command - line, drag and drop, or from the "File→Load Features / Annotations" - menu item. See the Features File Format for - more details.

    +

    Once sequence features have been loaded, their display can be +fully controlled using the alignment window's Sequence Feature Settings dialog box. +Feature colour schemes and display parameters are unique to a particular +alignment, so it is possible to colour the same sequence features +differently in different alignment views.
    +Since Jalview 2.1, it is possible to add DAS +features to an alignment via the DAS tabbed pane of the feature settings +window.

    +

    View→Sequence ID Tooltip→Show +Non-Positional features
    +Only available in application
    +

    +

    Toggles the display of non-positional features in the sequence ID +tooltip, and whether they will be included when sequence features are +exported using "File→Export Features".

    +

    Precalculated Sequence Features may be added to an alignment from +the command line, drag and drop, or from the "File→Load +Features / Annotations" menu item. See the Features File Format for more details.

    diff --git a/src/jalview/gui/FeatureColourChooser.java b/src/jalview/gui/FeatureColourChooser.java index 1e26a3a..1898113 100644 --- a/src/jalview/gui/FeatureColourChooser.java +++ b/src/jalview/gui/FeatureColourChooser.java @@ -23,6 +23,7 @@ import java.util.*; import java.awt.*; import java.awt.event.*; import javax.swing.*; +import javax.swing.border.LineBorder; import javax.swing.event.*; import jalview.datamodel.*; @@ -145,7 +146,7 @@ public class FeatureColourChooser extends JPanel (max - min) / 2f, "Threshold", Color.black); - } + } adjusting = false; @@ -180,7 +181,7 @@ public class FeatureColourChooser extends JPanel { minColour.setFont(new java.awt.Font("Verdana", Font.PLAIN, 11)); - minColour.setBorder(BorderFactory.createEtchedBorder()); + minColour.setBorder(BorderFactory.createLineBorder(Color.black)); minColour.setPreferredSize(new Dimension(40, 20)); minColour.setToolTipText("Minimum Colour"); minColour.addMouseListener(new MouseAdapter() @@ -194,7 +195,7 @@ public class FeatureColourChooser extends JPanel } }); maxColour.setFont(new java.awt.Font("Verdana", Font.PLAIN, 11)); - maxColour.setBorder(BorderFactory.createEtchedBorder()); + maxColour.setBorder(BorderFactory.createLineBorder(Color.black)); maxColour.setPreferredSize(new Dimension(40, 20)); maxColour.setToolTipText("Maximum Colour"); maxColour.addMouseListener(new MouseAdapter() @@ -207,6 +208,11 @@ public class FeatureColourChooser extends JPanel } } }); + maxColour.setBorder(new LineBorder(Color.black)); + minText.setText("Min:"); + minText.setFont(new java.awt.Font("Verdana", Font.PLAIN, 11)); + maxText.setText("Max:"); + maxText.setFont(new java.awt.Font("Verdana", Font.PLAIN, 11)); ok.setOpaque(false); ok.setText("OK"); ok.addActionListener(new ActionListener() @@ -278,11 +284,14 @@ public class FeatureColourChooser extends JPanel colourByLabel_actionPerformed(actionEvent); } }); + colourPanel.setBackground(Color.white); jPanel1.add(ok); jPanel1.add(cancel); jPanel2.add(colourByLabel,java.awt.BorderLayout.WEST); jPanel2.add(colourPanel,java.awt.BorderLayout.EAST); + colourPanel.add(minText); colourPanel.add(minColour); + colourPanel.add(maxText); colourPanel.add(maxColour); this.add(jPanel3, java.awt.BorderLayout.CENTER); jPanel3.add(threshold); @@ -294,6 +303,8 @@ public class FeatureColourChooser extends JPanel } + JLabel minText = new JLabel(); + JLabel maxText = new JLabel(); JPanel minColour = new JPanel(); JPanel maxColour = new JPanel(); @@ -393,6 +404,7 @@ public class FeatureColourChooser extends JPanel slider.setEnabled(false); thresholdValue.setEnabled(false); thresholdValue.setText(""); + thresholdIsMin.setEnabled(false); } else if (aboveThreshold != AnnotationColourGradient.NO_THRESHOLD && threshline == null) @@ -418,6 +430,7 @@ public class FeatureColourChooser extends JPanel slider.setMajorTickSpacing((int) (range / 10f)); slider.setEnabled(true); thresholdValue.setEnabled(true); + thresholdIsMin.setEnabled(!colourByLabel.isSelected()); adjusting = false; } diff --git a/src/jalview/gui/FeatureRenderer.java b/src/jalview/gui/FeatureRenderer.java index 95d940d..6abe899 100755 --- a/src/jalview/gui/FeatureRenderer.java +++ b/src/jalview/gui/FeatureRenderer.java @@ -1033,7 +1033,12 @@ public class FeatureRenderer tmp.add(new JLabel("Colour: ", JLabel.RIGHT)); tmp.add(colour); colour.setPreferredSize(new Dimension(150, 15)); - + colour.setFont(new java.awt.Font("Verdana", Font.PLAIN, 9)); + colour.setForeground(Color.black); + colour.setHorizontalAlignment(SwingConstants.CENTER); + colour.setVerticalAlignment(SwingConstants.CENTER); + colour.setHorizontalTextPosition(SwingConstants.CENTER); + colour.setVerticalTextPosition(SwingConstants.CENTER); bigPanel.add(panel, BorderLayout.NORTH); panel = new JPanel(); @@ -1217,11 +1222,12 @@ public class FeatureRenderer colour.setIcon(null); colour.setToolTipText(null); colour.setText(""); + if (col2 instanceof Color) { colour.setBackground((Color)col2); } else { colour.setBackground(bigPanel.getBackground()); - colour.setForeground(bigPanel.getForeground()); + colour.setForeground(Color.black); FeatureSettings.renderGraduatedColor(colour, (GraduatedColor) col2); //colour.setForeground(colour.getBackground()); } diff --git a/src/jalview/gui/FeatureSettings.java b/src/jalview/gui/FeatureSettings.java index def0a09..1bb4adc 100755 --- a/src/jalview/gui/FeatureSettings.java +++ b/src/jalview/gui/FeatureSettings.java @@ -1381,6 +1381,8 @@ public class FeatureSettings extends JPanel public ColorRenderer() { setOpaque(true); // MUST do this for background to show up. + setHorizontalTextPosition(SwingConstants.CENTER); + setVerticalTextPosition(SwingConstants.CENTER); } public Component getTableCellRendererComponent(JTable table, @@ -1462,22 +1464,28 @@ public class FeatureSettings extends JPanel public static void renderGraduatedColor(JLabel comp, GraduatedColor gcol, int w, int h) { - + boolean thr=false; String tt = ""; String tx = ""; if (gcol.getThreshType() == AnnotationColourGradient.ABOVE_THRESHOLD) { - tx += "> "; + thr=true; + tx += ">"; tt += "Thresholded (Above " + gcol.getThresh() + ") "; } if (gcol.getThreshType() == AnnotationColourGradient.BELOW_THRESHOLD) { - tx += "< "; + thr=true; + tx += "<"; tt += "Thresholded (Below " + gcol.getThresh() + ") "; } if (gcol.isColourByLabel()) { tt = "Coloured by label text. " + tt; + if (thr) + { + tx+=" "; + } tx += "Label"; comp.setIcon(null); } @@ -1486,13 +1494,14 @@ public class FeatureSettings extends JPanel Color newColor = gcol.getMaxColor(); comp.setBackground(newColor); // System.err.println("Width is " + w / 2); - Icon ficon = new FeatureIcon(gcol, comp.getBackground(), w / 2, h); + Icon ficon = new FeatureIcon(gcol, comp.getBackground(), w, h, thr); comp.setIcon(ficon); // tt+="RGB value: Max (" + newColor.getRed() + ", " // + newColor.getGreen() + ", " + newColor.getBlue() // + ")\nMin (" + minCol.getRed() + ", " + minCol.getGreen() // + ", " + minCol.getBlue() + ")"); } + comp.setHorizontalAlignment(SwingConstants.CENTER); comp.setText(tx); if (tt.length() > 0) { @@ -1513,15 +1522,26 @@ class FeatureIcon implements Icon GraduatedColor gcol; Color backg; - + boolean midspace=false; int width = 50, height = 20; + int s1,e1; // start and end of midpoint band for thresholded symbol + Color mpcolour = Color.white; - FeatureIcon(GraduatedColor gfc, Color bg, int w, int h) + FeatureIcon(GraduatedColor gfc, Color bg, int w, int h, boolean mspace) { gcol = gfc; backg = bg; width = w; height = h; + midspace = mspace; + if (midspace) + { + s1=width/3; + e1=s1*2; + } else { + s1 = width/2; + e1 = s1; + } } public int getIconWidth() @@ -1558,7 +1578,14 @@ class FeatureIcon implements Icon { Color minCol = gcol.getMinColor(); g.setColor(minCol); - g.fillRect(0, 0, width, height); + g.fillRect(0, 0, s1, height); + if (midspace) + { + g.setColor(Color.white); + g.fillRect(s1,0,e1-s1, height); + } + g.setColor(gcol.getMaxColor()); + g.fillRect(0,e1, width-e1, height); } } } -- 1.7.10.2