Example Documentation
diff --git a/docs/Example_Usage.rst b/docs/Example_Usage.rst
new file mode 100644
index 0000000..1d2b493
--- /dev/null
+++ b/docs/Example_Usage.rst
@@ -0,0 +1,346 @@
+========================
+Example Usage of Distill
+========================
+
+In this example, we run through a simulated user experiment using UserALE data generated within an instantiation of
+Superset. This data reflects four simulated user sessions in which the user performs three tasks within the Video Game
+Sales example dashboard:
+
+#. Filter the Video Games Sales by Wii, Racing, and Nintendo.
+#. Find Mario Kart in the list of games.
+#. Determine the difference in global sales between the 3DS game Nintendogs + cats and Wii Sports.
+
+A screenshot of this Superset dashboard can be seen below:
+
+.. image:: ./images/Superset_Dashboard.png
+   :width: 700
+
+The data of these four sessions is captured in a JSON file entitled `task_example.json`.  In the following example, we
+will:
+
+* Show how to use Distill's Segmentation package to create useful ``Segments`` of data.
+* Visualize ``Segment`` objects using timeline/gantt and digraph visualizations.
+* Compare each of these user sessions through the investigation of edit distances.
+
+**Note: The data utilized in this example was not data collected in any user study.  Rather this data is simulated
+through developer interactions with the Superset dashboard.**
+
+Imports
+-------
+The first step in this example is to import all of the packages that we need.  We do this with the code below:
+
+.. code:: python
+
+    import datetime
+    import distill
+    import json
+    import networkx as nx
+    import os
+    import pandas as pd
+    import plotly.express as px
+    import re
+
+Processing and Segmentation
+---------------------------
+Now that we have imported all of the necessary packages, we can begin to process and segment the data.  This can be done
+by creating ``Segment``/``Segments`` objects.  These objects will help us to visualize the data and understand processes
+that the users took to perform each of the three tasks.
+
+Processing the JSON File
+************************
+The ``setup`` function is used to convert a JSON file into the required format for segmentation.  It also allows us to
+assert the date format that we want to use for our analysis (i.e., integer or ``datetime``).  Below we define this
+function:
+
+.. code:: python
+
+    def setup(file, date_type):
+        with open(file) as json_file:
+            raw_data = json.load(json_file)
+
+        data = {}
+        for log in raw_data:
+            data[distill.getUUID(log)] = log
+
+        # Convert clientTime to specified type
+        for uid in data:
+            log = data[uid]
+            client_time = log['clientTime']
+            if date_type == "integer":
+                log['clientTime'] = distill.epoch_to_datetime(client_time)
+            elif date_type == "datetime":
+                log['clientTime'] = pd.to_datetime(client_time, unit='ms', origin='unix')
+
+        # Sort
+        sorted_data = sorted(data.items(), key=lambda kv: kv[1]['clientTime'])
+        sorted_dict = dict(sorted_data)
+
+        return (sorted_data, sorted_dict)
+
+Using this function, we can process the UserALE data and create ``Segment`` objects that represent each of the four user
+sessions.  This is shown below through the utilization of the ``generate_collapsing_window_segments`` function.
+
+.. code:: python
+
+    data_many_session = setup("./data/task_example.json", "datetime")
+    sorted_dict = data_many_session[1]
+
+    # Create segments based on sessionID
+    segments = distill.Segments()
+    session_ids = sorted(distill.find_meta_values('sessionID', sorted_dict), key=lambda sessionID: sessionID)
+    for session_id in session_ids:
+        segments.append_segments(distill.generate_collapsing_window_segments(sorted_dict, 'sessionID', [session_id], session_id))
+
+    # Improve readability of Segment names
+    for index in range(len(segments)):
+        segments[index].segment_name = "Session" + str(index)
+
+Below we list out each of the created ``Segment`` objects along with their number of logs and start times.
+
+.. code:: console
+
+    Session0   Length: 427   Start Time: 2022-05-16 21:25:57.935000
+    Session1   Length: 236   Start Time: 2022-05-16 21:27:38.283000
+    Session2   Length: 332   Start Time: 2022-05-16 21:28:59.774000
+    Session3   Length: 219   Start Time: 2022-05-16 21:30:25.633000
+
+Further Segmentation of Sessions
+********************************
+Now that there are ``Segment`` objects that represent each session, let's write the ``Segment`` objects. This will allow
+us to further segment these session segments to analyze the activity of the user during each of these sessions.  This
+can be done with the following code:
+
+.. code:: python
+
+    segment_names = [segment.segment_name for segment in segments]
+    start_end_vals = [segment.start_end_val for segment in segments]
+    segment_map = distill.write_segment(sorted_dict, segment_names, start_end_vals)
+
+We can now generate ``Segments`` objects within each of those session segments that represent user interactions on two
+different elements of the Superset dashboard.
+
+The first element involves user interactions with the filter window that filters the list of video games (shown in the
+screenshot below).  The element in the path that represents these interactions is "div.filter-container css-ffe7is."
+
+.. image:: ./images/Video_Game_Filter.png
+   :width: 500
+
+The second element involves interactions with the actual list of video games (shown in the screenshot below) represented
+by the "div#chart-id-110.superset-chart-table" path element.
+
+.. image:: ./images/Games_List.png
+   :width: 500
+
+By creating ``Segment`` objects that show user interaction on these two windows, we can get an understanding of how the
+user is using the Superset dashboard to complete the three tasks.  We create these ``Segment`` objects with the
+following code:
+
+.. code:: python
+
+    session_0_segments = distill.generate_collapsing_window_segments(segment_map['Session0'], 'path', ['div.filter-container css-ffe7is'], "Game_Filter")
+    session_1_segments = distill.generate_collapsing_window_segments(segment_map['Session1'], 'path', ['div.filter-container css-ffe7is'], "Game_Filter")
+    session_2_segments = distill.generate_collapsing_window_segments(segment_map['Session2'], 'path', ['div.filter-container css-ffe7is'], "Game_Filter")
+    session_3_segments = distill.generate_collapsing_window_segments(segment_map['Session3'], 'path', ['div.filter-container css-ffe7is'], "Game_Filter")
+
+    session_0_segments.append_segments(distill.generate_collapsing_window_segments(segment_map['Session0'], 'path', ['div#chart-id-110.superset-chart-table'], "Games"))
+    session_1_segments.append_segments(distill.generate_collapsing_window_segments(segment_map['Session1'], 'path', ['div#chart-id-110.superset-chart-table'], "Games"))
+    session_2_segments.append_segments(distill.generate_collapsing_window_segments(segment_map['Session2'], 'path', ['div#chart-id-110.superset-chart-table'], "Games"))
+    session_3_segments.append_segments(distill.generate_collapsing_window_segments(segment_map['Session3'], 'path', ['div#chart-id-110.superset-chart-table'], "Games"))
+
+Now, we append each of those newly generated ``Segments`` objects to the overarching segments variable. This will create
+one large ``Segments`` object that contains all ``Segment`` objects from all sessions.
+
+.. code:: python
+
+    segments.append_segments(session_0_segments)
+    segments.append_segments(session_1_segments)
+    segments.append_segments(session_2_segments)
+    segments.append_segments(session_3_segments)
+
+Visualization of ``Segment`` Objects
+------------------------------------
+To understand these ``Segment`` objects better, we can visualize them.  First, we will visualize them using Plotly's
+timeline function, then we will analyze them by creating DiGraphs.
+
+Visualization with Plotly's Timeline
+************************************
+The following code can be used to define a function that will display a Plotly timeline of each of the ``Segment``
+objects:
+
+.. code:: python
+
+    def display_segments(segments):
+        segment_list = []
+        for segment in segments:
+            if not isinstance(segment.start_end_val[0], datetime.datetime) or not isinstance(segment.start_end_val[1], datetime.datetime):
+                new_segment = distill.Segment()
+                new_segment.segment_name = segment.segment_name
+                new_segment.num_logs = segment.num_logs
+                new_segment.uids = segment.uids
+                new_segment.generate_field_name = segment.generate_field_name
+                new_segment.generate_matched_values = segment.generate_matched_values
+                new_segment.segment_type = segment.segment_type
+                new_segment.start_end_val = (pd.to_datetime(segment.start_end_val[0], unit='ms', origin='unix'), pd.to_datetime(segment.start_end_val[1], unit='ms', origin='unix'))
+                segment_list.append(new_segment)
+            else:
+                segment_list.append(segment)
+        new_segments = distill.Segments(segments=segment_list)
+        distill.export_segments("./test.csv",new_segments)
+        df = pd.read_csv("./test.csv")
+        fig = px.timeline(df, x_start="Start Time", x_end="End Time", y="Segment Name", color="Number of Logs")
+        fig.update_yaxes(autorange="reversed")
+        os.remove("./test.csv")
+        fig.show()
+
+Using this code, we can visualize the ``Segment`` objects we created.
+
+.. code:: python
+
+    display_segments(segments)
+
+This will produce the following timeline graph:
+
+.. image:: ./images/Timeline_Graph.png
+   :width: 700
+
+This graph shows the number of logs in each ``Segment`` while also showing the length of time each ``Segment``
+represents.  We can also begin to understand some of the interactions that each user had with the dashboard by
+analyzing the ``Segment`` objects that exist within each overarching session ``Segment``.
+
+Visualizing User Workflows with DiGraphs
+****************************************
+Another way we can visualize user workflows is through the creation and analysis of DiGraphs. The function below
+(``draw_digraph``) draws a DiGraph based on the passed in ``Segments`` object. These graphs are colored in such a way
+that interactions with the video game filter are colored in green while the interactions with the list of video games
+are colored in blue.
+
+.. code:: python
+
+    def draw_digraph(segments):
+        nodes = sorted(segments.get_segment_list(), key=lambda segment: segment.start_end_val[0])
+        edges = distill.pairwiseSeq(segments.get_segment_list())
+
+        # Set coloring of graph based on element in Superset dashboard
+        color_map = []
+        for segment in segments:
+            if re.match("Game_Filter\S*", segment.segment_name):
+                color_map.append('green')
+            else:
+                color_map.append('blue')
+
+        graph = distill.createDiGraph(nodes, edges)
+        nx.draw(graph, node_color=color_map)
+        return graph
+
+We can now use this function to create DiGraphs of each of the user sessions.
+
+**Graph 0 - Session 0**
+
+.. code:: python
+
+    G0 = draw_digraph(session_0_segments)
+
+.. image:: ./images/Graph_0.png
+   :width: 400
+
+**Graph 1 - Session 1**
+
+.. code:: python
+
+    G1 = draw_digraph(session_1_segments)
+
+.. image:: ./images/Graph_1.png
+   :width: 400
+
+**Graph 2 - Session 2**
+
+.. code:: python
+
+    G2 = draw_digraph(session_2_segments)
+
+.. image:: ./images/Graph_2.png
+   :width: 400
+
+**Graph 3 - Session 3**
+
+.. code:: python
+
+    G3 = draw_digraph(session_3_segments)
+
+.. image:: ./images/Graph_3.png
+   :width: 400
+
+By analyzing these graphs, we can understand the general interactions that users had with the two elements of the
+Superset dashboard. For instance, in each of these graphs, the user starts by filtering the dashboard. Based on the
+tasks that the user is meant to perform, this makes a lot of sense since the most logical way to filter the dashboard is
+through the filtering window. However, these graphs begin to differ in the amount of interactions that the user has with
+the actual list of video games. While users always follow the workflow: filter --> game list --> filter --> game list,
+there are occasions when the user interacts more with the game list than others.
+
+Measuring Similarity with Edit Distance
+---------------------------------------
+One way to understand the differences between the previously generated DiGraphs is to look at their edit distance. Edit
+distance is a metric that measures how many distortions are necessary to turn one graph into another, thus measuring
+similarity.  For instance, taking the edit distance between a graph and itself yields an edit distance of 0, since the
+graphs are exactly the same.  We can show this using NetworkX's ``graph_edit_distance`` to calculate the edit distance.
+
+**Input**
+
+.. code:: python
+
+    nx.graph_edit_distance(G0, G0)  # 0.0
+
+Let's now calculate the edit distances between each graph to calculate an average.  Note, however, that when we try to
+calculate some edit distances, we run into a bit of an issue.  Since edit distance is a computationally complex problem,
+it can take a long time and require large amounts of computational resources to find an exact answer. To simplify this
+problem, we can use NetworkX's ``optimize_graph_edit_distance`` function which will create an approximation of the graph
+edit distance.  For the following calculations, we use the function required depending on the length of time
+``graph_edit_distance`` takes in each circumstance.
+
+**Input: G0, G1**
+
+.. code:: python
+
+    next(nx.optimize_graph_edit_distance(G0, G1))   # 32.0
+
+**Input: G0, G2**
+
+.. code:: python
+
+    next(nx.optimize_graph_edit_distance(G0, G2))   # 34.0
+
+**Input: G0, G3**
+
+.. code:: python
+
+    next(nx.optimize_graph_edit_distance(G0, G3))   # 38.0
+
+**Input: G1, G2**
+
+.. code:: python
+
+    nx.graph_edit_distance(G1, G2)   # 2.0
+
+**Input: G1, G3**
+
+.. code:: python
+
+    next(nx.optimize_graph_edit_distance(G1, G3))   # 18.0
+
+**Input: G2, G3**
+
+.. code:: python
+
+    nx.graph_edit_distance(G2, G3)   # 4.0
+
+Using these outputs we can now calculate the average edit distance with the following calculation:
+
+.. code:: python
+
+    (32.0 + 34.0 + 38.0 + 2.0 + 18.0 + 4.0)/6   # 21.33
+
+This shows that the average edit distance between each of these session DiGraphs is 21.33.
+
+
+
+
diff --git a/docs/docs/.doctrees/Example_Usage.doctree b/docs/docs/.doctrees/Example_Usage.doctree
new file mode 100644
index 0000000..9075d75
--- /dev/null
+++ b/docs/docs/.doctrees/Example_Usage.doctree
Binary files differ
diff --git a/docs/docs/.doctrees/environment.pickle b/docs/docs/.doctrees/environment.pickle
index 70628c5..9ffe2a5 100644
--- a/docs/docs/.doctrees/environment.pickle
+++ b/docs/docs/.doctrees/environment.pickle
Binary files differ
diff --git a/docs/docs/.doctrees/index.doctree b/docs/docs/.doctrees/index.doctree
index 13dabe8..4cd094d 100644
--- a/docs/docs/.doctrees/index.doctree
+++ b/docs/docs/.doctrees/index.doctree
Binary files differ
diff --git a/docs/docs/Example_Usage.html b/docs/docs/Example_Usage.html
new file mode 100644
index 0000000..f95caec
--- /dev/null
+++ b/docs/docs/Example_Usage.html
@@ -0,0 +1,392 @@
+<!DOCTYPE html>
+<html class="writer-html5" lang="en" >
+<head>
+  <meta charset="utf-8" /><meta name="generator" content="Docutils 0.17: http://docutils.sourceforge.net/" />
+
+  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+  <title>Example Usage of Distill &mdash; Apache Flagon Distill  documentation</title>
+      <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+      <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
+  <!--[if lt IE 9]>
+    <script src="_static/js/html5shiv.min.js"></script>
+  <![endif]-->
+  
+        <script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script>
+        <script src="_static/jquery.js"></script>
+        <script src="_static/underscore.js"></script>
+        <script src="_static/doctools.js"></script>
+    <script src="_static/js/theme.js"></script>
+    <link rel="index" title="Index" href="genindex.html" />
+    <link rel="search" title="Search" href="search.html" />
+    <link rel="prev" title="Utility Functions" href="Utility_Functions.html" /> 
+</head>
+
+<body class="wy-body-for-nav"> 
+  <div class="wy-grid-for-nav">
+    <nav data-toggle="wy-nav-shift" class="wy-nav-side">
+      <div class="wy-side-scroll">
+        <div class="wy-side-nav-search" >
+            <a href="index.html" class="icon icon-home"> Apache Flagon Distill
+          </a>
+<div role="search">
+  <form id="rtd-search-form" class="wy-form" action="search.html" method="get">
+    <input type="text" name="q" placeholder="Search docs" />
+    <input type="hidden" name="check_keywords" value="yes" />
+    <input type="hidden" name="area" value="default" />
+  </form>
+</div>
+        </div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
+              <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="Graph_Index.html">Graph</a></li>
+<li class="toctree-l1"><a class="reference internal" href="Segmentation.html">Segmentation</a></li>
+<li class="toctree-l1"><a class="reference internal" href="Process.html">Process</a></li>
+<li class="toctree-l1"><a class="reference internal" href="Utilities.html">Utilities</a></li>
+<li class="toctree-l1 current"><a class="current reference internal" href="#">Example Usage of Distill</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="#imports">Imports</a></li>
+<li class="toctree-l2"><a class="reference internal" href="#processing-and-segmentation">Processing and Segmentation</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="#processing-the-json-file">Processing the JSON File</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#further-segmentation-of-sessions">Further Segmentation of Sessions</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="#visualization-of-segment-objects">Visualization of <code class="docutils literal notranslate"><span class="pre">Segment</span></code> Objects</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="#visualization-with-plotly-s-timeline">Visualization with Plotly’s Timeline</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#visualizing-user-workflows-with-digraphs">Visualizing User Workflows with DiGraphs</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="#measuring-similarity-with-edit-distance">Measuring Similarity with Edit Distance</a></li>
+</ul>
+</li>
+</ul>
+
+        </div>
+      </div>
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
+          <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+          <a href="index.html">Apache Flagon Distill</a>
+      </nav>
+
+      <div class="wy-nav-content">
+        <div class="rst-content">
+          <div role="navigation" aria-label="Page navigation">
+  <ul class="wy-breadcrumbs">
+      <li><a href="index.html" class="icon icon-home"></a> &raquo;</li>
+      <li>Example Usage of Distill</li>
+      <li class="wy-breadcrumbs-aside">
+            <a href="_sources/Example_Usage.rst.txt" rel="nofollow"> View page source</a>
+      </li>
+  </ul>
+  <hr/>
+</div>
+          <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
+           <div itemprop="articleBody">
+             
+  <section id="example-usage-of-distill">
+<h1>Example Usage of Distill<a class="headerlink" href="#example-usage-of-distill" title="Permalink to this headline"></a></h1>
+<p>In this example, we run through a simulated user experiment using UserALE data generated within an instantiation of
+Superset. This data reflects four simulated user sessions in which the user performs three tasks within the Video Game
+Sales example dashboard:</p>
+<ol class="arabic simple">
+<li><p>Filter the Video Games Sales by Wii, Racing, and Nintendo.</p></li>
+<li><p>Find Mario Kart in the list of games.</p></li>
+<li><p>Determine the difference in global sales between the 3DS game Nintendogs + cats and Wii Sports.</p></li>
+</ol>
+<p>A screenshot of this Superset dashboard can be seen below:</p>
+<a class="reference internal image-reference" href="_images/Superset_Dashboard.png"><img alt="_images/Superset_Dashboard.png" src="_images/Superset_Dashboard.png" style="width: 700px;" /></a>
+<p>The data of these four sessions is captured in a JSON file entitled <cite>task_example.json</cite>.  In the following example, we
+will:</p>
+<ul class="simple">
+<li><p>Show how to use Distill’s Segmentation package to create useful <code class="docutils literal notranslate"><span class="pre">Segments</span></code> of data.</p></li>
+<li><p>Visualize <code class="docutils literal notranslate"><span class="pre">Segment</span></code> objects using timeline/gantt and digraph visualizations.</p></li>
+<li><p>Compare each of these user sessions through the investigation of edit distances.</p></li>
+</ul>
+<p><strong>Note: The data utilized in this example was not data collected in any user study.  Rather this data is simulated
+through developer interactions with the Superset dashboard.</strong></p>
+<section id="imports">
+<h2>Imports<a class="headerlink" href="#imports" title="Permalink to this headline"></a></h2>
+<p>The first step in this example is to import all of the packages that we need.  We do this with the code below:</p>
+<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">datetime</span>
+<span class="kn">import</span> <span class="nn">distill</span>
+<span class="kn">import</span> <span class="nn">json</span>
+<span class="kn">import</span> <span class="nn">networkx</span> <span class="k">as</span> <span class="nn">nx</span>
+<span class="kn">import</span> <span class="nn">os</span>
+<span class="kn">import</span> <span class="nn">pandas</span> <span class="k">as</span> <span class="nn">pd</span>
+<span class="kn">import</span> <span class="nn">plotly.express</span> <span class="k">as</span> <span class="nn">px</span>
+<span class="kn">import</span> <span class="nn">re</span>
+</pre></div>
+</div>
+</section>
+<section id="processing-and-segmentation">
+<h2>Processing and Segmentation<a class="headerlink" href="#processing-and-segmentation" title="Permalink to this headline"></a></h2>
+<p>Now that we have imported all of the necessary packages, we can begin to process and segment the data.  This can be done
+by creating <code class="docutils literal notranslate"><span class="pre">Segment</span></code>/<code class="docutils literal notranslate"><span class="pre">Segments</span></code> objects.  These objects will help us to visualize the data and understand processes
+that the users took to perform each of the three tasks.</p>
+<section id="processing-the-json-file">
+<h3>Processing the JSON File<a class="headerlink" href="#processing-the-json-file" title="Permalink to this headline"></a></h3>
+<p>The <code class="docutils literal notranslate"><span class="pre">setup</span></code> function is used to convert a JSON file into the required format for segmentation.  It also allows us to
+assert the date format that we want to use for our analysis (i.e., integer or <code class="docutils literal notranslate"><span class="pre">datetime</span></code>).  Below we define this
+function:</p>
+<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="k">def</span> <span class="nf">setup</span><span class="p">(</span><span class="n">file</span><span class="p">,</span> <span class="n">date_type</span><span class="p">):</span>
+    <span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">file</span><span class="p">)</span> <span class="k">as</span> <span class="n">json_file</span><span class="p">:</span>
+        <span class="n">raw_data</span> <span class="o">=</span> <span class="n">json</span><span class="o">.</span><span class="n">load</span><span class="p">(</span><span class="n">json_file</span><span class="p">)</span>
+
+    <span class="n">data</span> <span class="o">=</span> <span class="p">{}</span>
+    <span class="k">for</span> <span class="n">log</span> <span class="ow">in</span> <span class="n">raw_data</span><span class="p">:</span>
+        <span class="n">data</span><span class="p">[</span><span class="n">distill</span><span class="o">.</span><span class="n">getUUID</span><span class="p">(</span><span class="n">log</span><span class="p">)]</span> <span class="o">=</span> <span class="n">log</span>
+
+    <span class="c1"># Convert clientTime to specified type</span>
+    <span class="k">for</span> <span class="n">uid</span> <span class="ow">in</span> <span class="n">data</span><span class="p">:</span>
+        <span class="n">log</span> <span class="o">=</span> <span class="n">data</span><span class="p">[</span><span class="n">uid</span><span class="p">]</span>
+        <span class="n">client_time</span> <span class="o">=</span> <span class="n">log</span><span class="p">[</span><span class="s1">&#39;clientTime&#39;</span><span class="p">]</span>
+        <span class="k">if</span> <span class="n">date_type</span> <span class="o">==</span> <span class="s2">&quot;integer&quot;</span><span class="p">:</span>
+            <span class="n">log</span><span class="p">[</span><span class="s1">&#39;clientTime&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">distill</span><span class="o">.</span><span class="n">epoch_to_datetime</span><span class="p">(</span><span class="n">client_time</span><span class="p">)</span>
+        <span class="k">elif</span> <span class="n">date_type</span> <span class="o">==</span> <span class="s2">&quot;datetime&quot;</span><span class="p">:</span>
+            <span class="n">log</span><span class="p">[</span><span class="s1">&#39;clientTime&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">to_datetime</span><span class="p">(</span><span class="n">client_time</span><span class="p">,</span> <span class="n">unit</span><span class="o">=</span><span class="s1">&#39;ms&#39;</span><span class="p">,</span> <span class="n">origin</span><span class="o">=</span><span class="s1">&#39;unix&#39;</span><span class="p">)</span>
+
+    <span class="c1"># Sort</span>
+    <span class="n">sorted_data</span> <span class="o">=</span> <span class="nb">sorted</span><span class="p">(</span><span class="n">data</span><span class="o">.</span><span class="n">items</span><span class="p">(),</span> <span class="n">key</span><span class="o">=</span><span class="k">lambda</span> <span class="n">kv</span><span class="p">:</span> <span class="n">kv</span><span class="p">[</span><span class="mi">1</span><span class="p">][</span><span class="s1">&#39;clientTime&#39;</span><span class="p">])</span>
+    <span class="n">sorted_dict</span> <span class="o">=</span> <span class="nb">dict</span><span class="p">(</span><span class="n">sorted_data</span><span class="p">)</span>
+
+    <span class="k">return</span> <span class="p">(</span><span class="n">sorted_data</span><span class="p">,</span> <span class="n">sorted_dict</span><span class="p">)</span>
+</pre></div>
+</div>
+<p>Using this function, we can process the UserALE data and create <code class="docutils literal notranslate"><span class="pre">Segment</span></code> objects that represent each of the four user
+sessions.  This is shown below through the utilization of the <code class="docutils literal notranslate"><span class="pre">generate_collapsing_window_segments</span></code> function.</p>
+<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">data_many_session</span> <span class="o">=</span> <span class="n">setup</span><span class="p">(</span><span class="s2">&quot;./data/task_example.json&quot;</span><span class="p">,</span> <span class="s2">&quot;datetime&quot;</span><span class="p">)</span>
+<span class="n">sorted_dict</span> <span class="o">=</span> <span class="n">data_many_session</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span>
+
+<span class="c1"># Create segments based on sessionID</span>
+<span class="n">segments</span> <span class="o">=</span> <span class="n">distill</span><span class="o">.</span><span class="n">Segments</span><span class="p">()</span>
+<span class="n">session_ids</span> <span class="o">=</span> <span class="nb">sorted</span><span class="p">(</span><span class="n">distill</span><span class="o">.</span><span class="n">find_meta_values</span><span class="p">(</span><span class="s1">&#39;sessionID&#39;</span><span class="p">,</span> <span class="n">sorted_dict</span><span class="p">),</span> <span class="n">key</span><span class="o">=</span><span class="k">lambda</span> <span class="n">sessionID</span><span class="p">:</span> <span class="n">sessionID</span><span class="p">)</span>
+<span class="k">for</span> <span class="n">session_id</span> <span class="ow">in</span> <span class="n">session_ids</span><span class="p">:</span>
+    <span class="n">segments</span><span class="o">.</span><span class="n">append_segments</span><span class="p">(</span><span class="n">distill</span><span class="o">.</span><span class="n">generate_collapsing_window_segments</span><span class="p">(</span><span class="n">sorted_dict</span><span class="p">,</span> <span class="s1">&#39;sessionID&#39;</span><span class="p">,</span> <span class="p">[</span><span class="n">session_id</span><span class="p">],</span> <span class="n">session_id</span><span class="p">))</span>
+
+<span class="c1"># Improve readability of Segment names</span>
+<span class="k">for</span> <span class="n">index</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">segments</span><span class="p">)):</span>
+    <span class="n">segments</span><span class="p">[</span><span class="n">index</span><span class="p">]</span><span class="o">.</span><span class="n">segment_name</span> <span class="o">=</span> <span class="s2">&quot;Session&quot;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">index</span><span class="p">)</span>
+</pre></div>
+</div>
+<p>Below we list out each of the created <code class="docutils literal notranslate"><span class="pre">Segment</span></code> objects along with their number of logs and start times.</p>
+<div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="go">Session0   Length: 427   Start Time: 2022-05-16 21:25:57.935000</span>
+<span class="go">Session1   Length: 236   Start Time: 2022-05-16 21:27:38.283000</span>
+<span class="go">Session2   Length: 332   Start Time: 2022-05-16 21:28:59.774000</span>
+<span class="go">Session3   Length: 219   Start Time: 2022-05-16 21:30:25.633000</span>
+</pre></div>
+</div>
+</section>
+<section id="further-segmentation-of-sessions">
+<h3>Further Segmentation of Sessions<a class="headerlink" href="#further-segmentation-of-sessions" title="Permalink to this headline"></a></h3>
+<p>Now that there are <code class="docutils literal notranslate"><span class="pre">Segment</span></code> objects that represent each session, let’s write the <code class="docutils literal notranslate"><span class="pre">Segment</span></code> objects. This will allow
+us to further segment these session segments to analyze the activity of the user during each of these sessions.  This
+can be done with the following code:</p>
+<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">segment_names</span> <span class="o">=</span> <span class="p">[</span><span class="n">segment</span><span class="o">.</span><span class="n">segment_name</span> <span class="k">for</span> <span class="n">segment</span> <span class="ow">in</span> <span class="n">segments</span><span class="p">]</span>
+<span class="n">start_end_vals</span> <span class="o">=</span> <span class="p">[</span><span class="n">segment</span><span class="o">.</span><span class="n">start_end_val</span> <span class="k">for</span> <span class="n">segment</span> <span class="ow">in</span> <span class="n">segments</span><span class="p">]</span>
+<span class="n">segment_map</span> <span class="o">=</span> <span class="n">distill</span><span class="o">.</span><span class="n">write_segment</span><span class="p">(</span><span class="n">sorted_dict</span><span class="p">,</span> <span class="n">segment_names</span><span class="p">,</span> <span class="n">start_end_vals</span><span class="p">)</span>
+</pre></div>
+</div>
+<p>We can now generate <code class="docutils literal notranslate"><span class="pre">Segments</span></code> objects within each of those session segments that represent user interactions on two
+different elements of the Superset dashboard.</p>
+<p>The first element involves user interactions with the filter window that filters the list of video games (shown in the
+screenshot below).  The element in the path that represents these interactions is “div.filter-container css-ffe7is.”</p>
+<a class="reference internal image-reference" href="_images/Video_Game_Filter.png"><img alt="_images/Video_Game_Filter.png" src="_images/Video_Game_Filter.png" style="width: 500px;" /></a>
+<p>The second element involves interactions with the actual list of video games (shown in the screenshot below) represented
+by the “div#chart-id-110.superset-chart-table” path element.</p>
+<a class="reference internal image-reference" href="_images/Games_List.png"><img alt="_images/Games_List.png" src="_images/Games_List.png" style="width: 500px;" /></a>
+<p>By creating <code class="docutils literal notranslate"><span class="pre">Segment</span></code> objects that show user interaction on these two windows, we can get an understanding of how the
+user is using the Superset dashboard to complete the three tasks.  We create these <code class="docutils literal notranslate"><span class="pre">Segment</span></code> objects with the
+following code:</p>
+<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">session_0_segments</span> <span class="o">=</span> <span class="n">distill</span><span class="o">.</span><span class="n">generate_collapsing_window_segments</span><span class="p">(</span><span class="n">segment_map</span><span class="p">[</span><span class="s1">&#39;Session0&#39;</span><span class="p">],</span> <span class="s1">&#39;path&#39;</span><span class="p">,</span> <span class="p">[</span><span class="s1">&#39;div.filter-container css-ffe7is&#39;</span><span class="p">],</span> <span class="s2">&quot;Game_Filter&quot;</span><span class="p">)</span>
+<span class="n">session_1_segments</span> <span class="o">=</span> <span class="n">distill</span><span class="o">.</span><span class="n">generate_collapsing_window_segments</span><span class="p">(</span><span class="n">segment_map</span><span class="p">[</span><span class="s1">&#39;Session1&#39;</span><span class="p">],</span> <span class="s1">&#39;path&#39;</span><span class="p">,</span> <span class="p">[</span><span class="s1">&#39;div.filter-container css-ffe7is&#39;</span><span class="p">],</span> <span class="s2">&quot;Game_Filter&quot;</span><span class="p">)</span>
+<span class="n">session_2_segments</span> <span class="o">=</span> <span class="n">distill</span><span class="o">.</span><span class="n">generate_collapsing_window_segments</span><span class="p">(</span><span class="n">segment_map</span><span class="p">[</span><span class="s1">&#39;Session2&#39;</span><span class="p">],</span> <span class="s1">&#39;path&#39;</span><span class="p">,</span> <span class="p">[</span><span class="s1">&#39;div.filter-container css-ffe7is&#39;</span><span class="p">],</span> <span class="s2">&quot;Game_Filter&quot;</span><span class="p">)</span>
+<span class="n">session_3_segments</span> <span class="o">=</span> <span class="n">distill</span><span class="o">.</span><span class="n">generate_collapsing_window_segments</span><span class="p">(</span><span class="n">segment_map</span><span class="p">[</span><span class="s1">&#39;Session3&#39;</span><span class="p">],</span> <span class="s1">&#39;path&#39;</span><span class="p">,</span> <span class="p">[</span><span class="s1">&#39;div.filter-container css-ffe7is&#39;</span><span class="p">],</span> <span class="s2">&quot;Game_Filter&quot;</span><span class="p">)</span>
+
+<span class="n">session_0_segments</span><span class="o">.</span><span class="n">append_segments</span><span class="p">(</span><span class="n">distill</span><span class="o">.</span><span class="n">generate_collapsing_window_segments</span><span class="p">(</span><span class="n">segment_map</span><span class="p">[</span><span class="s1">&#39;Session0&#39;</span><span class="p">],</span> <span class="s1">&#39;path&#39;</span><span class="p">,</span> <span class="p">[</span><span class="s1">&#39;div#chart-id-110.superset-chart-table&#39;</span><span class="p">],</span> <span class="s2">&quot;Games&quot;</span><span class="p">))</span>
+<span class="n">session_1_segments</span><span class="o">.</span><span class="n">append_segments</span><span class="p">(</span><span class="n">distill</span><span class="o">.</span><span class="n">generate_collapsing_window_segments</span><span class="p">(</span><span class="n">segment_map</span><span class="p">[</span><span class="s1">&#39;Session1&#39;</span><span class="p">],</span> <span class="s1">&#39;path&#39;</span><span class="p">,</span> <span class="p">[</span><span class="s1">&#39;div#chart-id-110.superset-chart-table&#39;</span><span class="p">],</span> <span class="s2">&quot;Games&quot;</span><span class="p">))</span>
+<span class="n">session_2_segments</span><span class="o">.</span><span class="n">append_segments</span><span class="p">(</span><span class="n">distill</span><span class="o">.</span><span class="n">generate_collapsing_window_segments</span><span class="p">(</span><span class="n">segment_map</span><span class="p">[</span><span class="s1">&#39;Session2&#39;</span><span class="p">],</span> <span class="s1">&#39;path&#39;</span><span class="p">,</span> <span class="p">[</span><span class="s1">&#39;div#chart-id-110.superset-chart-table&#39;</span><span class="p">],</span> <span class="s2">&quot;Games&quot;</span><span class="p">))</span>
+<span class="n">session_3_segments</span><span class="o">.</span><span class="n">append_segments</span><span class="p">(</span><span class="n">distill</span><span class="o">.</span><span class="n">generate_collapsing_window_segments</span><span class="p">(</span><span class="n">segment_map</span><span class="p">[</span><span class="s1">&#39;Session3&#39;</span><span class="p">],</span> <span class="s1">&#39;path&#39;</span><span class="p">,</span> <span class="p">[</span><span class="s1">&#39;div#chart-id-110.superset-chart-table&#39;</span><span class="p">],</span> <span class="s2">&quot;Games&quot;</span><span class="p">))</span>
+</pre></div>
+</div>
+<p>Now, we append each of those newly generated <code class="docutils literal notranslate"><span class="pre">Segments</span></code> objects to the overarching segments variable. This will create
+one large <code class="docutils literal notranslate"><span class="pre">Segments</span></code> object that contains all <code class="docutils literal notranslate"><span class="pre">Segment</span></code> objects from all sessions.</p>
+<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">segments</span><span class="o">.</span><span class="n">append_segments</span><span class="p">(</span><span class="n">session_0_segments</span><span class="p">)</span>
+<span class="n">segments</span><span class="o">.</span><span class="n">append_segments</span><span class="p">(</span><span class="n">session_1_segments</span><span class="p">)</span>
+<span class="n">segments</span><span class="o">.</span><span class="n">append_segments</span><span class="p">(</span><span class="n">session_2_segments</span><span class="p">)</span>
+<span class="n">segments</span><span class="o">.</span><span class="n">append_segments</span><span class="p">(</span><span class="n">session_3_segments</span><span class="p">)</span>
+</pre></div>
+</div>
+</section>
+</section>
+<section id="visualization-of-segment-objects">
+<h2>Visualization of <code class="docutils literal notranslate"><span class="pre">Segment</span></code> Objects<a class="headerlink" href="#visualization-of-segment-objects" title="Permalink to this headline"></a></h2>
+<p>To understand these <code class="docutils literal notranslate"><span class="pre">Segment</span></code> objects better, we can visualize them.  First, we will visualize them using Plotly’s
+timeline function, then we will analyze them by creating DiGraphs.</p>
+<section id="visualization-with-plotly-s-timeline">
+<h3>Visualization with Plotly’s Timeline<a class="headerlink" href="#visualization-with-plotly-s-timeline" title="Permalink to this headline"></a></h3>
+<p>The following code can be used to define a function that will display a Plotly timeline of each of the <code class="docutils literal notranslate"><span class="pre">Segment</span></code>
+objects:</p>
+<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="k">def</span> <span class="nf">display_segments</span><span class="p">(</span><span class="n">segments</span><span class="p">):</span>
+    <span class="n">segment_list</span> <span class="o">=</span> <span class="p">[]</span>
+    <span class="k">for</span> <span class="n">segment</span> <span class="ow">in</span> <span class="n">segments</span><span class="p">:</span>
+        <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">segment</span><span class="o">.</span><span class="n">start_end_val</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">datetime</span><span class="o">.</span><span class="n">datetime</span><span class="p">)</span> <span class="ow">or</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">segment</span><span class="o">.</span><span class="n">start_end_val</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="n">datetime</span><span class="o">.</span><span class="n">datetime</span><span class="p">):</span>
+            <span class="n">new_segment</span> <span class="o">=</span> <span class="n">distill</span><span class="o">.</span><span class="n">Segment</span><span class="p">()</span>
+            <span class="n">new_segment</span><span class="o">.</span><span class="n">segment_name</span> <span class="o">=</span> <span class="n">segment</span><span class="o">.</span><span class="n">segment_name</span>
+            <span class="n">new_segment</span><span class="o">.</span><span class="n">num_logs</span> <span class="o">=</span> <span class="n">segment</span><span class="o">.</span><span class="n">num_logs</span>
+            <span class="n">new_segment</span><span class="o">.</span><span class="n">uids</span> <span class="o">=</span> <span class="n">segment</span><span class="o">.</span><span class="n">uids</span>
+            <span class="n">new_segment</span><span class="o">.</span><span class="n">generate_field_name</span> <span class="o">=</span> <span class="n">segment</span><span class="o">.</span><span class="n">generate_field_name</span>
+            <span class="n">new_segment</span><span class="o">.</span><span class="n">generate_matched_values</span> <span class="o">=</span> <span class="n">segment</span><span class="o">.</span><span class="n">generate_matched_values</span>
+            <span class="n">new_segment</span><span class="o">.</span><span class="n">segment_type</span> <span class="o">=</span> <span class="n">segment</span><span class="o">.</span><span class="n">segment_type</span>
+            <span class="n">new_segment</span><span class="o">.</span><span class="n">start_end_val</span> <span class="o">=</span> <span class="p">(</span><span class="n">pd</span><span class="o">.</span><span class="n">to_datetime</span><span class="p">(</span><span class="n">segment</span><span class="o">.</span><span class="n">start_end_val</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">unit</span><span class="o">=</span><span class="s1">&#39;ms&#39;</span><span class="p">,</span> <span class="n">origin</span><span class="o">=</span><span class="s1">&#39;unix&#39;</span><span class="p">),</span> <span class="n">pd</span><span class="o">.</span><span class="n">to_datetime</span><span class="p">(</span><span class="n">segment</span><span class="o">.</span><span class="n">start_end_val</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="n">unit</span><span class="o">=</span><span class="s1">&#39;ms&#39;</span><span class="p">,</span> <span class="n">origin</span><span class="o">=</span><span class="s1">&#39;unix&#39;</span><span class="p">))</span>
+            <span class="n">segment_list</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">new_segment</span><span class="p">)</span>
+        <span class="k">else</span><span class="p">:</span>
+            <span class="n">segment_list</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">segment</span><span class="p">)</span>
+    <span class="n">new_segments</span> <span class="o">=</span> <span class="n">distill</span><span class="o">.</span><span class="n">Segments</span><span class="p">(</span><span class="n">segments</span><span class="o">=</span><span class="n">segment_list</span><span class="p">)</span>
+    <span class="n">distill</span><span class="o">.</span><span class="n">export_segments</span><span class="p">(</span><span class="s2">&quot;./test.csv&quot;</span><span class="p">,</span><span class="n">new_segments</span><span class="p">)</span>
+    <span class="n">df</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">read_csv</span><span class="p">(</span><span class="s2">&quot;./test.csv&quot;</span><span class="p">)</span>
+    <span class="n">fig</span> <span class="o">=</span> <span class="n">px</span><span class="o">.</span><span class="n">timeline</span><span class="p">(</span><span class="n">df</span><span class="p">,</span> <span class="n">x_start</span><span class="o">=</span><span class="s2">&quot;Start Time&quot;</span><span class="p">,</span> <span class="n">x_end</span><span class="o">=</span><span class="s2">&quot;End Time&quot;</span><span class="p">,</span> <span class="n">y</span><span class="o">=</span><span class="s2">&quot;Segment Name&quot;</span><span class="p">,</span> <span class="n">color</span><span class="o">=</span><span class="s2">&quot;Number of Logs&quot;</span><span class="p">)</span>
+    <span class="n">fig</span><span class="o">.</span><span class="n">update_yaxes</span><span class="p">(</span><span class="n">autorange</span><span class="o">=</span><span class="s2">&quot;reversed&quot;</span><span class="p">)</span>
+    <span class="n">os</span><span class="o">.</span><span class="n">remove</span><span class="p">(</span><span class="s2">&quot;./test.csv&quot;</span><span class="p">)</span>
+    <span class="n">fig</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
+</pre></div>
+</div>
+<p>Using this code, we can visualize the <code class="docutils literal notranslate"><span class="pre">Segment</span></code> objects we created.</p>
+<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">display_segments</span><span class="p">(</span><span class="n">segments</span><span class="p">)</span>
+</pre></div>
+</div>
+<p>This will produce the following timeline graph:</p>
+<a class="reference internal image-reference" href="_images/Timeline_Graph.png"><img alt="_images/Timeline_Graph.png" src="_images/Timeline_Graph.png" style="width: 700px;" /></a>
+<p>This graph shows the number of logs in each <code class="docutils literal notranslate"><span class="pre">Segment</span></code> while also showing the length of time each <code class="docutils literal notranslate"><span class="pre">Segment</span></code>
+represents.  We can also begin to understand some of the interactions that each user had with the dashboard by
+analyzing the <code class="docutils literal notranslate"><span class="pre">Segment</span></code> objects that exist within each overarching session <code class="docutils literal notranslate"><span class="pre">Segment</span></code>.</p>
+</section>
+<section id="visualizing-user-workflows-with-digraphs">
+<h3>Visualizing User Workflows with DiGraphs<a class="headerlink" href="#visualizing-user-workflows-with-digraphs" title="Permalink to this headline"></a></h3>
+<p>Another way we can visualize user workflows is through the creation and analysis of DiGraphs. The function below
+(<code class="docutils literal notranslate"><span class="pre">draw_digraph</span></code>) draws a DiGraph based on the passed in <code class="docutils literal notranslate"><span class="pre">Segments</span></code> object. These graphs are colored in such a way
+that interactions with the video game filter are colored in green while the interactions with the list of video games
+are colored in blue.</p>
+<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="k">def</span> <span class="nf">draw_digraph</span><span class="p">(</span><span class="n">segments</span><span class="p">):</span>
+    <span class="n">nodes</span> <span class="o">=</span> <span class="nb">sorted</span><span class="p">(</span><span class="n">segments</span><span class="o">.</span><span class="n">get_segment_list</span><span class="p">(),</span> <span class="n">key</span><span class="o">=</span><span class="k">lambda</span> <span class="n">segment</span><span class="p">:</span> <span class="n">segment</span><span class="o">.</span><span class="n">start_end_val</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
+    <span class="n">edges</span> <span class="o">=</span> <span class="n">distill</span><span class="o">.</span><span class="n">pairwiseSeq</span><span class="p">(</span><span class="n">segments</span><span class="o">.</span><span class="n">get_segment_list</span><span class="p">())</span>
+
+    <span class="c1"># Set coloring of graph based on element in Superset dashboard</span>
+    <span class="n">color_map</span> <span class="o">=</span> <span class="p">[]</span>
+    <span class="k">for</span> <span class="n">segment</span> <span class="ow">in</span> <span class="n">segments</span><span class="p">:</span>
+        <span class="k">if</span> <span class="n">re</span><span class="o">.</span><span class="n">match</span><span class="p">(</span><span class="s2">&quot;Game_Filter\S*&quot;</span><span class="p">,</span> <span class="n">segment</span><span class="o">.</span><span class="n">segment_name</span><span class="p">):</span>
+            <span class="n">color_map</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s1">&#39;green&#39;</span><span class="p">)</span>
+        <span class="k">else</span><span class="p">:</span>
+            <span class="n">color_map</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s1">&#39;blue&#39;</span><span class="p">)</span>
+
+    <span class="n">graph</span> <span class="o">=</span> <span class="n">distill</span><span class="o">.</span><span class="n">createDiGraph</span><span class="p">(</span><span class="n">nodes</span><span class="p">,</span> <span class="n">edges</span><span class="p">)</span>
+    <span class="n">nx</span><span class="o">.</span><span class="n">draw</span><span class="p">(</span><span class="n">graph</span><span class="p">,</span> <span class="n">node_color</span><span class="o">=</span><span class="n">color_map</span><span class="p">)</span>
+    <span class="k">return</span> <span class="n">graph</span>
+</pre></div>
+</div>
+<p>We can now use this function to create DiGraphs of each of the user sessions.</p>
+<p><strong>Graph 0 - Session 0</strong></p>
+<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">G0</span> <span class="o">=</span> <span class="n">draw_digraph</span><span class="p">(</span><span class="n">session_0_segments</span><span class="p">)</span>
+</pre></div>
+</div>
+<a class="reference internal image-reference" href="_images/Graph_0.png"><img alt="_images/Graph_0.png" src="_images/Graph_0.png" style="width: 400px;" /></a>
+<p><strong>Graph 1 - Session 1</strong></p>
+<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">G1</span> <span class="o">=</span> <span class="n">draw_digraph</span><span class="p">(</span><span class="n">session_1_segments</span><span class="p">)</span>
+</pre></div>
+</div>
+<a class="reference internal image-reference" href="_images/Graph_1.png"><img alt="_images/Graph_1.png" src="_images/Graph_1.png" style="width: 400px;" /></a>
+<p><strong>Graph 2 - Session 2</strong></p>
+<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">G2</span> <span class="o">=</span> <span class="n">draw_digraph</span><span class="p">(</span><span class="n">session_2_segments</span><span class="p">)</span>
+</pre></div>
+</div>
+<a class="reference internal image-reference" href="_images/Graph_2.png"><img alt="_images/Graph_2.png" src="_images/Graph_2.png" style="width: 400px;" /></a>
+<p><strong>Graph 3 - Session 3</strong></p>
+<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">G3</span> <span class="o">=</span> <span class="n">draw_digraph</span><span class="p">(</span><span class="n">session_3_segments</span><span class="p">)</span>
+</pre></div>
+</div>
+<a class="reference internal image-reference" href="_images/Graph_3.png"><img alt="_images/Graph_3.png" src="_images/Graph_3.png" style="width: 400px;" /></a>
+<p>By analyzing these graphs, we can understand the general interactions that users had with the two elements of the
+Superset dashboard. For instance, in each of these graphs, the user starts by filtering the dashboard. Based on the
+tasks that the user is meant to perform, this makes a lot of sense since the most logical way to filter the dashboard is
+through the filtering window. However, these graphs begin to differ in the amount of interactions that the user has with
+the actual list of video games. While users always follow the workflow: filter –&gt; game list –&gt; filter –&gt; game list,
+there are occasions when the user interacts more with the game list than others.</p>
+</section>
+</section>
+<section id="measuring-similarity-with-edit-distance">
+<h2>Measuring Similarity with Edit Distance<a class="headerlink" href="#measuring-similarity-with-edit-distance" title="Permalink to this headline"></a></h2>
+<p>One way to understand the differences between the previously generated DiGraphs is to look at their edit distance. Edit
+distance is a metric that measures how many distortions are necessary to turn one graph into another, thus measuring
+similarity.  For instance, taking the edit distance between a graph and itself yields an edit distance of 0, since the
+graphs are exactly the same.  We can show this using NetworkX’s <code class="docutils literal notranslate"><span class="pre">graph_edit_distance</span></code> to calculate the edit distance.</p>
+<p><strong>Input</strong></p>
+<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">nx</span><span class="o">.</span><span class="n">graph_edit_distance</span><span class="p">(</span><span class="n">G0</span><span class="p">,</span> <span class="n">G0</span><span class="p">)</span>  <span class="c1"># 0.0</span>
+</pre></div>
+</div>
+<p>Let’s now calculate the edit distances between each graph to calculate an average.  Note, however, that when we try to
+calculate some edit distances, we run into a bit of an issue.  Since edit distance is a computationally complex problem,
+it can take a long time and require large amounts of computational resources to find an exact answer. To simplify this
+problem, we can use NetworkX’s <code class="docutils literal notranslate"><span class="pre">optimize_graph_edit_distance</span></code> function which will create an approximation of the graph
+edit distance.  For the following calculations, we use the function required depending on the length of time
+<code class="docutils literal notranslate"><span class="pre">graph_edit_distance</span></code> takes in each circumstance.</p>
+<p><strong>Input: G0, G1</strong></p>
+<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="nb">next</span><span class="p">(</span><span class="n">nx</span><span class="o">.</span><span class="n">optimize_graph_edit_distance</span><span class="p">(</span><span class="n">G0</span><span class="p">,</span> <span class="n">G1</span><span class="p">))</span>   <span class="c1"># 32.0</span>
+</pre></div>
+</div>
+<p><strong>Input: G0, G2</strong></p>
+<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="nb">next</span><span class="p">(</span><span class="n">nx</span><span class="o">.</span><span class="n">optimize_graph_edit_distance</span><span class="p">(</span><span class="n">G0</span><span class="p">,</span> <span class="n">G2</span><span class="p">))</span>   <span class="c1"># 34.0</span>
+</pre></div>
+</div>
+<p><strong>Input: G0, G3</strong></p>
+<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="nb">next</span><span class="p">(</span><span class="n">nx</span><span class="o">.</span><span class="n">optimize_graph_edit_distance</span><span class="p">(</span><span class="n">G0</span><span class="p">,</span> <span class="n">G3</span><span class="p">))</span>   <span class="c1"># 38.0</span>
+</pre></div>
+</div>
+<p><strong>Input: G1, G2</strong></p>
+<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">nx</span><span class="o">.</span><span class="n">graph_edit_distance</span><span class="p">(</span><span class="n">G1</span><span class="p">,</span> <span class="n">G2</span><span class="p">)</span>   <span class="c1"># 2.0</span>
+</pre></div>
+</div>
+<p><strong>Input: G1, G3</strong></p>
+<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="nb">next</span><span class="p">(</span><span class="n">nx</span><span class="o">.</span><span class="n">optimize_graph_edit_distance</span><span class="p">(</span><span class="n">G1</span><span class="p">,</span> <span class="n">G3</span><span class="p">))</span>   <span class="c1"># 18.0</span>
+</pre></div>
+</div>
+<p><strong>Input: G2, G3</strong></p>
+<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">nx</span><span class="o">.</span><span class="n">graph_edit_distance</span><span class="p">(</span><span class="n">G2</span><span class="p">,</span> <span class="n">G3</span><span class="p">)</span>   <span class="c1"># 4.0</span>
+</pre></div>
+</div>
+<p>Using these outputs we can now calculate the average edit distance with the following calculation:</p>
+<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="p">(</span><span class="mf">32.0</span> <span class="o">+</span> <span class="mf">34.0</span> <span class="o">+</span> <span class="mf">38.0</span> <span class="o">+</span> <span class="mf">2.0</span> <span class="o">+</span> <span class="mf">18.0</span> <span class="o">+</span> <span class="mf">4.0</span><span class="p">)</span><span class="o">/</span><span class="mi">6</span>   <span class="c1"># 21.33</span>
+</pre></div>
+</div>
+<p>This shows that the average edit distance between each of these session DiGraphs is 21.33.</p>
+</section>
+</section>
+
+
+           </div>
+          </div>
+          <footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
+        <a href="Utility_Functions.html" class="btn btn-neutral float-left" title="Utility Functions" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
+    </div>
+
+  <hr/>
+
+  <div role="contentinfo">
+    <p>&#169; Copyright 2022, UMD ARLIS.</p>
+  </div>
+
+  Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
+    <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
+    provided by <a href="https://readthedocs.org">Read the Docs</a>.
+   
+
+</footer>
+        </div>
+      </div>
+    </section>
+  </div>
+  <script>
+      jQuery(function () {
+          SphinxRtdTheme.Navigation.enable(true);
+      });
+  </script> 
+
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/docs/_images/Games_List.png b/docs/docs/_images/Games_List.png
new file mode 100644
index 0000000..07fcc78
--- /dev/null
+++ b/docs/docs/_images/Games_List.png
Binary files differ
diff --git a/docs/docs/_images/Graph_0.png b/docs/docs/_images/Graph_0.png
new file mode 100644
index 0000000..181e04b
--- /dev/null
+++ b/docs/docs/_images/Graph_0.png
Binary files differ
diff --git a/docs/docs/_images/Graph_1.png b/docs/docs/_images/Graph_1.png
new file mode 100644
index 0000000..3d58df9
--- /dev/null
+++ b/docs/docs/_images/Graph_1.png
Binary files differ
diff --git a/docs/docs/_images/Graph_2.png b/docs/docs/_images/Graph_2.png
new file mode 100644
index 0000000..256da1d
--- /dev/null
+++ b/docs/docs/_images/Graph_2.png
Binary files differ
diff --git a/docs/docs/_images/Graph_3.png b/docs/docs/_images/Graph_3.png
new file mode 100644
index 0000000..17511e6
--- /dev/null
+++ b/docs/docs/_images/Graph_3.png
Binary files differ
diff --git a/docs/docs/_images/Superset_Dashboard.png b/docs/docs/_images/Superset_Dashboard.png
new file mode 100644
index 0000000..78c9804
--- /dev/null
+++ b/docs/docs/_images/Superset_Dashboard.png
Binary files differ
diff --git a/docs/docs/_images/Timeline_Graph.png b/docs/docs/_images/Timeline_Graph.png
new file mode 100644
index 0000000..edba0ae
--- /dev/null
+++ b/docs/docs/_images/Timeline_Graph.png
Binary files differ
diff --git a/docs/docs/_images/Video_Game_Filter.png b/docs/docs/_images/Video_Game_Filter.png
new file mode 100644
index 0000000..311bef4
--- /dev/null
+++ b/docs/docs/_images/Video_Game_Filter.png
Binary files differ
diff --git a/docs/docs/_sources/Example_Usage.rst.txt b/docs/docs/_sources/Example_Usage.rst.txt
new file mode 100644
index 0000000..1d2b493
--- /dev/null
+++ b/docs/docs/_sources/Example_Usage.rst.txt
@@ -0,0 +1,346 @@
+========================
+Example Usage of Distill
+========================
+
+In this example, we run through a simulated user experiment using UserALE data generated within an instantiation of
+Superset. This data reflects four simulated user sessions in which the user performs three tasks within the Video Game
+Sales example dashboard:
+
+#. Filter the Video Games Sales by Wii, Racing, and Nintendo.
+#. Find Mario Kart in the list of games.
+#. Determine the difference in global sales between the 3DS game Nintendogs + cats and Wii Sports.
+
+A screenshot of this Superset dashboard can be seen below:
+
+.. image:: ./images/Superset_Dashboard.png
+   :width: 700
+
+The data of these four sessions is captured in a JSON file entitled `task_example.json`.  In the following example, we
+will:
+
+* Show how to use Distill's Segmentation package to create useful ``Segments`` of data.
+* Visualize ``Segment`` objects using timeline/gantt and digraph visualizations.
+* Compare each of these user sessions through the investigation of edit distances.
+
+**Note: The data utilized in this example was not data collected in any user study.  Rather this data is simulated
+through developer interactions with the Superset dashboard.**
+
+Imports
+-------
+The first step in this example is to import all of the packages that we need.  We do this with the code below:
+
+.. code:: python
+
+    import datetime
+    import distill
+    import json
+    import networkx as nx
+    import os
+    import pandas as pd
+    import plotly.express as px
+    import re
+
+Processing and Segmentation
+---------------------------
+Now that we have imported all of the necessary packages, we can begin to process and segment the data.  This can be done
+by creating ``Segment``/``Segments`` objects.  These objects will help us to visualize the data and understand processes
+that the users took to perform each of the three tasks.
+
+Processing the JSON File
+************************
+The ``setup`` function is used to convert a JSON file into the required format for segmentation.  It also allows us to
+assert the date format that we want to use for our analysis (i.e., integer or ``datetime``).  Below we define this
+function:
+
+.. code:: python
+
+    def setup(file, date_type):
+        with open(file) as json_file:
+            raw_data = json.load(json_file)
+
+        data = {}
+        for log in raw_data:
+            data[distill.getUUID(log)] = log
+
+        # Convert clientTime to specified type
+        for uid in data:
+            log = data[uid]
+            client_time = log['clientTime']
+            if date_type == "integer":
+                log['clientTime'] = distill.epoch_to_datetime(client_time)
+            elif date_type == "datetime":
+                log['clientTime'] = pd.to_datetime(client_time, unit='ms', origin='unix')
+
+        # Sort
+        sorted_data = sorted(data.items(), key=lambda kv: kv[1]['clientTime'])
+        sorted_dict = dict(sorted_data)
+
+        return (sorted_data, sorted_dict)
+
+Using this function, we can process the UserALE data and create ``Segment`` objects that represent each of the four user
+sessions.  This is shown below through the utilization of the ``generate_collapsing_window_segments`` function.
+
+.. code:: python
+
+    data_many_session = setup("./data/task_example.json", "datetime")
+    sorted_dict = data_many_session[1]
+
+    # Create segments based on sessionID
+    segments = distill.Segments()
+    session_ids = sorted(distill.find_meta_values('sessionID', sorted_dict), key=lambda sessionID: sessionID)
+    for session_id in session_ids:
+        segments.append_segments(distill.generate_collapsing_window_segments(sorted_dict, 'sessionID', [session_id], session_id))
+
+    # Improve readability of Segment names
+    for index in range(len(segments)):
+        segments[index].segment_name = "Session" + str(index)
+
+Below we list out each of the created ``Segment`` objects along with their number of logs and start times.
+
+.. code:: console
+
+    Session0   Length: 427   Start Time: 2022-05-16 21:25:57.935000
+    Session1   Length: 236   Start Time: 2022-05-16 21:27:38.283000
+    Session2   Length: 332   Start Time: 2022-05-16 21:28:59.774000
+    Session3   Length: 219   Start Time: 2022-05-16 21:30:25.633000
+
+Further Segmentation of Sessions
+********************************
+Now that there are ``Segment`` objects that represent each session, let's write the ``Segment`` objects. This will allow
+us to further segment these session segments to analyze the activity of the user during each of these sessions.  This
+can be done with the following code:
+
+.. code:: python
+
+    segment_names = [segment.segment_name for segment in segments]
+    start_end_vals = [segment.start_end_val for segment in segments]
+    segment_map = distill.write_segment(sorted_dict, segment_names, start_end_vals)
+
+We can now generate ``Segments`` objects within each of those session segments that represent user interactions on two
+different elements of the Superset dashboard.
+
+The first element involves user interactions with the filter window that filters the list of video games (shown in the
+screenshot below).  The element in the path that represents these interactions is "div.filter-container css-ffe7is."
+
+.. image:: ./images/Video_Game_Filter.png
+   :width: 500
+
+The second element involves interactions with the actual list of video games (shown in the screenshot below) represented
+by the "div#chart-id-110.superset-chart-table" path element.
+
+.. image:: ./images/Games_List.png
+   :width: 500
+
+By creating ``Segment`` objects that show user interaction on these two windows, we can get an understanding of how the
+user is using the Superset dashboard to complete the three tasks.  We create these ``Segment`` objects with the
+following code:
+
+.. code:: python
+
+    session_0_segments = distill.generate_collapsing_window_segments(segment_map['Session0'], 'path', ['div.filter-container css-ffe7is'], "Game_Filter")
+    session_1_segments = distill.generate_collapsing_window_segments(segment_map['Session1'], 'path', ['div.filter-container css-ffe7is'], "Game_Filter")
+    session_2_segments = distill.generate_collapsing_window_segments(segment_map['Session2'], 'path', ['div.filter-container css-ffe7is'], "Game_Filter")
+    session_3_segments = distill.generate_collapsing_window_segments(segment_map['Session3'], 'path', ['div.filter-container css-ffe7is'], "Game_Filter")
+
+    session_0_segments.append_segments(distill.generate_collapsing_window_segments(segment_map['Session0'], 'path', ['div#chart-id-110.superset-chart-table'], "Games"))
+    session_1_segments.append_segments(distill.generate_collapsing_window_segments(segment_map['Session1'], 'path', ['div#chart-id-110.superset-chart-table'], "Games"))
+    session_2_segments.append_segments(distill.generate_collapsing_window_segments(segment_map['Session2'], 'path', ['div#chart-id-110.superset-chart-table'], "Games"))
+    session_3_segments.append_segments(distill.generate_collapsing_window_segments(segment_map['Session3'], 'path', ['div#chart-id-110.superset-chart-table'], "Games"))
+
+Now, we append each of those newly generated ``Segments`` objects to the overarching segments variable. This will create
+one large ``Segments`` object that contains all ``Segment`` objects from all sessions.
+
+.. code:: python
+
+    segments.append_segments(session_0_segments)
+    segments.append_segments(session_1_segments)
+    segments.append_segments(session_2_segments)
+    segments.append_segments(session_3_segments)
+
+Visualization of ``Segment`` Objects
+------------------------------------
+To understand these ``Segment`` objects better, we can visualize them.  First, we will visualize them using Plotly's
+timeline function, then we will analyze them by creating DiGraphs.
+
+Visualization with Plotly's Timeline
+************************************
+The following code can be used to define a function that will display a Plotly timeline of each of the ``Segment``
+objects:
+
+.. code:: python
+
+    def display_segments(segments):
+        segment_list = []
+        for segment in segments:
+            if not isinstance(segment.start_end_val[0], datetime.datetime) or not isinstance(segment.start_end_val[1], datetime.datetime):
+                new_segment = distill.Segment()
+                new_segment.segment_name = segment.segment_name
+                new_segment.num_logs = segment.num_logs
+                new_segment.uids = segment.uids
+                new_segment.generate_field_name = segment.generate_field_name
+                new_segment.generate_matched_values = segment.generate_matched_values
+                new_segment.segment_type = segment.segment_type
+                new_segment.start_end_val = (pd.to_datetime(segment.start_end_val[0], unit='ms', origin='unix'), pd.to_datetime(segment.start_end_val[1], unit='ms', origin='unix'))
+                segment_list.append(new_segment)
+            else:
+                segment_list.append(segment)
+        new_segments = distill.Segments(segments=segment_list)
+        distill.export_segments("./test.csv",new_segments)
+        df = pd.read_csv("./test.csv")
+        fig = px.timeline(df, x_start="Start Time", x_end="End Time", y="Segment Name", color="Number of Logs")
+        fig.update_yaxes(autorange="reversed")
+        os.remove("./test.csv")
+        fig.show()
+
+Using this code, we can visualize the ``Segment`` objects we created.
+
+.. code:: python
+
+    display_segments(segments)
+
+This will produce the following timeline graph:
+
+.. image:: ./images/Timeline_Graph.png
+   :width: 700
+
+This graph shows the number of logs in each ``Segment`` while also showing the length of time each ``Segment``
+represents.  We can also begin to understand some of the interactions that each user had with the dashboard by
+analyzing the ``Segment`` objects that exist within each overarching session ``Segment``.
+
+Visualizing User Workflows with DiGraphs
+****************************************
+Another way we can visualize user workflows is through the creation and analysis of DiGraphs. The function below
+(``draw_digraph``) draws a DiGraph based on the passed in ``Segments`` object. These graphs are colored in such a way
+that interactions with the video game filter are colored in green while the interactions with the list of video games
+are colored in blue.
+
+.. code:: python
+
+    def draw_digraph(segments):
+        nodes = sorted(segments.get_segment_list(), key=lambda segment: segment.start_end_val[0])
+        edges = distill.pairwiseSeq(segments.get_segment_list())
+
+        # Set coloring of graph based on element in Superset dashboard
+        color_map = []
+        for segment in segments:
+            if re.match("Game_Filter\S*", segment.segment_name):
+                color_map.append('green')
+            else:
+                color_map.append('blue')
+
+        graph = distill.createDiGraph(nodes, edges)
+        nx.draw(graph, node_color=color_map)
+        return graph
+
+We can now use this function to create DiGraphs of each of the user sessions.
+
+**Graph 0 - Session 0**
+
+.. code:: python
+
+    G0 = draw_digraph(session_0_segments)
+
+.. image:: ./images/Graph_0.png
+   :width: 400
+
+**Graph 1 - Session 1**
+
+.. code:: python
+
+    G1 = draw_digraph(session_1_segments)
+
+.. image:: ./images/Graph_1.png
+   :width: 400
+
+**Graph 2 - Session 2**
+
+.. code:: python
+
+    G2 = draw_digraph(session_2_segments)
+
+.. image:: ./images/Graph_2.png
+   :width: 400
+
+**Graph 3 - Session 3**
+
+.. code:: python
+
+    G3 = draw_digraph(session_3_segments)
+
+.. image:: ./images/Graph_3.png
+   :width: 400
+
+By analyzing these graphs, we can understand the general interactions that users had with the two elements of the
+Superset dashboard. For instance, in each of these graphs, the user starts by filtering the dashboard. Based on the
+tasks that the user is meant to perform, this makes a lot of sense since the most logical way to filter the dashboard is
+through the filtering window. However, these graphs begin to differ in the amount of interactions that the user has with
+the actual list of video games. While users always follow the workflow: filter --> game list --> filter --> game list,
+there are occasions when the user interacts more with the game list than others.
+
+Measuring Similarity with Edit Distance
+---------------------------------------
+One way to understand the differences between the previously generated DiGraphs is to look at their edit distance. Edit
+distance is a metric that measures how many distortions are necessary to turn one graph into another, thus measuring
+similarity.  For instance, taking the edit distance between a graph and itself yields an edit distance of 0, since the
+graphs are exactly the same.  We can show this using NetworkX's ``graph_edit_distance`` to calculate the edit distance.
+
+**Input**
+
+.. code:: python
+
+    nx.graph_edit_distance(G0, G0)  # 0.0
+
+Let's now calculate the edit distances between each graph to calculate an average.  Note, however, that when we try to
+calculate some edit distances, we run into a bit of an issue.  Since edit distance is a computationally complex problem,
+it can take a long time and require large amounts of computational resources to find an exact answer. To simplify this
+problem, we can use NetworkX's ``optimize_graph_edit_distance`` function which will create an approximation of the graph
+edit distance.  For the following calculations, we use the function required depending on the length of time
+``graph_edit_distance`` takes in each circumstance.
+
+**Input: G0, G1**
+
+.. code:: python
+
+    next(nx.optimize_graph_edit_distance(G0, G1))   # 32.0
+
+**Input: G0, G2**
+
+.. code:: python
+
+    next(nx.optimize_graph_edit_distance(G0, G2))   # 34.0
+
+**Input: G0, G3**
+
+.. code:: python
+
+    next(nx.optimize_graph_edit_distance(G0, G3))   # 38.0
+
+**Input: G1, G2**
+
+.. code:: python
+
+    nx.graph_edit_distance(G1, G2)   # 2.0
+
+**Input: G1, G3**
+
+.. code:: python
+
+    next(nx.optimize_graph_edit_distance(G1, G3))   # 18.0
+
+**Input: G2, G3**
+
+.. code:: python
+
+    nx.graph_edit_distance(G2, G3)   # 4.0
+
+Using these outputs we can now calculate the average edit distance with the following calculation:
+
+.. code:: python
+
+    (32.0 + 34.0 + 38.0 + 2.0 + 18.0 + 4.0)/6   # 21.33
+
+This shows that the average edit distance between each of these session DiGraphs is 21.33.
+
+
+
+
diff --git a/docs/docs/_sources/index.rst.txt b/docs/docs/_sources/index.rst.txt
index 734432f..2473532 100644
--- a/docs/docs/_sources/index.rst.txt
+++ b/docs/docs/_sources/index.rst.txt
@@ -12,4 +12,5 @@
    Graph_Index
    Segmentation
    Process
-   Utilities
\ No newline at end of file
+   Utilities
+   Example_Usage
\ No newline at end of file
diff --git a/docs/docs/genindex.html b/docs/docs/genindex.html
index e0c7808..d98cba2 100644
--- a/docs/docs/genindex.html
+++ b/docs/docs/genindex.html
@@ -39,6 +39,7 @@
 <li class="toctree-l1"><a class="reference internal" href="Segmentation.html">Segmentation</a></li>
 <li class="toctree-l1"><a class="reference internal" href="Process.html">Process</a></li>
 <li class="toctree-l1"><a class="reference internal" href="Utilities.html">Utilities</a></li>
+<li class="toctree-l1"><a class="reference internal" href="Example_Usage.html">Example Usage of Distill</a></li>
 </ul>
 
         </div>
diff --git a/docs/docs/index.html b/docs/docs/index.html
index 9018efa..f843dc3 100644
--- a/docs/docs/index.html
+++ b/docs/docs/index.html
@@ -41,6 +41,7 @@
 <li class="toctree-l1"><a class="reference internal" href="Segmentation.html">Segmentation</a></li>
 <li class="toctree-l1"><a class="reference internal" href="Process.html">Process</a></li>
 <li class="toctree-l1"><a class="reference internal" href="Utilities.html">Utilities</a></li>
+<li class="toctree-l1"><a class="reference internal" href="Example_Usage.html">Example Usage of Distill</a></li>
 </ul>
 
         </div>
@@ -93,6 +94,13 @@
 <li class="toctree-l2"><a class="reference internal" href="Utility_Functions.html">Utility Functions</a></li>
 </ul>
 </li>
+<li class="toctree-l1"><a class="reference internal" href="Example_Usage.html">Example Usage of Distill</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="Example_Usage.html#imports">Imports</a></li>
+<li class="toctree-l2"><a class="reference internal" href="Example_Usage.html#processing-and-segmentation">Processing and Segmentation</a></li>
+<li class="toctree-l2"><a class="reference internal" href="Example_Usage.html#visualization-of-segment-objects">Visualization of <code class="docutils literal notranslate"><span class="pre">Segment</span></code> Objects</a></li>
+<li class="toctree-l2"><a class="reference internal" href="Example_Usage.html#measuring-similarity-with-edit-distance">Measuring Similarity with Edit Distance</a></li>
+</ul>
+</li>
 </ul>
 </div>
 </section>
diff --git a/docs/docs/objects.inv b/docs/docs/objects.inv
index 59e77ec..7c1c754 100644
--- a/docs/docs/objects.inv
+++ b/docs/docs/objects.inv
Binary files differ
diff --git a/docs/docs/search.html b/docs/docs/search.html
index 4f6a410..3e61695 100644
--- a/docs/docs/search.html
+++ b/docs/docs/search.html
@@ -42,6 +42,7 @@
 <li class="toctree-l1"><a class="reference internal" href="Segmentation.html">Segmentation</a></li>
 <li class="toctree-l1"><a class="reference internal" href="Process.html">Process</a></li>
 <li class="toctree-l1"><a class="reference internal" href="Utilities.html">Utilities</a></li>
+<li class="toctree-l1"><a class="reference internal" href="Example_Usage.html">Example Usage of Distill</a></li>
 </ul>
 
         </div>
diff --git a/docs/docs/searchindex.js b/docs/docs/searchindex.js
index 88e4379..7d6f5b7 100644
--- a/docs/docs/searchindex.js
+++ b/docs/docs/searchindex.js
@@ -1 +1 @@
-Search.setIndex({docnames:["Combining_Segments_with_Set_Logic","Creating_Segments","Exporting_Segments","Funnel_Function","Getting_Started","Graph_Index","Manipulating_Collections_of_Segment_Objects","Process","Process_Docs","Sankey_Function","Segmentation","Utilities","Utility_Functions","Writing_Segments","index"],envversion:{"sphinx.domains.c":2,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":3,"sphinx.domains.index":1,"sphinx.domains.javascript":2,"sphinx.domains.math":2,"sphinx.domains.python":3,"sphinx.domains.rst":2,"sphinx.domains.std":2,sphinx:56},filenames:["Combining_Segments_with_Set_Logic.rst","Creating_Segments.rst","Exporting_Segments.rst","Funnel_Function.rst","Getting_Started.rst","Graph_Index.rst","Manipulating_Collections_of_Segment_Objects.rst","Process.rst","Process_Docs.rst","Sankey_Function.rst","Segmentation.rst","Utilities.rst","Utility_Functions.rst","Writing_Segments.rst","index.rst"],objects:{},objnames:{},objtypes:{},terms:{"0":[2,3,6,9],"1":[0,1,2,3,6,8,9],"1000":12,"1s":3,"2":[0,1,2,3,6,8],"20":1,"2s":3,"3":[2,6,8],"3s":3,"4":[6,8],"5":[1,2,3,6],"6":2,"65":3,"7":6,"9":6,"abstract":4,"break":3,"case":1,"class":6,"default":[1,3],"do":[1,2,6,13],"export":[10,14],"final":1,"function":[0,1,2,4,5,6,7,11,13,14],"import":[2,10],"new":[0,1,2,6],"return":[0,1,2,3,6,9,13],"true":[1,8],A:[0,1,3,4,6,12],And:3,By:2,For:1,If:[1,3,9],In:[1,2],One:2,The:[0,1,2,4,5,6,12,13],There:1,These:[1,4,6,8],To:[1,2],abil:[2,4,6],abov:[0,1,2,6,13],access:[4,10,13],add:[3,6],addit:[1,2,6],addition:[3,9],after:[1,6,13],aid:[1,4,12],all:[6,8],allow:[4,6,13],along:[2,13],alreadi:1,also:[1,4,6,13],an:[0,1,2,3,4,6,8,9,12],analysi:[2,4],analyst:[1,4,6,8,13],analyz:4,ani:[1,6],anoth:[1,2,4],append:[3,4,9,10],append_seg:6,ar:[1,2,3,4,6,8,9],argument:[1,3,9],assign:6,assist:13,associ:[4,13],assum:2,attempt:[6,8],attribut:2,automat:10,autorang:2,avail:[1,4],avoid:1,b:9,back:1,bar:2,base:[0,1,4,8],basic:10,been:2,befor:[1,6],begin:1,behavior:1,behind:4,below:[0,1,2,3,6,8,9,12,13],benefit:2,between:1,bombard:4,both:[1,2,4,8,12],build:2,button:3,c:9,call:6,can:[0,1,2,3,6,8,12,13],capabl:[4,6],categori:1,chang:6,chart:[2,9],click:[1,2],clienttim:[0,1,4],code:[0,1,2,6,13],col:9,collect:[3,4,9,10,13,14],color:[2,3],combin:[10,14],compar:4,comprehens:[4,8,10,13],connect:9,connector:3,consid:1,consol:6,contain:[1,6],convert:[3,12],correspond:9,could:1,count:9,counter1:3,counter2:3,counter3:3,counter:[3,9],creat:[0,2,3,4,6,8,9,10,13,14],create_seg:[1,13],creation:[4,6,10,13],csv:2,curat:[4,6,13],current:[2,6],custom:4,d:9,dash:[2,3],dashboard:2,data:[3,4,9,10],datetim:[1,2,11],deadspac:[6,10],deepskyblu:3,def:9,defin:[1,2,3,9,13],delet:[4,10],demonstr:1,denot:[1,4,6],describ:[1,4,8],detect:10,detect_deadspac:1,df:2,diagram:[3,9],dict:[3,9],dictionari:[1,3,4,8,9,13],differ:[2,4,10],directori:2,displai:2,distil:[0,1,2,4,6,8,12,13],divis:1,document:[1,3],doe:[1,9],done:[1,6,13],dot:3,duplic:3,e:[3,13],each:[1,2,3,4,6,13],easi:[4,13],easier:4,easiest:4,easili:13,edg:[3,8,9],edge_list:[3,9],edge_list_count:[3,9],edge_list_temp:[3,9],edgelist_list:3,edges_segmentn:[3,9],either:[1,6,12],element:9,els:[3,9],end:[0,1,2,4,6,9,13],end_time_1:[1,13],end_time_2:[1,13],entir:[4,6],entitl:[1,2],enumer:4,epoch:11,epoch_to_datetim:12,equal:6,even:4,event:1,exampl:[0,1,5,6,8,10,12,13],example_seg:2,exist:[2,3,6,9],expect:1,export_seg:2,express:2,extract:9,fall:1,fals:[3,9],featur:6,few:2,field:[1,2,4,8],field_values_of_interest:1,fig:[2,3,9],figur:[3,9],file:[2,4],filter:[4,10],find_meta_valu:8,first:[1,6],first_rung:3,fit:1,five:1,fix:6,fixed_tim:6,flow:9,follow:[1,2,4,6,12],form:[1,3],format:[1,2,12],found:2,from:[2,3,6,9],functon:13,funnel:[5,14],funnel_target:3,funnel_targets_temp:3,further:[2,4],g:3,gantt:2,gener:[2,6,10,12],generate_collapsing_window_seg:[1,4],generate_collapsing_windows_seg:1,generate_field_nam:[4,6],generate_fixed_time_seg:1,generate_matched_valu:[4,6],generate_seg:[1,4],get:[6,10,11,14],get_num_log:6,get_segment_list:6,get_segment_name_dict:6,get_segments_aft:6,get_segments_befor:6,get_segments_of_typ:6,get_uid:0,get_uuid:[1,12],getuuid:[1,12],give:[4,9],given:[0,1,2,3,4,6,9],go:[3,9],graph:[2,3,9,14],group:4,ha:[1,4],had:6,happen:1,have:[1,2,3,6,9],held:6,help:[4,8],hold:[1,4],how:[3,4,6,9,13],howev:[6,13],hundr:4,i:[3,9,13],id:1,identifi:[1,12],idl:1,illustr:1,includ:[4,6,12],index:[3,6,9],indic:[1,2,6],individu:[6,13],inform:1,inher:2,initi:3,input:[3,6,9],insid:3,instal:4,instanc:1,integ:[1,12],integer_tim:12,interchang:1,interest:[1,3],intersect:10,interv:1,involv:1,item:[3,9],iter:[4,8,10,13],its:1,itself:1,kei:[1,3,6,8,9],know:1,label:[1,3,9],largest:0,last:1,least:6,len:[3,9],length:3,less:6,lightsalmon:3,like:2,lime:3,line:[2,3],link:9,list:[0,1,3,4,8,9,10,13],liter:1,load:1,locat:6,log:[2,4,8,10,12,13],logic:[10,14],longer:1,look:[2,13],mai:1,main:8,make:4,manag:4,mani:[3,9],manipul:[4,10,14],map:13,marker:3,match:[1,2,4,6],meaning:4,metadata:4,method:6,mock:3,modif:[4,10],modifi:6,modul:[],more:1,most:1,most_common:3,must:[1,6],name:[1,2,3,4,6,9,13],need:[4,13],nest:13,new_edg:3,new_edge_list:3,new_edge_list_count:3,new_nod:9,new_seg:0,new_segment1:0,new_segment2:0,new_segment_1:0,new_segment_2:0,nfilter:6,nmodifi:6,node:[3,9],node_label:[3,9],non:1,none:[3,6],note:[1,2,6],now:3,nsegment:6,num_log:[4,6],number:[2,3,4],numer:6,object:[0,2,10,12,13,14],occur:[1,3],off:1,onc:4,one:[1,8],onli:6,opac:3,option:[1,3,9],order:1,origin:[6,9],our:2,out:[6,8],output:[1,2,3,6,9,12],over:13,overlap:1,overview:12,own:1,p:3,packag:[0,1,10,13],page:[],pairwiseseq:8,pairwisestag:8,panda:2,paramet:[1,6],particular:1,particularli:[2,6,8,12],pass:[3,9],path:[1,2],pattern:4,pd:2,percent:3,perform:[0,6],pie:2,place:2,plot:[2,3],png:[],possibl:1,pre:2,prefix:1,prepar:12,preprocess:[10,12],previou:1,print:6,prior:1,process:14,project:4,provid:[0,1,2,3,4,8,9,12],put:1,px:2,py:[],python:[1,2,4],quantiti:9,rang:[3,9],rather:[6,13],read:12,read_csv:2,receiv:9,record:1,recurs:9,refer:6,remov:[3,6,9],replac:[3,9],repres:[0,1,2,4,6,12],represent:[4,10,12],request:3,requir:12,rest:1,result:[6,13],revers:2,row:[3,9],s:[0,1,2,4,8,13],sankei:[5,14],sankey0:[],scene:4,screenshot:2,search:7,second:1,second_rung:3,section:4,seek:4,seen:[2,8],segment0:6,segment1:[0,1,2,6,13],segment2:[0,1,2,13],segment:[12,14],segment_nam:[0,1,4,6,13],segment_typ:[2,4,6],segments1:6,segments2:6,segments_aft:6,segments_befor:6,segments_dict:6,segments_list:6,self:9,send:9,seq_result:8,seri:8,set:[10,14],shorter:1,show:[2,3,6,9,13],shown:[0,1,2,6,12],similar:[2,4,13],similarli:[0,12],simpl:[2,13],sinc:[4,6,13],smallest:0,softwar:2,some:13,sometim:12,sort:[1,8,13],sorted_dict:[1,8,13],sourc:9,source_list:9,specif:[2,8,12],specifi:6,split:9,stag_result:8,start:[0,1,2,6,10,13,14],start_end_v:[1,4,13],start_time_1:[1,13],start_time_2:[1,13],step:1,string:[1,3,12],string_tim:12,structur:[1,4,10],subscript:[4,10],success:2,support:13,syntax:4,take:[1,2,3,6,12],taken:1,tan:3,target:[3,8,9],target_list:9,target_v:8,test:2,test_button:3,test_list:8,test_radio_input:3,test_text_input:3,textinfo:3,textposit:3,than:[1,6,13],thei:[6,12],them:1,themselv:[4,6],thi:[0,1,2,4,6,8,12,13],third_rung:3,those:2,three:[0,1,6,8],threshold:1,through:[1,2,4,10,13],throughout:1,time:[2,3,12,13],timelin:2,togeth:4,tool:2,top:4,transform:7,trim:1,tupl:[1,3,8,9,13],two:[0,1,2,6,8,12],type:[1,2,4],uid1:0,uid2:0,uid3:0,uid4:0,uid5:0,uid6:0,uid9:0,uid:[0,1,4,13],under:[1,4],underli:6,union:10,uniqu:[1,8,12],univers:[1,12],unix:12,updat:6,update_yax:2,us:[0,1,2,4,6,8,9,12,13],usag:[0,1,6,8,12,13],user:[1,2,3,6,9],user_specif:3,useral:[4,8,10,12,13],userspec:3,util:[4,14],uuid:[1,11],valu:[0,1,2,3,4,8,9,13],value_list:9,varieti:[2,4,6],via:[4,6],video:2,visual:10,wa:[2,3,4],wai:[1,4,6,13],want:1,we:[1,2,3,9,12],weight:9,were:6,what:[1,2,10],when:[1,4,6,8,12],where:9,which:[1,6,13],whose:6,why:10,width:[3,9],within:[1,2,4,6],without:4,write:[10,14],write_seg:13,written_seg:13,x:3,x_end:2,x_start:2,y:[2,3]},titles:["Combining Segments with Set Logic","Creating Segment Objects","Exporting Segments","Funnel","Getting Started with Segmentation","Graph","Manipulating Collections of Segment Objects","Process","Processing Functions","Sankey","Segmentation","Utilities","Utility Functions","Writing Segments","Flagon Distill"],titleterms:{"export":2,"function":[3,8,9,12],"import":4,The:[3,9],access:6,analyt:[],apach:2,append:6,automat:1,basic:1,collaps:1,collect:6,combin:0,comprehens:6,content:[],creat:1,creation:1,cutoff:[],data:6,datetim:12,deadspac:1,delet:6,detect:1,dictionari:6,differ:[0,6],distil:14,document:[],epoch:12,exampl:[2,3,9],filter:6,fix:1,flagon:14,funnel:3,gener:1,get:[4,12],graph:5,indic:[],intersect:0,iter:6,list:6,log:[1,6],logic:0,manipul:6,modif:6,number:6,object:[1,4,6],packag:4,plotli:2,preprocess:1,process:[7,8],py:[],represent:6,sankei:9,search:8,segment:[0,1,2,4,6,10,13],set:0,start:4,structur:6,subscript:6,superset:2,tabl:[],through:6,time:[1,6],transform:8,type:6,union:0,useral:1,util:[11,12],uuid:12,visual:2,what:4,why:4,window:1,write:13}})
\ No newline at end of file
+Search.setIndex({docnames:["Combining_Segments_with_Set_Logic","Creating_Segments","Example_Usage","Exporting_Segments","Funnel_Function","Getting_Started","Graph_Index","Manipulating_Collections_of_Segment_Objects","Process","Process_Docs","Sankey_Function","Segmentation","Utilities","Utility_Functions","Writing_Segments","index"],envversion:{"sphinx.domains.c":2,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":3,"sphinx.domains.index":1,"sphinx.domains.javascript":2,"sphinx.domains.math":2,"sphinx.domains.python":3,"sphinx.domains.rst":2,"sphinx.domains.std":2,sphinx:56},filenames:["Combining_Segments_with_Set_Logic.rst","Creating_Segments.rst","Example_Usage.rst","Exporting_Segments.rst","Funnel_Function.rst","Getting_Started.rst","Graph_Index.rst","Manipulating_Collections_of_Segment_Objects.rst","Process.rst","Process_Docs.rst","Sankey_Function.rst","Segmentation.rst","Utilities.rst","Utility_Functions.rst","Writing_Segments.rst","index.rst"],objects:{},objnames:{},objtypes:{},terms:{"0":[2,3,4,7,10],"05":2,"1":[0,1,2,3,4,7,9,10],"1000":13,"110":2,"16":2,"18":2,"1s":4,"2":[0,1,2,3,4,7,9],"20":1,"2022":2,"21":2,"219":2,"236":2,"25":2,"27":2,"28":2,"283000":2,"2s":4,"3":[2,3,7,9],"30":2,"32":2,"33":2,"332":2,"34":2,"38":2,"3d":2,"3s":4,"4":[2,7,9],"427":2,"5":[1,3,4,7],"57":2,"59":2,"6":[2,3],"633000":2,"65":4,"7":7,"774000":2,"9":7,"935000":2,"abstract":5,"break":4,"case":1,"class":7,"default":[1,4],"do":[1,2,3,7,14],"export":[11,15],"final":1,"function":[0,1,2,3,5,6,7,8,12,14,15],"import":[3,11,15],"long":2,"new":[0,1,3,7],"return":[0,1,2,3,4,7,10,14],"true":[1,9],"try":2,"while":2,A:[0,1,2,4,5,7,13],And:4,By:[2,3],For:[1,2],If:[1,4,10],In:[1,2,3],It:2,One:[2,3],The:[0,1,2,3,5,6,7,13,14],There:1,These:[1,2,5,7,9],To:[1,2,3],abil:[3,5,7],abov:[0,1,3,7,14],access:[5,11,14],activ:2,actual:2,add:[4,7],addit:[1,3,7],addition:[4,10],after:[1,7,14],aid:[1,5,13],all:[2,7,9],allow:[2,5,7,14],along:[2,3,14],alreadi:1,also:[1,2,5,7,14],alwai:2,amount:2,an:[0,1,2,3,4,5,7,9,10,13],analysi:[2,3,5],analyst:[1,5,7,9,14],analyz:[2,5],ani:[1,2,7],anoth:[1,2,3,5],answer:2,append:[2,4,5,10,11],append_seg:[2,7],approxim:2,ar:[1,2,3,4,5,7,9,10],argument:[1,4,10],assert:2,assign:7,assist:14,associ:[5,14],assum:3,attempt:[7,9],attribut:3,automat:11,autorang:[2,3],avail:[1,5],averag:2,avoid:1,b:10,back:1,bar:3,base:[0,1,2,5,9],basic:11,been:3,befor:[1,7],begin:[1,2],behavior:1,behind:5,below:[0,1,2,3,4,7,9,10,13,14],benefit:3,better:2,between:[1,2],bit:2,blue:2,bombard:5,both:[1,3,5,9,13],build:3,button:4,c:10,calcul:2,call:7,can:[0,1,2,3,4,7,9,13,14],capabl:[5,7],captur:2,cat:2,categori:1,chang:7,chart:[2,3,10],circumst:2,click:[1,3],client_tim:2,clienttim:[0,1,2,5],code:[0,1,2,3,7,14],col:10,collect:[2,4,5,10,11,14,15],color:[2,3,4],color_map:2,combin:[11,15],compar:[2,5],complet:2,complex:2,comprehens:[5,9,11,14],comput:2,computation:2,connect:10,connector:4,consid:1,consol:7,contain:[1,2,7],convert:[2,4,13],correspond:10,could:1,count:10,counter1:4,counter2:4,counter3:4,counter:[4,10],creat:[0,2,3,4,5,7,9,10,11,14,15],create_seg:[1,14],createdigraph:2,creation:[2,5,7,11,14],css:2,csv:[2,3],curat:[5,7,14],current:[3,7],custom:5,d:10,dash:[3,4],dashboard:[2,3],data:[2,4,5,10,11],data_many_sess:2,date:2,date_typ:2,datetim:[1,2,3,12],deadspac:[7,11],deepskyblu:4,def:[2,10],defin:[1,2,3,4,10,14],delet:[5,11],demonstr:1,denot:[1,5,7],depend:2,describ:[1,5,9],detect:11,detect_deadspac:1,determin:2,develop:2,df:[2,3],diagram:[4,10],dict:[2,4,10],dictionari:[1,4,5,9,10,14],differ:[2,3,5,11],directori:3,displai:[2,3],display_seg:2,distanc:15,distil:[0,1,3,5,7,9,13,14],distort:2,div:2,divis:1,document:[1,4],doe:[1,10],done:[1,2,7,14],dot:4,draw:2,draw_digraph:2,duplic:4,dure:2,e:[2,4,14],each:[1,2,3,4,5,7,14],easi:[5,14],easier:5,easiest:5,easili:14,edg:[2,4,9,10],edge_list:[4,10],edge_list_count:[4,10],edge_list_temp:[4,10],edgelist_list:4,edges_segmentn:[4,10],edit:15,either:[1,7,13],element:[2,10],elif:2,els:[2,4,10],end:[0,1,2,3,5,7,10,14],end_time_1:[1,14],end_time_2:[1,14],entir:[5,7],entitl:[1,2,3],enumer:5,epoch:12,epoch_to_datetim:[2,13],equal:7,even:5,event:1,exact:2,exactli:2,exampl:[0,1,6,7,9,11,13,14,15],example_seg:3,exist:[2,3,4,7,10],expect:1,experi:2,export_seg:[2,3],express:[2,3],extract:10,fall:1,fals:[4,10],featur:7,few:3,ffe7i:2,field:[1,3,5,9],field_values_of_interest:1,fig:[2,3,4,10],figur:[4,10],file:[3,5],filter:[2,5,11],find:2,find_meta_valu:[2,9],first:[1,2,7],first_rung:4,fit:1,five:1,fix:7,fixed_tim:7,flow:10,follow:[1,2,3,5,7,13],form:[1,4],format:[1,2,3,13],found:3,four:2,from:[2,3,4,7,10],functon:14,funnel:[6,15],funnel_target:4,funnel_targets_temp:4,further:[3,5],g0:2,g1:2,g2:2,g3:2,g:4,game:2,game_filt:2,gantt:[2,3],gener:[2,3,7,11,13],generate_collapsing_window_seg:[1,2,5],generate_collapsing_windows_seg:1,generate_field_nam:[2,5,7],generate_fixed_time_seg:1,generate_matched_valu:[2,5,7],generate_seg:[1,5],get:[2,7,11,12,15],get_num_log:7,get_segment_list:[2,7],get_segment_name_dict:7,get_segments_aft:7,get_segments_befor:7,get_segments_of_typ:7,get_uid:0,get_uuid:[1,13],getuuid:[1,2,13],give:[5,10],given:[0,1,3,4,5,7,10],global:2,go:[4,10],graph:[2,3,4,10,15],graph_edit_dist:2,green:2,group:5,ha:[1,2,5],had:[2,7],happen:1,have:[1,2,3,4,7,10],held:7,help:[2,5,9],hold:[1,5],how:[2,4,5,7,10,14],howev:[2,7,14],hundr:5,i:[2,4,10,14],id:[1,2],identifi:[1,13],idl:1,illustr:1,improv:2,includ:[5,7,13],index:[2,4,7,10],indic:[1,3,7],individu:[7,14],inform:1,inher:3,initi:4,input:[2,4,7,10],insid:4,instal:5,instanc:[1,2],instanti:2,integ:[1,2,13],integer_tim:13,interact:2,interchang:1,interest:[1,4],intersect:11,interv:1,investig:2,involv:[1,2],isinst:2,issu:2,item:[2,4,10],iter:[5,9,11,14],its:1,itself:[1,2],json_fil:2,kart:2,kei:[1,2,4,7,9,10],know:1,kv:2,label:[1,4,10],lambda:2,larg:2,largest:0,last:1,least:7,len:[2,4,10],length:[2,4],less:7,let:2,lightsalmon:4,like:3,lime:4,line:[3,4],link:10,list:[0,1,2,4,5,9,10,11,14],liter:1,load:[1,2],locat:7,log:[2,3,5,9,11,13,14],logic:[2,11,15],longer:1,look:[2,3,14],lot:2,mai:1,main:9,make:[2,5],manag:5,mani:[2,4,10],manipul:[5,11,15],map:14,mario:2,marker:4,match:[1,2,3,5,7],meaning:5,meant:2,measur:15,metadata:5,method:7,metric:2,mock:4,modif:[5,11],modifi:7,modul:[],more:[1,2],most:[1,2],most_common:4,ms:2,must:[1,7],name:[1,2,3,4,5,7,10,14],necessari:2,need:[2,5,14],nest:14,networkx:2,new_edg:4,new_edge_list:4,new_edge_list_count:4,new_nod:10,new_seg:[0,2],new_segment1:0,new_segment2:0,new_segment_1:0,new_segment_2:0,newli:2,next:2,nfilter:7,nintendo:2,nintendog:2,nmodifi:7,node:[2,4,10],node_color:2,node_label:[4,10],non:1,none:[4,7],note:[1,2,3,7],now:[2,4],nsegment:7,num_log:[2,5,7],number:[2,3,4,5],numer:7,nx:2,object:[0,3,11,13,14,15],occas:2,occur:[1,4],off:1,onc:5,one:[1,2,9],onli:7,opac:4,open:2,optimize_graph_edit_dist:2,option:[1,4,10],order:1,origin:[2,7,10],os:2,other:2,our:[2,3],out:[2,7,9],output:[1,2,3,4,7,10,13],over:14,overarch:2,overlap:1,overview:13,own:1,p:4,packag:[0,1,2,11,14],page:[],pairwiseseq:[2,9],pairwisestag:9,panda:[2,3],paramet:[1,7],particular:1,particularli:[3,7,9,13],pass:[2,4,10],path:[1,2,3],pattern:5,pd:[2,3],percent:4,perform:[0,2,7],pie:3,place:3,plot:[3,4],png:[],possibl:1,pre:3,prefix:1,prepar:13,preprocess:[11,13],previou:1,previous:2,print:7,prior:1,problem:2,process:15,produc:2,project:5,provid:[0,1,3,4,5,9,10,13],put:1,px:[2,3],py:[],python:[1,3,5],quantiti:10,race:2,rang:[2,4,10],rather:[2,7,14],raw_data:2,re:2,read:13,read_csv:[2,3],readabl:2,receiv:10,record:1,recurs:10,refer:7,reflect:2,remov:[2,4,7,10],replac:[4,10],repres:[0,1,2,3,5,7,13],represent:[5,11,13],request:4,requir:[2,13],resourc:2,rest:1,result:[7,14],revers:[2,3],row:[4,10],run:2,s:[0,1,3,5,9,14],sale:2,same:2,sankei:[6,15],sankey0:[],scene:5,screenshot:[2,3],search:8,second:[1,2],second_rung:4,section:5,seek:5,seen:[2,3,9],segment0:7,segment1:[0,1,3,7,14],segment2:[0,1,3,14],segment:[13,15],segment_list:2,segment_map:2,segment_nam:[0,1,2,5,7,14],segment_typ:[2,3,5,7],segments1:7,segments2:7,segments_aft:7,segments_befor:7,segments_dict:7,segments_list:7,self:10,send:10,sens:2,seq_result:9,seri:9,session0:2,session1:2,session2:2,session3:2,session_0_seg:2,session_1_seg:2,session_2_seg:2,session_3_seg:2,session_id:2,sessionid:2,set:[2,11,15],setup:2,shorter:1,show:[2,3,4,7,10,14],shown:[0,1,2,3,7,13],similar:[3,5,14,15],similarli:[0,13],simpl:[3,14],simplifi:2,simul:2,sinc:[2,5,7,14],smallest:0,softwar:3,some:[2,14],sometim:13,sort:[1,2,9,14],sorted_data:2,sorted_dict:[1,2,9,14],sourc:10,source_list:10,specif:[3,9,13],specifi:[2,7],split:10,sport:2,stag_result:9,start:[0,1,2,3,7,11,14,15],start_end_v:[1,2,5,14],start_time_1:[1,14],start_time_2:[1,14],step:[1,2],str:2,string:[1,4,13],string_tim:13,structur:[1,5,11],studi:2,subscript:[5,11],success:3,superset:2,support:14,syntax:5,tabl:2,take:[1,2,3,4,7,13],taken:1,tan:4,target:[4,9,10],target_list:10,target_v:9,task:2,task_exampl:2,test:[2,3],test_button:4,test_list:9,test_radio_input:4,test_text_input:4,textinfo:4,textposit:4,than:[1,2,7,14],thei:[7,13],them:[1,2],themselv:[5,7],thi:[0,1,2,3,5,7,9,13,14],third_rung:4,those:[2,3],three:[0,1,2,7,9],threshold:1,through:[1,2,3,5,11,14],throughout:1,thu:2,time:[2,3,4,13,14],timelin:3,to_datetim:2,togeth:5,took:2,tool:3,top:5,transform:8,trim:1,tupl:[1,4,9,10,14],turn:2,two:[0,1,2,3,7,9,13],type:[1,2,3,5],uid1:0,uid2:0,uid3:0,uid4:0,uid5:0,uid6:0,uid9:0,uid:[0,1,2,5,14],under:[1,5],underli:7,understand:2,union:11,uniqu:[1,9,13],unit:2,univers:[1,13],unix:[2,13],updat:7,update_yax:[2,3],us:[0,1,2,3,5,7,9,10,13,14],usag:[0,1,7,9,13,14,15],user:[1,3,4,7,10],user_specif:4,useral:[2,5,9,11,13,14],userspec:4,util:[2,5,15],uuid:[1,12],valu:[0,1,3,4,5,9,10,14],value_list:10,variabl:2,varieti:[3,5,7],via:[5,7],video:[2,3],visual:[11,15],wa:[2,3,4,5],wai:[1,2,5,7,14],want:[1,2],we:[1,2,3,4,10,13],weight:10,were:7,what:[1,3,11],when:[1,2,5,7,9,13],where:10,which:[1,2,7,14],whose:7,why:11,width:[4,10],wii:2,window:2,within:[1,2,3,5,7],without:5,write:[2,11,15],write_seg:[2,14],written_seg:14,x:4,x_end:[2,3],x_start:[2,3],y:[2,3,4],yield:2},titles:["Combining Segments with Set Logic","Creating Segment Objects","Example Usage of Distill","Exporting Segments","Funnel","Getting Started with Segmentation","Graph","Manipulating Collections of Segment Objects","Process","Processing Functions","Sankey","Segmentation","Utilities","Utility Functions","Writing Segments","Flagon Distill"],titleterms:{"export":3,"function":[4,9,10,13],"import":[2,5],The:[4,10],access:7,analyt:[],apach:3,append:7,automat:1,basic:1,collaps:1,collect:7,combin:0,comprehens:7,content:[],creat:1,creation:1,cutoff:[],data:7,datetim:13,deadspac:1,delet:7,detect:1,dictionari:7,differ:[0,7],digraph:2,distanc:2,distil:[2,15],document:[],edit:2,epoch:13,exampl:[2,3,4,10],file:2,filter:7,fix:1,flagon:15,funnel:4,further:2,gener:1,get:[5,13],graph:6,indic:[],intersect:0,iter:7,json:2,list:7,log:[1,7],logic:0,manipul:7,measur:2,modif:7,number:7,object:[1,2,5,7],packag:5,plotli:[2,3],preprocess:1,process:[2,8,9],py:[],represent:7,s:2,sankei:10,search:9,segment:[0,1,2,3,5,7,11,14],session:2,set:0,similar:2,start:5,structur:7,subscript:7,superset:3,tabl:[],through:7,time:[1,7],timelin:2,transform:9,type:7,union:0,usag:2,user:2,useral:1,util:[12,13],uuid:13,visual:[2,3],what:5,why:5,window:1,workflow:2,write:14}})
\ No newline at end of file
diff --git a/docs/images/Games_List.png b/docs/images/Games_List.png
new file mode 100644
index 0000000..07fcc78
--- /dev/null
+++ b/docs/images/Games_List.png
Binary files differ
diff --git a/docs/images/Graph_0.png b/docs/images/Graph_0.png
new file mode 100644
index 0000000..181e04b
--- /dev/null
+++ b/docs/images/Graph_0.png
Binary files differ
diff --git a/docs/images/Graph_1.png b/docs/images/Graph_1.png
new file mode 100644
index 0000000..3d58df9
--- /dev/null
+++ b/docs/images/Graph_1.png
Binary files differ
diff --git a/docs/images/Graph_2.png b/docs/images/Graph_2.png
new file mode 100644
index 0000000..256da1d
--- /dev/null
+++ b/docs/images/Graph_2.png
Binary files differ
diff --git a/docs/images/Graph_3.png b/docs/images/Graph_3.png
new file mode 100644
index 0000000..17511e6
--- /dev/null
+++ b/docs/images/Graph_3.png
Binary files differ
diff --git a/docs/images/Superset_Dashboard.png b/docs/images/Superset_Dashboard.png
new file mode 100644
index 0000000..78c9804
--- /dev/null
+++ b/docs/images/Superset_Dashboard.png
Binary files differ
diff --git a/docs/images/Timeline_Graph.png b/docs/images/Timeline_Graph.png
new file mode 100644
index 0000000..edba0ae
--- /dev/null
+++ b/docs/images/Timeline_Graph.png
Binary files differ
diff --git a/docs/images/Video_Game_Filter.png b/docs/images/Video_Game_Filter.png
new file mode 100644
index 0000000..311bef4
--- /dev/null
+++ b/docs/images/Video_Game_Filter.png
Binary files differ
diff --git a/docs/index.rst b/docs/index.rst
index 734432f..2473532 100644
--- a/docs/index.rst
+++ b/docs/index.rst
@@ -12,4 +12,5 @@
    Graph_Index
    Segmentation
    Process
-   Utilities
\ No newline at end of file
+   Utilities
+   Example_Usage
\ No newline at end of file