import jalview.util.QuickSort;
import jalview.util.SparseCount;
+import java.util.List;
+
/**
* A class to count occurrences of residues in a profile, optimised for speed
* and memory footprint.
*/
private static final String AAS = "ACDEFGHIKLMNPQRSTUVWXY";
- private static final int GAP_COUNT = 0;
+ static final int GAP_COUNT = 0;
/*
* fast lookup tables holding the index into our count
}
/**
+ * A constructor that counts frequency of all symbols (including gaps) in the
+ * sequences (not case-sensitive)
+ *
+ * @param sequences
+ */
+ public ResidueCount(List<SequenceI> sequences)
+ {
+ this();
+ for (SequenceI seq : sequences)
+ {
+ for (int i = 0; i < seq.getLength(); i++)
+ {
+ add(seq.getCharAt(i));
+ }
+ }
+ }
+
+ /**
* Increments the count for the given character. The supplied character may be
* upper or lower case but counts are for the upper case only. Gap characters
* (space, ., -) are all counted together.
counts[offset] = (short) ++newValue;
}
}
- maxCount = Math.max(maxCount, newValue);
+
+ if (offset != GAP_COUNT)
+ {
+ // update modal residue count
+ maxCount = Math.max(maxCount, newValue);
+ }
return newValue;
}
*/
public int addGap()
{
- int newValue;
- if (useIntCounts)
- {
- newValue = ++intCounts[GAP_COUNT];
- }
- else
- {
- newValue = ++counts[GAP_COUNT];
- }
+ int newValue = increment(GAP_COUNT);
return newValue;
}
return sb.toString();
}
- public int getTotalCount()
+ /**
+ * Answers the total count for all symbols (excluding gaps)
+ *
+ * @return
+ */
+ public int getTotalResidueCount()
{
int total = 0;
for (char symbol : this.getSymbolCounts().symbols)
{
- if (!Comparison.isGap(symbol))
- {
- total += getCount(symbol);
- }
+ total += getCount(symbol);
}
return total;
}