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.
+ *
* @author gmcarstairs
*
*/
}
/**
+ * 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.
{
if (intCounts[i] == count)
{
- modal.append(isNucleotide ? NUCS.charAt(i - 1) : AAS
- .charAt(i - 1));
+ modal.append(
+ isNucleotide ? NUCS.charAt(i - 1) : AAS.charAt(i - 1));
}
}
}
{
if (counts[i] == count)
{
- modal.append(isNucleotide ? NUCS.charAt(i - 1) : AAS
- .charAt(i - 1));
+ modal.append(
+ isNucleotide ? NUCS.charAt(i - 1) : AAS.charAt(i - 1));
}
}
}
*
* @return
*/
- public int size() {
+ public int size()
+ {
int size = 0;
if (useIntCounts)
{
{
if (intCounts[i] > 0)
{
- char symbol = isNucleotide ? NUCS.charAt(i - 1) : AAS
- .charAt(i - 1);
+ char symbol = isNucleotide ? NUCS.charAt(i - 1)
+ : AAS.charAt(i - 1);
symbols[j] = symbol;
values[j] = intCounts[i];
j++;
{
if (counts[i] > 0)
{
- char symbol = isNucleotide ? NUCS.charAt(i - 1) : AAS
- .charAt(i - 1);
+ char symbol = isNucleotide ? NUCS.charAt(i - 1)
+ : AAS.charAt(i - 1);
symbols[j] = symbol;
values[j] = counts[i];
j++;
sb.append("]");
return sb.toString();
}
+
+ /**
+ * Answers the total count for all symbols (excluding gaps)
+ *
+ * @return
+ */
+ public int getTotalResidueCount()
+ {
+ int total = 0;
+ for (char symbol : this.getSymbolCounts().symbols)
+ {
+ total += getCount(symbol);
+ }
+ return total;
+ }
}