Bläddra i källkod

Adds additional yield plots

Caleb Fangmeier 6 år sedan
förälder
incheckning
aaa89510ac
7 ändrade filer med 488 tillägg och 37 borttagningar
  1. 11 0
      .idea/TTTT2.iml
  2. 4 0
      .idea/misc.xml
  3. 8 0
      .idea/modules.xml
  4. 6 0
      .idea/vcs.xml
  5. 378 0
      .idea/workspace.xml
  6. 1 1
      filval
  7. 80 36
      yields.py

+ 11 - 0
.idea/TTTT2.iml

@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module type="PYTHON_MODULE" version="4">
+  <component name="NewModuleRootManager">
+    <content url="file://$MODULE_DIR$" />
+    <orderEntry type="inheritedJdk" />
+    <orderEntry type="sourceFolder" forTests="false" />
+  </component>
+  <component name="TestRunnerService">
+    <option name="PROJECT_TEST_RUNNER" value="Unittests" />
+  </component>
+</module>

+ 4 - 0
.idea/misc.xml

@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="ProjectRootManager" version="2" project-jdk-name="Python 3.6 (TTTT2)" project-jdk-type="Python SDK" />
+</project>

+ 8 - 0
.idea/modules.xml

@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="ProjectModuleManager">
+    <modules>
+      <module fileurl="file://$PROJECT_DIR$/.idea/TTTT2.iml" filepath="$PROJECT_DIR$/.idea/TTTT2.iml" />
+    </modules>
+  </component>
+</project>

+ 6 - 0
.idea/vcs.xml

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="VcsDirectoryMappings">
+    <mapping directory="$PROJECT_DIR$" vcs="Git" />
+  </component>
+</project>

+ 378 - 0
.idea/workspace.xml

@@ -0,0 +1,378 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="ChangeListManager">
+    <list default="true" id="57bbb064-ceb0-4277-b651-b49e70e3c99a" name="Default" comment="">
+      <change beforePath="" afterPath="$PROJECT_DIR$/.idea/vcs.xml" />
+      <change beforePath="$PROJECT_DIR$/filval" afterPath="$PROJECT_DIR$/filval" />
+      <change beforePath="$PROJECT_DIR$/yields.py" afterPath="$PROJECT_DIR$/yields.py" />
+    </list>
+    <option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
+    <option name="TRACKING_ENABLED" value="true" />
+    <option name="SHOW_DIALOG" value="false" />
+    <option name="HIGHLIGHT_CONFLICTS" value="true" />
+    <option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
+    <option name="LAST_RESOLUTION" value="IGNORE" />
+  </component>
+  <component name="FileEditorManager">
+    <leaf>
+      <file leaf-file-name="yields.py" pinned="false" current-in-tab="true">
+        <entry file="file://$PROJECT_DIR$/yields.py">
+          <provider selected="true" editor-type-id="text-editor">
+            <state relative-caret-position="936">
+              <caret line="52" column="18" lean-forward="false" selection-start-line="52" selection-start-column="18" selection-end-line="52" selection-end-column="18" />
+              <folding>
+                <element signature="e#22#40#0" expanded="true" />
+                <marker date="1512080022393" expanded="true" signature="2324:2542" ph="r&quot;&quot;&quot; $\frac{S}{S+B}$''...='k')" />
+                <marker date="1512080022393" expanded="true" signature="2618:2942" ph="@decl_plot&#10;def plot_si...alse)" />
+                <marker date="1512080022393" expanded="true" signature="2945:3681" ph="if __name__ == '__main...ot'))" />
+              </folding>
+            </state>
+          </provider>
+        </entry>
+      </file>
+      <file leaf-file-name="histogram_utils.py" pinned="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/filval/python/filval/histogram_utils.py">
+          <provider selected="true" editor-type-id="text-editor">
+            <state relative-caret-position="774">
+              <caret line="78" column="19" lean-forward="false" selection-start-line="78" selection-start-column="19" selection-end-line="78" selection-end-column="19" />
+              <folding>
+                <element signature="e#1125#2185#0" expanded="false" />
+                <element signature="e#2222#2523#0" expanded="false" />
+                <element signature="e#2782#3020#0" expanded="false" />
+                <element signature="e#3059#3164#0" expanded="false" />
+                <element signature="e#3320#3508#0" expanded="false" />
+                <element signature="e#3535#3565#0" expanded="false" />
+                <element signature="e#3594#3783#0" expanded="false" />
+                <element signature="e#4334#4524#0" expanded="false" />
+                <element signature="e#4568#4595#0" expanded="false" />
+              </folding>
+            </state>
+          </provider>
+        </entry>
+      </file>
+      <file leaf-file-name="plotter.py" pinned="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/filval/python/filval/plotter.py">
+          <provider selected="true" editor-type-id="text-editor">
+            <state relative-caret-position="-1203">
+              <caret line="57" column="8" lean-forward="false" selection-start-line="57" selection-start-column="8" selection-end-line="57" selection-end-column="8" />
+              <folding>
+                <element signature="e#24#59#0" expanded="true" />
+                <element signature="e#3113#4582#0" expanded="false" />
+                <element signature="e#5416#6029#0" expanded="false" />
+              </folding>
+            </state>
+          </provider>
+        </entry>
+      </file>
+    </leaf>
+  </component>
+  <component name="Git.Settings">
+    <option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
+  </component>
+  <component name="IdeDocumentHistory">
+    <option name="CHANGED_PATHS">
+      <list>
+        <option value="$PROJECT_DIR$/filval/python/requirements.txt" />
+        <option value="$PROJECT_DIR$/filval/python/setup.py" />
+        <option value="$PROJECT_DIR$/filval/python/filval/histogram_utils.py" />
+        <option value="$PROJECT_DIR$/filval/python/filval/plotter.py" />
+        <option value="$PROJECT_DIR$/yields.py" />
+      </list>
+    </option>
+  </component>
+  <component name="ProjectFrameBounds">
+    <option name="y" value="27" />
+    <option name="width" value="1389" />
+    <option name="height" value="2133" />
+  </component>
+  <component name="ProjectView">
+    <navigator currentView="ProjectPane" proportions="" version="1">
+      <flattenPackages />
+      <showMembers />
+      <showModules />
+      <showLibraryContents />
+      <hideEmptyPackages />
+      <abbreviatePackageNames />
+      <autoscrollToSource />
+      <autoscrollFromSource />
+      <sortByType />
+      <manualOrder />
+      <foldersAlwaysOnTop value="true" />
+    </navigator>
+    <panes>
+      <pane id="Scope" />
+      <pane id="Scratches" />
+      <pane id="ProjectPane">
+        <subPane>
+          <expand>
+            <path>
+              <item name="TTTT2" type="b2602c69:ProjectViewProjectNode" />
+              <item name="TTTT2" type="462c0819:PsiDirectoryNode" />
+            </path>
+            <path>
+              <item name="TTTT2" type="b2602c69:ProjectViewProjectNode" />
+              <item name="TTTT2" type="462c0819:PsiDirectoryNode" />
+              <item name="output" type="462c0819:PsiDirectoryNode" />
+            </path>
+            <path>
+              <item name="TTTT2" type="b2602c69:ProjectViewProjectNode" />
+              <item name="External Libraries" type="cb654da1:ExternalLibrariesNode" />
+            </path>
+            <path>
+              <item name="TTTT2" type="b2602c69:ProjectViewProjectNode" />
+              <item name="External Libraries" type="cb654da1:ExternalLibrariesNode" />
+              <item name="&lt; Python 3.6 (TTTT2) &gt;" type="70bed36:NamedLibraryElementNode" />
+            </path>
+          </expand>
+          <select />
+        </subPane>
+      </pane>
+    </panes>
+  </component>
+  <component name="PropertiesComponent">
+    <property name="settings.editor.selected.configurable" value="com.jetbrains.python.configuration.PyActiveSdkModuleConfigurable" />
+  </component>
+  <component name="RunDashboard">
+    <option name="ruleStates">
+      <list>
+        <RuleState>
+          <option name="name" value="ConfigurationTypeDashboardGroupingRule" />
+        </RuleState>
+        <RuleState>
+          <option name="name" value="StatusDashboardGroupingRule" />
+        </RuleState>
+      </list>
+    </option>
+  </component>
+  <component name="RunManager" selected="Python.yields">
+    <configuration name="plotter" type="PythonConfigurationType" factoryName="Python" temporary="true">
+      <option name="INTERPRETER_OPTIONS" value="" />
+      <option name="PARENT_ENVS" value="true" />
+      <envs>
+        <env name="PYTHONUNBUFFERED" value="1" />
+      </envs>
+      <option name="SDK_HOME" value="" />
+      <option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/filval/python/filval" />
+      <option name="IS_MODULE_SDK" value="true" />
+      <option name="ADD_CONTENT_ROOTS" value="true" />
+      <option name="ADD_SOURCE_ROOTS" value="true" />
+      <module name="TTTT2" />
+      <option name="SCRIPT_NAME" value="$PROJECT_DIR$/filval/python/filval/plotter.py" />
+      <option name="PARAMETERS" value="" />
+      <option name="SHOW_COMMAND_LINE" value="false" />
+      <option name="EMULATE_TERMINAL" value="false" />
+      <option name="MODULE_MODE" value="false" />
+    </configuration>
+    <configuration name="setup" type="PythonConfigurationType" factoryName="Python" temporary="true">
+      <option name="INTERPRETER_OPTIONS" value="" />
+      <option name="PARENT_ENVS" value="true" />
+      <envs>
+        <env name="PYTHONUNBUFFERED" value="1" />
+      </envs>
+      <option name="SDK_HOME" value="" />
+      <option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/filval/python" />
+      <option name="IS_MODULE_SDK" value="true" />
+      <option name="ADD_CONTENT_ROOTS" value="true" />
+      <option name="ADD_SOURCE_ROOTS" value="true" />
+      <module name="TTTT2" />
+      <option name="SCRIPT_NAME" value="$PROJECT_DIR$/filval/python/setup.py" />
+      <option name="PARAMETERS" value="install" />
+      <option name="SHOW_COMMAND_LINE" value="false" />
+      <option name="EMULATE_TERMINAL" value="false" />
+      <option name="MODULE_MODE" value="false" />
+    </configuration>
+    <configuration name="yields" type="PythonConfigurationType" factoryName="Python" temporary="true">
+      <option name="INTERPRETER_OPTIONS" value="" />
+      <option name="PARENT_ENVS" value="true" />
+      <envs>
+        <env name="PYTHONUNBUFFERED" value="1" />
+      </envs>
+      <option name="SDK_HOME" value="" />
+      <option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
+      <option name="IS_MODULE_SDK" value="true" />
+      <option name="ADD_CONTENT_ROOTS" value="true" />
+      <option name="ADD_SOURCE_ROOTS" value="true" />
+      <module name="TTTT2" />
+      <option name="SCRIPT_NAME" value="$PROJECT_DIR$/yields.py" />
+      <option name="PARAMETERS" value="" />
+      <option name="SHOW_COMMAND_LINE" value="false" />
+      <option name="EMULATE_TERMINAL" value="false" />
+      <option name="MODULE_MODE" value="false" />
+    </configuration>
+    <list size="3">
+      <item index="0" class="java.lang.String" itemvalue="Python.setup" />
+      <item index="1" class="java.lang.String" itemvalue="Python.yields" />
+      <item index="2" class="java.lang.String" itemvalue="Python.plotter" />
+    </list>
+    <recent_temporary>
+      <list size="3">
+        <item index="0" class="java.lang.String" itemvalue="Python.yields" />
+        <item index="1" class="java.lang.String" itemvalue="Python.setup" />
+        <item index="2" class="java.lang.String" itemvalue="Python.plotter" />
+      </list>
+    </recent_temporary>
+  </component>
+  <component name="ShelveChangesManager" show_recycled="false">
+    <option name="remove_strategy" value="false" />
+  </component>
+  <component name="SvnConfiguration">
+    <configuration />
+  </component>
+  <component name="TaskManager">
+    <task active="true" id="Default" summary="Default task">
+      <changelist id="57bbb064-ceb0-4277-b651-b49e70e3c99a" name="Default" comment="" />
+      <created>1512071116470</created>
+      <option name="number" value="Default" />
+      <option name="presentableId" value="Default" />
+      <updated>1512071116470</updated>
+    </task>
+    <servers />
+  </component>
+  <component name="ToolWindowManager">
+    <frame x="0" y="27" width="1389" height="2133" extended-state="0" />
+    <layout>
+      <window_info id="Project" active="true" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.25197983" sideWeight="0.5" order="0" side_tool="false" content_ui="combo" />
+      <window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
+      <window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="-1" side_tool="true" content_ui="tabs" />
+      <window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.1611468" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
+      <window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
+      <window_info id="Python Console" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32970837" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
+      <window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
+      <window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
+      <window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
+      <window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="-1" side_tool="true" content_ui="tabs" />
+      <window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
+      <window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="combo" />
+      <window_info id="Message" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
+      <window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
+      <window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
+      <window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
+      <window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
+    </layout>
+  </component>
+  <component name="VcsContentAnnotationSettings">
+    <option name="myLimit" value="2678400000" />
+  </component>
+  <component name="XDebuggerManager">
+    <breakpoint-manager />
+    <watches-manager />
+  </component>
+  <component name="editorHistoryManager">
+    <entry file="file://$PROJECT_DIR$/templates/dashboard.htm">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="0">
+          <caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/plots.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="0">
+          <caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$USER_HOME$/.virtualenvs/TTTT2/lib/python3.6/site-packages/latexipy/_latexipy.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="-4097">
+          <caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/filval/python/setup.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="216">
+          <caret line="12" column="4" lean-forward="false" selection-start-line="12" selection-start-column="4" selection-end-line="12" selection-end-column="4" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/filval/python/requirements.txt">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="36">
+          <caret line="2" column="0" lean-forward="false" selection-start-line="2" selection-start-column="0" selection-end-line="2" selection-end-column="0" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/filval/python/filval/result_set.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="0">
+          <caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
+          <folding>
+            <element signature="e#0#11#0" expanded="true" />
+          </folding>
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/filval/python/filval/plotter.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="-1203">
+          <caret line="57" column="8" lean-forward="false" selection-start-line="57" selection-start-column="8" selection-end-line="57" selection-end-column="8" />
+          <folding>
+            <element signature="e#24#59#0" expanded="true" />
+            <element signature="e#3113#4582#0" expanded="false" />
+            <element signature="e#5416#6029#0" expanded="false" />
+          </folding>
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/filval/python/filval/histogram_utils.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="774">
+          <caret line="78" column="19" lean-forward="false" selection-start-line="78" selection-start-column="19" selection-end-line="78" selection-end-column="19" />
+          <folding>
+            <element signature="e#1125#2185#0" expanded="false" />
+            <element signature="e#2222#2523#0" expanded="false" />
+            <element signature="e#2782#3020#0" expanded="false" />
+            <element signature="e#3059#3164#0" expanded="false" />
+            <element signature="e#3320#3508#0" expanded="false" />
+            <element signature="e#3535#3565#0" expanded="false" />
+            <element signature="e#3594#3783#0" expanded="false" />
+            <element signature="e#4334#4524#0" expanded="false" />
+            <element signature="e#4568#4595#0" expanded="false" />
+          </folding>
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/output/yield.html">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="0">
+          <caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/yields.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="936">
+          <caret line="52" column="18" lean-forward="false" selection-start-line="52" selection-start-column="18" selection-end-line="52" selection-end-column="18" />
+          <folding>
+            <element signature="e#22#40#0" expanded="true" />
+            <marker date="1512080022393" expanded="true" signature="2324:2542" ph="r&quot;&quot;&quot; $\frac{S}{S+B}$''...='k')" />
+            <marker date="1512080022393" expanded="true" signature="2618:2942" ph="@decl_plot&#10;def plot_si...alse)" />
+            <marker date="1512080022393" expanded="true" signature="2945:3681" ph="if __name__ == '__main...ot'))" />
+          </folding>
+        </state>
+      </provider>
+    </entry>
+  </component>
+  <component name="masterDetails">
+    <states>
+      <state key="ScopeChooserConfigurable.UI">
+        <settings>
+          <splitter-proportions>
+            <option name="proportions">
+              <list>
+                <option value="0.2" />
+              </list>
+            </option>
+          </splitter-proportions>
+        </settings>
+      </state>
+    </states>
+  </component>
+</project>

+ 1 - 1
filval

@@ -1 +1 @@
-Subproject commit f7ef387b4ef4fdd81c7789f2fa35b72a9465ebfb
+Subproject commit 7206f9c742acf25fa94e351679781b5d67117fa1

+ 80 - 36
yields.py

@@ -1,9 +1,10 @@
 #!/usr/bin/env python
+import numpy as np
 import matplotlib.pyplot as plt
 
 from filval.result_set import ResultSet
-from filval.histogram_utils import hist
-from filval.plotter import (decl_plot, render_plots, hist_plot, Plot)
+from filval.histogram_utils import hist, hist_add
+from filval.plotter import (decl_plot, render_plots, hist_plot, hist_plot_stack, Plot)
 
 
 def generate_dashboard(plots, output='dashboard.htm'):
@@ -21,7 +22,7 @@ def generate_dashboard(plots, output='dashboard.htm'):
                         })
 
     def render_to_file(template_name, **kwargs):
-        with open(join('output', template_name), 'w') as tempout:
+        with open(join('output', output), 'w') as tempout:
             template = env.get_template(template_name)
             tempout.write(template.render(**kwargs))
 
@@ -31,33 +32,61 @@ def generate_dashboard(plots, output='dashboard.htm'):
             yield objs[:n]
             objs = objs[n:]
 
-    render_to_file(output, plots=get_by_n(plots, 3),
+    render_to_file('dashboard.htm', plots=get_by_n(plots, 3),
                    outdir="figures/")
 
 
 @decl_plot
-def plot_yield(rss):
-    r''' '''
-    from filval.plotter import StackHist
+def plot_yield_grid(rss):
+    r"""## Event Yield
+
+    The event yield for the eight signal regions defined in AN-17-115. Data is normalized
+    to the Moriond 2018 integrated luminosity ($35.9\textrm{fb}^{-1}$). Code for the histogram generation is
+    here: <https://github.com/cfangmeier/FTAnalysis/blob/master/studies/tau/Yield.C>
+    """
+    _, ((ax_tttt, ax_ttw), (ax_ttz, ax_tth)) = plt.subplots(2, 2)
+    ft, ttw, ttz, tth = map(lambda rs: hist(rs.SRs), rss)
+    plt.sca(ax_tttt)
+    hist_plot(ft, title='TTTT', stats=False)
+    plt.sca(ax_ttw)
+    hist_plot(ttw, title='TTW', stats=False)
+    plt.sca(ax_ttz)
+    hist_plot(ttz, title='TTZ', stats=False)
+    plt.sca(ax_tth)
+    hist_plot(tth, title='TTH', stats=False)
+
+    plt.xlabel('Signal Region')
+
+
+@decl_plot
+def plot_yield_stack(rss):
+    r"""## Event Yield - Stacked
+
+    The event yield for the eight signal regions defined in AN-17-115. Data is normalized
+    to the Moriond 2018 integrated luminosity ($35.9\textrm{fb}^{-1}$). Code for the histogram generation is
+    here: <https://github.com/cfangmeier/FTAnalysis/blob/master/studies/tau/Yield.C>
+    """
     ft, ttw, ttz, tth = map(lambda rs: hist(rs.SRs), rss)
-    # ft10 = ft[0]*10, ft[1]*10, ft[2]
-    sh = StackHist()
-    sh.add_mc_background(rss[1].SRs, 'TTW')
-    sh.set_mc_signal(rss[0].SRs, 'TTTT')
-    sh.draw(plt.gca())
-    # hist_plot(ft10, include_errors=False, stats=False,
-    #           color='k', label='TTTT (x10)')
-    
-    # bg = 
-    # plt.hist(
-    # hist_plot(ttw, include_errors=False, stats=False,
-    #           color='g', label='TTW')
-    # hist_plot(ttz, include_errors=False, stats=False,
-    #           color='r', label='TTZ')
-    # hist_plot(tth, include_errors=False, stats=False,
-    #           color='b', label='TTH')
-    # plt.xlabel('Signal Region')
-    # plt.legend()
+    hist_plot_stack([ttw, ttz, tth], labels=['TTW', 'TTZ', 'TTH'])
+    ft = ft[0]*10, ft[1], ft[2]
+    hist_plot(ft, label='TTTT (x10)', stats=False, color='k')
+
+    plt.ylim((0, 160))
+    plt.xlabel('Signal Region')
+    plt.legend()
+
+
+@decl_plot
+def plot_sig_strength(rss):
+    r""" The signal strength of the TTTT signal defined as
+
+    $\frac{S}{\sqrt{S+B}}$
+
+    """
+    ft, ttw, ttz, tth = map(lambda rs: hist(rs.SRs), rss)
+    bg = hist_add(ttw, ttz, tth)
+    strength = ft[0] / np.sqrt(ft[0] + bg[0])
+    hist_plot((strength, ft[1], ft[2]), stats=False)
 
 
 if __name__ == '__main__':
@@ -65,29 +94,44 @@ if __name__ == '__main__':
     # into memory and makes them available as attributes
     # if len(sys.argv) != 2:
     #     raise ValueError("please supply root file")
-    rss = (ResultSet("ft", 'yield_ft.root'),
-           ResultSet("ttw", 'yield_ttw.root'),
-           ResultSet("ttz", 'yield_ttz.root'),
-           ResultSet("tth", 'yield_tth.root'))
-    rss_notau = (ResultSet("ft_notau", 'yield_ft_notau.root'),
-                 ResultSet("ttw_notau", 'yield_ttw_notau.root'),
-                 ResultSet("ttz_notau", 'yield_ttz_notau.root'),
-                 ResultSet("tth_notau", 'yield_tth_notau.root'))
+    rss = (ResultSet("ft", 'data/yield_ft.root'),
+           ResultSet("ttw", 'data/yield_ttw.root'),
+           ResultSet("ttz", 'data/yield_ttz.root'),
+           ResultSet("tth", 'data/yield_tth.root'))
+    rss_notau = (ResultSet("ft_notau", 'data/yield_ft_notau.root'),
+                 ResultSet("ttw_notau", 'data/yield_ttw_notau.root'),
+                 ResultSet("ttz_notau", 'data/yield_ttz_notau.root'),
+                 ResultSet("tth_notau", 'data/yield_tth_notau.root'))
 
     # Next, declare all of the (sub)plots that will be assembled into full
     # figures later
-    yield_tau = (plot_yield, (rss,), {})
-    yield_notau = (plot_yield, (rss_notau,), {})
+    yield_tau = (plot_yield_grid, (rss,), {})
+    yield_notau = (plot_yield_grid, (rss_notau,), {})
+
+    yield_tau_stack = (plot_yield_stack, (rss,), {})
+    yield_notau_stack = (plot_yield_stack, (rss_notau,), {})
 
+    sig_strength_tau = (plot_sig_strength, (rss,), {})
+    sig_strength_notau = (plot_sig_strength, (rss_notau,), {})
     # Now assemble the plots into figures.
     plots = [
         Plot([[yield_tau]],
              'Yield With Tau'),
         Plot([[yield_notau]],
              'Yield Without Tau'),
+        # Plot([[yield_tau_stack]],
+        #      'Yield With Tau Stacked'),
+        # Plot([[yield_notau_stack]],
+        #      'Yield Without Tau Stacked'),
+        Plot([[yield_tau_stack],
+              [yield_notau_stack]],
+             'Event Yield, top: with tau, bottom, no tau'),
+        Plot([[sig_strength_tau],
+              [sig_strength_notau]],
+             'Signal Strength')
     ]
 
     # Finally, render and save the plots and generate the html+bootstrap
     # dashboard to view them
     render_plots(plots, to_disk=False)
-    generate_dashboard(plots)
+    generate_dashboard(plots, output='yield.html')