```python
from jupyterthemes import get_themes
from jupyterthemes.stylefx import set_nb_theme
themes = get_themes()
set_nb_theme(themes[1])
```

<style> @font-face {
 font-family: 'Droid Sans Mono';
 font-weight: normal;
 font-style: normal;
 src: local('Droid Sans Mono'), url('fonts/droid-sans-mono.woff') format('woff');
}
@font-face {
 font-family: 'Exo_2';
 font-weight: normal;
 font-style: normal;
 src: local('Exo_2'), url('fonts/exo-II-regular.ttf') format('truetype');
}
@font-face {
 font-family: 'Fira Code';
 font-weight: normal;
 font-style: normal;
 src: local('Fira Code'), url('fonts/firacode.otf') format('opentype');
}
@font-face {
 font-family: 'Lora';
 font-weight: normal;
 font-style: normal;
 src: local('Lora'), url('fonts/Lora-Regular.ttf') format('truetype');
}
div#notebook {
 font-family: "Exo_2", sans-serif;
 font-size: 13pt;
 line-height: 170%;
 color: #303030;
}
body,
div.body {
 font-family: "Exo_2", sans-serif;
 font-size: 13pt;
 color: #303030;
 background-color: #ffffff;
 background: #ffffff;
}
body.notebook_app {
 padding: 0;
 background-color: #ffffff;
 background: #ffffff;
 padding-right: 0px !important;
 overflow-y: hidden;
}
a {
 font-family: "Exo_2", sans-serif;
 color: #303030;
}
a:hover,
a:focus {
 color: #2f2f2f;
}
.list_header,
div#notebook_list_header.row.list_header {
 font-size: 14pt;
 color: #2f2f2f;
 background-color: #ffffff;
}
div#cluster_list_header.row.list_header,
div#running .row.list_header {
 font-size: 14pt;
 color: #303030;
 background: #eeeeee;
 background-color: #eeeeee;
 border-bottom: 2px solid rgba(180,180,180,.30);
}
div#cluster_list > div.list_item.row,
div#cluster_list > div.list_item.row:hover {
 background: #f7f7f7;
 background-color: #f7f7f7;
}
div#clusters.tab-pane.active {
 font-size: 12.0pt;
 padding: 4px 0 4px 0;
}
#running .panel-group .panel .panel-heading {
 font-size: 14pt;
 color: #303030;
 padding: 8px 8px;
 background: #eeeeee;
 background-color: #eeeeee;
}
#running .panel-group .panel .panel-heading a {
 font-size: 14pt;
 color: #303030;
}
#running .panel-group .panel .panel-heading a:focus,
#running .panel-group .panel .panel-heading a:hover {
 font-size: 14pt;
 color: #303030;
}
#running .panel-group .panel .panel-body .list_container .list_item {
 background: #f7f7f7;
 background-color: #f7f7f7;
 padding: 2px;
 border-bottom: 2px solid rgba(180,180,180,.30);
}
#running .panel-group .panel .panel-body .list_container .list_item:hover {
 background: #f7f7f7;
 background-color: #f7f7f7;
}
#running .panel-group .panel .panel-body {
 padding: 2px;
}
div.running_list_info.toolbar_info {
 font-size: 12.0pt;
 padding: 4px 0 4px 0;
 height: inherit;
 line-height: inherit;
 text-shadow: none;
}
.list_placeholder {
 font-weight: normal;
}
#tree-selector {
 padding: 0px;
}
#project_name > ul > li > a > i.fa.fa-home {
 color: #ff7823;
 font-size: 17pt;
 display: inline-block;
 position: static;
 padding: 0px 0px;
 font-weight: normal;
 text-align: center;
 vertical-align: text-top;
}
#project_name {
 display: inline-flex;
 padding-left: 7px;
 margin-left: -2px;
 margin-bottom: -20px;
 text-align: -webkit-auto;
 vertical-align: text-top;
}
div#notebook_toolbar div.dynamic-instructions {
 font-family: "Exo_2", sans-serif;
 font-size: 12.0pt;
}
.toolbar_info {
 font-family: "Exo_2", sans-serif;
 font-size: 12.0pt;
 color: #303030;
 text-shadow: none;
 border: none;
 height: inherit;
 line-height: inherit;
}
.list_container {
 font-size: 12.0pt;
 color: #303030;
 border: none;
 text-shadow: none !important;
}
.list_container > div {
 border-bottom: 1px solid rgba(180,180,180,.14);
 font-size: 12.0pt;
}
.list_header > div,
.list_item > div {
 padding-left: 0px;
}
.list_header > div input,
.list_item > div input {
 top: 0px;
}
.list_header > div .item_link,
.list_item > div .item_link {
 margin-left: -1px;
 vertical-align: middle;
 line-height: 22px;
 font-size: 12.0pt;
}
.item_icon {
 font-size: 12.0pt;
 vertical-align: middle;
}
.list_item input:not([type="checkbox"]) {
 padding-right: 0px;
 height: auto;
 width: 20%;
 margin: 6px 0 0;
 margin-top: 1px;
}
#button-select-all {
 height: auto;
 font-size: 12.0pt;
 padding: 5px;
 min-width: 65px;
 z-index: 0;
}
button#tree-selector-btn {
 height: auto;
 font-size: 12.0pt;
 padding: 5px;
}
input#select-all.pull-left.tree-selector {
 margin-left: 7px;
 margin-right: 2px;
 margin-top: 5px;
}
input[type="radio"],
input[type="checkbox"] {
 margin: 6px 0 0;
 margin-top: 1px;
 line-height: normal;
}
.list_container a {
 font-size: 17px;
 color: #303030;
 border: none;
 text-shadow: none !important;
 font-weight: normal;
 font-style: normal;
}
div.list_container a:hover {
 color: #2f2f2f;
}
div.list_item:hover {
 background-color: #fafafa;
}
.breadcrumb > li {
 font-size: 12.0pt;
 color: #303030;
 border: none;
 text-shadow: none !important;
}
ul#tabs a {
 font-family: "Exo_2", sans-serif;
 font-size: 13pt;
 font-weight: normal;
 font-style: normal;
 border-color: transparent;
 text-shadow: none !important;
}
.nav-tabs {
 font-family: "Exo_2", sans-serif;
 font-size: 13pt;
 font-weight: normal;
 font-style: normal;
 background: #ffffff;
 text-shadow: none !important;
 border-color: transparent;
 border-bottom-color: rgba(180,180,180,.30);
}
.nav-tabs > li > a:hover {
 color: #2f2f2f;
 background-color: rgba(180,180,180,.14);
}
.nav-tabs > li > a:active,
.nav-tabs > li > a:focus,
.nav-tabs > li.active > a,
.nav-tabs > li.active > a:focus,
.nav-tabs > li.active > a:hover,
.nav-tabs > li.active > a,
.nav-tabs > li.active > a:hover,
.nav-tabs > li.active > a:focus {
 color: #1c1c1c;
 background-color: #eeeeee;
 border: 1px solid transparent;
 border-bottom-color: transparent;
 cursor: default;
}
.nav > li > a:hover,
.nav > li > a:focus {
 text-decoration: none;
 background-color: rgba(180,180,180,.14);
}
.nav > li.disabled > a,
.nav > li.disabled > a:hover {
 color: #aaaaaa;
}
div#notebook {
 font-family: "Exo_2", sans-serif;
 font-size: 13pt;
 padding-top: 4px;
}
.notebook_app {
 background-color: #ffffff;
}
#notebook-container {
 padding: 13px;
 background-color: #ffffff;
 min-height: 0px;
 box-shadow: none;
 width: 980px;
 margin-right: auto;
 margin-left: auto;
}
div#ipython-main-app.container {
 width: 980px;
 margin-right: auto;
 margin-left: auto;
 margin-right: auto;
 margin-left: auto;
}
.container {
 width: 980px;
 margin-right: auto;
 margin-left: auto;
}
.notebook_app #header {
 box-shadow: none !important;
 background-color: #ffffff;
 border-bottom: 2px solid rgba(180,180,180,.14);
}
#header {
 font-family: "Exo_2", sans-serif;
 font-size: 13pt;
 box-shadow: none;
 background-color: #ffffff;
}
#header .header-bar {
 background: #ffffff;
 background-color: #ffffff;
}
body > #header .header-bar {
 width: 100%;
 background: #ffffff;
}
#menubar {
 background-color: #ffffff;
}
#menubar .navbar,
.navbar-default {
 background-color: #ffffff;
 margin-bottom: 0px;
}
.navbar {
 border: none;
}
.navbar-default {
 font-family: "Exo_2", sans-serif;
 font-size: 13pt;
 background-color: #ffffff;
 border-color: rgba(180,180,180,.14);
 line-height: 1.5em;
 padding-bottom: 0px;
}
.navbar-default .navbar-nav > li > a {
 font-family: "Exo_2", sans-serif;
 font-size: 13pt;
 color: #303030;
 display: block;
 line-height: 1.5em;
 padding-top: 8px;
 padding-bottom: 6px;
}
.navbar-default .navbar-nav > li > a:hover,
.navbar-default .navbar-nav > li > a:focus {
 color: #2f2f2f;
 background-color: rgba(180,180,180,.14);
 border-color: rgba(180,180,180,.14);
 line-height: 1.5em;
}
.navbar-default .navbar-nav > .open > a,
.navbar-default .navbar-nav > .open > a:hover,
.navbar-default .navbar-nav > .open > a:focus {
 color: #1c1c1c;
 background-color: rgba(180,180,180,.14);
 border-color: rgba(180,180,180,.14);
 line-height: 1.5em;
}
.edit_mode .modal_indicator:before {
 font-size: 13pt;
 color: #2c85f7;
 content: "\f040";
}
.item_icon {
 color: #126dce;
}
.item_buttons .kernel-name {
 font-size: 13pt;
 color: #126dce;
 line-height: 22px;
}
.running_notebook_icon:before {
 color: #009e07 !important;
}
.item_buttons .running-indicator {
 padding-top: 2px;
 color: #009e07;
}
#modal_indicator {
 float: right !important;
 color: #126dce;
 background: #ffffff;
 background-color: #ffffff;
}
#kernel_indicator {
 float: right !important;
 color: #ff7823;
 background: #ffffff;
 background-color: #ffffff;
 font-size: 14.5pt;
 border-left: 2px solid #ff7823;
 padding-bottom: 2px;
}
#kernel_indicator .kernel_indicator_name {
 color: #ff7823;
 background: #ffffff;
 background-color: #ffffff;
 font-size: 14.5pt;
 padding-left: 5px;
 padding-right: 5px;
}
div.notification_widget.info,
.notification_widget.info,
.notification_widget:active:hover,
.notification_widget.active:hover,
.open > .dropdown-toggle.notification_widget:hover,
.notification_widget:active:focus,
.notification_widget.active:focus,
.open > .dropdown-toggle.notification_widget:focus,
.notification_widget:active.focus,
.notification_widget.active.focus,
.open > .dropdown-toggle.notification_widget.focus,
div#notification_notebook.notification_widget.btn.btn-xs.navbar-btn,
div#notification_notebook.notification_widget.btn.btn-xs.navbar-btn:hover,
div#notification_notebook.notification_widget.btn.btn-xs.navbar-btn:focus {
 color: #126dce;
 background-color: #ffffff;
 border-color: #ffffff;
}
#notification_area,
div.notification_area {
 float: right !important;
 position: static;
}
#kernel_logo_widget,
#kernel_logo_widget .current_kernel_logo {
 display: none;
}
div#ipython_notebook {
 display: none;
}
i.fa.fa-icon {
 -webkit-font-smoothing: antialiased;
 -moz-osx-font-smoothing: grayscale;
 text-rendering: auto;
}
.fa {
 display: inline-block;
 font: normal normal normal 12pt/1 "FontAwesome", "Exo_2", sans-serif;
 text-rendering: auto;
 -webkit-font-smoothing: antialiased;
 -moz-osx-font-smoothing: grayscale;
}
.dropdown-menu {
 font-family: "Exo_2", sans-serif;
 font-size: 13pt;
 box-shadow: none;
 padding: 0px;
 text-align: left;
 border: 2px solid rgba(180,180,180,.30);
 background-color: #ffffff;
 background: #ffffff;
 line-height: 1.3;
 margin: 0px;
}
.dropdown-menu:hover {
 font-family: "Exo_2", sans-serif;
 font-size: 13pt;
 border: 2px solid rgba(180,180,180,.30);
 background-color: #ffffff;
 box-shadow: none;
 line-height: 1.3;
}
.dropdown-header {
 font-family: "Exo_2", sans-serif;
 font-size: 13pt;
 display: block;
 color: #ff7823;
 text-decoration: underline;
 white-space: nowrap;
 padding: 8px 0px 0px 6px;
 line-height: 1.3;
}
.dropdown-menu > li > a {
 font-family: "Exo_2", sans-serif;
 font-size: 12.0pt;
 line-height: 1.3;
 display: block;
 padding: 10px 25px 10px 14px;
 color: #303030;
 background-color: #ffffff;
 background: #ffffff;
}
.dropdown-menu > li > a:hover {
 color: #2f2f2f;
 background-color: rgba(180,180,180,.14);
 background: rgba(180,180,180,.14);
 border-color: rgba(180,180,180,.14);
}
.dropdown-menu .divider {
 height: 2px;
 margin: 0px 0px;
 overflow: hidden;
 background-color: rgba(180,180,180,.30);
}
.dropdown-submenu > .dropdown-menu {
 top: 0;
 left: 100%;
 margin-top: -2px;
 margin-left: 0px;
 padding-top: 0px;
}
.dropdown-menu > .disabled > a,
.dropdown-menu > .disabled > a:hover,
.dropdown-menu > .disabled > a:focus {
 font-family: "Exo_2", sans-serif;
 font-size: 12.0pt;
 font-weight: normal;
 color: #aaaaaa;
 padding: none;
 display: block;
 clear: both;
 line-height: 1.2;
 white-space: nowrap;
}
.dropdown-submenu > a:after {
 color: #303030;
 margin-right: -16px;
}
.dropdown-submenu:hover > a:after,
.dropdown-submenu:active > a:after,
.dropdown-submenu:focus > a:after,
.dropdown-submenu:visited > a:after {
 color: #ff7823;
 margin-right: -16px;
}
div.kse-dropdown > .dropdown-menu,
.kse-dropdown > .dropdown-menu {
 min-width: 0;
 top: 94%;
}
.btn,
.btn-default {
 font-family: "Exo_2", sans-serif;
 color: #303030;
 background: #ebebeb;
 background-color: #ebebeb;
 border: 2px solid #e8e8e8;
 font-weight: normal;
 box-shadow: none;
 text-shadow: none;
 border-radius: 2px;
 font-size: inherit;
}
.btn:hover,
.btn:active:hover,
.btn.active:hover,
.btn-default:hover,
.open > .dropdown-toggle.btn-default:hover,
.open > .dropdown-toggle.btn:hover {
 color: #2f2f2f;
 background-color: #e4e4e4;
 background: #e4e4e4;
 border-color: #e4e4e4;
 background-image: none;
 box-shadow: none !important;
 border-radius: 2px;
}
.btn:active,
.btn.active,
.btn:active:focus,
.btn.active:focus,
.btn:active.focus,
.btn.active.focus,
.btn-default:focus,
.btn-default.focus,
.btn-default:active,
.btn-default.active,
.btn-default:active:hover,
.btn-default.active:hover,
.btn-default:active:focus,
.btn-default.active:focus,
.btn-default:active.focus,
.btn-default.active.focus,
.open > .dropdown-toggle.btn:focus,
.open > .dropdown-toggle.btn.focus,
.open > .dropdown-toggle.btn-default {
 color: #1c1c1c;
 background-color: #e4e4e4;
 background: #e4e4e4;
 border-color: #e4e4e4;
 background-image: none;
 box-shadow: none !important;
 border-radius: 2px;
}
.item_buttons > .btn,
.item_buttons > .btn-group,
.item_buttons > .input-group {
 margin-left: 5px;
 background: #eeeeee;
 background-color: #eeeeee;
 border: 2px solid #eeeeee;
}
.item_buttons > .btn:hover,
.item_buttons > .btn-group:hover,
.item_buttons > .input-group:hover {
 margin-left: 5px;
 background: #e9e9e9;
 background-color: #e9e9e9;
 border: 2px solid #e9e9e9;
}
.btn-group > .btn-mini,
.btn-sm,
.btn-group-sm > .btn,
.btn-xs,
.btn-group-xs > .btn,
.alternate_upload .btn-upload,
.btn-group,
.btn-group-vertical {
 font-size: 12.0pt;
 font-weight: normal;
}
.btn-xs,
.btn-group-xs > .btn {
 font-size: 12.0pt;
 background-image: none;
 font-weight: normal;
 text-shadow: none;
 display: inline-table;
}
.alternate_upload .btn-upload {
 display: none;
}
.alternate_upload input.fileinput {
 display: none;
}
button.close {
 border: 0px none;
 font-family: sans-serif;
 font-size: 25pt;
}
.dynamic-buttons {
 font-size: inherit;
 padding-top: 0px;
 display: inline-block;
}
.close {
 color: #de143d;
 opacity: .5;
 text-shadow: none;
}
.close:hover {
 color: #de143d;
 opacity: 1;
}
div.btn.btn-default.output_collapsed {
 background: #eeeeee;
 background-color: #eeeeee;
 border-color: #eeeeee;
}
div.btn.btn-default.output_collapsed:hover {
 background: #e9e9e9;
 background-color: #e9e9e9;
 border-color: #e9e9e9;
}
div.nbext-enable-btns .btn[disabled],
div.nbext-enable-btns .btn[disabled]:hover,
.btn-default.disabled,
.btn-default[disabled],
.btn-default.disabled:hover,
.btn-default[disabled]:hover,
fieldset[disabled] .btn-default:hover,
.btn-default.disabled:focus,
.btn-default[disabled]:focus,
fieldset[disabled] .btn-default:focus,
.btn-default.disabled.focus,
.btn-default[disabled].focus,
fieldset[disabled] .btn-default.focus {
 color: #4a4a4a;
 background: #e8e8e8;
 background-color: #e8e8e8;
 border-color: #e8e8e8;
}
.input-group-addon {
 padding: 2px 5px;
 font-size: 12.0pt;
 font-weight: normal;
 height: auto;
 color: #303030;
 text-align: center;
 background-color: #ffffff;
 border: none;
}
.btn-group > .btn + .dropdown-toggle {
 padding-left: 8px;
 padding-right: 8px;
 height: 100%;
 border-left: 2px solid #ff7823 !important;
}
.btn-group > .btn + .dropdown-toggle:hover {
 border-left: 2px solid #ff7823 !important;
}
.input-group-btn {
 position: relative;
 font-size: inherit;
 white-space: nowrap;
}
.input-group-btn:first-child > .btn,
.input-group-btn:first-child > .btn-group {
 background: #eeeeee;
 background-color: #eeeeee;
 border: 1px solid #e9e9e9;
 margin: 2px;
 font-size: inherit;
}
.input-group-btn:first-child > .btn:hover,
.input-group-btn:first-child > .btn-group:hover {
 background: #e9e9e9;
 background-color: #e9e9e9;
 border: 1px solid #e9e9e9;
 margin: 2px;
 font-size: inherit;
}
div.modal .btn-group > .btn:first-child {
 background: #eeeeee;
 background-color: #eeeeee;
 border: 1px solid #e9e9e9;
 margin-top: 0px !important;
 margin-left: 0px;
 margin-bottom: 2px;
}
div.modal .btn-group > .btn:first-child:hover {
 background: #e9e9e9;
 background-color: #e9e9e9;
 border: 1px solid #e9e9e9;
}
div.modal > button,
div.modal-footer > button {
 background: #eeeeee;
 background-color: #eeeeee;
 border-color: #eeeeee;
}
div.modal > button:hover,
div.modal-footer > button:hover {
 background: #e9e9e9;
 background-color: #e9e9e9;
 border-color: #e9e9e9;
}
.modal-content {
 font-family: "Exo_2", sans-serif;
 font-size: 12.0pt;
 position: relative;
 background: #eeeeee;
 background-color: #eeeeee;
 border: none;
 border-radius: 1px;
 background-clip: padding-box;
 outline: none;
}
.modal-header {
 font-family: "Exo_2", sans-serif;
 font-size: 13pt;
 color: #303030;
 background: #eeeeee;
 background-color: #eeeeee;
 border-color: rgba(180,180,180,.30);
 padding: 12px;
 min-height: 16.4286px;
}
.modal-content h4 {
 font-family: "Exo_2", sans-serif;
 font-size: 16pt;
 color: #303030;
 padding: 5px;
}
.modal-body {
 background-color: #ffffff;
 position: relative;
 padding: 15px;
}
.modal-footer {
 padding: 10px;
 text-align: right;
 background-color: #f7f7f7;
 border-top: 1px solid rgba(180,180,180,.30);
}
.alert-info {
 background-color: #fdfdfd;
 border-color: rgba(180,180,180,.30);
 color: #303030;
}
.modal-header .close {
 margin-top: -5px;
 font-size: 25pt;
}
.modal-backdrop,
.modal-backdrop.in {
 opacity: 0.75;
 background-color: #eeeeee;
}
div.panel,
div.panel-default,
.panel,
.panel-default {
 font-family: "Exo_2", sans-serif;
 font-size: 12.0pt;
 background-color: #f7f7f7;
 color: #303030;
 margin-bottom: 14px;
 border: 0;
 box-shadow: none;
}
div.panel > .panel-heading,
div.panel-default > .panel-heading {
 font-size: 14pt;
 color: #303030;
 background: #eeeeee;
 background-color: #eeeeee;
 border: 0;
}
.modal .modal-dialog {
 min-width: 950px;
 margin: 50px auto;
}
div.container-fluid {
 margin-right: auto;
 margin-left: auto;
 padding-left: 7px;
 padding-right: 12px;
}
div.form-control,
.form-control {
 font-family: "Exo_2", sans-serif;
 font-size: inherit;
 color: #303030;
 background-color: #ffffff;
 border: 2px solid #e7e7e7;
 margin-left: 2px;
 height: auto;
 box-shadow: none;
 padding: 6px 12px;
 transition: border-color 0.15s ease-in-out 0s, box-shadow 0.15s ease-in-out 0s;
}
.form-group.list-group-item {
 color: #303030;
 background-color: #f7f7f7;
 border-color: rgba(180,180,180,.30);
 margin-bottom: 0px;
}
input,
button,
select,
textarea {
 background-color: #ffffff;
 font-weight: normal;
 border: 2px solid rgba(180,180,180,.30);
}
select.form-control.select-xs {
 height: auto;
}
div.output.output_scroll {
 box-shadow: none;
}
::-webkit-scrollbar-track {
 -webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.11);
 background-color: #d0d0d0;
 border-radius: 6px;
}
::-webkit-scrollbar {
 width: 14px;
 height: 10px;
 background-color: #d0d0d0;
 border-radius: 6px;
}
::-webkit-scrollbar-thumb {
 background-color: #ffffff;
 background-image: -webkit-gradient(linear,40% 0%,75% 86%,from(#ff6b0f ),color-stop(0.5,#ff8b42 ),to(#ff6b0f ));
 min-height: 60px;
 border-radius: 2px;
}
div.input_area {
 background-color: #efefef;
 padding-right: 1.2em;
 border: 0px;
 border-top-left-radius: 0px;
 border-top-right-radius: 2px;
 border-bottom-left-radius: 0px;
 border-bottom-right-radius: 0px;
}
div.cell {
 padding: 0px;
 background: #efefef;
 background-color: #efefef;
 border: medium solid #ffffff;
 border-top-right-radius: 2px;
 border-top-left-radius: 2px;
}
div.cell.selected {
 background: #efefef;
 background-color: #efefef;
 border: medium solid #ff7823;
 padding: 0px;
 border-top-right-radius: 2px;
 border-top-left-radius: 2px;
}
.edit_mode div.cell.selected {
 padding: 0px;
 background: #efefef;
 background-color: #efefef;
 border: medium solid #ffd5bb;
 border-top-right-radius: 2px;
 border-top-left-radius: 2px;
}
div.cell.edit_mode {
 padding: 0px;
 background: #efefef;
 background-color: #efefef;
 border: medium solid #ffd5bb;
 border-top-right-radius: 2px;
 border-top-left-radius: 2px;
}
div.prompt,
.prompt {
 font-family: "Fira Code", monospace;
 font-size: 9.5pt;
 font-weight: normal;
 color: #aaaaaa;
 line-height: 170%;
 padding: 0px;
 padding-top: 4px;
 padding-left: .25em;
 text-align: left !important;
 min-width: 12ex;
 width: 12ex;
}
div.prompt.input_prompt {
 background-color: #efefef;
 border-right: 2px solid rgba(240,147,43,.50);
 border-top-left-radius: 2px;
 border-top-right-radius: 0px;
 border-bottom-left-radius: 0px;
 border-bottom-right-radius: 0px;
 min-width: 12ex;
 width: 12ex !important;
}
div.output_wrapper {
 background-color: #ffffff;
 border: 0px;
 margin-bottom: 0em;
 margin-top: 0em;
 border-top-right-radius: 0px;
 border-top-left-radius: 0px;
 border-bottom-left-radius: 2px;
 border-bottom-right-radius: 2px;
}
div.output_subarea.output_text.output_stream.output_stdout,
div.output_subarea.output_text {
 font-family: "Droid Sans Mono", monospace;
 font-size: 10.0pt;
 line-height: 150% !important;
 background-color: #ffffff;
 color: #303030;
 border-top-right-radius: 0px;
 border-top-left-radius: 0px;
 border-bottom-left-radius: 2px;
 border-bottom-right-radius: 2px;
}
div.output_area pre {
 font-family: "Droid Sans Mono", monospace;
 font-size: 10.0pt;
 line-height: 150% !important;
 color: #303030;
 border-top-right-radius: 0px;
 border-top-left-radius: 0px;
 border-bottom-left-radius: 2px;
 border-bottom-right-radius: 2px;
}
div.output_area {
 display: -webkit-box;
}
div.output_html {
 font-family: "Droid Sans Mono", monospace;
 font-size: 10.0pt;
 color: #353535;
 background-color: #ffffff;
 background: #ffffff;
}
div.output_subarea {
 overflow-x: auto;
 padding: .8em;
 -webkit-box-flex: 1;
 -moz-box-flex: 1;
 box-flex: 1;
 flex: 1;
 max-width: 90%;
}
div.prompt.output_prompt {
 font-family: "Fira Code", monospace;
 font-size: 9.5pt;
 background-color: #ffffff;
 color: #ffffff;
 border-bottom-left-radius: 2px;
 border-top-right-radius: 0px;
 border-top-left-radius: 0px;
 border-bottom-right-radius: 0px;
 min-width: 12ex;
 width: 12ex;
}
div.out_prompt_overlay.prompt {
 font-family: "Fira Code", monospace;
 font-size: 9.5pt;
 background-color: #ffffff;
 border-bottom-left-radius: 2px;
 border-top-right-radius: 0px;
 border-top-left-radius: 0px;
 border-bottom-right-radius: 0px;
 min-width: 12ex;
 width: 12ex;
}
div.out_prompt_overlay.prompt:hover {
 background-color: #ffffff;
 box-shadow: #e8e8e8 2px 1px 2px 2.5px inset;
 border-bottom-left-radius: 2px;
 -webkit-border-: 2px;
 -moz-border-radius: 2px;
 border-top-right-radius: 0px;
 border-top-left-radius: 0px;
 min-width: 12ex;
 width: 12ex !important;
}
div.text_cell,
div.text_cell_render pre,
div.text_cell_render {
 font-family: "Lora", serif;
 font-size: 13pt;
 line-height: 170% !important;
 color: #353535;
 background: #ffffff;
 background-color: #ffffff;
 border-radius: 2px;
}
div.cell.text_cell.rendered.selected {
 font-family: "Lora", serif;
 border: medium solid #126dce;
 line-height: 170% !important;
 background: #ffffff;
 background-color: #ffffff;
 border-radius: 2px;
}
div.cell.text_cell.unrendered.selected {
 font-family: "Lora", serif;
 line-height: 170% !important;
 background: #ffffff;
 background-color: #ffffff;
 border: medium solid #126dce;
 border-radius: 2px;
}
div.cell.text_cell.selected {
 font-family: "Lora", serif;
 line-height: 170% !important;
 border: medium solid #126dce;
 background: #ffffff;
 background-color: #ffffff;
 border-radius: 2px;
}
.edit_mode div.cell.text_cell.selected {
 font-family: "Lora", serif;
 line-height: 170% !important;
 background: #ffffff;
 background-color: #ffffff;
 border: medium solid #87b0db;
 border-radius: 2px;
}
div.text_cell.unrendered,
div.text_cell.unrendered.selected,
div.edit_mode div.text_cell.unrendered {
 font-family: "Lora", serif;
 line-height: 170% !important;
 background: #ffffff;
 background-color: #ffffff;
 border-radius: 2px;
}
div.cell.text_cell.rendered .input_prompt {
 font-family: "Fira Code", monospace;
 font-size: 9.5pt;
 font-weight: normal;
 color: #aaaaaa;
 text-align: left !important;
 min-width: 0ex;
 width: 0ex !important;
 background-color: #ffffff;
 border-right: 2px solid transparent;
}
div.cell.text_cell.unrendered .input_prompt {
 font-family: "Fira Code", monospace;
 font-size: 9.5pt;
 font-weight: normal;
 color: #aaaaaa;
 text-align: left !important;
 min-width: 0ex;
 width: 0ex !important;
 border-right: 2px solid transparent;
}
div.rendered_html code {
 font-family: "Droid Sans Mono", monospace;
 font-size: 11pt;
 padding-top: 3px;
 color: #303030;
 background: #efefef;
 background-color: #efefef;
}
pre,
code,
kbd,
samp {
 white-space: pre-wrap;
}
code {
 font-family: "Droid Sans Mono", monospace;
 font-size: 11pt !important;
 line-height: 170% !important;
 color: #353535;
 background: #efefef;
 background-color: #efefef;
}
kbd {
 padding: 4px;
 font-size: 11pt;
 color: #303030;
 background-color: #efefef;
 border: 0;
 box-shadow: none;
}
pre {
 display: block;
 padding: 8.5px;
 margin: 0 0 9px;
 font-size: 12.0pt;
 line-height: 1.42857143;
 color: #303030;
 background-color: #efefef;
 border: 1px solid #e7e7e7;
 border-radius: 2px;
}
div.rendered_html {
 color: #353535;
}
div.rendered_html pre,
div.text_cell_render pre {
 font-family: "Droid Sans Mono", monospace;
 font-size: 11pt !important;
 line-height: 170% !important;
 color: #353535;
 background: #efefef;
 background-color: #efefef;
 border: 2px #e7e7e7  solid;
 max-width: 86%;
 border-radius: 2px;
 padding: 5px;
}
div.text_cell_render h1,
div.rendered_html h1,
div.text_cell_render h2,
div.rendered_html h2,
div.text_cell_render h3,
div.rendered_html h3,
div.text_cell_render h4,
div.rendered_html h4,
div.text_cell_render h5,
div.rendered_html h5 {
 font-family: "Exo_2", sans-serif;
}
.rendered_html h1:first-child,
.rendered_html h2:first-child,
.rendered_html h3:first-child,
.rendered_html h4:first-child,
.rendered_html h5:first-child,
.rendered_html h6:first-child {
 margin-top: 0.2em;
}
.rendered_html h1,
.text_cell_render h1 {
 color: #126dce;
 font-size: 220%;
 text-align: center;
 font-weight: lighter;
}
.rendered_html h2,
.text_cell_render h2 {
 text-align: left;
 font-size: 170%;
 color: #126dce;
 font-style: normal;
 font-weight: lighter;
}
.rendered_html h3,
.text_cell_render h3 {
 font-size: 150%;
 color: #126dce;
 font-weight: lighter;
 text-decoration: italic;
 font-style: normal;
}
.rendered_html h4,
.text_cell_render h4 {
 font-size: 120%;
 color: #126dce;
 font-weight: underline;
 font-style: normal;
}
.rendered_html h5,
.text_cell_render h5 {
 font-size: 100%;
 color: #2f2f2f;
 font-weight: lighter;
 text-decoration: underline;
}
.rendered_html table,
.rendered_html tr,
.rendered_html td {
 font-family: "Fira Code", monospace;
 font-size: 10.0pt !important;
 line-height: 150% !important;
 border: 1px solid #d6d6d6;
 color: #353535;
 background-color: #ffffff;
 background: #ffffff;
}
table.dataframe,
.rendered_html tr,
.dataframe * {
 font-family: "Fira Code", monospace;
 font-size: 10.0pt !important;
 border: 1px solid #d6d6d6;
}
.dataframe th,
.rendered_html th {
 font-family: "Exo_2", sans-serif;
 font-size: 11pt !important;
 font-weight: bold;
 border: 1px solid #c4c4c4;
 background: #eeeeee;
}
.dataframe td,
.rendered_html td {
 font-family: "Fira Code", monospace;
 font-size: 10.0pt !important;
 color: #353535;
 background: #ffffff;
 border: 1px solid #d6d6d6;
 text-align: left;
 min-width: 4em;
}
.dataframe-summary-row tr:last-child,
.dataframe-summary-col td:last-child {
 font-family: "Exo_2", sans-serif;
 font-size: 11pt !important;
 font-weight: bold;
 color: #353535;
 border: 1px solid #d6d6d6;
 background: #eeeeee;
}
div.widget-area {
 background-color: #ffffff;
 background: #ffffff;
 color: #303030;
}
div.widget-area a {
 font-family: "Exo_2", sans-serif;
 font-size: 12.0pt;
 font-weight: normal;
 font-style: normal;
 color: #303030;
 text-shadow: none !important;
}
div.widget-area a:hover,
div.widget-area a:focus {
 font-family: "Exo_2", sans-serif;
 font-size: 12.0pt;
 font-weight: normal;
 font-style: normal;
 color: #2f2f2f;
 background: rgba(180,180,180,.14);
 background-color: rgba(180,180,180,.14);
 border-color: transparent;
 background-image: none;
 text-shadow: none !important;
}
div.widget_item.btn-group > button.btn.btn-default.widget-combo-btn,
div.widget_item.btn-group > button.btn.btn-default.widget-combo-btn:hover {
 background: #eeeeee;
 background-color: #eeeeee;
 border: 2px solid #eeeeee !important;
 font-size: inherit;
 z-index: 0;
}
div.jupyter-widgets.widget-hprogress.widget-hbox,
div.widget-hbox,
.widget-hbox {
 display: inline-table;
}
div.jupyter-widgets.widget-hprogress.widget-hbox .widget-label,
div.widget-hbox .widget-label,
.widget-hbox .widget-label {
 font-size: 11pt;
 min-width: 100%;
 padding-top: 5px;
 padding-right: 10px;
 text-align: left;
 vertical-align: text-top;
}
.progress {
 overflow: hidden;
 height: 20px;
 margin-bottom: 10px;
 padding-left: 10px;
 background-color: #c6c6c6;
 border-radius: 4px;
 -webkit-box-shadow: none;
 box-shadow: none;
}
.rendered_html :link {
 font-family: "Exo_2", sans-serif;
 font-size: 100%;
 color: #2c85f7;
 text-decoration: underline;
}
.rendered_html :visited,
.rendered_html :visited:active,
.rendered_html :visited:focus {
 color: #2e6eb2;
}
.rendered_html :visited:hover,
.rendered_html :link:hover {
 font-family: "Exo_2", sans-serif;
 font-size: 100%;
 color: #eb6a18;
}
a.anchor-link:link:hover {
 font-size: inherit;
 color: #eb6a18;
}
a.anchor-link:link {
 font-size: inherit;
 text-decoration: none;
 padding: 0px 20px;
 visibility: none;
 color: #126dce;
}
div#nbextensions-configurator-container.container {
 width: 980px;
 margin-right: 0;
 margin-left: 0;
}
div.nbext-selector > nav > .nav > li > a {
 font-family: "Exo_2", sans-serif;
 font-size: 12pt;
}
div.nbext-readme > .nbext-readme-contents > .rendered_html {
 font-family: "Exo_2", sans-serif;
 font-size: 12pt;
 line-height: 145%;
 padding: 1em 1em;
 color: #353535;
 background-color: #ffffff;
 -webkit-box-shadow: none;
 -moz-box-shadow: none;
 box-shadow: none;
}
.nbext-icon,
.nbext-desc,
.nbext-compat-div,
.nbext-enable-btns,
.nbext-params {
 margin-bottom: 8px;
 font-size: 12pt;
}
div.nbext-readme > .nbext-readme-contents {
 padding: 0;
 overflow-y: hidden;
}
div.nbext-readme > .nbext-readme-contents:not(:empty) {
 margin-top: 0.5em;
 margin-bottom: 2em;
 border: none;
 border-top-color: rgba(180,180,180,.30);
}
.nbext-showhide-incompat {
 padding-bottom: 0.5em;
 color: #4a4a4a;
 font-size: 12.0pt;
}
.shortcut_key,
span.shortcut_key {
 display: inline-block;
 width: 16ex;
 text-align: right;
 font-family: monospace;
}
mark,
.mark {
 background-color: #ffffff;
 color: #353535;
 padding: .15em;
}
a.text-warning,
a.text-warning:hover {
 color: #aaaaaa;
}
a.text-warning.bg-warning {
 background-color: #ffffff;
}
span.bg-success.text-success {
 background-color: transparent;
 color: #009e07;
}
span.bg-danger.text-danger {
 background-color: #ffffff;
 color: #de143d;
}
.has-success .input-group-addon {
 color: #009e07;
 border-color: transparent;
 background: inherit;
 background-color: rgba(83,180,115,.10);
}
.has-success .form-control {
 border-color: #009e07;
 -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,0.025);
 box-shadow: inset 0 1px 1px rgba(0,0,0,0.025);
}
.has-error .input-group-addon {
 color: #de143d;
 border-color: transparent;
 background: inherit;
 background-color: rgba(192,57,67,.10);
}
.has-error .form-control {
 border-color: #de143d;
 -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,0.025);
 box-shadow: inset 0 1px 1px rgba(0,0,0,0.025);
}
.kse-input-group-pretty > kbd {
 font-family: "Droid Sans Mono", monospace;
 color: #303030;
 font-weight: normal;
 background: transparent;
}
.kse-input-group-pretty > kbd {
 font-family: "Droid Sans Mono", monospace;
 color: #303030;
 font-weight: normal;
 background: transparent;
}
div.nbext-enable-btns .btn[disabled],
div.nbext-enable-btns .btn[disabled]:hover,
.btn-default.disabled,
.btn-default[disabled] {
 background: #e8e8e8;
 background-color: #e8e8e8;
 color: #282828;
}
label#Keyword-Filter {
 display: none;
}
.nav-pills > li.active > a,
.nav-pills > li.active > a:hover,
.nav-pills > li.active > a:focus {
 color: #ffffff;
 background-color: #126dce;
}
.input-group .nbext-list-btn-add,
.input-group-btn:last-child > .btn-group > .btn {
 background: #eeeeee;
 background-color: #eeeeee;
 border-color: #eeeeee;
}
.input-group .nbext-list-btn-add:hover,
.input-group-btn:last-child > .btn-group > .btn:hover {
 background: #e9e9e9;
 background-color: #e9e9e9;
 border-color: #e9e9e9;
}
#notebook-container > div.cell.code_cell.rendered.selected > div.widget-area > div.widget-subarea > div > div.widget_item.btn-group > button.btn.btn-default.dropdown-toggle.widget-combo-carrot-btn {
 background: #eeeeee;
 background-color: #eeeeee;
 border-color: #eeeeee;
}
#notebook-container > div.cell.code_cell.rendered.selected > div.widget-area > div.widget-subarea > div > div.widget_item.btn-group > button.btn.btn-default.dropdown-toggle.widget-combo-carrot-btn:hover {
 background: #e9e9e9;
 background-color: #e9e9e9;
 border-color: #e9e9e9;
}
input.raw_input {
 font-family: "Droid Sans Mono", monospace;
 font-size: 11pt !important;
 color: #303030;
 background-color: #efefef;
 border-color: #ececec;
 background: #ececec;
 width: auto;
 vertical-align: baseline;
 padding: 0em 0.25em;
 margin: 0em 0.25em;
 -webkit-box-shadow: none;
 box-shadow: none;
}
audio,
video {
 display: inline;
 vertical-align: middle;
 align-content: center;
 margin-left: 20%;
}
.cmd-palette .modal-body {
 padding: 0px;
 margin: 0px;
}
.cmd-palette form {
 background: #eeeeee;
 background-color: #eeeeee;
}
.typeahead-field input:last-child,
.typeahead-hint {
 background: #eeeeee;
 background-color: #eeeeee;
 z-index: 1;
}
.typeahead-field input {
 font-family: "Exo_2", sans-serif;
 color: #303030;
 border: none;
 font-size: 28pt;
 display: inline-block;
 line-height: inherit;
 padding: 3px 10px;
 height: 70px;
}
.typeahead-select {
 background-color: #eeeeee;
}
body > div.modal.cmd-palette.typeahead-field {
 display: table;
 border-collapse: separate;
 background-color: #f7f7f7;
}
.typeahead-container button {
 font-family: "Exo_2", sans-serif;
 font-size: 28pt;
 background-color: #d0d0d0;
 border: none;
 display: inline-block;
 line-height: inherit;
 padding: 3px 10px;
 height: 70px;
}
.typeahead-search-icon {
 min-width: 40px;
 min-height: 55px;
 display: block;
 vertical-align: middle;
 text-align: center;
}
.typeahead-container button:focus,
.typeahead-container button:hover {
 color: #2f2f2f;
 background-color: #ff7823;
 border-color: #ff7823;
}
.typeahead-list > li.typeahead-group.active > a,
.typeahead-list > li.typeahead-group > a,
.typeahead-list > li.typeahead-group > a:focus,
.typeahead-list > li.typeahead-group > a:hover {
 display: none;
}
.typeahead-dropdown > li > a,
.typeahead-list > li > a {
 color: #303030;
 text-decoration: none;
}
.typeahead-dropdown,
.typeahead-list {
 font-family: "Exo_2", sans-serif;
 font-size: 13pt;
 color: #303030;
 background-color: #ffffff;
 border: none;
 background-clip: padding-box;
 margin-top: 0px;
 padding: 3px 2px 3px 0px;
 line-height: 1.7;
}
.typeahead-dropdown > li.active > a,
.typeahead-dropdown > li > a:focus,
.typeahead-dropdown > li > a:hover,
.typeahead-list > li.active > a,
.typeahead-list > li > a:focus,
.typeahead-list > li > a:hover {
 color: #2f2f2f;
 background-color: #f7f7f7;
 border-color: #f7f7f7;
}
.command-shortcut:before {
 content: "(command)";
 padding-right: 3px;
 color: #aaaaaa;
}
.edit-shortcut:before {
 content: "(edit)";
 padding-right: 3px;
 color: #aaaaaa;
}
ul.typeahead-list i {
 margin-left: 1px;
 width: 18px;
 margin-right: 10px;
}
ul.typeahead-list {
 max-height: 50vh;
 overflow: auto;
}
.typeahead-list > li {
 position: relative;
 border: none;
}
div.input.typeahead-hint,
input.typeahead-hint,
body > div.modal.cmd-palette.in > div > div > div > form > div > div.typeahead-field > span.typeahead-query > input.typeahead-hint {
 color: #aaaaaa !important;
 background-color: transparent;
 padding: 3px 10px;
}
.typeahead-dropdown > li > a,
.typeahead-list > li > a {
 display: block;
 padding: 5px;
 clear: both;
 font-weight: 400;
 line-height: 1.7;
 border: 1px solid #ffffff;
 border-bottom-color: rgba(180,180,180,.30);
}
body > div.modal.cmd-palette.in > div {
 min-width: 750px;
 margin: 150px auto;
}
.typeahead-container strong {
 font-weight: bolder;
 color: #ff7823;
}
#find-and-replace #replace-preview .match,
#find-and-replace #replace-preview .insert {
 color: #ffffff;
 background-color: #ff7823;
 border-color: #ff7823;
 border-style: solid;
 border-width: 1px;
 border-radius: 0px;
}
#find-and-replace #replace-preview .replace .match {
 background-color: #de143d;
 border-color: #de143d;
 border-radius: 0px;
}
#find-and-replace #replace-preview .replace .insert {
 background-color: #009e07;
 border-color: #009e07;
 border-radius: 0px;
}
div.CodeMirror,
div.CodeMirror pre {
 font-family: "Droid Sans Mono", monospace;
 font-size: 11pt;
 line-height: 170%;
 color: #303030;
}
div.CodeMirror-lines {
 padding-bottom: .6em;
 padding-left: .5em;
 padding-right: 1.5em;
 padding-top: 4px;
}
span.ansiblack {
 color: #dc4384;
}
span.ansiblue {
 color: #009e07;
}
span.ansigray {
 color: #ff7823;
}
span.ansigreen {
 color: #333333;
}
span.ansipurple {
 color: #653bc5;
}
span.ansicyan {
 color: #055be0;
}
span.ansiyellow {
 color: #ff7823;
}
span.ansired {
 color: #de143d;
}
div.output-stderr {
 background-color: #ebb5b7;
}
div.output-stderr pre {
 color: #000000;
}
div.js-error {
 color: #de143d;
}
.ipython_tooltip {
 font-family: "Droid Sans Mono", monospace;
 font-size: 11pt;
 line-height: 170%;
 border: 2px solid #dadada;
 background: #eeeeee;
 background-color: #eeeeee;
 border-radius: 2px;
 overflow-x: visible;
 overflow-y: visible;
 box-shadow: none;
 position: absolute;
 z-index: 1000;
}
.ipython_tooltip .tooltiptext pre {
 font-family: "Droid Sans Mono", monospace;
 font-size: 11pt;
 line-height: 170%;
 background: #eeeeee;
 background-color: #eeeeee;
 color: #303030;
 overflow-x: visible;
 overflow-y: visible;
 max-width: 900px;
}
div#tooltip.ipython_tooltip {
 overflow-x: wrap;
 overflow-y: visible;
 max-width: 800px;
}
div.tooltiptext.bigtooltip {
 overflow-x: visible;
 overflow-y: scroll;
 height: 400px;
 max-width: 800px;
}
.cm-s-ipython.CodeMirror {
 font-family: "Droid Sans Mono", monospace;
 font-size: 11pt;
 background: #efefef;
 color: #303030;
 border-radius: 2px;
 font-style: normal;
 font-weight: normal;
}
.cm-s-ipython div.CodeMirror-selected {
 background: #e0e1e3;
}
.cm-s-ipython .CodeMirror-gutters {
 background: #e0e1e3;
 border: none;
 border-radius: 0px;
}
.cm-s-ipython .CodeMirror-linenumber {
 color: #aaaaaa;
}
.cm-s-ipython .CodeMirror-cursor {
 border-left: 2px solid #ff711a;
}
.cm-s-ipython span.cm-comment {
 color: #8d8d8d;
 font-style: italic;
}
.cm-s-ipython span.cm-atom {
 color: #055be0;
}
.cm-s-ipython span.cm-number {
 color: #ff8132;
}
.cm-s-ipython span.cm-property {
 color: #e22978;
}
.cm-s-ipython span.cm-attribute {
 color: #de143d;
}
.cm-s-ipython span.cm-keyword {
 color: #713bc5;
 font-weight: normal;
}
.cm-s-ipython span.cm-string {
 color: #009e07;
}
.cm-s-ipython span.cm-meta {
 color: #aa22ff;
}
.cm-s-ipython span.cm-operator {
 color: #055be0;
}
.cm-s-ipython span.cm-builtin {
 color: #e22978;
}
.cm-s-ipython span.cm-variable {
 color: #303030;
}
.cm-s-ipython span.cm-variable-2 {
 color: #de143d;
}
.cm-s-ipython span.cm-variable-3 {
 color: #aa22ff;
}
.cm-s-ipython span.cm-def {
 color: #e22978;
 font-weight: normal;
}
.cm-s-ipython span.cm-error {
 background: rgba(191,97,106,.40);
}
.cm-s-ipython span.cm-tag {
 color: #e22978;
}
.cm-s-ipython span.cm-link {
 color: #ff7823;
}
.cm-s-ipython span.cm-storage {
 color: #055be0;
}
.cm-s-ipython span.cm-entity {
 color: #e22978;
}
.cm-s-ipython span.cm-quote {
 color: #009e07;
}
div.CodeMirror span.CodeMirror-matchingbracket {
 color: #1c1c1c;
 background-color: rgba(30,112,199,.30);
}
div.CodeMirror span.CodeMirror-nonmatchingbracket {
 color: #1c1c1c;
 background: rgba(191,97,106,.40) !important;
}
div.cell.text_cell .cm-s-default .cm-header {
 color: #126dce;
}
div.cell.text_cell .cm-s-default span.cm-variable-2 {
 color: #353535;
}
div.cell.text_cell .cm-s-default span.cm-variable-3 {
 color: #aa22ff;
}
.cm-s-default span.cm-comment {
 color: #8d8d8d;
}
.cm-s-default .cm-tag {
 color: #009fb7;
}
.cm-s-default .cm-builtin {
 color: #e22978;
}
.cm-s-default .cm-string {
 color: #009e07;
}
.cm-s-default .cm-keyword {
 color: #713bc5;
}
.cm-s-default .cm-number {
 color: #ff8132;
}
.cm-s-default .cm-error {
 color: #055be0;
}
.CodeMirror-cursor {
 border-left: 2px solid #ff711a;
 border-right: none;
 width: 0;
}
.cm-s-default div.CodeMirror-selected {
 background: #e0e1e3;
}
.cm-s-default .cm-selected {
 background: #e0e1e3;
}
div#maintoolbar {
 display: none !important;
}
#header-container {
 display: none !important;
}

/**********************************
 MathJax Settings and Style Script
**********************************/
.MathJax_Display,
.MathJax nobr>span.math>span {
    border: 0 !important;
    font-size: 110% !important;
    text-align: center !important;
    margin: 0em !important;
}
/* Prevents MathJax from jittering */
/* cell position when cell is selected */
.MathJax:focus, body :focus .MathJax {
    display: inline-block !important;
}

 </style>

```python
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

# 1. magic for inline plot
# 2. magic to print version
# 3. magic so that the notebook will reload external python modules
%matplotlib inline
%load_ext watermark
%load_ext autoreload
%autoreload 2

from tqdm import trange
from scipy.stats import bernoulli, ttest_ind

%watermark -a 'Ethen' -d -t -v -p numpy,pandas,matplotlib,tqdm
```

    Ethen 2017-04-23 14:48:05

    CPython 3.5.2
    IPython 5.3.0

    numpy 1.12.1
    pandas 0.19.2
    matplotlib 2.0.0
    tqdm 4.11.2

# The multiple hypothesis testing problem

This is simply walking through the content at following link. [Blog: The multiple hypothesis testing problem](http://www.claudiobellei.com/2016/10/30/multiple-testing-part1/).

Suppose a particular event has a chance of 1% of happening at the first attempt. Now, if we make $N$ attempts what is the probability that this event will have happened at least once among the $N$ attempts? The answer is $1 − 0.99^N$. For $N = 5$, the rare event already has an almost 5% chance of happening at least once in the five attempts. This is the rationale behind why multiple testings can complicate things in statistical inference.

Suppose we formulate a hypothesis test by defining a null hypothesis $H_0$ and alternative hypothesis $H_1$. We then set a type-I error level $\alpha$, which means that if the null hypothesis $H_0$ were true, we would incorrectly reject the null with probability $\alpha$. Then given $N$ tests the probability of rejecting the null in any of the tests can be written as

\begin{align}
P(\mathrm{rejecting\ the\ null\  in \ any \ of \ the \ tests}) = P(r_1 \lor r_2 \lor \dots \lor r_n)
\end{align}

In which $r_j$ denotes the event "the null is rejected at the j-th test". To compute the probability above we can convert it to:

\begin{align}
P(r_1\lor r_2\lor\dots\lor r_n) = 1 - P(r_1^* \land r_2^* \land\dots\land r_n^* ) = 1 - \prod_{j=1}^N P(r_j^*)
\end{align}

Where $r_j^*$ denotes the event "the null is NOT rejected at the j-th test".

Suppose that we do a test where we fix the type-I error $\alpha$ to 0.05 (0.05 is simply the conventionally used number). By definition, if we do one test only we will reject the null 5% of the times if the null is actually true. What if we make 2 tests? What are the chances of committing a type-I error then? The error will be:

\begin{align}
P(r_1 \lor r_2) = 1 - P(r_1^* \land r_2^*) = 1-P(r_1^*)P(r_2^*) = 1-0.95 \times 0.95 = 0.0975
\end{align}

So the consequence of doing $n$ multiple test is that the effective type-I error will become higher than expected, or to be more explicit, it will become:

$$\mathrm{Type \ I \ error} = 1-(1-\alpha)^N$$

To prevent this from happening, we can:

- In many cases, it is not even necessary to do multiple tests
- If multiple testing is unavoidable (for example, we are testing multiple hypothesis in a single test because we have multiple groups), then we can just correct the type-I error as an effective type-I error $α_{effective}$. In order to recover the original type-I error (thereby “controlling” the multiple testing), we must ensure that:

\begin{align}
1-(1-\alpha_\mathrm{effective})^N &= \alpha \ \Rightarrow \ \alpha_\mathrm{effective} = 1 - (1-\alpha)^{1/N} \approx \frac{\alpha}{N}
\end{align}

For the last part, we're assuming $\alpha\ll 1$ and using taylor expansion we can obtain $(1-x)^m \approx 1-mx$. [StackExchange](http://math.stackexchange.com/questions/210110/whats-the-name-of-the-approximation-1xn-approx-1-xn). And this goes under the name of **Bonferroni correction**.

## Example

We will draw samples from two Bernoulli distributions A and B, each with a probability $p=0.5$ of success. Each hypothesis test looks like:

\begin{eqnarray}
H_0 &:& \mu_B -\mu_A = 0 \nonumber \\
H_1 &:& \mu_B -\mu_A \neq 0 \nonumber
\end{eqnarray}

Where $\mu_A$ and $\mu_B$ are the two sample means. By our definition, the null $H_0$ is true as we are going to set both $\mu_A$ and $\mu_B$ to 0.5. The section below computes the probability of committing a type-I error as a function of the number of independent t-tests, assuming $\alpha=0.05$.

```python
# set parameters
alpha = 0.05 # Type I error rate
p1 = 0.5 # Probability for population 1
p2 = 0.5 # Probability for population 2

# simulation parameters
n_samples = 500 # number of samples each test will use
n_tests = 20 # max number of tests
n_sims = 300 # number of simulations from which to draw average

def run_exp(n_tests, n_samples, p1, p2, alpha):
    """
    simulations without Bonferroni correction, if it
    committed a Type I error in any one of the test
    return 1, else 0
    """
    for i in range(n_tests):
        testA = bernoulli(p1).rvs(n_samples)
        testB = bernoulli(p2).rvs(n_samples)
        _, pvalue = ttest_ind(testA, testB)
        if pvalue < alpha:
            return 1

    return 0

def run_exp_corrected(n_tests, n_samples, p1, p2, alpha):
    """simulations with Bonferroni correction"""
    for i in range(n_tests):
        testA = bernoulli(p1).rvs(n_samples)
        testB = bernoulli(p2).rvs(n_samples)
        _, pvalue = ttest_ind(testA, testB)
        if pvalue < alpha / n_tests:
            return 1

    return 0
```

```python
p_rejects = []
p_rejects_corrected = []
for n_test in trange(1, n_tests + 1):
    # results without using Bonferroni correction
    p_reject = [ run_exp(n_test, n_samples, p1, p2, alpha)
                 for _ in range(n_sims) ]
    p_reject_avg = np.mean(p_reject)
    p_rejects.append(p_reject_avg)

    # results using Bonferroni correction
    p_reject_corrected = [ run_exp_corrected(n_test, n_samples, p1, p2, alpha)
                           for _ in range(n_sims) ]
    p_reject_corrected_avg = np.mean(p_reject_corrected)
    p_rejects_corrected.append(p_reject_corrected_avg)
```

    100%|██████████| 20/20 [02:56<00:00, 14.28s/it]

```python
# change default figure size and font size
plt.rcParams['figure.figsize'] = 10, 6
plt.rcParams['font.size'] = 12

# plot results
n = np.arange(1, n_tests + 1)
plt.semilogy(n, p_rejects, 'ko', markersize = 8, label = 'raw')
plt.semilogy(n, 1 - (1 - alpha) ** n, linewidth = 3, label = r'$1-(1-\alpha)^n$')
plt.semilogy(n, p_rejects_corrected, 'ro', markersize = 8, label = 'corrected')
ticks = [0, 0.01, 0.05, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7]
plt.yticks(ticks, ticks)
plt.ylim([0, 0.8])
plt.xlabel('Number of tests')
plt.ylabel('Probability of Type I error')
plt.legend(loc = 'best')
plt.show()
```

From the plot we can see, without the correction, there's a rapid increase of the type-I error as the number of tests grows. Whereas applying the Bonferroni correction does succeed in controlling the error at the 5%.

# Reference

- [Blog: The multiple hypothesis testing problem](http://www.claudiobellei.com/2016/10/30/multiple-testing-part1/)


```python
ACM = r"""
%%
%% This is file `sample-sigconf.tex',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
%% samples.dtx  (with options: `sigconf')
%%
%% IMPORTANT NOTICE:
%%
%% For the copyright see the source file.
%%
%% Any modified versions of this file must be renamed
%% with new filenames distinct from sample-sigconf.tex.
%%
%% For distribution of the original source see the terms
%% for copying and modification in the file samples.dtx.
%%
%% This generated file may be distributed as long as the
%% original source files, as listed above, are part of the
%% same distribution. (The sources need not necessarily be
%% in the same archive or directory.)
%%
%% The first command in your LaTeX source must be the \documentclass command.
\documentclass[sigconf]{acmart}

%%
%% \BibTeX command to typeset BibTeX logo in the docs
\AtBeginDocument{%
  \providecommand\BibTeX{{%
    \normalfont B\kern-0.5em{\scshape i\kern-0.25em b}\kern-0.8em\TeX}}}

%% Rights management information.  This information is sent to you
%% when you complete the rights form.  These commands have SAMPLE
%% values in them; it is your responsibility as an author to replace
%% the commands and values with those provided to you when you
%% complete the rights form.
\setcopyright{acmcopyright}
\copyrightyear{2018}
\acmYear{2018}
\acmDOI{10.1145/1122445.1122456}

%% These commands are for a PROCEEDINGS abstract or paper.
\acmConference[Woodstock '18]{Woodstock '18: ACM Symposium on Neural
  Gaze Detection}{June 03--05, 2018}{Woodstock, NY}
\acmBooktitle{Woodstock '18: ACM Symposium on Neural Gaze Detection,
  June 03--05, 2018, Woodstock, NY}
\acmPrice{15.00}
\acmISBN{978-1-4503-XXXX-X/18/06}

%%
%% Submission ID.
%% Use this when submitting an article to a sponsored event. You'll
%% receive a unique submission ID from the organizers
%% of the event, and this ID should be used as the parameter to this command.
%%\acmSubmissionID{123-A56-BU3}

%%
%% The majority of ACM publications use numbered citations and
%% references.  The command \citestyle{authoryear} switches to the
%% "author year" style.
%%
%% If you are preparing content for an event
%% sponsored by ACM SIGGRAPH, you must use the "author year" style of
%% citations and references.
%% Uncommenting
%% the next command will enable that style.
%%\citestyle{acmauthoryear}

%%
%% end of the preamble, start of the body of the document source.
\begin{document}

%%
%% The "title" command has an optional parameter,
%% allowing the author to define a "short title" to be used in page headers.
\title{The Name of the Title is Hope}

%%
%% The "author" command and its associated commands are used to define
%% the authors and their affiliations.
%% Of note is the shared affiliation of the first two authors, and the
%% "authornote" and "authornotemark" commands
%% used to denote shared contribution to the research.
\author{Ben Trovato}
\authornote{Both authors contributed equally to this research.}
\email{trovato@corporation.com}
\orcid{1234-5678-9012}
\author{G.K.M. Tobin}
\authornotemark[1]
\email{webmaster@marysville-ohio.com}
\affiliation{%
  \institution{Institute for Clarity in Documentation}
  \streetaddress{P.O. Box 1212}
  \city{Dublin}
  \state{Ohio}
  \postcode{43017-6221}
}

\author{Lars Th{\o}rv{\"a}ld}
\affiliation{%
  \institution{The Th{\o}rv{\"a}ld Group}
  \streetaddress{1 Th{\o}rv{\"a}ld Circle}
  \city{Hekla}
  \country{Iceland}}
\email{larst@affiliation.org}

\author{Valerie B\'eranger}
\affiliation{%
  \institution{Inria Paris-Rocquencourt}
  \city{Rocquencourt}
  \country{France}
}

\author{Aparna Patel}
\affiliation{%
 \institution{Rajiv Gandhi University}
 \streetaddress{Rono-Hills}
 \city{Doimukh}
 \state{Arunachal Pradesh}
 \country{India}}

\author{Huifen Chan}
\affiliation{%
  \institution{Tsinghua University}
  \streetaddress{30 Shuangqing Rd}
  \city{Haidian Qu}
  \state{Beijing Shi}
  \country{China}}

\author{Charles Palmer}
\affiliation{%
  \institution{Palmer Research Laboratories}
  \streetaddress{8600 Datapoint Drive}
  \city{San Antonio}
  \state{Texas}
  \postcode{78229}}
\email{cpalmer@prl.com}

\author{John Smith}
\affiliation{\institution{The Th{\o}rv{\"a}ld Group}}
\email{jsmith@affiliation.org}

\author{Julius P. Kumquat}
\affiliation{\institution{The Kumquat Consortium}}
\email{jpkumquat@consortium.net}

%%
%% By default, the full list of authors will be used in the page
%% headers. Often, this list is too long, and will overlap
%% other information printed in the page headers. This command allows
%% the author to define a more concise list
%% of authors' names for this purpose.
\renewcommand{\shortauthors}{Trovato and Tobin, et al.}

%%
%% The abstract is a short summary of the work to be presented in the
%% article.
\begin{abstract}
  A clear and well-documented \LaTeX\ document is presented as an
  article formatted for publication by ACM in a conference proceedings
  or journal publication. Based on the ``acmart'' document class, this
  article presents and explains many of the common variations, as well
  as many of the formatting elements an author may use in the
  preparation of the documentation of their work.
\end{abstract}

%%
%% The code below is generated by the tool at http://dl.acm.org/ccs.cfm.
%% Please copy and paste the code instead of the example below.
%%
\begin{CCSXML}
<ccs2012>
 <concept>
  <concept_id>10010520.10010553.10010562</concept_id>
  <concept_desc>Computer systems organization~Embedded systems</concept_desc>
  <concept_significance>500</concept_significance>
 </concept>
 <concept>
  <concept_id>10010520.10010575.10010755</concept_id>
  <concept_desc>Computer systems organization~Redundancy</concept_desc>
  <concept_significance>300</concept_significance>
 </concept>
 <concept>
  <concept_id>10010520.10010553.10010554</concept_id>
  <concept_desc>Computer systems organization~Robotics</concept_desc>
  <concept_significance>100</concept_significance>
 </concept>
 <concept>
  <concept_id>10003033.10003083.10003095</concept_id>
  <concept_desc>Networks~Network reliability</concept_desc>
  <concept_significance>100</concept_significance>
 </concept>
</ccs2012>
\end{CCSXML}

\ccsdesc[500]{Computer systems organization~Embedded systems}
\ccsdesc[300]{Computer systems organization~Redundancy}
\ccsdesc{Computer systems organization~Robotics}
\ccsdesc[100]{Networks~Network reliability}

%%
%% Keywords. The author(s) should pick words that accurately describe
%% the work being presented. Separate the keywords with commas.
\keywords{datasets, neural networks, gaze detection, text tagging}

%% A "teaser" image appears between the author and affiliation
%% information and the body of the document, and typically spans the
%% page.
\begin{teaserfigure}
  \includegraphics[width=\textwidth]{sampleteaser}
  \caption{Seattle Mariners at Spring Training, 2010.}
  \Description{Enjoying the baseball game from the third-base
  seats. Ichiro Suzuki preparing to bat.}
  \label{fig:teaser}
\end{teaserfigure}

%%
%% This command processes the author and affiliation and title
%% information and builds the first part of the formatted document.
\maketitle

\section{Introduction}
ACM's consolidated article template, introduced in 2017, provides a
consistent \LaTeX\ style for use across ACM publications, and
incorporates accessibility and metadata-extraction functionality
necessary for future Digital Library endeavors. Numerous ACM and
SIG-specific \LaTeX\ templates have been examined, and their unique
features incorporated into this single new template.

If you are new to publishing with ACM, this document is a valuable
guide to the process of preparing your work for publication. If you
have published with ACM before, this document provides insight and
instruction into more recent changes to the article template.

The ``\verb|acmart|'' document class can be used to prepare articles
for any ACM publication --- conference or journal, and for any stage
of publication, from review to final ``camera-ready'' copy, to the
author's own version, with {\itshape very} few changes to the source.

\section{Template Overview}
As noted in the introduction, the ``\verb|acmart|'' document class can
be used to prepare many different kinds of documentation --- a
double-blind initial submission of a full-length technical paper, a
two-page SIGGRAPH Emerging Technologies abstract, a ``camera-ready''
journal article, a SIGCHI Extended Abstract, and more --- all by
selecting the appropriate {\itshape template style} and {\itshape
  template parameters}.

This document will explain the major features of the document
class. For further information, the {\itshape \LaTeX\ User's Guide} is
available from
\url{https://www.acm.org/publications/proceedings-template}.

\subsection{Template Styles}

The primary parameter given to the ``\verb|acmart|'' document class is
the {\itshape template style} which corresponds to the kind of publication
or SIG publishing the work. This parameter is enclosed in square
brackets and is a part of the {\verb|documentclass|} command:
\begin{verbatim}
  \documentclass[STYLE]{acmart}
\end{verbatim}

Journals use one of three template styles. All but three ACM journals
use the {\verb|acmsmall|} template style:
\begin{itemize}
\item {\verb|acmsmall|}: The default journal template style.
\item {\verb|acmlarge|}: Used by JOCCH and TAP.
\item {\verb|acmtog|}: Used by TOG.
\end{itemize}

The majority of conference proceedings documentation will use the {\verb|acmconf|} template style.
\begin{itemize}
\item {\verb|acmconf|}: The default proceedings template style.
\item{\verb|sigchi|}: Used for SIGCHI conference articles.
\item{\verb|sigchi-a|}: Used for SIGCHI ``Extended Abstract'' articles.
\item{\verb|sigplan|}: Used for SIGPLAN conference articles.
\end{itemize}

\subsection{Template Parameters}

In addition to specifying the {\itshape template style} to be used in
formatting your work, there are a number of {\itshape template parameters}
which modify some part of the applied template style. A complete list
of these parameters can be found in the {\itshape \LaTeX\ User's Guide.}

Frequently-used parameters, or combinations of parameters, include:
\begin{itemize}
\item {\verb|anonymous,review|}: Suitable for a ``double-blind''
  conference submission. Anonymizes the work and includes line
  numbers. Use with the \verb|\acmSubmissionID| command to print the
  submission's unique ID on each page of the work.
\item{\verb|authorversion|}: Produces a version of the work suitable
  for posting by the author.
\item{\verb|screen|}: Produces colored hyperlinks.
\end{itemize}

This document uses the following string as the first command in the
source file:
\begin{verbatim}
\documentclass[sigconf]{acmart}
\end{verbatim}

\section{Modifications}

Modifying the template --- including but not limited to: adjusting
margins, typeface sizes, line spacing, paragraph and list definitions,
and the use of the \verb|\vspace| command to manually adjust the
vertical spacing between elements of your work --- is not allowed.

{\bfseries Your document will be returned to you for revision if
  modifications are discovered.}

\section{Typefaces}

The ``\verb|acmart|'' document class requires the use of the
``Libertine'' typeface family. Your \TeX\ installation should include
this set of packages. Please do not substitute other typefaces. The
``\verb|lmodern|'' and ``\verb|ltimes|'' packages should not be used,
as they will override the built-in typeface families.

\section{Title Information}

The title of your work should use capital letters appropriately -
\url{https://capitalizemytitle.com/} has useful rules for
capitalization. Use the {\verb|title|} command to define the title of
your work. If your work has a subtitle, define it with the
{\verb|subtitle|} command.  Do not insert line breaks in your title.

If your title is lengthy, you must define a short version to be used
in the page headers, to prevent overlapping text. The \verb|title|
command has a ``short title'' parameter:
\begin{verbatim}
  \title[short title]{full title}
\end{verbatim}

\section{Authors and Affiliations}

Each author must be defined separately for accurate metadata
identification. Multiple authors may share one affiliation. Authors'
names should not be abbreviated; use full first names wherever
possible. Include authors' e-mail addresses whenever possible.

Grouping authors' names or e-mail addresses, or providing an ``e-mail
alias,'' as shown below, is not acceptable:
\begin{verbatim}
  \author{Brooke Aster, David Mehldau}
  \email{dave,judy,steve@university.edu}
  \email{firstname.lastname@phillips.org}
\end{verbatim}

The \verb|authornote| and \verb|authornotemark| commands allow a note
to apply to multiple authors --- for example, if the first two authors
of an article contributed equally to the work.

If your author list is lengthy, you must define a shortened version of
the list of authors to be used in the page headers, to prevent
overlapping text. The following command should be placed just after
the last \verb|\author{}| definition:
\begin{verbatim}
  \renewcommand{\shortauthors}{McCartney, et al.}
\end{verbatim}
Omitting this command will force the use of a concatenated list of all
of the authors' names, which may result in overlapping text in the
page headers.

The article template's documentation, available at
\url{https://www.acm.org/publications/proceedings-template}, has a
complete explanation of these commands and tips for their effective
use.

Note that authors' addresses are mandatory for journal articles.

\section{Rights Information}

Authors of any work published by ACM will need to complete a rights
form. Depending on the kind of work, and the rights management choice
made by the author, this may be copyright transfer, permission,
license, or an OA (open access) agreement.

Regardless of the rights management choice, the author will receive a
copy of the completed rights form once it has been submitted. This
form contains \LaTeX\ commands that must be copied into the source
document. When the document source is compiled, these commands and
their parameters add formatted text to several areas of the final
document:
\begin{itemize}
\item the ``ACM Reference Format'' text on the first page.
\item the ``rights management'' text on the first page.
\item the conference information in the page header(s).
\end{itemize}

Rights information is unique to the work; if you are preparing several
works for an event, make sure to use the correct set of commands with
each of the works.

The ACM Reference Format text is required for all articles over one
page in length, and is optional for one-page articles (abstracts).

\section{CCS Concepts and User-Defined Keywords}

Two elements of the ``acmart'' document class provide powerful
taxonomic tools for you to help readers find your work in an online
search.

The ACM Computing Classification System ---
\url{https://www.acm.org/publications/class-2012} --- is a set of
classifiers and concepts that describe the computing
discipline. Authors can select entries from this classification
system, via \url{https://dl.acm.org/ccs/ccs.cfm}, and generate the
commands to be included in the \LaTeX\ source.

User-defined keywords are a comma-separated list of words and phrases
of the authors' choosing, providing a more flexible way of describing
the research being presented.

CCS concepts and user-defined keywords are required for for all
articles over two pages in length, and are optional for one- and
two-page articles (or abstracts).

\section{Sectioning Commands}

Your work should use standard \LaTeX\ sectioning commands:
\verb|section|, \verb|subsection|, \verb|subsubsection|, and
\verb|paragraph|. They should be numbered; do not remove the numbering
from the commands.

Simulating a sectioning command by setting the first word or words of
a paragraph in boldface or italicized text is {\bfseries not allowed.}

\section{Tables}

The ``\verb|acmart|'' document class includes the ``\verb|booktabs|''
package --- \url{https://ctan.org/pkg/booktabs} --- for preparing
high-quality tables.

Table captions are placed {\itshape above} the table.

Because tables cannot be split across pages, the best placement for
them is typically the top of the page nearest their initial cite.  To
ensure this proper ``floating'' placement of tables, use the
environment \textbf{table} to enclose the table's contents and the
table caption.  The contents of the table itself must go in the
\textbf{tabular} environment, to be aligned properly in rows and
columns, with the desired horizontal and vertical rules.  Again,
detailed instructions on \textbf{tabular} material are found in the
\textit{\LaTeX\ User's Guide}.

Immediately following this sentence is the point at which
Table~\ref{tab:freq} is included in the input file; compare the
placement of the table here with the table in the printed output of
this document.

\begin{table}
  \caption{Frequency of Special Characters}
  \label{tab:freq}
  \begin{tabular}{ccl}
    \toprule
    Non-English or Math&Frequency&Comments\\
    \midrule
    \O & 1 in 1,000& For Swedish names\\
    $\pi$ & 1 in 5& Common in math\\
    \$ & 4 in 5 & Used in business\\
    $\Psi^2_1$ & 1 in 40,000& Unexplained usage\\
  \bottomrule
\end{tabular}
\end{table}

To set a wider table, which takes up the whole width of the page's
live area, use the environment \textbf{table*} to enclose the table's
contents and the table caption.  As with a single-column table, this
wide table will ``float'' to a location deemed more
desirable. Immediately following this sentence is the point at which
Table~\ref{tab:commands} is included in the input file; again, it is
instructive to compare the placement of the table here with the table
in the printed output of this document.

\begin{table*}
  \caption{Some Typical Commands}
  \label{tab:commands}
  \begin{tabular}{ccl}
    \toprule
    Command &A Number & Comments\\
    \midrule
    \texttt{{\char'134}author} & 100& Author \\
    \texttt{{\char'134}table}& 300 & For tables\\
    \texttt{{\char'134}table*}& 400& For wider tables\\
    \bottomrule
  \end{tabular}
\end{table*}

Always use midrule to separate table header rows from data rows, and
use it only for this purpose. This enables assistive technologies to
recognise table headers and support their users in navigating tables
more easily.

\section{Math Equations}
You may want to display math equations in three distinct styles:
inline, numbered or non-numbered display.  Each of the three are
discussed in the next sections.

\subsection{Inline (In-text) Equations}
A formula that appears in the running text is called an inline or
in-text formula.  It is produced by the \textbf{math} environment,
which can be invoked with the usual
\texttt{{\char'134}begin\,\ldots{\char'134}end} construction or with
the short form \texttt{\$\,\ldots\$}. You can use any of the symbols
and structures, from $\alpha$ to $\omega$, available in
\LaTeX~\cite{Lamport:LaTeX}; this section will simply show a few
examples of in-text equations in context. Notice how this equation:
\begin{math}
  \lim_{n\rightarrow \infty}x=0
\end{math},
set here in in-line math style, looks slightly different when
set in display style.  (See next section).

\subsection{Display Equations}
A numbered display equation---one set off by vertical space from the
text and centered horizontally---is produced by the \textbf{equation}
environment. An unnumbered display equation is produced by the
\textbf{displaymath} environment.

Again, in either environment, you can use any of the symbols and
structures available in \LaTeX\@; this section will just give a couple
of examples of display equations in context.  First, consider the
equation, shown as an inline equation above:
\begin{equation}
  \lim_{n\rightarrow \infty}x=0
\end{equation}
Notice how it is formatted somewhat differently in
the \textbf{displaymath}
environment.  Now, we'll enter an unnumbered equation:
\begin{displaymath}
  \sum_{i=0}^{\infty} x + 1
\end{displaymath}
and follow it with another numbered equation:
\begin{equation}
  \sum_{i=0}^{\infty}x_i=\int_{0}^{\pi+2} f
\end{equation}
just to demonstrate \LaTeX's able handling of numbering.

\section{Figures}

The ``\verb|figure|'' environment should be used for figures. One or
more images can be placed within a figure. If your figure contains
third-party material, you must clearly identify it as such, as shown
in the example below.
\begin{figure}[h]
  \centering
  \includegraphics[width=\linewidth]{sample-franklin}
  \caption{1907 Franklin Model D roadster. Photograph by Harris \&
    Ewing, Inc. [Public domain], via Wikimedia
    Commons. (\url{https://goo.gl/VLCRBB}).}
  \Description{A woman and a girl in white dresses sit in an open car.}
\end{figure}

Your figures should contain a caption which describes the figure to
the reader.

Figure captions are placed {\itshape below} the figure.

Every figure should also have a figure description unless it is purely
decorative. These descriptions convey what’s in the image to someone
who cannot see it. They are also used by search engine crawlers for
indexing images, and when images cannot be loaded.

A figure description must be unformatted plain text less than 2000
characters long (including spaces).  {\bfseries Figure descriptions
  should not repeat the figure caption – their purpose is to capture
  important information that is not already provided in the caption or
  the main text of the paper.} For figures that convey important and
complex new information, a short text description may not be
adequate. More complex alternative descriptions can be placed in an
appendix and referenced in a short figure description. For example,
provide a data table capturing the information in a bar chart, or a
structured list representing a graph.  For additional information
regarding how best to write figure descriptions and why doing this is
so important, please see
\url{https://www.acm.org/publications/taps/describing-figures/}.

\subsection{The ``Teaser Figure''}

A ``teaser figure'' is an image, or set of images in one figure, that
are placed after all author and affiliation information, and before
the body of the article, spanning the page. If you wish to have such a
figure in your article, place the command immediately before the
\verb|\maketitle| command:
\begin{verbatim}
  \begin{teaserfigure}
    \includegraphics[width=\textwidth]{sampleteaser}
    \caption{figure caption}
    \Description{figure description}
  \end{teaserfigure}
\end{verbatim}

\section{Citations and Bibliographies}

The use of \BibTeX\ for the preparation and formatting of one's
references is strongly recommended. Authors' names should be complete
--- use full first names (``Donald E. Knuth'') not initials
(``D. E. Knuth'') --- and the salient identifying features of a
reference should be included: title, year, volume, number, pages,
article DOI, etc.

The bibliography is included in your source document with these two
commands, placed just before the \verb|\end{document}| command:
\begin{verbatim}
  \bibliographystyle{ACM-Reference-Format}
  \bibliography{bibfile}
\end{verbatim}
where ``\verb|bibfile|'' is the name, without the ``\verb|.bib|''
suffix, of the \BibTeX\ file.

Citations and references are numbered by default. A small number of
ACM publications have citations and references formatted in the
``author year'' style; for these exceptions, please include this
command in the {\bfseries preamble} (before the command
``\verb|\begin{document}|'') of your \LaTeX\ source:
\begin{verbatim}
  \citestyle{acmauthoryear}
\end{verbatim}

  Some examples.  A paginated journal article \cite{Abril07}, an
  enumerated journal article \cite{Cohen07}, a reference to an entire
  issue \cite{JCohen96}, a monograph (whole book) \cite{Kosiur01}, a
  monograph/whole book in a series (see 2a in spec. document)
  \cite{Harel79}, a divisible-book such as an anthology or compilation
  \cite{Editor00} followed by the same example, however we only output
  the series if the volume number is given \cite{Editor00a} (so
  Editor00a's series should NOT be present since it has no vol. no.),
  a chapter in a divisible book \cite{Spector90}, a chapter in a
  divisible book in a series \cite{Douglass98}, a multi-volume work as
  book \cite{Knuth97}, a couple of articles in a proceedings (of a
  conference, symposium, workshop for example) (paginated proceedings
  article) \cite{Andler79, Hagerup1993}, a proceedings article with
  all possible elements \cite{Smith10}, an example of an enumerated
  proceedings article \cite{VanGundy07}, an informally published work
  \cite{Harel78}, a couple of preprints \cite{Bornmann2019,
    AnzarootPBM14}, a doctoral dissertation \cite{Clarkson85}, a
  master's thesis: \cite{anisi03}, an online document / world wide web
  resource \cite{Thornburg01, Ablamowicz07, Poker06}, a video game
  (Case 1) \cite{Obama08} and (Case 2) \cite{Novak03} and \cite{Lee05}
  and (Case 3) a patent \cite{JoeScientist001}, work accepted for
  publication \cite{rous08}, 'YYYYb'-test for prolific author
  \cite{SaeediMEJ10} and \cite{SaeediJETC10}. Other cites might
  contain 'duplicate' DOI and URLs (some SIAM articles)
  \cite{Kirschmer:2010:AEI:1958016.1958018}. Boris / Barbara Beeton:
  multi-volume works as books \cite{MR781536} and \cite{MR781537}. A
  couple of citations with DOIs:
  \cite{2004:ITE:1009386.1010128,Kirschmer:2010:AEI:1958016.1958018}. Online
  citations: \cite{TUGInstmem, Thornburg01, CTANacmart}. Artifacts:
  \cite{R} and \cite{UMassCitations}.

\section{Acknowledgments}

Identification of funding sources and other support, and thanks to
individuals and groups that assisted in the research and the
preparation of the work should be included in an acknowledgment
section, which is placed just before the reference section in your
document.

This section has a special environment:
\begin{verbatim}
  \begin{acks}
  ...
  \end{acks}
\end{verbatim}
so that the information contained therein can be more easily collected
during the article metadata extraction phase, and to ensure
consistency in the spelling of the section heading.

Authors should not prepare this section as a numbered or unnumbered {\verb|\section|}; please use the ``{\verb|acks|}'' environment.

\section{Appendices}

If your work needs an appendix, add it before the
``\verb|\end{document}|'' command at the conclusion of your source
document.

Start the appendix with the ``\verb|appendix|'' command:
\begin{verbatim}
  \appendix
\end{verbatim}
and note that in the appendix, sections are lettered, not
numbered. This document has two appendices, demonstrating the section
and subsection identification method.

\section{SIGCHI Extended Abstracts}

The ``\verb|sigchi-a|'' template style (available only in \LaTeX\ and
not in Word) produces a landscape-orientation formatted article, with
a wide left margin. Three environments are available for use with the
``\verb|sigchi-a|'' template style, and produce formatted output in
the margin:
\begin{itemize}
\item {\verb|sidebar|}:  Place formatted text in the margin.
\item {\verb|marginfigure|}: Place a figure in the margin.
\item {\verb|margintable|}: Place a table in the margin.
\end{itemize}

%%
%% The acknowledgments section is defined using the "acks" environment
%% (and NOT an unnumbered section). This ensures the proper
%% identification of the section in the article metadata, and the
%% consistent spelling of the heading.
\begin{acks}
To Robert, for the bagels and explaining CMYK and color spaces.
\end{acks}

%%
%% The next two lines define the bibliography style to be used, and
%% the bibliography file.
\bibliographystyle{ACM-Reference-Format}
\bibliography{sample-base}

%%
%% If your work has an appendix, this is the place to put it.
\appendix

\section{Research Methods}

\subsection{Part One}

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi
malesuada, quam in pulvinar varius, metus nunc fermentum urna, id
sollicitudin purus odio sit amet enim. Aliquam ullamcorper eu ipsum
vel mollis. Curabitur quis dictum nisl. Phasellus vel semper risus, et
lacinia dolor. Integer ultricies commodo sem nec semper.

\subsection{Part Two}

Etiam commodo feugiat nisl pulvinar pellentesque. Etiam auctor sodales
ligula, non varius nibh pulvinar semper. Suspendisse nec lectus non
ipsum convallis congue hendrerit vitae sapien. Donec at laoreet
eros. Vivamus non purus placerat, scelerisque diam eu, cursus
ante. Etiam aliquam tortor auctor efficitur mattis.

\section{Online Resources}

Nam id fermentum dui. Suspendisse sagittis tortor a nulla mollis, in
pulvinar ex pretium. Sed interdum orci quis metus euismod, et sagittis
enim maximus. Vestibulum gravida massa ut felis suscipit
congue. Quisque mattis elit a risus ultrices commodo venenatis eget
dui. Etiam sagittis eleifend elementum.

Nam interdum magna at lectus dignissim, ac dignissim lorem
rhoncus. Maecenas eu arcu ac neque placerat aliquam. Nunc pulvinar
massa et mattis lacinia.

\end{document}
\endinput
%%
%% End of file `sample-sigconf.tex'."""
```

```python
%run fable/script.py
```

```python
glow = load('/home/yu/glow.tex')
```

```python
pdf, output = run_entries(glow, 0)
```

    /tmp/tmp7sjcfwuw/text.tex

```python
is_small(pdf)
```

    True

```python
read = PdfFileReader(io.BytesIO(pdf))
```

```python
page = read.getPage(0)
```

```python
page.mediaBox.getHeight(), page.mediaBox.getWidth()
```

    (Decimal('29.4'), Decimal('28.08'))

```python
with open('/tmp/tmpxrqls4u2/text.tex') as f:
    print(f.read())
```

    \documentclass[class=acmart,sigconf,10pt,varwidth=18.3cm,border={12pt 12pt 12pt 12pt}]{standalone}

    \usepackage{xcolor}
    \newcommand\TODO[1]{\textcolor{red}{\textbf{#1}}}
    \usepackage[outputdir=/tmp/tmpxrqls4u2]{minted}
    \usepackage{amsthm}
    \newtheorem{defintion}{Definition}

    \begin{document}
    \title{CLOW: Static Language with Dynamic Generics Programming}
    \author{Yuri Rapoport}
    \email{r.yuri@alumni.technion.ac.il}
    \keywords{generic programming, dynamic languages, code generation, static languages}

    \begin{abstract}
    Generic programming allows developers to write abstract algorithms and specify separately the concrete use-cases to the compiler. The compilers can combine the two inputs to create the final program. The syntax and the semantics of generics are usually considered to be part of the programming language itself and generic instructions are written along the lines of the abstract algorithms. We propose to untie this bound and decouple the language of algorithmic abstractions and the language of concrete use-cases specifications. We introduce low-level programming language in which compile-time programming is separated from the core logic part of the program and is written in a dynamic high level object oriented language. This decoupling allows us to achieve high expressiveness, high efficiency and preserve clearness in both the compile-time part and the low level logic parts of the program.
    \end{abstract}
    \maketitle
    \end{document}

```python

```