import jalview.analysis.AAFrequency;
import jalview.analysis.Conservation;
+import jalview.schemes.CollectionColourScheme;
+import jalview.schemes.CollectionColourSchemeI;
import jalview.schemes.ColourSchemeI;
-import jalview.schemes.ResidueProperties;
import java.awt.Color;
import java.util.ArrayList;
-import java.util.Hashtable;
import java.util.List;
import java.util.Map;
-import java.util.Vector;
/**
* Collects a set contiguous ranges on a set of sequences
Conservation conserve;
- Vector aaFrequency;
-
boolean displayBoxes = true;
boolean displayText = true;
/**
* Colourscheme applied to group if any
*/
- public ColourSchemeI cs;
+ public CollectionColourSchemeI cs;
// start column (base 0)
int startRes = 0;
public SequenceGroup()
{
groupName = "JGroup:" + this.hashCode();
+ cs = new CollectionColourScheme();
}
/**
ColourSchemeI scheme, boolean displayBoxes, boolean displayText,
boolean colourText, int start, int end)
{
+ this();
this.sequences = sequences;
this.groupName = groupName;
this.displayBoxes = displayBoxes;
this.displayText = displayText;
this.colourText = colourText;
- this.cs = scheme;
+ this.cs = new CollectionColourScheme(scheme);
startRes = start;
endRes = end;
recalcConservation();
*/
public SequenceGroup(SequenceGroup seqsel)
{
+ this();
if (seqsel != null)
{
sequences = new ArrayList<SequenceI>();
}
// TODO: try harder to detect changes in state in order to minimise
// recalculation effort
+ boolean upd = false;
try
{
- Hashtable cnsns[] = AAFrequency.calculate(sequences, startRes,
+ ProfilesI cnsns = AAFrequency.calculate(sequences, startRes,
endRes + 1, showSequenceLogo);
if (consensus != null)
{
_updateConsensusRow(cnsns, sequences.size());
+ upd = true;
}
if (cs != null)
{
cs.setConsensus(cnsns);
+ upd = true;
}
if ((conservation != null)
|| (cs != null && cs.conservationApplied()))
{
- Conservation c = new Conservation(groupName,
- ResidueProperties.propHash, 3, sequences, startRes,
+ Conservation c = new Conservation(groupName, sequences, startRes,
endRes + 1);
c.calculate();
c.verdict(false, consPercGaps);
cs.setConservation(c);
}
}
+ // eager update - will cause a refresh of overview regardless
+ upd = true;
}
if (cs != null && !defer)
{
}
else
{
- return false;
+ return upd;
}
} catch (java.lang.OutOfMemoryError err)
{
// TODO: catch OOM
System.out.println("Out of memory loading groups: " + err);
}
- return false;
+ return upd;
}
private void _updateConservationRow(Conservation c)
c.completeAnnotations(conservation, null, startRes, endRes + 1);
}
- public Hashtable[] consensusData = null;
+ public ProfilesI consensusData = null;
- private void _updateConsensusRow(Hashtable[] cnsns, long nseq)
+ private void _updateConsensusRow(ProfilesI cnsns, long nseq)
{
if (consensus == null)
{
@Override
public Iterable<AlignmentAnnotation> findAnnotation(String calcId)
{
- ArrayList<AlignmentAnnotation> aa = new ArrayList<AlignmentAnnotation>();
+ List<AlignmentAnnotation> aa = new ArrayList<AlignmentAnnotation>();
+ if (calcId == null)
+ {
+ return aa;
+ }
for (AlignmentAnnotation a : getAlignmentAnnotation())
{
- if (a.getCalcId() == calcId)
+ if (calcId.equals(a.getCalcId()))
{
aa.add(a);
}
{
return context;
}
+
+ public void setColourScheme(ColourSchemeI scheme)
+ {
+ if (cs == null)
+ {
+ cs = new CollectionColourScheme();
+ }
+ cs.setColourScheme(scheme);
+ }
+
+ public void setGroupColourScheme(CollectionColourSchemeI scheme)
+ {
+ cs = scheme;
+ }
+
+ public ColourSchemeI getColourScheme()
+ {
+ return cs == null ? null : cs.getColourScheme();
+ }
+
+ public CollectionColourSchemeI getGroupColourScheme()
+ {
+ return cs;
+ }
+
+ @Override
+ public boolean isNucleotide()
+ {
+ if (context != null) {
+ return context.isNucleotide();
+ }
+ return false;
+ }
}