X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fdatamodel%2FSequenceGroup.java;h=31ccf69ac35c60bb7de8863d7f7a662a4743d4e2;hb=1b1a1007c534a02fdbae76df0c084f215c7c4c21;hp=272d81de257978e7dc9a3f4d56208bb37dc2ad5a;hpb=eb7824b3ecfdef2aa8c83e4a8520cb866f364d88;p=jalview.git diff --git a/src/jalview/datamodel/SequenceGroup.java b/src/jalview/datamodel/SequenceGroup.java index 272d81d..31ccf69 100755 --- a/src/jalview/datamodel/SequenceGroup.java +++ b/src/jalview/datamodel/SequenceGroup.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 @@ -36,11 +36,12 @@ import java.util.*; public class SequenceGroup { String groupName; + String description; Conservation conserve; Vector aaFrequency; - boolean displayBoxes; - boolean displayText; - boolean colourText; + boolean displayBoxes = true; + boolean displayText = true; + boolean colourText = true; private Vector sequences = new Vector(); int width = -1; @@ -49,17 +50,17 @@ public class SequenceGroup int startRes = 0; int endRes = 0; Color outlineColour = Color.black; + public int thresholdTextColour = 0; + public Color textColour = Color.black; + public Color textColour2 = Color.white; + /** * Creates a new SequenceGroup object. */ public SequenceGroup() { - groupName = "Group"; - this.displayBoxes = true; - this.displayText = true; - this.colourText = false; - cs = null; + groupName = "JGroup:"+this.hashCode(); } /** @@ -89,69 +90,22 @@ public class SequenceGroup recalcConservation(); } - /** - * Creates a new SequenceGroup object. - * - * @param groupName DOCUMENT ME! - * @param scheme DOCUMENT ME! - * @param displayBoxes DOCUMENT ME! - * @param displayText DOCUMENT ME! - * @param colourText DOCUMENT ME! - * @param start DOCUMENT ME! - * @param end DOCUMENT ME! - */ - public SequenceGroup(String groupName, ColourSchemeI scheme, - boolean displayBoxes, boolean displayText, boolean colourText, - int start, int end) - { - this.groupName = groupName; - this.displayBoxes = displayBoxes; - this.displayText = displayText; - this.colourText = colourText; - this.cs = scheme; - startRes = start; - endRes = end; - } - public SequenceI [] getSelectionAsNewSequences(AlignmentI align) { int iSize = sequences.size(); SequenceI [] seqs = new SequenceI[iSize]; SequenceI [] inorder = getSequencesInOrder(align); - char ch; - int sres, eres; for (int i = 0; i < iSize; i++) { SequenceI seq = inorder[i]; - //FIND START RES - //Returns residue following index if gap - sres = seq.findPosition(startRes); - - //FIND END RES - //Need to find the residue preceeding index if gap - eres = 0; - - for (int j = 0; j < endRes + 1 && j < seq.getLength(); j++) - { - ch = seq.getCharAt(j); - if (!jalview.util.Comparison.isGap( (ch))) - { - eres++; - } - } - - if (eres > 0) - { - eres += seq.getStart() - 1; - } - seqs[i] = new Sequence(seq.getName(), seq.getSequence(startRes, endRes + 1), - sres, - eres); + seq.findPosition(startRes), + findEndRes(seq)); + seqs[i].setDescription(seq.getDescription()); seqs[i].setDBRef(seq.getDBRef()); seqs[i].setSequenceFeatures(seq.getSequenceFeatures()); @@ -169,25 +123,55 @@ public class SequenceGroup } - public Vector getSequences(boolean includeHidden) + /** + * If sequence ends in gaps, the end residue can + * be correctly calculated here + * @param seq SequenceI + * @return int + */ + public int findEndRes(SequenceI seq) + { + int eres = 0; + char ch; + + for (int j = 0; j < endRes + 1 && j < seq.getLength(); j++) + { + ch = seq.getCharAt(j); + if (!jalview.util.Comparison.isGap( (ch))) + { + eres++; + } + } + + if (eres > 0) + { + eres += seq.getStart() - 1; + } + + return eres; + } + + public Vector getSequences(Hashtable hiddenReps) { - if(!includeHidden) + if(hiddenReps == null) return sequences; else { Vector allSequences = new Vector(); - SequenceI seq; + SequenceI seq, seq2; for (int i = 0; i < sequences.size(); i++) { seq = (SequenceI) sequences.elementAt(i); allSequences.addElement(seq); - if (seq.getHiddenSequences() != null) + if (hiddenReps.containsKey(seq) ) { - for (int h = 0; h < seq.getHiddenSequences().getSize(false); h++) + SequenceGroup hsg = (SequenceGroup)hiddenReps.get(seq); + for (int h = 0; h < hsg.getSize(); h++) { - allSequences.addElement( - seq.getHiddenSequences().getSequenceAt(h) - ); + seq2 = hsg.getSequenceAt(h); + if (seq2 != seq + && !allSequences.contains(seq2)) + allSequences.addElement(seq2); } } } @@ -196,6 +180,18 @@ public class SequenceGroup } } + public SequenceI[] getSequencesAsArray(Hashtable hiddenReps) + { + Vector tmp = getSequences(hiddenReps); + if(tmp==null) + return null; + SequenceI [] result = new SequenceI[tmp.size()]; + for(int i=0; i