X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fdatamodel%2FAlignment.java;h=3a1b44a6ef095fba286bf110f71a41acc3f4b0dd;hb=32ce9ddb7ce1a68add53dd81785ae428ca136a83;hp=28849b608ea6fa87ff6d94cd29d3c84e74604f85;hpb=efc31b4a8d5cee63555586804a2b79c06bdb5a14;p=jalview.git diff --git a/src/jalview/datamodel/Alignment.java b/src/jalview/datamodel/Alignment.java index 28849b6..3a1b44a 100755 --- a/src/jalview/datamodel/Alignment.java +++ b/src/jalview/datamodel/Alignment.java @@ -29,10 +29,15 @@ import java.util.*; */ public class Alignment implements AlignmentI { + protected Alignment dataset; protected Vector sequences; protected Vector groups = new Vector(); protected Vector superGroup = new Vector(); protected char gapCharacter = '-'; + protected Provenance provenance; + protected int type = NUCLEOTIDE; + public static final int PROTEIN = 0; + public static final int NUCLEOTIDE = 1; /** DOCUMENT ME!! */ public AlignmentAnnotation[] annotations; @@ -46,9 +51,16 @@ public class Alignment implements AlignmentI */ public Alignment(SequenceI[] seqs) { + int i=0; + + if( jalview.util.Comparison.isNucleotide(seqs)) + type = NUCLEOTIDE; + else + type = PROTEIN; + sequences = new Vector(); - for (int i = 0; i < seqs.length; i++) + for (i = 0; i < seqs.length; i++) { sequences.addElement(seqs[i]); } @@ -334,9 +346,16 @@ public class Alignment implements AlignmentI { Vector temp = new Vector(); - for (int i = 0; i < this.groups.size(); i++) + int gSize = groups.size(); + for (int i = 0; i < gSize; i++) { SequenceGroup sg = (SequenceGroup) groups.elementAt(i); + if(sg==null || sg.sequences==null) + { + this.deleteGroup(sg); + gSize--; + continue; + } if (sg.sequences.contains(s)) { @@ -439,11 +458,9 @@ public class Alignment implements AlignmentI while (i < sequences.size()) { - SequenceI s = getSequenceAt(i); - - if (s.getName().equals(name)) + if (getSequenceAt(i).getName().equals(name)) { - return s; + return getSequenceAt(i); } i++; @@ -452,25 +469,6 @@ public class Alignment implements AlignmentI return null; } - /** */ - public SequenceI findbyDisplayId(String name) - { - int i = 0; - - while (i < sequences.size()) - { - SequenceI s = getSequenceAt(i); - - if (s.getDisplayId().equals(name)) - { - return s; - } - - i++; - } - - return null; - } /** */ public int findIndex(SequenceI s) @@ -651,6 +649,7 @@ public class Alignment implements AlignmentI aSize = annotations.length + 1; } + AlignmentAnnotation[] temp = new AlignmentAnnotation[aSize]; int i = 0; @@ -676,4 +675,64 @@ public class Alignment implements AlignmentI { return annotations; } + + public void setNucleotide(boolean b) + { + if(b) + type = NUCLEOTIDE; + else + type = PROTEIN; + } + + public boolean isNucleotide() + { + if(type==NUCLEOTIDE) + return true; + else + return false; + } + + public void setDataset(Alignment data) + { + if(dataset==null && data==null) + { + // Create a new dataset for this alignment. + // Can only be done once, if dataset is not null + // This will not be performed + Sequence[] seqs = new Sequence[getHeight()]; + for (int i = 0; i < getHeight(); i++) + { + + seqs[i] = new Sequence(getSequenceAt(i).getDisplayId(true), + AlignSeq.extractGaps( + jalview.util.Comparison.GapChars, + getSequenceAt(i).getSequence() + ), + getSequenceAt(i).getStart(), + getSequenceAt(i).getEnd()); + + getSequenceAt(i).setDatasetSequence(seqs[i]); + } + + dataset = new Alignment(seqs); + } + else if(dataset==null && data!=null) + { + dataset = data; + } + } + + public Alignment getDataset() + { + return dataset; + } + + public void setProvenance(Provenance prov) + { + provenance = prov; + } + public Provenance getProvenance() + { + return provenance; + } }