X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fschemes%2FClustalxColourScheme.java;h=5a2d5dcad406e9bae6954929c86266e83020005e;hb=58735c979dbb573eb12d57e33ef7d6e3f3a82c8e;hp=49260a4448647785c54e6c8713f25d565a12e4f1;hpb=8e1be43e250107a4d86898bd554cf03098fa5957;p=jalview.git diff --git a/src/jalview/schemes/ClustalxColourScheme.java b/src/jalview/schemes/ClustalxColourScheme.java index 49260a4..5a2d5dc 100755 --- a/src/jalview/schemes/ClustalxColourScheme.java +++ b/src/jalview/schemes/ClustalxColourScheme.java @@ -20,14 +20,16 @@ */ package jalview.schemes; -import jalview.datamodel.AnnotatedCollectionI; -import jalview.datamodel.SequenceCollectionI; -import jalview.datamodel.SequenceI; - import java.awt.Color; import java.util.List; import java.util.Map; +import jalview.api.AlignViewportI; +import jalview.datamodel.AnnotatedCollectionI; +import jalview.datamodel.SequenceCollectionI; +import jalview.datamodel.SequenceI; +import jalview.util.Comparison; + public class ClustalxColourScheme extends ResidueColourScheme { private static final int EIGHTY_FIVE = 85; @@ -42,8 +44,8 @@ public class ClustalxColourScheme extends ResidueColourScheme { RED(0.9f, 0.2f, 0.1f), BLUE(0.5f, 0.7f, 0.9f), GREEN(0.1f, 0.8f, 0.1f), ORANGE(0.9f, 0.6f, 0.3f), CYAN(0.1f, 0.7f, 0.7f), - PINK(0.9f, 0.5f, 0.5f), MAGENTA(0.8f, 0.3f, 0.8f), YELLOW(0.8f, 0.8f, - 0.0f); + PINK(0.9f, 0.5f, 0.5f), MAGENTA(0.8f, 0.3f, 0.8f), + YELLOW(0.8f, 0.8f, 0.0f); final Color colour; @@ -52,6 +54,7 @@ public class ClustalxColourScheme extends ResidueColourScheme colour = new Color(r, g, b); } } + private class ConsensusColour { Consensus[] cons; @@ -92,7 +95,7 @@ public class ClustalxColourScheme extends ResidueColourScheme } @Override - public void alignmentChanged(AnnotatedCollectionI alignment, + public synchronized void alignmentChanged(AnnotatedCollectionI alignment, Map hiddenReps) { int maxWidth = alignment.getWidth(); @@ -105,19 +108,18 @@ public class ClustalxColourScheme extends ResidueColourScheme for (SequenceI sq : seqs) { - char[] seq = sq.getSequence(); - - int end_j = seq.length - 1; + int end_j = sq.getLength() - 1; + int length = sq.getLength(); for (int i = 0; i <= end_j; i++) { - if ((seq.length - 1) < i) + if (length - 1 < i) { res = 23; } else { - res = ResidueProperties.aaIndex[seq[i]]; + res = ResidueProperties.aaIndex[sq.getCharAt(i)]; } cons2[i][res]++; } @@ -276,12 +278,10 @@ public class ClustalxColourScheme extends ResidueColourScheme } @Override - protected Color findColour(char c, int j, SequenceI seq) + protected synchronized Color findColour(char c, int j, SequenceI seq) { - Color currentColour; - // TODO why the test for includeGaps here? - if (cons2.length <= j + if (cons2.length <= j || Comparison.isGap(c) /*|| (includeGaps && threshold != 0 && !aboveThreshold(c, j))*/) { return Color.white; @@ -289,34 +289,33 @@ public class ClustalxColourScheme extends ResidueColourScheme int i = ResidueProperties.aaIndex[c]; - currentColour = Color.white; + Color colour = Color.white; if (i > 19) { - return currentColour; + return colour; } for (int k = 0; k < residueColour[i].cons.length; k++) { - if (residueColour[i].cons[k].isConserved(cons2, j, size, - includeGaps)) + if (residueColour[i].cons[k].isConserved(cons2, j, size, includeGaps)) { - currentColour = residueColour[i].c; + colour = residueColour[i].c; } } if (i == 4) { /* - * override to colour C pink if 100% conserved + * override to colour C pink if >85% conserved */ if (conses[27].isConserved(cons2, j, size, includeGaps)) { - currentColour = ClustalColour.PINK.colour; + colour = ClustalColour.PINK.colour; } } - return currentColour; + return colour; } /** @@ -337,11 +336,11 @@ public class ClustalxColourScheme extends ResidueColourScheme } @Override - public ColourSchemeI getInstance(AnnotatedCollectionI sg, - Map hiddenRepSequences) + public ColourSchemeI getInstance(AlignViewportI view, + AnnotatedCollectionI sg) { ClustalxColourScheme css = new ClustalxColourScheme(sg, - hiddenRepSequences); + view == null ? null : view.getHiddenRepSequences()); css.includeGaps = includeGaps; return css; }