package beast.evolution.alignment.distance;
import beast.core.Description;
@Description("Hamming distance is the mean number of characters that differ between sequences. " +
"Note that unknowns are not ignored, so if both are unknowns '?' the distance is zero.")
public class HammingDistance extends Distance.Base {
@Override
public double pairwiseDistance(int taxon1, int taxon2) {
double dist = 0;
for (int i = 0; i < patterns.getPatternCount(); i++) {
if (patterns.getPattern(taxon1, i) != patterns.getPattern(taxon2, i)) {
dist += patterns.getPatternWeight(i);
}
}
return dist / patterns.getSiteCount();
}
}