<link rel="stylesheet" href="/css/toc.css">
<div id="toc" class="nav toc hidden-print">

  <p id="overview">
    <a data-toggle="collapse" class="menu collapsed" href="#collapse_overview">Overview</a>
  </p>
  <div class="collapse" id="collapse_overview">
    <li>
      <a href="{{site.docs_dir}}/TheChallenge.html">The Challenge</a>
    </li>
    <li>
      <a href="{{site.docs_dir}}/MajorSketchFamilies.html">The Major Sketch Families</a>
    </li>
    <li>
      <a href="{{site.docs_dir}}/SketchOrigins.html">Sketch Origins</a>
    </li>
    <li>
      <a href="{{site.docs_dir}}/SketchElements.html">Sketch Elements</a>
    </li>
    <li>
      <a href="{{site.docs_dir}}/KeyFeatures.html">Key Features</a>
    </li>
    <li>
      <a href="{{site.docs_dir}}/LargeScale.html">Large Scale Computing</a>
    </li>
    <li>
      <a href="{{site.docs_dir}}/Architecture.html">Architecture</a>
    </li>
    <li>
      <a href="{{site.docs_dir}}/OrderSensitivity.html">Notes on Order Sensitivity</a>
    </li>
    <li>
      <a href="{{site.docs_dir}}/Concurrency.html">Notes on Concurrency</a>
    </li>
    <li>
      <a href="{{site.docs_pdf_dir}}/DataSketches_deck.pdf">Overview Slide Deck</a>
    </li>

  </div>

  <p id="research">
    <a href="{{site.docs_dir}}/Research.html">Research</a>
  </p>

  <p id="frequent-items-sketches">
    <a data-toggle="collapse" class="menu collapsed" href="#collapse_frequent">Frequent Items Sketches</a>
  </p>
  <div class="collapse" id="collapse_frequent">
    <li>
      <a href="{{site.docs_dir}}/FrequentItems/FrequentItemsOverview.html">Frequent Items Overview</a>
    </li>
    <li>
      <a href="{{site.docs_dir}}/FrequentItems/FrequentItemsJavaExample.html">Frequent Items Java Example</a>
    </li>
    <li>
      <a href="{{site.docs_dir}}/FrequentItems/FrequentItemsPigUDFs.html">Frequent Items Pig UDFs</a>
    </li>
    <li>
      <a href="{{site.docs_dir}}/FrequentItems/FrequentItemsHiveUDFs.html">Frequent Items Hive UDFs</a>
    </li>
    <li>
      <a href="{{site.docs_dir}}/FrequentItems/FrequentItemsErrorTable.html">Frequent Items Error Table</a>
    </li>
    <li>
      <a href="{{site.docs_dir}}/FrequentItems/FrequentItemsReferences.html">Frequent Items References</a>
    </li>
  </div>


  <p id="hll-sketches">
    <a data-toggle="collapse" class="menu collapsed" href="#collapse_hll">HyperLogLog Sketches</a>
  </p>
  <div class="collapse" id="collapse_hll">
    <li>
      <a href="{{site.docs_dir}}/HLL/HLL.html">HLL Sketch</a>
    </li>
    <li>
      <a href="{{site.docs_dir}}/HLL/Hll_vs_Hllpp.html">HLL vs HLL++</a>
    </li>
    <li>
      <a href="{{site.docs_dir}}/HLL/HllJavaExample.html">HLL Sketch Java Example</a>
    </li>
    <li>
      <a href="{{site.docs_dir}}/HLL/HllPigUDFs.html">HLL Sketch Pig UDFs</a>
    </li>
    <li>
      <a href="{{site.docs_dir}}/HLL/HllHiveUDFs.html">HLL Sketch Hive UDFs</a>
    </li>
    <li>
      <a href="{{site.docs_dir}}/HLL/HllMap.html">HLL Map Sketch</a>
    </li>
    <li>
      <a href="{{site.docs_dir}}/HLL/HllSketchVsDruidHyperLogLogCollector.html">HLL Sketch vs Druid HyperLogLogCollector</a>
    </li>
  </div>

  <p id="memory-package">
    <a data-toggle="collapse" class="menu collapsed" href="#collapse_memory">Memory</a>
  </p>
  <div class="collapse" id="collapse_memory">
    <li>
      <a href="{{site.docs_dir}}/Memory/MemoryPackage.html">Memory Package</a>
    </li>
  </div>

  <p id="quantiles-sketches">
    <a data-toggle="collapse" class="menu collapsed" href="#collapse_quantiles">Quantiles Sketches</a>
  </p>
  <div class="collapse" id="collapse_quantiles">
    <li>
      <a href="{{site.docs_dir}}/Quantiles/QuantilesOverview.html">Quantiles Overview</a>
    </li>
    <li>
      <a href="{{site.docs_dir}}/Quantiles/QuantilesAccuracy.html">Quantiles Accuracy and Size</a>
    </li>
    <li>
      <a href="{{site.docs_dir}}/Quantiles/QuantilesJavaExample.html">Quantiles Sketch Java Example</a>
    </li>
    <li>
      <a href="{{site.docs_dir}}/Quantiles/QuantilesPigUDFs.html">Quantiles Sketch Pig UDFs</a>
    </li>
    <li>
      <a href="{{site.docs_dir}}/Quantiles/QuantilesHiveUDFs.html">Quantiles Sketch Hive UDFs</a>
    </li>
    <li>
      <a href="{{site.docs_dir}}/Quantiles/KLLSketch.html">New KLL sketch and comparison with DoublesSketch</a>
    </li>
    <li>
      <a href="{{site.docs_dir}}/Quantiles/KllSketchVsTDigest.html">KLL sketch vs t-digest</a>
    </li>

    <p>
      <a data-toggle="collapse" class="menu collapsed" href="#collapse_quantilesTheory">Quantiles Sketch Theory</a>
    </p>
    <div class="collapse" id="collapse_quantilesTheory">
      <li>
        <a href="{{site.docs_pdf_dir}}/Quantiles_KLL.pdf">Optimal Quantile Approximation in Streams</a>
      </li>
      <li>
        <a href="{{site.docs_dir}}/Quantiles/QuantilesReferences.html">Quantiles References</a>
      </li>
    </div>
  </div>

  <p id="sampling-sketches">
    <a data-toggle="collapse" class="menu collapsed" href="#collapse_sampling">Sampling Sketches</a>
  </p>
  <div class="collapse" id="collapse_sampling">
    <li>
      <a href="{{site.docs_dir}}/Sampling/ReservoirSampling.html">Reservoir Sampling</a>
    </li>
    <li>
      <a href="{{site.docs_dir}}/Sampling/ReservoirSamplingPerformance.html">Reservoir Sampling Performance</a>
    </li>
    <li>
      <a href="{{site.docs_dir}}/Sampling/ReservoirSamplingJava.html">Reservoir Sampling Java Example</a>
    </li>
    <li>
      <a href="{{site.docs_dir}}/Sampling/ReservoirSamplingPigUDFs.html">Reservoir Sampling Pig UDFs</a>
    </li>
    <li>
      <a href="{{site.docs_dir}}/Sampling/VarOptSampling.html">VarOpt Sampling</a>
    </li>
    <li>
      <a href="{{site.docs_dir}}/Sampling/VarOptSamplingJava.html">VarOpt Sampling Java Example</a>
    </li>
    <li>
      <a href="{{site.docs_dir}}/Sampling/VarOptPigUDFs.html">VarOpt Sampling Pig UDFs</a>
    </li>
  </div>

  <p id="theta-sketches">
    <a data-toggle="collapse" class="menu collapsed" href="#collapse_theta">Theta Sketches</a>
  </p>
  <div class="collapse" id="collapse_theta">
    <li>
      <a href="{{site.docs_dir}}/Theta/ThetaSketchFramework.html">Theta Sketch Framework</a>
    </li>
    <li>
      <a href="{{site.docs_dir}}/Theta/ThetaJavaExample.html">Theta Sketch Java Example</a>
    </li>
    <li>
      <a href="{{site.docs_dir}}/Theta/ThetaSparkExample.html">Theta Sketch Spark Example</a>
    </li>
    <p>
      <a data-toggle="collapse" class="menu collapsed" href="#collapse_kmv">KMV Tutorial</a>
    </p>
    <div class="collapse" id="collapse_kmv">
      <li>
        <a href="{{site.docs_dir}}/Theta/InverseEstimate.html">The Inverse Estimate</a>
      </li>
      <li>
        <a href="{{site.docs_dir}}/Theta/KMVempty.html">Empty Sketch</a>
      </li>
      <li>
        <a href="{{site.docs_dir}}/Theta/KMVfirstEst.html">First Estimator</a>
      </li>
      <li>
        <a href="{{site.docs_dir}}/Theta/KMVbetterEst.html">Better Estimator</a>
      </li>
      <li>
        <a href="{{site.docs_dir}}/Theta/KMVrejection.html">Rejection Rules</a>
      </li>
      <li>
        <a href="{{site.docs_dir}}/Theta/KMVupdateVkth.html">Update V(kth) Rule</a>
      </li>
    </div>

    <p>
      <a data-toggle="collapse" class="menu collapsed" href="#collapse_set">Set Operations</a>
    </p>
    <div class="collapse" id="collapse_set">
      <li>
        <a href="{{site.docs_dir}}/Theta/ThetaSketchSetOps.html">Set Operations</a>
      </li>
    </div>

    <p>
      <a data-toggle="collapse" class="menu collapsed" href="#collapse_accuracy">Accuracy</a>
    </p>
    <div class="collapse" id="collapse_accuracy">
      <li>
        <a href="{{site.docs_dir}}/Theta/ThetaAccuracy.html">Basic Accuracy</a>
      </li>
      <li>
        <a href="{{site.docs_dir}}/Theta/ThetaAccuracyPlots.html">Accuracy Plots</a>
      </li>
      <li>
        <a href="{{site.docs_dir}}/Theta/ThetaErrorTable.html">Relative Error Table</a>
      </li>
      <li>
        <a href="{{site.docs_dir}}/Theta/ThetaSketchSetOpsAccuracy.html">SetOp Accuracy</a>
      </li>
      <li>
        <a href="{{site.docs_dir}}/Theta/AccuracyOfDifferentKUnions.html">Unions With Different k</a>
      </li>
    </div>

    <p>
      <a data-toggle="collapse" class="menu collapsed" href="#collapse_size">Size</a>
    </p>
    <div class="collapse" id="collapse_size">
      <li>
        <a href="{{site.docs_dir}}/Theta/ThetaSize.html">Theta Sketch Size</a>
      </li>
    </div>

    <p>
      <a data-toggle="collapse" class="menu collapsed" href="#collapse_speed">Speed</a>
    </p>
    <div class="collapse" id="collapse_speed">
      <li>
        <a href="{{site.docs_dir}}/Theta/ThetaUpdateSpeed.html">Update Speed</a>
      </li>
      <li>
        <a href="{{site.docs_dir}}/Theta/ThetaMergeSpeed.html">Merge Speed</a>
      </li>
    </div>

    <p>
      <a data-toggle="collapse" class="menu collapsed" href="#collapse_scale">Large Scale Computing</a>
    </p>
    <div class="collapse" id="collapse_scale">
      <li>
        <a href="{{site.docs_dir}}/Theta/ThetaPigUDFs.html">Theta Sketch Pig UDFs</a>
      </li>
      <li>
        <a href="{{site.docs_dir}}/Theta/ThetaHiveUDFs.html">Theta Sketch Hive UDFs</a>
      </li>
      <li>
        <a href="{{site.docs_dir}}/DruidIntegration.html">Integration with Druid</a>
      </li>
      <li>
        <a href="{{site.docs_dir}}/Memory/MemoryPackage.html">Memory Package</a>
      </li>
      <li>
        <a href="{{site.docs_dir}}/Theta/ThetaPSampling.html">
          <i>p</i>-Sampling</a>
      </li>
    </div>

    <p>
      <a data-toggle="collapse" class="menu collapsed" href="#collapse_thetaTheory">Theta Sketch Theory</a>
    </p>
    <div class="collapse" id="collapse_thetaTheory">
      <li>
        <a href="{{site.docs_pdf_dir}}/ThetaSketchFramework.pdf">Theta Sketch Framework (PDF)</a>
      </li>
      <li>
        <a href="{{site.docs_pdf_dir}}/SketchEquations.pdf">Sketch Equations (PDF)</a>
      </li>
      <li>
        <a href="{{site.docs_pdf_dir}}/DataSketches.pdf">DataSketches (PDF)</a>
      </li>
      <li>
        <a href="{{site.docs_dir}}/Theta/ThetaConfidenceIntervals.html">Confidence Intervals Notes</a>
      </li>
      <li>
        <a href="{{site.docs_dir}}/Theta/ThetaMergingAlgorithm.html">Merging Algorithm Notes</a>
      </li>
      <li>
        <a href="{{site.docs_dir}}/Theta/ThetaReferences.html">Theta References</a>
      </li>
    </div>
  </div>

  <p id="tuple-sketches">
    <a data-toggle="collapse" class="menu collapsed" href="#collapse_tuple">Tuple Sketches</a>
  </p>
  <div class="collapse" id="collapse_tuple">
    <li>
      <a href="{{site.docs_dir}}/Tuple/TupleOverview.html">Tuple Sketch Overview</a>
    </li>
    <li>
      <a href="{{site.docs_dir}}/Tuple/TupleJavaExample.html">Tuple Sketch Java Example</a>
    </li>
    <li>
      <a href="{{site.docs_dir}}/Tuple/TuplePigUDFs.html">Tuple Sketch Pig UDFs</a>
    </li>
    <li>
      <a href="{{site.docs_dir}}/Tuple/TupleHiveUDFs.html">Tuple Sketch Hive UDFs</a>
    </li>
  </div>

  <p id="other-information">
    <a data-toggle="collapse" class="menu collapsed" href="#collapse_other">Other Information</a>
  </p>
  <div class="collapse" id="collapse_other">
    <li>
      <a href="{{site.docs_dir}}/CommandLine/CommandLine.html">Creating Command Line Executables</a>
    </li>
    <li>
      <a href="{{site.docs_dir}}/WhoUses.html">Who Uses</a>
    </li>
    <li>
      <a href="/LICENSE.html">License</a>
    </li>
    <!-- * [Endorsements](endorsements.html) -->
  </div>
</div>
<script>
  (function () {

    var findLineItem = function (path) {
      return document.querySelector(`[href="${path}"]`);
    };

    var highlighLineItem = function (element) {
      element.classList.add('highlight');
    };

    var checkHasClass = function (element, className) {
      return element.className.split(' ').find(function (item) { return item === className || '' })
    }

    var findAllCollapseParents = function (element) {
      var collapseMenus = [];
      var elementPointer = element;
      while (elementPointer !== document.body) {
        if (checkHasClass(elementPointer, 'collapse')) {
          collapseMenus.push(elementPointer);
        }
        elementPointer = elementPointer.parentElement
      }
      return collapseMenus
    };

    var findMatchingCollapseMenu = function (collapseItem) {
      return document.querySelector(`[href="#${collapseItem.id}"]`);
    };

    var findAllParentMenus = function (element) {
      var parentMenus = []
      var elementPointer = element;
      while (elementPointer !== document.body) {
        if (elementPointer.className.split(' ').indexOf('menu') > -1) {
          parentMenus.push(elementPointer);
        }
        elementPointer = elementPointer.parentElement;
      }
      return parentMenus;
    }

    var openMenuItem = function (element) {
      element.click();
    };

    var openAllFromList = function (elementList) {
      elementList.forEach(function (element) {
        console.log(element)
        openMenuItem(findMatchingCollapseMenu(element))
      });
    };

    var highlightAndOpenMenu = function () {
      var currentLineItem = findLineItem(document.location.pathname);
      highlighLineItem(currentLineItem)
      openAllFromList(findAllCollapseParents(currentLineItem));
    };

    $(highlightAndOpenMenu);

  }());
</script>
