*/
public static final boolean isNucleotide(SequenceI seq)
{
- return isNucleotide(new SequenceI[] { seq });
+ if (seq==null)
+ {
+ return false;
+ }
+ long ntCount = 0;
+ long aaCount = 0;
+
+ int len = seq.getLength();
+ for (int i = 0; i < len; i++)
+ {
+ char c = seq.getCharAt(i);
+ if (isNucleotide(c))
+ {
+ ntCount++;
+ }
+ else if (!isGap(c))
+ {
+ aaCount++;
+ }
+ }
+ /*
+ * Check for nucleotide count > 85% of total count (in a form that evades
+ * int / float conversion or divide by zero).
+ */
+ if (ntCount * 100 > EIGHTY_FIVE * (ntCount + aaCount))
+ {
+ return true;
+ }
+ else
+ {
+ return false;
+ }
}
/**
{
return false;
}
-
- int ntCount = 0;
- int aaCount = 0;
+ // true if we have seen a nucleotide sequence
+ boolean na=false;
for (SequenceI seq : seqs)
{
if (seq == null)
{
continue;
}
+ na=true;
// TODO could possibly make an informed guess just from the first sequence
// to save a lengthy calculation
- int len = seq.getLength();
- for (int i = 0; i < len; i++)
- {
- char c = seq.getCharAt(i);
- if (isNucleotide(c))
- {
- ntCount++;
- }
- else if (!isGap(c))
- {
- aaCount++;
- }
+ if (seq.isProtein()) {
+ // if even one looks like protein, the alignment is protein
+ return false;
}
}
-
- /*
- * Check for nucleotide count > 85% of total count (in a form that evades
- * int / float conversion or divide by zero).
- */
- if (ntCount * 100 > EIGHTY_FIVE * (ntCount + aaCount))
- {
- return true;
- }
- else
- {
- return false;
- }
-
+ return na;
}
/**