X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Frenderer%2FAnnotationRenderer.java;h=1c125a660155b9052961725b7d67cb95210c8d63;hb=a8f483d04205bb8273ee311c12968b7e86d205fa;hp=a589d90e433ef7fad2d27efc41ddcbf5e71cba2c;hpb=69b788643ae7fe237cd7e9d8231e6d91d1664f79;p=jalview.git diff --git a/src/jalview/renderer/AnnotationRenderer.java b/src/jalview/renderer/AnnotationRenderer.java index a589d90..1c125a6 100644 --- a/src/jalview/renderer/AnnotationRenderer.java +++ b/src/jalview/renderer/AnnotationRenderer.java @@ -1,6 +1,6 @@ /* - * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8) - * Copyright (C) 2012 J Procter, AM Waterhouse, LM Lui, J Engelhardt, G Barton, M Clamp, S Searle + * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8.2) + * Copyright (C) 2014 The Jalview Authors * * This file is part of Jalview. * @@ -14,6 +14,7 @@ * 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.renderer; @@ -184,7 +185,7 @@ public class AnnotationRenderer int sCol = (lastSSX / charWidth) + startRes; int x1 = lastSSX; int x2 = (x * charWidth); - Regex closeparen = new Regex("}|]|<|a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z"); + Regex closeparen = new Regex("}|]|<|[a-z]"); String dc = (column == 0 || row_annotations[column - 1] == null) ? "" : row_annotations[column - 1].displayCharacter; @@ -364,6 +365,7 @@ public class AnnotationRenderer updateFromAwtRenderPanel(annotPanel, av); fm = g.getFontMetrics(); AlignmentAnnotation[] aa = av.getAlignment().getAlignmentAnnotation(); + int temp = 0; if (aa==null) { return false; @@ -648,267 +650,47 @@ public class AnnotationRenderer } } - if (ss == 'A') + if (ss >=65) { // distinguish between forward/backward base-pairing - if (row_annotations[column].displayCharacter.indexOf('a') > -1) + if (row_annotations[column].displayCharacter.indexOf(ss+32) > -1) { - ss = 'a'; + ss = (char) (ss+32); - } - } - - if (ss == 'B') - { - // distinguish between forward/backward base-pairing - if (row_annotations[column].displayCharacter.indexOf('b') > -1) - { - ss = 'b'; } } - if (ss == 'C') - { - // distinguish between forward/backward base-pairing - if (row_annotations[column].displayCharacter.indexOf('c') > -1) - { - ss = 'c'; - - } - } - if (ss == 'D') - { - // distinguish between forward/backward base-pairing - if (row_annotations[column].displayCharacter.indexOf('d') > -1) - { - ss = 'd'; - - } - } - if (ss == '1') - { - // distinguish between forward/backward base-pairing - if (row_annotations[column].displayCharacter.indexOf('e') > -1) - { - ss = 'e'; - - } - } - if (ss == 'F') - { - // distinguish between forward/backward base-pairing - if (row_annotations[column].displayCharacter.indexOf('f') > -1) - { - ss = 'f'; - - } - } - if (ss == 'G') - { - // distinguish between forward/backward base-pairing - if (row_annotations[column].displayCharacter.indexOf('g') > -1) - { - ss = 'g'; - - } - } - if (ss == '2') - { - // distinguish between forward/backward base-pairing - if (row_annotations[column].displayCharacter.indexOf('h') > -1) - { - ss = 'h'; - - } - } - if (ss == 'I') - { - // distinguish between forward/backward base-pairing - if (row_annotations[column].displayCharacter.indexOf('i') > -1) - { - ss = 'i'; - - } - } - if (ss == 'J') - { - // distinguish between forward/backward base-pairing - if (row_annotations[column].displayCharacter.indexOf('j') > -1) - { - ss = 'j'; - - } - } - if (ss == 'K') - { - // distinguish between forward/backward base-pairing - if (row_annotations[column].displayCharacter.indexOf('k') > -1) - { - ss = 'k'; - } - } - if (ss == 'L') - { - // distinguish between forward/backward base-pairing - if (row_annotations[column].displayCharacter.indexOf('l') > -1) - { - ss = 'l'; - - } - } - if (ss == 'M') - { - // distinguish between forward/backward base-pairing - if (row_annotations[column].displayCharacter.indexOf('m') > -1) - { - ss = 'm'; - - } - } - if (ss == 'N') - { - // distinguish between forward/backward base-pairing - if (row_annotations[column].displayCharacter.indexOf('n') > -1) - { - ss = 'n'; - - } - } - if (ss == 'O') - { - // distinguish between forward/backward base-pairing - if (row_annotations[column].displayCharacter.indexOf('o') > -1) - { - ss = 'o'; - - } - } - if (ss == 'P') - { - // distinguish between forward/backward base-pairing - if (row_annotations[column].displayCharacter.indexOf('p') > -1) - { - ss = 'p'; - - } - } - if (ss == 'Q') - { - // distinguish between forward/backward base-pairing - if (row_annotations[column].displayCharacter.indexOf('q') > -1) - { - ss = 'q'; - - } - } - if (ss == 'R') - { - // distinguish between forward/backward base-pairing - if (row_annotations[column].displayCharacter.indexOf('r') > -1) - { - ss = 'r'; - - } - } - if (ss == 'S') - { - // distinguish between forward/backward base-pairing - if (row_annotations[column].displayCharacter.indexOf('s') > -1) - { - ss = 's'; - - } - } - if (ss == 'T') - { - // distinguish between forward/backward base-pairing - if (row_annotations[column].displayCharacter.indexOf('t') > -1) - { - ss = 't'; - - } - } - if (ss == 'U') - { - // distinguish between forward/backward base-pairing - if (row_annotations[column].displayCharacter.indexOf('u') > -1) - { - ss = 'u'; - - } - } - if (ss == 'V') - { - // distinguish between forward/backward base-pairing - if (row_annotations[column].displayCharacter.indexOf('v') > -1) + if (!validRes || (ss != lastSS)) { - ss = 'v'; - } - } - if (ss == 'W') - { - // distinguish between forward/backward base-pairing - if (row_annotations[column].displayCharacter.indexOf('w') > -1) - { - ss = 'w'; - } - } - if (ss == 'X') - { - // distinguish between forward/backward base-pairing - if (row_annotations[column].displayCharacter.indexOf('x') > -1) + if (x > -1) { - ss = 'x'; - } - } - if (ss == 'Y') - { - // distinguish between forward/backward base-pairing - if (row_annotations[column].displayCharacter.indexOf('y') > -1) - { - ss = 'y'; - } - } - if (ss == 'Z') - { - // distinguish between forward/backward base-pairing - if (row_annotations[column].displayCharacter.indexOf('z') > -1) + int nb_annot=x-temp; + //System.out.println("\t type :"+lastSS+"\t x :"+x+"\t nbre annot :"+nb_annot); + switch (lastSS) { - ss = 'z'; - } - } - if (!validRes || (ss != lastSS)) - { - if (x > -1) - { - switch (lastSS) - { - case 'H': - drawHelixAnnot(g, row_annotations, lastSSX, x, y, - iconOffset, startRes, column, validRes, validEnd); + case '$': + drawHelixAnnot(g, row_annotations, lastSSX, x, y, iconOffset, startRes, + column, validRes, validEnd); break; - case 'E': - drawSheetAnnot(g, row_annotations, lastSSX, x, y, - iconOffset, startRes, column, validRes, validEnd); + case '�': + drawSheetAnnot(g, row_annotations, lastSSX, x, y, iconOffset, startRes, + column, validRes, validEnd); break; case '(': // Stem case for RNA secondary structure case ')': // and opposite direction drawStemAnnot(g, row_annotations, lastSSX, x, y, iconOffset, startRes, column, validRes, validEnd); -// case 'S': // Stem case for RNA secondary structure -// case 's': // and opposite direction -// drawStemAnnot(g, row_annotations, lastSSX, x, y, -// iconOffset, startRes, column, validRes, validEnd); + temp=x; break; case '{': case '}': @@ -924,13 +706,13 @@ public class AnnotationRenderer case 'c': case 'D': case 'd': - case '1': + case 'E': case 'e': case 'F': case 'f': case 'G': case 'g': - case '2': + case 'H': case 'h': case 'I': case 'i': @@ -968,16 +750,17 @@ public class AnnotationRenderer case 'y': case 'Z': case 'z': - //System.out.println(lastSS); + Color nonCanColor= getNotCanonicalColor(lastSS); drawNotCanonicalAnnot(g, nonCanColor, row_annotations, lastSSX, x, y, iconOffset, startRes, column, validRes, validEnd); + temp=x; break; default: g.setColor(Color.gray); g.fillRect(lastSSX, y + 6 + iconOffset, (x * charWidth) - lastSSX, 2); - + temp=x; break; } } @@ -1023,19 +806,21 @@ public class AnnotationRenderer { switch (lastSS) { - case 'H': - drawHelixAnnot(g, row_annotations, lastSSX, x, y, iconOffset, - startRes, column, validRes, validEnd); + case '$': + drawHelixAnnot(g, row_annotations, lastSSX, x, y, iconOffset, startRes, + column, validRes, validEnd); break; - case 'E': - drawSheetAnnot(g, row_annotations, lastSSX, x, y, iconOffset, - startRes, column, validRes, validEnd); + case '�': + drawSheetAnnot(g, row_annotations, lastSSX, x, y, iconOffset, startRes, + column, validRes, validEnd); break; case 's': case 'S': // Stem case for RNA secondary structure - drawStemAnnot(g, row_annotations, lastSSX, x, y, iconOffset, - startRes, column, validRes, validEnd); + + drawStemAnnot(g, row_annotations, lastSSX, x, y, iconOffset, startRes, + column, validRes, validEnd); + break; case '{': case '}': @@ -1051,13 +836,13 @@ public class AnnotationRenderer case 'c': case 'D': case 'd': - case '1': + case 'E': case 'e': case 'F': case 'f': case 'G': case 'g': - case '2': + case 'H': case 'h': case 'I': case 'i': @@ -1099,8 +884,8 @@ public class AnnotationRenderer column, validRes, validEnd); break; default: - drawGlyphLine(g, row_annotations, lastSSX, x, y, iconOffset, - startRes, column, validRes, validEnd); + drawGlyphLine(g, row_annotations, lastSSX, x, y, iconOffset, startRes, + column, validRes, validEnd); break; } } @@ -1138,8 +923,8 @@ public class AnnotationRenderer { if (aa[gg].graphGroup == row.graphGroup) { - drawLineGraph(g, aa[gg], aa[gg].annotations, startRes, - endRes, y, groupmin, groupmax, row.graphHeight); + drawLineGraph(g, aa[gg], aa[gg].annotations, startRes, endRes, y, groupmin, + groupmax, row.graphHeight); } } @@ -1147,8 +932,8 @@ public class AnnotationRenderer } else { - drawLineGraph(g, row, row_annotations, startRes, endRes, y, - row.graphMin, row.graphMax, row.graphHeight); + drawLineGraph(g, row, row_annotations, startRes, endRes, y, row.graphMin, + row.graphMax, row.graphHeight); } } else if (row.graph == AlignmentAnnotation.BAR_GRAPH) @@ -1207,17 +992,18 @@ public class AnnotationRenderer private Color sdNOTCANONICAL_COLOUR; - public void drawGlyphLine(Graphics g, Annotation[] row, int lastSSX, - int x, int y, int iconOffset, int startRes, int column, - boolean validRes, boolean validEnd) + public void drawGlyphLine(Graphics g, Annotation[] row, + int lastSSX, int x, int y, int iconOffset, int startRes, + int column, boolean validRes, boolean validEnd) { g.setColor(GLYPHLINE_COLOR); g.fillRect(lastSSX, y + 6 + iconOffset, (x * charWidth) - lastSSX, 2); } - public void drawSheetAnnot(Graphics g, Annotation[] row, int lastSSX, - int x, int y, int iconOffset, int startRes, int column, - boolean validRes, boolean validEnd) + public void drawSheetAnnot(Graphics g, Annotation[] row, + + int lastSSX, int x, int y, int iconOffset, int startRes, + int column, boolean validRes, boolean validEnd) { g.setColor(SHEET_COLOUR); @@ -1578,122 +1364,122 @@ public class AnnotationRenderer { case '{': case '}': - return Color.cyan; + return new Color(255,125,5); case '[': case ']': - return Color.green; + return new Color(245,115,10); case '>': case '<': - return Color.magenta; + return new Color(235,135,15); case 'A': case 'a': - return Color.orange; + return new Color(225,105,20); case 'B': case 'b': - return Color.pink; + return new Color(215,145,30); case 'C': case 'c': - return Color.red; + return new Color(205,95,35); case 'D': case 'd': - return Color.yellow; + return new Color(195,155,45); - case '1': + case 'E': case 'e': - return Color.black; + return new Color(185,85,55); case 'F': case 'f': - return Color.darkGray; + return new Color(175,165,65); case 'G': case 'g': - return Color.gray; + return new Color(170,75,75); - case '2': + case 'H': case 'h': - return Color.lightGray; + return new Color(160,175,85); case 'I': case 'i': - return Color.white; + return new Color(150,65,95); case 'J': case 'j': - return Color.cyan; + return new Color(140,185,105); case 'K': case 'k': - return Color.magenta; + return new Color(130,55,110); case 'L': case 'l': - return Color.orange; + return new Color(120,195,120); case 'M': case 'm': - return Color.red; + return new Color(110,45,130); case 'N': case 'n': - return Color.yellow; + return new Color(100,205,140); case 'O': case 'o': - return Color.pink; + return new Color(90,35,150); case 'P': case 'p': - return Color.black; + return new Color(85,215,160); case 'Q': case 'q': - return Color.blue; + return new Color(75,25,170); case 'R': case 'r': - return Color.cyan; + return new Color(65,225,180); case 'S': case 's': - return Color.magenta; + return new Color(55,15,185); case 'T': case 't': - return Color.darkGray; + return new Color(45,235,195); case 'U': case 'u': - return Color.yellow; + return new Color(35,5,205); case 'V': case 'v': - return Color.blue; + return new Color(25,245,215); case 'W': case 'w': - return Color.orange; + return new Color(15,0,225); case 'X': case 'x': - return Color.magenta; + return new Color(10,255,235); case 'Y': case 'y': - return Color.blue; + return new Color(5,150,245); case 'Z': case 'z': - return Color.blue; + return new Color(0,80,255); default : - System.out.println("This is not a interaction"); + System.out.println("This is not a interaction : "+lastss); return null; }