Simpsons's Diversity
by LinguList
HTML
<input type="text" placeholder="enter your alignment row separated by space here" onkeyup="compute(this.value);"></input>
<div id="output"></div>
CSS
input {
width: 200px;
font-family: monospace;
}
JavaScript
function diversity(vars){
var i;
var score = 0;
var counts = {};
for (i = 0; i < vars.length; i += 1){
if (vars[i] in counts) {
counts[vars[i]] += 1;
}
else {
counts[vars[i]] = 1;
}
}
for (i in counts) {
score += (counts[i] / vars.length) ** 2;
}
return 1 - score;
}
function compute(data) {
data = data.trim().split(" ");
document.getElementById("output").innerHTML = "Simpson's Diversity Index is <b>" + diversity(data).toFixed(2) + "</b>."
}