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>."
}