code: function OPTICS(dataset, epsilon, minPts, distanceFunction) {
      this.tree = null;
      /** @type {number} */
      this.epsilon = 1;
      /** @type {number} */
      this.minPts = 1;
      /** @type {function} */
      this.distance = this._euclideanDistance;
  
      // temporary variables used during computation
  
      /** @type {Array} */
      this._reachability = [];
      /** @type {Array} */
      this._processed = [];
      /** @type {number} */
      this._coreDistance = 0;
      /** @type {Array} */
      this._orderedList = [];
  
      this._init(dataset, epsilon, minPts, distanceFunction);
  }
docs: OPTICS - Ordering points to identify the clustering structure
  
  @author Lukasz Krawczyk <contact@lukaszkrawczyk.eu>
  @copyright MIT
   
  OPTICS class constructor
  @constructor
  
  @param {Array} dataset
  @param {number} epsilon
  @param {number} minPts
  @param {function} distanceFunction
  @returns {OPTICS}