X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fviewmodel%2FAlignmentViewport.java;h=b33f4515ab250ca568af68ec94cf78967ac6ce80;hb=865a855a4ca87eadb3e5ff284ed32ed307d9c34b;hp=f37e2bd4132ef6e8e98db453181366b140fdfbd0;hpb=b57a02c25e335d033c97f8a6bacd6b54f62bd2b6;p=jalview.git diff --git a/src/jalview/viewmodel/AlignmentViewport.java b/src/jalview/viewmodel/AlignmentViewport.java index f37e2bd..b33f451 100644 --- a/src/jalview/viewmodel/AlignmentViewport.java +++ b/src/jalview/viewmodel/AlignmentViewport.java @@ -1,19 +1,20 @@ /* - * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8) - * Copyright (C) 2011 J Procter, AM Waterhouse, J Engelhardt, LM Lui, G Barton, M Clamp, S Searle - * + * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8.0b1) + * Copyright (C) 2014 The Jalview Authors + * * This file is part of Jalview. - * + * * Jalview is free software: you can redistribute it and/or - * modify it under the terms of the GNU General Public License + * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. - * - * Jalview is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty - * of MERCHANTABILITY or FITNESS FOR A PARTICULAR + * + * Jalview is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty + * of MERCHANTABILITY or FITNESS FOR A PARTICULAR * 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.viewmodel; @@ -41,6 +42,7 @@ import jalview.workers.ConsensusThread; import jalview.workers.StrucConsensusThread; import java.util.ArrayList; +import java.util.BitSet; import java.util.Hashtable; import java.util.List; import java.util.Map; @@ -402,7 +404,8 @@ public abstract class AlignmentViewport implements AlignViewportI if (autoCalculateStrucConsensus && strucConsensus == null && alignment.isNucleotide() && alignment.hasRNAStructure()) { - + // secondary structure has been added - so init the consensus line + initRNAStructure(); } // see note in mantis : issue number 8585 @@ -593,6 +596,7 @@ public abstract class AlignmentViewport implements AlignViewportI * * @return null or the currently selected sequence region */ + @Override public SequenceGroup getSelectionGroup() { return selectionGroup; @@ -605,6 +609,7 @@ public abstract class AlignmentViewport implements AlignViewportI * - group holding references to sequences in this alignment view * */ + @Override public void setSelectionGroup(SequenceGroup sg) { selectionGroup = sg; @@ -1053,6 +1058,7 @@ public abstract class AlignmentViewport implements AlignViewportI * * @return array of references to sequence objects */ + @Override public SequenceI[] getSequenceSelection() { SequenceI[] sequences = null; @@ -1075,6 +1081,7 @@ public abstract class AlignmentViewport implements AlignViewportI * * @return String[] */ + @Override public jalview.datamodel.CigarArray getViewAsCigars( boolean selectedRegionOnly) { @@ -1091,6 +1098,7 @@ public abstract class AlignmentViewport implements AlignViewportI * boolean true to just return the selected view * @return AlignmentView */ + @Override public jalview.datamodel.AlignmentView getAlignmentView( boolean selectedOnly) { @@ -1109,6 +1117,7 @@ public abstract class AlignmentViewport implements AlignViewportI * is true) * @return AlignmentView */ + @Override public jalview.datamodel.AlignmentView getAlignmentView( boolean selectedOnly, boolean markGroups) { @@ -1124,6 +1133,7 @@ public abstract class AlignmentViewport implements AlignViewportI * * @return String[] */ + @Override public String[] getViewAsString(boolean selectedRegionOnly) { String[] selection = null; @@ -1318,62 +1328,80 @@ public abstract class AlignmentViewport implements AlignViewportI { if (!alignment.isNucleotide()) { - if (showConservation) - { - if (conservation == null) - { - conservation = new AlignmentAnnotation("Conservation", - "Conservation of total alignment less than " - + getConsPercGaps() + "% gaps", - new Annotation[1], 0f, 11f, - AlignmentAnnotation.BAR_GRAPH); - conservation.hasText = true; - conservation.autoCalculated = true; - alignment.addAnnotation(conservation); - } - } - if (showQuality) - { - if (quality == null) - { - quality = new AlignmentAnnotation("Quality", - "Alignment Quality based on Blosum62 scores", - new Annotation[1], 0f, 11f, - AlignmentAnnotation.BAR_GRAPH); - quality.hasText = true; - quality.autoCalculated = true; - alignment.addAnnotation(quality); - } - } + initConservation(); + initQuality(); } else { - if (alignment.hasRNAStructure()) - { - strucConsensus = new AlignmentAnnotation("StrucConsensus", "PID", - new Annotation[1], 0f, 100f, - AlignmentAnnotation.BAR_GRAPH); - strucConsensus.hasText = true; - strucConsensus.autoCalculated = true; - } + initRNAStructure(); } + initConsensus(); + } + } - consensus = new AlignmentAnnotation("Consensus", "PID", - new Annotation[1], 0f, 100f, AlignmentAnnotation.BAR_GRAPH); - consensus.hasText = true; - consensus.autoCalculated = true; + private void initConsensus() + { - if (showConsensus) + consensus = new AlignmentAnnotation("Consensus", "PID", + new Annotation[1], 0f, 100f, AlignmentAnnotation.BAR_GRAPH); + consensus.hasText = true; + consensus.autoCalculated = true; + + if (showConsensus) + { + alignment.addAnnotation(consensus); + } + } + + private void initConservation() + { + if (showConservation) + { + if (conservation == null) { - alignment.addAnnotation(consensus); - if (strucConsensus != null) - { - alignment.addAnnotation(strucConsensus); - } + conservation = new AlignmentAnnotation("Conservation", + "Conservation of total alignment less than " + + getConsPercGaps() + "% gaps", + new Annotation[1], 0f, 11f, + AlignmentAnnotation.BAR_GRAPH); + conservation.hasText = true; + conservation.autoCalculated = true; + alignment.addAnnotation(conservation); + } + } + } + private void initQuality() + { + if (showQuality) + { + if (quality == null) + { + quality = new AlignmentAnnotation("Quality", + "Alignment Quality based on Blosum62 scores", + new Annotation[1], 0f, 11f, + AlignmentAnnotation.BAR_GRAPH); + quality.hasText = true; + quality.autoCalculated = true; + alignment.addAnnotation(quality); } } } + private void initRNAStructure() + { + if (alignment.hasRNAStructure() && strucConsensus==null) + { + strucConsensus = new AlignmentAnnotation("StrucConsensus", "PID", + new Annotation[1], 0f, 100f, + AlignmentAnnotation.BAR_GRAPH); + strucConsensus.hasText = true; + strucConsensus.autoCalculated = true; + if (showConsensus) + { + alignment.addAnnotation(strucConsensus); + } + } + } /* * (non-Javadoc) * @@ -1387,7 +1415,7 @@ public abstract class AlignmentViewport implements AlignViewportI int charHeight = getCharHeight(); if (aa != null) { - boolean graphgrp[] = null; + BitSet graphgrp = new BitSet(); for (int i = 0; i < aa.length; i++) { if (aa[i] == null) @@ -1401,17 +1429,13 @@ public abstract class AlignmentViewport implements AlignViewportI } if (aa[i].graphGroup > -1) { - if (graphgrp == null) - { - graphgrp = new boolean[aa.length]; - } - if (graphgrp[aa[i].graphGroup]) + if (graphgrp.get(aa[i].graphGroup)) { continue; } else { - graphgrp[aa[i].graphGroup] = true; + graphgrp.set(aa[i].graphGroup); } } aa[i].height = 0;