<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>
    
    <p>
      <a data-toggle="collapse" class="menu collapsed" href="#collapse_quantilesStudies">Quantiles Studies</a>
    </p>
    <div class="collapse" id="collapse_quantilesStudies">
      <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>
      <li><a href="{{site.docs_dir}}/Quantiles/DruidApproxHistogramStudy.html">Druid Approximate Histogram</a></li>
      <li><a href="{{site.docs_dir}}/Quantiles/MomentsSketchStudy.html">Moments Sketch Study</a></li>
      <li><a href="{{site.docs_dir}}/Quantiles/QuantilesStreamAStudy.html">Quantiles StreamA Study</a></li>
    </div>

    <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>
