/*
- * Jalview - A Sequence Alignment Editor and Viewer (Version 2.5)
+ * Jalview - A Sequence Alignment Editor and Viewer (Version 2.6)
* Copyright (C) 2010 J Procter, AM Waterhouse, G Barton, M Clamp, S Searle
*
* This file is part of Jalview.
if (!found)
continue;
}
- AlignmentAnnotation newannot = new AlignmentAnnotation(seq
- .getAnnotation()[a]);
+ AlignmentAnnotation newannot = new AlignmentAnnotation(
+ seq.getAnnotation()[a]);
newannot.restrict(startRes, endRes);
newannot.setSequenceRef(seqs[ipos]);
newannot.adjustForAlignment();
}
/**
- * Add s to this sequence group
+ * Add s to this sequence group. If aligment sequence is already contained in
+ * group, it will not be added again, but recalculation may happen if the flag
+ * is set.
*
* @param s
* alignment sequence to be added
}
/**
- * DOCUMENT ME!
+ * Set the first column selected by this group. Runs from 0<=i<N_cols
*
* @param i
- * DOCUMENT ME!
*/
public void setStartRes(int i)
{
}
/**
- * DOCUMENT ME!
+ * Set the groups last selected column. Runs from 0<=i<N_cols
*
* @param i
- * DOCUMENT ME!
*/
public void setEndRes(int i)
{
*/
public SequenceI[] getSequencesInOrder(AlignmentI al)
{
+ return getSequencesInOrder(al, true);
+ }
+
+ /**
+ * return an array representing the intersection of the group with al,
+ * optionally returning an array the size of al.getHeight() where nulls mark
+ * the non-intersected sequences
+ *
+ * @param al
+ * @param trim
+ * @return null or array
+ */
+ public SequenceI[] getSequencesInOrder(AlignmentI al, boolean trim)
+ {
int sSize = sequences.size();
int alHeight = al.getHeight();
- SequenceI[] seqs = new SequenceI[sSize];
+ SequenceI[] seqs = new SequenceI[(trim) ? sSize : alHeight];
int index = 0;
for (int i = 0; i < alHeight && index < sSize; i++)
{
if (sequences.contains(al.getSequenceAt(i)))
{
- seqs[index++] = al.getSequenceAt(i);
+ seqs[(trim) ? index : i] = al.getSequenceAt(i);
+ index++;
}
}
if (index == 0)
{
return null;
}
+ if (!trim)
+ {
+ return seqs;
+ }
if (index < seqs.length)
{
SequenceI[] dummy = seqs;
private boolean showConsensusHistogram;
/**
+ * set this alignmentAnnotation object as the one used to render consensus annotation
+ * @param aan
+ */
+ public void setConsensus(AlignmentAnnotation aan)
+ {
+ if (consensus==null)
+ {
+ consensus=aan;
+ }
+ }
+
+ /**
*
* @return automatically calculated consensus row
*/
}
/**
+ * set this alignmentAnnotation object as the one used to render consensus annotation
+ * @param aan
+ */
+ public void setConservationRow(AlignmentAnnotation aan)
+ {
+ if (conservation==null)
+ {
+ conservation=aan;
+ }
+ }
+ /**
* get the conservation annotation row for this group
*
* @return autoCalculated annotation row
}
}
- SequenceI sq = new Sequence("Group" + getName() + " Consensus", seqs
- .toString());
+ SequenceI sq = new Sequence("Group" + getName() + " Consensus",
+ seqs.toString());
sq.setDescription("Percentage Identity Consensus "
+ ((ignoreGapsInConsensus) ? " without gaps" : ""));
return sq;