/*
- * Jalview - A Sequence Alignment Editor and Viewer (Version 2.7)
- * Copyright (C) 2011 J Procter, AM Waterhouse, J Engelhardt, LM Lui, G Barton, M Clamp, S Searle
+ * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8.0b1)
+ * Copyright (C) 2014 The Jalview Authors
*
* This file is part of Jalview.
*
* Jalview 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 3 of the License, or (at your option) any later version.
- *
+ *
* Jalview 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 Jalview. If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
*/
package jalview.datamodel;
* consensus calculation property
*/
private boolean showSequenceLogo = false;
+
/**
* flag indicating if logo should be rendered normalised
*/
private boolean normaliseSequenceLogo;
-
/**
* @return the includeAllConsSymbols
*/
return eres;
}
+
public List<SequenceI> getSequences()
{
return sequences;
}
- public List<SequenceI> getSequences(Map<SequenceI, SequenceCollectionI> hiddenReps)
+
+ public List<SequenceI> getSequences(
+ Map<SequenceI, SequenceCollectionI> hiddenReps)
{
if (hiddenReps == null)
{
if (hiddenReps.containsKey(seq))
{
SequenceCollectionI hsg = hiddenReps.get(seq);
- for (SequenceI seq2:hsg.getSequences())
+ for (SequenceI seq2 : hsg.getSequences())
{
if (seq2 != seq && !allSequences.contains(seq2))
{
}
}
- public SequenceI[] getSequencesAsArray(Map<SequenceI, SequenceCollectionI> map)
+ public SequenceI[] getSequencesAsArray(
+ Map<SequenceI, SequenceCollectionI> map)
{
List<SequenceI> tmp = getSequences(map);
- if (tmp==null)
+ if (tmp == null)
{
return null;
}
}
/**
- * Max Gaps Threshold for performing a conservation calculation TODO: make
- * this a configurable property - or global to an alignment view
+ * Max Gaps Threshold (percent) for performing a conservation calculation
*/
private int consPercGaps = 25;
/**
+ * @return Max Gaps Threshold for performing a conservation calculation
+ */
+ public int getConsPercGaps()
+ {
+ return consPercGaps;
+ }
+
+ /**
+ * set Max Gaps Threshold (percent) for performing a conservation calculation
+ * @param consPercGaps
+ */
+ public void setConsPercGaps(int consPercGaps)
+ {
+ this.consPercGaps = consPercGaps;
+ }
+
+ /**
* calculate residue conservation for group - but only if necessary.
*/
public void recalcConservation()
{
return;
}
- if (cs!=null)
- {
- cs.alignmentChanged(this,null);
- }
try
{
Hashtable cnsns[] = AAFrequency.calculate(sequences, startRes,
endRes + 1, showSequenceLogo);
if (consensus != null)
{
- _updateConsensusRow(cnsns);
+ _updateConsensusRow(cnsns, sequences.size());
}
if (cs != null)
{
cs.setConsensus(cnsns);
- cs.alignmentChanged(this,null);
}
if ((conservation != null)
if (cs.conservationApplied())
{
cs.setConservation(c);
- cs.alignmentChanged(this,null);
}
}
}
+ if (cs != null)
+ {
+ cs.alignmentChanged(context!=null ? context : this, null);
+ }
} catch (java.lang.OutOfMemoryError err)
{
// TODO: catch OOM
public Hashtable[] consensusData = null;
- private void _updateConsensusRow(Hashtable[] cnsns)
+ private void _updateConsensusRow(Hashtable[] cnsns, long nseq)
{
if (consensus == null)
{
consensus.annotations = new Annotation[aWidth]; // should be alignment width
AAFrequency.completeConsensus(consensus, cnsns, startRes, endRes + 1,
- ignoreGapsInConsensus, showSequenceLogo); // TODO: setting container
+ ignoreGapsInConsensus, showSequenceLogo, nseq); // TODO: setting container
// for
// ignoreGapsInConsensusCalculation);
}
}
/**
- * DOCUMENT ME!
*
- * @return DOCUMENT ME!
+ *
+ * @return the first column selected by this group. Runs from 0<=i<N_cols
*/
public int getStartRes()
{
}
/**
- * DOCUMENT ME!
*
- * @return DOCUMENT ME!
+ * @return the groups last selected column. Runs from 0<=i<N_cols
*/
public int getEndRes()
{
* (may be null)
* @return new group containing sequences common to this group and alignment
*/
- public SequenceGroup intersect(AlignmentI alignment, Map<SequenceI, SequenceCollectionI> map)
+ public SequenceGroup intersect(AlignmentI alignment,
+ Map<SequenceI, SequenceCollectionI> map)
{
SequenceGroup sgroup = new SequenceGroup(this);
SequenceI[] insect = getSequencesInOrder(alignment);
{
consensus = new AlignmentAnnotation("", "", new Annotation[1], 0f,
100f, AlignmentAnnotation.BAR_GRAPH);
+ consensus.hasText = true;
+ consensus.autoCalculated = true;
+ consensus.groupRef = this;
+ consensus.label = "Consensus for " + getName();
+ consensus.description = "Percent Identity";
}
- consensus.hasText = true;
- consensus.autoCalculated = true;
- consensus.groupRef = this;
- consensus.label = "Consensus for " + getName();
- consensus.description = "Percent Identity";
return consensus;
}
/**
* set flag indicating if logo should be normalised when rendered
+ *
* @param norm
*/
public void setNormaliseSequenceLogo(boolean norm)
{
- normaliseSequenceLogo=norm;
+ normaliseSequenceLogo = norm;
}
+
public boolean isNormaliseSequenceLogo()
{
return normaliseSequenceLogo;
}
+
@Override
/**
* returns a new array with all annotation involving this group
*/
public AlignmentAnnotation[] getAlignmentAnnotation()
{
- // TODO add in other methods like 'getAlignmentAnnotation(String label), etc'
+ // TODO add in other methods like 'getAlignmentAnnotation(String label),
+ // etc'
ArrayList<AlignmentAnnotation> annot = new ArrayList<AlignmentAnnotation>();
- for (SequenceI seq:(Vector<SequenceI>)sequences)
+ for (SequenceI seq : (Vector<SequenceI>) sequences)
{
- for (AlignmentAnnotation al: seq.getAnnotation())
+ for (AlignmentAnnotation al : seq.getAnnotation())
{
- if (al.groupRef==this)
+ if (al.groupRef == this)
{
annot.add(al);
}
}
}
- if (consensus!=null)
+ if (consensus != null)
{
annot.add(consensus);
}
- if (conservation!=null)
+ if (conservation != null)
{
annot.add(conservation);
}
return annot.toArray(new AlignmentAnnotation[0]);
}
+
@Override
public Iterable<AlignmentAnnotation> findAnnotation(String calcId)
{
- ArrayList<AlignmentAnnotation> aa=new ArrayList<AlignmentAnnotation>();
- for (AlignmentAnnotation a:getAlignmentAnnotation())
+ ArrayList<AlignmentAnnotation> aa = new ArrayList<AlignmentAnnotation>();
+ for (AlignmentAnnotation a : getAlignmentAnnotation())
{
- if (a.getCalcId()==calcId)
+ if (a.getCalcId() == calcId)
{
aa.add(a);
}
{
sequences.clear();
}
+ private AnnotatedCollectionI context;
+ /**
+ * set the alignment or group context for this group
+ * @param context
+ */
+ public void setContext(AnnotatedCollectionI context)
+ {
+ this.context = context;
+ }
+ /* (non-Javadoc)
+ * @see jalview.datamodel.AnnotatedCollectionI#getContext()
+ */
+ @Override
+ public AnnotatedCollectionI getContext()
+ {
+ return context;
+ }
}