getOverlapScore() {
    let total = 0.0;
    let overlapScores = new Float32Array(this.graph.vertices.length);

    for (var i = 0; i < this.graph.vertices.length; i++) {
      overlapScores[i] = 0;
    }

    for (var i = 0; i < this.graph.vertices.length; i++) {
      var j = this.graph.vertices.length;

      while (--j > i) {
        let a = this.graph.vertices[i];
        let b = this.graph.vertices[j];

        if (!a.value.isDrawn || !b.value.isDrawn) {
          continue;
        }

        let dist = Vector2.subtract(a.position, b.position).lengthSq();

        if (dist < this.opts.bondLengthSq) {
          let weighted = (this.opts.bondLength - Math.sqrt(dist)) / this.opts.bondLength;
          total += weighted;
          overlapScores[i] += weighted;
          overlapScores[j] += weighted;
        }
      }
    }

    let sortable = Array();

    for (var i = 0; i < this.graph.vertices.length; i++) {
      sortable.push({
        id: i,
        score: overlapScores[i]
      });
    }

    sortable.sort(function (a, b) {
      return b.score - a.score;
    });
    return {
      total: total,
      scores: sortable,
      vertexScores: overlapScores
    };
  }
Returns the overlap score of the current molecule based on its positioned vertices. The higher the score, the more overlaps occur in the structure drawing.

@returns {Object} Returns the total overlap score and the overlap score of each vertex sorted by score (higher to lower). Example: { total: 99, scores: [ { id: 0, score: 22 }, ... ]  }