X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fappletgui%2FRedundancyPanel.java;h=5037a501146653e94b68c1d9a16ccaa93cf5c9a4;hb=c81d6a208befb129634f33cb154b4043dfcd20fb;hp=273261243a5caf061ee9bf527e6fb64859b1945c;hpb=7928c1a7fab123e9e8baa935f37ab08a965341e7;p=jalview.git diff --git a/src/jalview/appletgui/RedundancyPanel.java b/src/jalview/appletgui/RedundancyPanel.java index 2732612..5037a50 100755 --- a/src/jalview/appletgui/RedundancyPanel.java +++ b/src/jalview/appletgui/RedundancyPanel.java @@ -1,6 +1,6 @@ /* * Jalview - A Sequence Alignment Editor and Viewer - * Copyright (C) 2005 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle + * Copyright (C) 2006 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -33,16 +33,16 @@ public class RedundancyPanel extends SliderPanel implements Runnable, WindowList AlignmentPanel ap; Stack historyList = new Stack(); // simpler than synching with alignFrame. - Vector originalSequences; - Hashtable originalColours; - SequenceI[] oldAlignment; float [] redundancy; + SequenceI [] originalSequences; Frame frame; + Vector redundantSeqs; public RedundancyPanel(AlignmentPanel ap) { super(ap, 0, false, null); + redundantSeqs = new Vector(); this.ap = ap; undoButton.setVisible(true); applyButton.setVisible(true); @@ -52,7 +52,7 @@ public class RedundancyPanel extends SliderPanel implements Runnable, WindowList valueField.setText("100"); slider.setVisibleAmount(1); - slider.setMinimum(40); + slider.setMinimum(0); slider.setMaximum(100+slider.getVisibleAmount()); slider.setValue(100); @@ -95,65 +95,65 @@ public class RedundancyPanel extends SliderPanel implements Runnable, WindowList validate(); - Vector sel = new Vector(); + String[] omitHidden = null; + SequenceGroup sg = ap.av.getSelectionGroup(); int height; - originalSequences = new Vector(); - originalColours = new Hashtable(); - if ( (sg != null) && (sg.getSize() >= 1)) + int start, end; + + if ( (sg != null) && (sg.getSize(false) >= 1)) { - height = sg.getSize(); - for (int i = 0; i < sg.getSize(); i++) - { - sel.addElement(sg.getSequenceAt(i)); - } + originalSequences = sg.getSequencesInOrder(ap.av.alignment); + start = sg.getStartRes(); + end = sg.getEndRes(); } else { - height = ap.av.alignment.getHeight(); - for (int i = 0; i < ap.av.alignment.getHeight(); i++) - { - sel.addElement(ap.av.alignment.getSequenceAt(i)); - } + originalSequences = ap.av.alignment.getSequencesArray(); + start = 0; + end = ap.av.alignment.getWidth(); } + height = originalSequences.length; + redundancy = new float[height]; for (int i = 0; i < height; i++) { redundancy[i] = 0f; } + // if (ap.av.hasHiddenColumns) + { + // omitHidden = ap.av.getSelectionAsString(); + } + // long start = System.currentTimeMillis(); float pid; - SequenceI seqi, seqj; - for (int i = 0; i < sel.size(); i++) + String seqi, seqj; + for (int i = 0; i < height; i++) { - originalSequences.addElement(sel.elementAt(i)); - originalColours.put(sel.elementAt(i), - ((SequenceI) sel.elementAt(i)).getColor()); - for (int j = 0; j < i; j++) { if(i==j) continue; - seqi = (SequenceI) sel.elementAt(i); - seqj = (SequenceI) sel.elementAt(j); - - if (sg != null) + if(omitHidden==null) { - pid = jalview.util.Comparison.PID(seqi, - seqj, - sg.getStartRes(), sg.getEndRes()); + seqi = originalSequences[i].getSequence(start, end); + seqj = originalSequences[j].getSequence(start, end); } else - pid = jalview.util.Comparison.PID( seqi, seqj ); + { + seqi = omitHidden[i]; + seqj = omitHidden[j]; + } + pid = jalview.util.Comparison.PID( seqi, seqj ); - if(seqj.getLength() < seqi.getLength()) + if(seqj.length() < seqi.length()) redundancy[j] = Math.max(pid, redundancy[j]); else redundancy[i] = Math.max(pid, redundancy[i]); @@ -181,11 +181,13 @@ public class RedundancyPanel extends SliderPanel implements Runnable, WindowList for(int i=0; i redundancy[i]) - ((SequenceI)originalSequences.elementAt(i)).setColor(java.awt.Color.white); - else - ((SequenceI)originalSequences.elementAt(i)).setColor(java.awt.Color.red); + redundantSeqs.removeElement(originalSequences[i]); + else if(!redundantSeqs.contains(originalSequences[i])) + redundantSeqs.addElement(originalSequences[i]); } + ap.idPanel.idCanvas.setHighlighted(redundantSeqs); + PaintRefresher.Refresh(null,ap.av.alignment); } @@ -212,7 +214,7 @@ public class RedundancyPanel extends SliderPanel implements Runnable, WindowList { if (value <= redundancy[i]) { - SequenceI seq = (SequenceI) originalSequences.elementAt(i); + SequenceI seq = originalSequences[i]; ap.av.alignment.deleteSequence(seq); del.addElement(seq); if (sg != null) @@ -270,13 +272,7 @@ public class RedundancyPanel extends SliderPanel implements Runnable, WindowList public void windowClosing(WindowEvent evt) { - for(int i=0; i