code: function (X) {
  			var N = X.length;
  			var D = X[0].length;
  			assert(N > 0, " X is empty? You must have some data!");
  			assert(D > 0, " X[0] is empty? Where is the data?");
  			var dists = xtod(X); // convert X to distances using gaussian kernel
  			this.P = d2p(dists, this.perplexity, 1e-4); // attach to object
  			this.N = N; // back up the size of the dataset
  			this.initSolution(); // refresh this
  		}
docs: this function takes a set of high-dimensional points and creates matrix P from them using gaussian kernel