X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fdatamodel%2FSequence.java;h=42303660de8a07b5f50bd7454509edaf43460a2d;hb=bbc8fc127287ad3a11f0b470d37d741ddca162ff;hp=f8e70b1d36f28da6976fa30d69c93de00869acc9;hpb=569a95435f50f9537f9d49dcc796a3c8f918cae1;p=jalview.git diff --git a/src/jalview/datamodel/Sequence.java b/src/jalview/datamodel/Sequence.java index f8e70b1..4230366 100755 --- a/src/jalview/datamodel/Sequence.java +++ b/src/jalview/datamodel/Sequence.java @@ -27,6 +27,7 @@ import jalview.util.Comparison; import jalview.util.DBRefUtils; import jalview.util.MapList; import jalview.util.StringUtils; +import jalview.workers.InformationThread; import java.util.ArrayList; import java.util.Arrays; @@ -82,6 +83,9 @@ public class Sequence extends ASequence implements SequenceI private String vamsasId; + HiddenMarkovModel hmm; + + boolean isHMMConsensusSequence = false; private DBModList dbrefs; // controlled access /** @@ -254,6 +258,21 @@ public class Sequence extends ASequence implements SequenceI } /** + * Create a new sequence object from a characters array using default values + * of 1 and -1 for start and end. The array used to create the sequence is + * copied and is not stored internally. + * + * @param name + * sequence name + * @param sequence + * list of residues + */ + public Sequence(String name, char[] sequence) + { + this(name, Arrays.copyOf(sequence, sequence.length), 1, -1); + } + + /** * Creates a new Sequence object with new AlignmentAnnotations but inherits * any existing dataset sequence reference. If non exists, everything is * copied. @@ -361,6 +380,10 @@ public class Sequence extends ASequence implements SequenceI this.addPDBId(new PDBEntry(pdb)); } } + if (seq.getHMM() != null) + { + this.hmm = new HiddenMarkovModel(seq.getHMM(), this); + } } @Override @@ -1069,7 +1092,8 @@ public class Sequence extends ASequence implements SequenceI @Override public ContiguousI findPositions(int fromColumn, int toColumn) { - if (toColumn < fromColumn || fromColumn < 1) + fromColumn = Math.max(fromColumn, 1); + if (toColumn < fromColumn) { return null; } @@ -1819,12 +1843,12 @@ public class Sequence extends ASequence implements SequenceI { for (AlignmentAnnotation ann : annotation) { - if ((ann.calcId != null && ann.calcId.equals(calcId)) + String id = ann.getCalcId(); + if ((id != null && id.equals(calcId)) && (ann.label != null && ann.label.equals(label)) && ((ignoreDescription && description == null) || (ann.description != null && ann.description.equals(description)))) - { result.add(ann); } @@ -1943,6 +1967,33 @@ public class Sequence extends ASequence implements SequenceI } } + @Override + public HiddenMarkovModel getHMM() + { + return hmm; + } + + @Override + public void setHMM(HiddenMarkovModel hmm) + { + this.hmm = hmm; + } + + @Override + public boolean hasHMMAnnotation() + { + if (this.annotation == null) { + return false; + } + for (AlignmentAnnotation ann : annotation) + { + if (InformationThread.HMM_CALC_ID.equals(ann.getCalcId())) + { + return true; + } + } + return false; + } /** * {@inheritDoc} */ @@ -2107,4 +2158,10 @@ public class Sequence extends ASequence implements SequenceI // otherwise, sequence was completely hidden return 0; } + + @Override + public boolean hasHMMProfile() + { + return hmm != null; + } }