private void calculateClusterConnection()

in samoa-api/src/main/java/org/apache/samoa/evaluation/measures/CMM_GTAnalysis.java [328:375]


    private void calculateClusterConnection(int otherCid, boolean initial) {
      double avgConnection = 0;
      if (workclass == otherCid) {
        avgConnection = 1;
      }
      else {
        AutoExpandVector<Double> kmax = new AutoExpandVector<Double>();
        AutoExpandVector<Integer> kmaxIndexes = new AutoExpandVector<Integer>();

        for (int p : points) {
          CMMPoint cmdp = cmmpoints.get(p);
          double con_p_Cj = getConnectionValue(cmmpoints.get(p), otherCid);
          double connection = cmdp.connectivity * con_p_Cj;
          if (initial) {
            cmdp.p.setMeasureValue("Connection to C" + otherCid, con_p_Cj);
          }

          // connection
          if (kmax.size() < clusterConnectionMaxPoints || connection > kmax.get(kmax.size() - 1)) {
            int index = 0;
            while (index < kmax.size() && connection < kmax.get(index)) {
              index++;
            }
            kmax.add(index, connection);
            kmaxIndexes.add(index, p);
            if (kmax.size() > clusterConnectionMaxPoints) {
              kmax.remove(kmax.size() - 1);
              kmaxIndexes.add(kmaxIndexes.size() - 1);
            }
          }
        }
        // connection
        for (int k = 0; k < kmax.size(); k++) {
          avgConnection += kmax.get(k);
        }
        avgConnection /= kmax.size();
      }

      if (otherCid < connections.size()) {
        connections.set(otherCid, avgConnection);
      }
      else if (connections.size() == otherCid) {
        connections.add(avgConnection);
      }
      else
        System.out.println("Something is going really wrong with the connection listing!" + knnNeighbourhood + " "
            + tauConnection);
    }