From 0ae0d247aec4361dc0a743d10abd3e9743d6c180 Mon Sep 17 00:00:00 2001 From: jprocter Date: Mon, 21 Aug 2006 12:45:09 +0000 Subject: [PATCH] remove gaps method from AlignFrame.remove_gaps_actionPerformed --- src/jalview/datamodel/Sequence.java | 57 ++++ src/jalview/datamodel/SequenceI.java | 560 +++++++++++++++++----------------- 2 files changed, 343 insertions(+), 274 deletions(-) diff --git a/src/jalview/datamodel/Sequence.java b/src/jalview/datamodel/Sequence.java index 0225c88..dd2517c 100755 --- a/src/jalview/datamodel/Sequence.java +++ b/src/jalview/datamodel/Sequence.java @@ -718,4 +718,61 @@ public class Sequence implements SequenceI return getSubSequence(start, getLength()); } + public int removeGaps() { + if (sequence!=null) + return removeGaps(0, getLength()); + return 0; + } + + public int removeGaps(int start, int end) { + int jSize = getLength(); + int oSize=jSize; + if (jSize<=start) + return 0; + if (end>jSize) + end = jSize; + + // Removing a range is much quicker than removing gaps + // one by one for long sequences + int j = start; + int rangeStart=-1, rangeEnd=-1; + + do + { + if (jalview.util.Comparison.isGap(getCharAt(j))) + { + if(rangeStart==-1) + { + rangeStart = j; + rangeEnd = j+1; + } + else + { + rangeEnd++; + } + j++; + } + else + { + if(rangeStart>-1) + { + deleteChars(rangeStart, rangeEnd); + j-=rangeEnd-rangeStart; + jSize-=rangeEnd-rangeStart; + rangeStart = -1; + rangeEnd = -1; + } + else + j++; + } + } + while (j < end && j < jSize); + if(rangeStart>-1) + { + deleteChars(rangeStart, rangeEnd); + jSize-=rangeEnd-rangeStart; + } + return oSize-jSize; // number of deleted characters. + } + } diff --git a/src/jalview/datamodel/SequenceI.java b/src/jalview/datamodel/SequenceI.java index 0842d94..6c9fa2a 100755 --- a/src/jalview/datamodel/SequenceI.java +++ b/src/jalview/datamodel/SequenceI.java @@ -1,274 +1,286 @@ -/* - * Jalview - A Sequence Alignment Editor and Viewer - * Copyright (C) 2005 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 - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program 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 this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA - */ -package jalview.datamodel; - -import java.util.*; - -import java.awt.*; - - -/** - * DOCUMENT ME! - * - * @author $author$ - * @version $Revision$ - */ -public interface SequenceI -{ - /** - * DOCUMENT ME! - * - * @param name DOCUMENT ME! - */ - public void setName(String name); - - /** - * DOCUMENT ME! - * - * @return DOCUMENT ME! - */ - public String getName(); - - - /** - * DOCUMENT ME! - * - * @param start DOCUMENT ME! - */ - public void setStart(int start); - - /** - * DOCUMENT ME! - * - * @return DOCUMENT ME! - */ - public int getStart(); - - /** - * DOCUMENT ME! - * - * @return DOCUMENT ME! - */ - public String getDisplayId(boolean jvsuffix); - - /** - * DOCUMENT ME! - * - * @param end DOCUMENT ME! - */ - public void setEnd(int end); - - /** - * DOCUMENT ME! - * - * @return DOCUMENT ME! - */ - public int getEnd(); - - /** - * DOCUMENT ME! - * - * @return DOCUMENT ME! - */ - public int getLength(); - - /** - * DOCUMENT ME! - * - * @param sequence DOCUMENT ME! - */ - public void setSequence(String sequence); - - /** - * DOCUMENT ME! - * - * @return DOCUMENT ME! - */ - public String getSequence(); - - /** - * DOCUMENT ME! - * - * @param start DOCUMENT ME! - * @param end DOCUMENT ME! - * - * @return DOCUMENT ME! - */ - public String getSequence(int start, int end); - /** - * create a new sequence object from start to end of this sequence - * @param start int - * @param end int - * @return SequenceI - */ - public SequenceI getSubSequence(int start, int end); - /** - * DOCUMENT ME! - * - * @param i DOCUMENT ME! - * - * @return DOCUMENT ME! - */ - public char getCharAt(int i); - - /** - * DOCUMENT ME! - * - * @param desc DOCUMENT ME! - */ - public void setDescription(String desc); - - /** - * DOCUMENT ME! - * - * @return DOCUMENT ME! - */ - public String getDescription(); - - /** - * DOCUMENT ME! - * - * @param pos DOCUMENT ME! - * - * @return DOCUMENT ME! - */ - public int findIndex(int pos); - - /** - * DOCUMENT ME! - * - * @param i DOCUMENT ME! - * - * @return DOCUMENT ME! - */ - public int findPosition(int i); - - /** - * DOCUMENT ME! - * - * @return DOCUMENT ME! - */ - public int[] gapMap(); - - /** - * DOCUMENT ME! - * - * @param i DOCUMENT ME! - * @param j DOCUMENT ME! - */ - public void deleteChars(int i, int j); - - /** - * DOCUMENT ME! - * - * @param i DOCUMENT ME! - */ - public void deleteCharAt(int i); - - /** - * DOCUMENT ME! - * - * @param i DOCUMENT ME! - * @param c DOCUMENT ME! - */ - public void insertCharAt(int i, char c); - - - /** - * DOCUMENT ME! - * - * @param c DOCUMENT ME! - */ - public void setColor(Color c); - - /** - * DOCUMENT ME! - * - * @return DOCUMENT ME! - */ - public Color getColor(); - - /** - * DOCUMENT ME! - * - * @return DOCUMENT ME! - */ - public SequenceFeature[] getSequenceFeatures(); - - /** - * DOCUMENT ME! - * - * @param v DOCUMENT ME! - */ - public void setSequenceFeatures(SequenceFeature [] features); - - /** - * DOCUMENT ME! - * - * @param id DOCUMENT ME! - */ - public void setPDBId(Vector ids); - - /** - * DOCUMENT ME! - * - * @return DOCUMENT ME! - */ - public Vector getPDBId(); - - public void addPDBId(PDBEntry entry); - - public String getVamsasId(); - - public void setVamsasId(String id); - - public void setDBRef(DBRefEntry[] dbs); - - public DBRefEntry [] getDBRef(); - - public void addDBRef(DBRefEntry entry); - - public void addSequenceFeature(SequenceFeature sf); - - public void setDatasetSequence(SequenceI seq); - - public SequenceI getDatasetSequence(); - - public AlignmentAnnotation [] getAnnotation(); - - public void addAlignmentAnnotation(AlignmentAnnotation annotation); - - public SequenceGroup getHiddenSequences(); - - public void addHiddenSequence(SequenceI seq); - - public void showHiddenSequence(SequenceI seq); - - public void changeCase(boolean toUpper, int start, int end); - - public void toggleCase(int start, int end); - - /** - * getSubSequence from start to end of sequence - * @param start first residue in subSequence - * @return SequenceI - */ - public SequenceI getSubSequence(int start); - -} +/* + * Jalview - A Sequence Alignment Editor and Viewer + * Copyright (C) 2005 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 + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program 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 this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + */ +package jalview.datamodel; + +import java.util.*; + +import java.awt.*; + + +/** + * DOCUMENT ME! + * + * @author $author$ + * @version $Revision$ + */ +public interface SequenceI +{ + /** + * DOCUMENT ME! + * + * @param name DOCUMENT ME! + */ + public void setName(String name); + + /** + * DOCUMENT ME! + * + * @return DOCUMENT ME! + */ + public String getName(); + + + /** + * DOCUMENT ME! + * + * @param start DOCUMENT ME! + */ + public void setStart(int start); + + /** + * DOCUMENT ME! + * + * @return DOCUMENT ME! + */ + public int getStart(); + + /** + * DOCUMENT ME! + * + * @return DOCUMENT ME! + */ + public String getDisplayId(boolean jvsuffix); + + /** + * DOCUMENT ME! + * + * @param end DOCUMENT ME! + */ + public void setEnd(int end); + + /** + * DOCUMENT ME! + * + * @return DOCUMENT ME! + */ + public int getEnd(); + + /** + * DOCUMENT ME! + * + * @return DOCUMENT ME! + */ + public int getLength(); + + /** + * DOCUMENT ME! + * + * @param sequence DOCUMENT ME! + */ + public void setSequence(String sequence); + + /** + * DOCUMENT ME! + * + * @return DOCUMENT ME! + */ + public String getSequence(); + + /** + * DOCUMENT ME! + * + * @param start DOCUMENT ME! + * @param end DOCUMENT ME! + * + * @return DOCUMENT ME! + */ + public String getSequence(int start, int end); + /** + * create a new sequence object from start to end of this sequence + * @param start int + * @param end int + * @return SequenceI + */ + public SequenceI getSubSequence(int start, int end); + /** + * DOCUMENT ME! + * + * @param i DOCUMENT ME! + * + * @return DOCUMENT ME! + */ + public char getCharAt(int i); + + /** + * DOCUMENT ME! + * + * @param desc DOCUMENT ME! + */ + public void setDescription(String desc); + + /** + * DOCUMENT ME! + * + * @return DOCUMENT ME! + */ + public String getDescription(); + + /** + * DOCUMENT ME! + * + * @param pos DOCUMENT ME! + * + * @return DOCUMENT ME! + */ + public int findIndex(int pos); + + /** + * DOCUMENT ME! + * + * @param i DOCUMENT ME! + * + * @return DOCUMENT ME! + */ + public int findPosition(int i); + + /** + * DOCUMENT ME! + * + * @return DOCUMENT ME! + */ + public int[] gapMap(); + + /** + * DOCUMENT ME! + * + * @param i DOCUMENT ME! + * @param j DOCUMENT ME! + */ + public void deleteChars(int i, int j); + + /** + * DOCUMENT ME! + * + * @param i DOCUMENT ME! + */ + public void deleteCharAt(int i); + + /** + * DOCUMENT ME! + * + * @param i DOCUMENT ME! + * @param c DOCUMENT ME! + */ + public void insertCharAt(int i, char c); + + + /** + * DOCUMENT ME! + * + * @param c DOCUMENT ME! + */ + public void setColor(Color c); + + /** + * DOCUMENT ME! + * + * @return DOCUMENT ME! + */ + public Color getColor(); + + /** + * DOCUMENT ME! + * + * @return DOCUMENT ME! + */ + public SequenceFeature[] getSequenceFeatures(); + + /** + * DOCUMENT ME! + * + * @param v DOCUMENT ME! + */ + public void setSequenceFeatures(SequenceFeature [] features); + + /** + * DOCUMENT ME! + * + * @param id DOCUMENT ME! + */ + public void setPDBId(Vector ids); + + /** + * DOCUMENT ME! + * + * @return DOCUMENT ME! + */ + public Vector getPDBId(); + + public void addPDBId(PDBEntry entry); + + public String getVamsasId(); + + public void setVamsasId(String id); + + public void setDBRef(DBRefEntry[] dbs); + + public DBRefEntry [] getDBRef(); + + public void addDBRef(DBRefEntry entry); + + public void addSequenceFeature(SequenceFeature sf); + + public void setDatasetSequence(SequenceI seq); + + public SequenceI getDatasetSequence(); + + public AlignmentAnnotation [] getAnnotation(); + + public void addAlignmentAnnotation(AlignmentAnnotation annotation); + + public SequenceGroup getHiddenSequences(); + + public void addHiddenSequence(SequenceI seq); + + public void showHiddenSequence(SequenceI seq); + + public void changeCase(boolean toUpper, int start, int end); + + public void toggleCase(int start, int end); + + /** + * getSubSequence from start to end of sequence + * @param start first residue in subSequence + * @return SequenceI + */ + public SequenceI getSubSequence(int start); + /** + * remove all gaps in the sequence + * @return number of gaps removed + */ + public int removeGaps(); + /** + * remove all gaps from start to end columns in sequence + * @param start + * @param end + * @return number of gaps removed + */ + public int removeGaps(int start, int end); + +} -- 1.7.10.2