code: public static double TMScore(Point3d[] x, Point3d[] y, int lengthNative) {
  
  		if (x.length != y.length) {
  			throw new IllegalArgumentException(
  					"Point arrays are not of the same length.");
  		}
  
  		double d0 = 1.24 * Math.cbrt(x.length - 15.0) - 1.8;
  		double d0Sq = d0 * d0;
  
  		double sum = 0;
  		for (int i = 0; i < x.length; i++) {
  			sum += 1.0 / (1.0 + x[i].distanceSquared(y[i]) / d0Sq);
  		}
  
  		return sum / lengthNative;
  	}
docs: Returns the TM-Score for two superimposed sets of coordinates Yang Zhang
  and Jeffrey Skolnick, PROTEINS: Structure, Function, and Bioinformatics
  57:702–710 (2004)
  
  @param x
  coordinate set 1
  @param y
  coordinate set 2
  @param lengthNative
  total length of native sequence
  @return