pyerrors/docs/pyerrors/obs.html
2024-01-07 16:22:53 +00:00

6172 lines
No EOL
1.3 MiB

<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="generator" content="pdoc 14.3.0"/>
<title>pyerrors.obs API documentation</title>
<style>/*! * Bootstrap Reboot v5.0.0 (https://getbootstrap.com/) * Copyright 2011-2021 The Bootstrap Authors * Copyright 2011-2021 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) * Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md) */*,::after,::before{box-sizing:border-box}@media (prefers-reduced-motion:no-preference){:root{scroll-behavior:smooth}}body{margin:0;font-family:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans","Liberation Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-size:1rem;font-weight:400;line-height:1.5;color:#212529;background-color:#fff;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}hr{margin:1rem 0;color:inherit;background-color:currentColor;border:0;opacity:.25}hr:not([size]){height:1px}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2}h1{font-size:calc(1.375rem + 1.5vw)}@media (min-width:1200px){h1{font-size:2.5rem}}h2{font-size:calc(1.325rem + .9vw)}@media (min-width:1200px){h2{font-size:2rem}}h3{font-size:calc(1.3rem + .6vw)}@media (min-width:1200px){h3{font-size:1.75rem}}h4{font-size:calc(1.275rem + .3vw)}@media (min-width:1200px){h4{font-size:1.5rem}}h5{font-size:1.25rem}h6{font-size:1rem}p{margin-top:0;margin-bottom:1rem}abbr[data-bs-original-title],abbr[title]{-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul{padding-left:2rem}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small{font-size:.875em}mark{padding:.2em;background-color:#fcf8e3}sub,sup{position:relative;font-size:.75em;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#0d6efd;text-decoration:underline}a:hover{color:#0a58ca}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:1em;direction:ltr;unicode-bidi:bidi-override}pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:.875em}pre code{font-size:inherit;color:inherit;word-break:normal}code{font-size:.875em;color:#d63384;word-wrap:break-word}a>code{color:inherit}kbd{padding:.2rem .4rem;font-size:.875em;color:#fff;background-color:#212529;border-radius:.2rem}kbd kbd{padding:0;font-size:1em;font-weight:700}figure{margin:0 0 1rem}img,svg{vertical-align:middle}table{caption-side:bottom;border-collapse:collapse}caption{padding-top:.5rem;padding-bottom:.5rem;color:#6c757d;text-align:left}th{text-align:inherit;text-align:-webkit-match-parent}tbody,td,tfoot,th,thead,tr{border-color:inherit;border-style:solid;border-width:0}label{display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}select:disabled{opacity:1}[list]::-webkit-calendar-picker-indicator{display:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}::-moz-focus-inner{padding:0;border-style:none}textarea{resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{float:left;width:100%;padding:0;margin-bottom:.5rem;font-size:calc(1.275rem + .3vw);line-height:inherit}@media (min-width:1200px){legend{font-size:1.5rem}}legend+*{clear:left}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-text,::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:textfield}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::file-selector-button{font:inherit}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}iframe{border:0}summary{display:list-item;cursor:pointer}progress{vertical-align:baseline}[hidden]{display:none!important}</style>
<style>/*! syntax-highlighting.css */pre{line-height:125%;}span.linenos{color:inherit; background-color:transparent; padding-left:5px; padding-right:20px;}.pdoc-code .hll{background-color:#ffffcc}.pdoc-code{background:#f8f8f8;}.pdoc-code .c{color:#3D7B7B; font-style:italic}.pdoc-code .err{border:1px solid #FF0000}.pdoc-code .k{color:#008000; font-weight:bold}.pdoc-code .o{color:#666666}.pdoc-code .ch{color:#3D7B7B; font-style:italic}.pdoc-code .cm{color:#3D7B7B; font-style:italic}.pdoc-code .cp{color:#9C6500}.pdoc-code .cpf{color:#3D7B7B; font-style:italic}.pdoc-code .c1{color:#3D7B7B; font-style:italic}.pdoc-code .cs{color:#3D7B7B; font-style:italic}.pdoc-code .gd{color:#A00000}.pdoc-code .ge{font-style:italic}.pdoc-code .gr{color:#E40000}.pdoc-code .gh{color:#000080; font-weight:bold}.pdoc-code .gi{color:#008400}.pdoc-code .go{color:#717171}.pdoc-code .gp{color:#000080; font-weight:bold}.pdoc-code .gs{font-weight:bold}.pdoc-code .gu{color:#800080; font-weight:bold}.pdoc-code .gt{color:#0044DD}.pdoc-code .kc{color:#008000; font-weight:bold}.pdoc-code .kd{color:#008000; font-weight:bold}.pdoc-code .kn{color:#008000; font-weight:bold}.pdoc-code .kp{color:#008000}.pdoc-code .kr{color:#008000; font-weight:bold}.pdoc-code .kt{color:#B00040}.pdoc-code .m{color:#666666}.pdoc-code .s{color:#BA2121}.pdoc-code .na{color:#687822}.pdoc-code .nb{color:#008000}.pdoc-code .nc{color:#0000FF; font-weight:bold}.pdoc-code .no{color:#880000}.pdoc-code .nd{color:#AA22FF}.pdoc-code .ni{color:#717171; font-weight:bold}.pdoc-code .ne{color:#CB3F38; font-weight:bold}.pdoc-code .nf{color:#0000FF}.pdoc-code .nl{color:#767600}.pdoc-code .nn{color:#0000FF; font-weight:bold}.pdoc-code .nt{color:#008000; font-weight:bold}.pdoc-code .nv{color:#19177C}.pdoc-code .ow{color:#AA22FF; font-weight:bold}.pdoc-code .w{color:#bbbbbb}.pdoc-code .mb{color:#666666}.pdoc-code .mf{color:#666666}.pdoc-code .mh{color:#666666}.pdoc-code .mi{color:#666666}.pdoc-code .mo{color:#666666}.pdoc-code .sa{color:#BA2121}.pdoc-code .sb{color:#BA2121}.pdoc-code .sc{color:#BA2121}.pdoc-code .dl{color:#BA2121}.pdoc-code .sd{color:#BA2121; font-style:italic}.pdoc-code .s2{color:#BA2121}.pdoc-code .se{color:#AA5D1F; font-weight:bold}.pdoc-code .sh{color:#BA2121}.pdoc-code .si{color:#A45A77; font-weight:bold}.pdoc-code .sx{color:#008000}.pdoc-code .sr{color:#A45A77}.pdoc-code .s1{color:#BA2121}.pdoc-code .ss{color:#19177C}.pdoc-code .bp{color:#008000}.pdoc-code .fm{color:#0000FF}.pdoc-code .vc{color:#19177C}.pdoc-code .vg{color:#19177C}.pdoc-code .vi{color:#19177C}.pdoc-code .vm{color:#19177C}.pdoc-code .il{color:#666666}</style>
<style>/*! theme.css */:root{--pdoc-background:#fff;}.pdoc{--text:#212529;--muted:#6c757d;--link:#3660a5;--link-hover:#1659c5;--code:#f8f8f8;--active:#fff598;--accent:#eee;--accent2:#c1c1c1;--nav-hover:rgba(255, 255, 255, 0.5);--name:#0066BB;--def:#008800;--annotation:#007020;}</style>
<style>/*! layout.css */html, body{width:100%;height:100%;}html, main{scroll-behavior:smooth;}body{background-color:var(--pdoc-background);}@media (max-width:769px){#navtoggle{cursor:pointer;position:absolute;width:50px;height:40px;top:1rem;right:1rem;border-color:var(--text);color:var(--text);display:flex;opacity:0.8;z-index:999;}#navtoggle:hover{opacity:1;}#togglestate + div{display:none;}#togglestate:checked + div{display:inherit;}main, header{padding:2rem 3vw;}header + main{margin-top:-3rem;}.git-button{display:none !important;}nav input[type="search"]{max-width:77%;}nav input[type="search"]:first-child{margin-top:-6px;}nav input[type="search"]:valid ~ *{display:none !important;}}@media (min-width:770px){:root{--sidebar-width:clamp(12.5rem, 28vw, 22rem);}nav{position:fixed;overflow:auto;height:100vh;width:var(--sidebar-width);}main, header{padding:3rem 2rem 3rem calc(var(--sidebar-width) + 3rem);width:calc(54rem + var(--sidebar-width));max-width:100%;}header + main{margin-top:-4rem;}#navtoggle{display:none;}}#togglestate{position:absolute;height:0;opacity:0;}nav.pdoc{--pad:clamp(0.5rem, 2vw, 1.75rem);--indent:1.5rem;background-color:var(--accent);border-right:1px solid var(--accent2);box-shadow:0 0 20px rgba(50, 50, 50, .2) inset;padding:0 0 0 var(--pad);overflow-wrap:anywhere;scrollbar-width:thin; scrollbar-color:var(--accent2) transparent; z-index:1}nav.pdoc::-webkit-scrollbar{width:.4rem; }nav.pdoc::-webkit-scrollbar-thumb{background-color:var(--accent2); }nav.pdoc > div{padding:var(--pad) 0;}nav.pdoc .module-list-button{display:inline-flex;align-items:center;color:var(--text);border-color:var(--muted);margin-bottom:1rem;}nav.pdoc .module-list-button:hover{border-color:var(--text);}nav.pdoc input[type=search]{display:block;outline-offset:0;width:calc(100% - var(--pad));}nav.pdoc .logo{max-width:calc(100% - var(--pad));max-height:35vh;display:block;margin:0 auto 1rem;transform:translate(calc(-.5 * var(--pad)), 0);}nav.pdoc ul{list-style:none;padding-left:0;}nav.pdoc > div > ul{margin-left:calc(0px - var(--pad));}nav.pdoc li a{padding:.2rem 0 .2rem calc(var(--pad) + var(--indent));}nav.pdoc > div > ul > li > a{padding-left:var(--pad);}nav.pdoc li{transition:all 100ms;}nav.pdoc li:hover{background-color:var(--nav-hover);}nav.pdoc a, nav.pdoc a:hover{color:var(--text);}nav.pdoc a{display:block;}nav.pdoc > h2:first-of-type{margin-top:1.5rem;}nav.pdoc .class:before{content:"class ";color:var(--muted);}nav.pdoc .function:after{content:"()";color:var(--muted);}nav.pdoc footer:before{content:"";display:block;width:calc(100% - var(--pad));border-top:solid var(--accent2) 1px;margin-top:1.5rem;padding-top:.5rem;}nav.pdoc footer{font-size:small;}</style>
<style>/*! content.css */.pdoc{color:var(--text);box-sizing:border-box;line-height:1.5;background:none;}.pdoc .pdoc-button{cursor:pointer;display:inline-block;border:solid black 1px;border-radius:2px;font-size:.75rem;padding:calc(0.5em - 1px) 1em;transition:100ms all;}.pdoc .pdoc-alert{padding:1rem 1rem 1rem calc(1.5rem + 24px);border:1px solid transparent;border-radius:.25rem;background-repeat:no-repeat;background-position:1rem center;margin-bottom:1rem;}.pdoc .pdoc-alert > *:last-child{margin-bottom:0;}.pdoc .pdoc-alert-note {color:#084298;background-color:#cfe2ff;border-color:#b6d4fe;background-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2224%22%20height%3D%2224%22%20fill%3D%22%23084298%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cpath%20d%3D%22M8%2016A8%208%200%201%200%208%200a8%208%200%200%200%200%2016zm.93-9.412-1%204.705c-.07.34.029.533.304.533.194%200%20.487-.07.686-.246l-.088.416c-.287.346-.92.598-1.465.598-.703%200-1.002-.422-.808-1.319l.738-3.468c.064-.293.006-.399-.287-.47l-.451-.081.082-.381%202.29-.287zM8%205.5a1%201%200%201%201%200-2%201%201%200%200%201%200%202z%22/%3E%3C/svg%3E");}.pdoc .pdoc-alert-warning{color:#664d03;background-color:#fff3cd;border-color:#ffecb5;background-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2224%22%20height%3D%2224%22%20fill%3D%22%23664d03%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cpath%20d%3D%22M8.982%201.566a1.13%201.13%200%200%200-1.96%200L.165%2013.233c-.457.778.091%201.767.98%201.767h13.713c.889%200%201.438-.99.98-1.767L8.982%201.566zM8%205c.535%200%20.954.462.9.995l-.35%203.507a.552.552%200%200%201-1.1%200L7.1%205.995A.905.905%200%200%201%208%205zm.002%206a1%201%200%201%201%200%202%201%201%200%200%201%200-2z%22/%3E%3C/svg%3E");}.pdoc .pdoc-alert-danger{color:#842029;background-color:#f8d7da;border-color:#f5c2c7;background-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2224%22%20height%3D%2224%22%20fill%3D%22%23842029%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cpath%20d%3D%22M5.52.359A.5.5%200%200%201%206%200h4a.5.5%200%200%201%20.474.658L8.694%206H12.5a.5.5%200%200%201%20.395.807l-7%209a.5.5%200%200%201-.873-.454L6.823%209.5H3.5a.5.5%200%200%201-.48-.641l2.5-8.5z%22/%3E%3C/svg%3E");}.pdoc .visually-hidden{position:absolute !important;width:1px !important;height:1px !important;padding:0 !important;margin:-1px !important;overflow:hidden !important;clip:rect(0, 0, 0, 0) !important;white-space:nowrap !important;border:0 !important;}.pdoc h1, .pdoc h2, .pdoc h3{font-weight:300;margin:.3em 0;padding:.2em 0;}.pdoc > section:not(.module-info) h1{font-size:1.5rem;font-weight:500;}.pdoc > section:not(.module-info) h2{font-size:1.4rem;font-weight:500;}.pdoc > section:not(.module-info) h3{font-size:1.3rem;font-weight:500;}.pdoc > section:not(.module-info) h4{font-size:1.2rem;}.pdoc > section:not(.module-info) h5{font-size:1.1rem;}.pdoc a{text-decoration:none;color:var(--link);}.pdoc a:hover{color:var(--link-hover);}.pdoc blockquote{margin-left:2rem;}.pdoc pre{border-top:1px solid var(--accent2);border-bottom:1px solid var(--accent2);margin-top:0;margin-bottom:1em;padding:.5rem 0 .5rem .5rem;overflow-x:auto;background-color:var(--code);}.pdoc code{color:var(--text);padding:.2em .4em;margin:0;font-size:85%;background-color:var(--accent);border-radius:6px;}.pdoc a > code{color:inherit;}.pdoc pre > code{display:inline-block;font-size:inherit;background:none;border:none;padding:0;}.pdoc > section:not(.module-info){margin-bottom:1.5rem;}.pdoc .modulename{margin-top:0;font-weight:bold;}.pdoc .modulename a{color:var(--link);transition:100ms all;}.pdoc .git-button{float:right;border:solid var(--link) 1px;}.pdoc .git-button:hover{background-color:var(--link);color:var(--pdoc-background);}.view-source-toggle-state,.view-source-toggle-state ~ .pdoc-code{display:none;}.view-source-toggle-state:checked ~ .pdoc-code{display:block;}.view-source-button{display:inline-block;float:right;font-size:.75rem;line-height:1.5rem;color:var(--muted);padding:0 .4rem 0 1.3rem;cursor:pointer;text-indent:-2px;}.view-source-button > span{visibility:hidden;}.module-info .view-source-button{float:none;display:flex;justify-content:flex-end;margin:-1.2rem .4rem -.2rem 0;}.view-source-button::before{position:absolute;content:"View Source";display:list-item;list-style-type:disclosure-closed;}.view-source-toggle-state:checked ~ .attr .view-source-button::before,.view-source-toggle-state:checked ~ .view-source-button::before{list-style-type:disclosure-open;}.pdoc .docstring{margin-bottom:1.5rem;}.pdoc section:not(.module-info) .docstring{margin-left:clamp(0rem, 5vw - 2rem, 1rem);}.pdoc .docstring .pdoc-code{margin-left:1em;margin-right:1em;}.pdoc h1:target,.pdoc h2:target,.pdoc h3:target,.pdoc h4:target,.pdoc h5:target,.pdoc h6:target,.pdoc .pdoc-code > pre > span:target{background-color:var(--active);box-shadow:-1rem 0 0 0 var(--active);}.pdoc .pdoc-code > pre > span:target{display:block;}.pdoc div:target > .attr,.pdoc section:target > .attr,.pdoc dd:target > a{background-color:var(--active);}.pdoc *{scroll-margin:2rem;}.pdoc .pdoc-code .linenos{user-select:none;}.pdoc .attr:hover{filter:contrast(0.95);}.pdoc section, .pdoc .classattr{position:relative;}.pdoc .headerlink{--width:clamp(1rem, 3vw, 2rem);position:absolute;top:0;left:calc(0rem - var(--width));transition:all 100ms ease-in-out;opacity:0;}.pdoc .headerlink::before{content:"#";display:block;text-align:center;width:var(--width);height:2.3rem;line-height:2.3rem;font-size:1.5rem;}.pdoc .attr:hover ~ .headerlink,.pdoc *:target > .headerlink,.pdoc .headerlink:hover{opacity:1;}.pdoc .attr{display:block;margin:.5rem 0 .5rem;padding:.4rem .4rem .4rem 1rem;background-color:var(--accent);overflow-x:auto;}.pdoc .classattr{margin-left:2rem;}.pdoc .name{color:var(--name);font-weight:bold;}.pdoc .def{color:var(--def);font-weight:bold;}.pdoc .signature{background-color:transparent;}.pdoc .param, .pdoc .return-annotation{white-space:pre;}.pdoc .signature.multiline .param{display:block;}.pdoc .signature.condensed .param{display:inline-block;}.pdoc .annotation{color:var(--annotation);}.pdoc .view-value-toggle-state,.pdoc .view-value-toggle-state ~ .default_value{display:none;}.pdoc .view-value-toggle-state:checked ~ .default_value{display:inherit;}.pdoc .view-value-button{font-size:.5rem;vertical-align:middle;border-style:dashed;margin-top:-0.1rem;}.pdoc .view-value-button:hover{background:white;}.pdoc .view-value-button::before{content:"show";text-align:center;width:2.2em;display:inline-block;}.pdoc .view-value-toggle-state:checked ~ .view-value-button::before{content:"hide";}.pdoc .inherited{margin-left:2rem;}.pdoc .inherited dt{font-weight:700;}.pdoc .inherited dt, .pdoc .inherited dd{display:inline;margin-left:0;margin-bottom:.5rem;}.pdoc .inherited dd:not(:last-child):after{content:", ";}.pdoc .inherited .class:before{content:"class ";}.pdoc .inherited .function a:after{content:"()";}.pdoc .search-result .docstring{overflow:auto;max-height:25vh;}.pdoc .search-result.focused > .attr{background-color:var(--active);}.pdoc .attribution{margin-top:2rem;display:block;opacity:0.5;transition:all 200ms;filter:grayscale(100%);}.pdoc .attribution:hover{opacity:1;filter:grayscale(0%);}.pdoc .attribution img{margin-left:5px;height:35px;vertical-align:middle;width:70px;transition:all 200ms;}.pdoc table{display:block;width:max-content;max-width:100%;overflow:auto;margin-bottom:1rem;}.pdoc table th{font-weight:600;}.pdoc table th, .pdoc table td{padding:6px 13px;border:1px solid var(--accent2);}</style>
<style>/*! custom.css */</style><script>
window.MathJax = {
tex: {
inlineMath: [['$', '$'], ['\\(', '\\)']]
}
};
</script>
<script src="https://polyfill.io/v3/polyfill.min.js?features=es6"></script>
<script id="MathJax-script" async src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
<script>
/* Re-invoke MathJax when DOM content changes, for example during search. */
document.addEventListener("DOMContentLoaded", () => {
new MutationObserver(() => MathJax.typeset()).observe(
document.querySelector("main.pdoc").parentNode,
{childList: true}
);
})
</script>
<style>
mjx-container {
overflow-x: auto;
}
</style></head>
<body>
<nav class="pdoc">
<label id="navtoggle" for="togglestate" class="pdoc-button"><svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'><path stroke-linecap='round' stroke="currentColor" stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/></svg></label>
<input id="togglestate" type="checkbox" aria-hidden="true" tabindex="-1">
<div> <a class="pdoc-button module-list-button" href="../pyerrors.html">
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-box-arrow-in-left" viewBox="0 0 16 16">
<path fill-rule="evenodd" d="M10 3.5a.5.5 0 0 0-.5-.5h-8a.5.5 0 0 0-.5.5v9a.5.5 0 0 0 .5.5h8a.5.5 0 0 0 .5-.5v-2a.5.5 0 0 1 1 0v2A1.5 1.5 0 0 1 9.5 14h-8A1.5 1.5 0 0 1 0 12.5v-9A1.5 1.5 0 0 1 1.5 2h8A1.5 1.5 0 0 1 11 3.5v2a.5.5 0 0 1-1 0v-2z"/>
<path fill-rule="evenodd" d="M4.146 8.354a.5.5 0 0 1 0-.708l3-3a.5.5 0 1 1 .708.708L5.707 7.5H14.5a.5.5 0 0 1 0 1H5.707l2.147 2.146a.5.5 0 0 1-.708.708l-3-3z"/>
</svg> &nbsp;pyerrors</a>
<input type="search" placeholder="Search..." role="searchbox" aria-label="search"
pattern=".+" required>
<h2>API Documentation</h2>
<ul class="memberlist">
<li>
<a class="class" href="#Obs">Obs</a>
<ul class="memberlist">
<li>
<a class="function" href="#Obs.__init__">Obs</a>
</li>
<li>
<a class="variable" href="#Obs.S_global">S_global</a>
</li>
<li>
<a class="variable" href="#Obs.S_dict">S_dict</a>
</li>
<li>
<a class="variable" href="#Obs.tau_exp_global">tau_exp_global</a>
</li>
<li>
<a class="variable" href="#Obs.tau_exp_dict">tau_exp_dict</a>
</li>
<li>
<a class="variable" href="#Obs.N_sigma_global">N_sigma_global</a>
</li>
<li>
<a class="variable" href="#Obs.N_sigma_dict">N_sigma_dict</a>
</li>
<li>
<a class="variable" href="#Obs.names">names</a>
</li>
<li>
<a class="variable" href="#Obs.shape">shape</a>
</li>
<li>
<a class="variable" href="#Obs.r_values">r_values</a>
</li>
<li>
<a class="variable" href="#Obs.deltas">deltas</a>
</li>
<li>
<a class="variable" href="#Obs.N">N</a>
</li>
<li>
<a class="variable" href="#Obs.idl">idl</a>
</li>
<li>
<a class="variable" href="#Obs.ddvalue">ddvalue</a>
</li>
<li>
<a class="variable" href="#Obs.reweighted">reweighted</a>
</li>
<li>
<a class="variable" href="#Obs.tag">tag</a>
</li>
<li>
<a class="variable" href="#Obs.value">value</a>
</li>
<li>
<a class="variable" href="#Obs.dvalue">dvalue</a>
</li>
<li>
<a class="variable" href="#Obs.e_names">e_names</a>
</li>
<li>
<a class="variable" href="#Obs.cov_names">cov_names</a>
</li>
<li>
<a class="variable" href="#Obs.mc_names">mc_names</a>
</li>
<li>
<a class="variable" href="#Obs.e_content">e_content</a>
</li>
<li>
<a class="variable" href="#Obs.covobs">covobs</a>
</li>
<li>
<a class="function" href="#Obs.gamma_method">gamma_method</a>
</li>
<li>
<a class="function" href="#Obs.gm">gm</a>
</li>
<li>
<a class="function" href="#Obs.details">details</a>
</li>
<li>
<a class="function" href="#Obs.reweight">reweight</a>
</li>
<li>
<a class="function" href="#Obs.is_zero_within_error">is_zero_within_error</a>
</li>
<li>
<a class="function" href="#Obs.is_zero">is_zero</a>
</li>
<li>
<a class="function" href="#Obs.plot_tauint">plot_tauint</a>
</li>
<li>
<a class="function" href="#Obs.plot_rho">plot_rho</a>
</li>
<li>
<a class="function" href="#Obs.plot_rep_dist">plot_rep_dist</a>
</li>
<li>
<a class="function" href="#Obs.plot_history">plot_history</a>
</li>
<li>
<a class="function" href="#Obs.plot_piechart">plot_piechart</a>
</li>
<li>
<a class="function" href="#Obs.dump">dump</a>
</li>
<li>
<a class="function" href="#Obs.export_jackknife">export_jackknife</a>
</li>
<li>
<a class="function" href="#Obs.export_bootstrap">export_bootstrap</a>
</li>
<li>
<a class="function" href="#Obs.sqrt">sqrt</a>
</li>
<li>
<a class="function" href="#Obs.log">log</a>
</li>
<li>
<a class="function" href="#Obs.exp">exp</a>
</li>
<li>
<a class="function" href="#Obs.sin">sin</a>
</li>
<li>
<a class="function" href="#Obs.cos">cos</a>
</li>
<li>
<a class="function" href="#Obs.tan">tan</a>
</li>
<li>
<a class="function" href="#Obs.arcsin">arcsin</a>
</li>
<li>
<a class="function" href="#Obs.arccos">arccos</a>
</li>
<li>
<a class="function" href="#Obs.arctan">arctan</a>
</li>
<li>
<a class="function" href="#Obs.sinh">sinh</a>
</li>
<li>
<a class="function" href="#Obs.cosh">cosh</a>
</li>
<li>
<a class="function" href="#Obs.tanh">tanh</a>
</li>
<li>
<a class="function" href="#Obs.arcsinh">arcsinh</a>
</li>
<li>
<a class="function" href="#Obs.arccosh">arccosh</a>
</li>
<li>
<a class="function" href="#Obs.arctanh">arctanh</a>
</li>
<li>
<a class="variable" href="#Obs.N_sigma">N_sigma</a>
</li>
<li>
<a class="variable" href="#Obs.S">S</a>
</li>
<li>
<a class="variable" href="#Obs.e_ddvalue">e_ddvalue</a>
</li>
<li>
<a class="variable" href="#Obs.e_drho">e_drho</a>
</li>
<li>
<a class="variable" href="#Obs.e_dtauint">e_dtauint</a>
</li>
<li>
<a class="variable" href="#Obs.e_dvalue">e_dvalue</a>
</li>
<li>
<a class="variable" href="#Obs.e_n_dtauint">e_n_dtauint</a>
</li>
<li>
<a class="variable" href="#Obs.e_n_tauint">e_n_tauint</a>
</li>
<li>
<a class="variable" href="#Obs.e_rho">e_rho</a>
</li>
<li>
<a class="variable" href="#Obs.e_tauint">e_tauint</a>
</li>
<li>
<a class="variable" href="#Obs.e_windowsize">e_windowsize</a>
</li>
<li>
<a class="variable" href="#Obs.tau_exp">tau_exp</a>
</li>
</ul>
</li>
<li>
<a class="class" href="#CObs">CObs</a>
<ul class="memberlist">
<li>
<a class="function" href="#CObs.__init__">CObs</a>
</li>
<li>
<a class="variable" href="#CObs.tag">tag</a>
</li>
<li>
<a class="variable" href="#CObs.real">real</a>
</li>
<li>
<a class="variable" href="#CObs.imag">imag</a>
</li>
<li>
<a class="function" href="#CObs.gamma_method">gamma_method</a>
</li>
<li>
<a class="function" href="#CObs.is_zero">is_zero</a>
</li>
<li>
<a class="function" href="#CObs.conjugate">conjugate</a>
</li>
</ul>
</li>
<li>
<a class="function" href="#gamma_method">gamma_method</a>
</li>
<li>
<a class="function" href="#gm">gm</a>
</li>
<li>
<a class="function" href="#derived_observable">derived_observable</a>
</li>
<li>
<a class="function" href="#reweight">reweight</a>
</li>
<li>
<a class="function" href="#correlate">correlate</a>
</li>
<li>
<a class="function" href="#covariance">covariance</a>
</li>
<li>
<a class="function" href="#import_jackknife">import_jackknife</a>
</li>
<li>
<a class="function" href="#import_bootstrap">import_bootstrap</a>
</li>
<li>
<a class="function" href="#merge_obs">merge_obs</a>
</li>
<li>
<a class="function" href="#cov_Obs">cov_Obs</a>
</li>
</ul>
<a class="attribution" title="pdoc: Python API documentation generator" href="https://pdoc.dev" target="_blank">
built with <span class="visually-hidden">pdoc</span><img
alt="pdoc logo"
src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20role%3D%22img%22%20aria-label%3D%22pdoc%20logo%22%20width%3D%22300%22%20height%3D%22150%22%20viewBox%3D%22-1%200%2060%2030%22%3E%3Ctitle%3Epdoc%3C/title%3E%3Cpath%20d%3D%22M29.621%2021.293c-.011-.273-.214-.475-.511-.481a.5.5%200%200%200-.489.503l-.044%201.393c-.097.551-.695%201.215-1.566%201.704-.577.428-1.306.486-2.193.182-1.426-.617-2.467-1.654-3.304-2.487l-.173-.172a3.43%203.43%200%200%200-.365-.306.49.49%200%200%200-.286-.196c-1.718-1.06-4.931-1.47-7.353.191l-.219.15c-1.707%201.187-3.413%202.131-4.328%201.03-.02-.027-.49-.685-.141-1.763.233-.721.546-2.408.772-4.076.042-.09.067-.187.046-.288.166-1.347.277-2.625.241-3.351%201.378-1.008%202.271-2.586%202.271-4.362%200-.976-.272-1.935-.788-2.774-.057-.094-.122-.18-.184-.268.033-.167.052-.339.052-.516%200-1.477-1.202-2.679-2.679-2.679-.791%200-1.496.352-1.987.9a6.3%206.3%200%200%200-1.001.029c-.492-.564-1.207-.929-2.012-.929-1.477%200-2.679%201.202-2.679%202.679A2.65%202.65%200%200%200%20.97%206.554c-.383.747-.595%201.572-.595%202.41%200%202.311%201.507%204.29%203.635%205.107-.037.699-.147%202.27-.423%203.294l-.137.461c-.622%202.042-2.515%208.257%201.727%2010.643%201.614.908%203.06%201.248%204.317%201.248%202.665%200%204.492-1.524%205.322-2.401%201.476-1.559%202.886-1.854%206.491.82%201.877%201.393%203.514%201.753%204.861%201.068%202.223-1.713%202.811-3.867%203.399-6.374.077-.846.056-1.469.054-1.537zm-4.835%204.313c-.054.305-.156.586-.242.629-.034-.007-.131-.022-.307-.157-.145-.111-.314-.478-.456-.908.221.121.432.25.675.355.115.039.219.051.33.081zm-2.251-1.238c-.05.33-.158.648-.252.694-.022.001-.125-.018-.307-.157-.217-.166-.488-.906-.639-1.573.358.344.754.693%201.198%201.036zm-3.887-2.337c-.006-.116-.018-.231-.041-.342.635.145%201.189.368%201.599.625.097.231.166.481.174.642-.03.049-.055.101-.067.158-.046.013-.128.026-.298.004-.278-.037-.901-.57-1.367-1.087zm-1.127-.497c.116.306.176.625.12.71-.019.014-.117.045-.345.016-.206-.027-.604-.332-.986-.695.41-.051.816-.056%201.211-.031zm-4.535%201.535c.209.22.379.47.358.598-.006.041-.088.138-.351.234-.144.055-.539-.063-.979-.259a11.66%2011.66%200%200%200%20.972-.573zm.983-.664c.359-.237.738-.418%201.126-.554.25.237.479.548.457.694-.006.042-.087.138-.351.235-.174.064-.694-.105-1.232-.375zm-3.381%201.794c-.022.145-.061.29-.149.401-.133.166-.358.248-.69.251h-.002c-.133%200-.306-.26-.45-.621.417.091.854.07%201.291-.031zm-2.066-8.077a4.78%204.78%200%200%201-.775-.584c.172-.115.505-.254.88-.378l-.105.962zm-.331%202.302a10.32%2010.32%200%200%201-.828-.502c.202-.143.576-.328.984-.49l-.156.992zm-.45%202.157l-.701-.403c.214-.115.536-.249.891-.376a11.57%2011.57%200%200%201-.19.779zm-.181%201.716c.064.398.194.702.298.893-.194-.051-.435-.162-.736-.398.061-.119.224-.3.438-.495zM8.87%204.141c0%20.152-.123.276-.276.276s-.275-.124-.275-.276.123-.276.276-.276.275.124.275.276zm-.735-.389a1.15%201.15%200%200%200-.314.783%201.16%201.16%200%200%200%201.162%201.162c.457%200%20.842-.27%201.032-.653.026.117.042.238.042.362a1.68%201.68%200%200%201-1.679%201.679%201.68%201.68%200%200%201-1.679-1.679c0-.843.626-1.535%201.436-1.654zM5.059%205.406A1.68%201.68%200%200%201%203.38%207.085a1.68%201.68%200%200%201-1.679-1.679c0-.037.009-.072.011-.109.21.3.541.508.935.508a1.16%201.16%200%200%200%201.162-1.162%201.14%201.14%200%200%200-.474-.912c.015%200%20.03-.005.045-.005.926.001%201.679.754%201.679%201.68zM3.198%204.141c0%20.152-.123.276-.276.276s-.275-.124-.275-.276.123-.276.276-.276.275.124.275.276zM1.375%208.964c0-.52.103-1.035.288-1.52.466.394%201.06.64%201.717.64%201.144%200%202.116-.725%202.499-1.738.383%201.012%201.355%201.738%202.499%201.738.867%200%201.631-.421%202.121-1.062.307.605.478%201.267.478%201.942%200%202.486-2.153%204.51-4.801%204.51s-4.801-2.023-4.801-4.51zm24.342%2019.349c-.985.498-2.267.168-3.813-.979-3.073-2.281-5.453-3.199-7.813-.705-1.315%201.391-4.163%203.365-8.423.97-3.174-1.786-2.239-6.266-1.261-9.479l.146-.492c.276-1.02.395-2.457.444-3.268a6.11%206.11%200%200%200%201.18.115%206.01%206.01%200%200%200%202.536-.562l-.006.175c-.802.215-1.848.612-2.021%201.25-.079.295.021.601.274.837.219.203.415.364.598.501-.667.304-1.243.698-1.311%201.179-.02.144-.022.507.393.787.213.144.395.26.564.365-1.285.521-1.361.96-1.381%201.126-.018.142-.011.496.427.746l.854.489c-.473.389-.971.914-.999%201.429-.018.278.095.532.316.713.675.556%201.231.721%201.653.721.059%200%20.104-.014.158-.02.207.707.641%201.64%201.513%201.64h.013c.8-.008%201.236-.345%201.462-.626.173-.216.268-.457.325-.692.424.195.93.374%201.372.374.151%200%20.294-.021.423-.068.732-.27.944-.704.993-1.021.009-.061.003-.119.002-.179.266.086.538.147.789.147.15%200%20.294-.021.423-.069.542-.2.797-.489.914-.754.237.147.478.258.704.288.106.014.205.021.296.021.356%200%20.595-.101.767-.229.438.435%201.094.992%201.656%201.067.106.014.205.021.296.021a1.56%201.56%200%200%200%20.323-.035c.17.575.453%201.289.866%201.605.358.273.665.362.914.362a.99.99%200%200%200%20.421-.093%201.03%201.03%200%200%200%20.245-.164c.168.428.39.846.68%201.068.358.273.665.362.913.362a.99.99%200%200%200%20.421-.093c.317-.148.512-.448.639-.762.251.157.495.257.726.257.127%200%20.25-.024.37-.071.427-.17.706-.617.841-1.314.022-.015.047-.022.068-.038.067-.051.133-.104.196-.159-.443%201.486-1.107%202.761-2.086%203.257zM8.66%209.925a.5.5%200%201%200-1%200c0%20.653-.818%201.205-1.787%201.205s-1.787-.552-1.787-1.205a.5.5%200%201%200-1%200c0%201.216%201.25%202.205%202.787%202.205s2.787-.989%202.787-2.205zm4.4%2015.965l-.208.097c-2.661%201.258-4.708%201.436-6.086.527-1.542-1.017-1.88-3.19-1.844-4.198a.4.4%200%200%200-.385-.414c-.242-.029-.406.164-.414.385-.046%201.249.367%203.686%202.202%204.896.708.467%201.547.7%202.51.7%201.248%200%202.706-.392%204.362-1.174l.185-.086a.4.4%200%200%200%20.205-.527c-.089-.204-.326-.291-.527-.206zM9.547%202.292c.093.077.205.114.317.114a.5.5%200%200%200%20.318-.886L8.817.397a.5.5%200%200%200-.703.068.5.5%200%200%200%20.069.703l1.364%201.124zm-7.661-.065c.086%200%20.173-.022.253-.068l1.523-.893a.5.5%200%200%200-.506-.863l-1.523.892a.5.5%200%200%200-.179.685c.094.158.261.247.432.247z%22%20transform%3D%22matrix%28-1%200%200%201%2058%200%29%22%20fill%3D%22%233bb300%22/%3E%3Cpath%20d%3D%22M.3%2021.86V10.18q0-.46.02-.68.04-.22.18-.5.28-.54%201.34-.54%201.06%200%201.42.28.38.26.44.78.76-1.04%202.38-1.04%201.64%200%203.1%201.54%201.46%201.54%201.46%203.58%200%202.04-1.46%203.58-1.44%201.54-3.08%201.54-1.64%200-2.38-.92v4.04q0%20.46-.04.68-.02.22-.18.5-.14.3-.5.42-.36.12-.98.12-.62%200-1-.12-.36-.12-.52-.4-.14-.28-.18-.5-.02-.22-.02-.68zm3.96-9.42q-.46.54-.46%201.18%200%20.64.46%201.18.48.52%201.2.52.74%200%201.24-.52.52-.52.52-1.18%200-.66-.48-1.18-.48-.54-1.26-.54-.76%200-1.22.54zm14.741-8.36q.16-.3.54-.42.38-.12%201-.12.64%200%201.02.12.38.12.52.42.16.3.18.54.04.22.04.68v11.94q0%20.46-.04.7-.02.22-.18.5-.3.54-1.7.54-1.38%200-1.54-.98-.84.96-2.34.96-1.8%200-3.28-1.56-1.48-1.58-1.48-3.66%200-2.1%201.48-3.68%201.5-1.58%203.28-1.58%201.48%200%202.3%201v-4.2q0-.46.02-.68.04-.24.18-.52zm-3.24%2010.86q.52.54%201.26.54.74%200%201.22-.54.5-.54.5-1.18%200-.66-.48-1.22-.46-.56-1.26-.56-.8%200-1.28.56-.48.54-.48%201.2%200%20.66.52%201.2zm7.833-1.2q0-2.4%201.68-3.96%201.68-1.56%203.84-1.56%202.16%200%203.82%201.56%201.66%201.54%201.66%203.94%200%201.66-.86%202.96-.86%201.28-2.1%201.9-1.22.6-2.54.6-1.32%200-2.56-.64-1.24-.66-2.1-1.92-.84-1.28-.84-2.88zm4.18%201.44q.64.48%201.3.48.66%200%201.32-.5.66-.5.66-1.48%200-.98-.62-1.46-.62-.48-1.34-.48-.72%200-1.34.5-.62.5-.62%201.48%200%20.96.64%201.46zm11.412-1.44q0%20.84.56%201.32.56.46%201.18.46.64%200%201.18-.36.56-.38.9-.38.6%200%201.46%201.06.46.58.46%201.04%200%20.76-1.1%201.42-1.14.8-2.8.8-1.86%200-3.58-1.34-.82-.64-1.34-1.7-.52-1.08-.52-2.36%200-1.3.52-2.34.52-1.06%201.34-1.7%201.66-1.32%203.54-1.32.76%200%201.48.22.72.2%201.06.4l.32.2q.36.24.56.38.52.4.52.92%200%20.5-.42%201.14-.72%201.1-1.38%201.1-.38%200-1.08-.44-.36-.34-1.04-.34-.66%200-1.24.48-.58.48-.58%201.34z%22%20fill%3D%22green%22/%3E%3C/svg%3E"/>
</a>
</div>
</nav>
<main class="pdoc">
<section class="module-info">
<h1 class="modulename">
<a href="./../pyerrors.html">pyerrors</a><wbr>.obs </h1>
<input id="mod-obs-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<label class="view-source-button" for="mod-obs-view-source"><span>View Source</span></label>
<div class="pdoc-code codehilite"><pre><span></span><span id="L-1"><a href="#L-1"><span class="linenos"> 1</span></a><span class="kn">import</span> <span class="nn">warnings</span>
</span><span id="L-2"><a href="#L-2"><span class="linenos"> 2</span></a><span class="kn">import</span> <span class="nn">hashlib</span>
</span><span id="L-3"><a href="#L-3"><span class="linenos"> 3</span></a><span class="kn">import</span> <span class="nn">pickle</span>
</span><span id="L-4"><a href="#L-4"><span class="linenos"> 4</span></a><span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
</span><span id="L-5"><a href="#L-5"><span class="linenos"> 5</span></a><span class="kn">import</span> <span class="nn">autograd.numpy</span> <span class="k">as</span> <span class="nn">anp</span> <span class="c1"># Thinly-wrapped numpy</span>
</span><span id="L-6"><a href="#L-6"><span class="linenos"> 6</span></a><span class="kn">import</span> <span class="nn">scipy</span>
</span><span id="L-7"><a href="#L-7"><span class="linenos"> 7</span></a><span class="kn">from</span> <span class="nn">autograd</span> <span class="kn">import</span> <span class="n">jacobian</span>
</span><span id="L-8"><a href="#L-8"><span class="linenos"> 8</span></a><span class="kn">import</span> <span class="nn">matplotlib.pyplot</span> <span class="k">as</span> <span class="nn">plt</span>
</span><span id="L-9"><a href="#L-9"><span class="linenos"> 9</span></a><span class="kn">from</span> <span class="nn">scipy.stats</span> <span class="kn">import</span> <span class="n">skew</span><span class="p">,</span> <span class="n">skewtest</span><span class="p">,</span> <span class="n">kurtosis</span><span class="p">,</span> <span class="n">kurtosistest</span>
</span><span id="L-10"><a href="#L-10"><span class="linenos"> 10</span></a><span class="kn">import</span> <span class="nn">numdifftools</span> <span class="k">as</span> <span class="nn">nd</span>
</span><span id="L-11"><a href="#L-11"><span class="linenos"> 11</span></a><span class="kn">from</span> <span class="nn">itertools</span> <span class="kn">import</span> <span class="n">groupby</span>
</span><span id="L-12"><a href="#L-12"><span class="linenos"> 12</span></a><span class="kn">from</span> <span class="nn">.covobs</span> <span class="kn">import</span> <span class="n">Covobs</span>
</span><span id="L-13"><a href="#L-13"><span class="linenos"> 13</span></a>
</span><span id="L-14"><a href="#L-14"><span class="linenos"> 14</span></a><span class="c1"># Improve print output of numpy.ndarrays containing Obs objects.</span>
</span><span id="L-15"><a href="#L-15"><span class="linenos"> 15</span></a><span class="n">np</span><span class="o">.</span><span class="n">set_printoptions</span><span class="p">(</span><span class="n">formatter</span><span class="o">=</span><span class="p">{</span><span class="s1">&#39;object&#39;</span><span class="p">:</span> <span class="k">lambda</span> <span class="n">x</span><span class="p">:</span> <span class="nb">str</span><span class="p">(</span><span class="n">x</span><span class="p">)})</span>
</span><span id="L-16"><a href="#L-16"><span class="linenos"> 16</span></a>
</span><span id="L-17"><a href="#L-17"><span class="linenos"> 17</span></a>
</span><span id="L-18"><a href="#L-18"><span class="linenos"> 18</span></a><span class="k">class</span> <span class="nc">Obs</span><span class="p">:</span>
</span><span id="L-19"><a href="#L-19"><span class="linenos"> 19</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Class for a general observable.</span>
</span><span id="L-20"><a href="#L-20"><span class="linenos"> 20</span></a>
</span><span id="L-21"><a href="#L-21"><span class="linenos"> 21</span></a><span class="sd"> Instances of Obs are the basic objects of a pyerrors error analysis.</span>
</span><span id="L-22"><a href="#L-22"><span class="linenos"> 22</span></a><span class="sd"> They are initialized with a list which contains arrays of samples for</span>
</span><span id="L-23"><a href="#L-23"><span class="linenos"> 23</span></a><span class="sd"> different ensembles/replica and another list of same length which contains</span>
</span><span id="L-24"><a href="#L-24"><span class="linenos"> 24</span></a><span class="sd"> the names of the ensembles/replica. Mathematical operations can be</span>
</span><span id="L-25"><a href="#L-25"><span class="linenos"> 25</span></a><span class="sd"> performed on instances. The result is another instance of Obs. The error of</span>
</span><span id="L-26"><a href="#L-26"><span class="linenos"> 26</span></a><span class="sd"> an instance can be computed with the gamma_method. Also contains additional</span>
</span><span id="L-27"><a href="#L-27"><span class="linenos"> 27</span></a><span class="sd"> methods for output and visualization of the error calculation.</span>
</span><span id="L-28"><a href="#L-28"><span class="linenos"> 28</span></a>
</span><span id="L-29"><a href="#L-29"><span class="linenos"> 29</span></a><span class="sd"> Attributes</span>
</span><span id="L-30"><a href="#L-30"><span class="linenos"> 30</span></a><span class="sd"> ----------</span>
</span><span id="L-31"><a href="#L-31"><span class="linenos"> 31</span></a><span class="sd"> S_global : float</span>
</span><span id="L-32"><a href="#L-32"><span class="linenos"> 32</span></a><span class="sd"> Standard value for S (default 2.0)</span>
</span><span id="L-33"><a href="#L-33"><span class="linenos"> 33</span></a><span class="sd"> S_dict : dict</span>
</span><span id="L-34"><a href="#L-34"><span class="linenos"> 34</span></a><span class="sd"> Dictionary for S values. If an entry for a given ensemble</span>
</span><span id="L-35"><a href="#L-35"><span class="linenos"> 35</span></a><span class="sd"> exists this overwrites the standard value for that ensemble.</span>
</span><span id="L-36"><a href="#L-36"><span class="linenos"> 36</span></a><span class="sd"> tau_exp_global : float</span>
</span><span id="L-37"><a href="#L-37"><span class="linenos"> 37</span></a><span class="sd"> Standard value for tau_exp (default 0.0)</span>
</span><span id="L-38"><a href="#L-38"><span class="linenos"> 38</span></a><span class="sd"> tau_exp_dict : dict</span>
</span><span id="L-39"><a href="#L-39"><span class="linenos"> 39</span></a><span class="sd"> Dictionary for tau_exp values. If an entry for a given ensemble exists</span>
</span><span id="L-40"><a href="#L-40"><span class="linenos"> 40</span></a><span class="sd"> this overwrites the standard value for that ensemble.</span>
</span><span id="L-41"><a href="#L-41"><span class="linenos"> 41</span></a><span class="sd"> N_sigma_global : float</span>
</span><span id="L-42"><a href="#L-42"><span class="linenos"> 42</span></a><span class="sd"> Standard value for N_sigma (default 1.0)</span>
</span><span id="L-43"><a href="#L-43"><span class="linenos"> 43</span></a><span class="sd"> N_sigma_dict : dict</span>
</span><span id="L-44"><a href="#L-44"><span class="linenos"> 44</span></a><span class="sd"> Dictionary for N_sigma values. If an entry for a given ensemble exists</span>
</span><span id="L-45"><a href="#L-45"><span class="linenos"> 45</span></a><span class="sd"> this overwrites the standard value for that ensemble.</span>
</span><span id="L-46"><a href="#L-46"><span class="linenos"> 46</span></a><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="L-47"><a href="#L-47"><span class="linenos"> 47</span></a> <span class="vm">__slots__</span> <span class="o">=</span> <span class="p">[</span><span class="s1">&#39;names&#39;</span><span class="p">,</span> <span class="s1">&#39;shape&#39;</span><span class="p">,</span> <span class="s1">&#39;r_values&#39;</span><span class="p">,</span> <span class="s1">&#39;deltas&#39;</span><span class="p">,</span> <span class="s1">&#39;N&#39;</span><span class="p">,</span> <span class="s1">&#39;_value&#39;</span><span class="p">,</span> <span class="s1">&#39;_dvalue&#39;</span><span class="p">,</span>
</span><span id="L-48"><a href="#L-48"><span class="linenos"> 48</span></a> <span class="s1">&#39;ddvalue&#39;</span><span class="p">,</span> <span class="s1">&#39;reweighted&#39;</span><span class="p">,</span> <span class="s1">&#39;S&#39;</span><span class="p">,</span> <span class="s1">&#39;tau_exp&#39;</span><span class="p">,</span> <span class="s1">&#39;N_sigma&#39;</span><span class="p">,</span>
</span><span id="L-49"><a href="#L-49"><span class="linenos"> 49</span></a> <span class="s1">&#39;e_dvalue&#39;</span><span class="p">,</span> <span class="s1">&#39;e_ddvalue&#39;</span><span class="p">,</span> <span class="s1">&#39;e_tauint&#39;</span><span class="p">,</span> <span class="s1">&#39;e_dtauint&#39;</span><span class="p">,</span>
</span><span id="L-50"><a href="#L-50"><span class="linenos"> 50</span></a> <span class="s1">&#39;e_windowsize&#39;</span><span class="p">,</span> <span class="s1">&#39;e_rho&#39;</span><span class="p">,</span> <span class="s1">&#39;e_drho&#39;</span><span class="p">,</span> <span class="s1">&#39;e_n_tauint&#39;</span><span class="p">,</span> <span class="s1">&#39;e_n_dtauint&#39;</span><span class="p">,</span>
</span><span id="L-51"><a href="#L-51"><span class="linenos"> 51</span></a> <span class="s1">&#39;idl&#39;</span><span class="p">,</span> <span class="s1">&#39;tag&#39;</span><span class="p">,</span> <span class="s1">&#39;_covobs&#39;</span><span class="p">,</span> <span class="s1">&#39;__dict__&#39;</span><span class="p">]</span>
</span><span id="L-52"><a href="#L-52"><span class="linenos"> 52</span></a>
</span><span id="L-53"><a href="#L-53"><span class="linenos"> 53</span></a> <span class="n">S_global</span> <span class="o">=</span> <span class="mf">2.0</span>
</span><span id="L-54"><a href="#L-54"><span class="linenos"> 54</span></a> <span class="n">S_dict</span> <span class="o">=</span> <span class="p">{}</span>
</span><span id="L-55"><a href="#L-55"><span class="linenos"> 55</span></a> <span class="n">tau_exp_global</span> <span class="o">=</span> <span class="mf">0.0</span>
</span><span id="L-56"><a href="#L-56"><span class="linenos"> 56</span></a> <span class="n">tau_exp_dict</span> <span class="o">=</span> <span class="p">{}</span>
</span><span id="L-57"><a href="#L-57"><span class="linenos"> 57</span></a> <span class="n">N_sigma_global</span> <span class="o">=</span> <span class="mf">1.0</span>
</span><span id="L-58"><a href="#L-58"><span class="linenos"> 58</span></a> <span class="n">N_sigma_dict</span> <span class="o">=</span> <span class="p">{}</span>
</span><span id="L-59"><a href="#L-59"><span class="linenos"> 59</span></a>
</span><span id="L-60"><a href="#L-60"><span class="linenos"> 60</span></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">samples</span><span class="p">,</span> <span class="n">names</span><span class="p">,</span> <span class="n">idl</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
</span><span id="L-61"><a href="#L-61"><span class="linenos"> 61</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot; Initialize Obs object.</span>
</span><span id="L-62"><a href="#L-62"><span class="linenos"> 62</span></a>
</span><span id="L-63"><a href="#L-63"><span class="linenos"> 63</span></a><span class="sd"> Parameters</span>
</span><span id="L-64"><a href="#L-64"><span class="linenos"> 64</span></a><span class="sd"> ----------</span>
</span><span id="L-65"><a href="#L-65"><span class="linenos"> 65</span></a><span class="sd"> samples : list</span>
</span><span id="L-66"><a href="#L-66"><span class="linenos"> 66</span></a><span class="sd"> list of numpy arrays containing the Monte Carlo samples</span>
</span><span id="L-67"><a href="#L-67"><span class="linenos"> 67</span></a><span class="sd"> names : list</span>
</span><span id="L-68"><a href="#L-68"><span class="linenos"> 68</span></a><span class="sd"> list of strings labeling the individual samples</span>
</span><span id="L-69"><a href="#L-69"><span class="linenos"> 69</span></a><span class="sd"> idl : list, optional</span>
</span><span id="L-70"><a href="#L-70"><span class="linenos"> 70</span></a><span class="sd"> list of ranges or lists on which the samples are defined</span>
</span><span id="L-71"><a href="#L-71"><span class="linenos"> 71</span></a><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="L-72"><a href="#L-72"><span class="linenos"> 72</span></a>
</span><span id="L-73"><a href="#L-73"><span class="linenos"> 73</span></a> <span class="k">if</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;means&quot;</span><span class="p">)</span> <span class="ow">is</span> <span class="kc">None</span> <span class="ow">and</span> <span class="nb">len</span><span class="p">(</span><span class="n">samples</span><span class="p">):</span>
</span><span id="L-74"><a href="#L-74"><span class="linenos"> 74</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">samples</span><span class="p">)</span> <span class="o">!=</span> <span class="nb">len</span><span class="p">(</span><span class="n">names</span><span class="p">):</span>
</span><span id="L-75"><a href="#L-75"><span class="linenos"> 75</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s1">&#39;Length of samples and names incompatible.&#39;</span><span class="p">)</span>
</span><span id="L-76"><a href="#L-76"><span class="linenos"> 76</span></a> <span class="k">if</span> <span class="n">idl</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
</span><span id="L-77"><a href="#L-77"><span class="linenos"> 77</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">idl</span><span class="p">)</span> <span class="o">!=</span> <span class="nb">len</span><span class="p">(</span><span class="n">names</span><span class="p">):</span>
</span><span id="L-78"><a href="#L-78"><span class="linenos"> 78</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s1">&#39;Length of idl incompatible with samples and names.&#39;</span><span class="p">)</span>
</span><span id="L-79"><a href="#L-79"><span class="linenos"> 79</span></a> <span class="n">name_length</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">names</span><span class="p">)</span>
</span><span id="L-80"><a href="#L-80"><span class="linenos"> 80</span></a> <span class="k">if</span> <span class="n">name_length</span> <span class="o">&gt;</span> <span class="mi">1</span><span class="p">:</span>
</span><span id="L-81"><a href="#L-81"><span class="linenos"> 81</span></a> <span class="k">if</span> <span class="n">name_length</span> <span class="o">!=</span> <span class="nb">len</span><span class="p">(</span><span class="nb">set</span><span class="p">(</span><span class="n">names</span><span class="p">)):</span>
</span><span id="L-82"><a href="#L-82"><span class="linenos"> 82</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s1">&#39;Names are not unique.&#39;</span><span class="p">)</span>
</span><span id="L-83"><a href="#L-83"><span class="linenos"> 83</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">all</span><span class="p">(</span><span class="nb">isinstance</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="nb">str</span><span class="p">)</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">names</span><span class="p">):</span>
</span><span id="L-84"><a href="#L-84"><span class="linenos"> 84</span></a> <span class="k">raise</span> <span class="ne">TypeError</span><span class="p">(</span><span class="s1">&#39;All names have to be strings.&#39;</span><span class="p">)</span>
</span><span id="L-85"><a href="#L-85"><span class="linenos"> 85</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="L-86"><a href="#L-86"><span class="linenos"> 86</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">names</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="nb">str</span><span class="p">):</span>
</span><span id="L-87"><a href="#L-87"><span class="linenos"> 87</span></a> <span class="k">raise</span> <span class="ne">TypeError</span><span class="p">(</span><span class="s1">&#39;All names have to be strings.&#39;</span><span class="p">)</span>
</span><span id="L-88"><a href="#L-88"><span class="linenos"> 88</span></a> <span class="k">if</span> <span class="nb">min</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">x</span><span class="p">)</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">samples</span><span class="p">)</span> <span class="o">&lt;=</span> <span class="mi">4</span><span class="p">:</span>
</span><span id="L-89"><a href="#L-89"><span class="linenos"> 89</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s1">&#39;Samples have to have at least 5 entries.&#39;</span><span class="p">)</span>
</span><span id="L-90"><a href="#L-90"><span class="linenos"> 90</span></a>
</span><span id="L-91"><a href="#L-91"><span class="linenos"> 91</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">names</span> <span class="o">=</span> <span class="nb">sorted</span><span class="p">(</span><span class="n">names</span><span class="p">)</span>
</span><span id="L-92"><a href="#L-92"><span class="linenos"> 92</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">shape</span> <span class="o">=</span> <span class="p">{}</span>
</span><span id="L-93"><a href="#L-93"><span class="linenos"> 93</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">r_values</span> <span class="o">=</span> <span class="p">{}</span>
</span><span id="L-94"><a href="#L-94"><span class="linenos"> 94</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">deltas</span> <span class="o">=</span> <span class="p">{}</span>
</span><span id="L-95"><a href="#L-95"><span class="linenos"> 95</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_covobs</span> <span class="o">=</span> <span class="p">{}</span>
</span><span id="L-96"><a href="#L-96"><span class="linenos"> 96</span></a>
</span><span id="L-97"><a href="#L-97"><span class="linenos"> 97</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_value</span> <span class="o">=</span> <span class="mi">0</span>
</span><span id="L-98"><a href="#L-98"><span class="linenos"> 98</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">N</span> <span class="o">=</span> <span class="mi">0</span>
</span><span id="L-99"><a href="#L-99"><span class="linenos"> 99</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">idl</span> <span class="o">=</span> <span class="p">{}</span>
</span><span id="L-100"><a href="#L-100"><span class="linenos"> 100</span></a> <span class="k">if</span> <span class="n">idl</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
</span><span id="L-101"><a href="#L-101"><span class="linenos"> 101</span></a> <span class="k">for</span> <span class="n">name</span><span class="p">,</span> <span class="n">idx</span> <span class="ow">in</span> <span class="nb">sorted</span><span class="p">(</span><span class="nb">zip</span><span class="p">(</span><span class="n">names</span><span class="p">,</span> <span class="n">idl</span><span class="p">)):</span>
</span><span id="L-102"><a href="#L-102"><span class="linenos"> 102</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">idx</span><span class="p">,</span> <span class="nb">range</span><span class="p">):</span>
</span><span id="L-103"><a href="#L-103"><span class="linenos"> 103</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">idl</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="o">=</span> <span class="n">idx</span>
</span><span id="L-104"><a href="#L-104"><span class="linenos"> 104</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">idx</span><span class="p">,</span> <span class="p">(</span><span class="nb">list</span><span class="p">,</span> <span class="n">np</span><span class="o">.</span><span class="n">ndarray</span><span class="p">)):</span>
</span><span id="L-105"><a href="#L-105"><span class="linenos"> 105</span></a> <span class="n">dc</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">unique</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">diff</span><span class="p">(</span><span class="n">idx</span><span class="p">))</span>
</span><span id="L-106"><a href="#L-106"><span class="linenos"> 106</span></a> <span class="k">if</span> <span class="n">np</span><span class="o">.</span><span class="n">any</span><span class="p">(</span><span class="n">dc</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">):</span>
</span><span id="L-107"><a href="#L-107"><span class="linenos"> 107</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;Unsorted idx for idl[</span><span class="si">%s</span><span class="s2">] at position </span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="s1">&#39; &#39;</span><span class="o">.</span><span class="n">join</span><span class="p">([</span><span class="s1">&#39;</span><span class="si">%s</span><span class="s1">&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">pos</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span> <span class="k">for</span> <span class="n">pos</span> <span class="ow">in</span> <span class="n">np</span><span class="o">.</span><span class="n">where</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">diff</span><span class="p">(</span><span class="n">idx</span><span class="p">)</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)[</span><span class="mi">0</span><span class="p">]])))</span>
</span><span id="L-108"><a href="#L-108"><span class="linenos"> 108</span></a> <span class="k">elif</span> <span class="n">np</span><span class="o">.</span><span class="n">any</span><span class="p">(</span><span class="n">dc</span> <span class="o">==</span> <span class="mi">0</span><span class="p">):</span>
</span><span id="L-109"><a href="#L-109"><span class="linenos"> 109</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;Duplicate entries in idx for idl[</span><span class="si">%s</span><span class="s2">] at position </span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="s1">&#39; &#39;</span><span class="o">.</span><span class="n">join</span><span class="p">([</span><span class="s1">&#39;</span><span class="si">%s</span><span class="s1">&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">pos</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span> <span class="k">for</span> <span class="n">pos</span> <span class="ow">in</span> <span class="n">np</span><span class="o">.</span><span class="n">where</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">diff</span><span class="p">(</span><span class="n">idx</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span><span class="p">)[</span><span class="mi">0</span><span class="p">]])))</span>
</span><span id="L-110"><a href="#L-110"><span class="linenos"> 110</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">dc</span><span class="p">)</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span>
</span><span id="L-111"><a href="#L-111"><span class="linenos"> 111</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">idl</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="o">=</span> <span class="nb">range</span><span class="p">(</span><span class="n">idx</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">idx</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> <span class="o">+</span> <span class="n">dc</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">dc</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
</span><span id="L-112"><a href="#L-112"><span class="linenos"> 112</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="L-113"><a href="#L-113"><span class="linenos"> 113</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">idl</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="n">idx</span><span class="p">)</span>
</span><span id="L-114"><a href="#L-114"><span class="linenos"> 114</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="L-115"><a href="#L-115"><span class="linenos"> 115</span></a> <span class="k">raise</span> <span class="ne">TypeError</span><span class="p">(</span><span class="s1">&#39;incompatible type for idl[</span><span class="si">%s</span><span class="s1">].&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">name</span><span class="p">))</span>
</span><span id="L-116"><a href="#L-116"><span class="linenos"> 116</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="L-117"><a href="#L-117"><span class="linenos"> 117</span></a> <span class="k">for</span> <span class="n">name</span><span class="p">,</span> <span class="n">sample</span> <span class="ow">in</span> <span class="nb">sorted</span><span class="p">(</span><span class="nb">zip</span><span class="p">(</span><span class="n">names</span><span class="p">,</span> <span class="n">samples</span><span class="p">)):</span>
</span><span id="L-118"><a href="#L-118"><span class="linenos"> 118</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">idl</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="o">=</span> <span class="nb">range</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">sample</span><span class="p">)</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span>
</span><span id="L-119"><a href="#L-119"><span class="linenos"> 119</span></a>
</span><span id="L-120"><a href="#L-120"><span class="linenos"> 120</span></a> <span class="k">if</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;means&quot;</span><span class="p">)</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
</span><span id="L-121"><a href="#L-121"><span class="linenos"> 121</span></a> <span class="k">for</span> <span class="n">name</span><span class="p">,</span> <span class="n">sample</span><span class="p">,</span> <span class="n">mean</span> <span class="ow">in</span> <span class="nb">sorted</span><span class="p">(</span><span class="nb">zip</span><span class="p">(</span><span class="n">names</span><span class="p">,</span> <span class="n">samples</span><span class="p">,</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;means&quot;</span><span class="p">))):</span>
</span><span id="L-122"><a href="#L-122"><span class="linenos"> 122</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">idl</span><span class="p">[</span><span class="n">name</span><span class="p">])</span>
</span><span id="L-123"><a href="#L-123"><span class="linenos"> 123</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">N</span> <span class="o">+=</span> <span class="bp">self</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="n">name</span><span class="p">]</span>
</span><span id="L-124"><a href="#L-124"><span class="linenos"> 124</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">r_values</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="o">=</span> <span class="n">mean</span>
</span><span id="L-125"><a href="#L-125"><span class="linenos"> 125</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">deltas</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="o">=</span> <span class="n">sample</span>
</span><span id="L-126"><a href="#L-126"><span class="linenos"> 126</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="L-127"><a href="#L-127"><span class="linenos"> 127</span></a> <span class="k">for</span> <span class="n">name</span><span class="p">,</span> <span class="n">sample</span> <span class="ow">in</span> <span class="nb">sorted</span><span class="p">(</span><span class="nb">zip</span><span class="p">(</span><span class="n">names</span><span class="p">,</span> <span class="n">samples</span><span class="p">)):</span>
</span><span id="L-128"><a href="#L-128"><span class="linenos"> 128</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">idl</span><span class="p">[</span><span class="n">name</span><span class="p">])</span>
</span><span id="L-129"><a href="#L-129"><span class="linenos"> 129</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">N</span> <span class="o">+=</span> <span class="bp">self</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="n">name</span><span class="p">]</span>
</span><span id="L-130"><a href="#L-130"><span class="linenos"> 130</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">sample</span><span class="p">)</span> <span class="o">!=</span> <span class="bp">self</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="n">name</span><span class="p">]:</span>
</span><span id="L-131"><a href="#L-131"><span class="linenos"> 131</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s1">&#39;Incompatible samples and idx for </span><span class="si">%s</span><span class="s1">: </span><span class="si">%d</span><span class="s1"> vs. </span><span class="si">%d</span><span class="s1">&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">sample</span><span class="p">),</span> <span class="bp">self</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="n">name</span><span class="p">]))</span>
</span><span id="L-132"><a href="#L-132"><span class="linenos"> 132</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">r_values</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">mean</span><span class="p">(</span><span class="n">sample</span><span class="p">)</span>
</span><span id="L-133"><a href="#L-133"><span class="linenos"> 133</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">deltas</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="o">=</span> <span class="n">sample</span> <span class="o">-</span> <span class="bp">self</span><span class="o">.</span><span class="n">r_values</span><span class="p">[</span><span class="n">name</span><span class="p">]</span>
</span><span id="L-134"><a href="#L-134"><span class="linenos"> 134</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_value</span> <span class="o">+=</span> <span class="bp">self</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">r_values</span><span class="p">[</span><span class="n">name</span><span class="p">]</span>
</span><span id="L-135"><a href="#L-135"><span class="linenos"> 135</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_value</span> <span class="o">/=</span> <span class="bp">self</span><span class="o">.</span><span class="n">N</span>
</span><span id="L-136"><a href="#L-136"><span class="linenos"> 136</span></a>
</span><span id="L-137"><a href="#L-137"><span class="linenos"> 137</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_dvalue</span> <span class="o">=</span> <span class="mf">0.0</span>
</span><span id="L-138"><a href="#L-138"><span class="linenos"> 138</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">ddvalue</span> <span class="o">=</span> <span class="mf">0.0</span>
</span><span id="L-139"><a href="#L-139"><span class="linenos"> 139</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">reweighted</span> <span class="o">=</span> <span class="kc">False</span>
</span><span id="L-140"><a href="#L-140"><span class="linenos"> 140</span></a>
</span><span id="L-141"><a href="#L-141"><span class="linenos"> 141</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">tag</span> <span class="o">=</span> <span class="kc">None</span>
</span><span id="L-142"><a href="#L-142"><span class="linenos"> 142</span></a>
</span><span id="L-143"><a href="#L-143"><span class="linenos"> 143</span></a> <span class="nd">@property</span>
</span><span id="L-144"><a href="#L-144"><span class="linenos"> 144</span></a> <span class="k">def</span> <span class="nf">value</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
</span><span id="L-145"><a href="#L-145"><span class="linenos"> 145</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_value</span>
</span><span id="L-146"><a href="#L-146"><span class="linenos"> 146</span></a>
</span><span id="L-147"><a href="#L-147"><span class="linenos"> 147</span></a> <span class="nd">@property</span>
</span><span id="L-148"><a href="#L-148"><span class="linenos"> 148</span></a> <span class="k">def</span> <span class="nf">dvalue</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
</span><span id="L-149"><a href="#L-149"><span class="linenos"> 149</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_dvalue</span>
</span><span id="L-150"><a href="#L-150"><span class="linenos"> 150</span></a>
</span><span id="L-151"><a href="#L-151"><span class="linenos"> 151</span></a> <span class="nd">@property</span>
</span><span id="L-152"><a href="#L-152"><span class="linenos"> 152</span></a> <span class="k">def</span> <span class="nf">e_names</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
</span><span id="L-153"><a href="#L-153"><span class="linenos"> 153</span></a> <span class="k">return</span> <span class="nb">sorted</span><span class="p">(</span><span class="nb">set</span><span class="p">([</span><span class="n">o</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s1">&#39;|&#39;</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span> <span class="k">for</span> <span class="n">o</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">names</span><span class="p">]))</span>
</span><span id="L-154"><a href="#L-154"><span class="linenos"> 154</span></a>
</span><span id="L-155"><a href="#L-155"><span class="linenos"> 155</span></a> <span class="nd">@property</span>
</span><span id="L-156"><a href="#L-156"><span class="linenos"> 156</span></a> <span class="k">def</span> <span class="nf">cov_names</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
</span><span id="L-157"><a href="#L-157"><span class="linenos"> 157</span></a> <span class="k">return</span> <span class="nb">sorted</span><span class="p">(</span><span class="nb">set</span><span class="p">([</span><span class="n">o</span> <span class="k">for</span> <span class="n">o</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">covobs</span><span class="o">.</span><span class="n">keys</span><span class="p">()]))</span>
</span><span id="L-158"><a href="#L-158"><span class="linenos"> 158</span></a>
</span><span id="L-159"><a href="#L-159"><span class="linenos"> 159</span></a> <span class="nd">@property</span>
</span><span id="L-160"><a href="#L-160"><span class="linenos"> 160</span></a> <span class="k">def</span> <span class="nf">mc_names</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
</span><span id="L-161"><a href="#L-161"><span class="linenos"> 161</span></a> <span class="k">return</span> <span class="nb">sorted</span><span class="p">(</span><span class="nb">set</span><span class="p">([</span><span class="n">o</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s1">&#39;|&#39;</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span> <span class="k">for</span> <span class="n">o</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">names</span> <span class="k">if</span> <span class="n">o</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">cov_names</span><span class="p">]))</span>
</span><span id="L-162"><a href="#L-162"><span class="linenos"> 162</span></a>
</span><span id="L-163"><a href="#L-163"><span class="linenos"> 163</span></a> <span class="nd">@property</span>
</span><span id="L-164"><a href="#L-164"><span class="linenos"> 164</span></a> <span class="k">def</span> <span class="nf">e_content</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
</span><span id="L-165"><a href="#L-165"><span class="linenos"> 165</span></a> <span class="n">res</span> <span class="o">=</span> <span class="p">{}</span>
</span><span id="L-166"><a href="#L-166"><span class="linenos"> 166</span></a> <span class="k">for</span> <span class="n">e</span><span class="p">,</span> <span class="n">e_name</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">e_names</span><span class="p">):</span>
</span><span id="L-167"><a href="#L-167"><span class="linenos"> 167</span></a> <span class="n">res</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">=</span> <span class="nb">sorted</span><span class="p">(</span><span class="nb">filter</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span><span class="p">:</span> <span class="n">x</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="n">e_name</span> <span class="o">+</span> <span class="s1">&#39;|&#39;</span><span class="p">),</span> <span class="bp">self</span><span class="o">.</span><span class="n">names</span><span class="p">))</span>
</span><span id="L-168"><a href="#L-168"><span class="linenos"> 168</span></a> <span class="k">if</span> <span class="n">e_name</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">names</span><span class="p">:</span>
</span><span id="L-169"><a href="#L-169"><span class="linenos"> 169</span></a> <span class="n">res</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">e_name</span><span class="p">)</span>
</span><span id="L-170"><a href="#L-170"><span class="linenos"> 170</span></a> <span class="k">return</span> <span class="n">res</span>
</span><span id="L-171"><a href="#L-171"><span class="linenos"> 171</span></a>
</span><span id="L-172"><a href="#L-172"><span class="linenos"> 172</span></a> <span class="nd">@property</span>
</span><span id="L-173"><a href="#L-173"><span class="linenos"> 173</span></a> <span class="k">def</span> <span class="nf">covobs</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
</span><span id="L-174"><a href="#L-174"><span class="linenos"> 174</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_covobs</span>
</span><span id="L-175"><a href="#L-175"><span class="linenos"> 175</span></a>
</span><span id="L-176"><a href="#L-176"><span class="linenos"> 176</span></a> <span class="k">def</span> <span class="nf">gamma_method</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
</span><span id="L-177"><a href="#L-177"><span class="linenos"> 177</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Estimate the error and related properties of the Obs.</span>
</span><span id="L-178"><a href="#L-178"><span class="linenos"> 178</span></a>
</span><span id="L-179"><a href="#L-179"><span class="linenos"> 179</span></a><span class="sd"> Parameters</span>
</span><span id="L-180"><a href="#L-180"><span class="linenos"> 180</span></a><span class="sd"> ----------</span>
</span><span id="L-181"><a href="#L-181"><span class="linenos"> 181</span></a><span class="sd"> S : float</span>
</span><span id="L-182"><a href="#L-182"><span class="linenos"> 182</span></a><span class="sd"> specifies a custom value for the parameter S (default 2.0).</span>
</span><span id="L-183"><a href="#L-183"><span class="linenos"> 183</span></a><span class="sd"> If set to 0 it is assumed that the data exhibits no</span>
</span><span id="L-184"><a href="#L-184"><span class="linenos"> 184</span></a><span class="sd"> autocorrelation. In this case the error estimates coincides</span>
</span><span id="L-185"><a href="#L-185"><span class="linenos"> 185</span></a><span class="sd"> with the sample standard error.</span>
</span><span id="L-186"><a href="#L-186"><span class="linenos"> 186</span></a><span class="sd"> tau_exp : float</span>
</span><span id="L-187"><a href="#L-187"><span class="linenos"> 187</span></a><span class="sd"> positive value triggers the critical slowing down analysis</span>
</span><span id="L-188"><a href="#L-188"><span class="linenos"> 188</span></a><span class="sd"> (default 0.0).</span>
</span><span id="L-189"><a href="#L-189"><span class="linenos"> 189</span></a><span class="sd"> N_sigma : float</span>
</span><span id="L-190"><a href="#L-190"><span class="linenos"> 190</span></a><span class="sd"> number of standard deviations from zero until the tail is</span>
</span><span id="L-191"><a href="#L-191"><span class="linenos"> 191</span></a><span class="sd"> attached to the autocorrelation function (default 1).</span>
</span><span id="L-192"><a href="#L-192"><span class="linenos"> 192</span></a><span class="sd"> fft : bool</span>
</span><span id="L-193"><a href="#L-193"><span class="linenos"> 193</span></a><span class="sd"> determines whether the fft algorithm is used for the computation</span>
</span><span id="L-194"><a href="#L-194"><span class="linenos"> 194</span></a><span class="sd"> of the autocorrelation function (default True)</span>
</span><span id="L-195"><a href="#L-195"><span class="linenos"> 195</span></a><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="L-196"><a href="#L-196"><span class="linenos"> 196</span></a>
</span><span id="L-197"><a href="#L-197"><span class="linenos"> 197</span></a> <span class="n">e_content</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">e_content</span>
</span><span id="L-198"><a href="#L-198"><span class="linenos"> 198</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_dvalue</span> <span class="o">=</span> <span class="p">{}</span>
</span><span id="L-199"><a href="#L-199"><span class="linenos"> 199</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_ddvalue</span> <span class="o">=</span> <span class="p">{}</span>
</span><span id="L-200"><a href="#L-200"><span class="linenos"> 200</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_tauint</span> <span class="o">=</span> <span class="p">{}</span>
</span><span id="L-201"><a href="#L-201"><span class="linenos"> 201</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_dtauint</span> <span class="o">=</span> <span class="p">{}</span>
</span><span id="L-202"><a href="#L-202"><span class="linenos"> 202</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_windowsize</span> <span class="o">=</span> <span class="p">{}</span>
</span><span id="L-203"><a href="#L-203"><span class="linenos"> 203</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_n_tauint</span> <span class="o">=</span> <span class="p">{}</span>
</span><span id="L-204"><a href="#L-204"><span class="linenos"> 204</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_n_dtauint</span> <span class="o">=</span> <span class="p">{}</span>
</span><span id="L-205"><a href="#L-205"><span class="linenos"> 205</span></a> <span class="n">e_gamma</span> <span class="o">=</span> <span class="p">{}</span>
</span><span id="L-206"><a href="#L-206"><span class="linenos"> 206</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_rho</span> <span class="o">=</span> <span class="p">{}</span>
</span><span id="L-207"><a href="#L-207"><span class="linenos"> 207</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_drho</span> <span class="o">=</span> <span class="p">{}</span>
</span><span id="L-208"><a href="#L-208"><span class="linenos"> 208</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_dvalue</span> <span class="o">=</span> <span class="mi">0</span>
</span><span id="L-209"><a href="#L-209"><span class="linenos"> 209</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">ddvalue</span> <span class="o">=</span> <span class="mi">0</span>
</span><span id="L-210"><a href="#L-210"><span class="linenos"> 210</span></a>
</span><span id="L-211"><a href="#L-211"><span class="linenos"> 211</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">S</span> <span class="o">=</span> <span class="p">{}</span>
</span><span id="L-212"><a href="#L-212"><span class="linenos"> 212</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">tau_exp</span> <span class="o">=</span> <span class="p">{}</span>
</span><span id="L-213"><a href="#L-213"><span class="linenos"> 213</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">N_sigma</span> <span class="o">=</span> <span class="p">{}</span>
</span><span id="L-214"><a href="#L-214"><span class="linenos"> 214</span></a>
</span><span id="L-215"><a href="#L-215"><span class="linenos"> 215</span></a> <span class="k">if</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">&#39;fft&#39;</span><span class="p">)</span> <span class="ow">is</span> <span class="kc">False</span><span class="p">:</span>
</span><span id="L-216"><a href="#L-216"><span class="linenos"> 216</span></a> <span class="n">fft</span> <span class="o">=</span> <span class="kc">False</span>
</span><span id="L-217"><a href="#L-217"><span class="linenos"> 217</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="L-218"><a href="#L-218"><span class="linenos"> 218</span></a> <span class="n">fft</span> <span class="o">=</span> <span class="kc">True</span>
</span><span id="L-219"><a href="#L-219"><span class="linenos"> 219</span></a>
</span><span id="L-220"><a href="#L-220"><span class="linenos"> 220</span></a> <span class="k">def</span> <span class="nf">_parse_kwarg</span><span class="p">(</span><span class="n">kwarg_name</span><span class="p">):</span>
</span><span id="L-221"><a href="#L-221"><span class="linenos"> 221</span></a> <span class="k">if</span> <span class="n">kwarg_name</span> <span class="ow">in</span> <span class="n">kwargs</span><span class="p">:</span>
</span><span id="L-222"><a href="#L-222"><span class="linenos"> 222</span></a> <span class="n">tmp</span> <span class="o">=</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">kwarg_name</span><span class="p">)</span>
</span><span id="L-223"><a href="#L-223"><span class="linenos"> 223</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">tmp</span><span class="p">,</span> <span class="p">(</span><span class="nb">int</span><span class="p">,</span> <span class="nb">float</span><span class="p">)):</span>
</span><span id="L-224"><a href="#L-224"><span class="linenos"> 224</span></a> <span class="k">if</span> <span class="n">tmp</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">:</span>
</span><span id="L-225"><a href="#L-225"><span class="linenos"> 225</span></a> <span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="n">kwarg_name</span> <span class="o">+</span> <span class="s1">&#39; has to be larger or equal to 0.&#39;</span><span class="p">)</span>
</span><span id="L-226"><a href="#L-226"><span class="linenos"> 226</span></a> <span class="k">for</span> <span class="n">e</span><span class="p">,</span> <span class="n">e_name</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">e_names</span><span class="p">):</span>
</span><span id="L-227"><a href="#L-227"><span class="linenos"> 227</span></a> <span class="nb">getattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">kwarg_name</span><span class="p">)[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">=</span> <span class="n">tmp</span>
</span><span id="L-228"><a href="#L-228"><span class="linenos"> 228</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="L-229"><a href="#L-229"><span class="linenos"> 229</span></a> <span class="k">raise</span> <span class="ne">TypeError</span><span class="p">(</span><span class="n">kwarg_name</span> <span class="o">+</span> <span class="s1">&#39; is not in proper format.&#39;</span><span class="p">)</span>
</span><span id="L-230"><a href="#L-230"><span class="linenos"> 230</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="L-231"><a href="#L-231"><span class="linenos"> 231</span></a> <span class="k">for</span> <span class="n">e</span><span class="p">,</span> <span class="n">e_name</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">e_names</span><span class="p">):</span>
</span><span id="L-232"><a href="#L-232"><span class="linenos"> 232</span></a> <span class="k">if</span> <span class="n">e_name</span> <span class="ow">in</span> <span class="nb">getattr</span><span class="p">(</span><span class="n">Obs</span><span class="p">,</span> <span class="n">kwarg_name</span> <span class="o">+</span> <span class="s1">&#39;_dict&#39;</span><span class="p">):</span>
</span><span id="L-233"><a href="#L-233"><span class="linenos"> 233</span></a> <span class="nb">getattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">kwarg_name</span><span class="p">)[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">=</span> <span class="nb">getattr</span><span class="p">(</span><span class="n">Obs</span><span class="p">,</span> <span class="n">kwarg_name</span> <span class="o">+</span> <span class="s1">&#39;_dict&#39;</span><span class="p">)[</span><span class="n">e_name</span><span class="p">]</span>
</span><span id="L-234"><a href="#L-234"><span class="linenos"> 234</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="L-235"><a href="#L-235"><span class="linenos"> 235</span></a> <span class="nb">getattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">kwarg_name</span><span class="p">)[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">=</span> <span class="nb">getattr</span><span class="p">(</span><span class="n">Obs</span><span class="p">,</span> <span class="n">kwarg_name</span> <span class="o">+</span> <span class="s1">&#39;_global&#39;</span><span class="p">)</span>
</span><span id="L-236"><a href="#L-236"><span class="linenos"> 236</span></a>
</span><span id="L-237"><a href="#L-237"><span class="linenos"> 237</span></a> <span class="n">_parse_kwarg</span><span class="p">(</span><span class="s1">&#39;S&#39;</span><span class="p">)</span>
</span><span id="L-238"><a href="#L-238"><span class="linenos"> 238</span></a> <span class="n">_parse_kwarg</span><span class="p">(</span><span class="s1">&#39;tau_exp&#39;</span><span class="p">)</span>
</span><span id="L-239"><a href="#L-239"><span class="linenos"> 239</span></a> <span class="n">_parse_kwarg</span><span class="p">(</span><span class="s1">&#39;N_sigma&#39;</span><span class="p">)</span>
</span><span id="L-240"><a href="#L-240"><span class="linenos"> 240</span></a>
</span><span id="L-241"><a href="#L-241"><span class="linenos"> 241</span></a> <span class="k">for</span> <span class="n">e</span><span class="p">,</span> <span class="n">e_name</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">mc_names</span><span class="p">):</span>
</span><span id="L-242"><a href="#L-242"><span class="linenos"> 242</span></a> <span class="n">gapsize</span> <span class="o">=</span> <span class="n">_determine_gap</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">e_content</span><span class="p">,</span> <span class="n">e_name</span><span class="p">)</span>
</span><span id="L-243"><a href="#L-243"><span class="linenos"> 243</span></a>
</span><span id="L-244"><a href="#L-244"><span class="linenos"> 244</span></a> <span class="n">r_length</span> <span class="o">=</span> <span class="p">[]</span>
</span><span id="L-245"><a href="#L-245"><span class="linenos"> 245</span></a> <span class="k">for</span> <span class="n">r_name</span> <span class="ow">in</span> <span class="n">e_content</span><span class="p">[</span><span class="n">e_name</span><span class="p">]:</span>
</span><span id="L-246"><a href="#L-246"><span class="linenos"> 246</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">idl</span><span class="p">[</span><span class="n">r_name</span><span class="p">],</span> <span class="nb">range</span><span class="p">):</span>
</span><span id="L-247"><a href="#L-247"><span class="linenos"> 247</span></a> <span class="n">r_length</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">idl</span><span class="p">[</span><span class="n">r_name</span><span class="p">])</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">idl</span><span class="p">[</span><span class="n">r_name</span><span class="p">]</span><span class="o">.</span><span class="n">step</span> <span class="o">//</span> <span class="n">gapsize</span><span class="p">)</span>
</span><span id="L-248"><a href="#L-248"><span class="linenos"> 248</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="L-249"><a href="#L-249"><span class="linenos"> 249</span></a> <span class="n">r_length</span><span class="o">.</span><span class="n">append</span><span class="p">((</span><span class="bp">self</span><span class="o">.</span><span class="n">idl</span><span class="p">[</span><span class="n">r_name</span><span class="p">][</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> <span class="o">-</span> <span class="bp">self</span><span class="o">.</span><span class="n">idl</span><span class="p">[</span><span class="n">r_name</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span> <span class="o">//</span> <span class="n">gapsize</span><span class="p">)</span>
</span><span id="L-250"><a href="#L-250"><span class="linenos"> 250</span></a>
</span><span id="L-251"><a href="#L-251"><span class="linenos"> 251</span></a> <span class="n">e_N</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">sum</span><span class="p">([</span><span class="bp">self</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="n">r_name</span><span class="p">]</span> <span class="k">for</span> <span class="n">r_name</span> <span class="ow">in</span> <span class="n">e_content</span><span class="p">[</span><span class="n">e_name</span><span class="p">]])</span>
</span><span id="L-252"><a href="#L-252"><span class="linenos"> 252</span></a> <span class="n">w_max</span> <span class="o">=</span> <span class="nb">max</span><span class="p">(</span><span class="n">r_length</span><span class="p">)</span> <span class="o">//</span> <span class="mi">2</span>
</span><span id="L-253"><a href="#L-253"><span class="linenos"> 253</span></a> <span class="n">e_gamma</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">zeros</span><span class="p">(</span><span class="n">w_max</span><span class="p">)</span>
</span><span id="L-254"><a href="#L-254"><span class="linenos"> 254</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_rho</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">zeros</span><span class="p">(</span><span class="n">w_max</span><span class="p">)</span>
</span><span id="L-255"><a href="#L-255"><span class="linenos"> 255</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_drho</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">zeros</span><span class="p">(</span><span class="n">w_max</span><span class="p">)</span>
</span><span id="L-256"><a href="#L-256"><span class="linenos"> 256</span></a>
</span><span id="L-257"><a href="#L-257"><span class="linenos"> 257</span></a> <span class="k">for</span> <span class="n">r_name</span> <span class="ow">in</span> <span class="n">e_content</span><span class="p">[</span><span class="n">e_name</span><span class="p">]:</span>
</span><span id="L-258"><a href="#L-258"><span class="linenos"> 258</span></a> <span class="n">e_gamma</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">+=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_calc_gamma</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">deltas</span><span class="p">[</span><span class="n">r_name</span><span class="p">],</span> <span class="bp">self</span><span class="o">.</span><span class="n">idl</span><span class="p">[</span><span class="n">r_name</span><span class="p">],</span> <span class="bp">self</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="n">r_name</span><span class="p">],</span> <span class="n">w_max</span><span class="p">,</span> <span class="n">fft</span><span class="p">,</span> <span class="n">gapsize</span><span class="p">)</span>
</span><span id="L-259"><a href="#L-259"><span class="linenos"> 259</span></a>
</span><span id="L-260"><a href="#L-260"><span class="linenos"> 260</span></a> <span class="n">gamma_div</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">zeros</span><span class="p">(</span><span class="n">w_max</span><span class="p">)</span>
</span><span id="L-261"><a href="#L-261"><span class="linenos"> 261</span></a> <span class="k">for</span> <span class="n">r_name</span> <span class="ow">in</span> <span class="n">e_content</span><span class="p">[</span><span class="n">e_name</span><span class="p">]:</span>
</span><span id="L-262"><a href="#L-262"><span class="linenos"> 262</span></a> <span class="n">gamma_div</span> <span class="o">+=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_calc_gamma</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">ones</span><span class="p">((</span><span class="bp">self</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="n">r_name</span><span class="p">])),</span> <span class="bp">self</span><span class="o">.</span><span class="n">idl</span><span class="p">[</span><span class="n">r_name</span><span class="p">],</span> <span class="bp">self</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="n">r_name</span><span class="p">],</span> <span class="n">w_max</span><span class="p">,</span> <span class="n">fft</span><span class="p">,</span> <span class="n">gapsize</span><span class="p">)</span>
</span><span id="L-263"><a href="#L-263"><span class="linenos"> 263</span></a> <span class="n">gamma_div</span><span class="p">[</span><span class="n">gamma_div</span> <span class="o">&lt;</span> <span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="mf">1.0</span>
</span><span id="L-264"><a href="#L-264"><span class="linenos"> 264</span></a> <span class="n">e_gamma</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">/=</span> <span class="n">gamma_div</span><span class="p">[:</span><span class="n">w_max</span><span class="p">]</span>
</span><span id="L-265"><a href="#L-265"><span class="linenos"> 265</span></a>
</span><span id="L-266"><a href="#L-266"><span class="linenos"> 266</span></a> <span class="k">if</span> <span class="n">np</span><span class="o">.</span><span class="n">abs</span><span class="p">(</span><span class="n">e_gamma</span><span class="p">[</span><span class="n">e_name</span><span class="p">][</span><span class="mi">0</span><span class="p">])</span> <span class="o">&lt;</span> <span class="mi">10</span> <span class="o">*</span> <span class="n">np</span><span class="o">.</span><span class="n">finfo</span><span class="p">(</span><span class="nb">float</span><span class="p">)</span><span class="o">.</span><span class="n">tiny</span><span class="p">:</span> <span class="c1"># Prevent division by zero</span>
</span><span id="L-267"><a href="#L-267"><span class="linenos"> 267</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_tauint</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">=</span> <span class="mf">0.5</span>
</span><span id="L-268"><a href="#L-268"><span class="linenos"> 268</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_dtauint</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">=</span> <span class="mf">0.0</span>
</span><span id="L-269"><a href="#L-269"><span class="linenos"> 269</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_dvalue</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">=</span> <span class="mf">0.0</span>
</span><span id="L-270"><a href="#L-270"><span class="linenos"> 270</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_ddvalue</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">=</span> <span class="mf">0.0</span>
</span><span id="L-271"><a href="#L-271"><span class="linenos"> 271</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_windowsize</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">=</span> <span class="mi">0</span>
</span><span id="L-272"><a href="#L-272"><span class="linenos"> 272</span></a> <span class="k">continue</span>
</span><span id="L-273"><a href="#L-273"><span class="linenos"> 273</span></a>
</span><span id="L-274"><a href="#L-274"><span class="linenos"> 274</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_rho</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">=</span> <span class="n">e_gamma</span><span class="p">[</span><span class="n">e_name</span><span class="p">][:</span><span class="n">w_max</span><span class="p">]</span> <span class="o">/</span> <span class="n">e_gamma</span><span class="p">[</span><span class="n">e_name</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span>
</span><span id="L-275"><a href="#L-275"><span class="linenos"> 275</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_n_tauint</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">cumsum</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">concatenate</span><span class="p">(([</span><span class="mf">0.5</span><span class="p">],</span> <span class="bp">self</span><span class="o">.</span><span class="n">e_rho</span><span class="p">[</span><span class="n">e_name</span><span class="p">][</span><span class="mi">1</span><span class="p">:])))</span>
</span><span id="L-276"><a href="#L-276"><span class="linenos"> 276</span></a> <span class="c1"># Make sure no entry of tauint is smaller than 0.5</span>
</span><span id="L-277"><a href="#L-277"><span class="linenos"> 277</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_n_tauint</span><span class="p">[</span><span class="n">e_name</span><span class="p">][</span><span class="bp">self</span><span class="o">.</span><span class="n">e_n_tauint</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">&lt;=</span> <span class="mf">0.5</span><span class="p">]</span> <span class="o">=</span> <span class="mf">0.5</span> <span class="o">+</span> <span class="n">np</span><span class="o">.</span><span class="n">finfo</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">float64</span><span class="p">)</span><span class="o">.</span><span class="n">eps</span>
</span><span id="L-278"><a href="#L-278"><span class="linenos"> 278</span></a> <span class="c1"># hep-lat/0306017 eq. (42)</span>
</span><span id="L-279"><a href="#L-279"><span class="linenos"> 279</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_n_dtauint</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">e_n_tauint</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">*</span> <span class="mi">2</span> <span class="o">*</span> <span class="n">np</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">abs</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">arange</span><span class="p">(</span><span class="n">w_max</span><span class="p">)</span> <span class="o">+</span> <span class="mf">0.5</span> <span class="o">-</span> <span class="bp">self</span><span class="o">.</span><span class="n">e_n_tauint</span><span class="p">[</span><span class="n">e_name</span><span class="p">])</span> <span class="o">/</span> <span class="n">e_N</span><span class="p">)</span>
</span><span id="L-280"><a href="#L-280"><span class="linenos"> 280</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_n_dtauint</span><span class="p">[</span><span class="n">e_name</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="mf">0.0</span>
</span><span id="L-281"><a href="#L-281"><span class="linenos"> 281</span></a>
</span><span id="L-282"><a href="#L-282"><span class="linenos"> 282</span></a> <span class="k">def</span> <span class="nf">_compute_drho</span><span class="p">(</span><span class="n">i</span><span class="p">):</span>
</span><span id="L-283"><a href="#L-283"><span class="linenos"> 283</span></a> <span class="n">tmp</span> <span class="o">=</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">e_rho</span><span class="p">[</span><span class="n">e_name</span><span class="p">][</span><span class="n">i</span> <span class="o">+</span> <span class="mi">1</span><span class="p">:</span><span class="n">w_max</span><span class="p">]</span>
</span><span id="L-284"><a href="#L-284"><span class="linenos"> 284</span></a> <span class="o">+</span> <span class="n">np</span><span class="o">.</span><span class="n">concatenate</span><span class="p">([</span><span class="bp">self</span><span class="o">.</span><span class="n">e_rho</span><span class="p">[</span><span class="n">e_name</span><span class="p">][</span><span class="n">i</span> <span class="o">-</span> <span class="mi">1</span><span class="p">:</span><span class="kc">None</span> <span class="k">if</span> <span class="n">i</span> <span class="o">-</span> <span class="p">(</span><span class="n">w_max</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> <span class="o">//</span> <span class="mi">2</span> <span class="o">&lt;=</span> <span class="mi">0</span> <span class="k">else</span> <span class="p">(</span><span class="mi">2</span> <span class="o">*</span> <span class="n">i</span> <span class="o">-</span> <span class="p">(</span><span class="mi">2</span> <span class="o">*</span> <span class="n">w_max</span><span class="p">)</span> <span class="o">//</span> <span class="mi">2</span><span class="p">):</span><span class="o">-</span><span class="mi">1</span><span class="p">],</span>
</span><span id="L-285"><a href="#L-285"><span class="linenos"> 285</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_rho</span><span class="p">[</span><span class="n">e_name</span><span class="p">][</span><span class="mi">1</span><span class="p">:</span><span class="nb">max</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="n">w_max</span> <span class="o">-</span> <span class="mi">2</span> <span class="o">*</span> <span class="n">i</span><span class="p">)]])</span>
</span><span id="L-286"><a href="#L-286"><span class="linenos"> 286</span></a> <span class="o">-</span> <span class="mi">2</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">e_rho</span><span class="p">[</span><span class="n">e_name</span><span class="p">][</span><span class="n">i</span><span class="p">]</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">e_rho</span><span class="p">[</span><span class="n">e_name</span><span class="p">][</span><span class="mi">1</span><span class="p">:</span><span class="n">w_max</span> <span class="o">-</span> <span class="n">i</span><span class="p">])</span>
</span><span id="L-287"><a href="#L-287"><span class="linenos"> 287</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_drho</span><span class="p">[</span><span class="n">e_name</span><span class="p">][</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">sum</span><span class="p">(</span><span class="n">tmp</span> <span class="o">**</span> <span class="mi">2</span><span class="p">)</span> <span class="o">/</span> <span class="n">e_N</span><span class="p">)</span>
</span><span id="L-288"><a href="#L-288"><span class="linenos"> 288</span></a>
</span><span id="L-289"><a href="#L-289"><span class="linenos"> 289</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">tau_exp</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
</span><span id="L-290"><a href="#L-290"><span class="linenos"> 290</span></a> <span class="n">_compute_drho</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span>
</span><span id="L-291"><a href="#L-291"><span class="linenos"> 291</span></a> <span class="n">texp</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">tau_exp</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span>
</span><span id="L-292"><a href="#L-292"><span class="linenos"> 292</span></a> <span class="c1"># Critical slowing down analysis</span>
</span><span id="L-293"><a href="#L-293"><span class="linenos"> 293</span></a> <span class="k">if</span> <span class="n">w_max</span> <span class="o">//</span> <span class="mi">2</span> <span class="o">&lt;=</span> <span class="mi">1</span><span class="p">:</span>
</span><span id="L-294"><a href="#L-294"><span class="linenos"> 294</span></a> <span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s2">&quot;Need at least 8 samples for tau_exp error analysis&quot;</span><span class="p">)</span>
</span><span id="L-295"><a href="#L-295"><span class="linenos"> 295</span></a> <span class="k">for</span> <span class="n">n</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="n">w_max</span> <span class="o">//</span> <span class="mi">2</span><span class="p">):</span>
</span><span id="L-296"><a href="#L-296"><span class="linenos"> 296</span></a> <span class="n">_compute_drho</span><span class="p">(</span><span class="n">n</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span>
</span><span id="L-297"><a href="#L-297"><span class="linenos"> 297</span></a> <span class="k">if</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">e_rho</span><span class="p">[</span><span class="n">e_name</span><span class="p">][</span><span class="n">n</span><span class="p">]</span> <span class="o">-</span> <span class="bp">self</span><span class="o">.</span><span class="n">N_sigma</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">e_drho</span><span class="p">[</span><span class="n">e_name</span><span class="p">][</span><span class="n">n</span><span class="p">])</span> <span class="o">&lt;</span> <span class="mi">0</span> <span class="ow">or</span> <span class="n">n</span> <span class="o">&gt;=</span> <span class="n">w_max</span> <span class="o">//</span> <span class="mi">2</span> <span class="o">-</span> <span class="mi">2</span><span class="p">:</span>
</span><span id="L-298"><a href="#L-298"><span class="linenos"> 298</span></a> <span class="c1"># Bias correction hep-lat/0306017 eq. (49) included</span>
</span><span id="L-299"><a href="#L-299"><span class="linenos"> 299</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_tauint</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">e_n_tauint</span><span class="p">[</span><span class="n">e_name</span><span class="p">][</span><span class="n">n</span><span class="p">]</span> <span class="o">*</span> <span class="p">(</span><span class="mi">1</span> <span class="o">+</span> <span class="p">(</span><span class="mi">2</span> <span class="o">*</span> <span class="n">n</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span> <span class="o">/</span> <span class="n">e_N</span><span class="p">)</span> <span class="o">/</span> <span class="p">(</span><span class="mi">1</span> <span class="o">+</span> <span class="mi">1</span> <span class="o">/</span> <span class="n">e_N</span><span class="p">)</span> <span class="o">+</span> <span class="n">texp</span> <span class="o">*</span> <span class="n">np</span><span class="o">.</span><span class="n">abs</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">e_rho</span><span class="p">[</span><span class="n">e_name</span><span class="p">][</span><span class="n">n</span> <span class="o">+</span> <span class="mi">1</span><span class="p">])</span> <span class="c1"># The absolute makes sure, that the tail contribution is always positive</span>
</span><span id="L-300"><a href="#L-300"><span class="linenos"> 300</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_dtauint</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">e_n_dtauint</span><span class="p">[</span><span class="n">e_name</span><span class="p">][</span><span class="n">n</span><span class="p">]</span> <span class="o">**</span> <span class="mi">2</span> <span class="o">+</span> <span class="n">texp</span> <span class="o">**</span> <span class="mi">2</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">e_drho</span><span class="p">[</span><span class="n">e_name</span><span class="p">][</span><span class="n">n</span> <span class="o">+</span> <span class="mi">1</span><span class="p">]</span> <span class="o">**</span> <span class="mi">2</span><span class="p">)</span>
</span><span id="L-301"><a href="#L-301"><span class="linenos"> 301</span></a> <span class="c1"># Error of tau_exp neglected so far, missing term: self.e_rho[e_name][n + 1] ** 2 * d_tau_exp ** 2</span>
</span><span id="L-302"><a href="#L-302"><span class="linenos"> 302</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_dvalue</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="mi">2</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">e_tauint</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">*</span> <span class="n">e_gamma</span><span class="p">[</span><span class="n">e_name</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span> <span class="o">*</span> <span class="p">(</span><span class="mi">1</span> <span class="o">+</span> <span class="mi">1</span> <span class="o">/</span> <span class="n">e_N</span><span class="p">)</span> <span class="o">/</span> <span class="n">e_N</span><span class="p">)</span>
</span><span id="L-303"><a href="#L-303"><span class="linenos"> 303</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_ddvalue</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">e_dvalue</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">*</span> <span class="n">np</span><span class="o">.</span><span class="n">sqrt</span><span class="p">((</span><span class="n">n</span> <span class="o">+</span> <span class="mf">0.5</span><span class="p">)</span> <span class="o">/</span> <span class="n">e_N</span><span class="p">)</span>
</span><span id="L-304"><a href="#L-304"><span class="linenos"> 304</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_windowsize</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">=</span> <span class="n">n</span>
</span><span id="L-305"><a href="#L-305"><span class="linenos"> 305</span></a> <span class="k">break</span>
</span><span id="L-306"><a href="#L-306"><span class="linenos"> 306</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="L-307"><a href="#L-307"><span class="linenos"> 307</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">S</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">==</span> <span class="mf">0.0</span><span class="p">:</span>
</span><span id="L-308"><a href="#L-308"><span class="linenos"> 308</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_tauint</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">=</span> <span class="mf">0.5</span>
</span><span id="L-309"><a href="#L-309"><span class="linenos"> 309</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_dtauint</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">=</span> <span class="mf">0.0</span>
</span><span id="L-310"><a href="#L-310"><span class="linenos"> 310</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_dvalue</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="n">e_gamma</span><span class="p">[</span><span class="n">e_name</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span> <span class="o">/</span> <span class="p">(</span><span class="n">e_N</span> <span class="o">-</span> <span class="mi">1</span><span class="p">))</span>
</span><span id="L-311"><a href="#L-311"><span class="linenos"> 311</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_ddvalue</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">e_dvalue</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">*</span> <span class="n">np</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="mf">0.5</span> <span class="o">/</span> <span class="n">e_N</span><span class="p">)</span>
</span><span id="L-312"><a href="#L-312"><span class="linenos"> 312</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_windowsize</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">=</span> <span class="mi">0</span>
</span><span id="L-313"><a href="#L-313"><span class="linenos"> 313</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="L-314"><a href="#L-314"><span class="linenos"> 314</span></a> <span class="c1"># Standard automatic windowing procedure</span>
</span><span id="L-315"><a href="#L-315"><span class="linenos"> 315</span></a> <span class="n">tau</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">S</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">/</span> <span class="n">np</span><span class="o">.</span><span class="n">log</span><span class="p">((</span><span class="mi">2</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">e_n_tauint</span><span class="p">[</span><span class="n">e_name</span><span class="p">][</span><span class="mi">1</span><span class="p">:]</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span> <span class="o">/</span> <span class="p">(</span><span class="mi">2</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">e_n_tauint</span><span class="p">[</span><span class="n">e_name</span><span class="p">][</span><span class="mi">1</span><span class="p">:]</span> <span class="o">-</span> <span class="mi">1</span><span class="p">))</span>
</span><span id="L-316"><a href="#L-316"><span class="linenos"> 316</span></a> <span class="n">g_w</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">exp</span><span class="p">(</span><span class="o">-</span> <span class="n">np</span><span class="o">.</span><span class="n">arange</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">tau</span><span class="p">)</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span> <span class="o">/</span> <span class="n">tau</span><span class="p">)</span> <span class="o">-</span> <span class="n">tau</span> <span class="o">/</span> <span class="n">np</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">arange</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">tau</span><span class="p">)</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span> <span class="o">*</span> <span class="n">e_N</span><span class="p">)</span>
</span><span id="L-317"><a href="#L-317"><span class="linenos"> 317</span></a> <span class="k">for</span> <span class="n">n</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="n">w_max</span><span class="p">):</span>
</span><span id="L-318"><a href="#L-318"><span class="linenos"> 318</span></a> <span class="k">if</span> <span class="n">g_w</span><span class="p">[</span><span class="n">n</span> <span class="o">-</span> <span class="mi">1</span><span class="p">]</span> <span class="o">&lt;</span> <span class="mi">0</span> <span class="ow">or</span> <span class="n">n</span> <span class="o">&gt;=</span> <span class="n">w_max</span> <span class="o">-</span> <span class="mi">1</span><span class="p">:</span>
</span><span id="L-319"><a href="#L-319"><span class="linenos"> 319</span></a> <span class="n">_compute_drho</span><span class="p">(</span><span class="n">n</span><span class="p">)</span>
</span><span id="L-320"><a href="#L-320"><span class="linenos"> 320</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_tauint</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">e_n_tauint</span><span class="p">[</span><span class="n">e_name</span><span class="p">][</span><span class="n">n</span><span class="p">]</span> <span class="o">*</span> <span class="p">(</span><span class="mi">1</span> <span class="o">+</span> <span class="p">(</span><span class="mi">2</span> <span class="o">*</span> <span class="n">n</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span> <span class="o">/</span> <span class="n">e_N</span><span class="p">)</span> <span class="o">/</span> <span class="p">(</span><span class="mi">1</span> <span class="o">+</span> <span class="mi">1</span> <span class="o">/</span> <span class="n">e_N</span><span class="p">)</span> <span class="c1"># Bias correction hep-lat/0306017 eq. (49)</span>
</span><span id="L-321"><a href="#L-321"><span class="linenos"> 321</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_dtauint</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">e_n_dtauint</span><span class="p">[</span><span class="n">e_name</span><span class="p">][</span><span class="n">n</span><span class="p">]</span>
</span><span id="L-322"><a href="#L-322"><span class="linenos"> 322</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_dvalue</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="mi">2</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">e_tauint</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">*</span> <span class="n">e_gamma</span><span class="p">[</span><span class="n">e_name</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span> <span class="o">*</span> <span class="p">(</span><span class="mi">1</span> <span class="o">+</span> <span class="mi">1</span> <span class="o">/</span> <span class="n">e_N</span><span class="p">)</span> <span class="o">/</span> <span class="n">e_N</span><span class="p">)</span>
</span><span id="L-323"><a href="#L-323"><span class="linenos"> 323</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_ddvalue</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">e_dvalue</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">*</span> <span class="n">np</span><span class="o">.</span><span class="n">sqrt</span><span class="p">((</span><span class="n">n</span> <span class="o">+</span> <span class="mf">0.5</span><span class="p">)</span> <span class="o">/</span> <span class="n">e_N</span><span class="p">)</span>
</span><span id="L-324"><a href="#L-324"><span class="linenos"> 324</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_windowsize</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">=</span> <span class="n">n</span>
</span><span id="L-325"><a href="#L-325"><span class="linenos"> 325</span></a> <span class="k">break</span>
</span><span id="L-326"><a href="#L-326"><span class="linenos"> 326</span></a>
</span><span id="L-327"><a href="#L-327"><span class="linenos"> 327</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_dvalue</span> <span class="o">+=</span> <span class="bp">self</span><span class="o">.</span><span class="n">e_dvalue</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">**</span> <span class="mi">2</span>
</span><span id="L-328"><a href="#L-328"><span class="linenos"> 328</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">ddvalue</span> <span class="o">+=</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">e_dvalue</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">e_ddvalue</span><span class="p">[</span><span class="n">e_name</span><span class="p">])</span> <span class="o">**</span> <span class="mi">2</span>
</span><span id="L-329"><a href="#L-329"><span class="linenos"> 329</span></a>
</span><span id="L-330"><a href="#L-330"><span class="linenos"> 330</span></a> <span class="k">for</span> <span class="n">e_name</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">cov_names</span><span class="p">:</span>
</span><span id="L-331"><a href="#L-331"><span class="linenos"> 331</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_dvalue</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">covobs</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span><span class="o">.</span><span class="n">errsq</span><span class="p">())</span>
</span><span id="L-332"><a href="#L-332"><span class="linenos"> 332</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_ddvalue</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">=</span> <span class="mi">0</span>
</span><span id="L-333"><a href="#L-333"><span class="linenos"> 333</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_dvalue</span> <span class="o">+=</span> <span class="bp">self</span><span class="o">.</span><span class="n">e_dvalue</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span><span class="o">**</span><span class="mi">2</span>
</span><span id="L-334"><a href="#L-334"><span class="linenos"> 334</span></a>
</span><span id="L-335"><a href="#L-335"><span class="linenos"> 335</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_dvalue</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_dvalue</span><span class="p">)</span>
</span><span id="L-336"><a href="#L-336"><span class="linenos"> 336</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_dvalue</span> <span class="o">==</span> <span class="mf">0.0</span><span class="p">:</span>
</span><span id="L-337"><a href="#L-337"><span class="linenos"> 337</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">ddvalue</span> <span class="o">=</span> <span class="mf">0.0</span>
</span><span id="L-338"><a href="#L-338"><span class="linenos"> 338</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="L-339"><a href="#L-339"><span class="linenos"> 339</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">ddvalue</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ddvalue</span><span class="p">)</span> <span class="o">/</span> <span class="bp">self</span><span class="o">.</span><span class="n">_dvalue</span>
</span><span id="L-340"><a href="#L-340"><span class="linenos"> 340</span></a> <span class="k">return</span>
</span><span id="L-341"><a href="#L-341"><span class="linenos"> 341</span></a>
</span><span id="L-342"><a href="#L-342"><span class="linenos"> 342</span></a> <span class="n">gm</span> <span class="o">=</span> <span class="n">gamma_method</span>
</span><span id="L-343"><a href="#L-343"><span class="linenos"> 343</span></a>
</span><span id="L-344"><a href="#L-344"><span class="linenos"> 344</span></a> <span class="k">def</span> <span class="nf">_calc_gamma</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">deltas</span><span class="p">,</span> <span class="n">idx</span><span class="p">,</span> <span class="n">shape</span><span class="p">,</span> <span class="n">w_max</span><span class="p">,</span> <span class="n">fft</span><span class="p">,</span> <span class="n">gapsize</span><span class="p">):</span>
</span><span id="L-345"><a href="#L-345"><span class="linenos"> 345</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Calculate Gamma_{AA} from the deltas, which are defined on idx.</span>
</span><span id="L-346"><a href="#L-346"><span class="linenos"> 346</span></a><span class="sd"> idx is assumed to be a contiguous range (possibly with a stepsize != 1)</span>
</span><span id="L-347"><a href="#L-347"><span class="linenos"> 347</span></a>
</span><span id="L-348"><a href="#L-348"><span class="linenos"> 348</span></a><span class="sd"> Parameters</span>
</span><span id="L-349"><a href="#L-349"><span class="linenos"> 349</span></a><span class="sd"> ----------</span>
</span><span id="L-350"><a href="#L-350"><span class="linenos"> 350</span></a><span class="sd"> deltas : list</span>
</span><span id="L-351"><a href="#L-351"><span class="linenos"> 351</span></a><span class="sd"> List of fluctuations</span>
</span><span id="L-352"><a href="#L-352"><span class="linenos"> 352</span></a><span class="sd"> idx : list</span>
</span><span id="L-353"><a href="#L-353"><span class="linenos"> 353</span></a><span class="sd"> List or range of configurations on which the deltas are defined.</span>
</span><span id="L-354"><a href="#L-354"><span class="linenos"> 354</span></a><span class="sd"> shape : int</span>
</span><span id="L-355"><a href="#L-355"><span class="linenos"> 355</span></a><span class="sd"> Number of configurations in idx.</span>
</span><span id="L-356"><a href="#L-356"><span class="linenos"> 356</span></a><span class="sd"> w_max : int</span>
</span><span id="L-357"><a href="#L-357"><span class="linenos"> 357</span></a><span class="sd"> Upper bound for the summation window.</span>
</span><span id="L-358"><a href="#L-358"><span class="linenos"> 358</span></a><span class="sd"> fft : bool</span>
</span><span id="L-359"><a href="#L-359"><span class="linenos"> 359</span></a><span class="sd"> determines whether the fft algorithm is used for the computation</span>
</span><span id="L-360"><a href="#L-360"><span class="linenos"> 360</span></a><span class="sd"> of the autocorrelation function.</span>
</span><span id="L-361"><a href="#L-361"><span class="linenos"> 361</span></a><span class="sd"> gapsize : int</span>
</span><span id="L-362"><a href="#L-362"><span class="linenos"> 362</span></a><span class="sd"> The target distance between two configurations. If longer distances</span>
</span><span id="L-363"><a href="#L-363"><span class="linenos"> 363</span></a><span class="sd"> are found in idx, the data is expanded.</span>
</span><span id="L-364"><a href="#L-364"><span class="linenos"> 364</span></a><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="L-365"><a href="#L-365"><span class="linenos"> 365</span></a> <span class="n">gamma</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">zeros</span><span class="p">(</span><span class="n">w_max</span><span class="p">)</span>
</span><span id="L-366"><a href="#L-366"><span class="linenos"> 366</span></a> <span class="n">deltas</span> <span class="o">=</span> <span class="n">_expand_deltas</span><span class="p">(</span><span class="n">deltas</span><span class="p">,</span> <span class="n">idx</span><span class="p">,</span> <span class="n">shape</span><span class="p">,</span> <span class="n">gapsize</span><span class="p">)</span>
</span><span id="L-367"><a href="#L-367"><span class="linenos"> 367</span></a> <span class="n">new_shape</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">deltas</span><span class="p">)</span>
</span><span id="L-368"><a href="#L-368"><span class="linenos"> 368</span></a> <span class="k">if</span> <span class="n">fft</span><span class="p">:</span>
</span><span id="L-369"><a href="#L-369"><span class="linenos"> 369</span></a> <span class="n">max_gamma</span> <span class="o">=</span> <span class="nb">min</span><span class="p">(</span><span class="n">new_shape</span><span class="p">,</span> <span class="n">w_max</span><span class="p">)</span>
</span><span id="L-370"><a href="#L-370"><span class="linenos"> 370</span></a> <span class="c1"># The padding for the fft has to be even</span>
</span><span id="L-371"><a href="#L-371"><span class="linenos"> 371</span></a> <span class="n">padding</span> <span class="o">=</span> <span class="n">new_shape</span> <span class="o">+</span> <span class="n">max_gamma</span> <span class="o">+</span> <span class="p">(</span><span class="n">new_shape</span> <span class="o">+</span> <span class="n">max_gamma</span><span class="p">)</span> <span class="o">%</span> <span class="mi">2</span>
</span><span id="L-372"><a href="#L-372"><span class="linenos"> 372</span></a> <span class="n">gamma</span><span class="p">[:</span><span class="n">max_gamma</span><span class="p">]</span> <span class="o">+=</span> <span class="n">np</span><span class="o">.</span><span class="n">fft</span><span class="o">.</span><span class="n">irfft</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">abs</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">fft</span><span class="o">.</span><span class="n">rfft</span><span class="p">(</span><span class="n">deltas</span><span class="p">,</span> <span class="n">padding</span><span class="p">))</span> <span class="o">**</span> <span class="mi">2</span><span class="p">)[:</span><span class="n">max_gamma</span><span class="p">]</span>
</span><span id="L-373"><a href="#L-373"><span class="linenos"> 373</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="L-374"><a href="#L-374"><span class="linenos"> 374</span></a> <span class="k">for</span> <span class="n">n</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">w_max</span><span class="p">):</span>
</span><span id="L-375"><a href="#L-375"><span class="linenos"> 375</span></a> <span class="k">if</span> <span class="n">new_shape</span> <span class="o">-</span> <span class="n">n</span> <span class="o">&gt;=</span> <span class="mi">0</span><span class="p">:</span>
</span><span id="L-376"><a href="#L-376"><span class="linenos"> 376</span></a> <span class="n">gamma</span><span class="p">[</span><span class="n">n</span><span class="p">]</span> <span class="o">+=</span> <span class="n">deltas</span><span class="p">[</span><span class="mi">0</span><span class="p">:</span><span class="n">new_shape</span> <span class="o">-</span> <span class="n">n</span><span class="p">]</span><span class="o">.</span><span class="n">dot</span><span class="p">(</span><span class="n">deltas</span><span class="p">[</span><span class="n">n</span><span class="p">:</span><span class="n">new_shape</span><span class="p">])</span>
</span><span id="L-377"><a href="#L-377"><span class="linenos"> 377</span></a>
</span><span id="L-378"><a href="#L-378"><span class="linenos"> 378</span></a> <span class="k">return</span> <span class="n">gamma</span>
</span><span id="L-379"><a href="#L-379"><span class="linenos"> 379</span></a>
</span><span id="L-380"><a href="#L-380"><span class="linenos"> 380</span></a> <span class="k">def</span> <span class="nf">details</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">ens_content</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
</span><span id="L-381"><a href="#L-381"><span class="linenos"> 381</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Output detailed properties of the Obs.</span>
</span><span id="L-382"><a href="#L-382"><span class="linenos"> 382</span></a>
</span><span id="L-383"><a href="#L-383"><span class="linenos"> 383</span></a><span class="sd"> Parameters</span>
</span><span id="L-384"><a href="#L-384"><span class="linenos"> 384</span></a><span class="sd"> ----------</span>
</span><span id="L-385"><a href="#L-385"><span class="linenos"> 385</span></a><span class="sd"> ens_content : bool</span>
</span><span id="L-386"><a href="#L-386"><span class="linenos"> 386</span></a><span class="sd"> print details about the ensembles and replica if true.</span>
</span><span id="L-387"><a href="#L-387"><span class="linenos"> 387</span></a><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="L-388"><a href="#L-388"><span class="linenos"> 388</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">tag</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
</span><span id="L-389"><a href="#L-389"><span class="linenos"> 389</span></a> <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;Description:&quot;</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
</span><span id="L-390"><a href="#L-390"><span class="linenos"> 390</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">hasattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s1">&#39;e_dvalue&#39;</span><span class="p">):</span>
</span><span id="L-391"><a href="#L-391"><span class="linenos"> 391</span></a> <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;Result</span><span class="se">\t</span><span class="s1"> </span><span class="si">%3.8e</span><span class="s1">&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">value</span><span class="p">))</span>
</span><span id="L-392"><a href="#L-392"><span class="linenos"> 392</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="L-393"><a href="#L-393"><span class="linenos"> 393</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">value</span> <span class="o">==</span> <span class="mf">0.0</span><span class="p">:</span>
</span><span id="L-394"><a href="#L-394"><span class="linenos"> 394</span></a> <span class="n">percentage</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">nan</span>
</span><span id="L-395"><a href="#L-395"><span class="linenos"> 395</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="L-396"><a href="#L-396"><span class="linenos"> 396</span></a> <span class="n">percentage</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">abs</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_dvalue</span> <span class="o">/</span> <span class="bp">self</span><span class="o">.</span><span class="n">value</span><span class="p">)</span> <span class="o">*</span> <span class="mi">100</span>
</span><span id="L-397"><a href="#L-397"><span class="linenos"> 397</span></a> <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;Result</span><span class="se">\t</span><span class="s1"> </span><span class="si">%3.8e</span><span class="s1"> +/- </span><span class="si">%3.8e</span><span class="s1"> +/- </span><span class="si">%3.8e</span><span class="s1"> (</span><span class="si">%3.3f%%</span><span class="s1">)&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">value</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_dvalue</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">ddvalue</span><span class="p">,</span> <span class="n">percentage</span><span class="p">))</span>
</span><span id="L-398"><a href="#L-398"><span class="linenos"> 398</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">e_names</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">1</span><span class="p">:</span>
</span><span id="L-399"><a href="#L-399"><span class="linenos"> 399</span></a> <span class="nb">print</span><span class="p">(</span><span class="s1">&#39; Ensemble errors:&#39;</span><span class="p">)</span>
</span><span id="L-400"><a href="#L-400"><span class="linenos"> 400</span></a> <span class="n">e_content</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">e_content</span>
</span><span id="L-401"><a href="#L-401"><span class="linenos"> 401</span></a> <span class="k">for</span> <span class="n">e_name</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">mc_names</span><span class="p">:</span>
</span><span id="L-402"><a href="#L-402"><span class="linenos"> 402</span></a> <span class="n">gap</span> <span class="o">=</span> <span class="n">_determine_gap</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">e_content</span><span class="p">,</span> <span class="n">e_name</span><span class="p">)</span>
</span><span id="L-403"><a href="#L-403"><span class="linenos"> 403</span></a>
</span><span id="L-404"><a href="#L-404"><span class="linenos"> 404</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">e_names</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">1</span><span class="p">:</span>
</span><span id="L-405"><a href="#L-405"><span class="linenos"> 405</span></a> <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;&#39;</span><span class="p">,</span> <span class="n">e_name</span><span class="p">,</span> <span class="s1">&#39;</span><span class="se">\t</span><span class="s1"> </span><span class="si">%3.6e</span><span class="s1"> +/- </span><span class="si">%3.6e</span><span class="s1">&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">e_dvalue</span><span class="p">[</span><span class="n">e_name</span><span class="p">],</span> <span class="bp">self</span><span class="o">.</span><span class="n">e_ddvalue</span><span class="p">[</span><span class="n">e_name</span><span class="p">]))</span>
</span><span id="L-406"><a href="#L-406"><span class="linenos"> 406</span></a> <span class="n">tau_string</span> <span class="o">=</span> <span class="s2">&quot; </span><span class="se">\N{GREEK SMALL LETTER TAU}</span><span class="s2">_int</span><span class="se">\t</span><span class="s2"> &quot;</span> <span class="o">+</span> <span class="n">_format_uncertainty</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">e_tauint</span><span class="p">[</span><span class="n">e_name</span><span class="p">],</span> <span class="bp">self</span><span class="o">.</span><span class="n">e_dtauint</span><span class="p">[</span><span class="n">e_name</span><span class="p">])</span>
</span><span id="L-407"><a href="#L-407"><span class="linenos"> 407</span></a> <span class="n">tau_string</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">&quot; in units of </span><span class="si">{</span><span class="n">gap</span><span class="si">}</span><span class="s2"> config&quot;</span>
</span><span id="L-408"><a href="#L-408"><span class="linenos"> 408</span></a> <span class="k">if</span> <span class="n">gap</span> <span class="o">&gt;</span> <span class="mi">1</span><span class="p">:</span>
</span><span id="L-409"><a href="#L-409"><span class="linenos"> 409</span></a> <span class="n">tau_string</span> <span class="o">+=</span> <span class="s2">&quot;s&quot;</span>
</span><span id="L-410"><a href="#L-410"><span class="linenos"> 410</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">tau_exp</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
</span><span id="L-411"><a href="#L-411"><span class="linenos"> 411</span></a> <span class="n">tau_string</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">tau_string</span><span class="si">:</span><span class="s2"> &lt;45</span><span class="si">}</span><span class="s2">&quot;</span> <span class="o">+</span> <span class="s1">&#39;</span><span class="se">\t</span><span class="s1">(</span><span class="se">\N{GREEK SMALL LETTER TAU}</span><span class="s1">_exp=</span><span class="si">%3.2f</span><span class="s1">, N_</span><span class="se">\N{GREEK SMALL LETTER SIGMA}</span><span class="s1">=</span><span class="si">%1.0i</span><span class="s1">)&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">tau_exp</span><span class="p">[</span><span class="n">e_name</span><span class="p">],</span> <span class="bp">self</span><span class="o">.</span><span class="n">N_sigma</span><span class="p">[</span><span class="n">e_name</span><span class="p">])</span>
</span><span id="L-412"><a href="#L-412"><span class="linenos"> 412</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="L-413"><a href="#L-413"><span class="linenos"> 413</span></a> <span class="n">tau_string</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">tau_string</span><span class="si">:</span><span class="s2"> &lt;45</span><span class="si">}</span><span class="s2">&quot;</span> <span class="o">+</span> <span class="s1">&#39;</span><span class="se">\t</span><span class="s1">(S=</span><span class="si">%3.2f</span><span class="s1">)&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">S</span><span class="p">[</span><span class="n">e_name</span><span class="p">])</span>
</span><span id="L-414"><a href="#L-414"><span class="linenos"> 414</span></a> <span class="nb">print</span><span class="p">(</span><span class="n">tau_string</span><span class="p">)</span>
</span><span id="L-415"><a href="#L-415"><span class="linenos"> 415</span></a> <span class="k">for</span> <span class="n">e_name</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">cov_names</span><span class="p">:</span>
</span><span id="L-416"><a href="#L-416"><span class="linenos"> 416</span></a> <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;&#39;</span><span class="p">,</span> <span class="n">e_name</span><span class="p">,</span> <span class="s1">&#39;</span><span class="se">\t</span><span class="s1"> </span><span class="si">%3.8e</span><span class="s1">&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">e_dvalue</span><span class="p">[</span><span class="n">e_name</span><span class="p">]))</span>
</span><span id="L-417"><a href="#L-417"><span class="linenos"> 417</span></a> <span class="k">if</span> <span class="n">ens_content</span> <span class="ow">is</span> <span class="kc">True</span><span class="p">:</span>
</span><span id="L-418"><a href="#L-418"><span class="linenos"> 418</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">e_names</span><span class="p">)</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span>
</span><span id="L-419"><a href="#L-419"><span class="linenos"> 419</span></a> <span class="nb">print</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">N</span><span class="p">,</span> <span class="s1">&#39;samples in&#39;</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">e_names</span><span class="p">),</span> <span class="s1">&#39;ensemble:&#39;</span><span class="p">)</span>
</span><span id="L-420"><a href="#L-420"><span class="linenos"> 420</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="L-421"><a href="#L-421"><span class="linenos"> 421</span></a> <span class="nb">print</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">N</span><span class="p">,</span> <span class="s1">&#39;samples in&#39;</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">e_names</span><span class="p">),</span> <span class="s1">&#39;ensembles:&#39;</span><span class="p">)</span>
</span><span id="L-422"><a href="#L-422"><span class="linenos"> 422</span></a> <span class="n">my_string_list</span> <span class="o">=</span> <span class="p">[]</span>
</span><span id="L-423"><a href="#L-423"><span class="linenos"> 423</span></a> <span class="k">for</span> <span class="n">key</span><span class="p">,</span> <span class="n">value</span> <span class="ow">in</span> <span class="nb">sorted</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">e_content</span><span class="o">.</span><span class="n">items</span><span class="p">()):</span>
</span><span id="L-424"><a href="#L-424"><span class="linenos"> 424</span></a> <span class="k">if</span> <span class="n">key</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">covobs</span><span class="p">:</span>
</span><span id="L-425"><a href="#L-425"><span class="linenos"> 425</span></a> <span class="n">my_string</span> <span class="o">=</span> <span class="s1">&#39; &#39;</span> <span class="o">+</span> <span class="s2">&quot;</span><span class="se">\u00B7</span><span class="s2"> Ensemble &#39;&quot;</span> <span class="o">+</span> <span class="n">key</span> <span class="o">+</span> <span class="s2">&quot;&#39; &quot;</span>
</span><span id="L-426"><a href="#L-426"><span class="linenos"> 426</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">value</span><span class="p">)</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span>
</span><span id="L-427"><a href="#L-427"><span class="linenos"> 427</span></a> <span class="n">my_string</span> <span class="o">+=</span> <span class="sa">f</span><span class="s1">&#39;: </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="n">value</span><span class="p">[</span><span class="mi">0</span><span class="p">]]</span><span class="si">}</span><span class="s1"> configurations&#39;</span>
</span><span id="L-428"><a href="#L-428"><span class="linenos"> 428</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">idl</span><span class="p">[</span><span class="n">value</span><span class="p">[</span><span class="mi">0</span><span class="p">]],</span> <span class="nb">range</span><span class="p">):</span>
</span><span id="L-429"><a href="#L-429"><span class="linenos"> 429</span></a> <span class="n">my_string</span> <span class="o">+=</span> <span class="sa">f</span><span class="s1">&#39; (from </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">idl</span><span class="p">[</span><span class="n">value</span><span class="p">[</span><span class="mi">0</span><span class="p">]]</span><span class="o">.</span><span class="n">start</span><span class="si">}</span><span class="s1"> to </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">idl</span><span class="p">[</span><span class="n">value</span><span class="p">[</span><span class="mi">0</span><span class="p">]][</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span><span class="si">}</span><span class="s1">&#39;</span> <span class="o">+</span> <span class="nb">int</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">idl</span><span class="p">[</span><span class="n">value</span><span class="p">[</span><span class="mi">0</span><span class="p">]]</span><span class="o">.</span><span class="n">step</span> <span class="o">!=</span> <span class="mi">1</span><span class="p">)</span> <span class="o">*</span> <span class="sa">f</span><span class="s1">&#39; in steps of </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">idl</span><span class="p">[</span><span class="n">value</span><span class="p">[</span><span class="mi">0</span><span class="p">]]</span><span class="o">.</span><span class="n">step</span><span class="si">}</span><span class="s1">&#39;</span> <span class="o">+</span> <span class="s1">&#39;)&#39;</span>
</span><span id="L-430"><a href="#L-430"><span class="linenos"> 430</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="L-431"><a href="#L-431"><span class="linenos"> 431</span></a> <span class="n">my_string</span> <span class="o">+=</span> <span class="sa">f</span><span class="s1">&#39; (irregular range from </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">idl</span><span class="p">[</span><span class="n">value</span><span class="p">[</span><span class="mi">0</span><span class="p">]][</span><span class="mi">0</span><span class="p">]</span><span class="si">}</span><span class="s1"> to </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">idl</span><span class="p">[</span><span class="n">value</span><span class="p">[</span><span class="mi">0</span><span class="p">]][</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span><span class="si">}</span><span class="s1">)&#39;</span>
</span><span id="L-432"><a href="#L-432"><span class="linenos"> 432</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="L-433"><a href="#L-433"><span class="linenos"> 433</span></a> <span class="n">sublist</span> <span class="o">=</span> <span class="p">[]</span>
</span><span id="L-434"><a href="#L-434"><span class="linenos"> 434</span></a> <span class="k">for</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">value</span><span class="p">:</span>
</span><span id="L-435"><a href="#L-435"><span class="linenos"> 435</span></a> <span class="n">my_substring</span> <span class="o">=</span> <span class="s1">&#39; &#39;</span> <span class="o">+</span> <span class="s2">&quot;</span><span class="se">\u00B7</span><span class="s2"> Replicum &#39;&quot;</span> <span class="o">+</span> <span class="n">v</span><span class="p">[</span><span class="nb">len</span><span class="p">(</span><span class="n">key</span><span class="p">)</span> <span class="o">+</span> <span class="mi">1</span><span class="p">:]</span> <span class="o">+</span> <span class="s2">&quot;&#39; &quot;</span>
</span><span id="L-436"><a href="#L-436"><span class="linenos"> 436</span></a> <span class="n">my_substring</span> <span class="o">+=</span> <span class="sa">f</span><span class="s1">&#39;: </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="n">v</span><span class="p">]</span><span class="si">}</span><span class="s1"> configurations&#39;</span>
</span><span id="L-437"><a href="#L-437"><span class="linenos"> 437</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">idl</span><span class="p">[</span><span class="n">v</span><span class="p">],</span> <span class="nb">range</span><span class="p">):</span>
</span><span id="L-438"><a href="#L-438"><span class="linenos"> 438</span></a> <span class="n">my_substring</span> <span class="o">+=</span> <span class="sa">f</span><span class="s1">&#39; (from </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">idl</span><span class="p">[</span><span class="n">v</span><span class="p">]</span><span class="o">.</span><span class="n">start</span><span class="si">}</span><span class="s1"> to </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">idl</span><span class="p">[</span><span class="n">v</span><span class="p">][</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span><span class="si">}</span><span class="s1">&#39;</span> <span class="o">+</span> <span class="nb">int</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">idl</span><span class="p">[</span><span class="n">v</span><span class="p">]</span><span class="o">.</span><span class="n">step</span> <span class="o">!=</span> <span class="mi">1</span><span class="p">)</span> <span class="o">*</span> <span class="sa">f</span><span class="s1">&#39; in steps of </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">idl</span><span class="p">[</span><span class="n">v</span><span class="p">]</span><span class="o">.</span><span class="n">step</span><span class="si">}</span><span class="s1">&#39;</span> <span class="o">+</span> <span class="s1">&#39;)&#39;</span>
</span><span id="L-439"><a href="#L-439"><span class="linenos"> 439</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="L-440"><a href="#L-440"><span class="linenos"> 440</span></a> <span class="n">my_substring</span> <span class="o">+=</span> <span class="sa">f</span><span class="s1">&#39; (irregular range from </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">idl</span><span class="p">[</span><span class="n">v</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span><span class="si">}</span><span class="s1"> to </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">idl</span><span class="p">[</span><span class="n">v</span><span class="p">][</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span><span class="si">}</span><span class="s1">)&#39;</span>
</span><span id="L-441"><a href="#L-441"><span class="linenos"> 441</span></a> <span class="n">sublist</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">my_substring</span><span class="p">)</span>
</span><span id="L-442"><a href="#L-442"><span class="linenos"> 442</span></a>
</span><span id="L-443"><a href="#L-443"><span class="linenos"> 443</span></a> <span class="n">my_string</span> <span class="o">+=</span> <span class="s1">&#39;</span><span class="se">\n</span><span class="s1">&#39;</span> <span class="o">+</span> <span class="s1">&#39;</span><span class="se">\n</span><span class="s1">&#39;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">sublist</span><span class="p">)</span>
</span><span id="L-444"><a href="#L-444"><span class="linenos"> 444</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="L-445"><a href="#L-445"><span class="linenos"> 445</span></a> <span class="n">my_string</span> <span class="o">=</span> <span class="s1">&#39; &#39;</span> <span class="o">+</span> <span class="s2">&quot;</span><span class="se">\u00B7</span><span class="s2"> Covobs &#39;&quot;</span> <span class="o">+</span> <span class="n">key</span> <span class="o">+</span> <span class="s2">&quot;&#39; &quot;</span>
</span><span id="L-446"><a href="#L-446"><span class="linenos"> 446</span></a> <span class="n">my_string_list</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">my_string</span><span class="p">)</span>
</span><span id="L-447"><a href="#L-447"><span class="linenos"> 447</span></a> <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">&#39;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">my_string_list</span><span class="p">))</span>
</span><span id="L-448"><a href="#L-448"><span class="linenos"> 448</span></a>
</span><span id="L-449"><a href="#L-449"><span class="linenos"> 449</span></a> <span class="k">def</span> <span class="nf">reweight</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">weight</span><span class="p">):</span>
</span><span id="L-450"><a href="#L-450"><span class="linenos"> 450</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Reweight the obs with given rewighting factors.</span>
</span><span id="L-451"><a href="#L-451"><span class="linenos"> 451</span></a>
</span><span id="L-452"><a href="#L-452"><span class="linenos"> 452</span></a><span class="sd"> Parameters</span>
</span><span id="L-453"><a href="#L-453"><span class="linenos"> 453</span></a><span class="sd"> ----------</span>
</span><span id="L-454"><a href="#L-454"><span class="linenos"> 454</span></a><span class="sd"> weight : Obs</span>
</span><span id="L-455"><a href="#L-455"><span class="linenos"> 455</span></a><span class="sd"> Reweighting factor. An Observable that has to be defined on a superset of the</span>
</span><span id="L-456"><a href="#L-456"><span class="linenos"> 456</span></a><span class="sd"> configurations in obs[i].idl for all i.</span>
</span><span id="L-457"><a href="#L-457"><span class="linenos"> 457</span></a><span class="sd"> all_configs : bool</span>
</span><span id="L-458"><a href="#L-458"><span class="linenos"> 458</span></a><span class="sd"> if True, the reweighted observables are normalized by the average of</span>
</span><span id="L-459"><a href="#L-459"><span class="linenos"> 459</span></a><span class="sd"> the reweighting factor on all configurations in weight.idl and not</span>
</span><span id="L-460"><a href="#L-460"><span class="linenos"> 460</span></a><span class="sd"> on the configurations in obs[i].idl. Default False.</span>
</span><span id="L-461"><a href="#L-461"><span class="linenos"> 461</span></a><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="L-462"><a href="#L-462"><span class="linenos"> 462</span></a> <span class="k">return</span> <span class="n">reweight</span><span class="p">(</span><span class="n">weight</span><span class="p">,</span> <span class="p">[</span><span class="bp">self</span><span class="p">])[</span><span class="mi">0</span><span class="p">]</span>
</span><span id="L-463"><a href="#L-463"><span class="linenos"> 463</span></a>
</span><span id="L-464"><a href="#L-464"><span class="linenos"> 464</span></a> <span class="k">def</span> <span class="nf">is_zero_within_error</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">sigma</span><span class="o">=</span><span class="mi">1</span><span class="p">):</span>
</span><span id="L-465"><a href="#L-465"><span class="linenos"> 465</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Checks whether the observable is zero within &#39;sigma&#39; standard errors.</span>
</span><span id="L-466"><a href="#L-466"><span class="linenos"> 466</span></a>
</span><span id="L-467"><a href="#L-467"><span class="linenos"> 467</span></a><span class="sd"> Parameters</span>
</span><span id="L-468"><a href="#L-468"><span class="linenos"> 468</span></a><span class="sd"> ----------</span>
</span><span id="L-469"><a href="#L-469"><span class="linenos"> 469</span></a><span class="sd"> sigma : int</span>
</span><span id="L-470"><a href="#L-470"><span class="linenos"> 470</span></a><span class="sd"> Number of standard errors used for the check.</span>
</span><span id="L-471"><a href="#L-471"><span class="linenos"> 471</span></a>
</span><span id="L-472"><a href="#L-472"><span class="linenos"> 472</span></a><span class="sd"> Works only properly when the gamma method was run.</span>
</span><span id="L-473"><a href="#L-473"><span class="linenos"> 473</span></a><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="L-474"><a href="#L-474"><span class="linenos"> 474</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_zero</span><span class="p">()</span> <span class="ow">or</span> <span class="n">np</span><span class="o">.</span><span class="n">abs</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">value</span><span class="p">)</span> <span class="o">&lt;=</span> <span class="n">sigma</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">_dvalue</span>
</span><span id="L-475"><a href="#L-475"><span class="linenos"> 475</span></a>
</span><span id="L-476"><a href="#L-476"><span class="linenos"> 476</span></a> <span class="k">def</span> <span class="nf">is_zero</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">atol</span><span class="o">=</span><span class="mf">1e-10</span><span class="p">):</span>
</span><span id="L-477"><a href="#L-477"><span class="linenos"> 477</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Checks whether the observable is zero within a given tolerance.</span>
</span><span id="L-478"><a href="#L-478"><span class="linenos"> 478</span></a>
</span><span id="L-479"><a href="#L-479"><span class="linenos"> 479</span></a><span class="sd"> Parameters</span>
</span><span id="L-480"><a href="#L-480"><span class="linenos"> 480</span></a><span class="sd"> ----------</span>
</span><span id="L-481"><a href="#L-481"><span class="linenos"> 481</span></a><span class="sd"> atol : float</span>
</span><span id="L-482"><a href="#L-482"><span class="linenos"> 482</span></a><span class="sd"> Absolute tolerance (for details see numpy documentation).</span>
</span><span id="L-483"><a href="#L-483"><span class="linenos"> 483</span></a><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="L-484"><a href="#L-484"><span class="linenos"> 484</span></a> <span class="k">return</span> <span class="n">np</span><span class="o">.</span><span class="n">isclose</span><span class="p">(</span><span class="mf">0.0</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">value</span><span class="p">,</span> <span class="mf">1e-14</span><span class="p">,</span> <span class="n">atol</span><span class="p">)</span> <span class="ow">and</span> <span class="nb">all</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">allclose</span><span class="p">(</span><span class="mf">0.0</span><span class="p">,</span> <span class="n">delta</span><span class="p">,</span> <span class="mf">1e-14</span><span class="p">,</span> <span class="n">atol</span><span class="p">)</span> <span class="k">for</span> <span class="n">delta</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">deltas</span><span class="o">.</span><span class="n">values</span><span class="p">())</span> <span class="ow">and</span> <span class="nb">all</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">allclose</span><span class="p">(</span><span class="mf">0.0</span><span class="p">,</span> <span class="n">delta</span><span class="o">.</span><span class="n">errsq</span><span class="p">(),</span> <span class="mf">1e-14</span><span class="p">,</span> <span class="n">atol</span><span class="p">)</span> <span class="k">for</span> <span class="n">delta</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">covobs</span><span class="o">.</span><span class="n">values</span><span class="p">())</span>
</span><span id="L-485"><a href="#L-485"><span class="linenos"> 485</span></a>
</span><span id="L-486"><a href="#L-486"><span class="linenos"> 486</span></a> <span class="k">def</span> <span class="nf">plot_tauint</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">save</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
</span><span id="L-487"><a href="#L-487"><span class="linenos"> 487</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Plot integrated autocorrelation time for each ensemble.</span>
</span><span id="L-488"><a href="#L-488"><span class="linenos"> 488</span></a>
</span><span id="L-489"><a href="#L-489"><span class="linenos"> 489</span></a><span class="sd"> Parameters</span>
</span><span id="L-490"><a href="#L-490"><span class="linenos"> 490</span></a><span class="sd"> ----------</span>
</span><span id="L-491"><a href="#L-491"><span class="linenos"> 491</span></a><span class="sd"> save : str</span>
</span><span id="L-492"><a href="#L-492"><span class="linenos"> 492</span></a><span class="sd"> saves the figure to a file named &#39;save&#39; if.</span>
</span><span id="L-493"><a href="#L-493"><span class="linenos"> 493</span></a><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="L-494"><a href="#L-494"><span class="linenos"> 494</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">hasattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s1">&#39;e_dvalue&#39;</span><span class="p">):</span>
</span><span id="L-495"><a href="#L-495"><span class="linenos"> 495</span></a> <span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s1">&#39;Run the gamma method first.&#39;</span><span class="p">)</span>
</span><span id="L-496"><a href="#L-496"><span class="linenos"> 496</span></a>
</span><span id="L-497"><a href="#L-497"><span class="linenos"> 497</span></a> <span class="k">for</span> <span class="n">e</span><span class="p">,</span> <span class="n">e_name</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">mc_names</span><span class="p">):</span>
</span><span id="L-498"><a href="#L-498"><span class="linenos"> 498</span></a> <span class="n">fig</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">figure</span><span class="p">()</span>
</span><span id="L-499"><a href="#L-499"><span class="linenos"> 499</span></a> <span class="n">plt</span><span class="o">.</span><span class="n">xlabel</span><span class="p">(</span><span class="sa">r</span><span class="s1">&#39;$W$&#39;</span><span class="p">)</span>
</span><span id="L-500"><a href="#L-500"><span class="linenos"> 500</span></a> <span class="n">plt</span><span class="o">.</span><span class="n">ylabel</span><span class="p">(</span><span class="sa">r</span><span class="s1">&#39;$\tau_\mathrm</span><span class="si">{int}</span><span class="s1">$&#39;</span><span class="p">)</span>
</span><span id="L-501"><a href="#L-501"><span class="linenos"> 501</span></a> <span class="n">length</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">e_n_tauint</span><span class="p">[</span><span class="n">e_name</span><span class="p">]))</span>
</span><span id="L-502"><a href="#L-502"><span class="linenos"> 502</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">tau_exp</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
</span><span id="L-503"><a href="#L-503"><span class="linenos"> 503</span></a> <span class="n">base</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">e_n_tauint</span><span class="p">[</span><span class="n">e_name</span><span class="p">][</span><span class="bp">self</span><span class="o">.</span><span class="n">e_windowsize</span><span class="p">[</span><span class="n">e_name</span><span class="p">]]</span>
</span><span id="L-504"><a href="#L-504"><span class="linenos"> 504</span></a> <span class="n">x_help</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">arange</span><span class="p">(</span><span class="mi">2</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">tau_exp</span><span class="p">[</span><span class="n">e_name</span><span class="p">])</span>
</span><span id="L-505"><a href="#L-505"><span class="linenos"> 505</span></a> <span class="n">y_help</span> <span class="o">=</span> <span class="p">(</span><span class="n">x_help</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span> <span class="o">*</span> <span class="n">np</span><span class="o">.</span><span class="n">abs</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">e_rho</span><span class="p">[</span><span class="n">e_name</span><span class="p">][</span><span class="bp">self</span><span class="o">.</span><span class="n">e_windowsize</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">+</span> <span class="mi">1</span><span class="p">])</span> <span class="o">*</span> <span class="p">(</span><span class="mi">1</span> <span class="o">-</span> <span class="n">x_help</span> <span class="o">/</span> <span class="p">(</span><span class="mi">2</span> <span class="o">*</span> <span class="p">(</span><span class="mi">2</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">tau_exp</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)))</span> <span class="o">+</span> <span class="n">base</span>
</span><span id="L-506"><a href="#L-506"><span class="linenos"> 506</span></a> <span class="n">x_arr</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">arange</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">e_windowsize</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">+</span> <span class="mi">1</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">e_windowsize</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">+</span> <span class="mi">1</span> <span class="o">+</span> <span class="mi">2</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">tau_exp</span><span class="p">[</span><span class="n">e_name</span><span class="p">])</span>
</span><span id="L-507"><a href="#L-507"><span class="linenos"> 507</span></a> <span class="n">plt</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">x_arr</span><span class="p">,</span> <span class="n">y_help</span><span class="p">,</span> <span class="s1">&#39;C&#39;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">e</span><span class="p">),</span> <span class="n">linewidth</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">ls</span><span class="o">=</span><span class="s1">&#39;--&#39;</span><span class="p">,</span> <span class="n">marker</span><span class="o">=</span><span class="s1">&#39;,&#39;</span><span class="p">)</span>
</span><span id="L-508"><a href="#L-508"><span class="linenos"> 508</span></a> <span class="n">plt</span><span class="o">.</span><span class="n">errorbar</span><span class="p">([</span><span class="bp">self</span><span class="o">.</span><span class="n">e_windowsize</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">+</span> <span class="mi">2</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">tau_exp</span><span class="p">[</span><span class="n">e_name</span><span class="p">]],</span> <span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">e_tauint</span><span class="p">[</span><span class="n">e_name</span><span class="p">]],</span>
</span><span id="L-509"><a href="#L-509"><span class="linenos"> 509</span></a> <span class="n">yerr</span><span class="o">=</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">e_dtauint</span><span class="p">[</span><span class="n">e_name</span><span class="p">]],</span> <span class="n">fmt</span><span class="o">=</span><span class="s1">&#39;C&#39;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">e</span><span class="p">),</span> <span class="n">linewidth</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">capsize</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span> <span class="n">marker</span><span class="o">=</span><span class="s1">&#39;o&#39;</span><span class="p">,</span> <span class="n">mfc</span><span class="o">=</span><span class="n">plt</span><span class="o">.</span><span class="n">rcParams</span><span class="p">[</span><span class="s1">&#39;axes.facecolor&#39;</span><span class="p">])</span>
</span><span id="L-510"><a href="#L-510"><span class="linenos"> 510</span></a> <span class="n">xmax</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">e_windowsize</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">+</span> <span class="mi">2</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">tau_exp</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">+</span> <span class="mf">1.5</span>
</span><span id="L-511"><a href="#L-511"><span class="linenos"> 511</span></a> <span class="n">label</span> <span class="o">=</span> <span class="n">e_name</span> <span class="o">+</span> <span class="sa">r</span><span class="s1">&#39;, $\tau_\mathrm</span><span class="si">{exp}</span><span class="s1">$=&#39;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">around</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">tau_exp</span><span class="p">[</span><span class="n">e_name</span><span class="p">],</span> <span class="n">decimals</span><span class="o">=</span><span class="mi">2</span><span class="p">))</span>
</span><span id="L-512"><a href="#L-512"><span class="linenos"> 512</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="L-513"><a href="#L-513"><span class="linenos"> 513</span></a> <span class="n">label</span> <span class="o">=</span> <span class="n">e_name</span> <span class="o">+</span> <span class="s1">&#39;, S=&#39;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">around</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">S</span><span class="p">[</span><span class="n">e_name</span><span class="p">],</span> <span class="n">decimals</span><span class="o">=</span><span class="mi">2</span><span class="p">))</span>
</span><span id="L-514"><a href="#L-514"><span class="linenos"> 514</span></a> <span class="n">xmax</span> <span class="o">=</span> <span class="nb">max</span><span class="p">(</span><span class="mf">10.5</span><span class="p">,</span> <span class="mi">2</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">e_windowsize</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">-</span> <span class="mf">0.5</span><span class="p">)</span>
</span><span id="L-515"><a href="#L-515"><span class="linenos"> 515</span></a>
</span><span id="L-516"><a href="#L-516"><span class="linenos"> 516</span></a> <span class="n">plt</span><span class="o">.</span><span class="n">errorbar</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">arange</span><span class="p">(</span><span class="n">length</span><span class="p">)[:</span><span class="nb">int</span><span class="p">(</span><span class="n">xmax</span><span class="p">)</span> <span class="o">+</span> <span class="mi">1</span><span class="p">],</span> <span class="bp">self</span><span class="o">.</span><span class="n">e_n_tauint</span><span class="p">[</span><span class="n">e_name</span><span class="p">][:</span><span class="nb">int</span><span class="p">(</span><span class="n">xmax</span><span class="p">)</span> <span class="o">+</span> <span class="mi">1</span><span class="p">],</span> <span class="n">yerr</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">e_n_dtauint</span><span class="p">[</span><span class="n">e_name</span><span class="p">][:</span><span class="nb">int</span><span class="p">(</span><span class="n">xmax</span><span class="p">)</span> <span class="o">+</span> <span class="mi">1</span><span class="p">],</span> <span class="n">linewidth</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">capsize</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span> <span class="n">label</span><span class="o">=</span><span class="n">label</span><span class="p">)</span>
</span><span id="L-517"><a href="#L-517"><span class="linenos"> 517</span></a> <span class="n">plt</span><span class="o">.</span><span class="n">axvline</span><span class="p">(</span><span class="n">x</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">e_windowsize</span><span class="p">[</span><span class="n">e_name</span><span class="p">],</span> <span class="n">color</span><span class="o">=</span><span class="s1">&#39;C&#39;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">e</span><span class="p">),</span> <span class="n">alpha</span><span class="o">=</span><span class="mf">0.5</span><span class="p">,</span> <span class="n">marker</span><span class="o">=</span><span class="s1">&#39;,&#39;</span><span class="p">,</span> <span class="n">ls</span><span class="o">=</span><span class="s1">&#39;--&#39;</span><span class="p">)</span>
</span><span id="L-518"><a href="#L-518"><span class="linenos"> 518</span></a> <span class="n">plt</span><span class="o">.</span><span class="n">legend</span><span class="p">()</span>
</span><span id="L-519"><a href="#L-519"><span class="linenos"> 519</span></a> <span class="n">plt</span><span class="o">.</span><span class="n">xlim</span><span class="p">(</span><span class="o">-</span><span class="mf">0.5</span><span class="p">,</span> <span class="n">xmax</span><span class="p">)</span>
</span><span id="L-520"><a href="#L-520"><span class="linenos"> 520</span></a> <span class="n">ylim</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">ylim</span><span class="p">()</span>
</span><span id="L-521"><a href="#L-521"><span class="linenos"> 521</span></a> <span class="n">plt</span><span class="o">.</span><span class="n">ylim</span><span class="p">(</span><span class="n">bottom</span><span class="o">=</span><span class="mf">0.0</span><span class="p">,</span> <span class="n">top</span><span class="o">=</span><span class="nb">max</span><span class="p">(</span><span class="mf">1.0</span><span class="p">,</span> <span class="n">ylim</span><span class="p">[</span><span class="mi">1</span><span class="p">]))</span>
</span><span id="L-522"><a href="#L-522"><span class="linenos"> 522</span></a> <span class="n">plt</span><span class="o">.</span><span class="n">draw</span><span class="p">()</span>
</span><span id="L-523"><a href="#L-523"><span class="linenos"> 523</span></a> <span class="k">if</span> <span class="n">save</span><span class="p">:</span>
</span><span id="L-524"><a href="#L-524"><span class="linenos"> 524</span></a> <span class="n">fig</span><span class="o">.</span><span class="n">savefig</span><span class="p">(</span><span class="n">save</span> <span class="o">+</span> <span class="s2">&quot;_&quot;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">e</span><span class="p">))</span>
</span><span id="L-525"><a href="#L-525"><span class="linenos"> 525</span></a>
</span><span id="L-526"><a href="#L-526"><span class="linenos"> 526</span></a> <span class="k">def</span> <span class="nf">plot_rho</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">save</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
</span><span id="L-527"><a href="#L-527"><span class="linenos"> 527</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Plot normalized autocorrelation function time for each ensemble.</span>
</span><span id="L-528"><a href="#L-528"><span class="linenos"> 528</span></a>
</span><span id="L-529"><a href="#L-529"><span class="linenos"> 529</span></a><span class="sd"> Parameters</span>
</span><span id="L-530"><a href="#L-530"><span class="linenos"> 530</span></a><span class="sd"> ----------</span>
</span><span id="L-531"><a href="#L-531"><span class="linenos"> 531</span></a><span class="sd"> save : str</span>
</span><span id="L-532"><a href="#L-532"><span class="linenos"> 532</span></a><span class="sd"> saves the figure to a file named &#39;save&#39; if.</span>
</span><span id="L-533"><a href="#L-533"><span class="linenos"> 533</span></a><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="L-534"><a href="#L-534"><span class="linenos"> 534</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">hasattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s1">&#39;e_dvalue&#39;</span><span class="p">):</span>
</span><span id="L-535"><a href="#L-535"><span class="linenos"> 535</span></a> <span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s1">&#39;Run the gamma method first.&#39;</span><span class="p">)</span>
</span><span id="L-536"><a href="#L-536"><span class="linenos"> 536</span></a> <span class="k">for</span> <span class="n">e</span><span class="p">,</span> <span class="n">e_name</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">mc_names</span><span class="p">):</span>
</span><span id="L-537"><a href="#L-537"><span class="linenos"> 537</span></a> <span class="n">fig</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">figure</span><span class="p">()</span>
</span><span id="L-538"><a href="#L-538"><span class="linenos"> 538</span></a> <span class="n">plt</span><span class="o">.</span><span class="n">xlabel</span><span class="p">(</span><span class="s1">&#39;W&#39;</span><span class="p">)</span>
</span><span id="L-539"><a href="#L-539"><span class="linenos"> 539</span></a> <span class="n">plt</span><span class="o">.</span><span class="n">ylabel</span><span class="p">(</span><span class="s1">&#39;rho&#39;</span><span class="p">)</span>
</span><span id="L-540"><a href="#L-540"><span class="linenos"> 540</span></a> <span class="n">length</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">e_drho</span><span class="p">[</span><span class="n">e_name</span><span class="p">]))</span>
</span><span id="L-541"><a href="#L-541"><span class="linenos"> 541</span></a> <span class="n">plt</span><span class="o">.</span><span class="n">errorbar</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">arange</span><span class="p">(</span><span class="n">length</span><span class="p">),</span> <span class="bp">self</span><span class="o">.</span><span class="n">e_rho</span><span class="p">[</span><span class="n">e_name</span><span class="p">][:</span><span class="n">length</span><span class="p">],</span> <span class="n">yerr</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">e_drho</span><span class="p">[</span><span class="n">e_name</span><span class="p">][:],</span> <span class="n">linewidth</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">capsize</span><span class="o">=</span><span class="mi">2</span><span class="p">)</span>
</span><span id="L-542"><a href="#L-542"><span class="linenos"> 542</span></a> <span class="n">plt</span><span class="o">.</span><span class="n">axvline</span><span class="p">(</span><span class="n">x</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">e_windowsize</span><span class="p">[</span><span class="n">e_name</span><span class="p">],</span> <span class="n">color</span><span class="o">=</span><span class="s1">&#39;r&#39;</span><span class="p">,</span> <span class="n">alpha</span><span class="o">=</span><span class="mf">0.25</span><span class="p">,</span> <span class="n">ls</span><span class="o">=</span><span class="s1">&#39;--&#39;</span><span class="p">,</span> <span class="n">marker</span><span class="o">=</span><span class="s1">&#39;,&#39;</span><span class="p">)</span>
</span><span id="L-543"><a href="#L-543"><span class="linenos"> 543</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">tau_exp</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
</span><span id="L-544"><a href="#L-544"><span class="linenos"> 544</span></a> <span class="n">plt</span><span class="o">.</span><span class="n">plot</span><span class="p">([</span><span class="bp">self</span><span class="o">.</span><span class="n">e_windowsize</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">+</span> <span class="mi">1</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">e_windowsize</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">+</span> <span class="mi">1</span> <span class="o">+</span> <span class="mi">2</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">tau_exp</span><span class="p">[</span><span class="n">e_name</span><span class="p">]],</span>
</span><span id="L-545"><a href="#L-545"><span class="linenos"> 545</span></a> <span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">e_rho</span><span class="p">[</span><span class="n">e_name</span><span class="p">][</span><span class="bp">self</span><span class="o">.</span><span class="n">e_windowsize</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">+</span> <span class="mi">1</span><span class="p">],</span> <span class="mi">0</span><span class="p">],</span> <span class="s1">&#39;k-&#39;</span><span class="p">,</span> <span class="n">lw</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
</span><span id="L-546"><a href="#L-546"><span class="linenos"> 546</span></a> <span class="n">xmax</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">e_windowsize</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">+</span> <span class="mi">2</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">tau_exp</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">+</span> <span class="mf">1.5</span>
</span><span id="L-547"><a href="#L-547"><span class="linenos"> 547</span></a> <span class="n">plt</span><span class="o">.</span><span class="n">title</span><span class="p">(</span><span class="s1">&#39;Rho &#39;</span> <span class="o">+</span> <span class="n">e_name</span> <span class="o">+</span> <span class="sa">r</span><span class="s1">&#39;, tau\_exp=&#39;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">around</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">tau_exp</span><span class="p">[</span><span class="n">e_name</span><span class="p">],</span> <span class="n">decimals</span><span class="o">=</span><span class="mi">2</span><span class="p">)))</span>
</span><span id="L-548"><a href="#L-548"><span class="linenos"> 548</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="L-549"><a href="#L-549"><span class="linenos"> 549</span></a> <span class="n">xmax</span> <span class="o">=</span> <span class="nb">max</span><span class="p">(</span><span class="mf">10.5</span><span class="p">,</span> <span class="mi">2</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">e_windowsize</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">-</span> <span class="mf">0.5</span><span class="p">)</span>
</span><span id="L-550"><a href="#L-550"><span class="linenos"> 550</span></a> <span class="n">plt</span><span class="o">.</span><span class="n">title</span><span class="p">(</span><span class="s1">&#39;Rho &#39;</span> <span class="o">+</span> <span class="n">e_name</span> <span class="o">+</span> <span class="s1">&#39;, S=&#39;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">around</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">S</span><span class="p">[</span><span class="n">e_name</span><span class="p">],</span> <span class="n">decimals</span><span class="o">=</span><span class="mi">2</span><span class="p">)))</span>
</span><span id="L-551"><a href="#L-551"><span class="linenos"> 551</span></a> <span class="n">plt</span><span class="o">.</span><span class="n">plot</span><span class="p">([</span><span class="o">-</span><span class="mf">0.5</span><span class="p">,</span> <span class="n">xmax</span><span class="p">],</span> <span class="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">],</span> <span class="s1">&#39;k--&#39;</span><span class="p">,</span> <span class="n">lw</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
</span><span id="L-552"><a href="#L-552"><span class="linenos"> 552</span></a> <span class="n">plt</span><span class="o">.</span><span class="n">xlim</span><span class="p">(</span><span class="o">-</span><span class="mf">0.5</span><span class="p">,</span> <span class="n">xmax</span><span class="p">)</span>
</span><span id="L-553"><a href="#L-553"><span class="linenos"> 553</span></a> <span class="n">plt</span><span class="o">.</span><span class="n">draw</span><span class="p">()</span>
</span><span id="L-554"><a href="#L-554"><span class="linenos"> 554</span></a> <span class="k">if</span> <span class="n">save</span><span class="p">:</span>
</span><span id="L-555"><a href="#L-555"><span class="linenos"> 555</span></a> <span class="n">fig</span><span class="o">.</span><span class="n">savefig</span><span class="p">(</span><span class="n">save</span> <span class="o">+</span> <span class="s2">&quot;_&quot;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">e</span><span class="p">))</span>
</span><span id="L-556"><a href="#L-556"><span class="linenos"> 556</span></a>
</span><span id="L-557"><a href="#L-557"><span class="linenos"> 557</span></a> <span class="k">def</span> <span class="nf">plot_rep_dist</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
</span><span id="L-558"><a href="#L-558"><span class="linenos"> 558</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Plot replica distribution for each ensemble with more than one replicum.&quot;&quot;&quot;</span>
</span><span id="L-559"><a href="#L-559"><span class="linenos"> 559</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">hasattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s1">&#39;e_dvalue&#39;</span><span class="p">):</span>
</span><span id="L-560"><a href="#L-560"><span class="linenos"> 560</span></a> <span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s1">&#39;Run the gamma method first.&#39;</span><span class="p">)</span>
</span><span id="L-561"><a href="#L-561"><span class="linenos"> 561</span></a> <span class="k">for</span> <span class="n">e</span><span class="p">,</span> <span class="n">e_name</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">mc_names</span><span class="p">):</span>
</span><span id="L-562"><a href="#L-562"><span class="linenos"> 562</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">e_content</span><span class="p">[</span><span class="n">e_name</span><span class="p">])</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span>
</span><span id="L-563"><a href="#L-563"><span class="linenos"> 563</span></a> <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;No replica distribution for a single replicum (&#39;</span><span class="p">,</span> <span class="n">e_name</span><span class="p">,</span> <span class="s1">&#39;)&#39;</span><span class="p">)</span>
</span><span id="L-564"><a href="#L-564"><span class="linenos"> 564</span></a> <span class="k">continue</span>
</span><span id="L-565"><a href="#L-565"><span class="linenos"> 565</span></a> <span class="n">r_length</span> <span class="o">=</span> <span class="p">[]</span>
</span><span id="L-566"><a href="#L-566"><span class="linenos"> 566</span></a> <span class="n">sub_r_mean</span> <span class="o">=</span> <span class="mi">0</span>
</span><span id="L-567"><a href="#L-567"><span class="linenos"> 567</span></a> <span class="k">for</span> <span class="n">r</span><span class="p">,</span> <span class="n">r_name</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">e_content</span><span class="p">[</span><span class="n">e_name</span><span class="p">]):</span>
</span><span id="L-568"><a href="#L-568"><span class="linenos"> 568</span></a> <span class="n">r_length</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">deltas</span><span class="p">[</span><span class="n">r_name</span><span class="p">]))</span>
</span><span id="L-569"><a href="#L-569"><span class="linenos"> 569</span></a> <span class="n">sub_r_mean</span> <span class="o">+=</span> <span class="bp">self</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="n">r_name</span><span class="p">]</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">r_values</span><span class="p">[</span><span class="n">r_name</span><span class="p">]</span>
</span><span id="L-570"><a href="#L-570"><span class="linenos"> 570</span></a> <span class="n">e_N</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">sum</span><span class="p">(</span><span class="n">r_length</span><span class="p">)</span>
</span><span id="L-571"><a href="#L-571"><span class="linenos"> 571</span></a> <span class="n">sub_r_mean</span> <span class="o">/=</span> <span class="n">e_N</span>
</span><span id="L-572"><a href="#L-572"><span class="linenos"> 572</span></a> <span class="n">arr</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">zeros</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">e_content</span><span class="p">[</span><span class="n">e_name</span><span class="p">]))</span>
</span><span id="L-573"><a href="#L-573"><span class="linenos"> 573</span></a> <span class="k">for</span> <span class="n">r</span><span class="p">,</span> <span class="n">r_name</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">e_content</span><span class="p">[</span><span class="n">e_name</span><span class="p">]):</span>
</span><span id="L-574"><a href="#L-574"><span class="linenos"> 574</span></a> <span class="n">arr</span><span class="p">[</span><span class="n">r</span><span class="p">]</span> <span class="o">=</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">r_values</span><span class="p">[</span><span class="n">r_name</span><span class="p">]</span> <span class="o">-</span> <span class="n">sub_r_mean</span><span class="p">)</span> <span class="o">/</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">e_dvalue</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">*</span> <span class="n">np</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="n">e_N</span> <span class="o">/</span> <span class="bp">self</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="n">r_name</span><span class="p">]</span> <span class="o">-</span> <span class="mi">1</span><span class="p">))</span>
</span><span id="L-575"><a href="#L-575"><span class="linenos"> 575</span></a> <span class="n">plt</span><span class="o">.</span><span class="n">hist</span><span class="p">(</span><span class="n">arr</span><span class="p">,</span> <span class="n">rwidth</span><span class="o">=</span><span class="mf">0.8</span><span class="p">,</span> <span class="n">bins</span><span class="o">=</span><span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">e_content</span><span class="p">[</span><span class="n">e_name</span><span class="p">]))</span>
</span><span id="L-576"><a href="#L-576"><span class="linenos"> 576</span></a> <span class="n">plt</span><span class="o">.</span><span class="n">title</span><span class="p">(</span><span class="s1">&#39;Replica distribution&#39;</span> <span class="o">+</span> <span class="n">e_name</span> <span class="o">+</span> <span class="s1">&#39; (mean=0, var=1)&#39;</span><span class="p">)</span>
</span><span id="L-577"><a href="#L-577"><span class="linenos"> 577</span></a> <span class="n">plt</span><span class="o">.</span><span class="n">draw</span><span class="p">()</span>
</span><span id="L-578"><a href="#L-578"><span class="linenos"> 578</span></a>
</span><span id="L-579"><a href="#L-579"><span class="linenos"> 579</span></a> <span class="k">def</span> <span class="nf">plot_history</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expand</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
</span><span id="L-580"><a href="#L-580"><span class="linenos"> 580</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Plot derived Monte Carlo history for each ensemble</span>
</span><span id="L-581"><a href="#L-581"><span class="linenos"> 581</span></a>
</span><span id="L-582"><a href="#L-582"><span class="linenos"> 582</span></a><span class="sd"> Parameters</span>
</span><span id="L-583"><a href="#L-583"><span class="linenos"> 583</span></a><span class="sd"> ----------</span>
</span><span id="L-584"><a href="#L-584"><span class="linenos"> 584</span></a><span class="sd"> expand : bool</span>
</span><span id="L-585"><a href="#L-585"><span class="linenos"> 585</span></a><span class="sd"> show expanded history for irregular Monte Carlo chains (default: True).</span>
</span><span id="L-586"><a href="#L-586"><span class="linenos"> 586</span></a><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="L-587"><a href="#L-587"><span class="linenos"> 587</span></a> <span class="k">for</span> <span class="n">e</span><span class="p">,</span> <span class="n">e_name</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">mc_names</span><span class="p">):</span>
</span><span id="L-588"><a href="#L-588"><span class="linenos"> 588</span></a> <span class="n">plt</span><span class="o">.</span><span class="n">figure</span><span class="p">()</span>
</span><span id="L-589"><a href="#L-589"><span class="linenos"> 589</span></a> <span class="n">r_length</span> <span class="o">=</span> <span class="p">[]</span>
</span><span id="L-590"><a href="#L-590"><span class="linenos"> 590</span></a> <span class="n">tmp</span> <span class="o">=</span> <span class="p">[]</span>
</span><span id="L-591"><a href="#L-591"><span class="linenos"> 591</span></a> <span class="n">tmp_expanded</span> <span class="o">=</span> <span class="p">[]</span>
</span><span id="L-592"><a href="#L-592"><span class="linenos"> 592</span></a> <span class="k">for</span> <span class="n">r</span><span class="p">,</span> <span class="n">r_name</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">e_content</span><span class="p">[</span><span class="n">e_name</span><span class="p">]):</span>
</span><span id="L-593"><a href="#L-593"><span class="linenos"> 593</span></a> <span class="n">tmp</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">deltas</span><span class="p">[</span><span class="n">r_name</span><span class="p">]</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">r_values</span><span class="p">[</span><span class="n">r_name</span><span class="p">])</span>
</span><span id="L-594"><a href="#L-594"><span class="linenos"> 594</span></a> <span class="k">if</span> <span class="n">expand</span><span class="p">:</span>
</span><span id="L-595"><a href="#L-595"><span class="linenos"> 595</span></a> <span class="n">tmp_expanded</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">_expand_deltas</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">deltas</span><span class="p">[</span><span class="n">r_name</span><span class="p">],</span> <span class="nb">list</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">idl</span><span class="p">[</span><span class="n">r_name</span><span class="p">]),</span> <span class="bp">self</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="n">r_name</span><span class="p">],</span> <span class="mi">1</span><span class="p">)</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">r_values</span><span class="p">[</span><span class="n">r_name</span><span class="p">])</span>
</span><span id="L-596"><a href="#L-596"><span class="linenos"> 596</span></a> <span class="n">r_length</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">tmp_expanded</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]))</span>
</span><span id="L-597"><a href="#L-597"><span class="linenos"> 597</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="L-598"><a href="#L-598"><span class="linenos"> 598</span></a> <span class="n">r_length</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">tmp</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]))</span>
</span><span id="L-599"><a href="#L-599"><span class="linenos"> 599</span></a> <span class="n">e_N</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">sum</span><span class="p">(</span><span class="n">r_length</span><span class="p">)</span>
</span><span id="L-600"><a href="#L-600"><span class="linenos"> 600</span></a> <span class="n">x</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">arange</span><span class="p">(</span><span class="n">e_N</span><span class="p">)</span>
</span><span id="L-601"><a href="#L-601"><span class="linenos"> 601</span></a> <span class="n">y_test</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">concatenate</span><span class="p">(</span><span class="n">tmp</span><span class="p">,</span> <span class="n">axis</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span>
</span><span id="L-602"><a href="#L-602"><span class="linenos"> 602</span></a> <span class="k">if</span> <span class="n">expand</span><span class="p">:</span>
</span><span id="L-603"><a href="#L-603"><span class="linenos"> 603</span></a> <span class="n">y</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">concatenate</span><span class="p">(</span><span class="n">tmp_expanded</span><span class="p">,</span> <span class="n">axis</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span>
</span><span id="L-604"><a href="#L-604"><span class="linenos"> 604</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="L-605"><a href="#L-605"><span class="linenos"> 605</span></a> <span class="n">y</span> <span class="o">=</span> <span class="n">y_test</span>
</span><span id="L-606"><a href="#L-606"><span class="linenos"> 606</span></a> <span class="n">plt</span><span class="o">.</span><span class="n">errorbar</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">fmt</span><span class="o">=</span><span class="s1">&#39;.&#39;</span><span class="p">,</span> <span class="n">markersize</span><span class="o">=</span><span class="mi">3</span><span class="p">)</span>
</span><span id="L-607"><a href="#L-607"><span class="linenos"> 607</span></a> <span class="n">plt</span><span class="o">.</span><span class="n">xlim</span><span class="p">(</span><span class="o">-</span><span class="mf">0.5</span><span class="p">,</span> <span class="n">e_N</span> <span class="o">-</span> <span class="mf">0.5</span><span class="p">)</span>
</span><span id="L-608"><a href="#L-608"><span class="linenos"> 608</span></a> <span class="n">plt</span><span class="o">.</span><span class="n">title</span><span class="p">(</span><span class="n">e_name</span> <span class="o">+</span> <span class="sa">f</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">skew: </span><span class="si">{</span><span class="n">skew</span><span class="p">(</span><span class="n">y_test</span><span class="p">)</span><span class="si">:</span><span class="s1">.3f</span><span class="si">}</span><span class="s1"> (p=</span><span class="si">{</span><span class="n">skewtest</span><span class="p">(</span><span class="n">y_test</span><span class="p">)</span><span class="o">.</span><span class="n">pvalue</span><span class="si">:</span><span class="s1">.3f</span><span class="si">}</span><span class="s1">), kurtosis: </span><span class="si">{</span><span class="n">kurtosis</span><span class="p">(</span><span class="n">y_test</span><span class="p">)</span><span class="si">:</span><span class="s1">.3f</span><span class="si">}</span><span class="s1"> (p=</span><span class="si">{</span><span class="n">kurtosistest</span><span class="p">(</span><span class="n">y_test</span><span class="p">)</span><span class="o">.</span><span class="n">pvalue</span><span class="si">:</span><span class="s1">.3f</span><span class="si">}</span><span class="s1">)&#39;</span><span class="p">)</span>
</span><span id="L-609"><a href="#L-609"><span class="linenos"> 609</span></a> <span class="n">plt</span><span class="o">.</span><span class="n">draw</span><span class="p">()</span>
</span><span id="L-610"><a href="#L-610"><span class="linenos"> 610</span></a>
</span><span id="L-611"><a href="#L-611"><span class="linenos"> 611</span></a> <span class="k">def</span> <span class="nf">plot_piechart</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">save</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
</span><span id="L-612"><a href="#L-612"><span class="linenos"> 612</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Plot piechart which shows the fractional contribution of each</span>
</span><span id="L-613"><a href="#L-613"><span class="linenos"> 613</span></a><span class="sd"> ensemble to the error and returns a dictionary containing the fractions.</span>
</span><span id="L-614"><a href="#L-614"><span class="linenos"> 614</span></a>
</span><span id="L-615"><a href="#L-615"><span class="linenos"> 615</span></a><span class="sd"> Parameters</span>
</span><span id="L-616"><a href="#L-616"><span class="linenos"> 616</span></a><span class="sd"> ----------</span>
</span><span id="L-617"><a href="#L-617"><span class="linenos"> 617</span></a><span class="sd"> save : str</span>
</span><span id="L-618"><a href="#L-618"><span class="linenos"> 618</span></a><span class="sd"> saves the figure to a file named &#39;save&#39; if.</span>
</span><span id="L-619"><a href="#L-619"><span class="linenos"> 619</span></a><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="L-620"><a href="#L-620"><span class="linenos"> 620</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">hasattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s1">&#39;e_dvalue&#39;</span><span class="p">):</span>
</span><span id="L-621"><a href="#L-621"><span class="linenos"> 621</span></a> <span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s1">&#39;Run the gamma method first.&#39;</span><span class="p">)</span>
</span><span id="L-622"><a href="#L-622"><span class="linenos"> 622</span></a> <span class="k">if</span> <span class="n">np</span><span class="o">.</span><span class="n">isclose</span><span class="p">(</span><span class="mf">0.0</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_dvalue</span><span class="p">,</span> <span class="n">atol</span><span class="o">=</span><span class="mf">1e-15</span><span class="p">):</span>
</span><span id="L-623"><a href="#L-623"><span class="linenos"> 623</span></a> <span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s1">&#39;Error is 0.0&#39;</span><span class="p">)</span>
</span><span id="L-624"><a href="#L-624"><span class="linenos"> 624</span></a> <span class="n">labels</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">e_names</span>
</span><span id="L-625"><a href="#L-625"><span class="linenos"> 625</span></a> <span class="n">sizes</span> <span class="o">=</span> <span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">e_dvalue</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="o">**</span> <span class="mi">2</span> <span class="k">for</span> <span class="n">name</span> <span class="ow">in</span> <span class="n">labels</span><span class="p">]</span> <span class="o">/</span> <span class="bp">self</span><span class="o">.</span><span class="n">_dvalue</span> <span class="o">**</span> <span class="mi">2</span>
</span><span id="L-626"><a href="#L-626"><span class="linenos"> 626</span></a> <span class="n">fig1</span><span class="p">,</span> <span class="n">ax1</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">subplots</span><span class="p">()</span>
</span><span id="L-627"><a href="#L-627"><span class="linenos"> 627</span></a> <span class="n">ax1</span><span class="o">.</span><span class="n">pie</span><span class="p">(</span><span class="n">sizes</span><span class="p">,</span> <span class="n">labels</span><span class="o">=</span><span class="n">labels</span><span class="p">,</span> <span class="n">startangle</span><span class="o">=</span><span class="mi">90</span><span class="p">,</span> <span class="n">normalize</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
</span><span id="L-628"><a href="#L-628"><span class="linenos"> 628</span></a> <span class="n">ax1</span><span class="o">.</span><span class="n">axis</span><span class="p">(</span><span class="s1">&#39;equal&#39;</span><span class="p">)</span>
</span><span id="L-629"><a href="#L-629"><span class="linenos"> 629</span></a> <span class="n">plt</span><span class="o">.</span><span class="n">draw</span><span class="p">()</span>
</span><span id="L-630"><a href="#L-630"><span class="linenos"> 630</span></a> <span class="k">if</span> <span class="n">save</span><span class="p">:</span>
</span><span id="L-631"><a href="#L-631"><span class="linenos"> 631</span></a> <span class="n">fig1</span><span class="o">.</span><span class="n">savefig</span><span class="p">(</span><span class="n">save</span><span class="p">)</span>
</span><span id="L-632"><a href="#L-632"><span class="linenos"> 632</span></a>
</span><span id="L-633"><a href="#L-633"><span class="linenos"> 633</span></a> <span class="k">return</span> <span class="nb">dict</span><span class="p">(</span><span class="nb">zip</span><span class="p">(</span><span class="n">labels</span><span class="p">,</span> <span class="n">sizes</span><span class="p">))</span>
</span><span id="L-634"><a href="#L-634"><span class="linenos"> 634</span></a>
</span><span id="L-635"><a href="#L-635"><span class="linenos"> 635</span></a> <span class="k">def</span> <span class="nf">dump</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">filename</span><span class="p">,</span> <span class="n">datatype</span><span class="o">=</span><span class="s2">&quot;json.gz&quot;</span><span class="p">,</span> <span class="n">description</span><span class="o">=</span><span class="s2">&quot;&quot;</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
</span><span id="L-636"><a href="#L-636"><span class="linenos"> 636</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Dump the Obs to a file &#39;name&#39; of chosen format.</span>
</span><span id="L-637"><a href="#L-637"><span class="linenos"> 637</span></a>
</span><span id="L-638"><a href="#L-638"><span class="linenos"> 638</span></a><span class="sd"> Parameters</span>
</span><span id="L-639"><a href="#L-639"><span class="linenos"> 639</span></a><span class="sd"> ----------</span>
</span><span id="L-640"><a href="#L-640"><span class="linenos"> 640</span></a><span class="sd"> filename : str</span>
</span><span id="L-641"><a href="#L-641"><span class="linenos"> 641</span></a><span class="sd"> name of the file to be saved.</span>
</span><span id="L-642"><a href="#L-642"><span class="linenos"> 642</span></a><span class="sd"> datatype : str</span>
</span><span id="L-643"><a href="#L-643"><span class="linenos"> 643</span></a><span class="sd"> Format of the exported file. Supported formats include</span>
</span><span id="L-644"><a href="#L-644"><span class="linenos"> 644</span></a><span class="sd"> &quot;json.gz&quot; and &quot;pickle&quot;</span>
</span><span id="L-645"><a href="#L-645"><span class="linenos"> 645</span></a><span class="sd"> description : str</span>
</span><span id="L-646"><a href="#L-646"><span class="linenos"> 646</span></a><span class="sd"> Description for output file, only relevant for json.gz format.</span>
</span><span id="L-647"><a href="#L-647"><span class="linenos"> 647</span></a><span class="sd"> path : str</span>
</span><span id="L-648"><a href="#L-648"><span class="linenos"> 648</span></a><span class="sd"> specifies a custom path for the file (default &#39;.&#39;)</span>
</span><span id="L-649"><a href="#L-649"><span class="linenos"> 649</span></a><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="L-650"><a href="#L-650"><span class="linenos"> 650</span></a> <span class="k">if</span> <span class="s1">&#39;path&#39;</span> <span class="ow">in</span> <span class="n">kwargs</span><span class="p">:</span>
</span><span id="L-651"><a href="#L-651"><span class="linenos"> 651</span></a> <span class="n">file_name</span> <span class="o">=</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">&#39;path&#39;</span><span class="p">)</span> <span class="o">+</span> <span class="s1">&#39;/&#39;</span> <span class="o">+</span> <span class="n">filename</span>
</span><span id="L-652"><a href="#L-652"><span class="linenos"> 652</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="L-653"><a href="#L-653"><span class="linenos"> 653</span></a> <span class="n">file_name</span> <span class="o">=</span> <span class="n">filename</span>
</span><span id="L-654"><a href="#L-654"><span class="linenos"> 654</span></a>
</span><span id="L-655"><a href="#L-655"><span class="linenos"> 655</span></a> <span class="k">if</span> <span class="n">datatype</span> <span class="o">==</span> <span class="s2">&quot;json.gz&quot;</span><span class="p">:</span>
</span><span id="L-656"><a href="#L-656"><span class="linenos"> 656</span></a> <span class="kn">from</span> <span class="nn">.input.json</span> <span class="kn">import</span> <span class="n">dump_to_json</span>
</span><span id="L-657"><a href="#L-657"><span class="linenos"> 657</span></a> <span class="n">dump_to_json</span><span class="p">([</span><span class="bp">self</span><span class="p">],</span> <span class="n">file_name</span><span class="p">,</span> <span class="n">description</span><span class="o">=</span><span class="n">description</span><span class="p">)</span>
</span><span id="L-658"><a href="#L-658"><span class="linenos"> 658</span></a> <span class="k">elif</span> <span class="n">datatype</span> <span class="o">==</span> <span class="s2">&quot;pickle&quot;</span><span class="p">:</span>
</span><span id="L-659"><a href="#L-659"><span class="linenos"> 659</span></a> <span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">file_name</span> <span class="o">+</span> <span class="s1">&#39;.p&#39;</span><span class="p">,</span> <span class="s1">&#39;wb&#39;</span><span class="p">)</span> <span class="k">as</span> <span class="n">fb</span><span class="p">:</span>
</span><span id="L-660"><a href="#L-660"><span class="linenos"> 660</span></a> <span class="n">pickle</span><span class="o">.</span><span class="n">dump</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">fb</span><span class="p">)</span>
</span><span id="L-661"><a href="#L-661"><span class="linenos"> 661</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="L-662"><a href="#L-662"><span class="linenos"> 662</span></a> <span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s2">&quot;Unknown datatype &quot;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">datatype</span><span class="p">))</span>
</span><span id="L-663"><a href="#L-663"><span class="linenos"> 663</span></a>
</span><span id="L-664"><a href="#L-664"><span class="linenos"> 664</span></a> <span class="k">def</span> <span class="nf">export_jackknife</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
</span><span id="L-665"><a href="#L-665"><span class="linenos"> 665</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Export jackknife samples from the Obs</span>
</span><span id="L-666"><a href="#L-666"><span class="linenos"> 666</span></a>
</span><span id="L-667"><a href="#L-667"><span class="linenos"> 667</span></a><span class="sd"> Returns</span>
</span><span id="L-668"><a href="#L-668"><span class="linenos"> 668</span></a><span class="sd"> -------</span>
</span><span id="L-669"><a href="#L-669"><span class="linenos"> 669</span></a><span class="sd"> numpy.ndarray</span>
</span><span id="L-670"><a href="#L-670"><span class="linenos"> 670</span></a><span class="sd"> Returns a numpy array of length N + 1 where N is the number of samples</span>
</span><span id="L-671"><a href="#L-671"><span class="linenos"> 671</span></a><span class="sd"> for the given ensemble and replicum. The zeroth entry of the array contains</span>
</span><span id="L-672"><a href="#L-672"><span class="linenos"> 672</span></a><span class="sd"> the mean value of the Obs, entries 1 to N contain the N jackknife samples</span>
</span><span id="L-673"><a href="#L-673"><span class="linenos"> 673</span></a><span class="sd"> derived from the Obs. The current implementation only works for observables</span>
</span><span id="L-674"><a href="#L-674"><span class="linenos"> 674</span></a><span class="sd"> defined on exactly one ensemble and replicum. The derived jackknife samples</span>
</span><span id="L-675"><a href="#L-675"><span class="linenos"> 675</span></a><span class="sd"> should agree with samples from a full jackknife analysis up to O(1/N).</span>
</span><span id="L-676"><a href="#L-676"><span class="linenos"> 676</span></a><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="L-677"><a href="#L-677"><span class="linenos"> 677</span></a>
</span><span id="L-678"><a href="#L-678"><span class="linenos"> 678</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">names</span><span class="p">)</span> <span class="o">!=</span> <span class="mi">1</span><span class="p">:</span>
</span><span id="L-679"><a href="#L-679"><span class="linenos"> 679</span></a> <span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s2">&quot;&#39;export_jackknife&#39; is only implemented for Obs defined on one ensemble and replicum.&quot;</span><span class="p">)</span>
</span><span id="L-680"><a href="#L-680"><span class="linenos"> 680</span></a>
</span><span id="L-681"><a href="#L-681"><span class="linenos"> 681</span></a> <span class="n">name</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">names</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
</span><span id="L-682"><a href="#L-682"><span class="linenos"> 682</span></a> <span class="n">full_data</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">deltas</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">r_values</span><span class="p">[</span><span class="n">name</span><span class="p">]</span>
</span><span id="L-683"><a href="#L-683"><span class="linenos"> 683</span></a> <span class="n">n</span> <span class="o">=</span> <span class="n">full_data</span><span class="o">.</span><span class="n">size</span>
</span><span id="L-684"><a href="#L-684"><span class="linenos"> 684</span></a> <span class="n">mean</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">value</span>
</span><span id="L-685"><a href="#L-685"><span class="linenos"> 685</span></a> <span class="n">tmp_jacks</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">zeros</span><span class="p">(</span><span class="n">n</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span>
</span><span id="L-686"><a href="#L-686"><span class="linenos"> 686</span></a> <span class="n">tmp_jacks</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="n">mean</span>
</span><span id="L-687"><a href="#L-687"><span class="linenos"> 687</span></a> <span class="n">tmp_jacks</span><span class="p">[</span><span class="mi">1</span><span class="p">:]</span> <span class="o">=</span> <span class="p">(</span><span class="n">n</span> <span class="o">*</span> <span class="n">mean</span> <span class="o">-</span> <span class="n">full_data</span><span class="p">)</span> <span class="o">/</span> <span class="p">(</span><span class="n">n</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span>
</span><span id="L-688"><a href="#L-688"><span class="linenos"> 688</span></a> <span class="k">return</span> <span class="n">tmp_jacks</span>
</span><span id="L-689"><a href="#L-689"><span class="linenos"> 689</span></a>
</span><span id="L-690"><a href="#L-690"><span class="linenos"> 690</span></a> <span class="k">def</span> <span class="nf">export_bootstrap</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">samples</span><span class="o">=</span><span class="mi">500</span><span class="p">,</span> <span class="n">random_numbers</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">save_rng</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
</span><span id="L-691"><a href="#L-691"><span class="linenos"> 691</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Export bootstrap samples from the Obs</span>
</span><span id="L-692"><a href="#L-692"><span class="linenos"> 692</span></a>
</span><span id="L-693"><a href="#L-693"><span class="linenos"> 693</span></a><span class="sd"> Parameters</span>
</span><span id="L-694"><a href="#L-694"><span class="linenos"> 694</span></a><span class="sd"> ----------</span>
</span><span id="L-695"><a href="#L-695"><span class="linenos"> 695</span></a><span class="sd"> samples : int</span>
</span><span id="L-696"><a href="#L-696"><span class="linenos"> 696</span></a><span class="sd"> Number of bootstrap samples to generate.</span>
</span><span id="L-697"><a href="#L-697"><span class="linenos"> 697</span></a><span class="sd"> random_numbers : np.ndarray</span>
</span><span id="L-698"><a href="#L-698"><span class="linenos"> 698</span></a><span class="sd"> Array of shape (samples, length) containing the random numbers to generate the bootstrap samples.</span>
</span><span id="L-699"><a href="#L-699"><span class="linenos"> 699</span></a><span class="sd"> If not provided the bootstrap samples are generated bashed on the md5 hash of the enesmble name.</span>
</span><span id="L-700"><a href="#L-700"><span class="linenos"> 700</span></a><span class="sd"> save_rng : str</span>
</span><span id="L-701"><a href="#L-701"><span class="linenos"> 701</span></a><span class="sd"> Save the random numbers to a file if a path is specified.</span>
</span><span id="L-702"><a href="#L-702"><span class="linenos"> 702</span></a>
</span><span id="L-703"><a href="#L-703"><span class="linenos"> 703</span></a><span class="sd"> Returns</span>
</span><span id="L-704"><a href="#L-704"><span class="linenos"> 704</span></a><span class="sd"> -------</span>
</span><span id="L-705"><a href="#L-705"><span class="linenos"> 705</span></a><span class="sd"> numpy.ndarray</span>
</span><span id="L-706"><a href="#L-706"><span class="linenos"> 706</span></a><span class="sd"> Returns a numpy array of length N + 1 where N is the number of samples</span>
</span><span id="L-707"><a href="#L-707"><span class="linenos"> 707</span></a><span class="sd"> for the given ensemble and replicum. The zeroth entry of the array contains</span>
</span><span id="L-708"><a href="#L-708"><span class="linenos"> 708</span></a><span class="sd"> the mean value of the Obs, entries 1 to N contain the N import_bootstrap samples</span>
</span><span id="L-709"><a href="#L-709"><span class="linenos"> 709</span></a><span class="sd"> derived from the Obs. The current implementation only works for observables</span>
</span><span id="L-710"><a href="#L-710"><span class="linenos"> 710</span></a><span class="sd"> defined on exactly one ensemble and replicum. The derived bootstrap samples</span>
</span><span id="L-711"><a href="#L-711"><span class="linenos"> 711</span></a><span class="sd"> should agree with samples from a full bootstrap analysis up to O(1/N).</span>
</span><span id="L-712"><a href="#L-712"><span class="linenos"> 712</span></a><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="L-713"><a href="#L-713"><span class="linenos"> 713</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">names</span><span class="p">)</span> <span class="o">!=</span> <span class="mi">1</span><span class="p">:</span>
</span><span id="L-714"><a href="#L-714"><span class="linenos"> 714</span></a> <span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s2">&quot;&#39;export_boostrap&#39; is only implemented for Obs defined on one ensemble and replicum.&quot;</span><span class="p">)</span>
</span><span id="L-715"><a href="#L-715"><span class="linenos"> 715</span></a>
</span><span id="L-716"><a href="#L-716"><span class="linenos"> 716</span></a> <span class="n">name</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">names</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
</span><span id="L-717"><a href="#L-717"><span class="linenos"> 717</span></a> <span class="n">length</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">N</span>
</span><span id="L-718"><a href="#L-718"><span class="linenos"> 718</span></a>
</span><span id="L-719"><a href="#L-719"><span class="linenos"> 719</span></a> <span class="k">if</span> <span class="n">random_numbers</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
</span><span id="L-720"><a href="#L-720"><span class="linenos"> 720</span></a> <span class="n">seed</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">hashlib</span><span class="o">.</span><span class="n">md5</span><span class="p">(</span><span class="n">name</span><span class="o">.</span><span class="n">encode</span><span class="p">())</span><span class="o">.</span><span class="n">hexdigest</span><span class="p">(),</span> <span class="mi">16</span><span class="p">)</span> <span class="o">&amp;</span> <span class="mh">0xFFFFFFFF</span>
</span><span id="L-721"><a href="#L-721"><span class="linenos"> 721</span></a> <span class="n">rng</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">random</span><span class="o">.</span><span class="n">default_rng</span><span class="p">(</span><span class="n">seed</span><span class="p">)</span>
</span><span id="L-722"><a href="#L-722"><span class="linenos"> 722</span></a> <span class="n">random_numbers</span> <span class="o">=</span> <span class="n">rng</span><span class="o">.</span><span class="n">integers</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">length</span><span class="p">,</span> <span class="n">size</span><span class="o">=</span><span class="p">(</span><span class="n">samples</span><span class="p">,</span> <span class="n">length</span><span class="p">))</span>
</span><span id="L-723"><a href="#L-723"><span class="linenos"> 723</span></a>
</span><span id="L-724"><a href="#L-724"><span class="linenos"> 724</span></a> <span class="k">if</span> <span class="n">save_rng</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
</span><span id="L-725"><a href="#L-725"><span class="linenos"> 725</span></a> <span class="n">np</span><span class="o">.</span><span class="n">savetxt</span><span class="p">(</span><span class="n">save_rng</span><span class="p">,</span> <span class="n">random_numbers</span><span class="p">,</span> <span class="n">fmt</span><span class="o">=</span><span class="s1">&#39;</span><span class="si">%i</span><span class="s1">&#39;</span><span class="p">)</span>
</span><span id="L-726"><a href="#L-726"><span class="linenos"> 726</span></a>
</span><span id="L-727"><a href="#L-727"><span class="linenos"> 727</span></a> <span class="n">proj</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">vstack</span><span class="p">([</span><span class="n">np</span><span class="o">.</span><span class="n">bincount</span><span class="p">(</span><span class="n">o</span><span class="p">,</span> <span class="n">minlength</span><span class="o">=</span><span class="n">length</span><span class="p">)</span> <span class="k">for</span> <span class="n">o</span> <span class="ow">in</span> <span class="n">random_numbers</span><span class="p">])</span> <span class="o">/</span> <span class="n">length</span>
</span><span id="L-728"><a href="#L-728"><span class="linenos"> 728</span></a> <span class="n">ret</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">zeros</span><span class="p">(</span><span class="n">samples</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span>
</span><span id="L-729"><a href="#L-729"><span class="linenos"> 729</span></a> <span class="n">ret</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">value</span>
</span><span id="L-730"><a href="#L-730"><span class="linenos"> 730</span></a> <span class="n">ret</span><span class="p">[</span><span class="mi">1</span><span class="p">:]</span> <span class="o">=</span> <span class="n">proj</span> <span class="o">@</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">deltas</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">r_values</span><span class="p">[</span><span class="n">name</span><span class="p">])</span>
</span><span id="L-731"><a href="#L-731"><span class="linenos"> 731</span></a> <span class="k">return</span> <span class="n">ret</span>
</span><span id="L-732"><a href="#L-732"><span class="linenos"> 732</span></a>
</span><span id="L-733"><a href="#L-733"><span class="linenos"> 733</span></a> <span class="k">def</span> <span class="fm">__float__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
</span><span id="L-734"><a href="#L-734"><span class="linenos"> 734</span></a> <span class="k">return</span> <span class="nb">float</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">value</span><span class="p">)</span>
</span><span id="L-735"><a href="#L-735"><span class="linenos"> 735</span></a>
</span><span id="L-736"><a href="#L-736"><span class="linenos"> 736</span></a> <span class="k">def</span> <span class="fm">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
</span><span id="L-737"><a href="#L-737"><span class="linenos"> 737</span></a> <span class="k">return</span> <span class="s1">&#39;Obs[&#39;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">+</span> <span class="s1">&#39;]&#39;</span>
</span><span id="L-738"><a href="#L-738"><span class="linenos"> 738</span></a>
</span><span id="L-739"><a href="#L-739"><span class="linenos"> 739</span></a> <span class="k">def</span> <span class="fm">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
</span><span id="L-740"><a href="#L-740"><span class="linenos"> 740</span></a> <span class="k">return</span> <span class="n">_format_uncertainty</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">value</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_dvalue</span><span class="p">)</span>
</span><span id="L-741"><a href="#L-741"><span class="linenos"> 741</span></a>
</span><span id="L-742"><a href="#L-742"><span class="linenos"> 742</span></a> <span class="k">def</span> <span class="fm">__format__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">format_type</span><span class="p">):</span>
</span><span id="L-743"><a href="#L-743"><span class="linenos"> 743</span></a> <span class="k">if</span> <span class="n">format_type</span> <span class="o">==</span> <span class="s2">&quot;&quot;</span><span class="p">:</span>
</span><span id="L-744"><a href="#L-744"><span class="linenos"> 744</span></a> <span class="n">significance</span> <span class="o">=</span> <span class="mi">2</span>
</span><span id="L-745"><a href="#L-745"><span class="linenos"> 745</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="L-746"><a href="#L-746"><span class="linenos"> 746</span></a> <span class="n">significance</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="nb">float</span><span class="p">(</span><span class="n">format_type</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s2">&quot;+&quot;</span><span class="p">,</span> <span class="s2">&quot;&quot;</span><span class="p">)</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s2">&quot;-&quot;</span><span class="p">,</span> <span class="s2">&quot;&quot;</span><span class="p">)))</span>
</span><span id="L-747"><a href="#L-747"><span class="linenos"> 747</span></a> <span class="n">my_str</span> <span class="o">=</span> <span class="n">_format_uncertainty</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">value</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_dvalue</span><span class="p">,</span>
</span><span id="L-748"><a href="#L-748"><span class="linenos"> 748</span></a> <span class="n">significance</span><span class="o">=</span><span class="n">significance</span><span class="p">)</span>
</span><span id="L-749"><a href="#L-749"><span class="linenos"> 749</span></a> <span class="k">for</span> <span class="n">char</span> <span class="ow">in</span> <span class="p">[</span><span class="s2">&quot;+&quot;</span><span class="p">,</span> <span class="s2">&quot; &quot;</span><span class="p">]:</span>
</span><span id="L-750"><a href="#L-750"><span class="linenos"> 750</span></a> <span class="k">if</span> <span class="n">format_type</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="n">char</span><span class="p">):</span>
</span><span id="L-751"><a href="#L-751"><span class="linenos"> 751</span></a> <span class="k">if</span> <span class="n">my_str</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">!=</span> <span class="s2">&quot;-&quot;</span><span class="p">:</span>
</span><span id="L-752"><a href="#L-752"><span class="linenos"> 752</span></a> <span class="n">my_str</span> <span class="o">=</span> <span class="n">char</span> <span class="o">+</span> <span class="n">my_str</span>
</span><span id="L-753"><a href="#L-753"><span class="linenos"> 753</span></a> <span class="k">return</span> <span class="n">my_str</span>
</span><span id="L-754"><a href="#L-754"><span class="linenos"> 754</span></a>
</span><span id="L-755"><a href="#L-755"><span class="linenos"> 755</span></a> <span class="k">def</span> <span class="fm">__hash__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
</span><span id="L-756"><a href="#L-756"><span class="linenos"> 756</span></a> <span class="n">hash_tuple</span> <span class="o">=</span> <span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">([</span><span class="bp">self</span><span class="o">.</span><span class="n">value</span><span class="p">])</span><span class="o">.</span><span class="n">astype</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">float32</span><span class="p">)</span><span class="o">.</span><span class="n">data</span><span class="o">.</span><span class="n">tobytes</span><span class="p">(),)</span>
</span><span id="L-757"><a href="#L-757"><span class="linenos"> 757</span></a> <span class="n">hash_tuple</span> <span class="o">+=</span> <span class="nb">tuple</span><span class="p">([</span><span class="n">o</span><span class="o">.</span><span class="n">astype</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">float32</span><span class="p">)</span><span class="o">.</span><span class="n">data</span><span class="o">.</span><span class="n">tobytes</span><span class="p">()</span> <span class="k">for</span> <span class="n">o</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">deltas</span><span class="o">.</span><span class="n">values</span><span class="p">()])</span>
</span><span id="L-758"><a href="#L-758"><span class="linenos"> 758</span></a> <span class="n">hash_tuple</span> <span class="o">+=</span> <span class="nb">tuple</span><span class="p">([</span><span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">([</span><span class="n">o</span><span class="o">.</span><span class="n">errsq</span><span class="p">()])</span><span class="o">.</span><span class="n">astype</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">float32</span><span class="p">)</span><span class="o">.</span><span class="n">data</span><span class="o">.</span><span class="n">tobytes</span><span class="p">()</span> <span class="k">for</span> <span class="n">o</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">covobs</span><span class="o">.</span><span class="n">values</span><span class="p">()])</span>
</span><span id="L-759"><a href="#L-759"><span class="linenos"> 759</span></a> <span class="n">hash_tuple</span> <span class="o">+=</span> <span class="nb">tuple</span><span class="p">([</span><span class="n">o</span><span class="o">.</span><span class="n">encode</span><span class="p">()</span> <span class="k">for</span> <span class="n">o</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">names</span><span class="p">])</span>
</span><span id="L-760"><a href="#L-760"><span class="linenos"> 760</span></a> <span class="n">m</span> <span class="o">=</span> <span class="n">hashlib</span><span class="o">.</span><span class="n">md5</span><span class="p">()</span>
</span><span id="L-761"><a href="#L-761"><span class="linenos"> 761</span></a> <span class="p">[</span><span class="n">m</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="n">o</span><span class="p">)</span> <span class="k">for</span> <span class="n">o</span> <span class="ow">in</span> <span class="n">hash_tuple</span><span class="p">]</span>
</span><span id="L-762"><a href="#L-762"><span class="linenos"> 762</span></a> <span class="k">return</span> <span class="nb">int</span><span class="p">(</span><span class="n">m</span><span class="o">.</span><span class="n">hexdigest</span><span class="p">(),</span> <span class="mi">16</span><span class="p">)</span> <span class="o">&amp;</span> <span class="mh">0xFFFFFFFF</span>
</span><span id="L-763"><a href="#L-763"><span class="linenos"> 763</span></a>
</span><span id="L-764"><a href="#L-764"><span class="linenos"> 764</span></a> <span class="c1"># Overload comparisons</span>
</span><span id="L-765"><a href="#L-765"><span class="linenos"> 765</span></a> <span class="k">def</span> <span class="fm">__lt__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">):</span>
</span><span id="L-766"><a href="#L-766"><span class="linenos"> 766</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">value</span> <span class="o">&lt;</span> <span class="n">other</span>
</span><span id="L-767"><a href="#L-767"><span class="linenos"> 767</span></a>
</span><span id="L-768"><a href="#L-768"><span class="linenos"> 768</span></a> <span class="k">def</span> <span class="fm">__le__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">):</span>
</span><span id="L-769"><a href="#L-769"><span class="linenos"> 769</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">value</span> <span class="o">&lt;=</span> <span class="n">other</span>
</span><span id="L-770"><a href="#L-770"><span class="linenos"> 770</span></a>
</span><span id="L-771"><a href="#L-771"><span class="linenos"> 771</span></a> <span class="k">def</span> <span class="fm">__gt__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">):</span>
</span><span id="L-772"><a href="#L-772"><span class="linenos"> 772</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">value</span> <span class="o">&gt;</span> <span class="n">other</span>
</span><span id="L-773"><a href="#L-773"><span class="linenos"> 773</span></a>
</span><span id="L-774"><a href="#L-774"><span class="linenos"> 774</span></a> <span class="k">def</span> <span class="fm">__ge__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">):</span>
</span><span id="L-775"><a href="#L-775"><span class="linenos"> 775</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">value</span> <span class="o">&gt;=</span> <span class="n">other</span>
</span><span id="L-776"><a href="#L-776"><span class="linenos"> 776</span></a>
</span><span id="L-777"><a href="#L-777"><span class="linenos"> 777</span></a> <span class="k">def</span> <span class="fm">__eq__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">):</span>
</span><span id="L-778"><a href="#L-778"><span class="linenos"> 778</span></a> <span class="k">if</span> <span class="n">other</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
</span><span id="L-779"><a href="#L-779"><span class="linenos"> 779</span></a> <span class="k">return</span> <span class="kc">False</span>
</span><span id="L-780"><a href="#L-780"><span class="linenos"> 780</span></a> <span class="k">return</span> <span class="p">(</span><span class="bp">self</span> <span class="o">-</span> <span class="n">other</span><span class="p">)</span><span class="o">.</span><span class="n">is_zero</span><span class="p">()</span>
</span><span id="L-781"><a href="#L-781"><span class="linenos"> 781</span></a>
</span><span id="L-782"><a href="#L-782"><span class="linenos"> 782</span></a> <span class="c1"># Overload math operations</span>
</span><span id="L-783"><a href="#L-783"><span class="linenos"> 783</span></a> <span class="k">def</span> <span class="fm">__add__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">y</span><span class="p">):</span>
</span><span id="L-784"><a href="#L-784"><span class="linenos"> 784</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">y</span><span class="p">,</span> <span class="n">Obs</span><span class="p">):</span>
</span><span id="L-785"><a href="#L-785"><span class="linenos"> 785</span></a> <span class="k">return</span> <span class="n">derived_observable</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">:</span> <span class="n">x</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">+</span> <span class="n">x</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="p">[</span><span class="bp">self</span><span class="p">,</span> <span class="n">y</span><span class="p">],</span> <span class="n">man_grad</span><span class="o">=</span><span class="p">[</span><span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">])</span>
</span><span id="L-786"><a href="#L-786"><span class="linenos"> 786</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="L-787"><a href="#L-787"><span class="linenos"> 787</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">y</span><span class="p">,</span> <span class="n">np</span><span class="o">.</span><span class="n">ndarray</span><span class="p">):</span>
</span><span id="L-788"><a href="#L-788"><span class="linenos"> 788</span></a> <span class="k">return</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">([</span><span class="bp">self</span> <span class="o">+</span> <span class="n">o</span> <span class="k">for</span> <span class="n">o</span> <span class="ow">in</span> <span class="n">y</span><span class="p">])</span>
</span><span id="L-789"><a href="#L-789"><span class="linenos"> 789</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">y</span><span class="p">,</span> <span class="nb">complex</span><span class="p">):</span>
</span><span id="L-790"><a href="#L-790"><span class="linenos"> 790</span></a> <span class="k">return</span> <span class="n">CObs</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> <span class="o">+</span> <span class="n">y</span>
</span><span id="L-791"><a href="#L-791"><span class="linenos"> 791</span></a> <span class="k">elif</span> <span class="n">y</span><span class="o">.</span><span class="vm">__class__</span><span class="o">.</span><span class="vm">__name__</span> <span class="ow">in</span> <span class="p">[</span><span class="s1">&#39;Corr&#39;</span><span class="p">,</span> <span class="s1">&#39;CObs&#39;</span><span class="p">]:</span>
</span><span id="L-792"><a href="#L-792"><span class="linenos"> 792</span></a> <span class="k">return</span> <span class="bp">NotImplemented</span>
</span><span id="L-793"><a href="#L-793"><span class="linenos"> 793</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="L-794"><a href="#L-794"><span class="linenos"> 794</span></a> <span class="k">return</span> <span class="n">derived_observable</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">:</span> <span class="n">x</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">+</span> <span class="n">y</span><span class="p">,</span> <span class="p">[</span><span class="bp">self</span><span class="p">],</span> <span class="n">man_grad</span><span class="o">=</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span>
</span><span id="L-795"><a href="#L-795"><span class="linenos"> 795</span></a>
</span><span id="L-796"><a href="#L-796"><span class="linenos"> 796</span></a> <span class="k">def</span> <span class="fm">__radd__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">y</span><span class="p">):</span>
</span><span id="L-797"><a href="#L-797"><span class="linenos"> 797</span></a> <span class="k">return</span> <span class="bp">self</span> <span class="o">+</span> <span class="n">y</span>
</span><span id="L-798"><a href="#L-798"><span class="linenos"> 798</span></a>
</span><span id="L-799"><a href="#L-799"><span class="linenos"> 799</span></a> <span class="k">def</span> <span class="fm">__mul__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">y</span><span class="p">):</span>
</span><span id="L-800"><a href="#L-800"><span class="linenos"> 800</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">y</span><span class="p">,</span> <span class="n">Obs</span><span class="p">):</span>
</span><span id="L-801"><a href="#L-801"><span class="linenos"> 801</span></a> <span class="k">return</span> <span class="n">derived_observable</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">:</span> <span class="n">x</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">*</span> <span class="n">x</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="p">[</span><span class="bp">self</span><span class="p">,</span> <span class="n">y</span><span class="p">],</span> <span class="n">man_grad</span><span class="o">=</span><span class="p">[</span><span class="n">y</span><span class="o">.</span><span class="n">value</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">value</span><span class="p">])</span>
</span><span id="L-802"><a href="#L-802"><span class="linenos"> 802</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="L-803"><a href="#L-803"><span class="linenos"> 803</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">y</span><span class="p">,</span> <span class="n">np</span><span class="o">.</span><span class="n">ndarray</span><span class="p">):</span>
</span><span id="L-804"><a href="#L-804"><span class="linenos"> 804</span></a> <span class="k">return</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">([</span><span class="bp">self</span> <span class="o">*</span> <span class="n">o</span> <span class="k">for</span> <span class="n">o</span> <span class="ow">in</span> <span class="n">y</span><span class="p">])</span>
</span><span id="L-805"><a href="#L-805"><span class="linenos"> 805</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">y</span><span class="p">,</span> <span class="nb">complex</span><span class="p">):</span>
</span><span id="L-806"><a href="#L-806"><span class="linenos"> 806</span></a> <span class="k">return</span> <span class="n">CObs</span><span class="p">(</span><span class="bp">self</span> <span class="o">*</span> <span class="n">y</span><span class="o">.</span><span class="n">real</span><span class="p">,</span> <span class="bp">self</span> <span class="o">*</span> <span class="n">y</span><span class="o">.</span><span class="n">imag</span><span class="p">)</span>
</span><span id="L-807"><a href="#L-807"><span class="linenos"> 807</span></a> <span class="k">elif</span> <span class="n">y</span><span class="o">.</span><span class="vm">__class__</span><span class="o">.</span><span class="vm">__name__</span> <span class="ow">in</span> <span class="p">[</span><span class="s1">&#39;Corr&#39;</span><span class="p">,</span> <span class="s1">&#39;CObs&#39;</span><span class="p">]:</span>
</span><span id="L-808"><a href="#L-808"><span class="linenos"> 808</span></a> <span class="k">return</span> <span class="bp">NotImplemented</span>
</span><span id="L-809"><a href="#L-809"><span class="linenos"> 809</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="L-810"><a href="#L-810"><span class="linenos"> 810</span></a> <span class="k">return</span> <span class="n">derived_observable</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">:</span> <span class="n">x</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">*</span> <span class="n">y</span><span class="p">,</span> <span class="p">[</span><span class="bp">self</span><span class="p">],</span> <span class="n">man_grad</span><span class="o">=</span><span class="p">[</span><span class="n">y</span><span class="p">])</span>
</span><span id="L-811"><a href="#L-811"><span class="linenos"> 811</span></a>
</span><span id="L-812"><a href="#L-812"><span class="linenos"> 812</span></a> <span class="k">def</span> <span class="fm">__rmul__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">y</span><span class="p">):</span>
</span><span id="L-813"><a href="#L-813"><span class="linenos"> 813</span></a> <span class="k">return</span> <span class="bp">self</span> <span class="o">*</span> <span class="n">y</span>
</span><span id="L-814"><a href="#L-814"><span class="linenos"> 814</span></a>
</span><span id="L-815"><a href="#L-815"><span class="linenos"> 815</span></a> <span class="k">def</span> <span class="fm">__sub__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">y</span><span class="p">):</span>
</span><span id="L-816"><a href="#L-816"><span class="linenos"> 816</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">y</span><span class="p">,</span> <span class="n">Obs</span><span class="p">):</span>
</span><span id="L-817"><a href="#L-817"><span class="linenos"> 817</span></a> <span class="k">return</span> <span class="n">derived_observable</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">:</span> <span class="n">x</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">-</span> <span class="n">x</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="p">[</span><span class="bp">self</span><span class="p">,</span> <span class="n">y</span><span class="p">],</span> <span class="n">man_grad</span><span class="o">=</span><span class="p">[</span><span class="mi">1</span><span class="p">,</span> <span class="o">-</span><span class="mi">1</span><span class="p">])</span>
</span><span id="L-818"><a href="#L-818"><span class="linenos"> 818</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="L-819"><a href="#L-819"><span class="linenos"> 819</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">y</span><span class="p">,</span> <span class="n">np</span><span class="o">.</span><span class="n">ndarray</span><span class="p">):</span>
</span><span id="L-820"><a href="#L-820"><span class="linenos"> 820</span></a> <span class="k">return</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">([</span><span class="bp">self</span> <span class="o">-</span> <span class="n">o</span> <span class="k">for</span> <span class="n">o</span> <span class="ow">in</span> <span class="n">y</span><span class="p">])</span>
</span><span id="L-821"><a href="#L-821"><span class="linenos"> 821</span></a> <span class="k">elif</span> <span class="n">y</span><span class="o">.</span><span class="vm">__class__</span><span class="o">.</span><span class="vm">__name__</span> <span class="ow">in</span> <span class="p">[</span><span class="s1">&#39;Corr&#39;</span><span class="p">,</span> <span class="s1">&#39;CObs&#39;</span><span class="p">]:</span>
</span><span id="L-822"><a href="#L-822"><span class="linenos"> 822</span></a> <span class="k">return</span> <span class="bp">NotImplemented</span>
</span><span id="L-823"><a href="#L-823"><span class="linenos"> 823</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="L-824"><a href="#L-824"><span class="linenos"> 824</span></a> <span class="k">return</span> <span class="n">derived_observable</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">:</span> <span class="n">x</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">-</span> <span class="n">y</span><span class="p">,</span> <span class="p">[</span><span class="bp">self</span><span class="p">],</span> <span class="n">man_grad</span><span class="o">=</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span>
</span><span id="L-825"><a href="#L-825"><span class="linenos"> 825</span></a>
</span><span id="L-826"><a href="#L-826"><span class="linenos"> 826</span></a> <span class="k">def</span> <span class="fm">__rsub__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">y</span><span class="p">):</span>
</span><span id="L-827"><a href="#L-827"><span class="linenos"> 827</span></a> <span class="k">return</span> <span class="o">-</span><span class="mi">1</span> <span class="o">*</span> <span class="p">(</span><span class="bp">self</span> <span class="o">-</span> <span class="n">y</span><span class="p">)</span>
</span><span id="L-828"><a href="#L-828"><span class="linenos"> 828</span></a>
</span><span id="L-829"><a href="#L-829"><span class="linenos"> 829</span></a> <span class="k">def</span> <span class="fm">__pos__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
</span><span id="L-830"><a href="#L-830"><span class="linenos"> 830</span></a> <span class="k">return</span> <span class="bp">self</span>
</span><span id="L-831"><a href="#L-831"><span class="linenos"> 831</span></a>
</span><span id="L-832"><a href="#L-832"><span class="linenos"> 832</span></a> <span class="k">def</span> <span class="fm">__neg__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
</span><span id="L-833"><a href="#L-833"><span class="linenos"> 833</span></a> <span class="k">return</span> <span class="o">-</span><span class="mi">1</span> <span class="o">*</span> <span class="bp">self</span>
</span><span id="L-834"><a href="#L-834"><span class="linenos"> 834</span></a>
</span><span id="L-835"><a href="#L-835"><span class="linenos"> 835</span></a> <span class="k">def</span> <span class="fm">__truediv__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">y</span><span class="p">):</span>
</span><span id="L-836"><a href="#L-836"><span class="linenos"> 836</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">y</span><span class="p">,</span> <span class="n">Obs</span><span class="p">):</span>
</span><span id="L-837"><a href="#L-837"><span class="linenos"> 837</span></a> <span class="k">return</span> <span class="n">derived_observable</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">:</span> <span class="n">x</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">/</span> <span class="n">x</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="p">[</span><span class="bp">self</span><span class="p">,</span> <span class="n">y</span><span class="p">],</span> <span class="n">man_grad</span><span class="o">=</span><span class="p">[</span><span class="mi">1</span> <span class="o">/</span> <span class="n">y</span><span class="o">.</span><span class="n">value</span><span class="p">,</span> <span class="o">-</span> <span class="bp">self</span><span class="o">.</span><span class="n">value</span> <span class="o">/</span> <span class="n">y</span><span class="o">.</span><span class="n">value</span> <span class="o">**</span> <span class="mi">2</span><span class="p">])</span>
</span><span id="L-838"><a href="#L-838"><span class="linenos"> 838</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="L-839"><a href="#L-839"><span class="linenos"> 839</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">y</span><span class="p">,</span> <span class="n">np</span><span class="o">.</span><span class="n">ndarray</span><span class="p">):</span>
</span><span id="L-840"><a href="#L-840"><span class="linenos"> 840</span></a> <span class="k">return</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">([</span><span class="bp">self</span> <span class="o">/</span> <span class="n">o</span> <span class="k">for</span> <span class="n">o</span> <span class="ow">in</span> <span class="n">y</span><span class="p">])</span>
</span><span id="L-841"><a href="#L-841"><span class="linenos"> 841</span></a> <span class="k">elif</span> <span class="n">y</span><span class="o">.</span><span class="vm">__class__</span><span class="o">.</span><span class="vm">__name__</span> <span class="ow">in</span> <span class="p">[</span><span class="s1">&#39;Corr&#39;</span><span class="p">,</span> <span class="s1">&#39;CObs&#39;</span><span class="p">]:</span>
</span><span id="L-842"><a href="#L-842"><span class="linenos"> 842</span></a> <span class="k">return</span> <span class="bp">NotImplemented</span>
</span><span id="L-843"><a href="#L-843"><span class="linenos"> 843</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="L-844"><a href="#L-844"><span class="linenos"> 844</span></a> <span class="k">return</span> <span class="n">derived_observable</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">:</span> <span class="n">x</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">/</span> <span class="n">y</span><span class="p">,</span> <span class="p">[</span><span class="bp">self</span><span class="p">],</span> <span class="n">man_grad</span><span class="o">=</span><span class="p">[</span><span class="mi">1</span> <span class="o">/</span> <span class="n">y</span><span class="p">])</span>
</span><span id="L-845"><a href="#L-845"><span class="linenos"> 845</span></a>
</span><span id="L-846"><a href="#L-846"><span class="linenos"> 846</span></a> <span class="k">def</span> <span class="fm">__rtruediv__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">y</span><span class="p">):</span>
</span><span id="L-847"><a href="#L-847"><span class="linenos"> 847</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">y</span><span class="p">,</span> <span class="n">Obs</span><span class="p">):</span>
</span><span id="L-848"><a href="#L-848"><span class="linenos"> 848</span></a> <span class="k">return</span> <span class="n">derived_observable</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">:</span> <span class="n">x</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">/</span> <span class="n">x</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="p">[</span><span class="n">y</span><span class="p">,</span> <span class="bp">self</span><span class="p">],</span> <span class="n">man_grad</span><span class="o">=</span><span class="p">[</span><span class="mi">1</span> <span class="o">/</span> <span class="bp">self</span><span class="o">.</span><span class="n">value</span><span class="p">,</span> <span class="o">-</span> <span class="n">y</span><span class="o">.</span><span class="n">value</span> <span class="o">/</span> <span class="bp">self</span><span class="o">.</span><span class="n">value</span> <span class="o">**</span> <span class="mi">2</span><span class="p">])</span>
</span><span id="L-849"><a href="#L-849"><span class="linenos"> 849</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="L-850"><a href="#L-850"><span class="linenos"> 850</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">y</span><span class="p">,</span> <span class="n">np</span><span class="o">.</span><span class="n">ndarray</span><span class="p">):</span>
</span><span id="L-851"><a href="#L-851"><span class="linenos"> 851</span></a> <span class="k">return</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">([</span><span class="n">o</span> <span class="o">/</span> <span class="bp">self</span> <span class="k">for</span> <span class="n">o</span> <span class="ow">in</span> <span class="n">y</span><span class="p">])</span>
</span><span id="L-852"><a href="#L-852"><span class="linenos"> 852</span></a> <span class="k">elif</span> <span class="n">y</span><span class="o">.</span><span class="vm">__class__</span><span class="o">.</span><span class="vm">__name__</span> <span class="ow">in</span> <span class="p">[</span><span class="s1">&#39;Corr&#39;</span><span class="p">,</span> <span class="s1">&#39;CObs&#39;</span><span class="p">]:</span>
</span><span id="L-853"><a href="#L-853"><span class="linenos"> 853</span></a> <span class="k">return</span> <span class="bp">NotImplemented</span>
</span><span id="L-854"><a href="#L-854"><span class="linenos"> 854</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="L-855"><a href="#L-855"><span class="linenos"> 855</span></a> <span class="k">return</span> <span class="n">derived_observable</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">:</span> <span class="n">y</span> <span class="o">/</span> <span class="n">x</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="p">[</span><span class="bp">self</span><span class="p">],</span> <span class="n">man_grad</span><span class="o">=</span><span class="p">[</span><span class="o">-</span><span class="n">y</span> <span class="o">/</span> <span class="bp">self</span><span class="o">.</span><span class="n">value</span> <span class="o">**</span> <span class="mi">2</span><span class="p">])</span>
</span><span id="L-856"><a href="#L-856"><span class="linenos"> 856</span></a>
</span><span id="L-857"><a href="#L-857"><span class="linenos"> 857</span></a> <span class="k">def</span> <span class="fm">__pow__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">y</span><span class="p">):</span>
</span><span id="L-858"><a href="#L-858"><span class="linenos"> 858</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">y</span><span class="p">,</span> <span class="n">Obs</span><span class="p">):</span>
</span><span id="L-859"><a href="#L-859"><span class="linenos"> 859</span></a> <span class="k">return</span> <span class="n">derived_observable</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span><span class="p">:</span> <span class="n">x</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">**</span> <span class="n">x</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="p">[</span><span class="bp">self</span><span class="p">,</span> <span class="n">y</span><span class="p">])</span>
</span><span id="L-860"><a href="#L-860"><span class="linenos"> 860</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="L-861"><a href="#L-861"><span class="linenos"> 861</span></a> <span class="k">return</span> <span class="n">derived_observable</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span><span class="p">:</span> <span class="n">x</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">**</span> <span class="n">y</span><span class="p">,</span> <span class="p">[</span><span class="bp">self</span><span class="p">])</span>
</span><span id="L-862"><a href="#L-862"><span class="linenos"> 862</span></a>
</span><span id="L-863"><a href="#L-863"><span class="linenos"> 863</span></a> <span class="k">def</span> <span class="fm">__rpow__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">y</span><span class="p">):</span>
</span><span id="L-864"><a href="#L-864"><span class="linenos"> 864</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">y</span><span class="p">,</span> <span class="n">Obs</span><span class="p">):</span>
</span><span id="L-865"><a href="#L-865"><span class="linenos"> 865</span></a> <span class="k">return</span> <span class="n">derived_observable</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span><span class="p">:</span> <span class="n">x</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">**</span> <span class="n">x</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="p">[</span><span class="n">y</span><span class="p">,</span> <span class="bp">self</span><span class="p">])</span>
</span><span id="L-866"><a href="#L-866"><span class="linenos"> 866</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="L-867"><a href="#L-867"><span class="linenos"> 867</span></a> <span class="k">return</span> <span class="n">derived_observable</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span><span class="p">:</span> <span class="n">y</span> <span class="o">**</span> <span class="n">x</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="p">[</span><span class="bp">self</span><span class="p">])</span>
</span><span id="L-868"><a href="#L-868"><span class="linenos"> 868</span></a>
</span><span id="L-869"><a href="#L-869"><span class="linenos"> 869</span></a> <span class="k">def</span> <span class="fm">__abs__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
</span><span id="L-870"><a href="#L-870"><span class="linenos"> 870</span></a> <span class="k">return</span> <span class="n">derived_observable</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span><span class="p">:</span> <span class="n">anp</span><span class="o">.</span><span class="n">abs</span><span class="p">(</span><span class="n">x</span><span class="p">[</span><span class="mi">0</span><span class="p">]),</span> <span class="p">[</span><span class="bp">self</span><span class="p">])</span>
</span><span id="L-871"><a href="#L-871"><span class="linenos"> 871</span></a>
</span><span id="L-872"><a href="#L-872"><span class="linenos"> 872</span></a> <span class="c1"># Overload numpy functions</span>
</span><span id="L-873"><a href="#L-873"><span class="linenos"> 873</span></a> <span class="k">def</span> <span class="nf">sqrt</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
</span><span id="L-874"><a href="#L-874"><span class="linenos"> 874</span></a> <span class="k">return</span> <span class="n">derived_observable</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">:</span> <span class="n">np</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="n">x</span><span class="p">[</span><span class="mi">0</span><span class="p">]),</span> <span class="p">[</span><span class="bp">self</span><span class="p">],</span> <span class="n">man_grad</span><span class="o">=</span><span class="p">[</span><span class="mi">1</span> <span class="o">/</span> <span class="mi">2</span> <span class="o">/</span> <span class="n">np</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">value</span><span class="p">)])</span>
</span><span id="L-875"><a href="#L-875"><span class="linenos"> 875</span></a>
</span><span id="L-876"><a href="#L-876"><span class="linenos"> 876</span></a> <span class="k">def</span> <span class="nf">log</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
</span><span id="L-877"><a href="#L-877"><span class="linenos"> 877</span></a> <span class="k">return</span> <span class="n">derived_observable</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">:</span> <span class="n">np</span><span class="o">.</span><span class="n">log</span><span class="p">(</span><span class="n">x</span><span class="p">[</span><span class="mi">0</span><span class="p">]),</span> <span class="p">[</span><span class="bp">self</span><span class="p">],</span> <span class="n">man_grad</span><span class="o">=</span><span class="p">[</span><span class="mi">1</span> <span class="o">/</span> <span class="bp">self</span><span class="o">.</span><span class="n">value</span><span class="p">])</span>
</span><span id="L-878"><a href="#L-878"><span class="linenos"> 878</span></a>
</span><span id="L-879"><a href="#L-879"><span class="linenos"> 879</span></a> <span class="k">def</span> <span class="nf">exp</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
</span><span id="L-880"><a href="#L-880"><span class="linenos"> 880</span></a> <span class="k">return</span> <span class="n">derived_observable</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">:</span> <span class="n">np</span><span class="o">.</span><span class="n">exp</span><span class="p">(</span><span class="n">x</span><span class="p">[</span><span class="mi">0</span><span class="p">]),</span> <span class="p">[</span><span class="bp">self</span><span class="p">],</span> <span class="n">man_grad</span><span class="o">=</span><span class="p">[</span><span class="n">np</span><span class="o">.</span><span class="n">exp</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">value</span><span class="p">)])</span>
</span><span id="L-881"><a href="#L-881"><span class="linenos"> 881</span></a>
</span><span id="L-882"><a href="#L-882"><span class="linenos"> 882</span></a> <span class="k">def</span> <span class="nf">sin</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
</span><span id="L-883"><a href="#L-883"><span class="linenos"> 883</span></a> <span class="k">return</span> <span class="n">derived_observable</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">:</span> <span class="n">np</span><span class="o">.</span><span class="n">sin</span><span class="p">(</span><span class="n">x</span><span class="p">[</span><span class="mi">0</span><span class="p">]),</span> <span class="p">[</span><span class="bp">self</span><span class="p">],</span> <span class="n">man_grad</span><span class="o">=</span><span class="p">[</span><span class="n">np</span><span class="o">.</span><span class="n">cos</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">value</span><span class="p">)])</span>
</span><span id="L-884"><a href="#L-884"><span class="linenos"> 884</span></a>
</span><span id="L-885"><a href="#L-885"><span class="linenos"> 885</span></a> <span class="k">def</span> <span class="nf">cos</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
</span><span id="L-886"><a href="#L-886"><span class="linenos"> 886</span></a> <span class="k">return</span> <span class="n">derived_observable</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">:</span> <span class="n">np</span><span class="o">.</span><span class="n">cos</span><span class="p">(</span><span class="n">x</span><span class="p">[</span><span class="mi">0</span><span class="p">]),</span> <span class="p">[</span><span class="bp">self</span><span class="p">],</span> <span class="n">man_grad</span><span class="o">=</span><span class="p">[</span><span class="o">-</span><span class="n">np</span><span class="o">.</span><span class="n">sin</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">value</span><span class="p">)])</span>
</span><span id="L-887"><a href="#L-887"><span class="linenos"> 887</span></a>
</span><span id="L-888"><a href="#L-888"><span class="linenos"> 888</span></a> <span class="k">def</span> <span class="nf">tan</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
</span><span id="L-889"><a href="#L-889"><span class="linenos"> 889</span></a> <span class="k">return</span> <span class="n">derived_observable</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">:</span> <span class="n">np</span><span class="o">.</span><span class="n">tan</span><span class="p">(</span><span class="n">x</span><span class="p">[</span><span class="mi">0</span><span class="p">]),</span> <span class="p">[</span><span class="bp">self</span><span class="p">],</span> <span class="n">man_grad</span><span class="o">=</span><span class="p">[</span><span class="mi">1</span> <span class="o">/</span> <span class="n">np</span><span class="o">.</span><span class="n">cos</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">value</span><span class="p">)</span> <span class="o">**</span> <span class="mi">2</span><span class="p">])</span>
</span><span id="L-890"><a href="#L-890"><span class="linenos"> 890</span></a>
</span><span id="L-891"><a href="#L-891"><span class="linenos"> 891</span></a> <span class="k">def</span> <span class="nf">arcsin</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
</span><span id="L-892"><a href="#L-892"><span class="linenos"> 892</span></a> <span class="k">return</span> <span class="n">derived_observable</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span><span class="p">:</span> <span class="n">anp</span><span class="o">.</span><span class="n">arcsin</span><span class="p">(</span><span class="n">x</span><span class="p">[</span><span class="mi">0</span><span class="p">]),</span> <span class="p">[</span><span class="bp">self</span><span class="p">])</span>
</span><span id="L-893"><a href="#L-893"><span class="linenos"> 893</span></a>
</span><span id="L-894"><a href="#L-894"><span class="linenos"> 894</span></a> <span class="k">def</span> <span class="nf">arccos</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
</span><span id="L-895"><a href="#L-895"><span class="linenos"> 895</span></a> <span class="k">return</span> <span class="n">derived_observable</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span><span class="p">:</span> <span class="n">anp</span><span class="o">.</span><span class="n">arccos</span><span class="p">(</span><span class="n">x</span><span class="p">[</span><span class="mi">0</span><span class="p">]),</span> <span class="p">[</span><span class="bp">self</span><span class="p">])</span>
</span><span id="L-896"><a href="#L-896"><span class="linenos"> 896</span></a>
</span><span id="L-897"><a href="#L-897"><span class="linenos"> 897</span></a> <span class="k">def</span> <span class="nf">arctan</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
</span><span id="L-898"><a href="#L-898"><span class="linenos"> 898</span></a> <span class="k">return</span> <span class="n">derived_observable</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span><span class="p">:</span> <span class="n">anp</span><span class="o">.</span><span class="n">arctan</span><span class="p">(</span><span class="n">x</span><span class="p">[</span><span class="mi">0</span><span class="p">]),</span> <span class="p">[</span><span class="bp">self</span><span class="p">])</span>
</span><span id="L-899"><a href="#L-899"><span class="linenos"> 899</span></a>
</span><span id="L-900"><a href="#L-900"><span class="linenos"> 900</span></a> <span class="k">def</span> <span class="nf">sinh</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
</span><span id="L-901"><a href="#L-901"><span class="linenos"> 901</span></a> <span class="k">return</span> <span class="n">derived_observable</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">:</span> <span class="n">np</span><span class="o">.</span><span class="n">sinh</span><span class="p">(</span><span class="n">x</span><span class="p">[</span><span class="mi">0</span><span class="p">]),</span> <span class="p">[</span><span class="bp">self</span><span class="p">],</span> <span class="n">man_grad</span><span class="o">=</span><span class="p">[</span><span class="n">np</span><span class="o">.</span><span class="n">cosh</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">value</span><span class="p">)])</span>
</span><span id="L-902"><a href="#L-902"><span class="linenos"> 902</span></a>
</span><span id="L-903"><a href="#L-903"><span class="linenos"> 903</span></a> <span class="k">def</span> <span class="nf">cosh</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
</span><span id="L-904"><a href="#L-904"><span class="linenos"> 904</span></a> <span class="k">return</span> <span class="n">derived_observable</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">:</span> <span class="n">np</span><span class="o">.</span><span class="n">cosh</span><span class="p">(</span><span class="n">x</span><span class="p">[</span><span class="mi">0</span><span class="p">]),</span> <span class="p">[</span><span class="bp">self</span><span class="p">],</span> <span class="n">man_grad</span><span class="o">=</span><span class="p">[</span><span class="n">np</span><span class="o">.</span><span class="n">sinh</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">value</span><span class="p">)])</span>
</span><span id="L-905"><a href="#L-905"><span class="linenos"> 905</span></a>
</span><span id="L-906"><a href="#L-906"><span class="linenos"> 906</span></a> <span class="k">def</span> <span class="nf">tanh</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
</span><span id="L-907"><a href="#L-907"><span class="linenos"> 907</span></a> <span class="k">return</span> <span class="n">derived_observable</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">:</span> <span class="n">np</span><span class="o">.</span><span class="n">tanh</span><span class="p">(</span><span class="n">x</span><span class="p">[</span><span class="mi">0</span><span class="p">]),</span> <span class="p">[</span><span class="bp">self</span><span class="p">],</span> <span class="n">man_grad</span><span class="o">=</span><span class="p">[</span><span class="mi">1</span> <span class="o">/</span> <span class="n">np</span><span class="o">.</span><span class="n">cosh</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">value</span><span class="p">)</span> <span class="o">**</span> <span class="mi">2</span><span class="p">])</span>
</span><span id="L-908"><a href="#L-908"><span class="linenos"> 908</span></a>
</span><span id="L-909"><a href="#L-909"><span class="linenos"> 909</span></a> <span class="k">def</span> <span class="nf">arcsinh</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
</span><span id="L-910"><a href="#L-910"><span class="linenos"> 910</span></a> <span class="k">return</span> <span class="n">derived_observable</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span><span class="p">:</span> <span class="n">anp</span><span class="o">.</span><span class="n">arcsinh</span><span class="p">(</span><span class="n">x</span><span class="p">[</span><span class="mi">0</span><span class="p">]),</span> <span class="p">[</span><span class="bp">self</span><span class="p">])</span>
</span><span id="L-911"><a href="#L-911"><span class="linenos"> 911</span></a>
</span><span id="L-912"><a href="#L-912"><span class="linenos"> 912</span></a> <span class="k">def</span> <span class="nf">arccosh</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
</span><span id="L-913"><a href="#L-913"><span class="linenos"> 913</span></a> <span class="k">return</span> <span class="n">derived_observable</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span><span class="p">:</span> <span class="n">anp</span><span class="o">.</span><span class="n">arccosh</span><span class="p">(</span><span class="n">x</span><span class="p">[</span><span class="mi">0</span><span class="p">]),</span> <span class="p">[</span><span class="bp">self</span><span class="p">])</span>
</span><span id="L-914"><a href="#L-914"><span class="linenos"> 914</span></a>
</span><span id="L-915"><a href="#L-915"><span class="linenos"> 915</span></a> <span class="k">def</span> <span class="nf">arctanh</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
</span><span id="L-916"><a href="#L-916"><span class="linenos"> 916</span></a> <span class="k">return</span> <span class="n">derived_observable</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span><span class="p">:</span> <span class="n">anp</span><span class="o">.</span><span class="n">arctanh</span><span class="p">(</span><span class="n">x</span><span class="p">[</span><span class="mi">0</span><span class="p">]),</span> <span class="p">[</span><span class="bp">self</span><span class="p">])</span>
</span><span id="L-917"><a href="#L-917"><span class="linenos"> 917</span></a>
</span><span id="L-918"><a href="#L-918"><span class="linenos"> 918</span></a>
</span><span id="L-919"><a href="#L-919"><span class="linenos"> 919</span></a><span class="k">class</span> <span class="nc">CObs</span><span class="p">:</span>
</span><span id="L-920"><a href="#L-920"><span class="linenos"> 920</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Class for a complex valued observable.&quot;&quot;&quot;</span>
</span><span id="L-921"><a href="#L-921"><span class="linenos"> 921</span></a> <span class="vm">__slots__</span> <span class="o">=</span> <span class="p">[</span><span class="s1">&#39;_real&#39;</span><span class="p">,</span> <span class="s1">&#39;_imag&#39;</span><span class="p">,</span> <span class="s1">&#39;tag&#39;</span><span class="p">]</span>
</span><span id="L-922"><a href="#L-922"><span class="linenos"> 922</span></a>
</span><span id="L-923"><a href="#L-923"><span class="linenos"> 923</span></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">real</span><span class="p">,</span> <span class="n">imag</span><span class="o">=</span><span class="mf">0.0</span><span class="p">):</span>
</span><span id="L-924"><a href="#L-924"><span class="linenos"> 924</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_real</span> <span class="o">=</span> <span class="n">real</span>
</span><span id="L-925"><a href="#L-925"><span class="linenos"> 925</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_imag</span> <span class="o">=</span> <span class="n">imag</span>
</span><span id="L-926"><a href="#L-926"><span class="linenos"> 926</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">tag</span> <span class="o">=</span> <span class="kc">None</span>
</span><span id="L-927"><a href="#L-927"><span class="linenos"> 927</span></a>
</span><span id="L-928"><a href="#L-928"><span class="linenos"> 928</span></a> <span class="nd">@property</span>
</span><span id="L-929"><a href="#L-929"><span class="linenos"> 929</span></a> <span class="k">def</span> <span class="nf">real</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
</span><span id="L-930"><a href="#L-930"><span class="linenos"> 930</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_real</span>
</span><span id="L-931"><a href="#L-931"><span class="linenos"> 931</span></a>
</span><span id="L-932"><a href="#L-932"><span class="linenos"> 932</span></a> <span class="nd">@property</span>
</span><span id="L-933"><a href="#L-933"><span class="linenos"> 933</span></a> <span class="k">def</span> <span class="nf">imag</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
</span><span id="L-934"><a href="#L-934"><span class="linenos"> 934</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_imag</span>
</span><span id="L-935"><a href="#L-935"><span class="linenos"> 935</span></a>
</span><span id="L-936"><a href="#L-936"><span class="linenos"> 936</span></a> <span class="k">def</span> <span class="nf">gamma_method</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
</span><span id="L-937"><a href="#L-937"><span class="linenos"> 937</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Executes the gamma_method for the real and the imaginary part.&quot;&quot;&quot;</span>
</span><span id="L-938"><a href="#L-938"><span class="linenos"> 938</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">real</span><span class="p">,</span> <span class="n">Obs</span><span class="p">):</span>
</span><span id="L-939"><a href="#L-939"><span class="linenos"> 939</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">real</span><span class="o">.</span><span class="n">gamma_method</span><span class="p">(</span><span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
</span><span id="L-940"><a href="#L-940"><span class="linenos"> 940</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">imag</span><span class="p">,</span> <span class="n">Obs</span><span class="p">):</span>
</span><span id="L-941"><a href="#L-941"><span class="linenos"> 941</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">imag</span><span class="o">.</span><span class="n">gamma_method</span><span class="p">(</span><span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
</span><span id="L-942"><a href="#L-942"><span class="linenos"> 942</span></a>
</span><span id="L-943"><a href="#L-943"><span class="linenos"> 943</span></a> <span class="k">def</span> <span class="nf">is_zero</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
</span><span id="L-944"><a href="#L-944"><span class="linenos"> 944</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Checks whether both real and imaginary part are zero within machine precision.&quot;&quot;&quot;</span>
</span><span id="L-945"><a href="#L-945"><span class="linenos"> 945</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">real</span> <span class="o">==</span> <span class="mf">0.0</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">imag</span> <span class="o">==</span> <span class="mf">0.0</span>
</span><span id="L-946"><a href="#L-946"><span class="linenos"> 946</span></a>
</span><span id="L-947"><a href="#L-947"><span class="linenos"> 947</span></a> <span class="k">def</span> <span class="nf">conjugate</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
</span><span id="L-948"><a href="#L-948"><span class="linenos"> 948</span></a> <span class="k">return</span> <span class="n">CObs</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">real</span><span class="p">,</span> <span class="o">-</span><span class="bp">self</span><span class="o">.</span><span class="n">imag</span><span class="p">)</span>
</span><span id="L-949"><a href="#L-949"><span class="linenos"> 949</span></a>
</span><span id="L-950"><a href="#L-950"><span class="linenos"> 950</span></a> <span class="k">def</span> <span class="fm">__add__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">):</span>
</span><span id="L-951"><a href="#L-951"><span class="linenos"> 951</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">other</span><span class="p">,</span> <span class="n">np</span><span class="o">.</span><span class="n">ndarray</span><span class="p">):</span>
</span><span id="L-952"><a href="#L-952"><span class="linenos"> 952</span></a> <span class="k">return</span> <span class="n">other</span> <span class="o">+</span> <span class="bp">self</span>
</span><span id="L-953"><a href="#L-953"><span class="linenos"> 953</span></a> <span class="k">elif</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">other</span><span class="p">,</span> <span class="s1">&#39;real&#39;</span><span class="p">)</span> <span class="ow">and</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">other</span><span class="p">,</span> <span class="s1">&#39;imag&#39;</span><span class="p">):</span>
</span><span id="L-954"><a href="#L-954"><span class="linenos"> 954</span></a> <span class="k">return</span> <span class="n">CObs</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">real</span> <span class="o">+</span> <span class="n">other</span><span class="o">.</span><span class="n">real</span><span class="p">,</span>
</span><span id="L-955"><a href="#L-955"><span class="linenos"> 955</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">imag</span> <span class="o">+</span> <span class="n">other</span><span class="o">.</span><span class="n">imag</span><span class="p">)</span>
</span><span id="L-956"><a href="#L-956"><span class="linenos"> 956</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="L-957"><a href="#L-957"><span class="linenos"> 957</span></a> <span class="k">return</span> <span class="n">CObs</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">real</span> <span class="o">+</span> <span class="n">other</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">imag</span><span class="p">)</span>
</span><span id="L-958"><a href="#L-958"><span class="linenos"> 958</span></a>
</span><span id="L-959"><a href="#L-959"><span class="linenos"> 959</span></a> <span class="k">def</span> <span class="fm">__radd__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">y</span><span class="p">):</span>
</span><span id="L-960"><a href="#L-960"><span class="linenos"> 960</span></a> <span class="k">return</span> <span class="bp">self</span> <span class="o">+</span> <span class="n">y</span>
</span><span id="L-961"><a href="#L-961"><span class="linenos"> 961</span></a>
</span><span id="L-962"><a href="#L-962"><span class="linenos"> 962</span></a> <span class="k">def</span> <span class="fm">__sub__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">):</span>
</span><span id="L-963"><a href="#L-963"><span class="linenos"> 963</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">other</span><span class="p">,</span> <span class="n">np</span><span class="o">.</span><span class="n">ndarray</span><span class="p">):</span>
</span><span id="L-964"><a href="#L-964"><span class="linenos"> 964</span></a> <span class="k">return</span> <span class="o">-</span><span class="mi">1</span> <span class="o">*</span> <span class="p">(</span><span class="n">other</span> <span class="o">-</span> <span class="bp">self</span><span class="p">)</span>
</span><span id="L-965"><a href="#L-965"><span class="linenos"> 965</span></a> <span class="k">elif</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">other</span><span class="p">,</span> <span class="s1">&#39;real&#39;</span><span class="p">)</span> <span class="ow">and</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">other</span><span class="p">,</span> <span class="s1">&#39;imag&#39;</span><span class="p">):</span>
</span><span id="L-966"><a href="#L-966"><span class="linenos"> 966</span></a> <span class="k">return</span> <span class="n">CObs</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">real</span> <span class="o">-</span> <span class="n">other</span><span class="o">.</span><span class="n">real</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">imag</span> <span class="o">-</span> <span class="n">other</span><span class="o">.</span><span class="n">imag</span><span class="p">)</span>
</span><span id="L-967"><a href="#L-967"><span class="linenos"> 967</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="L-968"><a href="#L-968"><span class="linenos"> 968</span></a> <span class="k">return</span> <span class="n">CObs</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">real</span> <span class="o">-</span> <span class="n">other</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">imag</span><span class="p">)</span>
</span><span id="L-969"><a href="#L-969"><span class="linenos"> 969</span></a>
</span><span id="L-970"><a href="#L-970"><span class="linenos"> 970</span></a> <span class="k">def</span> <span class="fm">__rsub__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">):</span>
</span><span id="L-971"><a href="#L-971"><span class="linenos"> 971</span></a> <span class="k">return</span> <span class="o">-</span><span class="mi">1</span> <span class="o">*</span> <span class="p">(</span><span class="bp">self</span> <span class="o">-</span> <span class="n">other</span><span class="p">)</span>
</span><span id="L-972"><a href="#L-972"><span class="linenos"> 972</span></a>
</span><span id="L-973"><a href="#L-973"><span class="linenos"> 973</span></a> <span class="k">def</span> <span class="fm">__mul__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">):</span>
</span><span id="L-974"><a href="#L-974"><span class="linenos"> 974</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">other</span><span class="p">,</span> <span class="n">np</span><span class="o">.</span><span class="n">ndarray</span><span class="p">):</span>
</span><span id="L-975"><a href="#L-975"><span class="linenos"> 975</span></a> <span class="k">return</span> <span class="n">other</span> <span class="o">*</span> <span class="bp">self</span>
</span><span id="L-976"><a href="#L-976"><span class="linenos"> 976</span></a> <span class="k">elif</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">other</span><span class="p">,</span> <span class="s1">&#39;real&#39;</span><span class="p">)</span> <span class="ow">and</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">other</span><span class="p">,</span> <span class="s1">&#39;imag&#39;</span><span class="p">):</span>
</span><span id="L-977"><a href="#L-977"><span class="linenos"> 977</span></a> <span class="k">if</span> <span class="nb">all</span><span class="p">(</span><span class="nb">isinstance</span><span class="p">(</span><span class="n">i</span><span class="p">,</span> <span class="n">Obs</span><span class="p">)</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">real</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">imag</span><span class="p">,</span> <span class="n">other</span><span class="o">.</span><span class="n">real</span><span class="p">,</span> <span class="n">other</span><span class="o">.</span><span class="n">imag</span><span class="p">]):</span>
</span><span id="L-978"><a href="#L-978"><span class="linenos"> 978</span></a> <span class="k">return</span> <span class="n">CObs</span><span class="p">(</span><span class="n">derived_observable</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">:</span> <span class="n">x</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">*</span> <span class="n">x</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">-</span> <span class="n">x</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="o">*</span> <span class="n">x</span><span class="p">[</span><span class="mi">3</span><span class="p">],</span>
</span><span id="L-979"><a href="#L-979"><span class="linenos"> 979</span></a> <span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">real</span><span class="p">,</span> <span class="n">other</span><span class="o">.</span><span class="n">real</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">imag</span><span class="p">,</span> <span class="n">other</span><span class="o">.</span><span class="n">imag</span><span class="p">],</span>
</span><span id="L-980"><a href="#L-980"><span class="linenos"> 980</span></a> <span class="n">man_grad</span><span class="o">=</span><span class="p">[</span><span class="n">other</span><span class="o">.</span><span class="n">real</span><span class="o">.</span><span class="n">value</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">real</span><span class="o">.</span><span class="n">value</span><span class="p">,</span> <span class="o">-</span><span class="n">other</span><span class="o">.</span><span class="n">imag</span><span class="o">.</span><span class="n">value</span><span class="p">,</span> <span class="o">-</span><span class="bp">self</span><span class="o">.</span><span class="n">imag</span><span class="o">.</span><span class="n">value</span><span class="p">]),</span>
</span><span id="L-981"><a href="#L-981"><span class="linenos"> 981</span></a> <span class="n">derived_observable</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">:</span> <span class="n">x</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="o">*</span> <span class="n">x</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">+</span> <span class="n">x</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">*</span> <span class="n">x</span><span class="p">[</span><span class="mi">3</span><span class="p">],</span>
</span><span id="L-982"><a href="#L-982"><span class="linenos"> 982</span></a> <span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">real</span><span class="p">,</span> <span class="n">other</span><span class="o">.</span><span class="n">real</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">imag</span><span class="p">,</span> <span class="n">other</span><span class="o">.</span><span class="n">imag</span><span class="p">],</span>
</span><span id="L-983"><a href="#L-983"><span class="linenos"> 983</span></a> <span class="n">man_grad</span><span class="o">=</span><span class="p">[</span><span class="n">other</span><span class="o">.</span><span class="n">imag</span><span class="o">.</span><span class="n">value</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">imag</span><span class="o">.</span><span class="n">value</span><span class="p">,</span> <span class="n">other</span><span class="o">.</span><span class="n">real</span><span class="o">.</span><span class="n">value</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">real</span><span class="o">.</span><span class="n">value</span><span class="p">]))</span>
</span><span id="L-984"><a href="#L-984"><span class="linenos"> 984</span></a> <span class="k">elif</span> <span class="nb">getattr</span><span class="p">(</span><span class="n">other</span><span class="p">,</span> <span class="s1">&#39;imag&#39;</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">:</span>
</span><span id="L-985"><a href="#L-985"><span class="linenos"> 985</span></a> <span class="k">return</span> <span class="n">CObs</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">real</span> <span class="o">*</span> <span class="n">other</span><span class="o">.</span><span class="n">real</span> <span class="o">-</span> <span class="bp">self</span><span class="o">.</span><span class="n">imag</span> <span class="o">*</span> <span class="n">other</span><span class="o">.</span><span class="n">imag</span><span class="p">,</span>
</span><span id="L-986"><a href="#L-986"><span class="linenos"> 986</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">imag</span> <span class="o">*</span> <span class="n">other</span><span class="o">.</span><span class="n">real</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">real</span> <span class="o">*</span> <span class="n">other</span><span class="o">.</span><span class="n">imag</span><span class="p">)</span>
</span><span id="L-987"><a href="#L-987"><span class="linenos"> 987</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="L-988"><a href="#L-988"><span class="linenos"> 988</span></a> <span class="k">return</span> <span class="n">CObs</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">real</span> <span class="o">*</span> <span class="n">other</span><span class="o">.</span><span class="n">real</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">imag</span> <span class="o">*</span> <span class="n">other</span><span class="o">.</span><span class="n">real</span><span class="p">)</span>
</span><span id="L-989"><a href="#L-989"><span class="linenos"> 989</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="L-990"><a href="#L-990"><span class="linenos"> 990</span></a> <span class="k">return</span> <span class="n">CObs</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">real</span> <span class="o">*</span> <span class="n">other</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">imag</span> <span class="o">*</span> <span class="n">other</span><span class="p">)</span>
</span><span id="L-991"><a href="#L-991"><span class="linenos"> 991</span></a>
</span><span id="L-992"><a href="#L-992"><span class="linenos"> 992</span></a> <span class="k">def</span> <span class="fm">__rmul__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">):</span>
</span><span id="L-993"><a href="#L-993"><span class="linenos"> 993</span></a> <span class="k">return</span> <span class="bp">self</span> <span class="o">*</span> <span class="n">other</span>
</span><span id="L-994"><a href="#L-994"><span class="linenos"> 994</span></a>
</span><span id="L-995"><a href="#L-995"><span class="linenos"> 995</span></a> <span class="k">def</span> <span class="fm">__truediv__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">):</span>
</span><span id="L-996"><a href="#L-996"><span class="linenos"> 996</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">other</span><span class="p">,</span> <span class="n">np</span><span class="o">.</span><span class="n">ndarray</span><span class="p">):</span>
</span><span id="L-997"><a href="#L-997"><span class="linenos"> 997</span></a> <span class="k">return</span> <span class="mi">1</span> <span class="o">/</span> <span class="p">(</span><span class="n">other</span> <span class="o">/</span> <span class="bp">self</span><span class="p">)</span>
</span><span id="L-998"><a href="#L-998"><span class="linenos"> 998</span></a> <span class="k">elif</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">other</span><span class="p">,</span> <span class="s1">&#39;real&#39;</span><span class="p">)</span> <span class="ow">and</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">other</span><span class="p">,</span> <span class="s1">&#39;imag&#39;</span><span class="p">):</span>
</span><span id="L-999"><a href="#L-999"><span class="linenos"> 999</span></a> <span class="n">r</span> <span class="o">=</span> <span class="n">other</span><span class="o">.</span><span class="n">real</span> <span class="o">**</span> <span class="mi">2</span> <span class="o">+</span> <span class="n">other</span><span class="o">.</span><span class="n">imag</span> <span class="o">**</span> <span class="mi">2</span>
</span><span id="L-1000"><a href="#L-1000"><span class="linenos">1000</span></a> <span class="k">return</span> <span class="n">CObs</span><span class="p">((</span><span class="bp">self</span><span class="o">.</span><span class="n">real</span> <span class="o">*</span> <span class="n">other</span><span class="o">.</span><span class="n">real</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">imag</span> <span class="o">*</span> <span class="n">other</span><span class="o">.</span><span class="n">imag</span><span class="p">)</span> <span class="o">/</span> <span class="n">r</span><span class="p">,</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">imag</span> <span class="o">*</span> <span class="n">other</span><span class="o">.</span><span class="n">real</span> <span class="o">-</span> <span class="bp">self</span><span class="o">.</span><span class="n">real</span> <span class="o">*</span> <span class="n">other</span><span class="o">.</span><span class="n">imag</span><span class="p">)</span> <span class="o">/</span> <span class="n">r</span><span class="p">)</span>
</span><span id="L-1001"><a href="#L-1001"><span class="linenos">1001</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="L-1002"><a href="#L-1002"><span class="linenos">1002</span></a> <span class="k">return</span> <span class="n">CObs</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">real</span> <span class="o">/</span> <span class="n">other</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">imag</span> <span class="o">/</span> <span class="n">other</span><span class="p">)</span>
</span><span id="L-1003"><a href="#L-1003"><span class="linenos">1003</span></a>
</span><span id="L-1004"><a href="#L-1004"><span class="linenos">1004</span></a> <span class="k">def</span> <span class="fm">__rtruediv__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">):</span>
</span><span id="L-1005"><a href="#L-1005"><span class="linenos">1005</span></a> <span class="n">r</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">real</span> <span class="o">**</span> <span class="mi">2</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">imag</span> <span class="o">**</span> <span class="mi">2</span>
</span><span id="L-1006"><a href="#L-1006"><span class="linenos">1006</span></a> <span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">other</span><span class="p">,</span> <span class="s1">&#39;real&#39;</span><span class="p">)</span> <span class="ow">and</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">other</span><span class="p">,</span> <span class="s1">&#39;imag&#39;</span><span class="p">):</span>
</span><span id="L-1007"><a href="#L-1007"><span class="linenos">1007</span></a> <span class="k">return</span> <span class="n">CObs</span><span class="p">((</span><span class="bp">self</span><span class="o">.</span><span class="n">real</span> <span class="o">*</span> <span class="n">other</span><span class="o">.</span><span class="n">real</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">imag</span> <span class="o">*</span> <span class="n">other</span><span class="o">.</span><span class="n">imag</span><span class="p">)</span> <span class="o">/</span> <span class="n">r</span><span class="p">,</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">real</span> <span class="o">*</span> <span class="n">other</span><span class="o">.</span><span class="n">imag</span> <span class="o">-</span> <span class="bp">self</span><span class="o">.</span><span class="n">imag</span> <span class="o">*</span> <span class="n">other</span><span class="o">.</span><span class="n">real</span><span class="p">)</span> <span class="o">/</span> <span class="n">r</span><span class="p">)</span>
</span><span id="L-1008"><a href="#L-1008"><span class="linenos">1008</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="L-1009"><a href="#L-1009"><span class="linenos">1009</span></a> <span class="k">return</span> <span class="n">CObs</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">real</span> <span class="o">*</span> <span class="n">other</span> <span class="o">/</span> <span class="n">r</span><span class="p">,</span> <span class="o">-</span><span class="bp">self</span><span class="o">.</span><span class="n">imag</span> <span class="o">*</span> <span class="n">other</span> <span class="o">/</span> <span class="n">r</span><span class="p">)</span>
</span><span id="L-1010"><a href="#L-1010"><span class="linenos">1010</span></a>
</span><span id="L-1011"><a href="#L-1011"><span class="linenos">1011</span></a> <span class="k">def</span> <span class="fm">__abs__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
</span><span id="L-1012"><a href="#L-1012"><span class="linenos">1012</span></a> <span class="k">return</span> <span class="n">np</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">real</span><span class="o">**</span><span class="mi">2</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">imag</span><span class="o">**</span><span class="mi">2</span><span class="p">)</span>
</span><span id="L-1013"><a href="#L-1013"><span class="linenos">1013</span></a>
</span><span id="L-1014"><a href="#L-1014"><span class="linenos">1014</span></a> <span class="k">def</span> <span class="fm">__pos__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
</span><span id="L-1015"><a href="#L-1015"><span class="linenos">1015</span></a> <span class="k">return</span> <span class="bp">self</span>
</span><span id="L-1016"><a href="#L-1016"><span class="linenos">1016</span></a>
</span><span id="L-1017"><a href="#L-1017"><span class="linenos">1017</span></a> <span class="k">def</span> <span class="fm">__neg__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
</span><span id="L-1018"><a href="#L-1018"><span class="linenos">1018</span></a> <span class="k">return</span> <span class="o">-</span><span class="mi">1</span> <span class="o">*</span> <span class="bp">self</span>
</span><span id="L-1019"><a href="#L-1019"><span class="linenos">1019</span></a>
</span><span id="L-1020"><a href="#L-1020"><span class="linenos">1020</span></a> <span class="k">def</span> <span class="fm">__eq__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">):</span>
</span><span id="L-1021"><a href="#L-1021"><span class="linenos">1021</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">real</span> <span class="o">==</span> <span class="n">other</span><span class="o">.</span><span class="n">real</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">imag</span> <span class="o">==</span> <span class="n">other</span><span class="o">.</span><span class="n">imag</span>
</span><span id="L-1022"><a href="#L-1022"><span class="linenos">1022</span></a>
</span><span id="L-1023"><a href="#L-1023"><span class="linenos">1023</span></a> <span class="k">def</span> <span class="fm">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
</span><span id="L-1024"><a href="#L-1024"><span class="linenos">1024</span></a> <span class="k">return</span> <span class="s1">&#39;(&#39;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">real</span><span class="p">)</span> <span class="o">+</span> <span class="nb">int</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">imag</span> <span class="o">&gt;=</span> <span class="mf">0.0</span><span class="p">)</span> <span class="o">*</span> <span class="s1">&#39;+&#39;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">imag</span><span class="p">)</span> <span class="o">+</span> <span class="s1">&#39;j)&#39;</span>
</span><span id="L-1025"><a href="#L-1025"><span class="linenos">1025</span></a>
</span><span id="L-1026"><a href="#L-1026"><span class="linenos">1026</span></a> <span class="k">def</span> <span class="fm">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
</span><span id="L-1027"><a href="#L-1027"><span class="linenos">1027</span></a> <span class="k">return</span> <span class="s1">&#39;CObs[&#39;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">+</span> <span class="s1">&#39;]&#39;</span>
</span><span id="L-1028"><a href="#L-1028"><span class="linenos">1028</span></a>
</span><span id="L-1029"><a href="#L-1029"><span class="linenos">1029</span></a> <span class="k">def</span> <span class="fm">__format__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">format_type</span><span class="p">):</span>
</span><span id="L-1030"><a href="#L-1030"><span class="linenos">1030</span></a> <span class="k">if</span> <span class="n">format_type</span> <span class="o">==</span> <span class="s2">&quot;&quot;</span><span class="p">:</span>
</span><span id="L-1031"><a href="#L-1031"><span class="linenos">1031</span></a> <span class="n">significance</span> <span class="o">=</span> <span class="mi">2</span>
</span><span id="L-1032"><a href="#L-1032"><span class="linenos">1032</span></a> <span class="n">format_type</span> <span class="o">=</span> <span class="s2">&quot;2&quot;</span>
</span><span id="L-1033"><a href="#L-1033"><span class="linenos">1033</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="L-1034"><a href="#L-1034"><span class="linenos">1034</span></a> <span class="n">significance</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="nb">float</span><span class="p">(</span><span class="n">format_type</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s2">&quot;+&quot;</span><span class="p">,</span> <span class="s2">&quot;&quot;</span><span class="p">)</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s2">&quot;-&quot;</span><span class="p">,</span> <span class="s2">&quot;&quot;</span><span class="p">)))</span>
</span><span id="L-1035"><a href="#L-1035"><span class="linenos">1035</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">&quot;(</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">real</span><span class="si">:{</span><span class="n">format_type</span><span class="si">}}{</span><span class="bp">self</span><span class="o">.</span><span class="n">imag</span><span class="si">:</span><span class="s2">+</span><span class="si">{</span><span class="n">significance</span><span class="si">}}</span><span class="s2">j)&quot;</span>
</span><span id="L-1036"><a href="#L-1036"><span class="linenos">1036</span></a>
</span><span id="L-1037"><a href="#L-1037"><span class="linenos">1037</span></a>
</span><span id="L-1038"><a href="#L-1038"><span class="linenos">1038</span></a><span class="k">def</span> <span class="nf">gamma_method</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
</span><span id="L-1039"><a href="#L-1039"><span class="linenos">1039</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Vectorized version of the gamma_method applicable to lists or arrays of Obs.</span>
</span><span id="L-1040"><a href="#L-1040"><span class="linenos">1040</span></a>
</span><span id="L-1041"><a href="#L-1041"><span class="linenos">1041</span></a><span class="sd"> See docstring of pe.Obs.gamma_method for details.</span>
</span><span id="L-1042"><a href="#L-1042"><span class="linenos">1042</span></a><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="L-1043"><a href="#L-1043"><span class="linenos">1043</span></a> <span class="k">return</span> <span class="n">np</span><span class="o">.</span><span class="n">vectorize</span><span class="p">(</span><span class="k">lambda</span> <span class="n">o</span><span class="p">:</span> <span class="n">o</span><span class="o">.</span><span class="n">gm</span><span class="p">(</span><span class="o">**</span><span class="n">kwargs</span><span class="p">))(</span><span class="n">x</span><span class="p">)</span>
</span><span id="L-1044"><a href="#L-1044"><span class="linenos">1044</span></a>
</span><span id="L-1045"><a href="#L-1045"><span class="linenos">1045</span></a>
</span><span id="L-1046"><a href="#L-1046"><span class="linenos">1046</span></a><span class="n">gm</span> <span class="o">=</span> <span class="n">gamma_method</span>
</span><span id="L-1047"><a href="#L-1047"><span class="linenos">1047</span></a>
</span><span id="L-1048"><a href="#L-1048"><span class="linenos">1048</span></a>
</span><span id="L-1049"><a href="#L-1049"><span class="linenos">1049</span></a><span class="k">def</span> <span class="nf">_format_uncertainty</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="n">dvalue</span><span class="p">,</span> <span class="n">significance</span><span class="o">=</span><span class="mi">2</span><span class="p">):</span>
</span><span id="L-1050"><a href="#L-1050"><span class="linenos">1050</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Creates a string of a value and its error in paranthesis notation, e.g., 13.02(45)&quot;&quot;&quot;</span>
</span><span id="L-1051"><a href="#L-1051"><span class="linenos">1051</span></a> <span class="k">if</span> <span class="n">dvalue</span> <span class="o">==</span> <span class="mf">0.0</span> <span class="ow">or</span> <span class="p">(</span><span class="ow">not</span> <span class="n">np</span><span class="o">.</span><span class="n">isfinite</span><span class="p">(</span><span class="n">dvalue</span><span class="p">)):</span>
</span><span id="L-1052"><a href="#L-1052"><span class="linenos">1052</span></a> <span class="k">return</span> <span class="nb">str</span><span class="p">(</span><span class="n">value</span><span class="p">)</span>
</span><span id="L-1053"><a href="#L-1053"><span class="linenos">1053</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">significance</span><span class="p">,</span> <span class="nb">int</span><span class="p">):</span>
</span><span id="L-1054"><a href="#L-1054"><span class="linenos">1054</span></a> <span class="k">raise</span> <span class="ne">TypeError</span><span class="p">(</span><span class="s2">&quot;significance needs to be an integer.&quot;</span><span class="p">)</span>
</span><span id="L-1055"><a href="#L-1055"><span class="linenos">1055</span></a> <span class="k">if</span> <span class="n">significance</span> <span class="o">&lt;</span> <span class="mi">1</span><span class="p">:</span>
</span><span id="L-1056"><a href="#L-1056"><span class="linenos">1056</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;significance needs to be larger than zero.&quot;</span><span class="p">)</span>
</span><span id="L-1057"><a href="#L-1057"><span class="linenos">1057</span></a> <span class="n">fexp</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">floor</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">log10</span><span class="p">(</span><span class="n">dvalue</span><span class="p">))</span>
</span><span id="L-1058"><a href="#L-1058"><span class="linenos">1058</span></a> <span class="k">if</span> <span class="n">fexp</span> <span class="o">&lt;</span> <span class="mf">0.0</span><span class="p">:</span>
</span><span id="L-1059"><a href="#L-1059"><span class="linenos">1059</span></a> <span class="k">return</span> <span class="s1">&#39;{:</span><span class="si">{form}</span><span class="s1">}(</span><span class="si">{:1.0f}</span><span class="s1">)&#39;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="n">dvalue</span> <span class="o">*</span> <span class="mi">10</span> <span class="o">**</span> <span class="p">(</span><span class="o">-</span><span class="n">fexp</span> <span class="o">+</span> <span class="n">significance</span> <span class="o">-</span> <span class="mi">1</span><span class="p">),</span> <span class="n">form</span><span class="o">=</span><span class="s1">&#39;.&#39;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="o">-</span><span class="nb">int</span><span class="p">(</span><span class="n">fexp</span><span class="p">)</span> <span class="o">+</span> <span class="n">significance</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> <span class="o">+</span> <span class="s1">&#39;f&#39;</span><span class="p">)</span>
</span><span id="L-1060"><a href="#L-1060"><span class="linenos">1060</span></a> <span class="k">elif</span> <span class="n">fexp</span> <span class="o">==</span> <span class="mf">0.0</span><span class="p">:</span>
</span><span id="L-1061"><a href="#L-1061"><span class="linenos">1061</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">value</span><span class="si">:</span><span class="s2">.</span><span class="si">{</span><span class="n">significance</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mi">1</span><span class="si">}</span><span class="s2">f</span><span class="si">}</span><span class="s2">(</span><span class="si">{</span><span class="n">dvalue</span><span class="si">:</span><span class="s2">1.</span><span class="si">{</span><span class="n">significance</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mi">1</span><span class="si">}</span><span class="s2">f</span><span class="si">}</span><span class="s2">)&quot;</span>
</span><span id="L-1062"><a href="#L-1062"><span class="linenos">1062</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="L-1063"><a href="#L-1063"><span class="linenos">1063</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">value</span><span class="si">:</span><span class="s2">.</span><span class="si">{</span><span class="nb">max</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="nb">int</span><span class="p">(</span><span class="n">significance</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="n">fexp</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mi">1</span><span class="p">))</span><span class="si">}</span><span class="s2">f</span><span class="si">}</span><span class="s2">(</span><span class="si">{</span><span class="n">dvalue</span><span class="si">:</span><span class="s2">2.</span><span class="si">{</span><span class="nb">max</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="nb">int</span><span class="p">(</span><span class="n">significance</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="n">fexp</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mi">1</span><span class="p">))</span><span class="si">}</span><span class="s2">f</span><span class="si">}</span><span class="s2">)&quot;</span>
</span><span id="L-1064"><a href="#L-1064"><span class="linenos">1064</span></a>
</span><span id="L-1065"><a href="#L-1065"><span class="linenos">1065</span></a>
</span><span id="L-1066"><a href="#L-1066"><span class="linenos">1066</span></a><span class="k">def</span> <span class="nf">_expand_deltas</span><span class="p">(</span><span class="n">deltas</span><span class="p">,</span> <span class="n">idx</span><span class="p">,</span> <span class="n">shape</span><span class="p">,</span> <span class="n">gapsize</span><span class="p">):</span>
</span><span id="L-1067"><a href="#L-1067"><span class="linenos">1067</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Expand deltas defined on idx to a regular range with spacing gapsize between two</span>
</span><span id="L-1068"><a href="#L-1068"><span class="linenos">1068</span></a><span class="sd"> configurations and where holes are filled by 0.</span>
</span><span id="L-1069"><a href="#L-1069"><span class="linenos">1069</span></a><span class="sd"> If idx is of type range, the deltas are not changed if the idx.step == gapsize.</span>
</span><span id="L-1070"><a href="#L-1070"><span class="linenos">1070</span></a>
</span><span id="L-1071"><a href="#L-1071"><span class="linenos">1071</span></a><span class="sd"> Parameters</span>
</span><span id="L-1072"><a href="#L-1072"><span class="linenos">1072</span></a><span class="sd"> ----------</span>
</span><span id="L-1073"><a href="#L-1073"><span class="linenos">1073</span></a><span class="sd"> deltas : list</span>
</span><span id="L-1074"><a href="#L-1074"><span class="linenos">1074</span></a><span class="sd"> List of fluctuations</span>
</span><span id="L-1075"><a href="#L-1075"><span class="linenos">1075</span></a><span class="sd"> idx : list</span>
</span><span id="L-1076"><a href="#L-1076"><span class="linenos">1076</span></a><span class="sd"> List or range of configs on which the deltas are defined, has to be sorted in ascending order.</span>
</span><span id="L-1077"><a href="#L-1077"><span class="linenos">1077</span></a><span class="sd"> shape : int</span>
</span><span id="L-1078"><a href="#L-1078"><span class="linenos">1078</span></a><span class="sd"> Number of configs in idx.</span>
</span><span id="L-1079"><a href="#L-1079"><span class="linenos">1079</span></a><span class="sd"> gapsize : int</span>
</span><span id="L-1080"><a href="#L-1080"><span class="linenos">1080</span></a><span class="sd"> The target distance between two configurations. If longer distances</span>
</span><span id="L-1081"><a href="#L-1081"><span class="linenos">1081</span></a><span class="sd"> are found in idx, the data is expanded.</span>
</span><span id="L-1082"><a href="#L-1082"><span class="linenos">1082</span></a><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="L-1083"><a href="#L-1083"><span class="linenos">1083</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">idx</span><span class="p">,</span> <span class="nb">range</span><span class="p">):</span>
</span><span id="L-1084"><a href="#L-1084"><span class="linenos">1084</span></a> <span class="k">if</span> <span class="p">(</span><span class="n">idx</span><span class="o">.</span><span class="n">step</span> <span class="o">==</span> <span class="n">gapsize</span><span class="p">):</span>
</span><span id="L-1085"><a href="#L-1085"><span class="linenos">1085</span></a> <span class="k">return</span> <span class="n">deltas</span>
</span><span id="L-1086"><a href="#L-1086"><span class="linenos">1086</span></a> <span class="n">ret</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">zeros</span><span class="p">((</span><span class="n">idx</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> <span class="o">-</span> <span class="n">idx</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">+</span> <span class="n">gapsize</span><span class="p">)</span> <span class="o">//</span> <span class="n">gapsize</span><span class="p">)</span>
</span><span id="L-1087"><a href="#L-1087"><span class="linenos">1087</span></a> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">shape</span><span class="p">):</span>
</span><span id="L-1088"><a href="#L-1088"><span class="linenos">1088</span></a> <span class="n">ret</span><span class="p">[(</span><span class="n">idx</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">-</span> <span class="n">idx</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span> <span class="o">//</span> <span class="n">gapsize</span><span class="p">]</span> <span class="o">=</span> <span class="n">deltas</span><span class="p">[</span><span class="n">i</span><span class="p">]</span>
</span><span id="L-1089"><a href="#L-1089"><span class="linenos">1089</span></a> <span class="k">return</span> <span class="n">ret</span>
</span><span id="L-1090"><a href="#L-1090"><span class="linenos">1090</span></a>
</span><span id="L-1091"><a href="#L-1091"><span class="linenos">1091</span></a>
</span><span id="L-1092"><a href="#L-1092"><span class="linenos">1092</span></a><span class="k">def</span> <span class="nf">_merge_idx</span><span class="p">(</span><span class="n">idl</span><span class="p">):</span>
</span><span id="L-1093"><a href="#L-1093"><span class="linenos">1093</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Returns the union of all lists in idl as range or sorted list</span>
</span><span id="L-1094"><a href="#L-1094"><span class="linenos">1094</span></a>
</span><span id="L-1095"><a href="#L-1095"><span class="linenos">1095</span></a><span class="sd"> Parameters</span>
</span><span id="L-1096"><a href="#L-1096"><span class="linenos">1096</span></a><span class="sd"> ----------</span>
</span><span id="L-1097"><a href="#L-1097"><span class="linenos">1097</span></a><span class="sd"> idl : list</span>
</span><span id="L-1098"><a href="#L-1098"><span class="linenos">1098</span></a><span class="sd"> List of lists or ranges.</span>
</span><span id="L-1099"><a href="#L-1099"><span class="linenos">1099</span></a><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="L-1100"><a href="#L-1100"><span class="linenos">1100</span></a>
</span><span id="L-1101"><a href="#L-1101"><span class="linenos">1101</span></a> <span class="k">if</span> <span class="n">_check_lists_equal</span><span class="p">(</span><span class="n">idl</span><span class="p">):</span>
</span><span id="L-1102"><a href="#L-1102"><span class="linenos">1102</span></a> <span class="k">return</span> <span class="n">idl</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
</span><span id="L-1103"><a href="#L-1103"><span class="linenos">1103</span></a>
</span><span id="L-1104"><a href="#L-1104"><span class="linenos">1104</span></a> <span class="n">idunion</span> <span class="o">=</span> <span class="nb">sorted</span><span class="p">(</span><span class="nb">set</span><span class="p">()</span><span class="o">.</span><span class="n">union</span><span class="p">(</span><span class="o">*</span><span class="n">idl</span><span class="p">))</span>
</span><span id="L-1105"><a href="#L-1105"><span class="linenos">1105</span></a>
</span><span id="L-1106"><a href="#L-1106"><span class="linenos">1106</span></a> <span class="c1"># Check whether idunion can be expressed as range</span>
</span><span id="L-1107"><a href="#L-1107"><span class="linenos">1107</span></a> <span class="n">idrange</span> <span class="o">=</span> <span class="nb">range</span><span class="p">(</span><span class="n">idunion</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">idunion</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> <span class="o">+</span> <span class="mi">1</span><span class="p">,</span> <span class="n">idunion</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">-</span> <span class="n">idunion</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
</span><span id="L-1108"><a href="#L-1108"><span class="linenos">1108</span></a> <span class="n">idtest</span> <span class="o">=</span> <span class="p">[</span><span class="nb">list</span><span class="p">(</span><span class="n">idrange</span><span class="p">),</span> <span class="n">idunion</span><span class="p">]</span>
</span><span id="L-1109"><a href="#L-1109"><span class="linenos">1109</span></a> <span class="k">if</span> <span class="n">_check_lists_equal</span><span class="p">(</span><span class="n">idtest</span><span class="p">):</span>
</span><span id="L-1110"><a href="#L-1110"><span class="linenos">1110</span></a> <span class="k">return</span> <span class="n">idrange</span>
</span><span id="L-1111"><a href="#L-1111"><span class="linenos">1111</span></a>
</span><span id="L-1112"><a href="#L-1112"><span class="linenos">1112</span></a> <span class="k">return</span> <span class="n">idunion</span>
</span><span id="L-1113"><a href="#L-1113"><span class="linenos">1113</span></a>
</span><span id="L-1114"><a href="#L-1114"><span class="linenos">1114</span></a>
</span><span id="L-1115"><a href="#L-1115"><span class="linenos">1115</span></a><span class="k">def</span> <span class="nf">_intersection_idx</span><span class="p">(</span><span class="n">idl</span><span class="p">):</span>
</span><span id="L-1116"><a href="#L-1116"><span class="linenos">1116</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Returns the intersection of all lists in idl as range or sorted list</span>
</span><span id="L-1117"><a href="#L-1117"><span class="linenos">1117</span></a>
</span><span id="L-1118"><a href="#L-1118"><span class="linenos">1118</span></a><span class="sd"> Parameters</span>
</span><span id="L-1119"><a href="#L-1119"><span class="linenos">1119</span></a><span class="sd"> ----------</span>
</span><span id="L-1120"><a href="#L-1120"><span class="linenos">1120</span></a><span class="sd"> idl : list</span>
</span><span id="L-1121"><a href="#L-1121"><span class="linenos">1121</span></a><span class="sd"> List of lists or ranges.</span>
</span><span id="L-1122"><a href="#L-1122"><span class="linenos">1122</span></a><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="L-1123"><a href="#L-1123"><span class="linenos">1123</span></a>
</span><span id="L-1124"><a href="#L-1124"><span class="linenos">1124</span></a> <span class="k">if</span> <span class="n">_check_lists_equal</span><span class="p">(</span><span class="n">idl</span><span class="p">):</span>
</span><span id="L-1125"><a href="#L-1125"><span class="linenos">1125</span></a> <span class="k">return</span> <span class="n">idl</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
</span><span id="L-1126"><a href="#L-1126"><span class="linenos">1126</span></a>
</span><span id="L-1127"><a href="#L-1127"><span class="linenos">1127</span></a> <span class="n">idinter</span> <span class="o">=</span> <span class="nb">sorted</span><span class="p">(</span><span class="nb">set</span><span class="o">.</span><span class="n">intersection</span><span class="p">(</span><span class="o">*</span><span class="p">[</span><span class="nb">set</span><span class="p">(</span><span class="n">o</span><span class="p">)</span> <span class="k">for</span> <span class="n">o</span> <span class="ow">in</span> <span class="n">idl</span><span class="p">]))</span>
</span><span id="L-1128"><a href="#L-1128"><span class="linenos">1128</span></a>
</span><span id="L-1129"><a href="#L-1129"><span class="linenos">1129</span></a> <span class="c1"># Check whether idinter can be expressed as range</span>
</span><span id="L-1130"><a href="#L-1130"><span class="linenos">1130</span></a> <span class="k">try</span><span class="p">:</span>
</span><span id="L-1131"><a href="#L-1131"><span class="linenos">1131</span></a> <span class="n">idrange</span> <span class="o">=</span> <span class="nb">range</span><span class="p">(</span><span class="n">idinter</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">idinter</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> <span class="o">+</span> <span class="mi">1</span><span class="p">,</span> <span class="n">idinter</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">-</span> <span class="n">idinter</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
</span><span id="L-1132"><a href="#L-1132"><span class="linenos">1132</span></a> <span class="n">idtest</span> <span class="o">=</span> <span class="p">[</span><span class="nb">list</span><span class="p">(</span><span class="n">idrange</span><span class="p">),</span> <span class="n">idinter</span><span class="p">]</span>
</span><span id="L-1133"><a href="#L-1133"><span class="linenos">1133</span></a> <span class="k">if</span> <span class="n">_check_lists_equal</span><span class="p">(</span><span class="n">idtest</span><span class="p">):</span>
</span><span id="L-1134"><a href="#L-1134"><span class="linenos">1134</span></a> <span class="k">return</span> <span class="n">idrange</span>
</span><span id="L-1135"><a href="#L-1135"><span class="linenos">1135</span></a> <span class="k">except</span> <span class="ne">IndexError</span><span class="p">:</span>
</span><span id="L-1136"><a href="#L-1136"><span class="linenos">1136</span></a> <span class="k">pass</span>
</span><span id="L-1137"><a href="#L-1137"><span class="linenos">1137</span></a>
</span><span id="L-1138"><a href="#L-1138"><span class="linenos">1138</span></a> <span class="k">return</span> <span class="n">idinter</span>
</span><span id="L-1139"><a href="#L-1139"><span class="linenos">1139</span></a>
</span><span id="L-1140"><a href="#L-1140"><span class="linenos">1140</span></a>
</span><span id="L-1141"><a href="#L-1141"><span class="linenos">1141</span></a><span class="k">def</span> <span class="nf">_expand_deltas_for_merge</span><span class="p">(</span><span class="n">deltas</span><span class="p">,</span> <span class="n">idx</span><span class="p">,</span> <span class="n">shape</span><span class="p">,</span> <span class="n">new_idx</span><span class="p">):</span>
</span><span id="L-1142"><a href="#L-1142"><span class="linenos">1142</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Expand deltas defined on idx to the list of configs that is defined by new_idx.</span>
</span><span id="L-1143"><a href="#L-1143"><span class="linenos">1143</span></a><span class="sd"> New, empty entries are filled by 0. If idx and new_idx are of type range, the smallest</span>
</span><span id="L-1144"><a href="#L-1144"><span class="linenos">1144</span></a><span class="sd"> common divisor of the step sizes is used as new step size.</span>
</span><span id="L-1145"><a href="#L-1145"><span class="linenos">1145</span></a>
</span><span id="L-1146"><a href="#L-1146"><span class="linenos">1146</span></a><span class="sd"> Parameters</span>
</span><span id="L-1147"><a href="#L-1147"><span class="linenos">1147</span></a><span class="sd"> ----------</span>
</span><span id="L-1148"><a href="#L-1148"><span class="linenos">1148</span></a><span class="sd"> deltas : list</span>
</span><span id="L-1149"><a href="#L-1149"><span class="linenos">1149</span></a><span class="sd"> List of fluctuations</span>
</span><span id="L-1150"><a href="#L-1150"><span class="linenos">1150</span></a><span class="sd"> idx : list</span>
</span><span id="L-1151"><a href="#L-1151"><span class="linenos">1151</span></a><span class="sd"> List or range of configs on which the deltas are defined.</span>
</span><span id="L-1152"><a href="#L-1152"><span class="linenos">1152</span></a><span class="sd"> Has to be a subset of new_idx and has to be sorted in ascending order.</span>
</span><span id="L-1153"><a href="#L-1153"><span class="linenos">1153</span></a><span class="sd"> shape : list</span>
</span><span id="L-1154"><a href="#L-1154"><span class="linenos">1154</span></a><span class="sd"> Number of configs in idx.</span>
</span><span id="L-1155"><a href="#L-1155"><span class="linenos">1155</span></a><span class="sd"> new_idx : list</span>
</span><span id="L-1156"><a href="#L-1156"><span class="linenos">1156</span></a><span class="sd"> List of configs that defines the new range, has to be sorted in ascending order.</span>
</span><span id="L-1157"><a href="#L-1157"><span class="linenos">1157</span></a><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="L-1158"><a href="#L-1158"><span class="linenos">1158</span></a>
</span><span id="L-1159"><a href="#L-1159"><span class="linenos">1159</span></a> <span class="k">if</span> <span class="nb">type</span><span class="p">(</span><span class="n">idx</span><span class="p">)</span> <span class="ow">is</span> <span class="nb">range</span> <span class="ow">and</span> <span class="nb">type</span><span class="p">(</span><span class="n">new_idx</span><span class="p">)</span> <span class="ow">is</span> <span class="nb">range</span><span class="p">:</span>
</span><span id="L-1160"><a href="#L-1160"><span class="linenos">1160</span></a> <span class="k">if</span> <span class="n">idx</span> <span class="o">==</span> <span class="n">new_idx</span><span class="p">:</span>
</span><span id="L-1161"><a href="#L-1161"><span class="linenos">1161</span></a> <span class="k">return</span> <span class="n">deltas</span>
</span><span id="L-1162"><a href="#L-1162"><span class="linenos">1162</span></a> <span class="n">ret</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">zeros</span><span class="p">(</span><span class="n">new_idx</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> <span class="o">-</span> <span class="n">new_idx</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span>
</span><span id="L-1163"><a href="#L-1163"><span class="linenos">1163</span></a> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">shape</span><span class="p">):</span>
</span><span id="L-1164"><a href="#L-1164"><span class="linenos">1164</span></a> <span class="n">ret</span><span class="p">[</span><span class="n">idx</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">-</span> <span class="n">new_idx</span><span class="p">[</span><span class="mi">0</span><span class="p">]]</span> <span class="o">=</span> <span class="n">deltas</span><span class="p">[</span><span class="n">i</span><span class="p">]</span>
</span><span id="L-1165"><a href="#L-1165"><span class="linenos">1165</span></a> <span class="k">return</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">([</span><span class="n">ret</span><span class="p">[</span><span class="n">new_idx</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">-</span> <span class="n">new_idx</span><span class="p">[</span><span class="mi">0</span><span class="p">]]</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">new_idx</span><span class="p">))])</span> <span class="o">*</span> <span class="nb">len</span><span class="p">(</span><span class="n">new_idx</span><span class="p">)</span> <span class="o">/</span> <span class="nb">len</span><span class="p">(</span><span class="n">idx</span><span class="p">)</span>
</span><span id="L-1166"><a href="#L-1166"><span class="linenos">1166</span></a>
</span><span id="L-1167"><a href="#L-1167"><span class="linenos">1167</span></a>
</span><span id="L-1168"><a href="#L-1168"><span class="linenos">1168</span></a><span class="k">def</span> <span class="nf">derived_observable</span><span class="p">(</span><span class="n">func</span><span class="p">,</span> <span class="n">data</span><span class="p">,</span> <span class="n">array_mode</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
</span><span id="L-1169"><a href="#L-1169"><span class="linenos">1169</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Construct a derived Obs according to func(data, **kwargs) using automatic differentiation.</span>
</span><span id="L-1170"><a href="#L-1170"><span class="linenos">1170</span></a>
</span><span id="L-1171"><a href="#L-1171"><span class="linenos">1171</span></a><span class="sd"> Parameters</span>
</span><span id="L-1172"><a href="#L-1172"><span class="linenos">1172</span></a><span class="sd"> ----------</span>
</span><span id="L-1173"><a href="#L-1173"><span class="linenos">1173</span></a><span class="sd"> func : object</span>
</span><span id="L-1174"><a href="#L-1174"><span class="linenos">1174</span></a><span class="sd"> arbitrary function of the form func(data, **kwargs). For the</span>
</span><span id="L-1175"><a href="#L-1175"><span class="linenos">1175</span></a><span class="sd"> automatic differentiation to work, all numpy functions have to have</span>
</span><span id="L-1176"><a href="#L-1176"><span class="linenos">1176</span></a><span class="sd"> the autograd wrapper (use &#39;import autograd.numpy as anp&#39;).</span>
</span><span id="L-1177"><a href="#L-1177"><span class="linenos">1177</span></a><span class="sd"> data : list</span>
</span><span id="L-1178"><a href="#L-1178"><span class="linenos">1178</span></a><span class="sd"> list of Obs, e.g. [obs1, obs2, obs3].</span>
</span><span id="L-1179"><a href="#L-1179"><span class="linenos">1179</span></a><span class="sd"> num_grad : bool</span>
</span><span id="L-1180"><a href="#L-1180"><span class="linenos">1180</span></a><span class="sd"> if True, numerical derivatives are used instead of autograd</span>
</span><span id="L-1181"><a href="#L-1181"><span class="linenos">1181</span></a><span class="sd"> (default False). To control the numerical differentiation the</span>
</span><span id="L-1182"><a href="#L-1182"><span class="linenos">1182</span></a><span class="sd"> kwargs of numdifftools.step_generators.MaxStepGenerator</span>
</span><span id="L-1183"><a href="#L-1183"><span class="linenos">1183</span></a><span class="sd"> can be used.</span>
</span><span id="L-1184"><a href="#L-1184"><span class="linenos">1184</span></a><span class="sd"> man_grad : list</span>
</span><span id="L-1185"><a href="#L-1185"><span class="linenos">1185</span></a><span class="sd"> manually supply a list or an array which contains the jacobian</span>
</span><span id="L-1186"><a href="#L-1186"><span class="linenos">1186</span></a><span class="sd"> of func. Use cautiously, supplying the wrong derivative will</span>
</span><span id="L-1187"><a href="#L-1187"><span class="linenos">1187</span></a><span class="sd"> not be intercepted.</span>
</span><span id="L-1188"><a href="#L-1188"><span class="linenos">1188</span></a>
</span><span id="L-1189"><a href="#L-1189"><span class="linenos">1189</span></a><span class="sd"> Notes</span>
</span><span id="L-1190"><a href="#L-1190"><span class="linenos">1190</span></a><span class="sd"> -----</span>
</span><span id="L-1191"><a href="#L-1191"><span class="linenos">1191</span></a><span class="sd"> For simple mathematical operations it can be practical to use anonymous</span>
</span><span id="L-1192"><a href="#L-1192"><span class="linenos">1192</span></a><span class="sd"> functions. For the ratio of two observables one can e.g. use</span>
</span><span id="L-1193"><a href="#L-1193"><span class="linenos">1193</span></a>
</span><span id="L-1194"><a href="#L-1194"><span class="linenos">1194</span></a><span class="sd"> new_obs = derived_observable(lambda x: x[0] / x[1], [obs1, obs2])</span>
</span><span id="L-1195"><a href="#L-1195"><span class="linenos">1195</span></a><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="L-1196"><a href="#L-1196"><span class="linenos">1196</span></a>
</span><span id="L-1197"><a href="#L-1197"><span class="linenos">1197</span></a> <span class="n">data</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">asarray</span><span class="p">(</span><span class="n">data</span><span class="p">)</span>
</span><span id="L-1198"><a href="#L-1198"><span class="linenos">1198</span></a> <span class="n">raveled_data</span> <span class="o">=</span> <span class="n">data</span><span class="o">.</span><span class="n">ravel</span><span class="p">()</span>
</span><span id="L-1199"><a href="#L-1199"><span class="linenos">1199</span></a>
</span><span id="L-1200"><a href="#L-1200"><span class="linenos">1200</span></a> <span class="c1"># Workaround for matrix operations containing non Obs data</span>
</span><span id="L-1201"><a href="#L-1201"><span class="linenos">1201</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">all</span><span class="p">(</span><span class="nb">isinstance</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">Obs</span><span class="p">)</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">raveled_data</span><span class="p">):</span>
</span><span id="L-1202"><a href="#L-1202"><span class="linenos">1202</span></a> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">raveled_data</span><span class="p">)):</span>
</span><span id="L-1203"><a href="#L-1203"><span class="linenos">1203</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">raveled_data</span><span class="p">[</span><span class="n">i</span><span class="p">],</span> <span class="p">(</span><span class="nb">int</span><span class="p">,</span> <span class="nb">float</span><span class="p">)):</span>
</span><span id="L-1204"><a href="#L-1204"><span class="linenos">1204</span></a> <span class="n">raveled_data</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="n">cov_Obs</span><span class="p">(</span><span class="n">raveled_data</span><span class="p">[</span><span class="n">i</span><span class="p">],</span> <span class="mf">0.0</span><span class="p">,</span> <span class="s2">&quot;###dummy_covobs###&quot;</span><span class="p">)</span>
</span><span id="L-1205"><a href="#L-1205"><span class="linenos">1205</span></a>
</span><span id="L-1206"><a href="#L-1206"><span class="linenos">1206</span></a> <span class="n">allcov</span> <span class="o">=</span> <span class="p">{}</span>
</span><span id="L-1207"><a href="#L-1207"><span class="linenos">1207</span></a> <span class="k">for</span> <span class="n">o</span> <span class="ow">in</span> <span class="n">raveled_data</span><span class="p">:</span>
</span><span id="L-1208"><a href="#L-1208"><span class="linenos">1208</span></a> <span class="k">for</span> <span class="n">name</span> <span class="ow">in</span> <span class="n">o</span><span class="o">.</span><span class="n">cov_names</span><span class="p">:</span>
</span><span id="L-1209"><a href="#L-1209"><span class="linenos">1209</span></a> <span class="k">if</span> <span class="n">name</span> <span class="ow">in</span> <span class="n">allcov</span><span class="p">:</span>
</span><span id="L-1210"><a href="#L-1210"><span class="linenos">1210</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">np</span><span class="o">.</span><span class="n">allclose</span><span class="p">(</span><span class="n">allcov</span><span class="p">[</span><span class="n">name</span><span class="p">],</span> <span class="n">o</span><span class="o">.</span><span class="n">covobs</span><span class="p">[</span><span class="n">name</span><span class="p">]</span><span class="o">.</span><span class="n">cov</span><span class="p">):</span>
</span><span id="L-1211"><a href="#L-1211"><span class="linenos">1211</span></a> <span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s1">&#39;Inconsistent covariance matrices for </span><span class="si">%s</span><span class="s1">!&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">name</span><span class="p">))</span>
</span><span id="L-1212"><a href="#L-1212"><span class="linenos">1212</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="L-1213"><a href="#L-1213"><span class="linenos">1213</span></a> <span class="n">allcov</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="o">=</span> <span class="n">o</span><span class="o">.</span><span class="n">covobs</span><span class="p">[</span><span class="n">name</span><span class="p">]</span><span class="o">.</span><span class="n">cov</span>
</span><span id="L-1214"><a href="#L-1214"><span class="linenos">1214</span></a>
</span><span id="L-1215"><a href="#L-1215"><span class="linenos">1215</span></a> <span class="n">n_obs</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">raveled_data</span><span class="p">)</span>
</span><span id="L-1216"><a href="#L-1216"><span class="linenos">1216</span></a> <span class="n">new_names</span> <span class="o">=</span> <span class="nb">sorted</span><span class="p">(</span><span class="nb">set</span><span class="p">([</span><span class="n">y</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="p">[</span><span class="n">o</span><span class="o">.</span><span class="n">names</span> <span class="k">for</span> <span class="n">o</span> <span class="ow">in</span> <span class="n">raveled_data</span><span class="p">]</span> <span class="k">for</span> <span class="n">y</span> <span class="ow">in</span> <span class="n">x</span><span class="p">]))</span>
</span><span id="L-1217"><a href="#L-1217"><span class="linenos">1217</span></a> <span class="n">new_cov_names</span> <span class="o">=</span> <span class="nb">sorted</span><span class="p">(</span><span class="nb">set</span><span class="p">([</span><span class="n">y</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="p">[</span><span class="n">o</span><span class="o">.</span><span class="n">cov_names</span> <span class="k">for</span> <span class="n">o</span> <span class="ow">in</span> <span class="n">raveled_data</span><span class="p">]</span> <span class="k">for</span> <span class="n">y</span> <span class="ow">in</span> <span class="n">x</span><span class="p">]))</span>
</span><span id="L-1218"><a href="#L-1218"><span class="linenos">1218</span></a> <span class="n">new_sample_names</span> <span class="o">=</span> <span class="nb">sorted</span><span class="p">(</span><span class="nb">set</span><span class="p">(</span><span class="n">new_names</span><span class="p">)</span> <span class="o">-</span> <span class="nb">set</span><span class="p">(</span><span class="n">new_cov_names</span><span class="p">))</span>
</span><span id="L-1219"><a href="#L-1219"><span class="linenos">1219</span></a>
</span><span id="L-1220"><a href="#L-1220"><span class="linenos">1220</span></a> <span class="n">reweighted</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="nb">list</span><span class="p">(</span><span class="nb">filter</span><span class="p">(</span><span class="k">lambda</span> <span class="n">o</span><span class="p">:</span> <span class="n">o</span><span class="o">.</span><span class="n">reweighted</span> <span class="ow">is</span> <span class="kc">True</span><span class="p">,</span> <span class="n">raveled_data</span><span class="p">)))</span> <span class="o">&gt;</span> <span class="mi">0</span>
</span><span id="L-1221"><a href="#L-1221"><span class="linenos">1221</span></a>
</span><span id="L-1222"><a href="#L-1222"><span class="linenos">1222</span></a> <span class="k">if</span> <span class="n">data</span><span class="o">.</span><span class="n">ndim</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span>
</span><span id="L-1223"><a href="#L-1223"><span class="linenos">1223</span></a> <span class="n">values</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">([</span><span class="n">o</span><span class="o">.</span><span class="n">value</span> <span class="k">for</span> <span class="n">o</span> <span class="ow">in</span> <span class="n">data</span><span class="p">])</span>
</span><span id="L-1224"><a href="#L-1224"><span class="linenos">1224</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="L-1225"><a href="#L-1225"><span class="linenos">1225</span></a> <span class="n">values</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">vectorize</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span><span class="p">:</span> <span class="n">x</span><span class="o">.</span><span class="n">value</span><span class="p">)(</span><span class="n">data</span><span class="p">)</span>
</span><span id="L-1226"><a href="#L-1226"><span class="linenos">1226</span></a>
</span><span id="L-1227"><a href="#L-1227"><span class="linenos">1227</span></a> <span class="n">new_values</span> <span class="o">=</span> <span class="n">func</span><span class="p">(</span><span class="n">values</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
</span><span id="L-1228"><a href="#L-1228"><span class="linenos">1228</span></a>
</span><span id="L-1229"><a href="#L-1229"><span class="linenos">1229</span></a> <span class="n">multi</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="nb">isinstance</span><span class="p">(</span><span class="n">new_values</span><span class="p">,</span> <span class="n">np</span><span class="o">.</span><span class="n">ndarray</span><span class="p">))</span>
</span><span id="L-1230"><a href="#L-1230"><span class="linenos">1230</span></a>
</span><span id="L-1231"><a href="#L-1231"><span class="linenos">1231</span></a> <span class="n">new_r_values</span> <span class="o">=</span> <span class="p">{}</span>
</span><span id="L-1232"><a href="#L-1232"><span class="linenos">1232</span></a> <span class="n">new_idl_d</span> <span class="o">=</span> <span class="p">{}</span>
</span><span id="L-1233"><a href="#L-1233"><span class="linenos">1233</span></a> <span class="k">for</span> <span class="n">name</span> <span class="ow">in</span> <span class="n">new_sample_names</span><span class="p">:</span>
</span><span id="L-1234"><a href="#L-1234"><span class="linenos">1234</span></a> <span class="n">idl</span> <span class="o">=</span> <span class="p">[]</span>
</span><span id="L-1235"><a href="#L-1235"><span class="linenos">1235</span></a> <span class="n">tmp_values</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">zeros</span><span class="p">(</span><span class="n">n_obs</span><span class="p">)</span>
</span><span id="L-1236"><a href="#L-1236"><span class="linenos">1236</span></a> <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">item</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">raveled_data</span><span class="p">):</span>
</span><span id="L-1237"><a href="#L-1237"><span class="linenos">1237</span></a> <span class="n">tmp_values</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="n">item</span><span class="o">.</span><span class="n">r_values</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">item</span><span class="o">.</span><span class="n">value</span><span class="p">)</span>
</span><span id="L-1238"><a href="#L-1238"><span class="linenos">1238</span></a> <span class="n">tmp_idl</span> <span class="o">=</span> <span class="n">item</span><span class="o">.</span><span class="n">idl</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">name</span><span class="p">)</span>
</span><span id="L-1239"><a href="#L-1239"><span class="linenos">1239</span></a> <span class="k">if</span> <span class="n">tmp_idl</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
</span><span id="L-1240"><a href="#L-1240"><span class="linenos">1240</span></a> <span class="n">idl</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">tmp_idl</span><span class="p">)</span>
</span><span id="L-1241"><a href="#L-1241"><span class="linenos">1241</span></a> <span class="k">if</span> <span class="n">multi</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
</span><span id="L-1242"><a href="#L-1242"><span class="linenos">1242</span></a> <span class="n">tmp_values</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">(</span><span class="n">tmp_values</span><span class="p">)</span><span class="o">.</span><span class="n">reshape</span><span class="p">(</span><span class="n">data</span><span class="o">.</span><span class="n">shape</span><span class="p">)</span>
</span><span id="L-1243"><a href="#L-1243"><span class="linenos">1243</span></a> <span class="n">new_r_values</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="o">=</span> <span class="n">func</span><span class="p">(</span><span class="n">tmp_values</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
</span><span id="L-1244"><a href="#L-1244"><span class="linenos">1244</span></a> <span class="n">new_idl_d</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="o">=</span> <span class="n">_merge_idx</span><span class="p">(</span><span class="n">idl</span><span class="p">)</span>
</span><span id="L-1245"><a href="#L-1245"><span class="linenos">1245</span></a>
</span><span id="L-1246"><a href="#L-1246"><span class="linenos">1246</span></a> <span class="k">if</span> <span class="s1">&#39;man_grad&#39;</span> <span class="ow">in</span> <span class="n">kwargs</span><span class="p">:</span>
</span><span id="L-1247"><a href="#L-1247"><span class="linenos">1247</span></a> <span class="n">deriv</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">asarray</span><span class="p">(</span><span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">&#39;man_grad&#39;</span><span class="p">))</span>
</span><span id="L-1248"><a href="#L-1248"><span class="linenos">1248</span></a> <span class="k">if</span> <span class="n">new_values</span><span class="o">.</span><span class="n">shape</span> <span class="o">+</span> <span class="n">data</span><span class="o">.</span><span class="n">shape</span> <span class="o">!=</span> <span class="n">deriv</span><span class="o">.</span><span class="n">shape</span><span class="p">:</span>
</span><span id="L-1249"><a href="#L-1249"><span class="linenos">1249</span></a> <span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s1">&#39;Manual derivative does not have correct shape.&#39;</span><span class="p">)</span>
</span><span id="L-1250"><a href="#L-1250"><span class="linenos">1250</span></a> <span class="k">elif</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">&#39;num_grad&#39;</span><span class="p">)</span> <span class="ow">is</span> <span class="kc">True</span><span class="p">:</span>
</span><span id="L-1251"><a href="#L-1251"><span class="linenos">1251</span></a> <span class="k">if</span> <span class="n">multi</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
</span><span id="L-1252"><a href="#L-1252"><span class="linenos">1252</span></a> <span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s1">&#39;Multi mode currently not supported for numerical derivative&#39;</span><span class="p">)</span>
</span><span id="L-1253"><a href="#L-1253"><span class="linenos">1253</span></a> <span class="n">options</span> <span class="o">=</span> <span class="p">{</span>
</span><span id="L-1254"><a href="#L-1254"><span class="linenos">1254</span></a> <span class="s1">&#39;base_step&#39;</span><span class="p">:</span> <span class="mf">0.1</span><span class="p">,</span>
</span><span id="L-1255"><a href="#L-1255"><span class="linenos">1255</span></a> <span class="s1">&#39;step_ratio&#39;</span><span class="p">:</span> <span class="mf">2.5</span><span class="p">}</span>
</span><span id="L-1256"><a href="#L-1256"><span class="linenos">1256</span></a> <span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="n">options</span><span class="o">.</span><span class="n">keys</span><span class="p">():</span>
</span><span id="L-1257"><a href="#L-1257"><span class="linenos">1257</span></a> <span class="n">kwarg</span> <span class="o">=</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">key</span><span class="p">)</span>
</span><span id="L-1258"><a href="#L-1258"><span class="linenos">1258</span></a> <span class="k">if</span> <span class="n">kwarg</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
</span><span id="L-1259"><a href="#L-1259"><span class="linenos">1259</span></a> <span class="n">options</span><span class="p">[</span><span class="n">key</span><span class="p">]</span> <span class="o">=</span> <span class="n">kwarg</span>
</span><span id="L-1260"><a href="#L-1260"><span class="linenos">1260</span></a> <span class="n">tmp_df</span> <span class="o">=</span> <span class="n">nd</span><span class="o">.</span><span class="n">Gradient</span><span class="p">(</span><span class="n">func</span><span class="p">,</span> <span class="n">order</span><span class="o">=</span><span class="mi">4</span><span class="p">,</span> <span class="o">**</span><span class="p">{</span><span class="n">k</span><span class="p">:</span> <span class="n">v</span> <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">options</span><span class="o">.</span><span class="n">items</span><span class="p">()</span> <span class="k">if</span> <span class="n">v</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">})(</span><span class="n">values</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
</span><span id="L-1261"><a href="#L-1261"><span class="linenos">1261</span></a> <span class="k">if</span> <span class="n">tmp_df</span><span class="o">.</span><span class="n">size</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span>
</span><span id="L-1262"><a href="#L-1262"><span class="linenos">1262</span></a> <span class="n">deriv</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">([</span><span class="n">tmp_df</span><span class="o">.</span><span class="n">real</span><span class="p">])</span>
</span><span id="L-1263"><a href="#L-1263"><span class="linenos">1263</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="L-1264"><a href="#L-1264"><span class="linenos">1264</span></a> <span class="n">deriv</span> <span class="o">=</span> <span class="n">tmp_df</span><span class="o">.</span><span class="n">real</span>
</span><span id="L-1265"><a href="#L-1265"><span class="linenos">1265</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="L-1266"><a href="#L-1266"><span class="linenos">1266</span></a> <span class="n">deriv</span> <span class="o">=</span> <span class="n">jacobian</span><span class="p">(</span><span class="n">func</span><span class="p">)(</span><span class="n">values</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
</span><span id="L-1267"><a href="#L-1267"><span class="linenos">1267</span></a>
</span><span id="L-1268"><a href="#L-1268"><span class="linenos">1268</span></a> <span class="n">final_result</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">zeros</span><span class="p">(</span><span class="n">new_values</span><span class="o">.</span><span class="n">shape</span><span class="p">,</span> <span class="n">dtype</span><span class="o">=</span><span class="nb">object</span><span class="p">)</span>
</span><span id="L-1269"><a href="#L-1269"><span class="linenos">1269</span></a>
</span><span id="L-1270"><a href="#L-1270"><span class="linenos">1270</span></a> <span class="k">if</span> <span class="n">array_mode</span> <span class="ow">is</span> <span class="kc">True</span><span class="p">:</span>
</span><span id="L-1271"><a href="#L-1271"><span class="linenos">1271</span></a>
</span><span id="L-1272"><a href="#L-1272"><span class="linenos">1272</span></a> <span class="k">class</span> <span class="nc">_Zero_grad</span><span class="p">():</span>
</span><span id="L-1273"><a href="#L-1273"><span class="linenos">1273</span></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">N</span><span class="p">):</span>
</span><span id="L-1274"><a href="#L-1274"><span class="linenos">1274</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">grad</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">zeros</span><span class="p">((</span><span class="n">N</span><span class="p">,</span> <span class="mi">1</span><span class="p">))</span>
</span><span id="L-1275"><a href="#L-1275"><span class="linenos">1275</span></a>
</span><span id="L-1276"><a href="#L-1276"><span class="linenos">1276</span></a> <span class="n">new_covobs_lengths</span> <span class="o">=</span> <span class="nb">dict</span><span class="p">(</span><span class="nb">set</span><span class="p">([</span><span class="n">y</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="p">[[(</span><span class="n">n</span><span class="p">,</span> <span class="n">o</span><span class="o">.</span><span class="n">covobs</span><span class="p">[</span><span class="n">n</span><span class="p">]</span><span class="o">.</span><span class="n">N</span><span class="p">)</span> <span class="k">for</span> <span class="n">n</span> <span class="ow">in</span> <span class="n">o</span><span class="o">.</span><span class="n">cov_names</span><span class="p">]</span> <span class="k">for</span> <span class="n">o</span> <span class="ow">in</span> <span class="n">raveled_data</span><span class="p">]</span> <span class="k">for</span> <span class="n">y</span> <span class="ow">in</span> <span class="n">x</span><span class="p">]))</span>
</span><span id="L-1277"><a href="#L-1277"><span class="linenos">1277</span></a> <span class="n">d_extracted</span> <span class="o">=</span> <span class="p">{}</span>
</span><span id="L-1278"><a href="#L-1278"><span class="linenos">1278</span></a> <span class="n">g_extracted</span> <span class="o">=</span> <span class="p">{}</span>
</span><span id="L-1279"><a href="#L-1279"><span class="linenos">1279</span></a> <span class="k">for</span> <span class="n">name</span> <span class="ow">in</span> <span class="n">new_sample_names</span><span class="p">:</span>
</span><span id="L-1280"><a href="#L-1280"><span class="linenos">1280</span></a> <span class="n">d_extracted</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="o">=</span> <span class="p">[]</span>
</span><span id="L-1281"><a href="#L-1281"><span class="linenos">1281</span></a> <span class="n">ens_length</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">new_idl_d</span><span class="p">[</span><span class="n">name</span><span class="p">])</span>
</span><span id="L-1282"><a href="#L-1282"><span class="linenos">1282</span></a> <span class="k">for</span> <span class="n">i_dat</span><span class="p">,</span> <span class="n">dat</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">data</span><span class="p">):</span>
</span><span id="L-1283"><a href="#L-1283"><span class="linenos">1283</span></a> <span class="n">d_extracted</span><span class="p">[</span><span class="n">name</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">([</span><span class="n">_expand_deltas_for_merge</span><span class="p">(</span><span class="n">o</span><span class="o">.</span><span class="n">deltas</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">np</span><span class="o">.</span><span class="n">zeros</span><span class="p">(</span><span class="n">ens_length</span><span class="p">)),</span> <span class="n">o</span><span class="o">.</span><span class="n">idl</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">new_idl_d</span><span class="p">[</span><span class="n">name</span><span class="p">]),</span> <span class="n">o</span><span class="o">.</span><span class="n">shape</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">ens_length</span><span class="p">),</span> <span class="n">new_idl_d</span><span class="p">[</span><span class="n">name</span><span class="p">])</span> <span class="k">for</span> <span class="n">o</span> <span class="ow">in</span> <span class="n">dat</span><span class="o">.</span><span class="n">reshape</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">prod</span><span class="p">(</span><span class="n">dat</span><span class="o">.</span><span class="n">shape</span><span class="p">))])</span><span class="o">.</span><span class="n">reshape</span><span class="p">(</span><span class="n">dat</span><span class="o">.</span><span class="n">shape</span> <span class="o">+</span> <span class="p">(</span><span class="n">ens_length</span><span class="p">,</span> <span class="p">)))</span>
</span><span id="L-1284"><a href="#L-1284"><span class="linenos">1284</span></a> <span class="k">for</span> <span class="n">name</span> <span class="ow">in</span> <span class="n">new_cov_names</span><span class="p">:</span>
</span><span id="L-1285"><a href="#L-1285"><span class="linenos">1285</span></a> <span class="n">g_extracted</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="o">=</span> <span class="p">[]</span>
</span><span id="L-1286"><a href="#L-1286"><span class="linenos">1286</span></a> <span class="n">zero_grad</span> <span class="o">=</span> <span class="n">_Zero_grad</span><span class="p">(</span><span class="n">new_covobs_lengths</span><span class="p">[</span><span class="n">name</span><span class="p">])</span>
</span><span id="L-1287"><a href="#L-1287"><span class="linenos">1287</span></a> <span class="k">for</span> <span class="n">i_dat</span><span class="p">,</span> <span class="n">dat</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">data</span><span class="p">):</span>
</span><span id="L-1288"><a href="#L-1288"><span class="linenos">1288</span></a> <span class="n">g_extracted</span><span class="p">[</span><span class="n">name</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">([</span><span class="n">o</span><span class="o">.</span><span class="n">covobs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">zero_grad</span><span class="p">)</span><span class="o">.</span><span class="n">grad</span> <span class="k">for</span> <span class="n">o</span> <span class="ow">in</span> <span class="n">dat</span><span class="o">.</span><span class="n">reshape</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">prod</span><span class="p">(</span><span class="n">dat</span><span class="o">.</span><span class="n">shape</span><span class="p">))])</span><span class="o">.</span><span class="n">reshape</span><span class="p">(</span><span class="n">dat</span><span class="o">.</span><span class="n">shape</span> <span class="o">+</span> <span class="p">(</span><span class="n">new_covobs_lengths</span><span class="p">[</span><span class="n">name</span><span class="p">],</span> <span class="mi">1</span><span class="p">)))</span>
</span><span id="L-1289"><a href="#L-1289"><span class="linenos">1289</span></a>
</span><span id="L-1290"><a href="#L-1290"><span class="linenos">1290</span></a> <span class="k">for</span> <span class="n">i_val</span><span class="p">,</span> <span class="n">new_val</span> <span class="ow">in</span> <span class="n">np</span><span class="o">.</span><span class="n">ndenumerate</span><span class="p">(</span><span class="n">new_values</span><span class="p">):</span>
</span><span id="L-1291"><a href="#L-1291"><span class="linenos">1291</span></a> <span class="n">new_deltas</span> <span class="o">=</span> <span class="p">{}</span>
</span><span id="L-1292"><a href="#L-1292"><span class="linenos">1292</span></a> <span class="n">new_grad</span> <span class="o">=</span> <span class="p">{}</span>
</span><span id="L-1293"><a href="#L-1293"><span class="linenos">1293</span></a> <span class="k">if</span> <span class="n">array_mode</span> <span class="ow">is</span> <span class="kc">True</span><span class="p">:</span>
</span><span id="L-1294"><a href="#L-1294"><span class="linenos">1294</span></a> <span class="k">for</span> <span class="n">name</span> <span class="ow">in</span> <span class="n">new_sample_names</span><span class="p">:</span>
</span><span id="L-1295"><a href="#L-1295"><span class="linenos">1295</span></a> <span class="n">ens_length</span> <span class="o">=</span> <span class="n">d_extracted</span><span class="p">[</span><span class="n">name</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span>
</span><span id="L-1296"><a href="#L-1296"><span class="linenos">1296</span></a> <span class="n">new_deltas</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">zeros</span><span class="p">(</span><span class="n">ens_length</span><span class="p">)</span>
</span><span id="L-1297"><a href="#L-1297"><span class="linenos">1297</span></a> <span class="k">for</span> <span class="n">i_dat</span><span class="p">,</span> <span class="n">dat</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">d_extracted</span><span class="p">[</span><span class="n">name</span><span class="p">]):</span>
</span><span id="L-1298"><a href="#L-1298"><span class="linenos">1298</span></a> <span class="n">new_deltas</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="o">+=</span> <span class="n">np</span><span class="o">.</span><span class="n">tensordot</span><span class="p">(</span><span class="n">deriv</span><span class="p">[</span><span class="n">i_val</span> <span class="o">+</span> <span class="p">(</span><span class="n">i_dat</span><span class="p">,</span> <span class="p">)],</span> <span class="n">dat</span><span class="p">)</span>
</span><span id="L-1299"><a href="#L-1299"><span class="linenos">1299</span></a> <span class="k">for</span> <span class="n">name</span> <span class="ow">in</span> <span class="n">new_cov_names</span><span class="p">:</span>
</span><span id="L-1300"><a href="#L-1300"><span class="linenos">1300</span></a> <span class="n">new_grad</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="o">=</span> <span class="mi">0</span>
</span><span id="L-1301"><a href="#L-1301"><span class="linenos">1301</span></a> <span class="k">for</span> <span class="n">i_dat</span><span class="p">,</span> <span class="n">dat</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">g_extracted</span><span class="p">[</span><span class="n">name</span><span class="p">]):</span>
</span><span id="L-1302"><a href="#L-1302"><span class="linenos">1302</span></a> <span class="n">new_grad</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="o">+=</span> <span class="n">np</span><span class="o">.</span><span class="n">tensordot</span><span class="p">(</span><span class="n">deriv</span><span class="p">[</span><span class="n">i_val</span> <span class="o">+</span> <span class="p">(</span><span class="n">i_dat</span><span class="p">,</span> <span class="p">)],</span> <span class="n">dat</span><span class="p">)</span>
</span><span id="L-1303"><a href="#L-1303"><span class="linenos">1303</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="L-1304"><a href="#L-1304"><span class="linenos">1304</span></a> <span class="k">for</span> <span class="n">j_obs</span><span class="p">,</span> <span class="n">obs</span> <span class="ow">in</span> <span class="n">np</span><span class="o">.</span><span class="n">ndenumerate</span><span class="p">(</span><span class="n">data</span><span class="p">):</span>
</span><span id="L-1305"><a href="#L-1305"><span class="linenos">1305</span></a> <span class="k">for</span> <span class="n">name</span> <span class="ow">in</span> <span class="n">obs</span><span class="o">.</span><span class="n">names</span><span class="p">:</span>
</span><span id="L-1306"><a href="#L-1306"><span class="linenos">1306</span></a> <span class="k">if</span> <span class="n">name</span> <span class="ow">in</span> <span class="n">obs</span><span class="o">.</span><span class="n">cov_names</span><span class="p">:</span>
</span><span id="L-1307"><a href="#L-1307"><span class="linenos">1307</span></a> <span class="n">new_grad</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="o">=</span> <span class="n">new_grad</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> <span class="o">+</span> <span class="n">deriv</span><span class="p">[</span><span class="n">i_val</span> <span class="o">+</span> <span class="n">j_obs</span><span class="p">]</span> <span class="o">*</span> <span class="n">obs</span><span class="o">.</span><span class="n">covobs</span><span class="p">[</span><span class="n">name</span><span class="p">]</span><span class="o">.</span><span class="n">grad</span>
</span><span id="L-1308"><a href="#L-1308"><span class="linenos">1308</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="L-1309"><a href="#L-1309"><span class="linenos">1309</span></a> <span class="n">new_deltas</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="o">=</span> <span class="n">new_deltas</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> <span class="o">+</span> <span class="n">deriv</span><span class="p">[</span><span class="n">i_val</span> <span class="o">+</span> <span class="n">j_obs</span><span class="p">]</span> <span class="o">*</span> <span class="n">_expand_deltas_for_merge</span><span class="p">(</span><span class="n">obs</span><span class="o">.</span><span class="n">deltas</span><span class="p">[</span><span class="n">name</span><span class="p">],</span> <span class="n">obs</span><span class="o">.</span><span class="n">idl</span><span class="p">[</span><span class="n">name</span><span class="p">],</span> <span class="n">obs</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="n">name</span><span class="p">],</span> <span class="n">new_idl_d</span><span class="p">[</span><span class="n">name</span><span class="p">])</span>
</span><span id="L-1310"><a href="#L-1310"><span class="linenos">1310</span></a>
</span><span id="L-1311"><a href="#L-1311"><span class="linenos">1311</span></a> <span class="n">new_covobs</span> <span class="o">=</span> <span class="p">{</span><span class="n">name</span><span class="p">:</span> <span class="n">Covobs</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">allcov</span><span class="p">[</span><span class="n">name</span><span class="p">],</span> <span class="n">name</span><span class="p">,</span> <span class="n">grad</span><span class="o">=</span><span class="n">new_grad</span><span class="p">[</span><span class="n">name</span><span class="p">])</span> <span class="k">for</span> <span class="n">name</span> <span class="ow">in</span> <span class="n">new_grad</span><span class="p">}</span>
</span><span id="L-1312"><a href="#L-1312"><span class="linenos">1312</span></a>
</span><span id="L-1313"><a href="#L-1313"><span class="linenos">1313</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">set</span><span class="p">(</span><span class="n">new_covobs</span><span class="o">.</span><span class="n">keys</span><span class="p">())</span><span class="o">.</span><span class="n">isdisjoint</span><span class="p">(</span><span class="n">new_deltas</span><span class="o">.</span><span class="n">keys</span><span class="p">()):</span>
</span><span id="L-1314"><a href="#L-1314"><span class="linenos">1314</span></a> <span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s1">&#39;The same name has been used for deltas and covobs!&#39;</span><span class="p">)</span>
</span><span id="L-1315"><a href="#L-1315"><span class="linenos">1315</span></a> <span class="n">new_samples</span> <span class="o">=</span> <span class="p">[]</span>
</span><span id="L-1316"><a href="#L-1316"><span class="linenos">1316</span></a> <span class="n">new_means</span> <span class="o">=</span> <span class="p">[]</span>
</span><span id="L-1317"><a href="#L-1317"><span class="linenos">1317</span></a> <span class="n">new_idl</span> <span class="o">=</span> <span class="p">[]</span>
</span><span id="L-1318"><a href="#L-1318"><span class="linenos">1318</span></a> <span class="n">new_names_obs</span> <span class="o">=</span> <span class="p">[]</span>
</span><span id="L-1319"><a href="#L-1319"><span class="linenos">1319</span></a> <span class="k">for</span> <span class="n">name</span> <span class="ow">in</span> <span class="n">new_names</span><span class="p">:</span>
</span><span id="L-1320"><a href="#L-1320"><span class="linenos">1320</span></a> <span class="k">if</span> <span class="n">name</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">new_covobs</span><span class="p">:</span>
</span><span id="L-1321"><a href="#L-1321"><span class="linenos">1321</span></a> <span class="n">new_samples</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">new_deltas</span><span class="p">[</span><span class="n">name</span><span class="p">])</span>
</span><span id="L-1322"><a href="#L-1322"><span class="linenos">1322</span></a> <span class="n">new_idl</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">new_idl_d</span><span class="p">[</span><span class="n">name</span><span class="p">])</span>
</span><span id="L-1323"><a href="#L-1323"><span class="linenos">1323</span></a> <span class="n">new_means</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">new_r_values</span><span class="p">[</span><span class="n">name</span><span class="p">][</span><span class="n">i_val</span><span class="p">])</span>
</span><span id="L-1324"><a href="#L-1324"><span class="linenos">1324</span></a> <span class="n">new_names_obs</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">name</span><span class="p">)</span>
</span><span id="L-1325"><a href="#L-1325"><span class="linenos">1325</span></a> <span class="n">final_result</span><span class="p">[</span><span class="n">i_val</span><span class="p">]</span> <span class="o">=</span> <span class="n">Obs</span><span class="p">(</span><span class="n">new_samples</span><span class="p">,</span> <span class="n">new_names_obs</span><span class="p">,</span> <span class="n">means</span><span class="o">=</span><span class="n">new_means</span><span class="p">,</span> <span class="n">idl</span><span class="o">=</span><span class="n">new_idl</span><span class="p">)</span>
</span><span id="L-1326"><a href="#L-1326"><span class="linenos">1326</span></a> <span class="k">for</span> <span class="n">name</span> <span class="ow">in</span> <span class="n">new_covobs</span><span class="p">:</span>
</span><span id="L-1327"><a href="#L-1327"><span class="linenos">1327</span></a> <span class="n">final_result</span><span class="p">[</span><span class="n">i_val</span><span class="p">]</span><span class="o">.</span><span class="n">names</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">name</span><span class="p">)</span>
</span><span id="L-1328"><a href="#L-1328"><span class="linenos">1328</span></a> <span class="n">final_result</span><span class="p">[</span><span class="n">i_val</span><span class="p">]</span><span class="o">.</span><span class="n">_covobs</span> <span class="o">=</span> <span class="n">new_covobs</span>
</span><span id="L-1329"><a href="#L-1329"><span class="linenos">1329</span></a> <span class="n">final_result</span><span class="p">[</span><span class="n">i_val</span><span class="p">]</span><span class="o">.</span><span class="n">_value</span> <span class="o">=</span> <span class="n">new_val</span>
</span><span id="L-1330"><a href="#L-1330"><span class="linenos">1330</span></a> <span class="n">final_result</span><span class="p">[</span><span class="n">i_val</span><span class="p">]</span><span class="o">.</span><span class="n">reweighted</span> <span class="o">=</span> <span class="n">reweighted</span>
</span><span id="L-1331"><a href="#L-1331"><span class="linenos">1331</span></a>
</span><span id="L-1332"><a href="#L-1332"><span class="linenos">1332</span></a> <span class="k">if</span> <span class="n">multi</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
</span><span id="L-1333"><a href="#L-1333"><span class="linenos">1333</span></a> <span class="n">final_result</span> <span class="o">=</span> <span class="n">final_result</span><span class="o">.</span><span class="n">item</span><span class="p">()</span>
</span><span id="L-1334"><a href="#L-1334"><span class="linenos">1334</span></a>
</span><span id="L-1335"><a href="#L-1335"><span class="linenos">1335</span></a> <span class="k">return</span> <span class="n">final_result</span>
</span><span id="L-1336"><a href="#L-1336"><span class="linenos">1336</span></a>
</span><span id="L-1337"><a href="#L-1337"><span class="linenos">1337</span></a>
</span><span id="L-1338"><a href="#L-1338"><span class="linenos">1338</span></a><span class="k">def</span> <span class="nf">_reduce_deltas</span><span class="p">(</span><span class="n">deltas</span><span class="p">,</span> <span class="n">idx_old</span><span class="p">,</span> <span class="n">idx_new</span><span class="p">):</span>
</span><span id="L-1339"><a href="#L-1339"><span class="linenos">1339</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Extract deltas defined on idx_old on all configs of idx_new.</span>
</span><span id="L-1340"><a href="#L-1340"><span class="linenos">1340</span></a>
</span><span id="L-1341"><a href="#L-1341"><span class="linenos">1341</span></a><span class="sd"> Assumes, that idx_old and idx_new are correctly defined idl, i.e., they</span>
</span><span id="L-1342"><a href="#L-1342"><span class="linenos">1342</span></a><span class="sd"> are ordered in an ascending order.</span>
</span><span id="L-1343"><a href="#L-1343"><span class="linenos">1343</span></a>
</span><span id="L-1344"><a href="#L-1344"><span class="linenos">1344</span></a><span class="sd"> Parameters</span>
</span><span id="L-1345"><a href="#L-1345"><span class="linenos">1345</span></a><span class="sd"> ----------</span>
</span><span id="L-1346"><a href="#L-1346"><span class="linenos">1346</span></a><span class="sd"> deltas : list</span>
</span><span id="L-1347"><a href="#L-1347"><span class="linenos">1347</span></a><span class="sd"> List of fluctuations</span>
</span><span id="L-1348"><a href="#L-1348"><span class="linenos">1348</span></a><span class="sd"> idx_old : list</span>
</span><span id="L-1349"><a href="#L-1349"><span class="linenos">1349</span></a><span class="sd"> List or range of configs on which the deltas are defined</span>
</span><span id="L-1350"><a href="#L-1350"><span class="linenos">1350</span></a><span class="sd"> idx_new : list</span>
</span><span id="L-1351"><a href="#L-1351"><span class="linenos">1351</span></a><span class="sd"> List of configs for which we want to extract the deltas.</span>
</span><span id="L-1352"><a href="#L-1352"><span class="linenos">1352</span></a><span class="sd"> Has to be a subset of idx_old.</span>
</span><span id="L-1353"><a href="#L-1353"><span class="linenos">1353</span></a><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="L-1354"><a href="#L-1354"><span class="linenos">1354</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">len</span><span class="p">(</span><span class="n">deltas</span><span class="p">)</span> <span class="o">==</span> <span class="nb">len</span><span class="p">(</span><span class="n">idx_old</span><span class="p">):</span>
</span><span id="L-1355"><a href="#L-1355"><span class="linenos">1355</span></a> <span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s1">&#39;Length of deltas and idx_old have to be the same: </span><span class="si">%d</span><span class="s1"> != </span><span class="si">%d</span><span class="s1">&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">deltas</span><span class="p">),</span> <span class="nb">len</span><span class="p">(</span><span class="n">idx_old</span><span class="p">)))</span>
</span><span id="L-1356"><a href="#L-1356"><span class="linenos">1356</span></a> <span class="k">if</span> <span class="nb">type</span><span class="p">(</span><span class="n">idx_old</span><span class="p">)</span> <span class="ow">is</span> <span class="nb">range</span> <span class="ow">and</span> <span class="nb">type</span><span class="p">(</span><span class="n">idx_new</span><span class="p">)</span> <span class="ow">is</span> <span class="nb">range</span><span class="p">:</span>
</span><span id="L-1357"><a href="#L-1357"><span class="linenos">1357</span></a> <span class="k">if</span> <span class="n">idx_old</span> <span class="o">==</span> <span class="n">idx_new</span><span class="p">:</span>
</span><span id="L-1358"><a href="#L-1358"><span class="linenos">1358</span></a> <span class="k">return</span> <span class="n">deltas</span>
</span><span id="L-1359"><a href="#L-1359"><span class="linenos">1359</span></a> <span class="k">if</span> <span class="n">_check_lists_equal</span><span class="p">([</span><span class="n">idx_old</span><span class="p">,</span> <span class="n">idx_new</span><span class="p">]):</span>
</span><span id="L-1360"><a href="#L-1360"><span class="linenos">1360</span></a> <span class="k">return</span> <span class="n">deltas</span>
</span><span id="L-1361"><a href="#L-1361"><span class="linenos">1361</span></a> <span class="n">indices</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">intersect1d</span><span class="p">(</span><span class="n">idx_old</span><span class="p">,</span> <span class="n">idx_new</span><span class="p">,</span> <span class="n">assume_unique</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">return_indices</span><span class="o">=</span><span class="kc">True</span><span class="p">)[</span><span class="mi">1</span><span class="p">]</span>
</span><span id="L-1362"><a href="#L-1362"><span class="linenos">1362</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">indices</span><span class="p">)</span> <span class="o">&lt;</span> <span class="nb">len</span><span class="p">(</span><span class="n">idx_new</span><span class="p">):</span>
</span><span id="L-1363"><a href="#L-1363"><span class="linenos">1363</span></a> <span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s1">&#39;Error in _reduce_deltas: Config of idx_new not in idx_old&#39;</span><span class="p">)</span>
</span><span id="L-1364"><a href="#L-1364"><span class="linenos">1364</span></a> <span class="k">return</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">(</span><span class="n">deltas</span><span class="p">)[</span><span class="n">indices</span><span class="p">]</span>
</span><span id="L-1365"><a href="#L-1365"><span class="linenos">1365</span></a>
</span><span id="L-1366"><a href="#L-1366"><span class="linenos">1366</span></a>
</span><span id="L-1367"><a href="#L-1367"><span class="linenos">1367</span></a><span class="k">def</span> <span class="nf">reweight</span><span class="p">(</span><span class="n">weight</span><span class="p">,</span> <span class="n">obs</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
</span><span id="L-1368"><a href="#L-1368"><span class="linenos">1368</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Reweight a list of observables.</span>
</span><span id="L-1369"><a href="#L-1369"><span class="linenos">1369</span></a>
</span><span id="L-1370"><a href="#L-1370"><span class="linenos">1370</span></a><span class="sd"> Parameters</span>
</span><span id="L-1371"><a href="#L-1371"><span class="linenos">1371</span></a><span class="sd"> ----------</span>
</span><span id="L-1372"><a href="#L-1372"><span class="linenos">1372</span></a><span class="sd"> weight : Obs</span>
</span><span id="L-1373"><a href="#L-1373"><span class="linenos">1373</span></a><span class="sd"> Reweighting factor. An Observable that has to be defined on a superset of the</span>
</span><span id="L-1374"><a href="#L-1374"><span class="linenos">1374</span></a><span class="sd"> configurations in obs[i].idl for all i.</span>
</span><span id="L-1375"><a href="#L-1375"><span class="linenos">1375</span></a><span class="sd"> obs : list</span>
</span><span id="L-1376"><a href="#L-1376"><span class="linenos">1376</span></a><span class="sd"> list of Obs, e.g. [obs1, obs2, obs3].</span>
</span><span id="L-1377"><a href="#L-1377"><span class="linenos">1377</span></a><span class="sd"> all_configs : bool</span>
</span><span id="L-1378"><a href="#L-1378"><span class="linenos">1378</span></a><span class="sd"> if True, the reweighted observables are normalized by the average of</span>
</span><span id="L-1379"><a href="#L-1379"><span class="linenos">1379</span></a><span class="sd"> the reweighting factor on all configurations in weight.idl and not</span>
</span><span id="L-1380"><a href="#L-1380"><span class="linenos">1380</span></a><span class="sd"> on the configurations in obs[i].idl. Default False.</span>
</span><span id="L-1381"><a href="#L-1381"><span class="linenos">1381</span></a><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="L-1382"><a href="#L-1382"><span class="linenos">1382</span></a> <span class="n">result</span> <span class="o">=</span> <span class="p">[]</span>
</span><span id="L-1383"><a href="#L-1383"><span class="linenos">1383</span></a> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">obs</span><span class="p">)):</span>
</span><span id="L-1384"><a href="#L-1384"><span class="linenos">1384</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">obs</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">cov_names</span><span class="p">):</span>
</span><span id="L-1385"><a href="#L-1385"><span class="linenos">1385</span></a> <span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s1">&#39;Error: Not possible to reweight an Obs that contains covobs!&#39;</span><span class="p">)</span>
</span><span id="L-1386"><a href="#L-1386"><span class="linenos">1386</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">set</span><span class="p">(</span><span class="n">obs</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">names</span><span class="p">)</span><span class="o">.</span><span class="n">issubset</span><span class="p">(</span><span class="n">weight</span><span class="o">.</span><span class="n">names</span><span class="p">):</span>
</span><span id="L-1387"><a href="#L-1387"><span class="linenos">1387</span></a> <span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s1">&#39;Error: Ensembles do not fit&#39;</span><span class="p">)</span>
</span><span id="L-1388"><a href="#L-1388"><span class="linenos">1388</span></a> <span class="k">for</span> <span class="n">name</span> <span class="ow">in</span> <span class="n">obs</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">names</span><span class="p">:</span>
</span><span id="L-1389"><a href="#L-1389"><span class="linenos">1389</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">set</span><span class="p">(</span><span class="n">obs</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">idl</span><span class="p">[</span><span class="n">name</span><span class="p">])</span><span class="o">.</span><span class="n">issubset</span><span class="p">(</span><span class="n">weight</span><span class="o">.</span><span class="n">idl</span><span class="p">[</span><span class="n">name</span><span class="p">]):</span>
</span><span id="L-1390"><a href="#L-1390"><span class="linenos">1390</span></a> <span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s1">&#39;obs[</span><span class="si">%d</span><span class="s1">] has to be defined on a subset of the configs in weight.idl[</span><span class="si">%s</span><span class="s1">]!&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">i</span><span class="p">,</span> <span class="n">name</span><span class="p">))</span>
</span><span id="L-1391"><a href="#L-1391"><span class="linenos">1391</span></a> <span class="n">new_samples</span> <span class="o">=</span> <span class="p">[]</span>
</span><span id="L-1392"><a href="#L-1392"><span class="linenos">1392</span></a> <span class="n">w_deltas</span> <span class="o">=</span> <span class="p">{}</span>
</span><span id="L-1393"><a href="#L-1393"><span class="linenos">1393</span></a> <span class="k">for</span> <span class="n">name</span> <span class="ow">in</span> <span class="nb">sorted</span><span class="p">(</span><span class="n">obs</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">names</span><span class="p">):</span>
</span><span id="L-1394"><a href="#L-1394"><span class="linenos">1394</span></a> <span class="n">w_deltas</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="o">=</span> <span class="n">_reduce_deltas</span><span class="p">(</span><span class="n">weight</span><span class="o">.</span><span class="n">deltas</span><span class="p">[</span><span class="n">name</span><span class="p">],</span> <span class="n">weight</span><span class="o">.</span><span class="n">idl</span><span class="p">[</span><span class="n">name</span><span class="p">],</span> <span class="n">obs</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">idl</span><span class="p">[</span><span class="n">name</span><span class="p">])</span>
</span><span id="L-1395"><a href="#L-1395"><span class="linenos">1395</span></a> <span class="n">new_samples</span><span class="o">.</span><span class="n">append</span><span class="p">((</span><span class="n">w_deltas</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="o">+</span> <span class="n">weight</span><span class="o">.</span><span class="n">r_values</span><span class="p">[</span><span class="n">name</span><span class="p">])</span> <span class="o">*</span> <span class="p">(</span><span class="n">obs</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">deltas</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="o">+</span> <span class="n">obs</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">r_values</span><span class="p">[</span><span class="n">name</span><span class="p">]))</span>
</span><span id="L-1396"><a href="#L-1396"><span class="linenos">1396</span></a> <span class="n">tmp_obs</span> <span class="o">=</span> <span class="n">Obs</span><span class="p">(</span><span class="n">new_samples</span><span class="p">,</span> <span class="nb">sorted</span><span class="p">(</span><span class="n">obs</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">names</span><span class="p">),</span> <span class="n">idl</span><span class="o">=</span><span class="p">[</span><span class="n">obs</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">idl</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="k">for</span> <span class="n">name</span> <span class="ow">in</span> <span class="nb">sorted</span><span class="p">(</span><span class="n">obs</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">names</span><span class="p">)])</span>
</span><span id="L-1397"><a href="#L-1397"><span class="linenos">1397</span></a>
</span><span id="L-1398"><a href="#L-1398"><span class="linenos">1398</span></a> <span class="k">if</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">&#39;all_configs&#39;</span><span class="p">):</span>
</span><span id="L-1399"><a href="#L-1399"><span class="linenos">1399</span></a> <span class="n">new_weight</span> <span class="o">=</span> <span class="n">weight</span>
</span><span id="L-1400"><a href="#L-1400"><span class="linenos">1400</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="L-1401"><a href="#L-1401"><span class="linenos">1401</span></a> <span class="n">new_weight</span> <span class="o">=</span> <span class="n">Obs</span><span class="p">([</span><span class="n">w_deltas</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="o">+</span> <span class="n">weight</span><span class="o">.</span><span class="n">r_values</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="k">for</span> <span class="n">name</span> <span class="ow">in</span> <span class="nb">sorted</span><span class="p">(</span><span class="n">obs</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">names</span><span class="p">)],</span> <span class="nb">sorted</span><span class="p">(</span><span class="n">obs</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">names</span><span class="p">),</span> <span class="n">idl</span><span class="o">=</span><span class="p">[</span><span class="n">obs</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">idl</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="k">for</span> <span class="n">name</span> <span class="ow">in</span> <span class="nb">sorted</span><span class="p">(</span><span class="n">obs</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">names</span><span class="p">)])</span>
</span><span id="L-1402"><a href="#L-1402"><span class="linenos">1402</span></a>
</span><span id="L-1403"><a href="#L-1403"><span class="linenos">1403</span></a> <span class="n">result</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">tmp_obs</span> <span class="o">/</span> <span class="n">new_weight</span><span class="p">)</span>
</span><span id="L-1404"><a href="#L-1404"><span class="linenos">1404</span></a> <span class="n">result</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">reweighted</span> <span class="o">=</span> <span class="kc">True</span>
</span><span id="L-1405"><a href="#L-1405"><span class="linenos">1405</span></a>
</span><span id="L-1406"><a href="#L-1406"><span class="linenos">1406</span></a> <span class="k">return</span> <span class="n">result</span>
</span><span id="L-1407"><a href="#L-1407"><span class="linenos">1407</span></a>
</span><span id="L-1408"><a href="#L-1408"><span class="linenos">1408</span></a>
</span><span id="L-1409"><a href="#L-1409"><span class="linenos">1409</span></a><span class="k">def</span> <span class="nf">correlate</span><span class="p">(</span><span class="n">obs_a</span><span class="p">,</span> <span class="n">obs_b</span><span class="p">):</span>
</span><span id="L-1410"><a href="#L-1410"><span class="linenos">1410</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Correlate two observables.</span>
</span><span id="L-1411"><a href="#L-1411"><span class="linenos">1411</span></a>
</span><span id="L-1412"><a href="#L-1412"><span class="linenos">1412</span></a><span class="sd"> Parameters</span>
</span><span id="L-1413"><a href="#L-1413"><span class="linenos">1413</span></a><span class="sd"> ----------</span>
</span><span id="L-1414"><a href="#L-1414"><span class="linenos">1414</span></a><span class="sd"> obs_a : Obs</span>
</span><span id="L-1415"><a href="#L-1415"><span class="linenos">1415</span></a><span class="sd"> First observable</span>
</span><span id="L-1416"><a href="#L-1416"><span class="linenos">1416</span></a><span class="sd"> obs_b : Obs</span>
</span><span id="L-1417"><a href="#L-1417"><span class="linenos">1417</span></a><span class="sd"> Second observable</span>
</span><span id="L-1418"><a href="#L-1418"><span class="linenos">1418</span></a>
</span><span id="L-1419"><a href="#L-1419"><span class="linenos">1419</span></a><span class="sd"> Notes</span>
</span><span id="L-1420"><a href="#L-1420"><span class="linenos">1420</span></a><span class="sd"> -----</span>
</span><span id="L-1421"><a href="#L-1421"><span class="linenos">1421</span></a><span class="sd"> Keep in mind to only correlate primary observables which have not been reweighted</span>
</span><span id="L-1422"><a href="#L-1422"><span class="linenos">1422</span></a><span class="sd"> yet. The reweighting has to be applied after correlating the observables.</span>
</span><span id="L-1423"><a href="#L-1423"><span class="linenos">1423</span></a><span class="sd"> Currently only works if ensembles are identical (this is not strictly necessary).</span>
</span><span id="L-1424"><a href="#L-1424"><span class="linenos">1424</span></a><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="L-1425"><a href="#L-1425"><span class="linenos">1425</span></a>
</span><span id="L-1426"><a href="#L-1426"><span class="linenos">1426</span></a> <span class="k">if</span> <span class="nb">sorted</span><span class="p">(</span><span class="n">obs_a</span><span class="o">.</span><span class="n">names</span><span class="p">)</span> <span class="o">!=</span> <span class="nb">sorted</span><span class="p">(</span><span class="n">obs_b</span><span class="o">.</span><span class="n">names</span><span class="p">):</span>
</span><span id="L-1427"><a href="#L-1427"><span class="linenos">1427</span></a> <span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Ensembles do not fit </span><span class="si">{</span><span class="nb">set</span><span class="p">(</span><span class="nb">sorted</span><span class="p">(</span><span class="n">obs_a</span><span class="o">.</span><span class="n">names</span><span class="p">))</span><span class="w"> </span><span class="o">^</span><span class="w"> </span><span class="nb">set</span><span class="p">(</span><span class="nb">sorted</span><span class="p">(</span><span class="n">obs_b</span><span class="o">.</span><span class="n">names</span><span class="p">))</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
</span><span id="L-1428"><a href="#L-1428"><span class="linenos">1428</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">obs_a</span><span class="o">.</span><span class="n">cov_names</span><span class="p">)</span> <span class="ow">or</span> <span class="nb">len</span><span class="p">(</span><span class="n">obs_b</span><span class="o">.</span><span class="n">cov_names</span><span class="p">):</span>
</span><span id="L-1429"><a href="#L-1429"><span class="linenos">1429</span></a> <span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s1">&#39;Error: Not possible to correlate Obs that contain covobs!&#39;</span><span class="p">)</span>
</span><span id="L-1430"><a href="#L-1430"><span class="linenos">1430</span></a> <span class="k">for</span> <span class="n">name</span> <span class="ow">in</span> <span class="n">obs_a</span><span class="o">.</span><span class="n">names</span><span class="p">:</span>
</span><span id="L-1431"><a href="#L-1431"><span class="linenos">1431</span></a> <span class="k">if</span> <span class="n">obs_a</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="o">!=</span> <span class="n">obs_b</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="n">name</span><span class="p">]:</span>
</span><span id="L-1432"><a href="#L-1432"><span class="linenos">1432</span></a> <span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s1">&#39;Shapes of ensemble&#39;</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="s1">&#39;do not fit&#39;</span><span class="p">)</span>
</span><span id="L-1433"><a href="#L-1433"><span class="linenos">1433</span></a> <span class="k">if</span> <span class="n">obs_a</span><span class="o">.</span><span class="n">idl</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="o">!=</span> <span class="n">obs_b</span><span class="o">.</span><span class="n">idl</span><span class="p">[</span><span class="n">name</span><span class="p">]:</span>
</span><span id="L-1434"><a href="#L-1434"><span class="linenos">1434</span></a> <span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s1">&#39;idl of ensemble&#39;</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="s1">&#39;do not fit&#39;</span><span class="p">)</span>
</span><span id="L-1435"><a href="#L-1435"><span class="linenos">1435</span></a>
</span><span id="L-1436"><a href="#L-1436"><span class="linenos">1436</span></a> <span class="k">if</span> <span class="n">obs_a</span><span class="o">.</span><span class="n">reweighted</span> <span class="ow">is</span> <span class="kc">True</span><span class="p">:</span>
</span><span id="L-1437"><a href="#L-1437"><span class="linenos">1437</span></a> <span class="n">warnings</span><span class="o">.</span><span class="n">warn</span><span class="p">(</span><span class="s2">&quot;The first observable is already reweighted.&quot;</span><span class="p">,</span> <span class="ne">RuntimeWarning</span><span class="p">)</span>
</span><span id="L-1438"><a href="#L-1438"><span class="linenos">1438</span></a> <span class="k">if</span> <span class="n">obs_b</span><span class="o">.</span><span class="n">reweighted</span> <span class="ow">is</span> <span class="kc">True</span><span class="p">:</span>
</span><span id="L-1439"><a href="#L-1439"><span class="linenos">1439</span></a> <span class="n">warnings</span><span class="o">.</span><span class="n">warn</span><span class="p">(</span><span class="s2">&quot;The second observable is already reweighted.&quot;</span><span class="p">,</span> <span class="ne">RuntimeWarning</span><span class="p">)</span>
</span><span id="L-1440"><a href="#L-1440"><span class="linenos">1440</span></a>
</span><span id="L-1441"><a href="#L-1441"><span class="linenos">1441</span></a> <span class="n">new_samples</span> <span class="o">=</span> <span class="p">[]</span>
</span><span id="L-1442"><a href="#L-1442"><span class="linenos">1442</span></a> <span class="n">new_idl</span> <span class="o">=</span> <span class="p">[]</span>
</span><span id="L-1443"><a href="#L-1443"><span class="linenos">1443</span></a> <span class="k">for</span> <span class="n">name</span> <span class="ow">in</span> <span class="nb">sorted</span><span class="p">(</span><span class="n">obs_a</span><span class="o">.</span><span class="n">names</span><span class="p">):</span>
</span><span id="L-1444"><a href="#L-1444"><span class="linenos">1444</span></a> <span class="n">new_samples</span><span class="o">.</span><span class="n">append</span><span class="p">((</span><span class="n">obs_a</span><span class="o">.</span><span class="n">deltas</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="o">+</span> <span class="n">obs_a</span><span class="o">.</span><span class="n">r_values</span><span class="p">[</span><span class="n">name</span><span class="p">])</span> <span class="o">*</span> <span class="p">(</span><span class="n">obs_b</span><span class="o">.</span><span class="n">deltas</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="o">+</span> <span class="n">obs_b</span><span class="o">.</span><span class="n">r_values</span><span class="p">[</span><span class="n">name</span><span class="p">]))</span>
</span><span id="L-1445"><a href="#L-1445"><span class="linenos">1445</span></a> <span class="n">new_idl</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">obs_a</span><span class="o">.</span><span class="n">idl</span><span class="p">[</span><span class="n">name</span><span class="p">])</span>
</span><span id="L-1446"><a href="#L-1446"><span class="linenos">1446</span></a>
</span><span id="L-1447"><a href="#L-1447"><span class="linenos">1447</span></a> <span class="n">o</span> <span class="o">=</span> <span class="n">Obs</span><span class="p">(</span><span class="n">new_samples</span><span class="p">,</span> <span class="nb">sorted</span><span class="p">(</span><span class="n">obs_a</span><span class="o">.</span><span class="n">names</span><span class="p">),</span> <span class="n">idl</span><span class="o">=</span><span class="n">new_idl</span><span class="p">)</span>
</span><span id="L-1448"><a href="#L-1448"><span class="linenos">1448</span></a> <span class="n">o</span><span class="o">.</span><span class="n">reweighted</span> <span class="o">=</span> <span class="n">obs_a</span><span class="o">.</span><span class="n">reweighted</span> <span class="ow">or</span> <span class="n">obs_b</span><span class="o">.</span><span class="n">reweighted</span>
</span><span id="L-1449"><a href="#L-1449"><span class="linenos">1449</span></a> <span class="k">return</span> <span class="n">o</span>
</span><span id="L-1450"><a href="#L-1450"><span class="linenos">1450</span></a>
</span><span id="L-1451"><a href="#L-1451"><span class="linenos">1451</span></a>
</span><span id="L-1452"><a href="#L-1452"><span class="linenos">1452</span></a><span class="k">def</span> <span class="nf">covariance</span><span class="p">(</span><span class="n">obs</span><span class="p">,</span> <span class="n">visualize</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">correlation</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">smooth</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
</span><span id="L-1453"><a href="#L-1453"><span class="linenos">1453</span></a><span class="w"> </span><span class="sa">r</span><span class="sd">&#39;&#39;&#39;Calculates the error covariance matrix of a set of observables.</span>
</span><span id="L-1454"><a href="#L-1454"><span class="linenos">1454</span></a>
</span><span id="L-1455"><a href="#L-1455"><span class="linenos">1455</span></a><span class="sd"> WARNING: This function should be used with care, especially for observables with support on multiple</span>
</span><span id="L-1456"><a href="#L-1456"><span class="linenos">1456</span></a><span class="sd"> ensembles with differing autocorrelations. See the notes below for details.</span>
</span><span id="L-1457"><a href="#L-1457"><span class="linenos">1457</span></a>
</span><span id="L-1458"><a href="#L-1458"><span class="linenos">1458</span></a><span class="sd"> The gamma method has to be applied first to all observables.</span>
</span><span id="L-1459"><a href="#L-1459"><span class="linenos">1459</span></a>
</span><span id="L-1460"><a href="#L-1460"><span class="linenos">1460</span></a><span class="sd"> Parameters</span>
</span><span id="L-1461"><a href="#L-1461"><span class="linenos">1461</span></a><span class="sd"> ----------</span>
</span><span id="L-1462"><a href="#L-1462"><span class="linenos">1462</span></a><span class="sd"> obs : list or numpy.ndarray</span>
</span><span id="L-1463"><a href="#L-1463"><span class="linenos">1463</span></a><span class="sd"> List or one dimensional array of Obs</span>
</span><span id="L-1464"><a href="#L-1464"><span class="linenos">1464</span></a><span class="sd"> visualize : bool</span>
</span><span id="L-1465"><a href="#L-1465"><span class="linenos">1465</span></a><span class="sd"> If True plots the corresponding normalized correlation matrix (default False).</span>
</span><span id="L-1466"><a href="#L-1466"><span class="linenos">1466</span></a><span class="sd"> correlation : bool</span>
</span><span id="L-1467"><a href="#L-1467"><span class="linenos">1467</span></a><span class="sd"> If True the correlation matrix instead of the error covariance matrix is returned (default False).</span>
</span><span id="L-1468"><a href="#L-1468"><span class="linenos">1468</span></a><span class="sd"> smooth : None or int</span>
</span><span id="L-1469"><a href="#L-1469"><span class="linenos">1469</span></a><span class="sd"> If smooth is an integer &#39;E&#39; between 2 and the dimension of the matrix minus 1 the eigenvalue</span>
</span><span id="L-1470"><a href="#L-1470"><span class="linenos">1470</span></a><span class="sd"> smoothing procedure of hep-lat/9412087 is applied to the correlation matrix which leaves the</span>
</span><span id="L-1471"><a href="#L-1471"><span class="linenos">1471</span></a><span class="sd"> largest E eigenvalues essentially unchanged and smoothes the smaller eigenvalues to avoid extremely</span>
</span><span id="L-1472"><a href="#L-1472"><span class="linenos">1472</span></a><span class="sd"> small ones.</span>
</span><span id="L-1473"><a href="#L-1473"><span class="linenos">1473</span></a>
</span><span id="L-1474"><a href="#L-1474"><span class="linenos">1474</span></a><span class="sd"> Notes</span>
</span><span id="L-1475"><a href="#L-1475"><span class="linenos">1475</span></a><span class="sd"> -----</span>
</span><span id="L-1476"><a href="#L-1476"><span class="linenos">1476</span></a><span class="sd"> The error covariance is defined such that it agrees with the squared standard error for two identical observables</span>
</span><span id="L-1477"><a href="#L-1477"><span class="linenos">1477</span></a><span class="sd"> $$\operatorname{cov}(a,a)=\sum_{s=1}^N\delta_a^s\delta_a^s/N^2=\Gamma_{aa}(0)/N=\operatorname{var}(a)/N=\sigma_a^2$$</span>
</span><span id="L-1478"><a href="#L-1478"><span class="linenos">1478</span></a><span class="sd"> in the absence of autocorrelation.</span>
</span><span id="L-1479"><a href="#L-1479"><span class="linenos">1479</span></a><span class="sd"> The error covariance is estimated by calculating the correlation matrix assuming no autocorrelation and then rescaling the correlation matrix by the full errors including the previous gamma method estimate for the autocorrelation of the observables. The covariance at windowsize 0 is guaranteed to be positive semi-definite</span>
</span><span id="L-1480"><a href="#L-1480"><span class="linenos">1480</span></a><span class="sd"> $$\sum_{i,j}v_i\Gamma_{ij}(0)v_j=\frac{1}{N}\sum_{s=1}^N\sum_{i,j}v_i\delta_i^s\delta_j^s v_j=\frac{1}{N}\sum_{s=1}^N\sum_{i}|v_i\delta_i^s|^2\geq 0\,,$$ for every $v\in\mathbb{R}^M$, while such an identity does not hold for larger windows/lags.</span>
</span><span id="L-1481"><a href="#L-1481"><span class="linenos">1481</span></a><span class="sd"> For observables defined on a single ensemble our approximation is equivalent to assuming that the integrated autocorrelation time of an off-diagonal element is equal to the geometric mean of the integrated autocorrelation times of the corresponding diagonal elements.</span>
</span><span id="L-1482"><a href="#L-1482"><span class="linenos">1482</span></a><span class="sd"> $$\tau_{\mathrm{int}, ij}=\sqrt{\tau_{\mathrm{int}, i}\times \tau_{\mathrm{int}, j}}$$</span>
</span><span id="L-1483"><a href="#L-1483"><span class="linenos">1483</span></a><span class="sd"> This construction ensures that the estimated covariance matrix is positive semi-definite (up to numerical rounding errors).</span>
</span><span id="L-1484"><a href="#L-1484"><span class="linenos">1484</span></a><span class="sd"> &#39;&#39;&#39;</span>
</span><span id="L-1485"><a href="#L-1485"><span class="linenos">1485</span></a>
</span><span id="L-1486"><a href="#L-1486"><span class="linenos">1486</span></a> <span class="n">length</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">obs</span><span class="p">)</span>
</span><span id="L-1487"><a href="#L-1487"><span class="linenos">1487</span></a>
</span><span id="L-1488"><a href="#L-1488"><span class="linenos">1488</span></a> <span class="n">max_samples</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">max</span><span class="p">([</span><span class="n">o</span><span class="o">.</span><span class="n">N</span> <span class="k">for</span> <span class="n">o</span> <span class="ow">in</span> <span class="n">obs</span><span class="p">])</span>
</span><span id="L-1489"><a href="#L-1489"><span class="linenos">1489</span></a> <span class="k">if</span> <span class="n">max_samples</span> <span class="o">&lt;=</span> <span class="n">length</span> <span class="ow">and</span> <span class="ow">not</span> <span class="p">[</span><span class="n">item</span> <span class="k">for</span> <span class="n">sublist</span> <span class="ow">in</span> <span class="p">[</span><span class="n">o</span><span class="o">.</span><span class="n">cov_names</span> <span class="k">for</span> <span class="n">o</span> <span class="ow">in</span> <span class="n">obs</span><span class="p">]</span> <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="n">sublist</span><span class="p">]:</span>
</span><span id="L-1490"><a href="#L-1490"><span class="linenos">1490</span></a> <span class="n">warnings</span><span class="o">.</span><span class="n">warn</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;The dimension of the covariance matrix (</span><span class="si">{</span><span class="n">length</span><span class="si">}</span><span class="s2">) is larger or equal to the number of samples (</span><span class="si">{</span><span class="n">max_samples</span><span class="si">}</span><span class="s2">). This will result in a rank deficient matrix.&quot;</span><span class="p">,</span> <span class="ne">RuntimeWarning</span><span class="p">)</span>
</span><span id="L-1491"><a href="#L-1491"><span class="linenos">1491</span></a>
</span><span id="L-1492"><a href="#L-1492"><span class="linenos">1492</span></a> <span class="n">cov</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">zeros</span><span class="p">((</span><span class="n">length</span><span class="p">,</span> <span class="n">length</span><span class="p">))</span>
</span><span id="L-1493"><a href="#L-1493"><span class="linenos">1493</span></a> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">length</span><span class="p">):</span>
</span><span id="L-1494"><a href="#L-1494"><span class="linenos">1494</span></a> <span class="k">for</span> <span class="n">j</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">i</span><span class="p">,</span> <span class="n">length</span><span class="p">):</span>
</span><span id="L-1495"><a href="#L-1495"><span class="linenos">1495</span></a> <span class="n">cov</span><span class="p">[</span><span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class="p">]</span> <span class="o">=</span> <span class="n">_covariance_element</span><span class="p">(</span><span class="n">obs</span><span class="p">[</span><span class="n">i</span><span class="p">],</span> <span class="n">obs</span><span class="p">[</span><span class="n">j</span><span class="p">])</span>
</span><span id="L-1496"><a href="#L-1496"><span class="linenos">1496</span></a> <span class="n">cov</span> <span class="o">=</span> <span class="n">cov</span> <span class="o">+</span> <span class="n">cov</span><span class="o">.</span><span class="n">T</span> <span class="o">-</span> <span class="n">np</span><span class="o">.</span><span class="n">diag</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">diag</span><span class="p">(</span><span class="n">cov</span><span class="p">))</span>
</span><span id="L-1497"><a href="#L-1497"><span class="linenos">1497</span></a>
</span><span id="L-1498"><a href="#L-1498"><span class="linenos">1498</span></a> <span class="n">corr</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">diag</span><span class="p">(</span><span class="mi">1</span> <span class="o">/</span> <span class="n">np</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">diag</span><span class="p">(</span><span class="n">cov</span><span class="p">)))</span> <span class="o">@</span> <span class="n">cov</span> <span class="o">@</span> <span class="n">np</span><span class="o">.</span><span class="n">diag</span><span class="p">(</span><span class="mi">1</span> <span class="o">/</span> <span class="n">np</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">diag</span><span class="p">(</span><span class="n">cov</span><span class="p">)))</span>
</span><span id="L-1499"><a href="#L-1499"><span class="linenos">1499</span></a>
</span><span id="L-1500"><a href="#L-1500"><span class="linenos">1500</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">smooth</span><span class="p">,</span> <span class="nb">int</span><span class="p">):</span>
</span><span id="L-1501"><a href="#L-1501"><span class="linenos">1501</span></a> <span class="n">corr</span> <span class="o">=</span> <span class="n">_smooth_eigenvalues</span><span class="p">(</span><span class="n">corr</span><span class="p">,</span> <span class="n">smooth</span><span class="p">)</span>
</span><span id="L-1502"><a href="#L-1502"><span class="linenos">1502</span></a>
</span><span id="L-1503"><a href="#L-1503"><span class="linenos">1503</span></a> <span class="k">if</span> <span class="n">visualize</span><span class="p">:</span>
</span><span id="L-1504"><a href="#L-1504"><span class="linenos">1504</span></a> <span class="n">plt</span><span class="o">.</span><span class="n">matshow</span><span class="p">(</span><span class="n">corr</span><span class="p">,</span> <span class="n">vmin</span><span class="o">=-</span><span class="mi">1</span><span class="p">,</span> <span class="n">vmax</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
</span><span id="L-1505"><a href="#L-1505"><span class="linenos">1505</span></a> <span class="n">plt</span><span class="o">.</span><span class="n">set_cmap</span><span class="p">(</span><span class="s1">&#39;RdBu&#39;</span><span class="p">)</span>
</span><span id="L-1506"><a href="#L-1506"><span class="linenos">1506</span></a> <span class="n">plt</span><span class="o">.</span><span class="n">colorbar</span><span class="p">()</span>
</span><span id="L-1507"><a href="#L-1507"><span class="linenos">1507</span></a> <span class="n">plt</span><span class="o">.</span><span class="n">draw</span><span class="p">()</span>
</span><span id="L-1508"><a href="#L-1508"><span class="linenos">1508</span></a>
</span><span id="L-1509"><a href="#L-1509"><span class="linenos">1509</span></a> <span class="k">if</span> <span class="n">correlation</span> <span class="ow">is</span> <span class="kc">True</span><span class="p">:</span>
</span><span id="L-1510"><a href="#L-1510"><span class="linenos">1510</span></a> <span class="k">return</span> <span class="n">corr</span>
</span><span id="L-1511"><a href="#L-1511"><span class="linenos">1511</span></a>
</span><span id="L-1512"><a href="#L-1512"><span class="linenos">1512</span></a> <span class="n">errors</span> <span class="o">=</span> <span class="p">[</span><span class="n">o</span><span class="o">.</span><span class="n">dvalue</span> <span class="k">for</span> <span class="n">o</span> <span class="ow">in</span> <span class="n">obs</span><span class="p">]</span>
</span><span id="L-1513"><a href="#L-1513"><span class="linenos">1513</span></a> <span class="n">cov</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">diag</span><span class="p">(</span><span class="n">errors</span><span class="p">)</span> <span class="o">@</span> <span class="n">corr</span> <span class="o">@</span> <span class="n">np</span><span class="o">.</span><span class="n">diag</span><span class="p">(</span><span class="n">errors</span><span class="p">)</span>
</span><span id="L-1514"><a href="#L-1514"><span class="linenos">1514</span></a>
</span><span id="L-1515"><a href="#L-1515"><span class="linenos">1515</span></a> <span class="n">eigenvalues</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">linalg</span><span class="o">.</span><span class="n">eigh</span><span class="p">(</span><span class="n">cov</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span>
</span><span id="L-1516"><a href="#L-1516"><span class="linenos">1516</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">np</span><span class="o">.</span><span class="n">all</span><span class="p">(</span><span class="n">eigenvalues</span> <span class="o">&gt;=</span> <span class="mi">0</span><span class="p">):</span>
</span><span id="L-1517"><a href="#L-1517"><span class="linenos">1517</span></a> <span class="n">warnings</span><span class="o">.</span><span class="n">warn</span><span class="p">(</span><span class="s2">&quot;Covariance matrix is not positive semi-definite (Eigenvalues: &quot;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">eigenvalues</span><span class="p">)</span> <span class="o">+</span> <span class="s2">&quot;)&quot;</span><span class="p">,</span> <span class="ne">RuntimeWarning</span><span class="p">)</span>
</span><span id="L-1518"><a href="#L-1518"><span class="linenos">1518</span></a>
</span><span id="L-1519"><a href="#L-1519"><span class="linenos">1519</span></a> <span class="k">return</span> <span class="n">cov</span>
</span><span id="L-1520"><a href="#L-1520"><span class="linenos">1520</span></a>
</span><span id="L-1521"><a href="#L-1521"><span class="linenos">1521</span></a>
</span><span id="L-1522"><a href="#L-1522"><span class="linenos">1522</span></a><span class="k">def</span> <span class="nf">_smooth_eigenvalues</span><span class="p">(</span><span class="n">corr</span><span class="p">,</span> <span class="n">E</span><span class="p">):</span>
</span><span id="L-1523"><a href="#L-1523"><span class="linenos">1523</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Eigenvalue smoothing as described in hep-lat/9412087</span>
</span><span id="L-1524"><a href="#L-1524"><span class="linenos">1524</span></a>
</span><span id="L-1525"><a href="#L-1525"><span class="linenos">1525</span></a><span class="sd"> corr : np.ndarray</span>
</span><span id="L-1526"><a href="#L-1526"><span class="linenos">1526</span></a><span class="sd"> correlation matrix</span>
</span><span id="L-1527"><a href="#L-1527"><span class="linenos">1527</span></a><span class="sd"> E : integer</span>
</span><span id="L-1528"><a href="#L-1528"><span class="linenos">1528</span></a><span class="sd"> Number of eigenvalues to be left substantially unchanged</span>
</span><span id="L-1529"><a href="#L-1529"><span class="linenos">1529</span></a><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="L-1530"><a href="#L-1530"><span class="linenos">1530</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="p">(</span><span class="mi">2</span> <span class="o">&lt;</span> <span class="n">E</span> <span class="o">&lt;</span> <span class="n">corr</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">-</span> <span class="mi">1</span><span class="p">):</span>
</span><span id="L-1531"><a href="#L-1531"><span class="linenos">1531</span></a> <span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;&#39;E&#39; has to be between 2 and the dimension of the correlation matrix minus 1 (</span><span class="si">{</span><span class="n">corr</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mi">1</span><span class="si">}</span><span class="s2">).&quot;</span><span class="p">)</span>
</span><span id="L-1532"><a href="#L-1532"><span class="linenos">1532</span></a> <span class="n">vals</span><span class="p">,</span> <span class="n">vec</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">linalg</span><span class="o">.</span><span class="n">eigh</span><span class="p">(</span><span class="n">corr</span><span class="p">)</span>
</span><span id="L-1533"><a href="#L-1533"><span class="linenos">1533</span></a> <span class="n">lambda_min</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">mean</span><span class="p">(</span><span class="n">vals</span><span class="p">[:</span><span class="o">-</span><span class="n">E</span><span class="p">])</span>
</span><span id="L-1534"><a href="#L-1534"><span class="linenos">1534</span></a> <span class="n">vals</span><span class="p">[</span><span class="n">vals</span> <span class="o">&lt;</span> <span class="n">lambda_min</span><span class="p">]</span> <span class="o">=</span> <span class="n">lambda_min</span>
</span><span id="L-1535"><a href="#L-1535"><span class="linenos">1535</span></a> <span class="n">vals</span> <span class="o">/=</span> <span class="n">np</span><span class="o">.</span><span class="n">mean</span><span class="p">(</span><span class="n">vals</span><span class="p">)</span>
</span><span id="L-1536"><a href="#L-1536"><span class="linenos">1536</span></a> <span class="k">return</span> <span class="n">vec</span> <span class="o">@</span> <span class="n">np</span><span class="o">.</span><span class="n">diag</span><span class="p">(</span><span class="n">vals</span><span class="p">)</span> <span class="o">@</span> <span class="n">vec</span><span class="o">.</span><span class="n">T</span>
</span><span id="L-1537"><a href="#L-1537"><span class="linenos">1537</span></a>
</span><span id="L-1538"><a href="#L-1538"><span class="linenos">1538</span></a>
</span><span id="L-1539"><a href="#L-1539"><span class="linenos">1539</span></a><span class="k">def</span> <span class="nf">_covariance_element</span><span class="p">(</span><span class="n">obs1</span><span class="p">,</span> <span class="n">obs2</span><span class="p">):</span>
</span><span id="L-1540"><a href="#L-1540"><span class="linenos">1540</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Estimates the covariance of two Obs objects, neglecting autocorrelations.&quot;&quot;&quot;</span>
</span><span id="L-1541"><a href="#L-1541"><span class="linenos">1541</span></a>
</span><span id="L-1542"><a href="#L-1542"><span class="linenos">1542</span></a> <span class="k">def</span> <span class="nf">calc_gamma</span><span class="p">(</span><span class="n">deltas1</span><span class="p">,</span> <span class="n">deltas2</span><span class="p">,</span> <span class="n">idx1</span><span class="p">,</span> <span class="n">idx2</span><span class="p">,</span> <span class="n">new_idx</span><span class="p">):</span>
</span><span id="L-1543"><a href="#L-1543"><span class="linenos">1543</span></a> <span class="n">deltas1</span> <span class="o">=</span> <span class="n">_reduce_deltas</span><span class="p">(</span><span class="n">deltas1</span><span class="p">,</span> <span class="n">idx1</span><span class="p">,</span> <span class="n">new_idx</span><span class="p">)</span>
</span><span id="L-1544"><a href="#L-1544"><span class="linenos">1544</span></a> <span class="n">deltas2</span> <span class="o">=</span> <span class="n">_reduce_deltas</span><span class="p">(</span><span class="n">deltas2</span><span class="p">,</span> <span class="n">idx2</span><span class="p">,</span> <span class="n">new_idx</span><span class="p">)</span>
</span><span id="L-1545"><a href="#L-1545"><span class="linenos">1545</span></a> <span class="k">return</span> <span class="n">np</span><span class="o">.</span><span class="n">sum</span><span class="p">(</span><span class="n">deltas1</span> <span class="o">*</span> <span class="n">deltas2</span><span class="p">)</span>
</span><span id="L-1546"><a href="#L-1546"><span class="linenos">1546</span></a>
</span><span id="L-1547"><a href="#L-1547"><span class="linenos">1547</span></a> <span class="k">if</span> <span class="nb">set</span><span class="p">(</span><span class="n">obs1</span><span class="o">.</span><span class="n">names</span><span class="p">)</span><span class="o">.</span><span class="n">isdisjoint</span><span class="p">(</span><span class="nb">set</span><span class="p">(</span><span class="n">obs2</span><span class="o">.</span><span class="n">names</span><span class="p">)):</span>
</span><span id="L-1548"><a href="#L-1548"><span class="linenos">1548</span></a> <span class="k">return</span> <span class="mf">0.0</span>
</span><span id="L-1549"><a href="#L-1549"><span class="linenos">1549</span></a>
</span><span id="L-1550"><a href="#L-1550"><span class="linenos">1550</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">obs1</span><span class="p">,</span> <span class="s1">&#39;e_dvalue&#39;</span><span class="p">)</span> <span class="ow">or</span> <span class="ow">not</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">obs2</span><span class="p">,</span> <span class="s1">&#39;e_dvalue&#39;</span><span class="p">):</span>
</span><span id="L-1551"><a href="#L-1551"><span class="linenos">1551</span></a> <span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s1">&#39;The gamma method has to be applied to both Obs first.&#39;</span><span class="p">)</span>
</span><span id="L-1552"><a href="#L-1552"><span class="linenos">1552</span></a>
</span><span id="L-1553"><a href="#L-1553"><span class="linenos">1553</span></a> <span class="n">dvalue</span> <span class="o">=</span> <span class="mf">0.0</span>
</span><span id="L-1554"><a href="#L-1554"><span class="linenos">1554</span></a>
</span><span id="L-1555"><a href="#L-1555"><span class="linenos">1555</span></a> <span class="k">for</span> <span class="n">e_name</span> <span class="ow">in</span> <span class="n">obs1</span><span class="o">.</span><span class="n">mc_names</span><span class="p">:</span>
</span><span id="L-1556"><a href="#L-1556"><span class="linenos">1556</span></a>
</span><span id="L-1557"><a href="#L-1557"><span class="linenos">1557</span></a> <span class="k">if</span> <span class="n">e_name</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">obs2</span><span class="o">.</span><span class="n">mc_names</span><span class="p">:</span>
</span><span id="L-1558"><a href="#L-1558"><span class="linenos">1558</span></a> <span class="k">continue</span>
</span><span id="L-1559"><a href="#L-1559"><span class="linenos">1559</span></a>
</span><span id="L-1560"><a href="#L-1560"><span class="linenos">1560</span></a> <span class="n">idl_d</span> <span class="o">=</span> <span class="p">{}</span>
</span><span id="L-1561"><a href="#L-1561"><span class="linenos">1561</span></a> <span class="k">for</span> <span class="n">r_name</span> <span class="ow">in</span> <span class="n">obs1</span><span class="o">.</span><span class="n">e_content</span><span class="p">[</span><span class="n">e_name</span><span class="p">]:</span>
</span><span id="L-1562"><a href="#L-1562"><span class="linenos">1562</span></a> <span class="k">if</span> <span class="n">r_name</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">obs2</span><span class="o">.</span><span class="n">e_content</span><span class="p">[</span><span class="n">e_name</span><span class="p">]:</span>
</span><span id="L-1563"><a href="#L-1563"><span class="linenos">1563</span></a> <span class="k">continue</span>
</span><span id="L-1564"><a href="#L-1564"><span class="linenos">1564</span></a> <span class="n">idl_d</span><span class="p">[</span><span class="n">r_name</span><span class="p">]</span> <span class="o">=</span> <span class="n">_intersection_idx</span><span class="p">([</span><span class="n">obs1</span><span class="o">.</span><span class="n">idl</span><span class="p">[</span><span class="n">r_name</span><span class="p">],</span> <span class="n">obs2</span><span class="o">.</span><span class="n">idl</span><span class="p">[</span><span class="n">r_name</span><span class="p">]])</span>
</span><span id="L-1565"><a href="#L-1565"><span class="linenos">1565</span></a>
</span><span id="L-1566"><a href="#L-1566"><span class="linenos">1566</span></a> <span class="n">gamma</span> <span class="o">=</span> <span class="mf">0.0</span>
</span><span id="L-1567"><a href="#L-1567"><span class="linenos">1567</span></a>
</span><span id="L-1568"><a href="#L-1568"><span class="linenos">1568</span></a> <span class="k">for</span> <span class="n">r_name</span> <span class="ow">in</span> <span class="n">obs1</span><span class="o">.</span><span class="n">e_content</span><span class="p">[</span><span class="n">e_name</span><span class="p">]:</span>
</span><span id="L-1569"><a href="#L-1569"><span class="linenos">1569</span></a> <span class="k">if</span> <span class="n">r_name</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">obs2</span><span class="o">.</span><span class="n">e_content</span><span class="p">[</span><span class="n">e_name</span><span class="p">]:</span>
</span><span id="L-1570"><a href="#L-1570"><span class="linenos">1570</span></a> <span class="k">continue</span>
</span><span id="L-1571"><a href="#L-1571"><span class="linenos">1571</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">idl_d</span><span class="p">[</span><span class="n">r_name</span><span class="p">])</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
</span><span id="L-1572"><a href="#L-1572"><span class="linenos">1572</span></a> <span class="k">continue</span>
</span><span id="L-1573"><a href="#L-1573"><span class="linenos">1573</span></a> <span class="n">gamma</span> <span class="o">+=</span> <span class="n">calc_gamma</span><span class="p">(</span><span class="n">obs1</span><span class="o">.</span><span class="n">deltas</span><span class="p">[</span><span class="n">r_name</span><span class="p">],</span> <span class="n">obs2</span><span class="o">.</span><span class="n">deltas</span><span class="p">[</span><span class="n">r_name</span><span class="p">],</span> <span class="n">obs1</span><span class="o">.</span><span class="n">idl</span><span class="p">[</span><span class="n">r_name</span><span class="p">],</span> <span class="n">obs2</span><span class="o">.</span><span class="n">idl</span><span class="p">[</span><span class="n">r_name</span><span class="p">],</span> <span class="n">idl_d</span><span class="p">[</span><span class="n">r_name</span><span class="p">])</span>
</span><span id="L-1574"><a href="#L-1574"><span class="linenos">1574</span></a>
</span><span id="L-1575"><a href="#L-1575"><span class="linenos">1575</span></a> <span class="k">if</span> <span class="n">gamma</span> <span class="o">==</span> <span class="mf">0.0</span><span class="p">:</span>
</span><span id="L-1576"><a href="#L-1576"><span class="linenos">1576</span></a> <span class="k">continue</span>
</span><span id="L-1577"><a href="#L-1577"><span class="linenos">1577</span></a>
</span><span id="L-1578"><a href="#L-1578"><span class="linenos">1578</span></a> <span class="n">gamma_div</span> <span class="o">=</span> <span class="mf">0.0</span>
</span><span id="L-1579"><a href="#L-1579"><span class="linenos">1579</span></a> <span class="k">for</span> <span class="n">r_name</span> <span class="ow">in</span> <span class="n">obs1</span><span class="o">.</span><span class="n">e_content</span><span class="p">[</span><span class="n">e_name</span><span class="p">]:</span>
</span><span id="L-1580"><a href="#L-1580"><span class="linenos">1580</span></a> <span class="k">if</span> <span class="n">r_name</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">obs2</span><span class="o">.</span><span class="n">e_content</span><span class="p">[</span><span class="n">e_name</span><span class="p">]:</span>
</span><span id="L-1581"><a href="#L-1581"><span class="linenos">1581</span></a> <span class="k">continue</span>
</span><span id="L-1582"><a href="#L-1582"><span class="linenos">1582</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">idl_d</span><span class="p">[</span><span class="n">r_name</span><span class="p">])</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
</span><span id="L-1583"><a href="#L-1583"><span class="linenos">1583</span></a> <span class="k">continue</span>
</span><span id="L-1584"><a href="#L-1584"><span class="linenos">1584</span></a> <span class="n">gamma_div</span> <span class="o">+=</span> <span class="n">np</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="n">calc_gamma</span><span class="p">(</span><span class="n">obs1</span><span class="o">.</span><span class="n">deltas</span><span class="p">[</span><span class="n">r_name</span><span class="p">],</span> <span class="n">obs1</span><span class="o">.</span><span class="n">deltas</span><span class="p">[</span><span class="n">r_name</span><span class="p">],</span> <span class="n">obs1</span><span class="o">.</span><span class="n">idl</span><span class="p">[</span><span class="n">r_name</span><span class="p">],</span> <span class="n">obs1</span><span class="o">.</span><span class="n">idl</span><span class="p">[</span><span class="n">r_name</span><span class="p">],</span> <span class="n">idl_d</span><span class="p">[</span><span class="n">r_name</span><span class="p">])</span> <span class="o">*</span> <span class="n">calc_gamma</span><span class="p">(</span><span class="n">obs2</span><span class="o">.</span><span class="n">deltas</span><span class="p">[</span><span class="n">r_name</span><span class="p">],</span> <span class="n">obs2</span><span class="o">.</span><span class="n">deltas</span><span class="p">[</span><span class="n">r_name</span><span class="p">],</span> <span class="n">obs2</span><span class="o">.</span><span class="n">idl</span><span class="p">[</span><span class="n">r_name</span><span class="p">],</span> <span class="n">obs2</span><span class="o">.</span><span class="n">idl</span><span class="p">[</span><span class="n">r_name</span><span class="p">],</span> <span class="n">idl_d</span><span class="p">[</span><span class="n">r_name</span><span class="p">]))</span>
</span><span id="L-1585"><a href="#L-1585"><span class="linenos">1585</span></a> <span class="n">gamma</span> <span class="o">/=</span> <span class="n">gamma_div</span>
</span><span id="L-1586"><a href="#L-1586"><span class="linenos">1586</span></a>
</span><span id="L-1587"><a href="#L-1587"><span class="linenos">1587</span></a> <span class="n">dvalue</span> <span class="o">+=</span> <span class="n">gamma</span>
</span><span id="L-1588"><a href="#L-1588"><span class="linenos">1588</span></a>
</span><span id="L-1589"><a href="#L-1589"><span class="linenos">1589</span></a> <span class="k">for</span> <span class="n">e_name</span> <span class="ow">in</span> <span class="n">obs1</span><span class="o">.</span><span class="n">cov_names</span><span class="p">:</span>
</span><span id="L-1590"><a href="#L-1590"><span class="linenos">1590</span></a>
</span><span id="L-1591"><a href="#L-1591"><span class="linenos">1591</span></a> <span class="k">if</span> <span class="n">e_name</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">obs2</span><span class="o">.</span><span class="n">cov_names</span><span class="p">:</span>
</span><span id="L-1592"><a href="#L-1592"><span class="linenos">1592</span></a> <span class="k">continue</span>
</span><span id="L-1593"><a href="#L-1593"><span class="linenos">1593</span></a>
</span><span id="L-1594"><a href="#L-1594"><span class="linenos">1594</span></a> <span class="n">dvalue</span> <span class="o">+=</span> <span class="n">np</span><span class="o">.</span><span class="n">dot</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">transpose</span><span class="p">(</span><span class="n">obs1</span><span class="o">.</span><span class="n">covobs</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span><span class="o">.</span><span class="n">grad</span><span class="p">),</span> <span class="n">np</span><span class="o">.</span><span class="n">dot</span><span class="p">(</span><span class="n">obs1</span><span class="o">.</span><span class="n">covobs</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span><span class="o">.</span><span class="n">cov</span><span class="p">,</span> <span class="n">obs2</span><span class="o">.</span><span class="n">covobs</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span><span class="o">.</span><span class="n">grad</span><span class="p">))</span><span class="o">.</span><span class="n">item</span><span class="p">()</span>
</span><span id="L-1595"><a href="#L-1595"><span class="linenos">1595</span></a>
</span><span id="L-1596"><a href="#L-1596"><span class="linenos">1596</span></a> <span class="k">return</span> <span class="n">dvalue</span>
</span><span id="L-1597"><a href="#L-1597"><span class="linenos">1597</span></a>
</span><span id="L-1598"><a href="#L-1598"><span class="linenos">1598</span></a>
</span><span id="L-1599"><a href="#L-1599"><span class="linenos">1599</span></a><span class="k">def</span> <span class="nf">import_jackknife</span><span class="p">(</span><span class="n">jacks</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">idl</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
</span><span id="L-1600"><a href="#L-1600"><span class="linenos">1600</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Imports jackknife samples and returns an Obs</span>
</span><span id="L-1601"><a href="#L-1601"><span class="linenos">1601</span></a>
</span><span id="L-1602"><a href="#L-1602"><span class="linenos">1602</span></a><span class="sd"> Parameters</span>
</span><span id="L-1603"><a href="#L-1603"><span class="linenos">1603</span></a><span class="sd"> ----------</span>
</span><span id="L-1604"><a href="#L-1604"><span class="linenos">1604</span></a><span class="sd"> jacks : numpy.ndarray</span>
</span><span id="L-1605"><a href="#L-1605"><span class="linenos">1605</span></a><span class="sd"> numpy array containing the mean value as zeroth entry and</span>
</span><span id="L-1606"><a href="#L-1606"><span class="linenos">1606</span></a><span class="sd"> the N jackknife samples as first to Nth entry.</span>
</span><span id="L-1607"><a href="#L-1607"><span class="linenos">1607</span></a><span class="sd"> name : str</span>
</span><span id="L-1608"><a href="#L-1608"><span class="linenos">1608</span></a><span class="sd"> name of the ensemble the samples are defined on.</span>
</span><span id="L-1609"><a href="#L-1609"><span class="linenos">1609</span></a><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="L-1610"><a href="#L-1610"><span class="linenos">1610</span></a> <span class="n">length</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">jacks</span><span class="p">)</span> <span class="o">-</span> <span class="mi">1</span>
</span><span id="L-1611"><a href="#L-1611"><span class="linenos">1611</span></a> <span class="n">prj</span> <span class="o">=</span> <span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">ones</span><span class="p">((</span><span class="n">length</span><span class="p">,</span> <span class="n">length</span><span class="p">))</span> <span class="o">-</span> <span class="p">(</span><span class="n">length</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> <span class="o">*</span> <span class="n">np</span><span class="o">.</span><span class="n">identity</span><span class="p">(</span><span class="n">length</span><span class="p">))</span>
</span><span id="L-1612"><a href="#L-1612"><span class="linenos">1612</span></a> <span class="n">samples</span> <span class="o">=</span> <span class="n">jacks</span><span class="p">[</span><span class="mi">1</span><span class="p">:]</span> <span class="o">@</span> <span class="n">prj</span>
</span><span id="L-1613"><a href="#L-1613"><span class="linenos">1613</span></a> <span class="n">mean</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">mean</span><span class="p">(</span><span class="n">samples</span><span class="p">)</span>
</span><span id="L-1614"><a href="#L-1614"><span class="linenos">1614</span></a> <span class="n">new_obs</span> <span class="o">=</span> <span class="n">Obs</span><span class="p">([</span><span class="n">samples</span> <span class="o">-</span> <span class="n">mean</span><span class="p">],</span> <span class="p">[</span><span class="n">name</span><span class="p">],</span> <span class="n">idl</span><span class="o">=</span><span class="n">idl</span><span class="p">,</span> <span class="n">means</span><span class="o">=</span><span class="p">[</span><span class="n">mean</span><span class="p">])</span>
</span><span id="L-1615"><a href="#L-1615"><span class="linenos">1615</span></a> <span class="n">new_obs</span><span class="o">.</span><span class="n">_value</span> <span class="o">=</span> <span class="n">jacks</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
</span><span id="L-1616"><a href="#L-1616"><span class="linenos">1616</span></a> <span class="k">return</span> <span class="n">new_obs</span>
</span><span id="L-1617"><a href="#L-1617"><span class="linenos">1617</span></a>
</span><span id="L-1618"><a href="#L-1618"><span class="linenos">1618</span></a>
</span><span id="L-1619"><a href="#L-1619"><span class="linenos">1619</span></a><span class="k">def</span> <span class="nf">import_bootstrap</span><span class="p">(</span><span class="n">boots</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">random_numbers</span><span class="p">):</span>
</span><span id="L-1620"><a href="#L-1620"><span class="linenos">1620</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Imports bootstrap samples and returns an Obs</span>
</span><span id="L-1621"><a href="#L-1621"><span class="linenos">1621</span></a>
</span><span id="L-1622"><a href="#L-1622"><span class="linenos">1622</span></a><span class="sd"> Parameters</span>
</span><span id="L-1623"><a href="#L-1623"><span class="linenos">1623</span></a><span class="sd"> ----------</span>
</span><span id="L-1624"><a href="#L-1624"><span class="linenos">1624</span></a><span class="sd"> boots : numpy.ndarray</span>
</span><span id="L-1625"><a href="#L-1625"><span class="linenos">1625</span></a><span class="sd"> numpy array containing the mean value as zeroth entry and</span>
</span><span id="L-1626"><a href="#L-1626"><span class="linenos">1626</span></a><span class="sd"> the N bootstrap samples as first to Nth entry.</span>
</span><span id="L-1627"><a href="#L-1627"><span class="linenos">1627</span></a><span class="sd"> name : str</span>
</span><span id="L-1628"><a href="#L-1628"><span class="linenos">1628</span></a><span class="sd"> name of the ensemble the samples are defined on.</span>
</span><span id="L-1629"><a href="#L-1629"><span class="linenos">1629</span></a><span class="sd"> random_numbers : np.ndarray</span>
</span><span id="L-1630"><a href="#L-1630"><span class="linenos">1630</span></a><span class="sd"> Array of shape (samples, length) containing the random numbers to generate the bootstrap samples,</span>
</span><span id="L-1631"><a href="#L-1631"><span class="linenos">1631</span></a><span class="sd"> where samples is the number of bootstrap samples and length is the length of the original Monte Carlo</span>
</span><span id="L-1632"><a href="#L-1632"><span class="linenos">1632</span></a><span class="sd"> chain to be reconstructed.</span>
</span><span id="L-1633"><a href="#L-1633"><span class="linenos">1633</span></a><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="L-1634"><a href="#L-1634"><span class="linenos">1634</span></a> <span class="n">samples</span><span class="p">,</span> <span class="n">length</span> <span class="o">=</span> <span class="n">random_numbers</span><span class="o">.</span><span class="n">shape</span>
</span><span id="L-1635"><a href="#L-1635"><span class="linenos">1635</span></a> <span class="k">if</span> <span class="n">samples</span> <span class="o">!=</span> <span class="nb">len</span><span class="p">(</span><span class="n">boots</span><span class="p">)</span> <span class="o">-</span> <span class="mi">1</span><span class="p">:</span>
</span><span id="L-1636"><a href="#L-1636"><span class="linenos">1636</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;Random numbers do not have the correct shape.&quot;</span><span class="p">)</span>
</span><span id="L-1637"><a href="#L-1637"><span class="linenos">1637</span></a>
</span><span id="L-1638"><a href="#L-1638"><span class="linenos">1638</span></a> <span class="k">if</span> <span class="n">samples</span> <span class="o">&lt;</span> <span class="n">length</span><span class="p">:</span>
</span><span id="L-1639"><a href="#L-1639"><span class="linenos">1639</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;Obs can&#39;t be reconstructed if there are fewer bootstrap samples than Monte Carlo data points.&quot;</span><span class="p">)</span>
</span><span id="L-1640"><a href="#L-1640"><span class="linenos">1640</span></a>
</span><span id="L-1641"><a href="#L-1641"><span class="linenos">1641</span></a> <span class="n">proj</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">vstack</span><span class="p">([</span><span class="n">np</span><span class="o">.</span><span class="n">bincount</span><span class="p">(</span><span class="n">o</span><span class="p">,</span> <span class="n">minlength</span><span class="o">=</span><span class="n">length</span><span class="p">)</span> <span class="k">for</span> <span class="n">o</span> <span class="ow">in</span> <span class="n">random_numbers</span><span class="p">])</span> <span class="o">/</span> <span class="n">length</span>
</span><span id="L-1642"><a href="#L-1642"><span class="linenos">1642</span></a>
</span><span id="L-1643"><a href="#L-1643"><span class="linenos">1643</span></a> <span class="n">samples</span> <span class="o">=</span> <span class="n">scipy</span><span class="o">.</span><span class="n">linalg</span><span class="o">.</span><span class="n">lstsq</span><span class="p">(</span><span class="n">proj</span><span class="p">,</span> <span class="n">boots</span><span class="p">[</span><span class="mi">1</span><span class="p">:])[</span><span class="mi">0</span><span class="p">]</span>
</span><span id="L-1644"><a href="#L-1644"><span class="linenos">1644</span></a> <span class="n">ret</span> <span class="o">=</span> <span class="n">Obs</span><span class="p">([</span><span class="n">samples</span><span class="p">],</span> <span class="p">[</span><span class="n">name</span><span class="p">])</span>
</span><span id="L-1645"><a href="#L-1645"><span class="linenos">1645</span></a> <span class="n">ret</span><span class="o">.</span><span class="n">_value</span> <span class="o">=</span> <span class="n">boots</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
</span><span id="L-1646"><a href="#L-1646"><span class="linenos">1646</span></a> <span class="k">return</span> <span class="n">ret</span>
</span><span id="L-1647"><a href="#L-1647"><span class="linenos">1647</span></a>
</span><span id="L-1648"><a href="#L-1648"><span class="linenos">1648</span></a>
</span><span id="L-1649"><a href="#L-1649"><span class="linenos">1649</span></a><span class="k">def</span> <span class="nf">merge_obs</span><span class="p">(</span><span class="n">list_of_obs</span><span class="p">):</span>
</span><span id="L-1650"><a href="#L-1650"><span class="linenos">1650</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Combine all observables in list_of_obs into one new observable</span>
</span><span id="L-1651"><a href="#L-1651"><span class="linenos">1651</span></a>
</span><span id="L-1652"><a href="#L-1652"><span class="linenos">1652</span></a><span class="sd"> Parameters</span>
</span><span id="L-1653"><a href="#L-1653"><span class="linenos">1653</span></a><span class="sd"> ----------</span>
</span><span id="L-1654"><a href="#L-1654"><span class="linenos">1654</span></a><span class="sd"> list_of_obs : list</span>
</span><span id="L-1655"><a href="#L-1655"><span class="linenos">1655</span></a><span class="sd"> list of the Obs object to be combined</span>
</span><span id="L-1656"><a href="#L-1656"><span class="linenos">1656</span></a>
</span><span id="L-1657"><a href="#L-1657"><span class="linenos">1657</span></a><span class="sd"> Notes</span>
</span><span id="L-1658"><a href="#L-1658"><span class="linenos">1658</span></a><span class="sd"> -----</span>
</span><span id="L-1659"><a href="#L-1659"><span class="linenos">1659</span></a><span class="sd"> It is not possible to combine obs which are based on the same replicum</span>
</span><span id="L-1660"><a href="#L-1660"><span class="linenos">1660</span></a><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="L-1661"><a href="#L-1661"><span class="linenos">1661</span></a> <span class="n">replist</span> <span class="o">=</span> <span class="p">[</span><span class="n">item</span> <span class="k">for</span> <span class="n">obs</span> <span class="ow">in</span> <span class="n">list_of_obs</span> <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="n">obs</span><span class="o">.</span><span class="n">names</span><span class="p">]</span>
</span><span id="L-1662"><a href="#L-1662"><span class="linenos">1662</span></a> <span class="k">if</span> <span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">replist</span><span class="p">)</span> <span class="o">==</span> <span class="nb">len</span><span class="p">(</span><span class="nb">set</span><span class="p">(</span><span class="n">replist</span><span class="p">)))</span> <span class="ow">is</span> <span class="kc">False</span><span class="p">:</span>
</span><span id="L-1663"><a href="#L-1663"><span class="linenos">1663</span></a> <span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s1">&#39;list_of_obs contains duplicate replica: </span><span class="si">%s</span><span class="s1">&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">replist</span><span class="p">)))</span>
</span><span id="L-1664"><a href="#L-1664"><span class="linenos">1664</span></a> <span class="k">if</span> <span class="nb">any</span><span class="p">([</span><span class="nb">len</span><span class="p">(</span><span class="n">o</span><span class="o">.</span><span class="n">cov_names</span><span class="p">)</span> <span class="k">for</span> <span class="n">o</span> <span class="ow">in</span> <span class="n">list_of_obs</span><span class="p">]):</span>
</span><span id="L-1665"><a href="#L-1665"><span class="linenos">1665</span></a> <span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s1">&#39;Not possible to merge data that contains covobs!&#39;</span><span class="p">)</span>
</span><span id="L-1666"><a href="#L-1666"><span class="linenos">1666</span></a> <span class="n">new_dict</span> <span class="o">=</span> <span class="p">{}</span>
</span><span id="L-1667"><a href="#L-1667"><span class="linenos">1667</span></a> <span class="n">idl_dict</span> <span class="o">=</span> <span class="p">{}</span>
</span><span id="L-1668"><a href="#L-1668"><span class="linenos">1668</span></a> <span class="k">for</span> <span class="n">o</span> <span class="ow">in</span> <span class="n">list_of_obs</span><span class="p">:</span>
</span><span id="L-1669"><a href="#L-1669"><span class="linenos">1669</span></a> <span class="n">new_dict</span><span class="o">.</span><span class="n">update</span><span class="p">({</span><span class="n">key</span><span class="p">:</span> <span class="n">o</span><span class="o">.</span><span class="n">deltas</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">key</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> <span class="o">+</span> <span class="n">o</span><span class="o">.</span><span class="n">r_values</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">key</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span>
</span><span id="L-1670"><a href="#L-1670"><span class="linenos">1670</span></a> <span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="nb">set</span><span class="p">(</span><span class="n">o</span><span class="o">.</span><span class="n">deltas</span><span class="p">)</span> <span class="o">|</span> <span class="nb">set</span><span class="p">(</span><span class="n">o</span><span class="o">.</span><span class="n">r_values</span><span class="p">)})</span>
</span><span id="L-1671"><a href="#L-1671"><span class="linenos">1671</span></a> <span class="n">idl_dict</span><span class="o">.</span><span class="n">update</span><span class="p">({</span><span class="n">key</span><span class="p">:</span> <span class="n">o</span><span class="o">.</span><span class="n">idl</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">key</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> <span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="nb">set</span><span class="p">(</span><span class="n">o</span><span class="o">.</span><span class="n">deltas</span><span class="p">)})</span>
</span><span id="L-1672"><a href="#L-1672"><span class="linenos">1672</span></a>
</span><span id="L-1673"><a href="#L-1673"><span class="linenos">1673</span></a> <span class="n">names</span> <span class="o">=</span> <span class="nb">sorted</span><span class="p">(</span><span class="n">new_dict</span><span class="o">.</span><span class="n">keys</span><span class="p">())</span>
</span><span id="L-1674"><a href="#L-1674"><span class="linenos">1674</span></a> <span class="n">o</span> <span class="o">=</span> <span class="n">Obs</span><span class="p">([</span><span class="n">new_dict</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="k">for</span> <span class="n">name</span> <span class="ow">in</span> <span class="n">names</span><span class="p">],</span> <span class="n">names</span><span class="p">,</span> <span class="n">idl</span><span class="o">=</span><span class="p">[</span><span class="n">idl_dict</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="k">for</span> <span class="n">name</span> <span class="ow">in</span> <span class="n">names</span><span class="p">])</span>
</span><span id="L-1675"><a href="#L-1675"><span class="linenos">1675</span></a> <span class="n">o</span><span class="o">.</span><span class="n">reweighted</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">max</span><span class="p">([</span><span class="n">oi</span><span class="o">.</span><span class="n">reweighted</span> <span class="k">for</span> <span class="n">oi</span> <span class="ow">in</span> <span class="n">list_of_obs</span><span class="p">])</span>
</span><span id="L-1676"><a href="#L-1676"><span class="linenos">1676</span></a> <span class="k">return</span> <span class="n">o</span>
</span><span id="L-1677"><a href="#L-1677"><span class="linenos">1677</span></a>
</span><span id="L-1678"><a href="#L-1678"><span class="linenos">1678</span></a>
</span><span id="L-1679"><a href="#L-1679"><span class="linenos">1679</span></a><span class="k">def</span> <span class="nf">cov_Obs</span><span class="p">(</span><span class="n">means</span><span class="p">,</span> <span class="n">cov</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">grad</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
</span><span id="L-1680"><a href="#L-1680"><span class="linenos">1680</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Create an Obs based on mean(s) and a covariance matrix</span>
</span><span id="L-1681"><a href="#L-1681"><span class="linenos">1681</span></a>
</span><span id="L-1682"><a href="#L-1682"><span class="linenos">1682</span></a><span class="sd"> Parameters</span>
</span><span id="L-1683"><a href="#L-1683"><span class="linenos">1683</span></a><span class="sd"> ----------</span>
</span><span id="L-1684"><a href="#L-1684"><span class="linenos">1684</span></a><span class="sd"> mean : list of floats or float</span>
</span><span id="L-1685"><a href="#L-1685"><span class="linenos">1685</span></a><span class="sd"> N mean value(s) of the new Obs</span>
</span><span id="L-1686"><a href="#L-1686"><span class="linenos">1686</span></a><span class="sd"> cov : list or array</span>
</span><span id="L-1687"><a href="#L-1687"><span class="linenos">1687</span></a><span class="sd"> 2d (NxN) Covariance matrix, 1d diagonal entries or 0d covariance</span>
</span><span id="L-1688"><a href="#L-1688"><span class="linenos">1688</span></a><span class="sd"> name : str</span>
</span><span id="L-1689"><a href="#L-1689"><span class="linenos">1689</span></a><span class="sd"> identifier for the covariance matrix</span>
</span><span id="L-1690"><a href="#L-1690"><span class="linenos">1690</span></a><span class="sd"> grad : list or array</span>
</span><span id="L-1691"><a href="#L-1691"><span class="linenos">1691</span></a><span class="sd"> Gradient of the Covobs wrt. the means belonging to cov.</span>
</span><span id="L-1692"><a href="#L-1692"><span class="linenos">1692</span></a><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="L-1693"><a href="#L-1693"><span class="linenos">1693</span></a>
</span><span id="L-1694"><a href="#L-1694"><span class="linenos">1694</span></a> <span class="k">def</span> <span class="nf">covobs_to_obs</span><span class="p">(</span><span class="n">co</span><span class="p">):</span>
</span><span id="L-1695"><a href="#L-1695"><span class="linenos">1695</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Make an Obs out of a Covobs</span>
</span><span id="L-1696"><a href="#L-1696"><span class="linenos">1696</span></a>
</span><span id="L-1697"><a href="#L-1697"><span class="linenos">1697</span></a><span class="sd"> Parameters</span>
</span><span id="L-1698"><a href="#L-1698"><span class="linenos">1698</span></a><span class="sd"> ----------</span>
</span><span id="L-1699"><a href="#L-1699"><span class="linenos">1699</span></a><span class="sd"> co : Covobs</span>
</span><span id="L-1700"><a href="#L-1700"><span class="linenos">1700</span></a><span class="sd"> Covobs to be embedded into the Obs</span>
</span><span id="L-1701"><a href="#L-1701"><span class="linenos">1701</span></a><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="L-1702"><a href="#L-1702"><span class="linenos">1702</span></a> <span class="n">o</span> <span class="o">=</span> <span class="n">Obs</span><span class="p">([],</span> <span class="p">[],</span> <span class="n">means</span><span class="o">=</span><span class="p">[])</span>
</span><span id="L-1703"><a href="#L-1703"><span class="linenos">1703</span></a> <span class="n">o</span><span class="o">.</span><span class="n">_value</span> <span class="o">=</span> <span class="n">co</span><span class="o">.</span><span class="n">value</span>
</span><span id="L-1704"><a href="#L-1704"><span class="linenos">1704</span></a> <span class="n">o</span><span class="o">.</span><span class="n">names</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">co</span><span class="o">.</span><span class="n">name</span><span class="p">)</span>
</span><span id="L-1705"><a href="#L-1705"><span class="linenos">1705</span></a> <span class="n">o</span><span class="o">.</span><span class="n">_covobs</span><span class="p">[</span><span class="n">co</span><span class="o">.</span><span class="n">name</span><span class="p">]</span> <span class="o">=</span> <span class="n">co</span>
</span><span id="L-1706"><a href="#L-1706"><span class="linenos">1706</span></a> <span class="n">o</span><span class="o">.</span><span class="n">_dvalue</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="n">co</span><span class="o">.</span><span class="n">errsq</span><span class="p">())</span>
</span><span id="L-1707"><a href="#L-1707"><span class="linenos">1707</span></a> <span class="k">return</span> <span class="n">o</span>
</span><span id="L-1708"><a href="#L-1708"><span class="linenos">1708</span></a>
</span><span id="L-1709"><a href="#L-1709"><span class="linenos">1709</span></a> <span class="n">ol</span> <span class="o">=</span> <span class="p">[]</span>
</span><span id="L-1710"><a href="#L-1710"><span class="linenos">1710</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">means</span><span class="p">,</span> <span class="p">(</span><span class="nb">float</span><span class="p">,</span> <span class="nb">int</span><span class="p">)):</span>
</span><span id="L-1711"><a href="#L-1711"><span class="linenos">1711</span></a> <span class="n">means</span> <span class="o">=</span> <span class="p">[</span><span class="n">means</span><span class="p">]</span>
</span><span id="L-1712"><a href="#L-1712"><span class="linenos">1712</span></a>
</span><span id="L-1713"><a href="#L-1713"><span class="linenos">1713</span></a> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">means</span><span class="p">)):</span>
</span><span id="L-1714"><a href="#L-1714"><span class="linenos">1714</span></a> <span class="n">ol</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">covobs_to_obs</span><span class="p">(</span><span class="n">Covobs</span><span class="p">(</span><span class="n">means</span><span class="p">[</span><span class="n">i</span><span class="p">],</span> <span class="n">cov</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">pos</span><span class="o">=</span><span class="n">i</span><span class="p">,</span> <span class="n">grad</span><span class="o">=</span><span class="n">grad</span><span class="p">)))</span>
</span><span id="L-1715"><a href="#L-1715"><span class="linenos">1715</span></a> <span class="k">if</span> <span class="n">ol</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">covobs</span><span class="p">[</span><span class="n">name</span><span class="p">]</span><span class="o">.</span><span class="n">N</span> <span class="o">!=</span> <span class="nb">len</span><span class="p">(</span><span class="n">means</span><span class="p">):</span>
</span><span id="L-1716"><a href="#L-1716"><span class="linenos">1716</span></a> <span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s1">&#39;You have to provide </span><span class="si">%d</span><span class="s1"> mean values!&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">ol</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">N</span><span class="p">))</span>
</span><span id="L-1717"><a href="#L-1717"><span class="linenos">1717</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">ol</span><span class="p">)</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span>
</span><span id="L-1718"><a href="#L-1718"><span class="linenos">1718</span></a> <span class="k">return</span> <span class="n">ol</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
</span><span id="L-1719"><a href="#L-1719"><span class="linenos">1719</span></a> <span class="k">return</span> <span class="n">ol</span>
</span><span id="L-1720"><a href="#L-1720"><span class="linenos">1720</span></a>
</span><span id="L-1721"><a href="#L-1721"><span class="linenos">1721</span></a>
</span><span id="L-1722"><a href="#L-1722"><span class="linenos">1722</span></a><span class="k">def</span> <span class="nf">_determine_gap</span><span class="p">(</span><span class="n">o</span><span class="p">,</span> <span class="n">e_content</span><span class="p">,</span> <span class="n">e_name</span><span class="p">):</span>
</span><span id="L-1723"><a href="#L-1723"><span class="linenos">1723</span></a> <span class="n">gaps</span> <span class="o">=</span> <span class="p">[]</span>
</span><span id="L-1724"><a href="#L-1724"><span class="linenos">1724</span></a> <span class="k">for</span> <span class="n">r_name</span> <span class="ow">in</span> <span class="n">e_content</span><span class="p">[</span><span class="n">e_name</span><span class="p">]:</span>
</span><span id="L-1725"><a href="#L-1725"><span class="linenos">1725</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">o</span><span class="o">.</span><span class="n">idl</span><span class="p">[</span><span class="n">r_name</span><span class="p">],</span> <span class="nb">range</span><span class="p">):</span>
</span><span id="L-1726"><a href="#L-1726"><span class="linenos">1726</span></a> <span class="n">gaps</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">o</span><span class="o">.</span><span class="n">idl</span><span class="p">[</span><span class="n">r_name</span><span class="p">]</span><span class="o">.</span><span class="n">step</span><span class="p">)</span>
</span><span id="L-1727"><a href="#L-1727"><span class="linenos">1727</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="L-1728"><a href="#L-1728"><span class="linenos">1728</span></a> <span class="n">gaps</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">min</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">diff</span><span class="p">(</span><span class="n">o</span><span class="o">.</span><span class="n">idl</span><span class="p">[</span><span class="n">r_name</span><span class="p">])))</span>
</span><span id="L-1729"><a href="#L-1729"><span class="linenos">1729</span></a>
</span><span id="L-1730"><a href="#L-1730"><span class="linenos">1730</span></a> <span class="n">gap</span> <span class="o">=</span> <span class="nb">min</span><span class="p">(</span><span class="n">gaps</span><span class="p">)</span>
</span><span id="L-1731"><a href="#L-1731"><span class="linenos">1731</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">np</span><span class="o">.</span><span class="n">all</span><span class="p">([</span><span class="n">gi</span> <span class="o">%</span> <span class="n">gap</span> <span class="o">==</span> <span class="mi">0</span> <span class="k">for</span> <span class="n">gi</span> <span class="ow">in</span> <span class="n">gaps</span><span class="p">]):</span>
</span><span id="L-1732"><a href="#L-1732"><span class="linenos">1732</span></a> <span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Replica for ensemble </span><span class="si">{</span><span class="n">e_name</span><span class="si">}</span><span class="s2"> do not have a common spacing.&quot;</span><span class="p">,</span> <span class="n">gaps</span><span class="p">)</span>
</span><span id="L-1733"><a href="#L-1733"><span class="linenos">1733</span></a>
</span><span id="L-1734"><a href="#L-1734"><span class="linenos">1734</span></a> <span class="k">return</span> <span class="n">gap</span>
</span><span id="L-1735"><a href="#L-1735"><span class="linenos">1735</span></a>
</span><span id="L-1736"><a href="#L-1736"><span class="linenos">1736</span></a>
</span><span id="L-1737"><a href="#L-1737"><span class="linenos">1737</span></a><span class="k">def</span> <span class="nf">_check_lists_equal</span><span class="p">(</span><span class="n">idl</span><span class="p">):</span>
</span><span id="L-1738"><a href="#L-1738"><span class="linenos">1738</span></a><span class="w"> </span><span class="sd">&#39;&#39;&#39;</span>
</span><span id="L-1739"><a href="#L-1739"><span class="linenos">1739</span></a><span class="sd"> Use groupby to efficiently check whether all elements of idl are identical.</span>
</span><span id="L-1740"><a href="#L-1740"><span class="linenos">1740</span></a><span class="sd"> Returns True if all elements are equal, otherwise False.</span>
</span><span id="L-1741"><a href="#L-1741"><span class="linenos">1741</span></a>
</span><span id="L-1742"><a href="#L-1742"><span class="linenos">1742</span></a><span class="sd"> Parameters</span>
</span><span id="L-1743"><a href="#L-1743"><span class="linenos">1743</span></a><span class="sd"> ----------</span>
</span><span id="L-1744"><a href="#L-1744"><span class="linenos">1744</span></a><span class="sd"> idl : list of lists, ranges or np.ndarrays</span>
</span><span id="L-1745"><a href="#L-1745"><span class="linenos">1745</span></a><span class="sd"> &#39;&#39;&#39;</span>
</span><span id="L-1746"><a href="#L-1746"><span class="linenos">1746</span></a> <span class="n">g</span> <span class="o">=</span> <span class="n">groupby</span><span class="p">([</span><span class="n">np</span><span class="o">.</span><span class="n">nditer</span><span class="p">(</span><span class="n">el</span><span class="p">)</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">el</span><span class="p">,</span> <span class="n">np</span><span class="o">.</span><span class="n">ndarray</span><span class="p">)</span> <span class="k">else</span> <span class="n">el</span> <span class="k">for</span> <span class="n">el</span> <span class="ow">in</span> <span class="n">idl</span><span class="p">])</span>
</span><span id="L-1747"><a href="#L-1747"><span class="linenos">1747</span></a> <span class="k">if</span> <span class="nb">next</span><span class="p">(</span><span class="n">g</span><span class="p">,</span> <span class="kc">True</span><span class="p">)</span> <span class="ow">and</span> <span class="ow">not</span> <span class="nb">next</span><span class="p">(</span><span class="n">g</span><span class="p">,</span> <span class="kc">False</span><span class="p">):</span>
</span><span id="L-1748"><a href="#L-1748"><span class="linenos">1748</span></a> <span class="k">return</span> <span class="kc">True</span>
</span><span id="L-1749"><a href="#L-1749"><span class="linenos">1749</span></a> <span class="k">return</span> <span class="kc">False</span>
</span></pre></div>
</section>
<section id="Obs">
<input id="Obs-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<div class="attr class">
<span class="def">class</span>
<span class="name">Obs</span>:
<label class="view-source-button" for="Obs-view-source"><span>View Source</span></label>
</div>
<a class="headerlink" href="#Obs"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="Obs-19"><a href="#Obs-19"><span class="linenos"> 19</span></a><span class="k">class</span> <span class="nc">Obs</span><span class="p">:</span>
</span><span id="Obs-20"><a href="#Obs-20"><span class="linenos"> 20</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Class for a general observable.</span>
</span><span id="Obs-21"><a href="#Obs-21"><span class="linenos"> 21</span></a>
</span><span id="Obs-22"><a href="#Obs-22"><span class="linenos"> 22</span></a><span class="sd"> Instances of Obs are the basic objects of a pyerrors error analysis.</span>
</span><span id="Obs-23"><a href="#Obs-23"><span class="linenos"> 23</span></a><span class="sd"> They are initialized with a list which contains arrays of samples for</span>
</span><span id="Obs-24"><a href="#Obs-24"><span class="linenos"> 24</span></a><span class="sd"> different ensembles/replica and another list of same length which contains</span>
</span><span id="Obs-25"><a href="#Obs-25"><span class="linenos"> 25</span></a><span class="sd"> the names of the ensembles/replica. Mathematical operations can be</span>
</span><span id="Obs-26"><a href="#Obs-26"><span class="linenos"> 26</span></a><span class="sd"> performed on instances. The result is another instance of Obs. The error of</span>
</span><span id="Obs-27"><a href="#Obs-27"><span class="linenos"> 27</span></a><span class="sd"> an instance can be computed with the gamma_method. Also contains additional</span>
</span><span id="Obs-28"><a href="#Obs-28"><span class="linenos"> 28</span></a><span class="sd"> methods for output and visualization of the error calculation.</span>
</span><span id="Obs-29"><a href="#Obs-29"><span class="linenos"> 29</span></a>
</span><span id="Obs-30"><a href="#Obs-30"><span class="linenos"> 30</span></a><span class="sd"> Attributes</span>
</span><span id="Obs-31"><a href="#Obs-31"><span class="linenos"> 31</span></a><span class="sd"> ----------</span>
</span><span id="Obs-32"><a href="#Obs-32"><span class="linenos"> 32</span></a><span class="sd"> S_global : float</span>
</span><span id="Obs-33"><a href="#Obs-33"><span class="linenos"> 33</span></a><span class="sd"> Standard value for S (default 2.0)</span>
</span><span id="Obs-34"><a href="#Obs-34"><span class="linenos"> 34</span></a><span class="sd"> S_dict : dict</span>
</span><span id="Obs-35"><a href="#Obs-35"><span class="linenos"> 35</span></a><span class="sd"> Dictionary for S values. If an entry for a given ensemble</span>
</span><span id="Obs-36"><a href="#Obs-36"><span class="linenos"> 36</span></a><span class="sd"> exists this overwrites the standard value for that ensemble.</span>
</span><span id="Obs-37"><a href="#Obs-37"><span class="linenos"> 37</span></a><span class="sd"> tau_exp_global : float</span>
</span><span id="Obs-38"><a href="#Obs-38"><span class="linenos"> 38</span></a><span class="sd"> Standard value for tau_exp (default 0.0)</span>
</span><span id="Obs-39"><a href="#Obs-39"><span class="linenos"> 39</span></a><span class="sd"> tau_exp_dict : dict</span>
</span><span id="Obs-40"><a href="#Obs-40"><span class="linenos"> 40</span></a><span class="sd"> Dictionary for tau_exp values. If an entry for a given ensemble exists</span>
</span><span id="Obs-41"><a href="#Obs-41"><span class="linenos"> 41</span></a><span class="sd"> this overwrites the standard value for that ensemble.</span>
</span><span id="Obs-42"><a href="#Obs-42"><span class="linenos"> 42</span></a><span class="sd"> N_sigma_global : float</span>
</span><span id="Obs-43"><a href="#Obs-43"><span class="linenos"> 43</span></a><span class="sd"> Standard value for N_sigma (default 1.0)</span>
</span><span id="Obs-44"><a href="#Obs-44"><span class="linenos"> 44</span></a><span class="sd"> N_sigma_dict : dict</span>
</span><span id="Obs-45"><a href="#Obs-45"><span class="linenos"> 45</span></a><span class="sd"> Dictionary for N_sigma values. If an entry for a given ensemble exists</span>
</span><span id="Obs-46"><a href="#Obs-46"><span class="linenos"> 46</span></a><span class="sd"> this overwrites the standard value for that ensemble.</span>
</span><span id="Obs-47"><a href="#Obs-47"><span class="linenos"> 47</span></a><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="Obs-48"><a href="#Obs-48"><span class="linenos"> 48</span></a> <span class="vm">__slots__</span> <span class="o">=</span> <span class="p">[</span><span class="s1">&#39;names&#39;</span><span class="p">,</span> <span class="s1">&#39;shape&#39;</span><span class="p">,</span> <span class="s1">&#39;r_values&#39;</span><span class="p">,</span> <span class="s1">&#39;deltas&#39;</span><span class="p">,</span> <span class="s1">&#39;N&#39;</span><span class="p">,</span> <span class="s1">&#39;_value&#39;</span><span class="p">,</span> <span class="s1">&#39;_dvalue&#39;</span><span class="p">,</span>
</span><span id="Obs-49"><a href="#Obs-49"><span class="linenos"> 49</span></a> <span class="s1">&#39;ddvalue&#39;</span><span class="p">,</span> <span class="s1">&#39;reweighted&#39;</span><span class="p">,</span> <span class="s1">&#39;S&#39;</span><span class="p">,</span> <span class="s1">&#39;tau_exp&#39;</span><span class="p">,</span> <span class="s1">&#39;N_sigma&#39;</span><span class="p">,</span>
</span><span id="Obs-50"><a href="#Obs-50"><span class="linenos"> 50</span></a> <span class="s1">&#39;e_dvalue&#39;</span><span class="p">,</span> <span class="s1">&#39;e_ddvalue&#39;</span><span class="p">,</span> <span class="s1">&#39;e_tauint&#39;</span><span class="p">,</span> <span class="s1">&#39;e_dtauint&#39;</span><span class="p">,</span>
</span><span id="Obs-51"><a href="#Obs-51"><span class="linenos"> 51</span></a> <span class="s1">&#39;e_windowsize&#39;</span><span class="p">,</span> <span class="s1">&#39;e_rho&#39;</span><span class="p">,</span> <span class="s1">&#39;e_drho&#39;</span><span class="p">,</span> <span class="s1">&#39;e_n_tauint&#39;</span><span class="p">,</span> <span class="s1">&#39;e_n_dtauint&#39;</span><span class="p">,</span>
</span><span id="Obs-52"><a href="#Obs-52"><span class="linenos"> 52</span></a> <span class="s1">&#39;idl&#39;</span><span class="p">,</span> <span class="s1">&#39;tag&#39;</span><span class="p">,</span> <span class="s1">&#39;_covobs&#39;</span><span class="p">,</span> <span class="s1">&#39;__dict__&#39;</span><span class="p">]</span>
</span><span id="Obs-53"><a href="#Obs-53"><span class="linenos"> 53</span></a>
</span><span id="Obs-54"><a href="#Obs-54"><span class="linenos"> 54</span></a> <span class="n">S_global</span> <span class="o">=</span> <span class="mf">2.0</span>
</span><span id="Obs-55"><a href="#Obs-55"><span class="linenos"> 55</span></a> <span class="n">S_dict</span> <span class="o">=</span> <span class="p">{}</span>
</span><span id="Obs-56"><a href="#Obs-56"><span class="linenos"> 56</span></a> <span class="n">tau_exp_global</span> <span class="o">=</span> <span class="mf">0.0</span>
</span><span id="Obs-57"><a href="#Obs-57"><span class="linenos"> 57</span></a> <span class="n">tau_exp_dict</span> <span class="o">=</span> <span class="p">{}</span>
</span><span id="Obs-58"><a href="#Obs-58"><span class="linenos"> 58</span></a> <span class="n">N_sigma_global</span> <span class="o">=</span> <span class="mf">1.0</span>
</span><span id="Obs-59"><a href="#Obs-59"><span class="linenos"> 59</span></a> <span class="n">N_sigma_dict</span> <span class="o">=</span> <span class="p">{}</span>
</span><span id="Obs-60"><a href="#Obs-60"><span class="linenos"> 60</span></a>
</span><span id="Obs-61"><a href="#Obs-61"><span class="linenos"> 61</span></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">samples</span><span class="p">,</span> <span class="n">names</span><span class="p">,</span> <span class="n">idl</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
</span><span id="Obs-62"><a href="#Obs-62"><span class="linenos"> 62</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot; Initialize Obs object.</span>
</span><span id="Obs-63"><a href="#Obs-63"><span class="linenos"> 63</span></a>
</span><span id="Obs-64"><a href="#Obs-64"><span class="linenos"> 64</span></a><span class="sd"> Parameters</span>
</span><span id="Obs-65"><a href="#Obs-65"><span class="linenos"> 65</span></a><span class="sd"> ----------</span>
</span><span id="Obs-66"><a href="#Obs-66"><span class="linenos"> 66</span></a><span class="sd"> samples : list</span>
</span><span id="Obs-67"><a href="#Obs-67"><span class="linenos"> 67</span></a><span class="sd"> list of numpy arrays containing the Monte Carlo samples</span>
</span><span id="Obs-68"><a href="#Obs-68"><span class="linenos"> 68</span></a><span class="sd"> names : list</span>
</span><span id="Obs-69"><a href="#Obs-69"><span class="linenos"> 69</span></a><span class="sd"> list of strings labeling the individual samples</span>
</span><span id="Obs-70"><a href="#Obs-70"><span class="linenos"> 70</span></a><span class="sd"> idl : list, optional</span>
</span><span id="Obs-71"><a href="#Obs-71"><span class="linenos"> 71</span></a><span class="sd"> list of ranges or lists on which the samples are defined</span>
</span><span id="Obs-72"><a href="#Obs-72"><span class="linenos"> 72</span></a><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="Obs-73"><a href="#Obs-73"><span class="linenos"> 73</span></a>
</span><span id="Obs-74"><a href="#Obs-74"><span class="linenos"> 74</span></a> <span class="k">if</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;means&quot;</span><span class="p">)</span> <span class="ow">is</span> <span class="kc">None</span> <span class="ow">and</span> <span class="nb">len</span><span class="p">(</span><span class="n">samples</span><span class="p">):</span>
</span><span id="Obs-75"><a href="#Obs-75"><span class="linenos"> 75</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">samples</span><span class="p">)</span> <span class="o">!=</span> <span class="nb">len</span><span class="p">(</span><span class="n">names</span><span class="p">):</span>
</span><span id="Obs-76"><a href="#Obs-76"><span class="linenos"> 76</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s1">&#39;Length of samples and names incompatible.&#39;</span><span class="p">)</span>
</span><span id="Obs-77"><a href="#Obs-77"><span class="linenos"> 77</span></a> <span class="k">if</span> <span class="n">idl</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
</span><span id="Obs-78"><a href="#Obs-78"><span class="linenos"> 78</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">idl</span><span class="p">)</span> <span class="o">!=</span> <span class="nb">len</span><span class="p">(</span><span class="n">names</span><span class="p">):</span>
</span><span id="Obs-79"><a href="#Obs-79"><span class="linenos"> 79</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s1">&#39;Length of idl incompatible with samples and names.&#39;</span><span class="p">)</span>
</span><span id="Obs-80"><a href="#Obs-80"><span class="linenos"> 80</span></a> <span class="n">name_length</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">names</span><span class="p">)</span>
</span><span id="Obs-81"><a href="#Obs-81"><span class="linenos"> 81</span></a> <span class="k">if</span> <span class="n">name_length</span> <span class="o">&gt;</span> <span class="mi">1</span><span class="p">:</span>
</span><span id="Obs-82"><a href="#Obs-82"><span class="linenos"> 82</span></a> <span class="k">if</span> <span class="n">name_length</span> <span class="o">!=</span> <span class="nb">len</span><span class="p">(</span><span class="nb">set</span><span class="p">(</span><span class="n">names</span><span class="p">)):</span>
</span><span id="Obs-83"><a href="#Obs-83"><span class="linenos"> 83</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s1">&#39;Names are not unique.&#39;</span><span class="p">)</span>
</span><span id="Obs-84"><a href="#Obs-84"><span class="linenos"> 84</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">all</span><span class="p">(</span><span class="nb">isinstance</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="nb">str</span><span class="p">)</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">names</span><span class="p">):</span>
</span><span id="Obs-85"><a href="#Obs-85"><span class="linenos"> 85</span></a> <span class="k">raise</span> <span class="ne">TypeError</span><span class="p">(</span><span class="s1">&#39;All names have to be strings.&#39;</span><span class="p">)</span>
</span><span id="Obs-86"><a href="#Obs-86"><span class="linenos"> 86</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="Obs-87"><a href="#Obs-87"><span class="linenos"> 87</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">names</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="nb">str</span><span class="p">):</span>
</span><span id="Obs-88"><a href="#Obs-88"><span class="linenos"> 88</span></a> <span class="k">raise</span> <span class="ne">TypeError</span><span class="p">(</span><span class="s1">&#39;All names have to be strings.&#39;</span><span class="p">)</span>
</span><span id="Obs-89"><a href="#Obs-89"><span class="linenos"> 89</span></a> <span class="k">if</span> <span class="nb">min</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">x</span><span class="p">)</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">samples</span><span class="p">)</span> <span class="o">&lt;=</span> <span class="mi">4</span><span class="p">:</span>
</span><span id="Obs-90"><a href="#Obs-90"><span class="linenos"> 90</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s1">&#39;Samples have to have at least 5 entries.&#39;</span><span class="p">)</span>
</span><span id="Obs-91"><a href="#Obs-91"><span class="linenos"> 91</span></a>
</span><span id="Obs-92"><a href="#Obs-92"><span class="linenos"> 92</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">names</span> <span class="o">=</span> <span class="nb">sorted</span><span class="p">(</span><span class="n">names</span><span class="p">)</span>
</span><span id="Obs-93"><a href="#Obs-93"><span class="linenos"> 93</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">shape</span> <span class="o">=</span> <span class="p">{}</span>
</span><span id="Obs-94"><a href="#Obs-94"><span class="linenos"> 94</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">r_values</span> <span class="o">=</span> <span class="p">{}</span>
</span><span id="Obs-95"><a href="#Obs-95"><span class="linenos"> 95</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">deltas</span> <span class="o">=</span> <span class="p">{}</span>
</span><span id="Obs-96"><a href="#Obs-96"><span class="linenos"> 96</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_covobs</span> <span class="o">=</span> <span class="p">{}</span>
</span><span id="Obs-97"><a href="#Obs-97"><span class="linenos"> 97</span></a>
</span><span id="Obs-98"><a href="#Obs-98"><span class="linenos"> 98</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_value</span> <span class="o">=</span> <span class="mi">0</span>
</span><span id="Obs-99"><a href="#Obs-99"><span class="linenos"> 99</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">N</span> <span class="o">=</span> <span class="mi">0</span>
</span><span id="Obs-100"><a href="#Obs-100"><span class="linenos">100</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">idl</span> <span class="o">=</span> <span class="p">{}</span>
</span><span id="Obs-101"><a href="#Obs-101"><span class="linenos">101</span></a> <span class="k">if</span> <span class="n">idl</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
</span><span id="Obs-102"><a href="#Obs-102"><span class="linenos">102</span></a> <span class="k">for</span> <span class="n">name</span><span class="p">,</span> <span class="n">idx</span> <span class="ow">in</span> <span class="nb">sorted</span><span class="p">(</span><span class="nb">zip</span><span class="p">(</span><span class="n">names</span><span class="p">,</span> <span class="n">idl</span><span class="p">)):</span>
</span><span id="Obs-103"><a href="#Obs-103"><span class="linenos">103</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">idx</span><span class="p">,</span> <span class="nb">range</span><span class="p">):</span>
</span><span id="Obs-104"><a href="#Obs-104"><span class="linenos">104</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">idl</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="o">=</span> <span class="n">idx</span>
</span><span id="Obs-105"><a href="#Obs-105"><span class="linenos">105</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">idx</span><span class="p">,</span> <span class="p">(</span><span class="nb">list</span><span class="p">,</span> <span class="n">np</span><span class="o">.</span><span class="n">ndarray</span><span class="p">)):</span>
</span><span id="Obs-106"><a href="#Obs-106"><span class="linenos">106</span></a> <span class="n">dc</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">unique</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">diff</span><span class="p">(</span><span class="n">idx</span><span class="p">))</span>
</span><span id="Obs-107"><a href="#Obs-107"><span class="linenos">107</span></a> <span class="k">if</span> <span class="n">np</span><span class="o">.</span><span class="n">any</span><span class="p">(</span><span class="n">dc</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">):</span>
</span><span id="Obs-108"><a href="#Obs-108"><span class="linenos">108</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;Unsorted idx for idl[</span><span class="si">%s</span><span class="s2">] at position </span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="s1">&#39; &#39;</span><span class="o">.</span><span class="n">join</span><span class="p">([</span><span class="s1">&#39;</span><span class="si">%s</span><span class="s1">&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">pos</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span> <span class="k">for</span> <span class="n">pos</span> <span class="ow">in</span> <span class="n">np</span><span class="o">.</span><span class="n">where</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">diff</span><span class="p">(</span><span class="n">idx</span><span class="p">)</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)[</span><span class="mi">0</span><span class="p">]])))</span>
</span><span id="Obs-109"><a href="#Obs-109"><span class="linenos">109</span></a> <span class="k">elif</span> <span class="n">np</span><span class="o">.</span><span class="n">any</span><span class="p">(</span><span class="n">dc</span> <span class="o">==</span> <span class="mi">0</span><span class="p">):</span>
</span><span id="Obs-110"><a href="#Obs-110"><span class="linenos">110</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;Duplicate entries in idx for idl[</span><span class="si">%s</span><span class="s2">] at position </span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="s1">&#39; &#39;</span><span class="o">.</span><span class="n">join</span><span class="p">([</span><span class="s1">&#39;</span><span class="si">%s</span><span class="s1">&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">pos</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span> <span class="k">for</span> <span class="n">pos</span> <span class="ow">in</span> <span class="n">np</span><span class="o">.</span><span class="n">where</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">diff</span><span class="p">(</span><span class="n">idx</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span><span class="p">)[</span><span class="mi">0</span><span class="p">]])))</span>
</span><span id="Obs-111"><a href="#Obs-111"><span class="linenos">111</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">dc</span><span class="p">)</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span>
</span><span id="Obs-112"><a href="#Obs-112"><span class="linenos">112</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">idl</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="o">=</span> <span class="nb">range</span><span class="p">(</span><span class="n">idx</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">idx</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> <span class="o">+</span> <span class="n">dc</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">dc</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
</span><span id="Obs-113"><a href="#Obs-113"><span class="linenos">113</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="Obs-114"><a href="#Obs-114"><span class="linenos">114</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">idl</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="n">idx</span><span class="p">)</span>
</span><span id="Obs-115"><a href="#Obs-115"><span class="linenos">115</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="Obs-116"><a href="#Obs-116"><span class="linenos">116</span></a> <span class="k">raise</span> <span class="ne">TypeError</span><span class="p">(</span><span class="s1">&#39;incompatible type for idl[</span><span class="si">%s</span><span class="s1">].&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">name</span><span class="p">))</span>
</span><span id="Obs-117"><a href="#Obs-117"><span class="linenos">117</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="Obs-118"><a href="#Obs-118"><span class="linenos">118</span></a> <span class="k">for</span> <span class="n">name</span><span class="p">,</span> <span class="n">sample</span> <span class="ow">in</span> <span class="nb">sorted</span><span class="p">(</span><span class="nb">zip</span><span class="p">(</span><span class="n">names</span><span class="p">,</span> <span class="n">samples</span><span class="p">)):</span>
</span><span id="Obs-119"><a href="#Obs-119"><span class="linenos">119</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">idl</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="o">=</span> <span class="nb">range</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">sample</span><span class="p">)</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span>
</span><span id="Obs-120"><a href="#Obs-120"><span class="linenos">120</span></a>
</span><span id="Obs-121"><a href="#Obs-121"><span class="linenos">121</span></a> <span class="k">if</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;means&quot;</span><span class="p">)</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
</span><span id="Obs-122"><a href="#Obs-122"><span class="linenos">122</span></a> <span class="k">for</span> <span class="n">name</span><span class="p">,</span> <span class="n">sample</span><span class="p">,</span> <span class="n">mean</span> <span class="ow">in</span> <span class="nb">sorted</span><span class="p">(</span><span class="nb">zip</span><span class="p">(</span><span class="n">names</span><span class="p">,</span> <span class="n">samples</span><span class="p">,</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;means&quot;</span><span class="p">))):</span>
</span><span id="Obs-123"><a href="#Obs-123"><span class="linenos">123</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">idl</span><span class="p">[</span><span class="n">name</span><span class="p">])</span>
</span><span id="Obs-124"><a href="#Obs-124"><span class="linenos">124</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">N</span> <span class="o">+=</span> <span class="bp">self</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="n">name</span><span class="p">]</span>
</span><span id="Obs-125"><a href="#Obs-125"><span class="linenos">125</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">r_values</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="o">=</span> <span class="n">mean</span>
</span><span id="Obs-126"><a href="#Obs-126"><span class="linenos">126</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">deltas</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="o">=</span> <span class="n">sample</span>
</span><span id="Obs-127"><a href="#Obs-127"><span class="linenos">127</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="Obs-128"><a href="#Obs-128"><span class="linenos">128</span></a> <span class="k">for</span> <span class="n">name</span><span class="p">,</span> <span class="n">sample</span> <span class="ow">in</span> <span class="nb">sorted</span><span class="p">(</span><span class="nb">zip</span><span class="p">(</span><span class="n">names</span><span class="p">,</span> <span class="n">samples</span><span class="p">)):</span>
</span><span id="Obs-129"><a href="#Obs-129"><span class="linenos">129</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">idl</span><span class="p">[</span><span class="n">name</span><span class="p">])</span>
</span><span id="Obs-130"><a href="#Obs-130"><span class="linenos">130</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">N</span> <span class="o">+=</span> <span class="bp">self</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="n">name</span><span class="p">]</span>
</span><span id="Obs-131"><a href="#Obs-131"><span class="linenos">131</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">sample</span><span class="p">)</span> <span class="o">!=</span> <span class="bp">self</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="n">name</span><span class="p">]:</span>
</span><span id="Obs-132"><a href="#Obs-132"><span class="linenos">132</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s1">&#39;Incompatible samples and idx for </span><span class="si">%s</span><span class="s1">: </span><span class="si">%d</span><span class="s1"> vs. </span><span class="si">%d</span><span class="s1">&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">sample</span><span class="p">),</span> <span class="bp">self</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="n">name</span><span class="p">]))</span>
</span><span id="Obs-133"><a href="#Obs-133"><span class="linenos">133</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">r_values</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">mean</span><span class="p">(</span><span class="n">sample</span><span class="p">)</span>
</span><span id="Obs-134"><a href="#Obs-134"><span class="linenos">134</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">deltas</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="o">=</span> <span class="n">sample</span> <span class="o">-</span> <span class="bp">self</span><span class="o">.</span><span class="n">r_values</span><span class="p">[</span><span class="n">name</span><span class="p">]</span>
</span><span id="Obs-135"><a href="#Obs-135"><span class="linenos">135</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_value</span> <span class="o">+=</span> <span class="bp">self</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">r_values</span><span class="p">[</span><span class="n">name</span><span class="p">]</span>
</span><span id="Obs-136"><a href="#Obs-136"><span class="linenos">136</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_value</span> <span class="o">/=</span> <span class="bp">self</span><span class="o">.</span><span class="n">N</span>
</span><span id="Obs-137"><a href="#Obs-137"><span class="linenos">137</span></a>
</span><span id="Obs-138"><a href="#Obs-138"><span class="linenos">138</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_dvalue</span> <span class="o">=</span> <span class="mf">0.0</span>
</span><span id="Obs-139"><a href="#Obs-139"><span class="linenos">139</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">ddvalue</span> <span class="o">=</span> <span class="mf">0.0</span>
</span><span id="Obs-140"><a href="#Obs-140"><span class="linenos">140</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">reweighted</span> <span class="o">=</span> <span class="kc">False</span>
</span><span id="Obs-141"><a href="#Obs-141"><span class="linenos">141</span></a>
</span><span id="Obs-142"><a href="#Obs-142"><span class="linenos">142</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">tag</span> <span class="o">=</span> <span class="kc">None</span>
</span><span id="Obs-143"><a href="#Obs-143"><span class="linenos">143</span></a>
</span><span id="Obs-144"><a href="#Obs-144"><span class="linenos">144</span></a> <span class="nd">@property</span>
</span><span id="Obs-145"><a href="#Obs-145"><span class="linenos">145</span></a> <span class="k">def</span> <span class="nf">value</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
</span><span id="Obs-146"><a href="#Obs-146"><span class="linenos">146</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_value</span>
</span><span id="Obs-147"><a href="#Obs-147"><span class="linenos">147</span></a>
</span><span id="Obs-148"><a href="#Obs-148"><span class="linenos">148</span></a> <span class="nd">@property</span>
</span><span id="Obs-149"><a href="#Obs-149"><span class="linenos">149</span></a> <span class="k">def</span> <span class="nf">dvalue</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
</span><span id="Obs-150"><a href="#Obs-150"><span class="linenos">150</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_dvalue</span>
</span><span id="Obs-151"><a href="#Obs-151"><span class="linenos">151</span></a>
</span><span id="Obs-152"><a href="#Obs-152"><span class="linenos">152</span></a> <span class="nd">@property</span>
</span><span id="Obs-153"><a href="#Obs-153"><span class="linenos">153</span></a> <span class="k">def</span> <span class="nf">e_names</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
</span><span id="Obs-154"><a href="#Obs-154"><span class="linenos">154</span></a> <span class="k">return</span> <span class="nb">sorted</span><span class="p">(</span><span class="nb">set</span><span class="p">([</span><span class="n">o</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s1">&#39;|&#39;</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span> <span class="k">for</span> <span class="n">o</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">names</span><span class="p">]))</span>
</span><span id="Obs-155"><a href="#Obs-155"><span class="linenos">155</span></a>
</span><span id="Obs-156"><a href="#Obs-156"><span class="linenos">156</span></a> <span class="nd">@property</span>
</span><span id="Obs-157"><a href="#Obs-157"><span class="linenos">157</span></a> <span class="k">def</span> <span class="nf">cov_names</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
</span><span id="Obs-158"><a href="#Obs-158"><span class="linenos">158</span></a> <span class="k">return</span> <span class="nb">sorted</span><span class="p">(</span><span class="nb">set</span><span class="p">([</span><span class="n">o</span> <span class="k">for</span> <span class="n">o</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">covobs</span><span class="o">.</span><span class="n">keys</span><span class="p">()]))</span>
</span><span id="Obs-159"><a href="#Obs-159"><span class="linenos">159</span></a>
</span><span id="Obs-160"><a href="#Obs-160"><span class="linenos">160</span></a> <span class="nd">@property</span>
</span><span id="Obs-161"><a href="#Obs-161"><span class="linenos">161</span></a> <span class="k">def</span> <span class="nf">mc_names</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
</span><span id="Obs-162"><a href="#Obs-162"><span class="linenos">162</span></a> <span class="k">return</span> <span class="nb">sorted</span><span class="p">(</span><span class="nb">set</span><span class="p">([</span><span class="n">o</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s1">&#39;|&#39;</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span> <span class="k">for</span> <span class="n">o</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">names</span> <span class="k">if</span> <span class="n">o</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">cov_names</span><span class="p">]))</span>
</span><span id="Obs-163"><a href="#Obs-163"><span class="linenos">163</span></a>
</span><span id="Obs-164"><a href="#Obs-164"><span class="linenos">164</span></a> <span class="nd">@property</span>
</span><span id="Obs-165"><a href="#Obs-165"><span class="linenos">165</span></a> <span class="k">def</span> <span class="nf">e_content</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
</span><span id="Obs-166"><a href="#Obs-166"><span class="linenos">166</span></a> <span class="n">res</span> <span class="o">=</span> <span class="p">{}</span>
</span><span id="Obs-167"><a href="#Obs-167"><span class="linenos">167</span></a> <span class="k">for</span> <span class="n">e</span><span class="p">,</span> <span class="n">e_name</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">e_names</span><span class="p">):</span>
</span><span id="Obs-168"><a href="#Obs-168"><span class="linenos">168</span></a> <span class="n">res</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">=</span> <span class="nb">sorted</span><span class="p">(</span><span class="nb">filter</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span><span class="p">:</span> <span class="n">x</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="n">e_name</span> <span class="o">+</span> <span class="s1">&#39;|&#39;</span><span class="p">),</span> <span class="bp">self</span><span class="o">.</span><span class="n">names</span><span class="p">))</span>
</span><span id="Obs-169"><a href="#Obs-169"><span class="linenos">169</span></a> <span class="k">if</span> <span class="n">e_name</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">names</span><span class="p">:</span>
</span><span id="Obs-170"><a href="#Obs-170"><span class="linenos">170</span></a> <span class="n">res</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">e_name</span><span class="p">)</span>
</span><span id="Obs-171"><a href="#Obs-171"><span class="linenos">171</span></a> <span class="k">return</span> <span class="n">res</span>
</span><span id="Obs-172"><a href="#Obs-172"><span class="linenos">172</span></a>
</span><span id="Obs-173"><a href="#Obs-173"><span class="linenos">173</span></a> <span class="nd">@property</span>
</span><span id="Obs-174"><a href="#Obs-174"><span class="linenos">174</span></a> <span class="k">def</span> <span class="nf">covobs</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
</span><span id="Obs-175"><a href="#Obs-175"><span class="linenos">175</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_covobs</span>
</span><span id="Obs-176"><a href="#Obs-176"><span class="linenos">176</span></a>
</span><span id="Obs-177"><a href="#Obs-177"><span class="linenos">177</span></a> <span class="k">def</span> <span class="nf">gamma_method</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
</span><span id="Obs-178"><a href="#Obs-178"><span class="linenos">178</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Estimate the error and related properties of the Obs.</span>
</span><span id="Obs-179"><a href="#Obs-179"><span class="linenos">179</span></a>
</span><span id="Obs-180"><a href="#Obs-180"><span class="linenos">180</span></a><span class="sd"> Parameters</span>
</span><span id="Obs-181"><a href="#Obs-181"><span class="linenos">181</span></a><span class="sd"> ----------</span>
</span><span id="Obs-182"><a href="#Obs-182"><span class="linenos">182</span></a><span class="sd"> S : float</span>
</span><span id="Obs-183"><a href="#Obs-183"><span class="linenos">183</span></a><span class="sd"> specifies a custom value for the parameter S (default 2.0).</span>
</span><span id="Obs-184"><a href="#Obs-184"><span class="linenos">184</span></a><span class="sd"> If set to 0 it is assumed that the data exhibits no</span>
</span><span id="Obs-185"><a href="#Obs-185"><span class="linenos">185</span></a><span class="sd"> autocorrelation. In this case the error estimates coincides</span>
</span><span id="Obs-186"><a href="#Obs-186"><span class="linenos">186</span></a><span class="sd"> with the sample standard error.</span>
</span><span id="Obs-187"><a href="#Obs-187"><span class="linenos">187</span></a><span class="sd"> tau_exp : float</span>
</span><span id="Obs-188"><a href="#Obs-188"><span class="linenos">188</span></a><span class="sd"> positive value triggers the critical slowing down analysis</span>
</span><span id="Obs-189"><a href="#Obs-189"><span class="linenos">189</span></a><span class="sd"> (default 0.0).</span>
</span><span id="Obs-190"><a href="#Obs-190"><span class="linenos">190</span></a><span class="sd"> N_sigma : float</span>
</span><span id="Obs-191"><a href="#Obs-191"><span class="linenos">191</span></a><span class="sd"> number of standard deviations from zero until the tail is</span>
</span><span id="Obs-192"><a href="#Obs-192"><span class="linenos">192</span></a><span class="sd"> attached to the autocorrelation function (default 1).</span>
</span><span id="Obs-193"><a href="#Obs-193"><span class="linenos">193</span></a><span class="sd"> fft : bool</span>
</span><span id="Obs-194"><a href="#Obs-194"><span class="linenos">194</span></a><span class="sd"> determines whether the fft algorithm is used for the computation</span>
</span><span id="Obs-195"><a href="#Obs-195"><span class="linenos">195</span></a><span class="sd"> of the autocorrelation function (default True)</span>
</span><span id="Obs-196"><a href="#Obs-196"><span class="linenos">196</span></a><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="Obs-197"><a href="#Obs-197"><span class="linenos">197</span></a>
</span><span id="Obs-198"><a href="#Obs-198"><span class="linenos">198</span></a> <span class="n">e_content</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">e_content</span>
</span><span id="Obs-199"><a href="#Obs-199"><span class="linenos">199</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_dvalue</span> <span class="o">=</span> <span class="p">{}</span>
</span><span id="Obs-200"><a href="#Obs-200"><span class="linenos">200</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_ddvalue</span> <span class="o">=</span> <span class="p">{}</span>
</span><span id="Obs-201"><a href="#Obs-201"><span class="linenos">201</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_tauint</span> <span class="o">=</span> <span class="p">{}</span>
</span><span id="Obs-202"><a href="#Obs-202"><span class="linenos">202</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_dtauint</span> <span class="o">=</span> <span class="p">{}</span>
</span><span id="Obs-203"><a href="#Obs-203"><span class="linenos">203</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_windowsize</span> <span class="o">=</span> <span class="p">{}</span>
</span><span id="Obs-204"><a href="#Obs-204"><span class="linenos">204</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_n_tauint</span> <span class="o">=</span> <span class="p">{}</span>
</span><span id="Obs-205"><a href="#Obs-205"><span class="linenos">205</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_n_dtauint</span> <span class="o">=</span> <span class="p">{}</span>
</span><span id="Obs-206"><a href="#Obs-206"><span class="linenos">206</span></a> <span class="n">e_gamma</span> <span class="o">=</span> <span class="p">{}</span>
</span><span id="Obs-207"><a href="#Obs-207"><span class="linenos">207</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_rho</span> <span class="o">=</span> <span class="p">{}</span>
</span><span id="Obs-208"><a href="#Obs-208"><span class="linenos">208</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_drho</span> <span class="o">=</span> <span class="p">{}</span>
</span><span id="Obs-209"><a href="#Obs-209"><span class="linenos">209</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_dvalue</span> <span class="o">=</span> <span class="mi">0</span>
</span><span id="Obs-210"><a href="#Obs-210"><span class="linenos">210</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">ddvalue</span> <span class="o">=</span> <span class="mi">0</span>
</span><span id="Obs-211"><a href="#Obs-211"><span class="linenos">211</span></a>
</span><span id="Obs-212"><a href="#Obs-212"><span class="linenos">212</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">S</span> <span class="o">=</span> <span class="p">{}</span>
</span><span id="Obs-213"><a href="#Obs-213"><span class="linenos">213</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">tau_exp</span> <span class="o">=</span> <span class="p">{}</span>
</span><span id="Obs-214"><a href="#Obs-214"><span class="linenos">214</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">N_sigma</span> <span class="o">=</span> <span class="p">{}</span>
</span><span id="Obs-215"><a href="#Obs-215"><span class="linenos">215</span></a>
</span><span id="Obs-216"><a href="#Obs-216"><span class="linenos">216</span></a> <span class="k">if</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">&#39;fft&#39;</span><span class="p">)</span> <span class="ow">is</span> <span class="kc">False</span><span class="p">:</span>
</span><span id="Obs-217"><a href="#Obs-217"><span class="linenos">217</span></a> <span class="n">fft</span> <span class="o">=</span> <span class="kc">False</span>
</span><span id="Obs-218"><a href="#Obs-218"><span class="linenos">218</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="Obs-219"><a href="#Obs-219"><span class="linenos">219</span></a> <span class="n">fft</span> <span class="o">=</span> <span class="kc">True</span>
</span><span id="Obs-220"><a href="#Obs-220"><span class="linenos">220</span></a>
</span><span id="Obs-221"><a href="#Obs-221"><span class="linenos">221</span></a> <span class="k">def</span> <span class="nf">_parse_kwarg</span><span class="p">(</span><span class="n">kwarg_name</span><span class="p">):</span>
</span><span id="Obs-222"><a href="#Obs-222"><span class="linenos">222</span></a> <span class="k">if</span> <span class="n">kwarg_name</span> <span class="ow">in</span> <span class="n">kwargs</span><span class="p">:</span>
</span><span id="Obs-223"><a href="#Obs-223"><span class="linenos">223</span></a> <span class="n">tmp</span> <span class="o">=</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">kwarg_name</span><span class="p">)</span>
</span><span id="Obs-224"><a href="#Obs-224"><span class="linenos">224</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">tmp</span><span class="p">,</span> <span class="p">(</span><span class="nb">int</span><span class="p">,</span> <span class="nb">float</span><span class="p">)):</span>
</span><span id="Obs-225"><a href="#Obs-225"><span class="linenos">225</span></a> <span class="k">if</span> <span class="n">tmp</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">:</span>
</span><span id="Obs-226"><a href="#Obs-226"><span class="linenos">226</span></a> <span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="n">kwarg_name</span> <span class="o">+</span> <span class="s1">&#39; has to be larger or equal to 0.&#39;</span><span class="p">)</span>
</span><span id="Obs-227"><a href="#Obs-227"><span class="linenos">227</span></a> <span class="k">for</span> <span class="n">e</span><span class="p">,</span> <span class="n">e_name</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">e_names</span><span class="p">):</span>
</span><span id="Obs-228"><a href="#Obs-228"><span class="linenos">228</span></a> <span class="nb">getattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">kwarg_name</span><span class="p">)[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">=</span> <span class="n">tmp</span>
</span><span id="Obs-229"><a href="#Obs-229"><span class="linenos">229</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="Obs-230"><a href="#Obs-230"><span class="linenos">230</span></a> <span class="k">raise</span> <span class="ne">TypeError</span><span class="p">(</span><span class="n">kwarg_name</span> <span class="o">+</span> <span class="s1">&#39; is not in proper format.&#39;</span><span class="p">)</span>
</span><span id="Obs-231"><a href="#Obs-231"><span class="linenos">231</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="Obs-232"><a href="#Obs-232"><span class="linenos">232</span></a> <span class="k">for</span> <span class="n">e</span><span class="p">,</span> <span class="n">e_name</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">e_names</span><span class="p">):</span>
</span><span id="Obs-233"><a href="#Obs-233"><span class="linenos">233</span></a> <span class="k">if</span> <span class="n">e_name</span> <span class="ow">in</span> <span class="nb">getattr</span><span class="p">(</span><span class="n">Obs</span><span class="p">,</span> <span class="n">kwarg_name</span> <span class="o">+</span> <span class="s1">&#39;_dict&#39;</span><span class="p">):</span>
</span><span id="Obs-234"><a href="#Obs-234"><span class="linenos">234</span></a> <span class="nb">getattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">kwarg_name</span><span class="p">)[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">=</span> <span class="nb">getattr</span><span class="p">(</span><span class="n">Obs</span><span class="p">,</span> <span class="n">kwarg_name</span> <span class="o">+</span> <span class="s1">&#39;_dict&#39;</span><span class="p">)[</span><span class="n">e_name</span><span class="p">]</span>
</span><span id="Obs-235"><a href="#Obs-235"><span class="linenos">235</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="Obs-236"><a href="#Obs-236"><span class="linenos">236</span></a> <span class="nb">getattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">kwarg_name</span><span class="p">)[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">=</span> <span class="nb">getattr</span><span class="p">(</span><span class="n">Obs</span><span class="p">,</span> <span class="n">kwarg_name</span> <span class="o">+</span> <span class="s1">&#39;_global&#39;</span><span class="p">)</span>
</span><span id="Obs-237"><a href="#Obs-237"><span class="linenos">237</span></a>
</span><span id="Obs-238"><a href="#Obs-238"><span class="linenos">238</span></a> <span class="n">_parse_kwarg</span><span class="p">(</span><span class="s1">&#39;S&#39;</span><span class="p">)</span>
</span><span id="Obs-239"><a href="#Obs-239"><span class="linenos">239</span></a> <span class="n">_parse_kwarg</span><span class="p">(</span><span class="s1">&#39;tau_exp&#39;</span><span class="p">)</span>
</span><span id="Obs-240"><a href="#Obs-240"><span class="linenos">240</span></a> <span class="n">_parse_kwarg</span><span class="p">(</span><span class="s1">&#39;N_sigma&#39;</span><span class="p">)</span>
</span><span id="Obs-241"><a href="#Obs-241"><span class="linenos">241</span></a>
</span><span id="Obs-242"><a href="#Obs-242"><span class="linenos">242</span></a> <span class="k">for</span> <span class="n">e</span><span class="p">,</span> <span class="n">e_name</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">mc_names</span><span class="p">):</span>
</span><span id="Obs-243"><a href="#Obs-243"><span class="linenos">243</span></a> <span class="n">gapsize</span> <span class="o">=</span> <span class="n">_determine_gap</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">e_content</span><span class="p">,</span> <span class="n">e_name</span><span class="p">)</span>
</span><span id="Obs-244"><a href="#Obs-244"><span class="linenos">244</span></a>
</span><span id="Obs-245"><a href="#Obs-245"><span class="linenos">245</span></a> <span class="n">r_length</span> <span class="o">=</span> <span class="p">[]</span>
</span><span id="Obs-246"><a href="#Obs-246"><span class="linenos">246</span></a> <span class="k">for</span> <span class="n">r_name</span> <span class="ow">in</span> <span class="n">e_content</span><span class="p">[</span><span class="n">e_name</span><span class="p">]:</span>
</span><span id="Obs-247"><a href="#Obs-247"><span class="linenos">247</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">idl</span><span class="p">[</span><span class="n">r_name</span><span class="p">],</span> <span class="nb">range</span><span class="p">):</span>
</span><span id="Obs-248"><a href="#Obs-248"><span class="linenos">248</span></a> <span class="n">r_length</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">idl</span><span class="p">[</span><span class="n">r_name</span><span class="p">])</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">idl</span><span class="p">[</span><span class="n">r_name</span><span class="p">]</span><span class="o">.</span><span class="n">step</span> <span class="o">//</span> <span class="n">gapsize</span><span class="p">)</span>
</span><span id="Obs-249"><a href="#Obs-249"><span class="linenos">249</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="Obs-250"><a href="#Obs-250"><span class="linenos">250</span></a> <span class="n">r_length</span><span class="o">.</span><span class="n">append</span><span class="p">((</span><span class="bp">self</span><span class="o">.</span><span class="n">idl</span><span class="p">[</span><span class="n">r_name</span><span class="p">][</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> <span class="o">-</span> <span class="bp">self</span><span class="o">.</span><span class="n">idl</span><span class="p">[</span><span class="n">r_name</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span> <span class="o">//</span> <span class="n">gapsize</span><span class="p">)</span>
</span><span id="Obs-251"><a href="#Obs-251"><span class="linenos">251</span></a>
</span><span id="Obs-252"><a href="#Obs-252"><span class="linenos">252</span></a> <span class="n">e_N</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">sum</span><span class="p">([</span><span class="bp">self</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="n">r_name</span><span class="p">]</span> <span class="k">for</span> <span class="n">r_name</span> <span class="ow">in</span> <span class="n">e_content</span><span class="p">[</span><span class="n">e_name</span><span class="p">]])</span>
</span><span id="Obs-253"><a href="#Obs-253"><span class="linenos">253</span></a> <span class="n">w_max</span> <span class="o">=</span> <span class="nb">max</span><span class="p">(</span><span class="n">r_length</span><span class="p">)</span> <span class="o">//</span> <span class="mi">2</span>
</span><span id="Obs-254"><a href="#Obs-254"><span class="linenos">254</span></a> <span class="n">e_gamma</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">zeros</span><span class="p">(</span><span class="n">w_max</span><span class="p">)</span>
</span><span id="Obs-255"><a href="#Obs-255"><span class="linenos">255</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_rho</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">zeros</span><span class="p">(</span><span class="n">w_max</span><span class="p">)</span>
</span><span id="Obs-256"><a href="#Obs-256"><span class="linenos">256</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_drho</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">zeros</span><span class="p">(</span><span class="n">w_max</span><span class="p">)</span>
</span><span id="Obs-257"><a href="#Obs-257"><span class="linenos">257</span></a>
</span><span id="Obs-258"><a href="#Obs-258"><span class="linenos">258</span></a> <span class="k">for</span> <span class="n">r_name</span> <span class="ow">in</span> <span class="n">e_content</span><span class="p">[</span><span class="n">e_name</span><span class="p">]:</span>
</span><span id="Obs-259"><a href="#Obs-259"><span class="linenos">259</span></a> <span class="n">e_gamma</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">+=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_calc_gamma</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">deltas</span><span class="p">[</span><span class="n">r_name</span><span class="p">],</span> <span class="bp">self</span><span class="o">.</span><span class="n">idl</span><span class="p">[</span><span class="n">r_name</span><span class="p">],</span> <span class="bp">self</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="n">r_name</span><span class="p">],</span> <span class="n">w_max</span><span class="p">,</span> <span class="n">fft</span><span class="p">,</span> <span class="n">gapsize</span><span class="p">)</span>
</span><span id="Obs-260"><a href="#Obs-260"><span class="linenos">260</span></a>
</span><span id="Obs-261"><a href="#Obs-261"><span class="linenos">261</span></a> <span class="n">gamma_div</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">zeros</span><span class="p">(</span><span class="n">w_max</span><span class="p">)</span>
</span><span id="Obs-262"><a href="#Obs-262"><span class="linenos">262</span></a> <span class="k">for</span> <span class="n">r_name</span> <span class="ow">in</span> <span class="n">e_content</span><span class="p">[</span><span class="n">e_name</span><span class="p">]:</span>
</span><span id="Obs-263"><a href="#Obs-263"><span class="linenos">263</span></a> <span class="n">gamma_div</span> <span class="o">+=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_calc_gamma</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">ones</span><span class="p">((</span><span class="bp">self</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="n">r_name</span><span class="p">])),</span> <span class="bp">self</span><span class="o">.</span><span class="n">idl</span><span class="p">[</span><span class="n">r_name</span><span class="p">],</span> <span class="bp">self</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="n">r_name</span><span class="p">],</span> <span class="n">w_max</span><span class="p">,</span> <span class="n">fft</span><span class="p">,</span> <span class="n">gapsize</span><span class="p">)</span>
</span><span id="Obs-264"><a href="#Obs-264"><span class="linenos">264</span></a> <span class="n">gamma_div</span><span class="p">[</span><span class="n">gamma_div</span> <span class="o">&lt;</span> <span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="mf">1.0</span>
</span><span id="Obs-265"><a href="#Obs-265"><span class="linenos">265</span></a> <span class="n">e_gamma</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">/=</span> <span class="n">gamma_div</span><span class="p">[:</span><span class="n">w_max</span><span class="p">]</span>
</span><span id="Obs-266"><a href="#Obs-266"><span class="linenos">266</span></a>
</span><span id="Obs-267"><a href="#Obs-267"><span class="linenos">267</span></a> <span class="k">if</span> <span class="n">np</span><span class="o">.</span><span class="n">abs</span><span class="p">(</span><span class="n">e_gamma</span><span class="p">[</span><span class="n">e_name</span><span class="p">][</span><span class="mi">0</span><span class="p">])</span> <span class="o">&lt;</span> <span class="mi">10</span> <span class="o">*</span> <span class="n">np</span><span class="o">.</span><span class="n">finfo</span><span class="p">(</span><span class="nb">float</span><span class="p">)</span><span class="o">.</span><span class="n">tiny</span><span class="p">:</span> <span class="c1"># Prevent division by zero</span>
</span><span id="Obs-268"><a href="#Obs-268"><span class="linenos">268</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_tauint</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">=</span> <span class="mf">0.5</span>
</span><span id="Obs-269"><a href="#Obs-269"><span class="linenos">269</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_dtauint</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">=</span> <span class="mf">0.0</span>
</span><span id="Obs-270"><a href="#Obs-270"><span class="linenos">270</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_dvalue</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">=</span> <span class="mf">0.0</span>
</span><span id="Obs-271"><a href="#Obs-271"><span class="linenos">271</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_ddvalue</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">=</span> <span class="mf">0.0</span>
</span><span id="Obs-272"><a href="#Obs-272"><span class="linenos">272</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_windowsize</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">=</span> <span class="mi">0</span>
</span><span id="Obs-273"><a href="#Obs-273"><span class="linenos">273</span></a> <span class="k">continue</span>
</span><span id="Obs-274"><a href="#Obs-274"><span class="linenos">274</span></a>
</span><span id="Obs-275"><a href="#Obs-275"><span class="linenos">275</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_rho</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">=</span> <span class="n">e_gamma</span><span class="p">[</span><span class="n">e_name</span><span class="p">][:</span><span class="n">w_max</span><span class="p">]</span> <span class="o">/</span> <span class="n">e_gamma</span><span class="p">[</span><span class="n">e_name</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span>
</span><span id="Obs-276"><a href="#Obs-276"><span class="linenos">276</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_n_tauint</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">cumsum</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">concatenate</span><span class="p">(([</span><span class="mf">0.5</span><span class="p">],</span> <span class="bp">self</span><span class="o">.</span><span class="n">e_rho</span><span class="p">[</span><span class="n">e_name</span><span class="p">][</span><span class="mi">1</span><span class="p">:])))</span>
</span><span id="Obs-277"><a href="#Obs-277"><span class="linenos">277</span></a> <span class="c1"># Make sure no entry of tauint is smaller than 0.5</span>
</span><span id="Obs-278"><a href="#Obs-278"><span class="linenos">278</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_n_tauint</span><span class="p">[</span><span class="n">e_name</span><span class="p">][</span><span class="bp">self</span><span class="o">.</span><span class="n">e_n_tauint</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">&lt;=</span> <span class="mf">0.5</span><span class="p">]</span> <span class="o">=</span> <span class="mf">0.5</span> <span class="o">+</span> <span class="n">np</span><span class="o">.</span><span class="n">finfo</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">float64</span><span class="p">)</span><span class="o">.</span><span class="n">eps</span>
</span><span id="Obs-279"><a href="#Obs-279"><span class="linenos">279</span></a> <span class="c1"># hep-lat/0306017 eq. (42)</span>
</span><span id="Obs-280"><a href="#Obs-280"><span class="linenos">280</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_n_dtauint</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">e_n_tauint</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">*</span> <span class="mi">2</span> <span class="o">*</span> <span class="n">np</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">abs</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">arange</span><span class="p">(</span><span class="n">w_max</span><span class="p">)</span> <span class="o">+</span> <span class="mf">0.5</span> <span class="o">-</span> <span class="bp">self</span><span class="o">.</span><span class="n">e_n_tauint</span><span class="p">[</span><span class="n">e_name</span><span class="p">])</span> <span class="o">/</span> <span class="n">e_N</span><span class="p">)</span>
</span><span id="Obs-281"><a href="#Obs-281"><span class="linenos">281</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_n_dtauint</span><span class="p">[</span><span class="n">e_name</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="mf">0.0</span>
</span><span id="Obs-282"><a href="#Obs-282"><span class="linenos">282</span></a>
</span><span id="Obs-283"><a href="#Obs-283"><span class="linenos">283</span></a> <span class="k">def</span> <span class="nf">_compute_drho</span><span class="p">(</span><span class="n">i</span><span class="p">):</span>
</span><span id="Obs-284"><a href="#Obs-284"><span class="linenos">284</span></a> <span class="n">tmp</span> <span class="o">=</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">e_rho</span><span class="p">[</span><span class="n">e_name</span><span class="p">][</span><span class="n">i</span> <span class="o">+</span> <span class="mi">1</span><span class="p">:</span><span class="n">w_max</span><span class="p">]</span>
</span><span id="Obs-285"><a href="#Obs-285"><span class="linenos">285</span></a> <span class="o">+</span> <span class="n">np</span><span class="o">.</span><span class="n">concatenate</span><span class="p">([</span><span class="bp">self</span><span class="o">.</span><span class="n">e_rho</span><span class="p">[</span><span class="n">e_name</span><span class="p">][</span><span class="n">i</span> <span class="o">-</span> <span class="mi">1</span><span class="p">:</span><span class="kc">None</span> <span class="k">if</span> <span class="n">i</span> <span class="o">-</span> <span class="p">(</span><span class="n">w_max</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> <span class="o">//</span> <span class="mi">2</span> <span class="o">&lt;=</span> <span class="mi">0</span> <span class="k">else</span> <span class="p">(</span><span class="mi">2</span> <span class="o">*</span> <span class="n">i</span> <span class="o">-</span> <span class="p">(</span><span class="mi">2</span> <span class="o">*</span> <span class="n">w_max</span><span class="p">)</span> <span class="o">//</span> <span class="mi">2</span><span class="p">):</span><span class="o">-</span><span class="mi">1</span><span class="p">],</span>
</span><span id="Obs-286"><a href="#Obs-286"><span class="linenos">286</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_rho</span><span class="p">[</span><span class="n">e_name</span><span class="p">][</span><span class="mi">1</span><span class="p">:</span><span class="nb">max</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="n">w_max</span> <span class="o">-</span> <span class="mi">2</span> <span class="o">*</span> <span class="n">i</span><span class="p">)]])</span>
</span><span id="Obs-287"><a href="#Obs-287"><span class="linenos">287</span></a> <span class="o">-</span> <span class="mi">2</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">e_rho</span><span class="p">[</span><span class="n">e_name</span><span class="p">][</span><span class="n">i</span><span class="p">]</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">e_rho</span><span class="p">[</span><span class="n">e_name</span><span class="p">][</span><span class="mi">1</span><span class="p">:</span><span class="n">w_max</span> <span class="o">-</span> <span class="n">i</span><span class="p">])</span>
</span><span id="Obs-288"><a href="#Obs-288"><span class="linenos">288</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_drho</span><span class="p">[</span><span class="n">e_name</span><span class="p">][</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">sum</span><span class="p">(</span><span class="n">tmp</span> <span class="o">**</span> <span class="mi">2</span><span class="p">)</span> <span class="o">/</span> <span class="n">e_N</span><span class="p">)</span>
</span><span id="Obs-289"><a href="#Obs-289"><span class="linenos">289</span></a>
</span><span id="Obs-290"><a href="#Obs-290"><span class="linenos">290</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">tau_exp</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
</span><span id="Obs-291"><a href="#Obs-291"><span class="linenos">291</span></a> <span class="n">_compute_drho</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span>
</span><span id="Obs-292"><a href="#Obs-292"><span class="linenos">292</span></a> <span class="n">texp</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">tau_exp</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span>
</span><span id="Obs-293"><a href="#Obs-293"><span class="linenos">293</span></a> <span class="c1"># Critical slowing down analysis</span>
</span><span id="Obs-294"><a href="#Obs-294"><span class="linenos">294</span></a> <span class="k">if</span> <span class="n">w_max</span> <span class="o">//</span> <span class="mi">2</span> <span class="o">&lt;=</span> <span class="mi">1</span><span class="p">:</span>
</span><span id="Obs-295"><a href="#Obs-295"><span class="linenos">295</span></a> <span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s2">&quot;Need at least 8 samples for tau_exp error analysis&quot;</span><span class="p">)</span>
</span><span id="Obs-296"><a href="#Obs-296"><span class="linenos">296</span></a> <span class="k">for</span> <span class="n">n</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="n">w_max</span> <span class="o">//</span> <span class="mi">2</span><span class="p">):</span>
</span><span id="Obs-297"><a href="#Obs-297"><span class="linenos">297</span></a> <span class="n">_compute_drho</span><span class="p">(</span><span class="n">n</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span>
</span><span id="Obs-298"><a href="#Obs-298"><span class="linenos">298</span></a> <span class="k">if</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">e_rho</span><span class="p">[</span><span class="n">e_name</span><span class="p">][</span><span class="n">n</span><span class="p">]</span> <span class="o">-</span> <span class="bp">self</span><span class="o">.</span><span class="n">N_sigma</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">e_drho</span><span class="p">[</span><span class="n">e_name</span><span class="p">][</span><span class="n">n</span><span class="p">])</span> <span class="o">&lt;</span> <span class="mi">0</span> <span class="ow">or</span> <span class="n">n</span> <span class="o">&gt;=</span> <span class="n">w_max</span> <span class="o">//</span> <span class="mi">2</span> <span class="o">-</span> <span class="mi">2</span><span class="p">:</span>
</span><span id="Obs-299"><a href="#Obs-299"><span class="linenos">299</span></a> <span class="c1"># Bias correction hep-lat/0306017 eq. (49) included</span>
</span><span id="Obs-300"><a href="#Obs-300"><span class="linenos">300</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_tauint</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">e_n_tauint</span><span class="p">[</span><span class="n">e_name</span><span class="p">][</span><span class="n">n</span><span class="p">]</span> <span class="o">*</span> <span class="p">(</span><span class="mi">1</span> <span class="o">+</span> <span class="p">(</span><span class="mi">2</span> <span class="o">*</span> <span class="n">n</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span> <span class="o">/</span> <span class="n">e_N</span><span class="p">)</span> <span class="o">/</span> <span class="p">(</span><span class="mi">1</span> <span class="o">+</span> <span class="mi">1</span> <span class="o">/</span> <span class="n">e_N</span><span class="p">)</span> <span class="o">+</span> <span class="n">texp</span> <span class="o">*</span> <span class="n">np</span><span class="o">.</span><span class="n">abs</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">e_rho</span><span class="p">[</span><span class="n">e_name</span><span class="p">][</span><span class="n">n</span> <span class="o">+</span> <span class="mi">1</span><span class="p">])</span> <span class="c1"># The absolute makes sure, that the tail contribution is always positive</span>
</span><span id="Obs-301"><a href="#Obs-301"><span class="linenos">301</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_dtauint</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">e_n_dtauint</span><span class="p">[</span><span class="n">e_name</span><span class="p">][</span><span class="n">n</span><span class="p">]</span> <span class="o">**</span> <span class="mi">2</span> <span class="o">+</span> <span class="n">texp</span> <span class="o">**</span> <span class="mi">2</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">e_drho</span><span class="p">[</span><span class="n">e_name</span><span class="p">][</span><span class="n">n</span> <span class="o">+</span> <span class="mi">1</span><span class="p">]</span> <span class="o">**</span> <span class="mi">2</span><span class="p">)</span>
</span><span id="Obs-302"><a href="#Obs-302"><span class="linenos">302</span></a> <span class="c1"># Error of tau_exp neglected so far, missing term: self.e_rho[e_name][n + 1] ** 2 * d_tau_exp ** 2</span>
</span><span id="Obs-303"><a href="#Obs-303"><span class="linenos">303</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_dvalue</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="mi">2</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">e_tauint</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">*</span> <span class="n">e_gamma</span><span class="p">[</span><span class="n">e_name</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span> <span class="o">*</span> <span class="p">(</span><span class="mi">1</span> <span class="o">+</span> <span class="mi">1</span> <span class="o">/</span> <span class="n">e_N</span><span class="p">)</span> <span class="o">/</span> <span class="n">e_N</span><span class="p">)</span>
</span><span id="Obs-304"><a href="#Obs-304"><span class="linenos">304</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_ddvalue</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">e_dvalue</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">*</span> <span class="n">np</span><span class="o">.</span><span class="n">sqrt</span><span class="p">((</span><span class="n">n</span> <span class="o">+</span> <span class="mf">0.5</span><span class="p">)</span> <span class="o">/</span> <span class="n">e_N</span><span class="p">)</span>
</span><span id="Obs-305"><a href="#Obs-305"><span class="linenos">305</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_windowsize</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">=</span> <span class="n">n</span>
</span><span id="Obs-306"><a href="#Obs-306"><span class="linenos">306</span></a> <span class="k">break</span>
</span><span id="Obs-307"><a href="#Obs-307"><span class="linenos">307</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="Obs-308"><a href="#Obs-308"><span class="linenos">308</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">S</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">==</span> <span class="mf">0.0</span><span class="p">:</span>
</span><span id="Obs-309"><a href="#Obs-309"><span class="linenos">309</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_tauint</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">=</span> <span class="mf">0.5</span>
</span><span id="Obs-310"><a href="#Obs-310"><span class="linenos">310</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_dtauint</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">=</span> <span class="mf">0.0</span>
</span><span id="Obs-311"><a href="#Obs-311"><span class="linenos">311</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_dvalue</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="n">e_gamma</span><span class="p">[</span><span class="n">e_name</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span> <span class="o">/</span> <span class="p">(</span><span class="n">e_N</span> <span class="o">-</span> <span class="mi">1</span><span class="p">))</span>
</span><span id="Obs-312"><a href="#Obs-312"><span class="linenos">312</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_ddvalue</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">e_dvalue</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">*</span> <span class="n">np</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="mf">0.5</span> <span class="o">/</span> <span class="n">e_N</span><span class="p">)</span>
</span><span id="Obs-313"><a href="#Obs-313"><span class="linenos">313</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_windowsize</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">=</span> <span class="mi">0</span>
</span><span id="Obs-314"><a href="#Obs-314"><span class="linenos">314</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="Obs-315"><a href="#Obs-315"><span class="linenos">315</span></a> <span class="c1"># Standard automatic windowing procedure</span>
</span><span id="Obs-316"><a href="#Obs-316"><span class="linenos">316</span></a> <span class="n">tau</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">S</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">/</span> <span class="n">np</span><span class="o">.</span><span class="n">log</span><span class="p">((</span><span class="mi">2</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">e_n_tauint</span><span class="p">[</span><span class="n">e_name</span><span class="p">][</span><span class="mi">1</span><span class="p">:]</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span> <span class="o">/</span> <span class="p">(</span><span class="mi">2</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">e_n_tauint</span><span class="p">[</span><span class="n">e_name</span><span class="p">][</span><span class="mi">1</span><span class="p">:]</span> <span class="o">-</span> <span class="mi">1</span><span class="p">))</span>
</span><span id="Obs-317"><a href="#Obs-317"><span class="linenos">317</span></a> <span class="n">g_w</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">exp</span><span class="p">(</span><span class="o">-</span> <span class="n">np</span><span class="o">.</span><span class="n">arange</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">tau</span><span class="p">)</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span> <span class="o">/</span> <span class="n">tau</span><span class="p">)</span> <span class="o">-</span> <span class="n">tau</span> <span class="o">/</span> <span class="n">np</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">arange</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">tau</span><span class="p">)</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span> <span class="o">*</span> <span class="n">e_N</span><span class="p">)</span>
</span><span id="Obs-318"><a href="#Obs-318"><span class="linenos">318</span></a> <span class="k">for</span> <span class="n">n</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="n">w_max</span><span class="p">):</span>
</span><span id="Obs-319"><a href="#Obs-319"><span class="linenos">319</span></a> <span class="k">if</span> <span class="n">g_w</span><span class="p">[</span><span class="n">n</span> <span class="o">-</span> <span class="mi">1</span><span class="p">]</span> <span class="o">&lt;</span> <span class="mi">0</span> <span class="ow">or</span> <span class="n">n</span> <span class="o">&gt;=</span> <span class="n">w_max</span> <span class="o">-</span> <span class="mi">1</span><span class="p">:</span>
</span><span id="Obs-320"><a href="#Obs-320"><span class="linenos">320</span></a> <span class="n">_compute_drho</span><span class="p">(</span><span class="n">n</span><span class="p">)</span>
</span><span id="Obs-321"><a href="#Obs-321"><span class="linenos">321</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_tauint</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">e_n_tauint</span><span class="p">[</span><span class="n">e_name</span><span class="p">][</span><span class="n">n</span><span class="p">]</span> <span class="o">*</span> <span class="p">(</span><span class="mi">1</span> <span class="o">+</span> <span class="p">(</span><span class="mi">2</span> <span class="o">*</span> <span class="n">n</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span> <span class="o">/</span> <span class="n">e_N</span><span class="p">)</span> <span class="o">/</span> <span class="p">(</span><span class="mi">1</span> <span class="o">+</span> <span class="mi">1</span> <span class="o">/</span> <span class="n">e_N</span><span class="p">)</span> <span class="c1"># Bias correction hep-lat/0306017 eq. (49)</span>
</span><span id="Obs-322"><a href="#Obs-322"><span class="linenos">322</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_dtauint</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">e_n_dtauint</span><span class="p">[</span><span class="n">e_name</span><span class="p">][</span><span class="n">n</span><span class="p">]</span>
</span><span id="Obs-323"><a href="#Obs-323"><span class="linenos">323</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_dvalue</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="mi">2</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">e_tauint</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">*</span> <span class="n">e_gamma</span><span class="p">[</span><span class="n">e_name</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span> <span class="o">*</span> <span class="p">(</span><span class="mi">1</span> <span class="o">+</span> <span class="mi">1</span> <span class="o">/</span> <span class="n">e_N</span><span class="p">)</span> <span class="o">/</span> <span class="n">e_N</span><span class="p">)</span>
</span><span id="Obs-324"><a href="#Obs-324"><span class="linenos">324</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_ddvalue</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">e_dvalue</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">*</span> <span class="n">np</span><span class="o">.</span><span class="n">sqrt</span><span class="p">((</span><span class="n">n</span> <span class="o">+</span> <span class="mf">0.5</span><span class="p">)</span> <span class="o">/</span> <span class="n">e_N</span><span class="p">)</span>
</span><span id="Obs-325"><a href="#Obs-325"><span class="linenos">325</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_windowsize</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">=</span> <span class="n">n</span>
</span><span id="Obs-326"><a href="#Obs-326"><span class="linenos">326</span></a> <span class="k">break</span>
</span><span id="Obs-327"><a href="#Obs-327"><span class="linenos">327</span></a>
</span><span id="Obs-328"><a href="#Obs-328"><span class="linenos">328</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_dvalue</span> <span class="o">+=</span> <span class="bp">self</span><span class="o">.</span><span class="n">e_dvalue</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">**</span> <span class="mi">2</span>
</span><span id="Obs-329"><a href="#Obs-329"><span class="linenos">329</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">ddvalue</span> <span class="o">+=</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">e_dvalue</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">e_ddvalue</span><span class="p">[</span><span class="n">e_name</span><span class="p">])</span> <span class="o">**</span> <span class="mi">2</span>
</span><span id="Obs-330"><a href="#Obs-330"><span class="linenos">330</span></a>
</span><span id="Obs-331"><a href="#Obs-331"><span class="linenos">331</span></a> <span class="k">for</span> <span class="n">e_name</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">cov_names</span><span class="p">:</span>
</span><span id="Obs-332"><a href="#Obs-332"><span class="linenos">332</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_dvalue</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">covobs</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span><span class="o">.</span><span class="n">errsq</span><span class="p">())</span>
</span><span id="Obs-333"><a href="#Obs-333"><span class="linenos">333</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_ddvalue</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">=</span> <span class="mi">0</span>
</span><span id="Obs-334"><a href="#Obs-334"><span class="linenos">334</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_dvalue</span> <span class="o">+=</span> <span class="bp">self</span><span class="o">.</span><span class="n">e_dvalue</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span><span class="o">**</span><span class="mi">2</span>
</span><span id="Obs-335"><a href="#Obs-335"><span class="linenos">335</span></a>
</span><span id="Obs-336"><a href="#Obs-336"><span class="linenos">336</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_dvalue</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_dvalue</span><span class="p">)</span>
</span><span id="Obs-337"><a href="#Obs-337"><span class="linenos">337</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_dvalue</span> <span class="o">==</span> <span class="mf">0.0</span><span class="p">:</span>
</span><span id="Obs-338"><a href="#Obs-338"><span class="linenos">338</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">ddvalue</span> <span class="o">=</span> <span class="mf">0.0</span>
</span><span id="Obs-339"><a href="#Obs-339"><span class="linenos">339</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="Obs-340"><a href="#Obs-340"><span class="linenos">340</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">ddvalue</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ddvalue</span><span class="p">)</span> <span class="o">/</span> <span class="bp">self</span><span class="o">.</span><span class="n">_dvalue</span>
</span><span id="Obs-341"><a href="#Obs-341"><span class="linenos">341</span></a> <span class="k">return</span>
</span><span id="Obs-342"><a href="#Obs-342"><span class="linenos">342</span></a>
</span><span id="Obs-343"><a href="#Obs-343"><span class="linenos">343</span></a> <span class="n">gm</span> <span class="o">=</span> <span class="n">gamma_method</span>
</span><span id="Obs-344"><a href="#Obs-344"><span class="linenos">344</span></a>
</span><span id="Obs-345"><a href="#Obs-345"><span class="linenos">345</span></a> <span class="k">def</span> <span class="nf">_calc_gamma</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">deltas</span><span class="p">,</span> <span class="n">idx</span><span class="p">,</span> <span class="n">shape</span><span class="p">,</span> <span class="n">w_max</span><span class="p">,</span> <span class="n">fft</span><span class="p">,</span> <span class="n">gapsize</span><span class="p">):</span>
</span><span id="Obs-346"><a href="#Obs-346"><span class="linenos">346</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Calculate Gamma_{AA} from the deltas, which are defined on idx.</span>
</span><span id="Obs-347"><a href="#Obs-347"><span class="linenos">347</span></a><span class="sd"> idx is assumed to be a contiguous range (possibly with a stepsize != 1)</span>
</span><span id="Obs-348"><a href="#Obs-348"><span class="linenos">348</span></a>
</span><span id="Obs-349"><a href="#Obs-349"><span class="linenos">349</span></a><span class="sd"> Parameters</span>
</span><span id="Obs-350"><a href="#Obs-350"><span class="linenos">350</span></a><span class="sd"> ----------</span>
</span><span id="Obs-351"><a href="#Obs-351"><span class="linenos">351</span></a><span class="sd"> deltas : list</span>
</span><span id="Obs-352"><a href="#Obs-352"><span class="linenos">352</span></a><span class="sd"> List of fluctuations</span>
</span><span id="Obs-353"><a href="#Obs-353"><span class="linenos">353</span></a><span class="sd"> idx : list</span>
</span><span id="Obs-354"><a href="#Obs-354"><span class="linenos">354</span></a><span class="sd"> List or range of configurations on which the deltas are defined.</span>
</span><span id="Obs-355"><a href="#Obs-355"><span class="linenos">355</span></a><span class="sd"> shape : int</span>
</span><span id="Obs-356"><a href="#Obs-356"><span class="linenos">356</span></a><span class="sd"> Number of configurations in idx.</span>
</span><span id="Obs-357"><a href="#Obs-357"><span class="linenos">357</span></a><span class="sd"> w_max : int</span>
</span><span id="Obs-358"><a href="#Obs-358"><span class="linenos">358</span></a><span class="sd"> Upper bound for the summation window.</span>
</span><span id="Obs-359"><a href="#Obs-359"><span class="linenos">359</span></a><span class="sd"> fft : bool</span>
</span><span id="Obs-360"><a href="#Obs-360"><span class="linenos">360</span></a><span class="sd"> determines whether the fft algorithm is used for the computation</span>
</span><span id="Obs-361"><a href="#Obs-361"><span class="linenos">361</span></a><span class="sd"> of the autocorrelation function.</span>
</span><span id="Obs-362"><a href="#Obs-362"><span class="linenos">362</span></a><span class="sd"> gapsize : int</span>
</span><span id="Obs-363"><a href="#Obs-363"><span class="linenos">363</span></a><span class="sd"> The target distance between two configurations. If longer distances</span>
</span><span id="Obs-364"><a href="#Obs-364"><span class="linenos">364</span></a><span class="sd"> are found in idx, the data is expanded.</span>
</span><span id="Obs-365"><a href="#Obs-365"><span class="linenos">365</span></a><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="Obs-366"><a href="#Obs-366"><span class="linenos">366</span></a> <span class="n">gamma</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">zeros</span><span class="p">(</span><span class="n">w_max</span><span class="p">)</span>
</span><span id="Obs-367"><a href="#Obs-367"><span class="linenos">367</span></a> <span class="n">deltas</span> <span class="o">=</span> <span class="n">_expand_deltas</span><span class="p">(</span><span class="n">deltas</span><span class="p">,</span> <span class="n">idx</span><span class="p">,</span> <span class="n">shape</span><span class="p">,</span> <span class="n">gapsize</span><span class="p">)</span>
</span><span id="Obs-368"><a href="#Obs-368"><span class="linenos">368</span></a> <span class="n">new_shape</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">deltas</span><span class="p">)</span>
</span><span id="Obs-369"><a href="#Obs-369"><span class="linenos">369</span></a> <span class="k">if</span> <span class="n">fft</span><span class="p">:</span>
</span><span id="Obs-370"><a href="#Obs-370"><span class="linenos">370</span></a> <span class="n">max_gamma</span> <span class="o">=</span> <span class="nb">min</span><span class="p">(</span><span class="n">new_shape</span><span class="p">,</span> <span class="n">w_max</span><span class="p">)</span>
</span><span id="Obs-371"><a href="#Obs-371"><span class="linenos">371</span></a> <span class="c1"># The padding for the fft has to be even</span>
</span><span id="Obs-372"><a href="#Obs-372"><span class="linenos">372</span></a> <span class="n">padding</span> <span class="o">=</span> <span class="n">new_shape</span> <span class="o">+</span> <span class="n">max_gamma</span> <span class="o">+</span> <span class="p">(</span><span class="n">new_shape</span> <span class="o">+</span> <span class="n">max_gamma</span><span class="p">)</span> <span class="o">%</span> <span class="mi">2</span>
</span><span id="Obs-373"><a href="#Obs-373"><span class="linenos">373</span></a> <span class="n">gamma</span><span class="p">[:</span><span class="n">max_gamma</span><span class="p">]</span> <span class="o">+=</span> <span class="n">np</span><span class="o">.</span><span class="n">fft</span><span class="o">.</span><span class="n">irfft</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">abs</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">fft</span><span class="o">.</span><span class="n">rfft</span><span class="p">(</span><span class="n">deltas</span><span class="p">,</span> <span class="n">padding</span><span class="p">))</span> <span class="o">**</span> <span class="mi">2</span><span class="p">)[:</span><span class="n">max_gamma</span><span class="p">]</span>
</span><span id="Obs-374"><a href="#Obs-374"><span class="linenos">374</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="Obs-375"><a href="#Obs-375"><span class="linenos">375</span></a> <span class="k">for</span> <span class="n">n</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">w_max</span><span class="p">):</span>
</span><span id="Obs-376"><a href="#Obs-376"><span class="linenos">376</span></a> <span class="k">if</span> <span class="n">new_shape</span> <span class="o">-</span> <span class="n">n</span> <span class="o">&gt;=</span> <span class="mi">0</span><span class="p">:</span>
</span><span id="Obs-377"><a href="#Obs-377"><span class="linenos">377</span></a> <span class="n">gamma</span><span class="p">[</span><span class="n">n</span><span class="p">]</span> <span class="o">+=</span> <span class="n">deltas</span><span class="p">[</span><span class="mi">0</span><span class="p">:</span><span class="n">new_shape</span> <span class="o">-</span> <span class="n">n</span><span class="p">]</span><span class="o">.</span><span class="n">dot</span><span class="p">(</span><span class="n">deltas</span><span class="p">[</span><span class="n">n</span><span class="p">:</span><span class="n">new_shape</span><span class="p">])</span>
</span><span id="Obs-378"><a href="#Obs-378"><span class="linenos">378</span></a>
</span><span id="Obs-379"><a href="#Obs-379"><span class="linenos">379</span></a> <span class="k">return</span> <span class="n">gamma</span>
</span><span id="Obs-380"><a href="#Obs-380"><span class="linenos">380</span></a>
</span><span id="Obs-381"><a href="#Obs-381"><span class="linenos">381</span></a> <span class="k">def</span> <span class="nf">details</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">ens_content</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
</span><span id="Obs-382"><a href="#Obs-382"><span class="linenos">382</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Output detailed properties of the Obs.</span>
</span><span id="Obs-383"><a href="#Obs-383"><span class="linenos">383</span></a>
</span><span id="Obs-384"><a href="#Obs-384"><span class="linenos">384</span></a><span class="sd"> Parameters</span>
</span><span id="Obs-385"><a href="#Obs-385"><span class="linenos">385</span></a><span class="sd"> ----------</span>
</span><span id="Obs-386"><a href="#Obs-386"><span class="linenos">386</span></a><span class="sd"> ens_content : bool</span>
</span><span id="Obs-387"><a href="#Obs-387"><span class="linenos">387</span></a><span class="sd"> print details about the ensembles and replica if true.</span>
</span><span id="Obs-388"><a href="#Obs-388"><span class="linenos">388</span></a><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="Obs-389"><a href="#Obs-389"><span class="linenos">389</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">tag</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
</span><span id="Obs-390"><a href="#Obs-390"><span class="linenos">390</span></a> <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;Description:&quot;</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
</span><span id="Obs-391"><a href="#Obs-391"><span class="linenos">391</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">hasattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s1">&#39;e_dvalue&#39;</span><span class="p">):</span>
</span><span id="Obs-392"><a href="#Obs-392"><span class="linenos">392</span></a> <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;Result</span><span class="se">\t</span><span class="s1"> </span><span class="si">%3.8e</span><span class="s1">&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">value</span><span class="p">))</span>
</span><span id="Obs-393"><a href="#Obs-393"><span class="linenos">393</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="Obs-394"><a href="#Obs-394"><span class="linenos">394</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">value</span> <span class="o">==</span> <span class="mf">0.0</span><span class="p">:</span>
</span><span id="Obs-395"><a href="#Obs-395"><span class="linenos">395</span></a> <span class="n">percentage</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">nan</span>
</span><span id="Obs-396"><a href="#Obs-396"><span class="linenos">396</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="Obs-397"><a href="#Obs-397"><span class="linenos">397</span></a> <span class="n">percentage</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">abs</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_dvalue</span> <span class="o">/</span> <span class="bp">self</span><span class="o">.</span><span class="n">value</span><span class="p">)</span> <span class="o">*</span> <span class="mi">100</span>
</span><span id="Obs-398"><a href="#Obs-398"><span class="linenos">398</span></a> <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;Result</span><span class="se">\t</span><span class="s1"> </span><span class="si">%3.8e</span><span class="s1"> +/- </span><span class="si">%3.8e</span><span class="s1"> +/- </span><span class="si">%3.8e</span><span class="s1"> (</span><span class="si">%3.3f%%</span><span class="s1">)&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">value</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_dvalue</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">ddvalue</span><span class="p">,</span> <span class="n">percentage</span><span class="p">))</span>
</span><span id="Obs-399"><a href="#Obs-399"><span class="linenos">399</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">e_names</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">1</span><span class="p">:</span>
</span><span id="Obs-400"><a href="#Obs-400"><span class="linenos">400</span></a> <span class="nb">print</span><span class="p">(</span><span class="s1">&#39; Ensemble errors:&#39;</span><span class="p">)</span>
</span><span id="Obs-401"><a href="#Obs-401"><span class="linenos">401</span></a> <span class="n">e_content</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">e_content</span>
</span><span id="Obs-402"><a href="#Obs-402"><span class="linenos">402</span></a> <span class="k">for</span> <span class="n">e_name</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">mc_names</span><span class="p">:</span>
</span><span id="Obs-403"><a href="#Obs-403"><span class="linenos">403</span></a> <span class="n">gap</span> <span class="o">=</span> <span class="n">_determine_gap</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">e_content</span><span class="p">,</span> <span class="n">e_name</span><span class="p">)</span>
</span><span id="Obs-404"><a href="#Obs-404"><span class="linenos">404</span></a>
</span><span id="Obs-405"><a href="#Obs-405"><span class="linenos">405</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">e_names</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">1</span><span class="p">:</span>
</span><span id="Obs-406"><a href="#Obs-406"><span class="linenos">406</span></a> <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;&#39;</span><span class="p">,</span> <span class="n">e_name</span><span class="p">,</span> <span class="s1">&#39;</span><span class="se">\t</span><span class="s1"> </span><span class="si">%3.6e</span><span class="s1"> +/- </span><span class="si">%3.6e</span><span class="s1">&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">e_dvalue</span><span class="p">[</span><span class="n">e_name</span><span class="p">],</span> <span class="bp">self</span><span class="o">.</span><span class="n">e_ddvalue</span><span class="p">[</span><span class="n">e_name</span><span class="p">]))</span>
</span><span id="Obs-407"><a href="#Obs-407"><span class="linenos">407</span></a> <span class="n">tau_string</span> <span class="o">=</span> <span class="s2">&quot; </span><span class="se">\N{GREEK SMALL LETTER TAU}</span><span class="s2">_int</span><span class="se">\t</span><span class="s2"> &quot;</span> <span class="o">+</span> <span class="n">_format_uncertainty</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">e_tauint</span><span class="p">[</span><span class="n">e_name</span><span class="p">],</span> <span class="bp">self</span><span class="o">.</span><span class="n">e_dtauint</span><span class="p">[</span><span class="n">e_name</span><span class="p">])</span>
</span><span id="Obs-408"><a href="#Obs-408"><span class="linenos">408</span></a> <span class="n">tau_string</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">&quot; in units of </span><span class="si">{</span><span class="n">gap</span><span class="si">}</span><span class="s2"> config&quot;</span>
</span><span id="Obs-409"><a href="#Obs-409"><span class="linenos">409</span></a> <span class="k">if</span> <span class="n">gap</span> <span class="o">&gt;</span> <span class="mi">1</span><span class="p">:</span>
</span><span id="Obs-410"><a href="#Obs-410"><span class="linenos">410</span></a> <span class="n">tau_string</span> <span class="o">+=</span> <span class="s2">&quot;s&quot;</span>
</span><span id="Obs-411"><a href="#Obs-411"><span class="linenos">411</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">tau_exp</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
</span><span id="Obs-412"><a href="#Obs-412"><span class="linenos">412</span></a> <span class="n">tau_string</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">tau_string</span><span class="si">:</span><span class="s2"> &lt;45</span><span class="si">}</span><span class="s2">&quot;</span> <span class="o">+</span> <span class="s1">&#39;</span><span class="se">\t</span><span class="s1">(</span><span class="se">\N{GREEK SMALL LETTER TAU}</span><span class="s1">_exp=</span><span class="si">%3.2f</span><span class="s1">, N_</span><span class="se">\N{GREEK SMALL LETTER SIGMA}</span><span class="s1">=</span><span class="si">%1.0i</span><span class="s1">)&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">tau_exp</span><span class="p">[</span><span class="n">e_name</span><span class="p">],</span> <span class="bp">self</span><span class="o">.</span><span class="n">N_sigma</span><span class="p">[</span><span class="n">e_name</span><span class="p">])</span>
</span><span id="Obs-413"><a href="#Obs-413"><span class="linenos">413</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="Obs-414"><a href="#Obs-414"><span class="linenos">414</span></a> <span class="n">tau_string</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">tau_string</span><span class="si">:</span><span class="s2"> &lt;45</span><span class="si">}</span><span class="s2">&quot;</span> <span class="o">+</span> <span class="s1">&#39;</span><span class="se">\t</span><span class="s1">(S=</span><span class="si">%3.2f</span><span class="s1">)&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">S</span><span class="p">[</span><span class="n">e_name</span><span class="p">])</span>
</span><span id="Obs-415"><a href="#Obs-415"><span class="linenos">415</span></a> <span class="nb">print</span><span class="p">(</span><span class="n">tau_string</span><span class="p">)</span>
</span><span id="Obs-416"><a href="#Obs-416"><span class="linenos">416</span></a> <span class="k">for</span> <span class="n">e_name</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">cov_names</span><span class="p">:</span>
</span><span id="Obs-417"><a href="#Obs-417"><span class="linenos">417</span></a> <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;&#39;</span><span class="p">,</span> <span class="n">e_name</span><span class="p">,</span> <span class="s1">&#39;</span><span class="se">\t</span><span class="s1"> </span><span class="si">%3.8e</span><span class="s1">&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">e_dvalue</span><span class="p">[</span><span class="n">e_name</span><span class="p">]))</span>
</span><span id="Obs-418"><a href="#Obs-418"><span class="linenos">418</span></a> <span class="k">if</span> <span class="n">ens_content</span> <span class="ow">is</span> <span class="kc">True</span><span class="p">:</span>
</span><span id="Obs-419"><a href="#Obs-419"><span class="linenos">419</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">e_names</span><span class="p">)</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span>
</span><span id="Obs-420"><a href="#Obs-420"><span class="linenos">420</span></a> <span class="nb">print</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">N</span><span class="p">,</span> <span class="s1">&#39;samples in&#39;</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">e_names</span><span class="p">),</span> <span class="s1">&#39;ensemble:&#39;</span><span class="p">)</span>
</span><span id="Obs-421"><a href="#Obs-421"><span class="linenos">421</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="Obs-422"><a href="#Obs-422"><span class="linenos">422</span></a> <span class="nb">print</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">N</span><span class="p">,</span> <span class="s1">&#39;samples in&#39;</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">e_names</span><span class="p">),</span> <span class="s1">&#39;ensembles:&#39;</span><span class="p">)</span>
</span><span id="Obs-423"><a href="#Obs-423"><span class="linenos">423</span></a> <span class="n">my_string_list</span> <span class="o">=</span> <span class="p">[]</span>
</span><span id="Obs-424"><a href="#Obs-424"><span class="linenos">424</span></a> <span class="k">for</span> <span class="n">key</span><span class="p">,</span> <span class="n">value</span> <span class="ow">in</span> <span class="nb">sorted</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">e_content</span><span class="o">.</span><span class="n">items</span><span class="p">()):</span>
</span><span id="Obs-425"><a href="#Obs-425"><span class="linenos">425</span></a> <span class="k">if</span> <span class="n">key</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">covobs</span><span class="p">:</span>
</span><span id="Obs-426"><a href="#Obs-426"><span class="linenos">426</span></a> <span class="n">my_string</span> <span class="o">=</span> <span class="s1">&#39; &#39;</span> <span class="o">+</span> <span class="s2">&quot;</span><span class="se">\u00B7</span><span class="s2"> Ensemble &#39;&quot;</span> <span class="o">+</span> <span class="n">key</span> <span class="o">+</span> <span class="s2">&quot;&#39; &quot;</span>
</span><span id="Obs-427"><a href="#Obs-427"><span class="linenos">427</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">value</span><span class="p">)</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span>
</span><span id="Obs-428"><a href="#Obs-428"><span class="linenos">428</span></a> <span class="n">my_string</span> <span class="o">+=</span> <span class="sa">f</span><span class="s1">&#39;: </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="n">value</span><span class="p">[</span><span class="mi">0</span><span class="p">]]</span><span class="si">}</span><span class="s1"> configurations&#39;</span>
</span><span id="Obs-429"><a href="#Obs-429"><span class="linenos">429</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">idl</span><span class="p">[</span><span class="n">value</span><span class="p">[</span><span class="mi">0</span><span class="p">]],</span> <span class="nb">range</span><span class="p">):</span>
</span><span id="Obs-430"><a href="#Obs-430"><span class="linenos">430</span></a> <span class="n">my_string</span> <span class="o">+=</span> <span class="sa">f</span><span class="s1">&#39; (from </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">idl</span><span class="p">[</span><span class="n">value</span><span class="p">[</span><span class="mi">0</span><span class="p">]]</span><span class="o">.</span><span class="n">start</span><span class="si">}</span><span class="s1"> to </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">idl</span><span class="p">[</span><span class="n">value</span><span class="p">[</span><span class="mi">0</span><span class="p">]][</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span><span class="si">}</span><span class="s1">&#39;</span> <span class="o">+</span> <span class="nb">int</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">idl</span><span class="p">[</span><span class="n">value</span><span class="p">[</span><span class="mi">0</span><span class="p">]]</span><span class="o">.</span><span class="n">step</span> <span class="o">!=</span> <span class="mi">1</span><span class="p">)</span> <span class="o">*</span> <span class="sa">f</span><span class="s1">&#39; in steps of </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">idl</span><span class="p">[</span><span class="n">value</span><span class="p">[</span><span class="mi">0</span><span class="p">]]</span><span class="o">.</span><span class="n">step</span><span class="si">}</span><span class="s1">&#39;</span> <span class="o">+</span> <span class="s1">&#39;)&#39;</span>
</span><span id="Obs-431"><a href="#Obs-431"><span class="linenos">431</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="Obs-432"><a href="#Obs-432"><span class="linenos">432</span></a> <span class="n">my_string</span> <span class="o">+=</span> <span class="sa">f</span><span class="s1">&#39; (irregular range from </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">idl</span><span class="p">[</span><span class="n">value</span><span class="p">[</span><span class="mi">0</span><span class="p">]][</span><span class="mi">0</span><span class="p">]</span><span class="si">}</span><span class="s1"> to </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">idl</span><span class="p">[</span><span class="n">value</span><span class="p">[</span><span class="mi">0</span><span class="p">]][</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span><span class="si">}</span><span class="s1">)&#39;</span>
</span><span id="Obs-433"><a href="#Obs-433"><span class="linenos">433</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="Obs-434"><a href="#Obs-434"><span class="linenos">434</span></a> <span class="n">sublist</span> <span class="o">=</span> <span class="p">[]</span>
</span><span id="Obs-435"><a href="#Obs-435"><span class="linenos">435</span></a> <span class="k">for</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">value</span><span class="p">:</span>
</span><span id="Obs-436"><a href="#Obs-436"><span class="linenos">436</span></a> <span class="n">my_substring</span> <span class="o">=</span> <span class="s1">&#39; &#39;</span> <span class="o">+</span> <span class="s2">&quot;</span><span class="se">\u00B7</span><span class="s2"> Replicum &#39;&quot;</span> <span class="o">+</span> <span class="n">v</span><span class="p">[</span><span class="nb">len</span><span class="p">(</span><span class="n">key</span><span class="p">)</span> <span class="o">+</span> <span class="mi">1</span><span class="p">:]</span> <span class="o">+</span> <span class="s2">&quot;&#39; &quot;</span>
</span><span id="Obs-437"><a href="#Obs-437"><span class="linenos">437</span></a> <span class="n">my_substring</span> <span class="o">+=</span> <span class="sa">f</span><span class="s1">&#39;: </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="n">v</span><span class="p">]</span><span class="si">}</span><span class="s1"> configurations&#39;</span>
</span><span id="Obs-438"><a href="#Obs-438"><span class="linenos">438</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">idl</span><span class="p">[</span><span class="n">v</span><span class="p">],</span> <span class="nb">range</span><span class="p">):</span>
</span><span id="Obs-439"><a href="#Obs-439"><span class="linenos">439</span></a> <span class="n">my_substring</span> <span class="o">+=</span> <span class="sa">f</span><span class="s1">&#39; (from </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">idl</span><span class="p">[</span><span class="n">v</span><span class="p">]</span><span class="o">.</span><span class="n">start</span><span class="si">}</span><span class="s1"> to </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">idl</span><span class="p">[</span><span class="n">v</span><span class="p">][</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span><span class="si">}</span><span class="s1">&#39;</span> <span class="o">+</span> <span class="nb">int</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">idl</span><span class="p">[</span><span class="n">v</span><span class="p">]</span><span class="o">.</span><span class="n">step</span> <span class="o">!=</span> <span class="mi">1</span><span class="p">)</span> <span class="o">*</span> <span class="sa">f</span><span class="s1">&#39; in steps of </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">idl</span><span class="p">[</span><span class="n">v</span><span class="p">]</span><span class="o">.</span><span class="n">step</span><span class="si">}</span><span class="s1">&#39;</span> <span class="o">+</span> <span class="s1">&#39;)&#39;</span>
</span><span id="Obs-440"><a href="#Obs-440"><span class="linenos">440</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="Obs-441"><a href="#Obs-441"><span class="linenos">441</span></a> <span class="n">my_substring</span> <span class="o">+=</span> <span class="sa">f</span><span class="s1">&#39; (irregular range from </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">idl</span><span class="p">[</span><span class="n">v</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span><span class="si">}</span><span class="s1"> to </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">idl</span><span class="p">[</span><span class="n">v</span><span class="p">][</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span><span class="si">}</span><span class="s1">)&#39;</span>
</span><span id="Obs-442"><a href="#Obs-442"><span class="linenos">442</span></a> <span class="n">sublist</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">my_substring</span><span class="p">)</span>
</span><span id="Obs-443"><a href="#Obs-443"><span class="linenos">443</span></a>
</span><span id="Obs-444"><a href="#Obs-444"><span class="linenos">444</span></a> <span class="n">my_string</span> <span class="o">+=</span> <span class="s1">&#39;</span><span class="se">\n</span><span class="s1">&#39;</span> <span class="o">+</span> <span class="s1">&#39;</span><span class="se">\n</span><span class="s1">&#39;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">sublist</span><span class="p">)</span>
</span><span id="Obs-445"><a href="#Obs-445"><span class="linenos">445</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="Obs-446"><a href="#Obs-446"><span class="linenos">446</span></a> <span class="n">my_string</span> <span class="o">=</span> <span class="s1">&#39; &#39;</span> <span class="o">+</span> <span class="s2">&quot;</span><span class="se">\u00B7</span><span class="s2"> Covobs &#39;&quot;</span> <span class="o">+</span> <span class="n">key</span> <span class="o">+</span> <span class="s2">&quot;&#39; &quot;</span>
</span><span id="Obs-447"><a href="#Obs-447"><span class="linenos">447</span></a> <span class="n">my_string_list</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">my_string</span><span class="p">)</span>
</span><span id="Obs-448"><a href="#Obs-448"><span class="linenos">448</span></a> <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">&#39;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">my_string_list</span><span class="p">))</span>
</span><span id="Obs-449"><a href="#Obs-449"><span class="linenos">449</span></a>
</span><span id="Obs-450"><a href="#Obs-450"><span class="linenos">450</span></a> <span class="k">def</span> <span class="nf">reweight</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">weight</span><span class="p">):</span>
</span><span id="Obs-451"><a href="#Obs-451"><span class="linenos">451</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Reweight the obs with given rewighting factors.</span>
</span><span id="Obs-452"><a href="#Obs-452"><span class="linenos">452</span></a>
</span><span id="Obs-453"><a href="#Obs-453"><span class="linenos">453</span></a><span class="sd"> Parameters</span>
</span><span id="Obs-454"><a href="#Obs-454"><span class="linenos">454</span></a><span class="sd"> ----------</span>
</span><span id="Obs-455"><a href="#Obs-455"><span class="linenos">455</span></a><span class="sd"> weight : Obs</span>
</span><span id="Obs-456"><a href="#Obs-456"><span class="linenos">456</span></a><span class="sd"> Reweighting factor. An Observable that has to be defined on a superset of the</span>
</span><span id="Obs-457"><a href="#Obs-457"><span class="linenos">457</span></a><span class="sd"> configurations in obs[i].idl for all i.</span>
</span><span id="Obs-458"><a href="#Obs-458"><span class="linenos">458</span></a><span class="sd"> all_configs : bool</span>
</span><span id="Obs-459"><a href="#Obs-459"><span class="linenos">459</span></a><span class="sd"> if True, the reweighted observables are normalized by the average of</span>
</span><span id="Obs-460"><a href="#Obs-460"><span class="linenos">460</span></a><span class="sd"> the reweighting factor on all configurations in weight.idl and not</span>
</span><span id="Obs-461"><a href="#Obs-461"><span class="linenos">461</span></a><span class="sd"> on the configurations in obs[i].idl. Default False.</span>
</span><span id="Obs-462"><a href="#Obs-462"><span class="linenos">462</span></a><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="Obs-463"><a href="#Obs-463"><span class="linenos">463</span></a> <span class="k">return</span> <span class="n">reweight</span><span class="p">(</span><span class="n">weight</span><span class="p">,</span> <span class="p">[</span><span class="bp">self</span><span class="p">])[</span><span class="mi">0</span><span class="p">]</span>
</span><span id="Obs-464"><a href="#Obs-464"><span class="linenos">464</span></a>
</span><span id="Obs-465"><a href="#Obs-465"><span class="linenos">465</span></a> <span class="k">def</span> <span class="nf">is_zero_within_error</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">sigma</span><span class="o">=</span><span class="mi">1</span><span class="p">):</span>
</span><span id="Obs-466"><a href="#Obs-466"><span class="linenos">466</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Checks whether the observable is zero within &#39;sigma&#39; standard errors.</span>
</span><span id="Obs-467"><a href="#Obs-467"><span class="linenos">467</span></a>
</span><span id="Obs-468"><a href="#Obs-468"><span class="linenos">468</span></a><span class="sd"> Parameters</span>
</span><span id="Obs-469"><a href="#Obs-469"><span class="linenos">469</span></a><span class="sd"> ----------</span>
</span><span id="Obs-470"><a href="#Obs-470"><span class="linenos">470</span></a><span class="sd"> sigma : int</span>
</span><span id="Obs-471"><a href="#Obs-471"><span class="linenos">471</span></a><span class="sd"> Number of standard errors used for the check.</span>
</span><span id="Obs-472"><a href="#Obs-472"><span class="linenos">472</span></a>
</span><span id="Obs-473"><a href="#Obs-473"><span class="linenos">473</span></a><span class="sd"> Works only properly when the gamma method was run.</span>
</span><span id="Obs-474"><a href="#Obs-474"><span class="linenos">474</span></a><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="Obs-475"><a href="#Obs-475"><span class="linenos">475</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_zero</span><span class="p">()</span> <span class="ow">or</span> <span class="n">np</span><span class="o">.</span><span class="n">abs</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">value</span><span class="p">)</span> <span class="o">&lt;=</span> <span class="n">sigma</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">_dvalue</span>
</span><span id="Obs-476"><a href="#Obs-476"><span class="linenos">476</span></a>
</span><span id="Obs-477"><a href="#Obs-477"><span class="linenos">477</span></a> <span class="k">def</span> <span class="nf">is_zero</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">atol</span><span class="o">=</span><span class="mf">1e-10</span><span class="p">):</span>
</span><span id="Obs-478"><a href="#Obs-478"><span class="linenos">478</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Checks whether the observable is zero within a given tolerance.</span>
</span><span id="Obs-479"><a href="#Obs-479"><span class="linenos">479</span></a>
</span><span id="Obs-480"><a href="#Obs-480"><span class="linenos">480</span></a><span class="sd"> Parameters</span>
</span><span id="Obs-481"><a href="#Obs-481"><span class="linenos">481</span></a><span class="sd"> ----------</span>
</span><span id="Obs-482"><a href="#Obs-482"><span class="linenos">482</span></a><span class="sd"> atol : float</span>
</span><span id="Obs-483"><a href="#Obs-483"><span class="linenos">483</span></a><span class="sd"> Absolute tolerance (for details see numpy documentation).</span>
</span><span id="Obs-484"><a href="#Obs-484"><span class="linenos">484</span></a><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="Obs-485"><a href="#Obs-485"><span class="linenos">485</span></a> <span class="k">return</span> <span class="n">np</span><span class="o">.</span><span class="n">isclose</span><span class="p">(</span><span class="mf">0.0</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">value</span><span class="p">,</span> <span class="mf">1e-14</span><span class="p">,</span> <span class="n">atol</span><span class="p">)</span> <span class="ow">and</span> <span class="nb">all</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">allclose</span><span class="p">(</span><span class="mf">0.0</span><span class="p">,</span> <span class="n">delta</span><span class="p">,</span> <span class="mf">1e-14</span><span class="p">,</span> <span class="n">atol</span><span class="p">)</span> <span class="k">for</span> <span class="n">delta</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">deltas</span><span class="o">.</span><span class="n">values</span><span class="p">())</span> <span class="ow">and</span> <span class="nb">all</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">allclose</span><span class="p">(</span><span class="mf">0.0</span><span class="p">,</span> <span class="n">delta</span><span class="o">.</span><span class="n">errsq</span><span class="p">(),</span> <span class="mf">1e-14</span><span class="p">,</span> <span class="n">atol</span><span class="p">)</span> <span class="k">for</span> <span class="n">delta</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">covobs</span><span class="o">.</span><span class="n">values</span><span class="p">())</span>
</span><span id="Obs-486"><a href="#Obs-486"><span class="linenos">486</span></a>
</span><span id="Obs-487"><a href="#Obs-487"><span class="linenos">487</span></a> <span class="k">def</span> <span class="nf">plot_tauint</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">save</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
</span><span id="Obs-488"><a href="#Obs-488"><span class="linenos">488</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Plot integrated autocorrelation time for each ensemble.</span>
</span><span id="Obs-489"><a href="#Obs-489"><span class="linenos">489</span></a>
</span><span id="Obs-490"><a href="#Obs-490"><span class="linenos">490</span></a><span class="sd"> Parameters</span>
</span><span id="Obs-491"><a href="#Obs-491"><span class="linenos">491</span></a><span class="sd"> ----------</span>
</span><span id="Obs-492"><a href="#Obs-492"><span class="linenos">492</span></a><span class="sd"> save : str</span>
</span><span id="Obs-493"><a href="#Obs-493"><span class="linenos">493</span></a><span class="sd"> saves the figure to a file named &#39;save&#39; if.</span>
</span><span id="Obs-494"><a href="#Obs-494"><span class="linenos">494</span></a><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="Obs-495"><a href="#Obs-495"><span class="linenos">495</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">hasattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s1">&#39;e_dvalue&#39;</span><span class="p">):</span>
</span><span id="Obs-496"><a href="#Obs-496"><span class="linenos">496</span></a> <span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s1">&#39;Run the gamma method first.&#39;</span><span class="p">)</span>
</span><span id="Obs-497"><a href="#Obs-497"><span class="linenos">497</span></a>
</span><span id="Obs-498"><a href="#Obs-498"><span class="linenos">498</span></a> <span class="k">for</span> <span class="n">e</span><span class="p">,</span> <span class="n">e_name</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">mc_names</span><span class="p">):</span>
</span><span id="Obs-499"><a href="#Obs-499"><span class="linenos">499</span></a> <span class="n">fig</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">figure</span><span class="p">()</span>
</span><span id="Obs-500"><a href="#Obs-500"><span class="linenos">500</span></a> <span class="n">plt</span><span class="o">.</span><span class="n">xlabel</span><span class="p">(</span><span class="sa">r</span><span class="s1">&#39;$W$&#39;</span><span class="p">)</span>
</span><span id="Obs-501"><a href="#Obs-501"><span class="linenos">501</span></a> <span class="n">plt</span><span class="o">.</span><span class="n">ylabel</span><span class="p">(</span><span class="sa">r</span><span class="s1">&#39;$\tau_\mathrm</span><span class="si">{int}</span><span class="s1">$&#39;</span><span class="p">)</span>
</span><span id="Obs-502"><a href="#Obs-502"><span class="linenos">502</span></a> <span class="n">length</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">e_n_tauint</span><span class="p">[</span><span class="n">e_name</span><span class="p">]))</span>
</span><span id="Obs-503"><a href="#Obs-503"><span class="linenos">503</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">tau_exp</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
</span><span id="Obs-504"><a href="#Obs-504"><span class="linenos">504</span></a> <span class="n">base</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">e_n_tauint</span><span class="p">[</span><span class="n">e_name</span><span class="p">][</span><span class="bp">self</span><span class="o">.</span><span class="n">e_windowsize</span><span class="p">[</span><span class="n">e_name</span><span class="p">]]</span>
</span><span id="Obs-505"><a href="#Obs-505"><span class="linenos">505</span></a> <span class="n">x_help</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">arange</span><span class="p">(</span><span class="mi">2</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">tau_exp</span><span class="p">[</span><span class="n">e_name</span><span class="p">])</span>
</span><span id="Obs-506"><a href="#Obs-506"><span class="linenos">506</span></a> <span class="n">y_help</span> <span class="o">=</span> <span class="p">(</span><span class="n">x_help</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span> <span class="o">*</span> <span class="n">np</span><span class="o">.</span><span class="n">abs</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">e_rho</span><span class="p">[</span><span class="n">e_name</span><span class="p">][</span><span class="bp">self</span><span class="o">.</span><span class="n">e_windowsize</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">+</span> <span class="mi">1</span><span class="p">])</span> <span class="o">*</span> <span class="p">(</span><span class="mi">1</span> <span class="o">-</span> <span class="n">x_help</span> <span class="o">/</span> <span class="p">(</span><span class="mi">2</span> <span class="o">*</span> <span class="p">(</span><span class="mi">2</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">tau_exp</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)))</span> <span class="o">+</span> <span class="n">base</span>
</span><span id="Obs-507"><a href="#Obs-507"><span class="linenos">507</span></a> <span class="n">x_arr</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">arange</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">e_windowsize</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">+</span> <span class="mi">1</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">e_windowsize</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">+</span> <span class="mi">1</span> <span class="o">+</span> <span class="mi">2</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">tau_exp</span><span class="p">[</span><span class="n">e_name</span><span class="p">])</span>
</span><span id="Obs-508"><a href="#Obs-508"><span class="linenos">508</span></a> <span class="n">plt</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">x_arr</span><span class="p">,</span> <span class="n">y_help</span><span class="p">,</span> <span class="s1">&#39;C&#39;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">e</span><span class="p">),</span> <span class="n">linewidth</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">ls</span><span class="o">=</span><span class="s1">&#39;--&#39;</span><span class="p">,</span> <span class="n">marker</span><span class="o">=</span><span class="s1">&#39;,&#39;</span><span class="p">)</span>
</span><span id="Obs-509"><a href="#Obs-509"><span class="linenos">509</span></a> <span class="n">plt</span><span class="o">.</span><span class="n">errorbar</span><span class="p">([</span><span class="bp">self</span><span class="o">.</span><span class="n">e_windowsize</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">+</span> <span class="mi">2</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">tau_exp</span><span class="p">[</span><span class="n">e_name</span><span class="p">]],</span> <span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">e_tauint</span><span class="p">[</span><span class="n">e_name</span><span class="p">]],</span>
</span><span id="Obs-510"><a href="#Obs-510"><span class="linenos">510</span></a> <span class="n">yerr</span><span class="o">=</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">e_dtauint</span><span class="p">[</span><span class="n">e_name</span><span class="p">]],</span> <span class="n">fmt</span><span class="o">=</span><span class="s1">&#39;C&#39;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">e</span><span class="p">),</span> <span class="n">linewidth</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">capsize</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span> <span class="n">marker</span><span class="o">=</span><span class="s1">&#39;o&#39;</span><span class="p">,</span> <span class="n">mfc</span><span class="o">=</span><span class="n">plt</span><span class="o">.</span><span class="n">rcParams</span><span class="p">[</span><span class="s1">&#39;axes.facecolor&#39;</span><span class="p">])</span>
</span><span id="Obs-511"><a href="#Obs-511"><span class="linenos">511</span></a> <span class="n">xmax</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">e_windowsize</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">+</span> <span class="mi">2</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">tau_exp</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">+</span> <span class="mf">1.5</span>
</span><span id="Obs-512"><a href="#Obs-512"><span class="linenos">512</span></a> <span class="n">label</span> <span class="o">=</span> <span class="n">e_name</span> <span class="o">+</span> <span class="sa">r</span><span class="s1">&#39;, $\tau_\mathrm</span><span class="si">{exp}</span><span class="s1">$=&#39;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">around</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">tau_exp</span><span class="p">[</span><span class="n">e_name</span><span class="p">],</span> <span class="n">decimals</span><span class="o">=</span><span class="mi">2</span><span class="p">))</span>
</span><span id="Obs-513"><a href="#Obs-513"><span class="linenos">513</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="Obs-514"><a href="#Obs-514"><span class="linenos">514</span></a> <span class="n">label</span> <span class="o">=</span> <span class="n">e_name</span> <span class="o">+</span> <span class="s1">&#39;, S=&#39;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">around</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">S</span><span class="p">[</span><span class="n">e_name</span><span class="p">],</span> <span class="n">decimals</span><span class="o">=</span><span class="mi">2</span><span class="p">))</span>
</span><span id="Obs-515"><a href="#Obs-515"><span class="linenos">515</span></a> <span class="n">xmax</span> <span class="o">=</span> <span class="nb">max</span><span class="p">(</span><span class="mf">10.5</span><span class="p">,</span> <span class="mi">2</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">e_windowsize</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">-</span> <span class="mf">0.5</span><span class="p">)</span>
</span><span id="Obs-516"><a href="#Obs-516"><span class="linenos">516</span></a>
</span><span id="Obs-517"><a href="#Obs-517"><span class="linenos">517</span></a> <span class="n">plt</span><span class="o">.</span><span class="n">errorbar</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">arange</span><span class="p">(</span><span class="n">length</span><span class="p">)[:</span><span class="nb">int</span><span class="p">(</span><span class="n">xmax</span><span class="p">)</span> <span class="o">+</span> <span class="mi">1</span><span class="p">],</span> <span class="bp">self</span><span class="o">.</span><span class="n">e_n_tauint</span><span class="p">[</span><span class="n">e_name</span><span class="p">][:</span><span class="nb">int</span><span class="p">(</span><span class="n">xmax</span><span class="p">)</span> <span class="o">+</span> <span class="mi">1</span><span class="p">],</span> <span class="n">yerr</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">e_n_dtauint</span><span class="p">[</span><span class="n">e_name</span><span class="p">][:</span><span class="nb">int</span><span class="p">(</span><span class="n">xmax</span><span class="p">)</span> <span class="o">+</span> <span class="mi">1</span><span class="p">],</span> <span class="n">linewidth</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">capsize</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span> <span class="n">label</span><span class="o">=</span><span class="n">label</span><span class="p">)</span>
</span><span id="Obs-518"><a href="#Obs-518"><span class="linenos">518</span></a> <span class="n">plt</span><span class="o">.</span><span class="n">axvline</span><span class="p">(</span><span class="n">x</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">e_windowsize</span><span class="p">[</span><span class="n">e_name</span><span class="p">],</span> <span class="n">color</span><span class="o">=</span><span class="s1">&#39;C&#39;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">e</span><span class="p">),</span> <span class="n">alpha</span><span class="o">=</span><span class="mf">0.5</span><span class="p">,</span> <span class="n">marker</span><span class="o">=</span><span class="s1">&#39;,&#39;</span><span class="p">,</span> <span class="n">ls</span><span class="o">=</span><span class="s1">&#39;--&#39;</span><span class="p">)</span>
</span><span id="Obs-519"><a href="#Obs-519"><span class="linenos">519</span></a> <span class="n">plt</span><span class="o">.</span><span class="n">legend</span><span class="p">()</span>
</span><span id="Obs-520"><a href="#Obs-520"><span class="linenos">520</span></a> <span class="n">plt</span><span class="o">.</span><span class="n">xlim</span><span class="p">(</span><span class="o">-</span><span class="mf">0.5</span><span class="p">,</span> <span class="n">xmax</span><span class="p">)</span>
</span><span id="Obs-521"><a href="#Obs-521"><span class="linenos">521</span></a> <span class="n">ylim</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">ylim</span><span class="p">()</span>
</span><span id="Obs-522"><a href="#Obs-522"><span class="linenos">522</span></a> <span class="n">plt</span><span class="o">.</span><span class="n">ylim</span><span class="p">(</span><span class="n">bottom</span><span class="o">=</span><span class="mf">0.0</span><span class="p">,</span> <span class="n">top</span><span class="o">=</span><span class="nb">max</span><span class="p">(</span><span class="mf">1.0</span><span class="p">,</span> <span class="n">ylim</span><span class="p">[</span><span class="mi">1</span><span class="p">]))</span>
</span><span id="Obs-523"><a href="#Obs-523"><span class="linenos">523</span></a> <span class="n">plt</span><span class="o">.</span><span class="n">draw</span><span class="p">()</span>
</span><span id="Obs-524"><a href="#Obs-524"><span class="linenos">524</span></a> <span class="k">if</span> <span class="n">save</span><span class="p">:</span>
</span><span id="Obs-525"><a href="#Obs-525"><span class="linenos">525</span></a> <span class="n">fig</span><span class="o">.</span><span class="n">savefig</span><span class="p">(</span><span class="n">save</span> <span class="o">+</span> <span class="s2">&quot;_&quot;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">e</span><span class="p">))</span>
</span><span id="Obs-526"><a href="#Obs-526"><span class="linenos">526</span></a>
</span><span id="Obs-527"><a href="#Obs-527"><span class="linenos">527</span></a> <span class="k">def</span> <span class="nf">plot_rho</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">save</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
</span><span id="Obs-528"><a href="#Obs-528"><span class="linenos">528</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Plot normalized autocorrelation function time for each ensemble.</span>
</span><span id="Obs-529"><a href="#Obs-529"><span class="linenos">529</span></a>
</span><span id="Obs-530"><a href="#Obs-530"><span class="linenos">530</span></a><span class="sd"> Parameters</span>
</span><span id="Obs-531"><a href="#Obs-531"><span class="linenos">531</span></a><span class="sd"> ----------</span>
</span><span id="Obs-532"><a href="#Obs-532"><span class="linenos">532</span></a><span class="sd"> save : str</span>
</span><span id="Obs-533"><a href="#Obs-533"><span class="linenos">533</span></a><span class="sd"> saves the figure to a file named &#39;save&#39; if.</span>
</span><span id="Obs-534"><a href="#Obs-534"><span class="linenos">534</span></a><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="Obs-535"><a href="#Obs-535"><span class="linenos">535</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">hasattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s1">&#39;e_dvalue&#39;</span><span class="p">):</span>
</span><span id="Obs-536"><a href="#Obs-536"><span class="linenos">536</span></a> <span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s1">&#39;Run the gamma method first.&#39;</span><span class="p">)</span>
</span><span id="Obs-537"><a href="#Obs-537"><span class="linenos">537</span></a> <span class="k">for</span> <span class="n">e</span><span class="p">,</span> <span class="n">e_name</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">mc_names</span><span class="p">):</span>
</span><span id="Obs-538"><a href="#Obs-538"><span class="linenos">538</span></a> <span class="n">fig</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">figure</span><span class="p">()</span>
</span><span id="Obs-539"><a href="#Obs-539"><span class="linenos">539</span></a> <span class="n">plt</span><span class="o">.</span><span class="n">xlabel</span><span class="p">(</span><span class="s1">&#39;W&#39;</span><span class="p">)</span>
</span><span id="Obs-540"><a href="#Obs-540"><span class="linenos">540</span></a> <span class="n">plt</span><span class="o">.</span><span class="n">ylabel</span><span class="p">(</span><span class="s1">&#39;rho&#39;</span><span class="p">)</span>
</span><span id="Obs-541"><a href="#Obs-541"><span class="linenos">541</span></a> <span class="n">length</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">e_drho</span><span class="p">[</span><span class="n">e_name</span><span class="p">]))</span>
</span><span id="Obs-542"><a href="#Obs-542"><span class="linenos">542</span></a> <span class="n">plt</span><span class="o">.</span><span class="n">errorbar</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">arange</span><span class="p">(</span><span class="n">length</span><span class="p">),</span> <span class="bp">self</span><span class="o">.</span><span class="n">e_rho</span><span class="p">[</span><span class="n">e_name</span><span class="p">][:</span><span class="n">length</span><span class="p">],</span> <span class="n">yerr</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">e_drho</span><span class="p">[</span><span class="n">e_name</span><span class="p">][:],</span> <span class="n">linewidth</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">capsize</span><span class="o">=</span><span class="mi">2</span><span class="p">)</span>
</span><span id="Obs-543"><a href="#Obs-543"><span class="linenos">543</span></a> <span class="n">plt</span><span class="o">.</span><span class="n">axvline</span><span class="p">(</span><span class="n">x</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">e_windowsize</span><span class="p">[</span><span class="n">e_name</span><span class="p">],</span> <span class="n">color</span><span class="o">=</span><span class="s1">&#39;r&#39;</span><span class="p">,</span> <span class="n">alpha</span><span class="o">=</span><span class="mf">0.25</span><span class="p">,</span> <span class="n">ls</span><span class="o">=</span><span class="s1">&#39;--&#39;</span><span class="p">,</span> <span class="n">marker</span><span class="o">=</span><span class="s1">&#39;,&#39;</span><span class="p">)</span>
</span><span id="Obs-544"><a href="#Obs-544"><span class="linenos">544</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">tau_exp</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
</span><span id="Obs-545"><a href="#Obs-545"><span class="linenos">545</span></a> <span class="n">plt</span><span class="o">.</span><span class="n">plot</span><span class="p">([</span><span class="bp">self</span><span class="o">.</span><span class="n">e_windowsize</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">+</span> <span class="mi">1</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">e_windowsize</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">+</span> <span class="mi">1</span> <span class="o">+</span> <span class="mi">2</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">tau_exp</span><span class="p">[</span><span class="n">e_name</span><span class="p">]],</span>
</span><span id="Obs-546"><a href="#Obs-546"><span class="linenos">546</span></a> <span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">e_rho</span><span class="p">[</span><span class="n">e_name</span><span class="p">][</span><span class="bp">self</span><span class="o">.</span><span class="n">e_windowsize</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">+</span> <span class="mi">1</span><span class="p">],</span> <span class="mi">0</span><span class="p">],</span> <span class="s1">&#39;k-&#39;</span><span class="p">,</span> <span class="n">lw</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
</span><span id="Obs-547"><a href="#Obs-547"><span class="linenos">547</span></a> <span class="n">xmax</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">e_windowsize</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">+</span> <span class="mi">2</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">tau_exp</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">+</span> <span class="mf">1.5</span>
</span><span id="Obs-548"><a href="#Obs-548"><span class="linenos">548</span></a> <span class="n">plt</span><span class="o">.</span><span class="n">title</span><span class="p">(</span><span class="s1">&#39;Rho &#39;</span> <span class="o">+</span> <span class="n">e_name</span> <span class="o">+</span> <span class="sa">r</span><span class="s1">&#39;, tau\_exp=&#39;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">around</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">tau_exp</span><span class="p">[</span><span class="n">e_name</span><span class="p">],</span> <span class="n">decimals</span><span class="o">=</span><span class="mi">2</span><span class="p">)))</span>
</span><span id="Obs-549"><a href="#Obs-549"><span class="linenos">549</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="Obs-550"><a href="#Obs-550"><span class="linenos">550</span></a> <span class="n">xmax</span> <span class="o">=</span> <span class="nb">max</span><span class="p">(</span><span class="mf">10.5</span><span class="p">,</span> <span class="mi">2</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">e_windowsize</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">-</span> <span class="mf">0.5</span><span class="p">)</span>
</span><span id="Obs-551"><a href="#Obs-551"><span class="linenos">551</span></a> <span class="n">plt</span><span class="o">.</span><span class="n">title</span><span class="p">(</span><span class="s1">&#39;Rho &#39;</span> <span class="o">+</span> <span class="n">e_name</span> <span class="o">+</span> <span class="s1">&#39;, S=&#39;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">around</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">S</span><span class="p">[</span><span class="n">e_name</span><span class="p">],</span> <span class="n">decimals</span><span class="o">=</span><span class="mi">2</span><span class="p">)))</span>
</span><span id="Obs-552"><a href="#Obs-552"><span class="linenos">552</span></a> <span class="n">plt</span><span class="o">.</span><span class="n">plot</span><span class="p">([</span><span class="o">-</span><span class="mf">0.5</span><span class="p">,</span> <span class="n">xmax</span><span class="p">],</span> <span class="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">],</span> <span class="s1">&#39;k--&#39;</span><span class="p">,</span> <span class="n">lw</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
</span><span id="Obs-553"><a href="#Obs-553"><span class="linenos">553</span></a> <span class="n">plt</span><span class="o">.</span><span class="n">xlim</span><span class="p">(</span><span class="o">-</span><span class="mf">0.5</span><span class="p">,</span> <span class="n">xmax</span><span class="p">)</span>
</span><span id="Obs-554"><a href="#Obs-554"><span class="linenos">554</span></a> <span class="n">plt</span><span class="o">.</span><span class="n">draw</span><span class="p">()</span>
</span><span id="Obs-555"><a href="#Obs-555"><span class="linenos">555</span></a> <span class="k">if</span> <span class="n">save</span><span class="p">:</span>
</span><span id="Obs-556"><a href="#Obs-556"><span class="linenos">556</span></a> <span class="n">fig</span><span class="o">.</span><span class="n">savefig</span><span class="p">(</span><span class="n">save</span> <span class="o">+</span> <span class="s2">&quot;_&quot;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">e</span><span class="p">))</span>
</span><span id="Obs-557"><a href="#Obs-557"><span class="linenos">557</span></a>
</span><span id="Obs-558"><a href="#Obs-558"><span class="linenos">558</span></a> <span class="k">def</span> <span class="nf">plot_rep_dist</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
</span><span id="Obs-559"><a href="#Obs-559"><span class="linenos">559</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Plot replica distribution for each ensemble with more than one replicum.&quot;&quot;&quot;</span>
</span><span id="Obs-560"><a href="#Obs-560"><span class="linenos">560</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">hasattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s1">&#39;e_dvalue&#39;</span><span class="p">):</span>
</span><span id="Obs-561"><a href="#Obs-561"><span class="linenos">561</span></a> <span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s1">&#39;Run the gamma method first.&#39;</span><span class="p">)</span>
</span><span id="Obs-562"><a href="#Obs-562"><span class="linenos">562</span></a> <span class="k">for</span> <span class="n">e</span><span class="p">,</span> <span class="n">e_name</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">mc_names</span><span class="p">):</span>
</span><span id="Obs-563"><a href="#Obs-563"><span class="linenos">563</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">e_content</span><span class="p">[</span><span class="n">e_name</span><span class="p">])</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span>
</span><span id="Obs-564"><a href="#Obs-564"><span class="linenos">564</span></a> <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;No replica distribution for a single replicum (&#39;</span><span class="p">,</span> <span class="n">e_name</span><span class="p">,</span> <span class="s1">&#39;)&#39;</span><span class="p">)</span>
</span><span id="Obs-565"><a href="#Obs-565"><span class="linenos">565</span></a> <span class="k">continue</span>
</span><span id="Obs-566"><a href="#Obs-566"><span class="linenos">566</span></a> <span class="n">r_length</span> <span class="o">=</span> <span class="p">[]</span>
</span><span id="Obs-567"><a href="#Obs-567"><span class="linenos">567</span></a> <span class="n">sub_r_mean</span> <span class="o">=</span> <span class="mi">0</span>
</span><span id="Obs-568"><a href="#Obs-568"><span class="linenos">568</span></a> <span class="k">for</span> <span class="n">r</span><span class="p">,</span> <span class="n">r_name</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">e_content</span><span class="p">[</span><span class="n">e_name</span><span class="p">]):</span>
</span><span id="Obs-569"><a href="#Obs-569"><span class="linenos">569</span></a> <span class="n">r_length</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">deltas</span><span class="p">[</span><span class="n">r_name</span><span class="p">]))</span>
</span><span id="Obs-570"><a href="#Obs-570"><span class="linenos">570</span></a> <span class="n">sub_r_mean</span> <span class="o">+=</span> <span class="bp">self</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="n">r_name</span><span class="p">]</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">r_values</span><span class="p">[</span><span class="n">r_name</span><span class="p">]</span>
</span><span id="Obs-571"><a href="#Obs-571"><span class="linenos">571</span></a> <span class="n">e_N</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">sum</span><span class="p">(</span><span class="n">r_length</span><span class="p">)</span>
</span><span id="Obs-572"><a href="#Obs-572"><span class="linenos">572</span></a> <span class="n">sub_r_mean</span> <span class="o">/=</span> <span class="n">e_N</span>
</span><span id="Obs-573"><a href="#Obs-573"><span class="linenos">573</span></a> <span class="n">arr</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">zeros</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">e_content</span><span class="p">[</span><span class="n">e_name</span><span class="p">]))</span>
</span><span id="Obs-574"><a href="#Obs-574"><span class="linenos">574</span></a> <span class="k">for</span> <span class="n">r</span><span class="p">,</span> <span class="n">r_name</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">e_content</span><span class="p">[</span><span class="n">e_name</span><span class="p">]):</span>
</span><span id="Obs-575"><a href="#Obs-575"><span class="linenos">575</span></a> <span class="n">arr</span><span class="p">[</span><span class="n">r</span><span class="p">]</span> <span class="o">=</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">r_values</span><span class="p">[</span><span class="n">r_name</span><span class="p">]</span> <span class="o">-</span> <span class="n">sub_r_mean</span><span class="p">)</span> <span class="o">/</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">e_dvalue</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">*</span> <span class="n">np</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="n">e_N</span> <span class="o">/</span> <span class="bp">self</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="n">r_name</span><span class="p">]</span> <span class="o">-</span> <span class="mi">1</span><span class="p">))</span>
</span><span id="Obs-576"><a href="#Obs-576"><span class="linenos">576</span></a> <span class="n">plt</span><span class="o">.</span><span class="n">hist</span><span class="p">(</span><span class="n">arr</span><span class="p">,</span> <span class="n">rwidth</span><span class="o">=</span><span class="mf">0.8</span><span class="p">,</span> <span class="n">bins</span><span class="o">=</span><span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">e_content</span><span class="p">[</span><span class="n">e_name</span><span class="p">]))</span>
</span><span id="Obs-577"><a href="#Obs-577"><span class="linenos">577</span></a> <span class="n">plt</span><span class="o">.</span><span class="n">title</span><span class="p">(</span><span class="s1">&#39;Replica distribution&#39;</span> <span class="o">+</span> <span class="n">e_name</span> <span class="o">+</span> <span class="s1">&#39; (mean=0, var=1)&#39;</span><span class="p">)</span>
</span><span id="Obs-578"><a href="#Obs-578"><span class="linenos">578</span></a> <span class="n">plt</span><span class="o">.</span><span class="n">draw</span><span class="p">()</span>
</span><span id="Obs-579"><a href="#Obs-579"><span class="linenos">579</span></a>
</span><span id="Obs-580"><a href="#Obs-580"><span class="linenos">580</span></a> <span class="k">def</span> <span class="nf">plot_history</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expand</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
</span><span id="Obs-581"><a href="#Obs-581"><span class="linenos">581</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Plot derived Monte Carlo history for each ensemble</span>
</span><span id="Obs-582"><a href="#Obs-582"><span class="linenos">582</span></a>
</span><span id="Obs-583"><a href="#Obs-583"><span class="linenos">583</span></a><span class="sd"> Parameters</span>
</span><span id="Obs-584"><a href="#Obs-584"><span class="linenos">584</span></a><span class="sd"> ----------</span>
</span><span id="Obs-585"><a href="#Obs-585"><span class="linenos">585</span></a><span class="sd"> expand : bool</span>
</span><span id="Obs-586"><a href="#Obs-586"><span class="linenos">586</span></a><span class="sd"> show expanded history for irregular Monte Carlo chains (default: True).</span>
</span><span id="Obs-587"><a href="#Obs-587"><span class="linenos">587</span></a><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="Obs-588"><a href="#Obs-588"><span class="linenos">588</span></a> <span class="k">for</span> <span class="n">e</span><span class="p">,</span> <span class="n">e_name</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">mc_names</span><span class="p">):</span>
</span><span id="Obs-589"><a href="#Obs-589"><span class="linenos">589</span></a> <span class="n">plt</span><span class="o">.</span><span class="n">figure</span><span class="p">()</span>
</span><span id="Obs-590"><a href="#Obs-590"><span class="linenos">590</span></a> <span class="n">r_length</span> <span class="o">=</span> <span class="p">[]</span>
</span><span id="Obs-591"><a href="#Obs-591"><span class="linenos">591</span></a> <span class="n">tmp</span> <span class="o">=</span> <span class="p">[]</span>
</span><span id="Obs-592"><a href="#Obs-592"><span class="linenos">592</span></a> <span class="n">tmp_expanded</span> <span class="o">=</span> <span class="p">[]</span>
</span><span id="Obs-593"><a href="#Obs-593"><span class="linenos">593</span></a> <span class="k">for</span> <span class="n">r</span><span class="p">,</span> <span class="n">r_name</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">e_content</span><span class="p">[</span><span class="n">e_name</span><span class="p">]):</span>
</span><span id="Obs-594"><a href="#Obs-594"><span class="linenos">594</span></a> <span class="n">tmp</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">deltas</span><span class="p">[</span><span class="n">r_name</span><span class="p">]</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">r_values</span><span class="p">[</span><span class="n">r_name</span><span class="p">])</span>
</span><span id="Obs-595"><a href="#Obs-595"><span class="linenos">595</span></a> <span class="k">if</span> <span class="n">expand</span><span class="p">:</span>
</span><span id="Obs-596"><a href="#Obs-596"><span class="linenos">596</span></a> <span class="n">tmp_expanded</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">_expand_deltas</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">deltas</span><span class="p">[</span><span class="n">r_name</span><span class="p">],</span> <span class="nb">list</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">idl</span><span class="p">[</span><span class="n">r_name</span><span class="p">]),</span> <span class="bp">self</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="n">r_name</span><span class="p">],</span> <span class="mi">1</span><span class="p">)</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">r_values</span><span class="p">[</span><span class="n">r_name</span><span class="p">])</span>
</span><span id="Obs-597"><a href="#Obs-597"><span class="linenos">597</span></a> <span class="n">r_length</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">tmp_expanded</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]))</span>
</span><span id="Obs-598"><a href="#Obs-598"><span class="linenos">598</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="Obs-599"><a href="#Obs-599"><span class="linenos">599</span></a> <span class="n">r_length</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">tmp</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]))</span>
</span><span id="Obs-600"><a href="#Obs-600"><span class="linenos">600</span></a> <span class="n">e_N</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">sum</span><span class="p">(</span><span class="n">r_length</span><span class="p">)</span>
</span><span id="Obs-601"><a href="#Obs-601"><span class="linenos">601</span></a> <span class="n">x</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">arange</span><span class="p">(</span><span class="n">e_N</span><span class="p">)</span>
</span><span id="Obs-602"><a href="#Obs-602"><span class="linenos">602</span></a> <span class="n">y_test</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">concatenate</span><span class="p">(</span><span class="n">tmp</span><span class="p">,</span> <span class="n">axis</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span>
</span><span id="Obs-603"><a href="#Obs-603"><span class="linenos">603</span></a> <span class="k">if</span> <span class="n">expand</span><span class="p">:</span>
</span><span id="Obs-604"><a href="#Obs-604"><span class="linenos">604</span></a> <span class="n">y</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">concatenate</span><span class="p">(</span><span class="n">tmp_expanded</span><span class="p">,</span> <span class="n">axis</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span>
</span><span id="Obs-605"><a href="#Obs-605"><span class="linenos">605</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="Obs-606"><a href="#Obs-606"><span class="linenos">606</span></a> <span class="n">y</span> <span class="o">=</span> <span class="n">y_test</span>
</span><span id="Obs-607"><a href="#Obs-607"><span class="linenos">607</span></a> <span class="n">plt</span><span class="o">.</span><span class="n">errorbar</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">fmt</span><span class="o">=</span><span class="s1">&#39;.&#39;</span><span class="p">,</span> <span class="n">markersize</span><span class="o">=</span><span class="mi">3</span><span class="p">)</span>
</span><span id="Obs-608"><a href="#Obs-608"><span class="linenos">608</span></a> <span class="n">plt</span><span class="o">.</span><span class="n">xlim</span><span class="p">(</span><span class="o">-</span><span class="mf">0.5</span><span class="p">,</span> <span class="n">e_N</span> <span class="o">-</span> <span class="mf">0.5</span><span class="p">)</span>
</span><span id="Obs-609"><a href="#Obs-609"><span class="linenos">609</span></a> <span class="n">plt</span><span class="o">.</span><span class="n">title</span><span class="p">(</span><span class="n">e_name</span> <span class="o">+</span> <span class="sa">f</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">skew: </span><span class="si">{</span><span class="n">skew</span><span class="p">(</span><span class="n">y_test</span><span class="p">)</span><span class="si">:</span><span class="s1">.3f</span><span class="si">}</span><span class="s1"> (p=</span><span class="si">{</span><span class="n">skewtest</span><span class="p">(</span><span class="n">y_test</span><span class="p">)</span><span class="o">.</span><span class="n">pvalue</span><span class="si">:</span><span class="s1">.3f</span><span class="si">}</span><span class="s1">), kurtosis: </span><span class="si">{</span><span class="n">kurtosis</span><span class="p">(</span><span class="n">y_test</span><span class="p">)</span><span class="si">:</span><span class="s1">.3f</span><span class="si">}</span><span class="s1"> (p=</span><span class="si">{</span><span class="n">kurtosistest</span><span class="p">(</span><span class="n">y_test</span><span class="p">)</span><span class="o">.</span><span class="n">pvalue</span><span class="si">:</span><span class="s1">.3f</span><span class="si">}</span><span class="s1">)&#39;</span><span class="p">)</span>
</span><span id="Obs-610"><a href="#Obs-610"><span class="linenos">610</span></a> <span class="n">plt</span><span class="o">.</span><span class="n">draw</span><span class="p">()</span>
</span><span id="Obs-611"><a href="#Obs-611"><span class="linenos">611</span></a>
</span><span id="Obs-612"><a href="#Obs-612"><span class="linenos">612</span></a> <span class="k">def</span> <span class="nf">plot_piechart</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">save</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
</span><span id="Obs-613"><a href="#Obs-613"><span class="linenos">613</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Plot piechart which shows the fractional contribution of each</span>
</span><span id="Obs-614"><a href="#Obs-614"><span class="linenos">614</span></a><span class="sd"> ensemble to the error and returns a dictionary containing the fractions.</span>
</span><span id="Obs-615"><a href="#Obs-615"><span class="linenos">615</span></a>
</span><span id="Obs-616"><a href="#Obs-616"><span class="linenos">616</span></a><span class="sd"> Parameters</span>
</span><span id="Obs-617"><a href="#Obs-617"><span class="linenos">617</span></a><span class="sd"> ----------</span>
</span><span id="Obs-618"><a href="#Obs-618"><span class="linenos">618</span></a><span class="sd"> save : str</span>
</span><span id="Obs-619"><a href="#Obs-619"><span class="linenos">619</span></a><span class="sd"> saves the figure to a file named &#39;save&#39; if.</span>
</span><span id="Obs-620"><a href="#Obs-620"><span class="linenos">620</span></a><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="Obs-621"><a href="#Obs-621"><span class="linenos">621</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">hasattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s1">&#39;e_dvalue&#39;</span><span class="p">):</span>
</span><span id="Obs-622"><a href="#Obs-622"><span class="linenos">622</span></a> <span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s1">&#39;Run the gamma method first.&#39;</span><span class="p">)</span>
</span><span id="Obs-623"><a href="#Obs-623"><span class="linenos">623</span></a> <span class="k">if</span> <span class="n">np</span><span class="o">.</span><span class="n">isclose</span><span class="p">(</span><span class="mf">0.0</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_dvalue</span><span class="p">,</span> <span class="n">atol</span><span class="o">=</span><span class="mf">1e-15</span><span class="p">):</span>
</span><span id="Obs-624"><a href="#Obs-624"><span class="linenos">624</span></a> <span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s1">&#39;Error is 0.0&#39;</span><span class="p">)</span>
</span><span id="Obs-625"><a href="#Obs-625"><span class="linenos">625</span></a> <span class="n">labels</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">e_names</span>
</span><span id="Obs-626"><a href="#Obs-626"><span class="linenos">626</span></a> <span class="n">sizes</span> <span class="o">=</span> <span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">e_dvalue</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="o">**</span> <span class="mi">2</span> <span class="k">for</span> <span class="n">name</span> <span class="ow">in</span> <span class="n">labels</span><span class="p">]</span> <span class="o">/</span> <span class="bp">self</span><span class="o">.</span><span class="n">_dvalue</span> <span class="o">**</span> <span class="mi">2</span>
</span><span id="Obs-627"><a href="#Obs-627"><span class="linenos">627</span></a> <span class="n">fig1</span><span class="p">,</span> <span class="n">ax1</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">subplots</span><span class="p">()</span>
</span><span id="Obs-628"><a href="#Obs-628"><span class="linenos">628</span></a> <span class="n">ax1</span><span class="o">.</span><span class="n">pie</span><span class="p">(</span><span class="n">sizes</span><span class="p">,</span> <span class="n">labels</span><span class="o">=</span><span class="n">labels</span><span class="p">,</span> <span class="n">startangle</span><span class="o">=</span><span class="mi">90</span><span class="p">,</span> <span class="n">normalize</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
</span><span id="Obs-629"><a href="#Obs-629"><span class="linenos">629</span></a> <span class="n">ax1</span><span class="o">.</span><span class="n">axis</span><span class="p">(</span><span class="s1">&#39;equal&#39;</span><span class="p">)</span>
</span><span id="Obs-630"><a href="#Obs-630"><span class="linenos">630</span></a> <span class="n">plt</span><span class="o">.</span><span class="n">draw</span><span class="p">()</span>
</span><span id="Obs-631"><a href="#Obs-631"><span class="linenos">631</span></a> <span class="k">if</span> <span class="n">save</span><span class="p">:</span>
</span><span id="Obs-632"><a href="#Obs-632"><span class="linenos">632</span></a> <span class="n">fig1</span><span class="o">.</span><span class="n">savefig</span><span class="p">(</span><span class="n">save</span><span class="p">)</span>
</span><span id="Obs-633"><a href="#Obs-633"><span class="linenos">633</span></a>
</span><span id="Obs-634"><a href="#Obs-634"><span class="linenos">634</span></a> <span class="k">return</span> <span class="nb">dict</span><span class="p">(</span><span class="nb">zip</span><span class="p">(</span><span class="n">labels</span><span class="p">,</span> <span class="n">sizes</span><span class="p">))</span>
</span><span id="Obs-635"><a href="#Obs-635"><span class="linenos">635</span></a>
</span><span id="Obs-636"><a href="#Obs-636"><span class="linenos">636</span></a> <span class="k">def</span> <span class="nf">dump</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">filename</span><span class="p">,</span> <span class="n">datatype</span><span class="o">=</span><span class="s2">&quot;json.gz&quot;</span><span class="p">,</span> <span class="n">description</span><span class="o">=</span><span class="s2">&quot;&quot;</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
</span><span id="Obs-637"><a href="#Obs-637"><span class="linenos">637</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Dump the Obs to a file &#39;name&#39; of chosen format.</span>
</span><span id="Obs-638"><a href="#Obs-638"><span class="linenos">638</span></a>
</span><span id="Obs-639"><a href="#Obs-639"><span class="linenos">639</span></a><span class="sd"> Parameters</span>
</span><span id="Obs-640"><a href="#Obs-640"><span class="linenos">640</span></a><span class="sd"> ----------</span>
</span><span id="Obs-641"><a href="#Obs-641"><span class="linenos">641</span></a><span class="sd"> filename : str</span>
</span><span id="Obs-642"><a href="#Obs-642"><span class="linenos">642</span></a><span class="sd"> name of the file to be saved.</span>
</span><span id="Obs-643"><a href="#Obs-643"><span class="linenos">643</span></a><span class="sd"> datatype : str</span>
</span><span id="Obs-644"><a href="#Obs-644"><span class="linenos">644</span></a><span class="sd"> Format of the exported file. Supported formats include</span>
</span><span id="Obs-645"><a href="#Obs-645"><span class="linenos">645</span></a><span class="sd"> &quot;json.gz&quot; and &quot;pickle&quot;</span>
</span><span id="Obs-646"><a href="#Obs-646"><span class="linenos">646</span></a><span class="sd"> description : str</span>
</span><span id="Obs-647"><a href="#Obs-647"><span class="linenos">647</span></a><span class="sd"> Description for output file, only relevant for json.gz format.</span>
</span><span id="Obs-648"><a href="#Obs-648"><span class="linenos">648</span></a><span class="sd"> path : str</span>
</span><span id="Obs-649"><a href="#Obs-649"><span class="linenos">649</span></a><span class="sd"> specifies a custom path for the file (default &#39;.&#39;)</span>
</span><span id="Obs-650"><a href="#Obs-650"><span class="linenos">650</span></a><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="Obs-651"><a href="#Obs-651"><span class="linenos">651</span></a> <span class="k">if</span> <span class="s1">&#39;path&#39;</span> <span class="ow">in</span> <span class="n">kwargs</span><span class="p">:</span>
</span><span id="Obs-652"><a href="#Obs-652"><span class="linenos">652</span></a> <span class="n">file_name</span> <span class="o">=</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">&#39;path&#39;</span><span class="p">)</span> <span class="o">+</span> <span class="s1">&#39;/&#39;</span> <span class="o">+</span> <span class="n">filename</span>
</span><span id="Obs-653"><a href="#Obs-653"><span class="linenos">653</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="Obs-654"><a href="#Obs-654"><span class="linenos">654</span></a> <span class="n">file_name</span> <span class="o">=</span> <span class="n">filename</span>
</span><span id="Obs-655"><a href="#Obs-655"><span class="linenos">655</span></a>
</span><span id="Obs-656"><a href="#Obs-656"><span class="linenos">656</span></a> <span class="k">if</span> <span class="n">datatype</span> <span class="o">==</span> <span class="s2">&quot;json.gz&quot;</span><span class="p">:</span>
</span><span id="Obs-657"><a href="#Obs-657"><span class="linenos">657</span></a> <span class="kn">from</span> <span class="nn">.input.json</span> <span class="kn">import</span> <span class="n">dump_to_json</span>
</span><span id="Obs-658"><a href="#Obs-658"><span class="linenos">658</span></a> <span class="n">dump_to_json</span><span class="p">([</span><span class="bp">self</span><span class="p">],</span> <span class="n">file_name</span><span class="p">,</span> <span class="n">description</span><span class="o">=</span><span class="n">description</span><span class="p">)</span>
</span><span id="Obs-659"><a href="#Obs-659"><span class="linenos">659</span></a> <span class="k">elif</span> <span class="n">datatype</span> <span class="o">==</span> <span class="s2">&quot;pickle&quot;</span><span class="p">:</span>
</span><span id="Obs-660"><a href="#Obs-660"><span class="linenos">660</span></a> <span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">file_name</span> <span class="o">+</span> <span class="s1">&#39;.p&#39;</span><span class="p">,</span> <span class="s1">&#39;wb&#39;</span><span class="p">)</span> <span class="k">as</span> <span class="n">fb</span><span class="p">:</span>
</span><span id="Obs-661"><a href="#Obs-661"><span class="linenos">661</span></a> <span class="n">pickle</span><span class="o">.</span><span class="n">dump</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">fb</span><span class="p">)</span>
</span><span id="Obs-662"><a href="#Obs-662"><span class="linenos">662</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="Obs-663"><a href="#Obs-663"><span class="linenos">663</span></a> <span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s2">&quot;Unknown datatype &quot;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">datatype</span><span class="p">))</span>
</span><span id="Obs-664"><a href="#Obs-664"><span class="linenos">664</span></a>
</span><span id="Obs-665"><a href="#Obs-665"><span class="linenos">665</span></a> <span class="k">def</span> <span class="nf">export_jackknife</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
</span><span id="Obs-666"><a href="#Obs-666"><span class="linenos">666</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Export jackknife samples from the Obs</span>
</span><span id="Obs-667"><a href="#Obs-667"><span class="linenos">667</span></a>
</span><span id="Obs-668"><a href="#Obs-668"><span class="linenos">668</span></a><span class="sd"> Returns</span>
</span><span id="Obs-669"><a href="#Obs-669"><span class="linenos">669</span></a><span class="sd"> -------</span>
</span><span id="Obs-670"><a href="#Obs-670"><span class="linenos">670</span></a><span class="sd"> numpy.ndarray</span>
</span><span id="Obs-671"><a href="#Obs-671"><span class="linenos">671</span></a><span class="sd"> Returns a numpy array of length N + 1 where N is the number of samples</span>
</span><span id="Obs-672"><a href="#Obs-672"><span class="linenos">672</span></a><span class="sd"> for the given ensemble and replicum. The zeroth entry of the array contains</span>
</span><span id="Obs-673"><a href="#Obs-673"><span class="linenos">673</span></a><span class="sd"> the mean value of the Obs, entries 1 to N contain the N jackknife samples</span>
</span><span id="Obs-674"><a href="#Obs-674"><span class="linenos">674</span></a><span class="sd"> derived from the Obs. The current implementation only works for observables</span>
</span><span id="Obs-675"><a href="#Obs-675"><span class="linenos">675</span></a><span class="sd"> defined on exactly one ensemble and replicum. The derived jackknife samples</span>
</span><span id="Obs-676"><a href="#Obs-676"><span class="linenos">676</span></a><span class="sd"> should agree with samples from a full jackknife analysis up to O(1/N).</span>
</span><span id="Obs-677"><a href="#Obs-677"><span class="linenos">677</span></a><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="Obs-678"><a href="#Obs-678"><span class="linenos">678</span></a>
</span><span id="Obs-679"><a href="#Obs-679"><span class="linenos">679</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">names</span><span class="p">)</span> <span class="o">!=</span> <span class="mi">1</span><span class="p">:</span>
</span><span id="Obs-680"><a href="#Obs-680"><span class="linenos">680</span></a> <span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s2">&quot;&#39;export_jackknife&#39; is only implemented for Obs defined on one ensemble and replicum.&quot;</span><span class="p">)</span>
</span><span id="Obs-681"><a href="#Obs-681"><span class="linenos">681</span></a>
</span><span id="Obs-682"><a href="#Obs-682"><span class="linenos">682</span></a> <span class="n">name</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">names</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
</span><span id="Obs-683"><a href="#Obs-683"><span class="linenos">683</span></a> <span class="n">full_data</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">deltas</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">r_values</span><span class="p">[</span><span class="n">name</span><span class="p">]</span>
</span><span id="Obs-684"><a href="#Obs-684"><span class="linenos">684</span></a> <span class="n">n</span> <span class="o">=</span> <span class="n">full_data</span><span class="o">.</span><span class="n">size</span>
</span><span id="Obs-685"><a href="#Obs-685"><span class="linenos">685</span></a> <span class="n">mean</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">value</span>
</span><span id="Obs-686"><a href="#Obs-686"><span class="linenos">686</span></a> <span class="n">tmp_jacks</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">zeros</span><span class="p">(</span><span class="n">n</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span>
</span><span id="Obs-687"><a href="#Obs-687"><span class="linenos">687</span></a> <span class="n">tmp_jacks</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="n">mean</span>
</span><span id="Obs-688"><a href="#Obs-688"><span class="linenos">688</span></a> <span class="n">tmp_jacks</span><span class="p">[</span><span class="mi">1</span><span class="p">:]</span> <span class="o">=</span> <span class="p">(</span><span class="n">n</span> <span class="o">*</span> <span class="n">mean</span> <span class="o">-</span> <span class="n">full_data</span><span class="p">)</span> <span class="o">/</span> <span class="p">(</span><span class="n">n</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span>
</span><span id="Obs-689"><a href="#Obs-689"><span class="linenos">689</span></a> <span class="k">return</span> <span class="n">tmp_jacks</span>
</span><span id="Obs-690"><a href="#Obs-690"><span class="linenos">690</span></a>
</span><span id="Obs-691"><a href="#Obs-691"><span class="linenos">691</span></a> <span class="k">def</span> <span class="nf">export_bootstrap</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">samples</span><span class="o">=</span><span class="mi">500</span><span class="p">,</span> <span class="n">random_numbers</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">save_rng</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
</span><span id="Obs-692"><a href="#Obs-692"><span class="linenos">692</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Export bootstrap samples from the Obs</span>
</span><span id="Obs-693"><a href="#Obs-693"><span class="linenos">693</span></a>
</span><span id="Obs-694"><a href="#Obs-694"><span class="linenos">694</span></a><span class="sd"> Parameters</span>
</span><span id="Obs-695"><a href="#Obs-695"><span class="linenos">695</span></a><span class="sd"> ----------</span>
</span><span id="Obs-696"><a href="#Obs-696"><span class="linenos">696</span></a><span class="sd"> samples : int</span>
</span><span id="Obs-697"><a href="#Obs-697"><span class="linenos">697</span></a><span class="sd"> Number of bootstrap samples to generate.</span>
</span><span id="Obs-698"><a href="#Obs-698"><span class="linenos">698</span></a><span class="sd"> random_numbers : np.ndarray</span>
</span><span id="Obs-699"><a href="#Obs-699"><span class="linenos">699</span></a><span class="sd"> Array of shape (samples, length) containing the random numbers to generate the bootstrap samples.</span>
</span><span id="Obs-700"><a href="#Obs-700"><span class="linenos">700</span></a><span class="sd"> If not provided the bootstrap samples are generated bashed on the md5 hash of the enesmble name.</span>
</span><span id="Obs-701"><a href="#Obs-701"><span class="linenos">701</span></a><span class="sd"> save_rng : str</span>
</span><span id="Obs-702"><a href="#Obs-702"><span class="linenos">702</span></a><span class="sd"> Save the random numbers to a file if a path is specified.</span>
</span><span id="Obs-703"><a href="#Obs-703"><span class="linenos">703</span></a>
</span><span id="Obs-704"><a href="#Obs-704"><span class="linenos">704</span></a><span class="sd"> Returns</span>
</span><span id="Obs-705"><a href="#Obs-705"><span class="linenos">705</span></a><span class="sd"> -------</span>
</span><span id="Obs-706"><a href="#Obs-706"><span class="linenos">706</span></a><span class="sd"> numpy.ndarray</span>
</span><span id="Obs-707"><a href="#Obs-707"><span class="linenos">707</span></a><span class="sd"> Returns a numpy array of length N + 1 where N is the number of samples</span>
</span><span id="Obs-708"><a href="#Obs-708"><span class="linenos">708</span></a><span class="sd"> for the given ensemble and replicum. The zeroth entry of the array contains</span>
</span><span id="Obs-709"><a href="#Obs-709"><span class="linenos">709</span></a><span class="sd"> the mean value of the Obs, entries 1 to N contain the N import_bootstrap samples</span>
</span><span id="Obs-710"><a href="#Obs-710"><span class="linenos">710</span></a><span class="sd"> derived from the Obs. The current implementation only works for observables</span>
</span><span id="Obs-711"><a href="#Obs-711"><span class="linenos">711</span></a><span class="sd"> defined on exactly one ensemble and replicum. The derived bootstrap samples</span>
</span><span id="Obs-712"><a href="#Obs-712"><span class="linenos">712</span></a><span class="sd"> should agree with samples from a full bootstrap analysis up to O(1/N).</span>
</span><span id="Obs-713"><a href="#Obs-713"><span class="linenos">713</span></a><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="Obs-714"><a href="#Obs-714"><span class="linenos">714</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">names</span><span class="p">)</span> <span class="o">!=</span> <span class="mi">1</span><span class="p">:</span>
</span><span id="Obs-715"><a href="#Obs-715"><span class="linenos">715</span></a> <span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s2">&quot;&#39;export_boostrap&#39; is only implemented for Obs defined on one ensemble and replicum.&quot;</span><span class="p">)</span>
</span><span id="Obs-716"><a href="#Obs-716"><span class="linenos">716</span></a>
</span><span id="Obs-717"><a href="#Obs-717"><span class="linenos">717</span></a> <span class="n">name</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">names</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
</span><span id="Obs-718"><a href="#Obs-718"><span class="linenos">718</span></a> <span class="n">length</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">N</span>
</span><span id="Obs-719"><a href="#Obs-719"><span class="linenos">719</span></a>
</span><span id="Obs-720"><a href="#Obs-720"><span class="linenos">720</span></a> <span class="k">if</span> <span class="n">random_numbers</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
</span><span id="Obs-721"><a href="#Obs-721"><span class="linenos">721</span></a> <span class="n">seed</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">hashlib</span><span class="o">.</span><span class="n">md5</span><span class="p">(</span><span class="n">name</span><span class="o">.</span><span class="n">encode</span><span class="p">())</span><span class="o">.</span><span class="n">hexdigest</span><span class="p">(),</span> <span class="mi">16</span><span class="p">)</span> <span class="o">&amp;</span> <span class="mh">0xFFFFFFFF</span>
</span><span id="Obs-722"><a href="#Obs-722"><span class="linenos">722</span></a> <span class="n">rng</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">random</span><span class="o">.</span><span class="n">default_rng</span><span class="p">(</span><span class="n">seed</span><span class="p">)</span>
</span><span id="Obs-723"><a href="#Obs-723"><span class="linenos">723</span></a> <span class="n">random_numbers</span> <span class="o">=</span> <span class="n">rng</span><span class="o">.</span><span class="n">integers</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">length</span><span class="p">,</span> <span class="n">size</span><span class="o">=</span><span class="p">(</span><span class="n">samples</span><span class="p">,</span> <span class="n">length</span><span class="p">))</span>
</span><span id="Obs-724"><a href="#Obs-724"><span class="linenos">724</span></a>
</span><span id="Obs-725"><a href="#Obs-725"><span class="linenos">725</span></a> <span class="k">if</span> <span class="n">save_rng</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
</span><span id="Obs-726"><a href="#Obs-726"><span class="linenos">726</span></a> <span class="n">np</span><span class="o">.</span><span class="n">savetxt</span><span class="p">(</span><span class="n">save_rng</span><span class="p">,</span> <span class="n">random_numbers</span><span class="p">,</span> <span class="n">fmt</span><span class="o">=</span><span class="s1">&#39;</span><span class="si">%i</span><span class="s1">&#39;</span><span class="p">)</span>
</span><span id="Obs-727"><a href="#Obs-727"><span class="linenos">727</span></a>
</span><span id="Obs-728"><a href="#Obs-728"><span class="linenos">728</span></a> <span class="n">proj</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">vstack</span><span class="p">([</span><span class="n">np</span><span class="o">.</span><span class="n">bincount</span><span class="p">(</span><span class="n">o</span><span class="p">,</span> <span class="n">minlength</span><span class="o">=</span><span class="n">length</span><span class="p">)</span> <span class="k">for</span> <span class="n">o</span> <span class="ow">in</span> <span class="n">random_numbers</span><span class="p">])</span> <span class="o">/</span> <span class="n">length</span>
</span><span id="Obs-729"><a href="#Obs-729"><span class="linenos">729</span></a> <span class="n">ret</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">zeros</span><span class="p">(</span><span class="n">samples</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span>
</span><span id="Obs-730"><a href="#Obs-730"><span class="linenos">730</span></a> <span class="n">ret</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">value</span>
</span><span id="Obs-731"><a href="#Obs-731"><span class="linenos">731</span></a> <span class="n">ret</span><span class="p">[</span><span class="mi">1</span><span class="p">:]</span> <span class="o">=</span> <span class="n">proj</span> <span class="o">@</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">deltas</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">r_values</span><span class="p">[</span><span class="n">name</span><span class="p">])</span>
</span><span id="Obs-732"><a href="#Obs-732"><span class="linenos">732</span></a> <span class="k">return</span> <span class="n">ret</span>
</span><span id="Obs-733"><a href="#Obs-733"><span class="linenos">733</span></a>
</span><span id="Obs-734"><a href="#Obs-734"><span class="linenos">734</span></a> <span class="k">def</span> <span class="fm">__float__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
</span><span id="Obs-735"><a href="#Obs-735"><span class="linenos">735</span></a> <span class="k">return</span> <span class="nb">float</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">value</span><span class="p">)</span>
</span><span id="Obs-736"><a href="#Obs-736"><span class="linenos">736</span></a>
</span><span id="Obs-737"><a href="#Obs-737"><span class="linenos">737</span></a> <span class="k">def</span> <span class="fm">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
</span><span id="Obs-738"><a href="#Obs-738"><span class="linenos">738</span></a> <span class="k">return</span> <span class="s1">&#39;Obs[&#39;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">+</span> <span class="s1">&#39;]&#39;</span>
</span><span id="Obs-739"><a href="#Obs-739"><span class="linenos">739</span></a>
</span><span id="Obs-740"><a href="#Obs-740"><span class="linenos">740</span></a> <span class="k">def</span> <span class="fm">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
</span><span id="Obs-741"><a href="#Obs-741"><span class="linenos">741</span></a> <span class="k">return</span> <span class="n">_format_uncertainty</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">value</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_dvalue</span><span class="p">)</span>
</span><span id="Obs-742"><a href="#Obs-742"><span class="linenos">742</span></a>
</span><span id="Obs-743"><a href="#Obs-743"><span class="linenos">743</span></a> <span class="k">def</span> <span class="fm">__format__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">format_type</span><span class="p">):</span>
</span><span id="Obs-744"><a href="#Obs-744"><span class="linenos">744</span></a> <span class="k">if</span> <span class="n">format_type</span> <span class="o">==</span> <span class="s2">&quot;&quot;</span><span class="p">:</span>
</span><span id="Obs-745"><a href="#Obs-745"><span class="linenos">745</span></a> <span class="n">significance</span> <span class="o">=</span> <span class="mi">2</span>
</span><span id="Obs-746"><a href="#Obs-746"><span class="linenos">746</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="Obs-747"><a href="#Obs-747"><span class="linenos">747</span></a> <span class="n">significance</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="nb">float</span><span class="p">(</span><span class="n">format_type</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s2">&quot;+&quot;</span><span class="p">,</span> <span class="s2">&quot;&quot;</span><span class="p">)</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s2">&quot;-&quot;</span><span class="p">,</span> <span class="s2">&quot;&quot;</span><span class="p">)))</span>
</span><span id="Obs-748"><a href="#Obs-748"><span class="linenos">748</span></a> <span class="n">my_str</span> <span class="o">=</span> <span class="n">_format_uncertainty</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">value</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_dvalue</span><span class="p">,</span>
</span><span id="Obs-749"><a href="#Obs-749"><span class="linenos">749</span></a> <span class="n">significance</span><span class="o">=</span><span class="n">significance</span><span class="p">)</span>
</span><span id="Obs-750"><a href="#Obs-750"><span class="linenos">750</span></a> <span class="k">for</span> <span class="n">char</span> <span class="ow">in</span> <span class="p">[</span><span class="s2">&quot;+&quot;</span><span class="p">,</span> <span class="s2">&quot; &quot;</span><span class="p">]:</span>
</span><span id="Obs-751"><a href="#Obs-751"><span class="linenos">751</span></a> <span class="k">if</span> <span class="n">format_type</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="n">char</span><span class="p">):</span>
</span><span id="Obs-752"><a href="#Obs-752"><span class="linenos">752</span></a> <span class="k">if</span> <span class="n">my_str</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">!=</span> <span class="s2">&quot;-&quot;</span><span class="p">:</span>
</span><span id="Obs-753"><a href="#Obs-753"><span class="linenos">753</span></a> <span class="n">my_str</span> <span class="o">=</span> <span class="n">char</span> <span class="o">+</span> <span class="n">my_str</span>
</span><span id="Obs-754"><a href="#Obs-754"><span class="linenos">754</span></a> <span class="k">return</span> <span class="n">my_str</span>
</span><span id="Obs-755"><a href="#Obs-755"><span class="linenos">755</span></a>
</span><span id="Obs-756"><a href="#Obs-756"><span class="linenos">756</span></a> <span class="k">def</span> <span class="fm">__hash__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
</span><span id="Obs-757"><a href="#Obs-757"><span class="linenos">757</span></a> <span class="n">hash_tuple</span> <span class="o">=</span> <span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">([</span><span class="bp">self</span><span class="o">.</span><span class="n">value</span><span class="p">])</span><span class="o">.</span><span class="n">astype</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">float32</span><span class="p">)</span><span class="o">.</span><span class="n">data</span><span class="o">.</span><span class="n">tobytes</span><span class="p">(),)</span>
</span><span id="Obs-758"><a href="#Obs-758"><span class="linenos">758</span></a> <span class="n">hash_tuple</span> <span class="o">+=</span> <span class="nb">tuple</span><span class="p">([</span><span class="n">o</span><span class="o">.</span><span class="n">astype</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">float32</span><span class="p">)</span><span class="o">.</span><span class="n">data</span><span class="o">.</span><span class="n">tobytes</span><span class="p">()</span> <span class="k">for</span> <span class="n">o</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">deltas</span><span class="o">.</span><span class="n">values</span><span class="p">()])</span>
</span><span id="Obs-759"><a href="#Obs-759"><span class="linenos">759</span></a> <span class="n">hash_tuple</span> <span class="o">+=</span> <span class="nb">tuple</span><span class="p">([</span><span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">([</span><span class="n">o</span><span class="o">.</span><span class="n">errsq</span><span class="p">()])</span><span class="o">.</span><span class="n">astype</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">float32</span><span class="p">)</span><span class="o">.</span><span class="n">data</span><span class="o">.</span><span class="n">tobytes</span><span class="p">()</span> <span class="k">for</span> <span class="n">o</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">covobs</span><span class="o">.</span><span class="n">values</span><span class="p">()])</span>
</span><span id="Obs-760"><a href="#Obs-760"><span class="linenos">760</span></a> <span class="n">hash_tuple</span> <span class="o">+=</span> <span class="nb">tuple</span><span class="p">([</span><span class="n">o</span><span class="o">.</span><span class="n">encode</span><span class="p">()</span> <span class="k">for</span> <span class="n">o</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">names</span><span class="p">])</span>
</span><span id="Obs-761"><a href="#Obs-761"><span class="linenos">761</span></a> <span class="n">m</span> <span class="o">=</span> <span class="n">hashlib</span><span class="o">.</span><span class="n">md5</span><span class="p">()</span>
</span><span id="Obs-762"><a href="#Obs-762"><span class="linenos">762</span></a> <span class="p">[</span><span class="n">m</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="n">o</span><span class="p">)</span> <span class="k">for</span> <span class="n">o</span> <span class="ow">in</span> <span class="n">hash_tuple</span><span class="p">]</span>
</span><span id="Obs-763"><a href="#Obs-763"><span class="linenos">763</span></a> <span class="k">return</span> <span class="nb">int</span><span class="p">(</span><span class="n">m</span><span class="o">.</span><span class="n">hexdigest</span><span class="p">(),</span> <span class="mi">16</span><span class="p">)</span> <span class="o">&amp;</span> <span class="mh">0xFFFFFFFF</span>
</span><span id="Obs-764"><a href="#Obs-764"><span class="linenos">764</span></a>
</span><span id="Obs-765"><a href="#Obs-765"><span class="linenos">765</span></a> <span class="c1"># Overload comparisons</span>
</span><span id="Obs-766"><a href="#Obs-766"><span class="linenos">766</span></a> <span class="k">def</span> <span class="fm">__lt__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">):</span>
</span><span id="Obs-767"><a href="#Obs-767"><span class="linenos">767</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">value</span> <span class="o">&lt;</span> <span class="n">other</span>
</span><span id="Obs-768"><a href="#Obs-768"><span class="linenos">768</span></a>
</span><span id="Obs-769"><a href="#Obs-769"><span class="linenos">769</span></a> <span class="k">def</span> <span class="fm">__le__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">):</span>
</span><span id="Obs-770"><a href="#Obs-770"><span class="linenos">770</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">value</span> <span class="o">&lt;=</span> <span class="n">other</span>
</span><span id="Obs-771"><a href="#Obs-771"><span class="linenos">771</span></a>
</span><span id="Obs-772"><a href="#Obs-772"><span class="linenos">772</span></a> <span class="k">def</span> <span class="fm">__gt__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">):</span>
</span><span id="Obs-773"><a href="#Obs-773"><span class="linenos">773</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">value</span> <span class="o">&gt;</span> <span class="n">other</span>
</span><span id="Obs-774"><a href="#Obs-774"><span class="linenos">774</span></a>
</span><span id="Obs-775"><a href="#Obs-775"><span class="linenos">775</span></a> <span class="k">def</span> <span class="fm">__ge__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">):</span>
</span><span id="Obs-776"><a href="#Obs-776"><span class="linenos">776</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">value</span> <span class="o">&gt;=</span> <span class="n">other</span>
</span><span id="Obs-777"><a href="#Obs-777"><span class="linenos">777</span></a>
</span><span id="Obs-778"><a href="#Obs-778"><span class="linenos">778</span></a> <span class="k">def</span> <span class="fm">__eq__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">):</span>
</span><span id="Obs-779"><a href="#Obs-779"><span class="linenos">779</span></a> <span class="k">if</span> <span class="n">other</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
</span><span id="Obs-780"><a href="#Obs-780"><span class="linenos">780</span></a> <span class="k">return</span> <span class="kc">False</span>
</span><span id="Obs-781"><a href="#Obs-781"><span class="linenos">781</span></a> <span class="k">return</span> <span class="p">(</span><span class="bp">self</span> <span class="o">-</span> <span class="n">other</span><span class="p">)</span><span class="o">.</span><span class="n">is_zero</span><span class="p">()</span>
</span><span id="Obs-782"><a href="#Obs-782"><span class="linenos">782</span></a>
</span><span id="Obs-783"><a href="#Obs-783"><span class="linenos">783</span></a> <span class="c1"># Overload math operations</span>
</span><span id="Obs-784"><a href="#Obs-784"><span class="linenos">784</span></a> <span class="k">def</span> <span class="fm">__add__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">y</span><span class="p">):</span>
</span><span id="Obs-785"><a href="#Obs-785"><span class="linenos">785</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">y</span><span class="p">,</span> <span class="n">Obs</span><span class="p">):</span>
</span><span id="Obs-786"><a href="#Obs-786"><span class="linenos">786</span></a> <span class="k">return</span> <span class="n">derived_observable</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">:</span> <span class="n">x</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">+</span> <span class="n">x</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="p">[</span><span class="bp">self</span><span class="p">,</span> <span class="n">y</span><span class="p">],</span> <span class="n">man_grad</span><span class="o">=</span><span class="p">[</span><span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">])</span>
</span><span id="Obs-787"><a href="#Obs-787"><span class="linenos">787</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="Obs-788"><a href="#Obs-788"><span class="linenos">788</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">y</span><span class="p">,</span> <span class="n">np</span><span class="o">.</span><span class="n">ndarray</span><span class="p">):</span>
</span><span id="Obs-789"><a href="#Obs-789"><span class="linenos">789</span></a> <span class="k">return</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">([</span><span class="bp">self</span> <span class="o">+</span> <span class="n">o</span> <span class="k">for</span> <span class="n">o</span> <span class="ow">in</span> <span class="n">y</span><span class="p">])</span>
</span><span id="Obs-790"><a href="#Obs-790"><span class="linenos">790</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">y</span><span class="p">,</span> <span class="nb">complex</span><span class="p">):</span>
</span><span id="Obs-791"><a href="#Obs-791"><span class="linenos">791</span></a> <span class="k">return</span> <span class="n">CObs</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> <span class="o">+</span> <span class="n">y</span>
</span><span id="Obs-792"><a href="#Obs-792"><span class="linenos">792</span></a> <span class="k">elif</span> <span class="n">y</span><span class="o">.</span><span class="vm">__class__</span><span class="o">.</span><span class="vm">__name__</span> <span class="ow">in</span> <span class="p">[</span><span class="s1">&#39;Corr&#39;</span><span class="p">,</span> <span class="s1">&#39;CObs&#39;</span><span class="p">]:</span>
</span><span id="Obs-793"><a href="#Obs-793"><span class="linenos">793</span></a> <span class="k">return</span> <span class="bp">NotImplemented</span>
</span><span id="Obs-794"><a href="#Obs-794"><span class="linenos">794</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="Obs-795"><a href="#Obs-795"><span class="linenos">795</span></a> <span class="k">return</span> <span class="n">derived_observable</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">:</span> <span class="n">x</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">+</span> <span class="n">y</span><span class="p">,</span> <span class="p">[</span><span class="bp">self</span><span class="p">],</span> <span class="n">man_grad</span><span class="o">=</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span>
</span><span id="Obs-796"><a href="#Obs-796"><span class="linenos">796</span></a>
</span><span id="Obs-797"><a href="#Obs-797"><span class="linenos">797</span></a> <span class="k">def</span> <span class="fm">__radd__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">y</span><span class="p">):</span>
</span><span id="Obs-798"><a href="#Obs-798"><span class="linenos">798</span></a> <span class="k">return</span> <span class="bp">self</span> <span class="o">+</span> <span class="n">y</span>
</span><span id="Obs-799"><a href="#Obs-799"><span class="linenos">799</span></a>
</span><span id="Obs-800"><a href="#Obs-800"><span class="linenos">800</span></a> <span class="k">def</span> <span class="fm">__mul__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">y</span><span class="p">):</span>
</span><span id="Obs-801"><a href="#Obs-801"><span class="linenos">801</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">y</span><span class="p">,</span> <span class="n">Obs</span><span class="p">):</span>
</span><span id="Obs-802"><a href="#Obs-802"><span class="linenos">802</span></a> <span class="k">return</span> <span class="n">derived_observable</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">:</span> <span class="n">x</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">*</span> <span class="n">x</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="p">[</span><span class="bp">self</span><span class="p">,</span> <span class="n">y</span><span class="p">],</span> <span class="n">man_grad</span><span class="o">=</span><span class="p">[</span><span class="n">y</span><span class="o">.</span><span class="n">value</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">value</span><span class="p">])</span>
</span><span id="Obs-803"><a href="#Obs-803"><span class="linenos">803</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="Obs-804"><a href="#Obs-804"><span class="linenos">804</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">y</span><span class="p">,</span> <span class="n">np</span><span class="o">.</span><span class="n">ndarray</span><span class="p">):</span>
</span><span id="Obs-805"><a href="#Obs-805"><span class="linenos">805</span></a> <span class="k">return</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">([</span><span class="bp">self</span> <span class="o">*</span> <span class="n">o</span> <span class="k">for</span> <span class="n">o</span> <span class="ow">in</span> <span class="n">y</span><span class="p">])</span>
</span><span id="Obs-806"><a href="#Obs-806"><span class="linenos">806</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">y</span><span class="p">,</span> <span class="nb">complex</span><span class="p">):</span>
</span><span id="Obs-807"><a href="#Obs-807"><span class="linenos">807</span></a> <span class="k">return</span> <span class="n">CObs</span><span class="p">(</span><span class="bp">self</span> <span class="o">*</span> <span class="n">y</span><span class="o">.</span><span class="n">real</span><span class="p">,</span> <span class="bp">self</span> <span class="o">*</span> <span class="n">y</span><span class="o">.</span><span class="n">imag</span><span class="p">)</span>
</span><span id="Obs-808"><a href="#Obs-808"><span class="linenos">808</span></a> <span class="k">elif</span> <span class="n">y</span><span class="o">.</span><span class="vm">__class__</span><span class="o">.</span><span class="vm">__name__</span> <span class="ow">in</span> <span class="p">[</span><span class="s1">&#39;Corr&#39;</span><span class="p">,</span> <span class="s1">&#39;CObs&#39;</span><span class="p">]:</span>
</span><span id="Obs-809"><a href="#Obs-809"><span class="linenos">809</span></a> <span class="k">return</span> <span class="bp">NotImplemented</span>
</span><span id="Obs-810"><a href="#Obs-810"><span class="linenos">810</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="Obs-811"><a href="#Obs-811"><span class="linenos">811</span></a> <span class="k">return</span> <span class="n">derived_observable</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">:</span> <span class="n">x</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">*</span> <span class="n">y</span><span class="p">,</span> <span class="p">[</span><span class="bp">self</span><span class="p">],</span> <span class="n">man_grad</span><span class="o">=</span><span class="p">[</span><span class="n">y</span><span class="p">])</span>
</span><span id="Obs-812"><a href="#Obs-812"><span class="linenos">812</span></a>
</span><span id="Obs-813"><a href="#Obs-813"><span class="linenos">813</span></a> <span class="k">def</span> <span class="fm">__rmul__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">y</span><span class="p">):</span>
</span><span id="Obs-814"><a href="#Obs-814"><span class="linenos">814</span></a> <span class="k">return</span> <span class="bp">self</span> <span class="o">*</span> <span class="n">y</span>
</span><span id="Obs-815"><a href="#Obs-815"><span class="linenos">815</span></a>
</span><span id="Obs-816"><a href="#Obs-816"><span class="linenos">816</span></a> <span class="k">def</span> <span class="fm">__sub__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">y</span><span class="p">):</span>
</span><span id="Obs-817"><a href="#Obs-817"><span class="linenos">817</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">y</span><span class="p">,</span> <span class="n">Obs</span><span class="p">):</span>
</span><span id="Obs-818"><a href="#Obs-818"><span class="linenos">818</span></a> <span class="k">return</span> <span class="n">derived_observable</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">:</span> <span class="n">x</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">-</span> <span class="n">x</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="p">[</span><span class="bp">self</span><span class="p">,</span> <span class="n">y</span><span class="p">],</span> <span class="n">man_grad</span><span class="o">=</span><span class="p">[</span><span class="mi">1</span><span class="p">,</span> <span class="o">-</span><span class="mi">1</span><span class="p">])</span>
</span><span id="Obs-819"><a href="#Obs-819"><span class="linenos">819</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="Obs-820"><a href="#Obs-820"><span class="linenos">820</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">y</span><span class="p">,</span> <span class="n">np</span><span class="o">.</span><span class="n">ndarray</span><span class="p">):</span>
</span><span id="Obs-821"><a href="#Obs-821"><span class="linenos">821</span></a> <span class="k">return</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">([</span><span class="bp">self</span> <span class="o">-</span> <span class="n">o</span> <span class="k">for</span> <span class="n">o</span> <span class="ow">in</span> <span class="n">y</span><span class="p">])</span>
</span><span id="Obs-822"><a href="#Obs-822"><span class="linenos">822</span></a> <span class="k">elif</span> <span class="n">y</span><span class="o">.</span><span class="vm">__class__</span><span class="o">.</span><span class="vm">__name__</span> <span class="ow">in</span> <span class="p">[</span><span class="s1">&#39;Corr&#39;</span><span class="p">,</span> <span class="s1">&#39;CObs&#39;</span><span class="p">]:</span>
</span><span id="Obs-823"><a href="#Obs-823"><span class="linenos">823</span></a> <span class="k">return</span> <span class="bp">NotImplemented</span>
</span><span id="Obs-824"><a href="#Obs-824"><span class="linenos">824</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="Obs-825"><a href="#Obs-825"><span class="linenos">825</span></a> <span class="k">return</span> <span class="n">derived_observable</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">:</span> <span class="n">x</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">-</span> <span class="n">y</span><span class="p">,</span> <span class="p">[</span><span class="bp">self</span><span class="p">],</span> <span class="n">man_grad</span><span class="o">=</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span>
</span><span id="Obs-826"><a href="#Obs-826"><span class="linenos">826</span></a>
</span><span id="Obs-827"><a href="#Obs-827"><span class="linenos">827</span></a> <span class="k">def</span> <span class="fm">__rsub__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">y</span><span class="p">):</span>
</span><span id="Obs-828"><a href="#Obs-828"><span class="linenos">828</span></a> <span class="k">return</span> <span class="o">-</span><span class="mi">1</span> <span class="o">*</span> <span class="p">(</span><span class="bp">self</span> <span class="o">-</span> <span class="n">y</span><span class="p">)</span>
</span><span id="Obs-829"><a href="#Obs-829"><span class="linenos">829</span></a>
</span><span id="Obs-830"><a href="#Obs-830"><span class="linenos">830</span></a> <span class="k">def</span> <span class="fm">__pos__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
</span><span id="Obs-831"><a href="#Obs-831"><span class="linenos">831</span></a> <span class="k">return</span> <span class="bp">self</span>
</span><span id="Obs-832"><a href="#Obs-832"><span class="linenos">832</span></a>
</span><span id="Obs-833"><a href="#Obs-833"><span class="linenos">833</span></a> <span class="k">def</span> <span class="fm">__neg__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
</span><span id="Obs-834"><a href="#Obs-834"><span class="linenos">834</span></a> <span class="k">return</span> <span class="o">-</span><span class="mi">1</span> <span class="o">*</span> <span class="bp">self</span>
</span><span id="Obs-835"><a href="#Obs-835"><span class="linenos">835</span></a>
</span><span id="Obs-836"><a href="#Obs-836"><span class="linenos">836</span></a> <span class="k">def</span> <span class="fm">__truediv__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">y</span><span class="p">):</span>
</span><span id="Obs-837"><a href="#Obs-837"><span class="linenos">837</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">y</span><span class="p">,</span> <span class="n">Obs</span><span class="p">):</span>
</span><span id="Obs-838"><a href="#Obs-838"><span class="linenos">838</span></a> <span class="k">return</span> <span class="n">derived_observable</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">:</span> <span class="n">x</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">/</span> <span class="n">x</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="p">[</span><span class="bp">self</span><span class="p">,</span> <span class="n">y</span><span class="p">],</span> <span class="n">man_grad</span><span class="o">=</span><span class="p">[</span><span class="mi">1</span> <span class="o">/</span> <span class="n">y</span><span class="o">.</span><span class="n">value</span><span class="p">,</span> <span class="o">-</span> <span class="bp">self</span><span class="o">.</span><span class="n">value</span> <span class="o">/</span> <span class="n">y</span><span class="o">.</span><span class="n">value</span> <span class="o">**</span> <span class="mi">2</span><span class="p">])</span>
</span><span id="Obs-839"><a href="#Obs-839"><span class="linenos">839</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="Obs-840"><a href="#Obs-840"><span class="linenos">840</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">y</span><span class="p">,</span> <span class="n">np</span><span class="o">.</span><span class="n">ndarray</span><span class="p">):</span>
</span><span id="Obs-841"><a href="#Obs-841"><span class="linenos">841</span></a> <span class="k">return</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">([</span><span class="bp">self</span> <span class="o">/</span> <span class="n">o</span> <span class="k">for</span> <span class="n">o</span> <span class="ow">in</span> <span class="n">y</span><span class="p">])</span>
</span><span id="Obs-842"><a href="#Obs-842"><span class="linenos">842</span></a> <span class="k">elif</span> <span class="n">y</span><span class="o">.</span><span class="vm">__class__</span><span class="o">.</span><span class="vm">__name__</span> <span class="ow">in</span> <span class="p">[</span><span class="s1">&#39;Corr&#39;</span><span class="p">,</span> <span class="s1">&#39;CObs&#39;</span><span class="p">]:</span>
</span><span id="Obs-843"><a href="#Obs-843"><span class="linenos">843</span></a> <span class="k">return</span> <span class="bp">NotImplemented</span>
</span><span id="Obs-844"><a href="#Obs-844"><span class="linenos">844</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="Obs-845"><a href="#Obs-845"><span class="linenos">845</span></a> <span class="k">return</span> <span class="n">derived_observable</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">:</span> <span class="n">x</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">/</span> <span class="n">y</span><span class="p">,</span> <span class="p">[</span><span class="bp">self</span><span class="p">],</span> <span class="n">man_grad</span><span class="o">=</span><span class="p">[</span><span class="mi">1</span> <span class="o">/</span> <span class="n">y</span><span class="p">])</span>
</span><span id="Obs-846"><a href="#Obs-846"><span class="linenos">846</span></a>
</span><span id="Obs-847"><a href="#Obs-847"><span class="linenos">847</span></a> <span class="k">def</span> <span class="fm">__rtruediv__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">y</span><span class="p">):</span>
</span><span id="Obs-848"><a href="#Obs-848"><span class="linenos">848</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">y</span><span class="p">,</span> <span class="n">Obs</span><span class="p">):</span>
</span><span id="Obs-849"><a href="#Obs-849"><span class="linenos">849</span></a> <span class="k">return</span> <span class="n">derived_observable</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">:</span> <span class="n">x</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">/</span> <span class="n">x</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="p">[</span><span class="n">y</span><span class="p">,</span> <span class="bp">self</span><span class="p">],</span> <span class="n">man_grad</span><span class="o">=</span><span class="p">[</span><span class="mi">1</span> <span class="o">/</span> <span class="bp">self</span><span class="o">.</span><span class="n">value</span><span class="p">,</span> <span class="o">-</span> <span class="n">y</span><span class="o">.</span><span class="n">value</span> <span class="o">/</span> <span class="bp">self</span><span class="o">.</span><span class="n">value</span> <span class="o">**</span> <span class="mi">2</span><span class="p">])</span>
</span><span id="Obs-850"><a href="#Obs-850"><span class="linenos">850</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="Obs-851"><a href="#Obs-851"><span class="linenos">851</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">y</span><span class="p">,</span> <span class="n">np</span><span class="o">.</span><span class="n">ndarray</span><span class="p">):</span>
</span><span id="Obs-852"><a href="#Obs-852"><span class="linenos">852</span></a> <span class="k">return</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">([</span><span class="n">o</span> <span class="o">/</span> <span class="bp">self</span> <span class="k">for</span> <span class="n">o</span> <span class="ow">in</span> <span class="n">y</span><span class="p">])</span>
</span><span id="Obs-853"><a href="#Obs-853"><span class="linenos">853</span></a> <span class="k">elif</span> <span class="n">y</span><span class="o">.</span><span class="vm">__class__</span><span class="o">.</span><span class="vm">__name__</span> <span class="ow">in</span> <span class="p">[</span><span class="s1">&#39;Corr&#39;</span><span class="p">,</span> <span class="s1">&#39;CObs&#39;</span><span class="p">]:</span>
</span><span id="Obs-854"><a href="#Obs-854"><span class="linenos">854</span></a> <span class="k">return</span> <span class="bp">NotImplemented</span>
</span><span id="Obs-855"><a href="#Obs-855"><span class="linenos">855</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="Obs-856"><a href="#Obs-856"><span class="linenos">856</span></a> <span class="k">return</span> <span class="n">derived_observable</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">:</span> <span class="n">y</span> <span class="o">/</span> <span class="n">x</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="p">[</span><span class="bp">self</span><span class="p">],</span> <span class="n">man_grad</span><span class="o">=</span><span class="p">[</span><span class="o">-</span><span class="n">y</span> <span class="o">/</span> <span class="bp">self</span><span class="o">.</span><span class="n">value</span> <span class="o">**</span> <span class="mi">2</span><span class="p">])</span>
</span><span id="Obs-857"><a href="#Obs-857"><span class="linenos">857</span></a>
</span><span id="Obs-858"><a href="#Obs-858"><span class="linenos">858</span></a> <span class="k">def</span> <span class="fm">__pow__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">y</span><span class="p">):</span>
</span><span id="Obs-859"><a href="#Obs-859"><span class="linenos">859</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">y</span><span class="p">,</span> <span class="n">Obs</span><span class="p">):</span>
</span><span id="Obs-860"><a href="#Obs-860"><span class="linenos">860</span></a> <span class="k">return</span> <span class="n">derived_observable</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span><span class="p">:</span> <span class="n">x</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">**</span> <span class="n">x</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="p">[</span><span class="bp">self</span><span class="p">,</span> <span class="n">y</span><span class="p">])</span>
</span><span id="Obs-861"><a href="#Obs-861"><span class="linenos">861</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="Obs-862"><a href="#Obs-862"><span class="linenos">862</span></a> <span class="k">return</span> <span class="n">derived_observable</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span><span class="p">:</span> <span class="n">x</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">**</span> <span class="n">y</span><span class="p">,</span> <span class="p">[</span><span class="bp">self</span><span class="p">])</span>
</span><span id="Obs-863"><a href="#Obs-863"><span class="linenos">863</span></a>
</span><span id="Obs-864"><a href="#Obs-864"><span class="linenos">864</span></a> <span class="k">def</span> <span class="fm">__rpow__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">y</span><span class="p">):</span>
</span><span id="Obs-865"><a href="#Obs-865"><span class="linenos">865</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">y</span><span class="p">,</span> <span class="n">Obs</span><span class="p">):</span>
</span><span id="Obs-866"><a href="#Obs-866"><span class="linenos">866</span></a> <span class="k">return</span> <span class="n">derived_observable</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span><span class="p">:</span> <span class="n">x</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">**</span> <span class="n">x</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="p">[</span><span class="n">y</span><span class="p">,</span> <span class="bp">self</span><span class="p">])</span>
</span><span id="Obs-867"><a href="#Obs-867"><span class="linenos">867</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="Obs-868"><a href="#Obs-868"><span class="linenos">868</span></a> <span class="k">return</span> <span class="n">derived_observable</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span><span class="p">:</span> <span class="n">y</span> <span class="o">**</span> <span class="n">x</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="p">[</span><span class="bp">self</span><span class="p">])</span>
</span><span id="Obs-869"><a href="#Obs-869"><span class="linenos">869</span></a>
</span><span id="Obs-870"><a href="#Obs-870"><span class="linenos">870</span></a> <span class="k">def</span> <span class="fm">__abs__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
</span><span id="Obs-871"><a href="#Obs-871"><span class="linenos">871</span></a> <span class="k">return</span> <span class="n">derived_observable</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span><span class="p">:</span> <span class="n">anp</span><span class="o">.</span><span class="n">abs</span><span class="p">(</span><span class="n">x</span><span class="p">[</span><span class="mi">0</span><span class="p">]),</span> <span class="p">[</span><span class="bp">self</span><span class="p">])</span>
</span><span id="Obs-872"><a href="#Obs-872"><span class="linenos">872</span></a>
</span><span id="Obs-873"><a href="#Obs-873"><span class="linenos">873</span></a> <span class="c1"># Overload numpy functions</span>
</span><span id="Obs-874"><a href="#Obs-874"><span class="linenos">874</span></a> <span class="k">def</span> <span class="nf">sqrt</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
</span><span id="Obs-875"><a href="#Obs-875"><span class="linenos">875</span></a> <span class="k">return</span> <span class="n">derived_observable</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">:</span> <span class="n">np</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="n">x</span><span class="p">[</span><span class="mi">0</span><span class="p">]),</span> <span class="p">[</span><span class="bp">self</span><span class="p">],</span> <span class="n">man_grad</span><span class="o">=</span><span class="p">[</span><span class="mi">1</span> <span class="o">/</span> <span class="mi">2</span> <span class="o">/</span> <span class="n">np</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">value</span><span class="p">)])</span>
</span><span id="Obs-876"><a href="#Obs-876"><span class="linenos">876</span></a>
</span><span id="Obs-877"><a href="#Obs-877"><span class="linenos">877</span></a> <span class="k">def</span> <span class="nf">log</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
</span><span id="Obs-878"><a href="#Obs-878"><span class="linenos">878</span></a> <span class="k">return</span> <span class="n">derived_observable</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">:</span> <span class="n">np</span><span class="o">.</span><span class="n">log</span><span class="p">(</span><span class="n">x</span><span class="p">[</span><span class="mi">0</span><span class="p">]),</span> <span class="p">[</span><span class="bp">self</span><span class="p">],</span> <span class="n">man_grad</span><span class="o">=</span><span class="p">[</span><span class="mi">1</span> <span class="o">/</span> <span class="bp">self</span><span class="o">.</span><span class="n">value</span><span class="p">])</span>
</span><span id="Obs-879"><a href="#Obs-879"><span class="linenos">879</span></a>
</span><span id="Obs-880"><a href="#Obs-880"><span class="linenos">880</span></a> <span class="k">def</span> <span class="nf">exp</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
</span><span id="Obs-881"><a href="#Obs-881"><span class="linenos">881</span></a> <span class="k">return</span> <span class="n">derived_observable</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">:</span> <span class="n">np</span><span class="o">.</span><span class="n">exp</span><span class="p">(</span><span class="n">x</span><span class="p">[</span><span class="mi">0</span><span class="p">]),</span> <span class="p">[</span><span class="bp">self</span><span class="p">],</span> <span class="n">man_grad</span><span class="o">=</span><span class="p">[</span><span class="n">np</span><span class="o">.</span><span class="n">exp</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">value</span><span class="p">)])</span>
</span><span id="Obs-882"><a href="#Obs-882"><span class="linenos">882</span></a>
</span><span id="Obs-883"><a href="#Obs-883"><span class="linenos">883</span></a> <span class="k">def</span> <span class="nf">sin</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
</span><span id="Obs-884"><a href="#Obs-884"><span class="linenos">884</span></a> <span class="k">return</span> <span class="n">derived_observable</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">:</span> <span class="n">np</span><span class="o">.</span><span class="n">sin</span><span class="p">(</span><span class="n">x</span><span class="p">[</span><span class="mi">0</span><span class="p">]),</span> <span class="p">[</span><span class="bp">self</span><span class="p">],</span> <span class="n">man_grad</span><span class="o">=</span><span class="p">[</span><span class="n">np</span><span class="o">.</span><span class="n">cos</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">value</span><span class="p">)])</span>
</span><span id="Obs-885"><a href="#Obs-885"><span class="linenos">885</span></a>
</span><span id="Obs-886"><a href="#Obs-886"><span class="linenos">886</span></a> <span class="k">def</span> <span class="nf">cos</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
</span><span id="Obs-887"><a href="#Obs-887"><span class="linenos">887</span></a> <span class="k">return</span> <span class="n">derived_observable</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">:</span> <span class="n">np</span><span class="o">.</span><span class="n">cos</span><span class="p">(</span><span class="n">x</span><span class="p">[</span><span class="mi">0</span><span class="p">]),</span> <span class="p">[</span><span class="bp">self</span><span class="p">],</span> <span class="n">man_grad</span><span class="o">=</span><span class="p">[</span><span class="o">-</span><span class="n">np</span><span class="o">.</span><span class="n">sin</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">value</span><span class="p">)])</span>
</span><span id="Obs-888"><a href="#Obs-888"><span class="linenos">888</span></a>
</span><span id="Obs-889"><a href="#Obs-889"><span class="linenos">889</span></a> <span class="k">def</span> <span class="nf">tan</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
</span><span id="Obs-890"><a href="#Obs-890"><span class="linenos">890</span></a> <span class="k">return</span> <span class="n">derived_observable</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">:</span> <span class="n">np</span><span class="o">.</span><span class="n">tan</span><span class="p">(</span><span class="n">x</span><span class="p">[</span><span class="mi">0</span><span class="p">]),</span> <span class="p">[</span><span class="bp">self</span><span class="p">],</span> <span class="n">man_grad</span><span class="o">=</span><span class="p">[</span><span class="mi">1</span> <span class="o">/</span> <span class="n">np</span><span class="o">.</span><span class="n">cos</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">value</span><span class="p">)</span> <span class="o">**</span> <span class="mi">2</span><span class="p">])</span>
</span><span id="Obs-891"><a href="#Obs-891"><span class="linenos">891</span></a>
</span><span id="Obs-892"><a href="#Obs-892"><span class="linenos">892</span></a> <span class="k">def</span> <span class="nf">arcsin</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
</span><span id="Obs-893"><a href="#Obs-893"><span class="linenos">893</span></a> <span class="k">return</span> <span class="n">derived_observable</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span><span class="p">:</span> <span class="n">anp</span><span class="o">.</span><span class="n">arcsin</span><span class="p">(</span><span class="n">x</span><span class="p">[</span><span class="mi">0</span><span class="p">]),</span> <span class="p">[</span><span class="bp">self</span><span class="p">])</span>
</span><span id="Obs-894"><a href="#Obs-894"><span class="linenos">894</span></a>
</span><span id="Obs-895"><a href="#Obs-895"><span class="linenos">895</span></a> <span class="k">def</span> <span class="nf">arccos</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
</span><span id="Obs-896"><a href="#Obs-896"><span class="linenos">896</span></a> <span class="k">return</span> <span class="n">derived_observable</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span><span class="p">:</span> <span class="n">anp</span><span class="o">.</span><span class="n">arccos</span><span class="p">(</span><span class="n">x</span><span class="p">[</span><span class="mi">0</span><span class="p">]),</span> <span class="p">[</span><span class="bp">self</span><span class="p">])</span>
</span><span id="Obs-897"><a href="#Obs-897"><span class="linenos">897</span></a>
</span><span id="Obs-898"><a href="#Obs-898"><span class="linenos">898</span></a> <span class="k">def</span> <span class="nf">arctan</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
</span><span id="Obs-899"><a href="#Obs-899"><span class="linenos">899</span></a> <span class="k">return</span> <span class="n">derived_observable</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span><span class="p">:</span> <span class="n">anp</span><span class="o">.</span><span class="n">arctan</span><span class="p">(</span><span class="n">x</span><span class="p">[</span><span class="mi">0</span><span class="p">]),</span> <span class="p">[</span><span class="bp">self</span><span class="p">])</span>
</span><span id="Obs-900"><a href="#Obs-900"><span class="linenos">900</span></a>
</span><span id="Obs-901"><a href="#Obs-901"><span class="linenos">901</span></a> <span class="k">def</span> <span class="nf">sinh</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
</span><span id="Obs-902"><a href="#Obs-902"><span class="linenos">902</span></a> <span class="k">return</span> <span class="n">derived_observable</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">:</span> <span class="n">np</span><span class="o">.</span><span class="n">sinh</span><span class="p">(</span><span class="n">x</span><span class="p">[</span><span class="mi">0</span><span class="p">]),</span> <span class="p">[</span><span class="bp">self</span><span class="p">],</span> <span class="n">man_grad</span><span class="o">=</span><span class="p">[</span><span class="n">np</span><span class="o">.</span><span class="n">cosh</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">value</span><span class="p">)])</span>
</span><span id="Obs-903"><a href="#Obs-903"><span class="linenos">903</span></a>
</span><span id="Obs-904"><a href="#Obs-904"><span class="linenos">904</span></a> <span class="k">def</span> <span class="nf">cosh</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
</span><span id="Obs-905"><a href="#Obs-905"><span class="linenos">905</span></a> <span class="k">return</span> <span class="n">derived_observable</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">:</span> <span class="n">np</span><span class="o">.</span><span class="n">cosh</span><span class="p">(</span><span class="n">x</span><span class="p">[</span><span class="mi">0</span><span class="p">]),</span> <span class="p">[</span><span class="bp">self</span><span class="p">],</span> <span class="n">man_grad</span><span class="o">=</span><span class="p">[</span><span class="n">np</span><span class="o">.</span><span class="n">sinh</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">value</span><span class="p">)])</span>
</span><span id="Obs-906"><a href="#Obs-906"><span class="linenos">906</span></a>
</span><span id="Obs-907"><a href="#Obs-907"><span class="linenos">907</span></a> <span class="k">def</span> <span class="nf">tanh</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
</span><span id="Obs-908"><a href="#Obs-908"><span class="linenos">908</span></a> <span class="k">return</span> <span class="n">derived_observable</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">:</span> <span class="n">np</span><span class="o">.</span><span class="n">tanh</span><span class="p">(</span><span class="n">x</span><span class="p">[</span><span class="mi">0</span><span class="p">]),</span> <span class="p">[</span><span class="bp">self</span><span class="p">],</span> <span class="n">man_grad</span><span class="o">=</span><span class="p">[</span><span class="mi">1</span> <span class="o">/</span> <span class="n">np</span><span class="o">.</span><span class="n">cosh</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">value</span><span class="p">)</span> <span class="o">**</span> <span class="mi">2</span><span class="p">])</span>
</span><span id="Obs-909"><a href="#Obs-909"><span class="linenos">909</span></a>
</span><span id="Obs-910"><a href="#Obs-910"><span class="linenos">910</span></a> <span class="k">def</span> <span class="nf">arcsinh</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
</span><span id="Obs-911"><a href="#Obs-911"><span class="linenos">911</span></a> <span class="k">return</span> <span class="n">derived_observable</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span><span class="p">:</span> <span class="n">anp</span><span class="o">.</span><span class="n">arcsinh</span><span class="p">(</span><span class="n">x</span><span class="p">[</span><span class="mi">0</span><span class="p">]),</span> <span class="p">[</span><span class="bp">self</span><span class="p">])</span>
</span><span id="Obs-912"><a href="#Obs-912"><span class="linenos">912</span></a>
</span><span id="Obs-913"><a href="#Obs-913"><span class="linenos">913</span></a> <span class="k">def</span> <span class="nf">arccosh</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
</span><span id="Obs-914"><a href="#Obs-914"><span class="linenos">914</span></a> <span class="k">return</span> <span class="n">derived_observable</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span><span class="p">:</span> <span class="n">anp</span><span class="o">.</span><span class="n">arccosh</span><span class="p">(</span><span class="n">x</span><span class="p">[</span><span class="mi">0</span><span class="p">]),</span> <span class="p">[</span><span class="bp">self</span><span class="p">])</span>
</span><span id="Obs-915"><a href="#Obs-915"><span class="linenos">915</span></a>
</span><span id="Obs-916"><a href="#Obs-916"><span class="linenos">916</span></a> <span class="k">def</span> <span class="nf">arctanh</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
</span><span id="Obs-917"><a href="#Obs-917"><span class="linenos">917</span></a> <span class="k">return</span> <span class="n">derived_observable</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span><span class="p">:</span> <span class="n">anp</span><span class="o">.</span><span class="n">arctanh</span><span class="p">(</span><span class="n">x</span><span class="p">[</span><span class="mi">0</span><span class="p">]),</span> <span class="p">[</span><span class="bp">self</span><span class="p">])</span>
</span></pre></div>
<div class="docstring"><p>Class for a general observable.</p>
<p>Instances of Obs are the basic objects of a pyerrors error analysis.
They are initialized with a list which contains arrays of samples for
different ensembles/replica and another list of same length which contains
the names of the ensembles/replica. Mathematical operations can be
performed on instances. The result is another instance of Obs. The error of
an instance can be computed with the gamma_method. Also contains additional
methods for output and visualization of the error calculation.</p>
<h6 id="attributes">Attributes</h6>
<ul>
<li><strong>S_global</strong> (float):
Standard value for S (default 2.0)</li>
<li><strong>S_dict</strong> (dict):
Dictionary for S values. If an entry for a given ensemble
exists this overwrites the standard value for that ensemble.</li>
<li><strong>tau_exp_global</strong> (float):
Standard value for tau_exp (default 0.0)</li>
<li><strong>tau_exp_dict</strong> (dict):
Dictionary for tau_exp values. If an entry for a given ensemble exists
this overwrites the standard value for that ensemble.</li>
<li><strong>N_sigma_global</strong> (float):
Standard value for N_sigma (default 1.0)</li>
<li><strong>N_sigma_dict</strong> (dict):
Dictionary for N_sigma values. If an entry for a given ensemble exists
this overwrites the standard value for that ensemble.</li>
</ul>
</div>
<div id="Obs.__init__" class="classattr">
<input id="Obs.__init__-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<div class="attr function">
<span class="name">Obs</span><span class="signature pdoc-code condensed">(<span class="param"><span class="n">samples</span>, </span><span class="param"><span class="n">names</span>, </span><span class="param"><span class="n">idl</span><span class="o">=</span><span class="kc">None</span>, </span><span class="param"><span class="o">**</span><span class="n">kwargs</span></span>)</span>
<label class="view-source-button" for="Obs.__init__-view-source"><span>View Source</span></label>
</div>
<a class="headerlink" href="#Obs.__init__"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="Obs.__init__-61"><a href="#Obs.__init__-61"><span class="linenos"> 61</span></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">samples</span><span class="p">,</span> <span class="n">names</span><span class="p">,</span> <span class="n">idl</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
</span><span id="Obs.__init__-62"><a href="#Obs.__init__-62"><span class="linenos"> 62</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot; Initialize Obs object.</span>
</span><span id="Obs.__init__-63"><a href="#Obs.__init__-63"><span class="linenos"> 63</span></a>
</span><span id="Obs.__init__-64"><a href="#Obs.__init__-64"><span class="linenos"> 64</span></a><span class="sd"> Parameters</span>
</span><span id="Obs.__init__-65"><a href="#Obs.__init__-65"><span class="linenos"> 65</span></a><span class="sd"> ----------</span>
</span><span id="Obs.__init__-66"><a href="#Obs.__init__-66"><span class="linenos"> 66</span></a><span class="sd"> samples : list</span>
</span><span id="Obs.__init__-67"><a href="#Obs.__init__-67"><span class="linenos"> 67</span></a><span class="sd"> list of numpy arrays containing the Monte Carlo samples</span>
</span><span id="Obs.__init__-68"><a href="#Obs.__init__-68"><span class="linenos"> 68</span></a><span class="sd"> names : list</span>
</span><span id="Obs.__init__-69"><a href="#Obs.__init__-69"><span class="linenos"> 69</span></a><span class="sd"> list of strings labeling the individual samples</span>
</span><span id="Obs.__init__-70"><a href="#Obs.__init__-70"><span class="linenos"> 70</span></a><span class="sd"> idl : list, optional</span>
</span><span id="Obs.__init__-71"><a href="#Obs.__init__-71"><span class="linenos"> 71</span></a><span class="sd"> list of ranges or lists on which the samples are defined</span>
</span><span id="Obs.__init__-72"><a href="#Obs.__init__-72"><span class="linenos"> 72</span></a><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="Obs.__init__-73"><a href="#Obs.__init__-73"><span class="linenos"> 73</span></a>
</span><span id="Obs.__init__-74"><a href="#Obs.__init__-74"><span class="linenos"> 74</span></a> <span class="k">if</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;means&quot;</span><span class="p">)</span> <span class="ow">is</span> <span class="kc">None</span> <span class="ow">and</span> <span class="nb">len</span><span class="p">(</span><span class="n">samples</span><span class="p">):</span>
</span><span id="Obs.__init__-75"><a href="#Obs.__init__-75"><span class="linenos"> 75</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">samples</span><span class="p">)</span> <span class="o">!=</span> <span class="nb">len</span><span class="p">(</span><span class="n">names</span><span class="p">):</span>
</span><span id="Obs.__init__-76"><a href="#Obs.__init__-76"><span class="linenos"> 76</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s1">&#39;Length of samples and names incompatible.&#39;</span><span class="p">)</span>
</span><span id="Obs.__init__-77"><a href="#Obs.__init__-77"><span class="linenos"> 77</span></a> <span class="k">if</span> <span class="n">idl</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
</span><span id="Obs.__init__-78"><a href="#Obs.__init__-78"><span class="linenos"> 78</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">idl</span><span class="p">)</span> <span class="o">!=</span> <span class="nb">len</span><span class="p">(</span><span class="n">names</span><span class="p">):</span>
</span><span id="Obs.__init__-79"><a href="#Obs.__init__-79"><span class="linenos"> 79</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s1">&#39;Length of idl incompatible with samples and names.&#39;</span><span class="p">)</span>
</span><span id="Obs.__init__-80"><a href="#Obs.__init__-80"><span class="linenos"> 80</span></a> <span class="n">name_length</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">names</span><span class="p">)</span>
</span><span id="Obs.__init__-81"><a href="#Obs.__init__-81"><span class="linenos"> 81</span></a> <span class="k">if</span> <span class="n">name_length</span> <span class="o">&gt;</span> <span class="mi">1</span><span class="p">:</span>
</span><span id="Obs.__init__-82"><a href="#Obs.__init__-82"><span class="linenos"> 82</span></a> <span class="k">if</span> <span class="n">name_length</span> <span class="o">!=</span> <span class="nb">len</span><span class="p">(</span><span class="nb">set</span><span class="p">(</span><span class="n">names</span><span class="p">)):</span>
</span><span id="Obs.__init__-83"><a href="#Obs.__init__-83"><span class="linenos"> 83</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s1">&#39;Names are not unique.&#39;</span><span class="p">)</span>
</span><span id="Obs.__init__-84"><a href="#Obs.__init__-84"><span class="linenos"> 84</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">all</span><span class="p">(</span><span class="nb">isinstance</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="nb">str</span><span class="p">)</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">names</span><span class="p">):</span>
</span><span id="Obs.__init__-85"><a href="#Obs.__init__-85"><span class="linenos"> 85</span></a> <span class="k">raise</span> <span class="ne">TypeError</span><span class="p">(</span><span class="s1">&#39;All names have to be strings.&#39;</span><span class="p">)</span>
</span><span id="Obs.__init__-86"><a href="#Obs.__init__-86"><span class="linenos"> 86</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="Obs.__init__-87"><a href="#Obs.__init__-87"><span class="linenos"> 87</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">names</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="nb">str</span><span class="p">):</span>
</span><span id="Obs.__init__-88"><a href="#Obs.__init__-88"><span class="linenos"> 88</span></a> <span class="k">raise</span> <span class="ne">TypeError</span><span class="p">(</span><span class="s1">&#39;All names have to be strings.&#39;</span><span class="p">)</span>
</span><span id="Obs.__init__-89"><a href="#Obs.__init__-89"><span class="linenos"> 89</span></a> <span class="k">if</span> <span class="nb">min</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">x</span><span class="p">)</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">samples</span><span class="p">)</span> <span class="o">&lt;=</span> <span class="mi">4</span><span class="p">:</span>
</span><span id="Obs.__init__-90"><a href="#Obs.__init__-90"><span class="linenos"> 90</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s1">&#39;Samples have to have at least 5 entries.&#39;</span><span class="p">)</span>
</span><span id="Obs.__init__-91"><a href="#Obs.__init__-91"><span class="linenos"> 91</span></a>
</span><span id="Obs.__init__-92"><a href="#Obs.__init__-92"><span class="linenos"> 92</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">names</span> <span class="o">=</span> <span class="nb">sorted</span><span class="p">(</span><span class="n">names</span><span class="p">)</span>
</span><span id="Obs.__init__-93"><a href="#Obs.__init__-93"><span class="linenos"> 93</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">shape</span> <span class="o">=</span> <span class="p">{}</span>
</span><span id="Obs.__init__-94"><a href="#Obs.__init__-94"><span class="linenos"> 94</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">r_values</span> <span class="o">=</span> <span class="p">{}</span>
</span><span id="Obs.__init__-95"><a href="#Obs.__init__-95"><span class="linenos"> 95</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">deltas</span> <span class="o">=</span> <span class="p">{}</span>
</span><span id="Obs.__init__-96"><a href="#Obs.__init__-96"><span class="linenos"> 96</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_covobs</span> <span class="o">=</span> <span class="p">{}</span>
</span><span id="Obs.__init__-97"><a href="#Obs.__init__-97"><span class="linenos"> 97</span></a>
</span><span id="Obs.__init__-98"><a href="#Obs.__init__-98"><span class="linenos"> 98</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_value</span> <span class="o">=</span> <span class="mi">0</span>
</span><span id="Obs.__init__-99"><a href="#Obs.__init__-99"><span class="linenos"> 99</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">N</span> <span class="o">=</span> <span class="mi">0</span>
</span><span id="Obs.__init__-100"><a href="#Obs.__init__-100"><span class="linenos">100</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">idl</span> <span class="o">=</span> <span class="p">{}</span>
</span><span id="Obs.__init__-101"><a href="#Obs.__init__-101"><span class="linenos">101</span></a> <span class="k">if</span> <span class="n">idl</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
</span><span id="Obs.__init__-102"><a href="#Obs.__init__-102"><span class="linenos">102</span></a> <span class="k">for</span> <span class="n">name</span><span class="p">,</span> <span class="n">idx</span> <span class="ow">in</span> <span class="nb">sorted</span><span class="p">(</span><span class="nb">zip</span><span class="p">(</span><span class="n">names</span><span class="p">,</span> <span class="n">idl</span><span class="p">)):</span>
</span><span id="Obs.__init__-103"><a href="#Obs.__init__-103"><span class="linenos">103</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">idx</span><span class="p">,</span> <span class="nb">range</span><span class="p">):</span>
</span><span id="Obs.__init__-104"><a href="#Obs.__init__-104"><span class="linenos">104</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">idl</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="o">=</span> <span class="n">idx</span>
</span><span id="Obs.__init__-105"><a href="#Obs.__init__-105"><span class="linenos">105</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">idx</span><span class="p">,</span> <span class="p">(</span><span class="nb">list</span><span class="p">,</span> <span class="n">np</span><span class="o">.</span><span class="n">ndarray</span><span class="p">)):</span>
</span><span id="Obs.__init__-106"><a href="#Obs.__init__-106"><span class="linenos">106</span></a> <span class="n">dc</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">unique</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">diff</span><span class="p">(</span><span class="n">idx</span><span class="p">))</span>
</span><span id="Obs.__init__-107"><a href="#Obs.__init__-107"><span class="linenos">107</span></a> <span class="k">if</span> <span class="n">np</span><span class="o">.</span><span class="n">any</span><span class="p">(</span><span class="n">dc</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">):</span>
</span><span id="Obs.__init__-108"><a href="#Obs.__init__-108"><span class="linenos">108</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;Unsorted idx for idl[</span><span class="si">%s</span><span class="s2">] at position </span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="s1">&#39; &#39;</span><span class="o">.</span><span class="n">join</span><span class="p">([</span><span class="s1">&#39;</span><span class="si">%s</span><span class="s1">&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">pos</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span> <span class="k">for</span> <span class="n">pos</span> <span class="ow">in</span> <span class="n">np</span><span class="o">.</span><span class="n">where</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">diff</span><span class="p">(</span><span class="n">idx</span><span class="p">)</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)[</span><span class="mi">0</span><span class="p">]])))</span>
</span><span id="Obs.__init__-109"><a href="#Obs.__init__-109"><span class="linenos">109</span></a> <span class="k">elif</span> <span class="n">np</span><span class="o">.</span><span class="n">any</span><span class="p">(</span><span class="n">dc</span> <span class="o">==</span> <span class="mi">0</span><span class="p">):</span>
</span><span id="Obs.__init__-110"><a href="#Obs.__init__-110"><span class="linenos">110</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;Duplicate entries in idx for idl[</span><span class="si">%s</span><span class="s2">] at position </span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="s1">&#39; &#39;</span><span class="o">.</span><span class="n">join</span><span class="p">([</span><span class="s1">&#39;</span><span class="si">%s</span><span class="s1">&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">pos</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span> <span class="k">for</span> <span class="n">pos</span> <span class="ow">in</span> <span class="n">np</span><span class="o">.</span><span class="n">where</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">diff</span><span class="p">(</span><span class="n">idx</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span><span class="p">)[</span><span class="mi">0</span><span class="p">]])))</span>
</span><span id="Obs.__init__-111"><a href="#Obs.__init__-111"><span class="linenos">111</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">dc</span><span class="p">)</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span>
</span><span id="Obs.__init__-112"><a href="#Obs.__init__-112"><span class="linenos">112</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">idl</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="o">=</span> <span class="nb">range</span><span class="p">(</span><span class="n">idx</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">idx</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> <span class="o">+</span> <span class="n">dc</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">dc</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
</span><span id="Obs.__init__-113"><a href="#Obs.__init__-113"><span class="linenos">113</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="Obs.__init__-114"><a href="#Obs.__init__-114"><span class="linenos">114</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">idl</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="n">idx</span><span class="p">)</span>
</span><span id="Obs.__init__-115"><a href="#Obs.__init__-115"><span class="linenos">115</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="Obs.__init__-116"><a href="#Obs.__init__-116"><span class="linenos">116</span></a> <span class="k">raise</span> <span class="ne">TypeError</span><span class="p">(</span><span class="s1">&#39;incompatible type for idl[</span><span class="si">%s</span><span class="s1">].&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">name</span><span class="p">))</span>
</span><span id="Obs.__init__-117"><a href="#Obs.__init__-117"><span class="linenos">117</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="Obs.__init__-118"><a href="#Obs.__init__-118"><span class="linenos">118</span></a> <span class="k">for</span> <span class="n">name</span><span class="p">,</span> <span class="n">sample</span> <span class="ow">in</span> <span class="nb">sorted</span><span class="p">(</span><span class="nb">zip</span><span class="p">(</span><span class="n">names</span><span class="p">,</span> <span class="n">samples</span><span class="p">)):</span>
</span><span id="Obs.__init__-119"><a href="#Obs.__init__-119"><span class="linenos">119</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">idl</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="o">=</span> <span class="nb">range</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">sample</span><span class="p">)</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span>
</span><span id="Obs.__init__-120"><a href="#Obs.__init__-120"><span class="linenos">120</span></a>
</span><span id="Obs.__init__-121"><a href="#Obs.__init__-121"><span class="linenos">121</span></a> <span class="k">if</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;means&quot;</span><span class="p">)</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
</span><span id="Obs.__init__-122"><a href="#Obs.__init__-122"><span class="linenos">122</span></a> <span class="k">for</span> <span class="n">name</span><span class="p">,</span> <span class="n">sample</span><span class="p">,</span> <span class="n">mean</span> <span class="ow">in</span> <span class="nb">sorted</span><span class="p">(</span><span class="nb">zip</span><span class="p">(</span><span class="n">names</span><span class="p">,</span> <span class="n">samples</span><span class="p">,</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;means&quot;</span><span class="p">))):</span>
</span><span id="Obs.__init__-123"><a href="#Obs.__init__-123"><span class="linenos">123</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">idl</span><span class="p">[</span><span class="n">name</span><span class="p">])</span>
</span><span id="Obs.__init__-124"><a href="#Obs.__init__-124"><span class="linenos">124</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">N</span> <span class="o">+=</span> <span class="bp">self</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="n">name</span><span class="p">]</span>
</span><span id="Obs.__init__-125"><a href="#Obs.__init__-125"><span class="linenos">125</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">r_values</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="o">=</span> <span class="n">mean</span>
</span><span id="Obs.__init__-126"><a href="#Obs.__init__-126"><span class="linenos">126</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">deltas</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="o">=</span> <span class="n">sample</span>
</span><span id="Obs.__init__-127"><a href="#Obs.__init__-127"><span class="linenos">127</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="Obs.__init__-128"><a href="#Obs.__init__-128"><span class="linenos">128</span></a> <span class="k">for</span> <span class="n">name</span><span class="p">,</span> <span class="n">sample</span> <span class="ow">in</span> <span class="nb">sorted</span><span class="p">(</span><span class="nb">zip</span><span class="p">(</span><span class="n">names</span><span class="p">,</span> <span class="n">samples</span><span class="p">)):</span>
</span><span id="Obs.__init__-129"><a href="#Obs.__init__-129"><span class="linenos">129</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">idl</span><span class="p">[</span><span class="n">name</span><span class="p">])</span>
</span><span id="Obs.__init__-130"><a href="#Obs.__init__-130"><span class="linenos">130</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">N</span> <span class="o">+=</span> <span class="bp">self</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="n">name</span><span class="p">]</span>
</span><span id="Obs.__init__-131"><a href="#Obs.__init__-131"><span class="linenos">131</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">sample</span><span class="p">)</span> <span class="o">!=</span> <span class="bp">self</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="n">name</span><span class="p">]:</span>
</span><span id="Obs.__init__-132"><a href="#Obs.__init__-132"><span class="linenos">132</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s1">&#39;Incompatible samples and idx for </span><span class="si">%s</span><span class="s1">: </span><span class="si">%d</span><span class="s1"> vs. </span><span class="si">%d</span><span class="s1">&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">sample</span><span class="p">),</span> <span class="bp">self</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="n">name</span><span class="p">]))</span>
</span><span id="Obs.__init__-133"><a href="#Obs.__init__-133"><span class="linenos">133</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">r_values</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">mean</span><span class="p">(</span><span class="n">sample</span><span class="p">)</span>
</span><span id="Obs.__init__-134"><a href="#Obs.__init__-134"><span class="linenos">134</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">deltas</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="o">=</span> <span class="n">sample</span> <span class="o">-</span> <span class="bp">self</span><span class="o">.</span><span class="n">r_values</span><span class="p">[</span><span class="n">name</span><span class="p">]</span>
</span><span id="Obs.__init__-135"><a href="#Obs.__init__-135"><span class="linenos">135</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_value</span> <span class="o">+=</span> <span class="bp">self</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">r_values</span><span class="p">[</span><span class="n">name</span><span class="p">]</span>
</span><span id="Obs.__init__-136"><a href="#Obs.__init__-136"><span class="linenos">136</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_value</span> <span class="o">/=</span> <span class="bp">self</span><span class="o">.</span><span class="n">N</span>
</span><span id="Obs.__init__-137"><a href="#Obs.__init__-137"><span class="linenos">137</span></a>
</span><span id="Obs.__init__-138"><a href="#Obs.__init__-138"><span class="linenos">138</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_dvalue</span> <span class="o">=</span> <span class="mf">0.0</span>
</span><span id="Obs.__init__-139"><a href="#Obs.__init__-139"><span class="linenos">139</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">ddvalue</span> <span class="o">=</span> <span class="mf">0.0</span>
</span><span id="Obs.__init__-140"><a href="#Obs.__init__-140"><span class="linenos">140</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">reweighted</span> <span class="o">=</span> <span class="kc">False</span>
</span><span id="Obs.__init__-141"><a href="#Obs.__init__-141"><span class="linenos">141</span></a>
</span><span id="Obs.__init__-142"><a href="#Obs.__init__-142"><span class="linenos">142</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">tag</span> <span class="o">=</span> <span class="kc">None</span>
</span></pre></div>
<div class="docstring"><p>Initialize Obs object.</p>
<h6 id="parameters">Parameters</h6>
<ul>
<li><strong>samples</strong> (list):
list of numpy arrays containing the Monte Carlo samples</li>
<li><strong>names</strong> (list):
list of strings labeling the individual samples</li>
<li><strong>idl</strong> (list, optional):
list of ranges or lists on which the samples are defined</li>
</ul>
</div>
</div>
<div id="Obs.S_global" class="classattr">
<div class="attr variable">
<span class="name">S_global</span> =
<span class="default_value">2.0</span>
</div>
<a class="headerlink" href="#Obs.S_global"></a>
</div>
<div id="Obs.S_dict" class="classattr">
<div class="attr variable">
<span class="name">S_dict</span> =
<span class="default_value">{}</span>
</div>
<a class="headerlink" href="#Obs.S_dict"></a>
</div>
<div id="Obs.tau_exp_global" class="classattr">
<div class="attr variable">
<span class="name">tau_exp_global</span> =
<span class="default_value">0.0</span>
</div>
<a class="headerlink" href="#Obs.tau_exp_global"></a>
</div>
<div id="Obs.tau_exp_dict" class="classattr">
<div class="attr variable">
<span class="name">tau_exp_dict</span> =
<span class="default_value">{}</span>
</div>
<a class="headerlink" href="#Obs.tau_exp_dict"></a>
</div>
<div id="Obs.N_sigma_global" class="classattr">
<div class="attr variable">
<span class="name">N_sigma_global</span> =
<span class="default_value">1.0</span>
</div>
<a class="headerlink" href="#Obs.N_sigma_global"></a>
</div>
<div id="Obs.N_sigma_dict" class="classattr">
<div class="attr variable">
<span class="name">N_sigma_dict</span> =
<span class="default_value">{}</span>
</div>
<a class="headerlink" href="#Obs.N_sigma_dict"></a>
</div>
<div id="Obs.names" class="classattr">
<div class="attr variable">
<span class="name">names</span>
</div>
<a class="headerlink" href="#Obs.names"></a>
</div>
<div id="Obs.shape" class="classattr">
<div class="attr variable">
<span class="name">shape</span>
</div>
<a class="headerlink" href="#Obs.shape"></a>
</div>
<div id="Obs.r_values" class="classattr">
<div class="attr variable">
<span class="name">r_values</span>
</div>
<a class="headerlink" href="#Obs.r_values"></a>
</div>
<div id="Obs.deltas" class="classattr">
<div class="attr variable">
<span class="name">deltas</span>
</div>
<a class="headerlink" href="#Obs.deltas"></a>
</div>
<div id="Obs.N" class="classattr">
<div class="attr variable">
<span class="name">N</span>
</div>
<a class="headerlink" href="#Obs.N"></a>
</div>
<div id="Obs.idl" class="classattr">
<div class="attr variable">
<span class="name">idl</span>
</div>
<a class="headerlink" href="#Obs.idl"></a>
</div>
<div id="Obs.ddvalue" class="classattr">
<div class="attr variable">
<span class="name">ddvalue</span>
</div>
<a class="headerlink" href="#Obs.ddvalue"></a>
</div>
<div id="Obs.reweighted" class="classattr">
<div class="attr variable">
<span class="name">reweighted</span>
</div>
<a class="headerlink" href="#Obs.reweighted"></a>
</div>
<div id="Obs.tag" class="classattr">
<div class="attr variable">
<span class="name">tag</span>
</div>
<a class="headerlink" href="#Obs.tag"></a>
</div>
<div id="Obs.value" class="classattr">
<input id="Obs.value-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<div class="attr variable">
<span class="name">value</span>
<label class="view-source-button" for="Obs.value-view-source"><span>View Source</span></label>
</div>
<a class="headerlink" href="#Obs.value"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="Obs.value-144"><a href="#Obs.value-144"><span class="linenos">144</span></a> <span class="nd">@property</span>
</span><span id="Obs.value-145"><a href="#Obs.value-145"><span class="linenos">145</span></a> <span class="k">def</span> <span class="nf">value</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
</span><span id="Obs.value-146"><a href="#Obs.value-146"><span class="linenos">146</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_value</span>
</span></pre></div>
</div>
<div id="Obs.dvalue" class="classattr">
<input id="Obs.dvalue-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<div class="attr variable">
<span class="name">dvalue</span>
<label class="view-source-button" for="Obs.dvalue-view-source"><span>View Source</span></label>
</div>
<a class="headerlink" href="#Obs.dvalue"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="Obs.dvalue-148"><a href="#Obs.dvalue-148"><span class="linenos">148</span></a> <span class="nd">@property</span>
</span><span id="Obs.dvalue-149"><a href="#Obs.dvalue-149"><span class="linenos">149</span></a> <span class="k">def</span> <span class="nf">dvalue</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
</span><span id="Obs.dvalue-150"><a href="#Obs.dvalue-150"><span class="linenos">150</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_dvalue</span>
</span></pre></div>
</div>
<div id="Obs.e_names" class="classattr">
<input id="Obs.e_names-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<div class="attr variable">
<span class="name">e_names</span>
<label class="view-source-button" for="Obs.e_names-view-source"><span>View Source</span></label>
</div>
<a class="headerlink" href="#Obs.e_names"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="Obs.e_names-152"><a href="#Obs.e_names-152"><span class="linenos">152</span></a> <span class="nd">@property</span>
</span><span id="Obs.e_names-153"><a href="#Obs.e_names-153"><span class="linenos">153</span></a> <span class="k">def</span> <span class="nf">e_names</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
</span><span id="Obs.e_names-154"><a href="#Obs.e_names-154"><span class="linenos">154</span></a> <span class="k">return</span> <span class="nb">sorted</span><span class="p">(</span><span class="nb">set</span><span class="p">([</span><span class="n">o</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s1">&#39;|&#39;</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span> <span class="k">for</span> <span class="n">o</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">names</span><span class="p">]))</span>
</span></pre></div>
</div>
<div id="Obs.cov_names" class="classattr">
<input id="Obs.cov_names-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<div class="attr variable">
<span class="name">cov_names</span>
<label class="view-source-button" for="Obs.cov_names-view-source"><span>View Source</span></label>
</div>
<a class="headerlink" href="#Obs.cov_names"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="Obs.cov_names-156"><a href="#Obs.cov_names-156"><span class="linenos">156</span></a> <span class="nd">@property</span>
</span><span id="Obs.cov_names-157"><a href="#Obs.cov_names-157"><span class="linenos">157</span></a> <span class="k">def</span> <span class="nf">cov_names</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
</span><span id="Obs.cov_names-158"><a href="#Obs.cov_names-158"><span class="linenos">158</span></a> <span class="k">return</span> <span class="nb">sorted</span><span class="p">(</span><span class="nb">set</span><span class="p">([</span><span class="n">o</span> <span class="k">for</span> <span class="n">o</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">covobs</span><span class="o">.</span><span class="n">keys</span><span class="p">()]))</span>
</span></pre></div>
</div>
<div id="Obs.mc_names" class="classattr">
<input id="Obs.mc_names-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<div class="attr variable">
<span class="name">mc_names</span>
<label class="view-source-button" for="Obs.mc_names-view-source"><span>View Source</span></label>
</div>
<a class="headerlink" href="#Obs.mc_names"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="Obs.mc_names-160"><a href="#Obs.mc_names-160"><span class="linenos">160</span></a> <span class="nd">@property</span>
</span><span id="Obs.mc_names-161"><a href="#Obs.mc_names-161"><span class="linenos">161</span></a> <span class="k">def</span> <span class="nf">mc_names</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
</span><span id="Obs.mc_names-162"><a href="#Obs.mc_names-162"><span class="linenos">162</span></a> <span class="k">return</span> <span class="nb">sorted</span><span class="p">(</span><span class="nb">set</span><span class="p">([</span><span class="n">o</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s1">&#39;|&#39;</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span> <span class="k">for</span> <span class="n">o</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">names</span> <span class="k">if</span> <span class="n">o</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">cov_names</span><span class="p">]))</span>
</span></pre></div>
</div>
<div id="Obs.e_content" class="classattr">
<input id="Obs.e_content-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<div class="attr variable">
<span class="name">e_content</span>
<label class="view-source-button" for="Obs.e_content-view-source"><span>View Source</span></label>
</div>
<a class="headerlink" href="#Obs.e_content"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="Obs.e_content-164"><a href="#Obs.e_content-164"><span class="linenos">164</span></a> <span class="nd">@property</span>
</span><span id="Obs.e_content-165"><a href="#Obs.e_content-165"><span class="linenos">165</span></a> <span class="k">def</span> <span class="nf">e_content</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
</span><span id="Obs.e_content-166"><a href="#Obs.e_content-166"><span class="linenos">166</span></a> <span class="n">res</span> <span class="o">=</span> <span class="p">{}</span>
</span><span id="Obs.e_content-167"><a href="#Obs.e_content-167"><span class="linenos">167</span></a> <span class="k">for</span> <span class="n">e</span><span class="p">,</span> <span class="n">e_name</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">e_names</span><span class="p">):</span>
</span><span id="Obs.e_content-168"><a href="#Obs.e_content-168"><span class="linenos">168</span></a> <span class="n">res</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">=</span> <span class="nb">sorted</span><span class="p">(</span><span class="nb">filter</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span><span class="p">:</span> <span class="n">x</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="n">e_name</span> <span class="o">+</span> <span class="s1">&#39;|&#39;</span><span class="p">),</span> <span class="bp">self</span><span class="o">.</span><span class="n">names</span><span class="p">))</span>
</span><span id="Obs.e_content-169"><a href="#Obs.e_content-169"><span class="linenos">169</span></a> <span class="k">if</span> <span class="n">e_name</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">names</span><span class="p">:</span>
</span><span id="Obs.e_content-170"><a href="#Obs.e_content-170"><span class="linenos">170</span></a> <span class="n">res</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">e_name</span><span class="p">)</span>
</span><span id="Obs.e_content-171"><a href="#Obs.e_content-171"><span class="linenos">171</span></a> <span class="k">return</span> <span class="n">res</span>
</span></pre></div>
</div>
<div id="Obs.covobs" class="classattr">
<input id="Obs.covobs-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<div class="attr variable">
<span class="name">covobs</span>
<label class="view-source-button" for="Obs.covobs-view-source"><span>View Source</span></label>
</div>
<a class="headerlink" href="#Obs.covobs"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="Obs.covobs-173"><a href="#Obs.covobs-173"><span class="linenos">173</span></a> <span class="nd">@property</span>
</span><span id="Obs.covobs-174"><a href="#Obs.covobs-174"><span class="linenos">174</span></a> <span class="k">def</span> <span class="nf">covobs</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
</span><span id="Obs.covobs-175"><a href="#Obs.covobs-175"><span class="linenos">175</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_covobs</span>
</span></pre></div>
</div>
<div id="Obs.gamma_method" class="classattr">
<input id="Obs.gamma_method-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<div class="attr function">
<span class="def">def</span>
<span class="name">gamma_method</span><span class="signature pdoc-code condensed">(<span class="param"><span class="bp">self</span>, </span><span class="param"><span class="o">**</span><span class="n">kwargs</span></span><span class="return-annotation">):</span></span>
<label class="view-source-button" for="Obs.gamma_method-view-source"><span>View Source</span></label>
</div>
<a class="headerlink" href="#Obs.gamma_method"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="Obs.gamma_method-177"><a href="#Obs.gamma_method-177"><span class="linenos">177</span></a> <span class="k">def</span> <span class="nf">gamma_method</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
</span><span id="Obs.gamma_method-178"><a href="#Obs.gamma_method-178"><span class="linenos">178</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Estimate the error and related properties of the Obs.</span>
</span><span id="Obs.gamma_method-179"><a href="#Obs.gamma_method-179"><span class="linenos">179</span></a>
</span><span id="Obs.gamma_method-180"><a href="#Obs.gamma_method-180"><span class="linenos">180</span></a><span class="sd"> Parameters</span>
</span><span id="Obs.gamma_method-181"><a href="#Obs.gamma_method-181"><span class="linenos">181</span></a><span class="sd"> ----------</span>
</span><span id="Obs.gamma_method-182"><a href="#Obs.gamma_method-182"><span class="linenos">182</span></a><span class="sd"> S : float</span>
</span><span id="Obs.gamma_method-183"><a href="#Obs.gamma_method-183"><span class="linenos">183</span></a><span class="sd"> specifies a custom value for the parameter S (default 2.0).</span>
</span><span id="Obs.gamma_method-184"><a href="#Obs.gamma_method-184"><span class="linenos">184</span></a><span class="sd"> If set to 0 it is assumed that the data exhibits no</span>
</span><span id="Obs.gamma_method-185"><a href="#Obs.gamma_method-185"><span class="linenos">185</span></a><span class="sd"> autocorrelation. In this case the error estimates coincides</span>
</span><span id="Obs.gamma_method-186"><a href="#Obs.gamma_method-186"><span class="linenos">186</span></a><span class="sd"> with the sample standard error.</span>
</span><span id="Obs.gamma_method-187"><a href="#Obs.gamma_method-187"><span class="linenos">187</span></a><span class="sd"> tau_exp : float</span>
</span><span id="Obs.gamma_method-188"><a href="#Obs.gamma_method-188"><span class="linenos">188</span></a><span class="sd"> positive value triggers the critical slowing down analysis</span>
</span><span id="Obs.gamma_method-189"><a href="#Obs.gamma_method-189"><span class="linenos">189</span></a><span class="sd"> (default 0.0).</span>
</span><span id="Obs.gamma_method-190"><a href="#Obs.gamma_method-190"><span class="linenos">190</span></a><span class="sd"> N_sigma : float</span>
</span><span id="Obs.gamma_method-191"><a href="#Obs.gamma_method-191"><span class="linenos">191</span></a><span class="sd"> number of standard deviations from zero until the tail is</span>
</span><span id="Obs.gamma_method-192"><a href="#Obs.gamma_method-192"><span class="linenos">192</span></a><span class="sd"> attached to the autocorrelation function (default 1).</span>
</span><span id="Obs.gamma_method-193"><a href="#Obs.gamma_method-193"><span class="linenos">193</span></a><span class="sd"> fft : bool</span>
</span><span id="Obs.gamma_method-194"><a href="#Obs.gamma_method-194"><span class="linenos">194</span></a><span class="sd"> determines whether the fft algorithm is used for the computation</span>
</span><span id="Obs.gamma_method-195"><a href="#Obs.gamma_method-195"><span class="linenos">195</span></a><span class="sd"> of the autocorrelation function (default True)</span>
</span><span id="Obs.gamma_method-196"><a href="#Obs.gamma_method-196"><span class="linenos">196</span></a><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="Obs.gamma_method-197"><a href="#Obs.gamma_method-197"><span class="linenos">197</span></a>
</span><span id="Obs.gamma_method-198"><a href="#Obs.gamma_method-198"><span class="linenos">198</span></a> <span class="n">e_content</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">e_content</span>
</span><span id="Obs.gamma_method-199"><a href="#Obs.gamma_method-199"><span class="linenos">199</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_dvalue</span> <span class="o">=</span> <span class="p">{}</span>
</span><span id="Obs.gamma_method-200"><a href="#Obs.gamma_method-200"><span class="linenos">200</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_ddvalue</span> <span class="o">=</span> <span class="p">{}</span>
</span><span id="Obs.gamma_method-201"><a href="#Obs.gamma_method-201"><span class="linenos">201</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_tauint</span> <span class="o">=</span> <span class="p">{}</span>
</span><span id="Obs.gamma_method-202"><a href="#Obs.gamma_method-202"><span class="linenos">202</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_dtauint</span> <span class="o">=</span> <span class="p">{}</span>
</span><span id="Obs.gamma_method-203"><a href="#Obs.gamma_method-203"><span class="linenos">203</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_windowsize</span> <span class="o">=</span> <span class="p">{}</span>
</span><span id="Obs.gamma_method-204"><a href="#Obs.gamma_method-204"><span class="linenos">204</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_n_tauint</span> <span class="o">=</span> <span class="p">{}</span>
</span><span id="Obs.gamma_method-205"><a href="#Obs.gamma_method-205"><span class="linenos">205</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_n_dtauint</span> <span class="o">=</span> <span class="p">{}</span>
</span><span id="Obs.gamma_method-206"><a href="#Obs.gamma_method-206"><span class="linenos">206</span></a> <span class="n">e_gamma</span> <span class="o">=</span> <span class="p">{}</span>
</span><span id="Obs.gamma_method-207"><a href="#Obs.gamma_method-207"><span class="linenos">207</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_rho</span> <span class="o">=</span> <span class="p">{}</span>
</span><span id="Obs.gamma_method-208"><a href="#Obs.gamma_method-208"><span class="linenos">208</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_drho</span> <span class="o">=</span> <span class="p">{}</span>
</span><span id="Obs.gamma_method-209"><a href="#Obs.gamma_method-209"><span class="linenos">209</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_dvalue</span> <span class="o">=</span> <span class="mi">0</span>
</span><span id="Obs.gamma_method-210"><a href="#Obs.gamma_method-210"><span class="linenos">210</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">ddvalue</span> <span class="o">=</span> <span class="mi">0</span>
</span><span id="Obs.gamma_method-211"><a href="#Obs.gamma_method-211"><span class="linenos">211</span></a>
</span><span id="Obs.gamma_method-212"><a href="#Obs.gamma_method-212"><span class="linenos">212</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">S</span> <span class="o">=</span> <span class="p">{}</span>
</span><span id="Obs.gamma_method-213"><a href="#Obs.gamma_method-213"><span class="linenos">213</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">tau_exp</span> <span class="o">=</span> <span class="p">{}</span>
</span><span id="Obs.gamma_method-214"><a href="#Obs.gamma_method-214"><span class="linenos">214</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">N_sigma</span> <span class="o">=</span> <span class="p">{}</span>
</span><span id="Obs.gamma_method-215"><a href="#Obs.gamma_method-215"><span class="linenos">215</span></a>
</span><span id="Obs.gamma_method-216"><a href="#Obs.gamma_method-216"><span class="linenos">216</span></a> <span class="k">if</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">&#39;fft&#39;</span><span class="p">)</span> <span class="ow">is</span> <span class="kc">False</span><span class="p">:</span>
</span><span id="Obs.gamma_method-217"><a href="#Obs.gamma_method-217"><span class="linenos">217</span></a> <span class="n">fft</span> <span class="o">=</span> <span class="kc">False</span>
</span><span id="Obs.gamma_method-218"><a href="#Obs.gamma_method-218"><span class="linenos">218</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="Obs.gamma_method-219"><a href="#Obs.gamma_method-219"><span class="linenos">219</span></a> <span class="n">fft</span> <span class="o">=</span> <span class="kc">True</span>
</span><span id="Obs.gamma_method-220"><a href="#Obs.gamma_method-220"><span class="linenos">220</span></a>
</span><span id="Obs.gamma_method-221"><a href="#Obs.gamma_method-221"><span class="linenos">221</span></a> <span class="k">def</span> <span class="nf">_parse_kwarg</span><span class="p">(</span><span class="n">kwarg_name</span><span class="p">):</span>
</span><span id="Obs.gamma_method-222"><a href="#Obs.gamma_method-222"><span class="linenos">222</span></a> <span class="k">if</span> <span class="n">kwarg_name</span> <span class="ow">in</span> <span class="n">kwargs</span><span class="p">:</span>
</span><span id="Obs.gamma_method-223"><a href="#Obs.gamma_method-223"><span class="linenos">223</span></a> <span class="n">tmp</span> <span class="o">=</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">kwarg_name</span><span class="p">)</span>
</span><span id="Obs.gamma_method-224"><a href="#Obs.gamma_method-224"><span class="linenos">224</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">tmp</span><span class="p">,</span> <span class="p">(</span><span class="nb">int</span><span class="p">,</span> <span class="nb">float</span><span class="p">)):</span>
</span><span id="Obs.gamma_method-225"><a href="#Obs.gamma_method-225"><span class="linenos">225</span></a> <span class="k">if</span> <span class="n">tmp</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">:</span>
</span><span id="Obs.gamma_method-226"><a href="#Obs.gamma_method-226"><span class="linenos">226</span></a> <span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="n">kwarg_name</span> <span class="o">+</span> <span class="s1">&#39; has to be larger or equal to 0.&#39;</span><span class="p">)</span>
</span><span id="Obs.gamma_method-227"><a href="#Obs.gamma_method-227"><span class="linenos">227</span></a> <span class="k">for</span> <span class="n">e</span><span class="p">,</span> <span class="n">e_name</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">e_names</span><span class="p">):</span>
</span><span id="Obs.gamma_method-228"><a href="#Obs.gamma_method-228"><span class="linenos">228</span></a> <span class="nb">getattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">kwarg_name</span><span class="p">)[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">=</span> <span class="n">tmp</span>
</span><span id="Obs.gamma_method-229"><a href="#Obs.gamma_method-229"><span class="linenos">229</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="Obs.gamma_method-230"><a href="#Obs.gamma_method-230"><span class="linenos">230</span></a> <span class="k">raise</span> <span class="ne">TypeError</span><span class="p">(</span><span class="n">kwarg_name</span> <span class="o">+</span> <span class="s1">&#39; is not in proper format.&#39;</span><span class="p">)</span>
</span><span id="Obs.gamma_method-231"><a href="#Obs.gamma_method-231"><span class="linenos">231</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="Obs.gamma_method-232"><a href="#Obs.gamma_method-232"><span class="linenos">232</span></a> <span class="k">for</span> <span class="n">e</span><span class="p">,</span> <span class="n">e_name</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">e_names</span><span class="p">):</span>
</span><span id="Obs.gamma_method-233"><a href="#Obs.gamma_method-233"><span class="linenos">233</span></a> <span class="k">if</span> <span class="n">e_name</span> <span class="ow">in</span> <span class="nb">getattr</span><span class="p">(</span><span class="n">Obs</span><span class="p">,</span> <span class="n">kwarg_name</span> <span class="o">+</span> <span class="s1">&#39;_dict&#39;</span><span class="p">):</span>
</span><span id="Obs.gamma_method-234"><a href="#Obs.gamma_method-234"><span class="linenos">234</span></a> <span class="nb">getattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">kwarg_name</span><span class="p">)[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">=</span> <span class="nb">getattr</span><span class="p">(</span><span class="n">Obs</span><span class="p">,</span> <span class="n">kwarg_name</span> <span class="o">+</span> <span class="s1">&#39;_dict&#39;</span><span class="p">)[</span><span class="n">e_name</span><span class="p">]</span>
</span><span id="Obs.gamma_method-235"><a href="#Obs.gamma_method-235"><span class="linenos">235</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="Obs.gamma_method-236"><a href="#Obs.gamma_method-236"><span class="linenos">236</span></a> <span class="nb">getattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">kwarg_name</span><span class="p">)[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">=</span> <span class="nb">getattr</span><span class="p">(</span><span class="n">Obs</span><span class="p">,</span> <span class="n">kwarg_name</span> <span class="o">+</span> <span class="s1">&#39;_global&#39;</span><span class="p">)</span>
</span><span id="Obs.gamma_method-237"><a href="#Obs.gamma_method-237"><span class="linenos">237</span></a>
</span><span id="Obs.gamma_method-238"><a href="#Obs.gamma_method-238"><span class="linenos">238</span></a> <span class="n">_parse_kwarg</span><span class="p">(</span><span class="s1">&#39;S&#39;</span><span class="p">)</span>
</span><span id="Obs.gamma_method-239"><a href="#Obs.gamma_method-239"><span class="linenos">239</span></a> <span class="n">_parse_kwarg</span><span class="p">(</span><span class="s1">&#39;tau_exp&#39;</span><span class="p">)</span>
</span><span id="Obs.gamma_method-240"><a href="#Obs.gamma_method-240"><span class="linenos">240</span></a> <span class="n">_parse_kwarg</span><span class="p">(</span><span class="s1">&#39;N_sigma&#39;</span><span class="p">)</span>
</span><span id="Obs.gamma_method-241"><a href="#Obs.gamma_method-241"><span class="linenos">241</span></a>
</span><span id="Obs.gamma_method-242"><a href="#Obs.gamma_method-242"><span class="linenos">242</span></a> <span class="k">for</span> <span class="n">e</span><span class="p">,</span> <span class="n">e_name</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">mc_names</span><span class="p">):</span>
</span><span id="Obs.gamma_method-243"><a href="#Obs.gamma_method-243"><span class="linenos">243</span></a> <span class="n">gapsize</span> <span class="o">=</span> <span class="n">_determine_gap</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">e_content</span><span class="p">,</span> <span class="n">e_name</span><span class="p">)</span>
</span><span id="Obs.gamma_method-244"><a href="#Obs.gamma_method-244"><span class="linenos">244</span></a>
</span><span id="Obs.gamma_method-245"><a href="#Obs.gamma_method-245"><span class="linenos">245</span></a> <span class="n">r_length</span> <span class="o">=</span> <span class="p">[]</span>
</span><span id="Obs.gamma_method-246"><a href="#Obs.gamma_method-246"><span class="linenos">246</span></a> <span class="k">for</span> <span class="n">r_name</span> <span class="ow">in</span> <span class="n">e_content</span><span class="p">[</span><span class="n">e_name</span><span class="p">]:</span>
</span><span id="Obs.gamma_method-247"><a href="#Obs.gamma_method-247"><span class="linenos">247</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">idl</span><span class="p">[</span><span class="n">r_name</span><span class="p">],</span> <span class="nb">range</span><span class="p">):</span>
</span><span id="Obs.gamma_method-248"><a href="#Obs.gamma_method-248"><span class="linenos">248</span></a> <span class="n">r_length</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">idl</span><span class="p">[</span><span class="n">r_name</span><span class="p">])</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">idl</span><span class="p">[</span><span class="n">r_name</span><span class="p">]</span><span class="o">.</span><span class="n">step</span> <span class="o">//</span> <span class="n">gapsize</span><span class="p">)</span>
</span><span id="Obs.gamma_method-249"><a href="#Obs.gamma_method-249"><span class="linenos">249</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="Obs.gamma_method-250"><a href="#Obs.gamma_method-250"><span class="linenos">250</span></a> <span class="n">r_length</span><span class="o">.</span><span class="n">append</span><span class="p">((</span><span class="bp">self</span><span class="o">.</span><span class="n">idl</span><span class="p">[</span><span class="n">r_name</span><span class="p">][</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> <span class="o">-</span> <span class="bp">self</span><span class="o">.</span><span class="n">idl</span><span class="p">[</span><span class="n">r_name</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span> <span class="o">//</span> <span class="n">gapsize</span><span class="p">)</span>
</span><span id="Obs.gamma_method-251"><a href="#Obs.gamma_method-251"><span class="linenos">251</span></a>
</span><span id="Obs.gamma_method-252"><a href="#Obs.gamma_method-252"><span class="linenos">252</span></a> <span class="n">e_N</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">sum</span><span class="p">([</span><span class="bp">self</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="n">r_name</span><span class="p">]</span> <span class="k">for</span> <span class="n">r_name</span> <span class="ow">in</span> <span class="n">e_content</span><span class="p">[</span><span class="n">e_name</span><span class="p">]])</span>
</span><span id="Obs.gamma_method-253"><a href="#Obs.gamma_method-253"><span class="linenos">253</span></a> <span class="n">w_max</span> <span class="o">=</span> <span class="nb">max</span><span class="p">(</span><span class="n">r_length</span><span class="p">)</span> <span class="o">//</span> <span class="mi">2</span>
</span><span id="Obs.gamma_method-254"><a href="#Obs.gamma_method-254"><span class="linenos">254</span></a> <span class="n">e_gamma</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">zeros</span><span class="p">(</span><span class="n">w_max</span><span class="p">)</span>
</span><span id="Obs.gamma_method-255"><a href="#Obs.gamma_method-255"><span class="linenos">255</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_rho</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">zeros</span><span class="p">(</span><span class="n">w_max</span><span class="p">)</span>
</span><span id="Obs.gamma_method-256"><a href="#Obs.gamma_method-256"><span class="linenos">256</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_drho</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">zeros</span><span class="p">(</span><span class="n">w_max</span><span class="p">)</span>
</span><span id="Obs.gamma_method-257"><a href="#Obs.gamma_method-257"><span class="linenos">257</span></a>
</span><span id="Obs.gamma_method-258"><a href="#Obs.gamma_method-258"><span class="linenos">258</span></a> <span class="k">for</span> <span class="n">r_name</span> <span class="ow">in</span> <span class="n">e_content</span><span class="p">[</span><span class="n">e_name</span><span class="p">]:</span>
</span><span id="Obs.gamma_method-259"><a href="#Obs.gamma_method-259"><span class="linenos">259</span></a> <span class="n">e_gamma</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">+=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_calc_gamma</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">deltas</span><span class="p">[</span><span class="n">r_name</span><span class="p">],</span> <span class="bp">self</span><span class="o">.</span><span class="n">idl</span><span class="p">[</span><span class="n">r_name</span><span class="p">],</span> <span class="bp">self</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="n">r_name</span><span class="p">],</span> <span class="n">w_max</span><span class="p">,</span> <span class="n">fft</span><span class="p">,</span> <span class="n">gapsize</span><span class="p">)</span>
</span><span id="Obs.gamma_method-260"><a href="#Obs.gamma_method-260"><span class="linenos">260</span></a>
</span><span id="Obs.gamma_method-261"><a href="#Obs.gamma_method-261"><span class="linenos">261</span></a> <span class="n">gamma_div</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">zeros</span><span class="p">(</span><span class="n">w_max</span><span class="p">)</span>
</span><span id="Obs.gamma_method-262"><a href="#Obs.gamma_method-262"><span class="linenos">262</span></a> <span class="k">for</span> <span class="n">r_name</span> <span class="ow">in</span> <span class="n">e_content</span><span class="p">[</span><span class="n">e_name</span><span class="p">]:</span>
</span><span id="Obs.gamma_method-263"><a href="#Obs.gamma_method-263"><span class="linenos">263</span></a> <span class="n">gamma_div</span> <span class="o">+=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_calc_gamma</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">ones</span><span class="p">((</span><span class="bp">self</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="n">r_name</span><span class="p">])),</span> <span class="bp">self</span><span class="o">.</span><span class="n">idl</span><span class="p">[</span><span class="n">r_name</span><span class="p">],</span> <span class="bp">self</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="n">r_name</span><span class="p">],</span> <span class="n">w_max</span><span class="p">,</span> <span class="n">fft</span><span class="p">,</span> <span class="n">gapsize</span><span class="p">)</span>
</span><span id="Obs.gamma_method-264"><a href="#Obs.gamma_method-264"><span class="linenos">264</span></a> <span class="n">gamma_div</span><span class="p">[</span><span class="n">gamma_div</span> <span class="o">&lt;</span> <span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="mf">1.0</span>
</span><span id="Obs.gamma_method-265"><a href="#Obs.gamma_method-265"><span class="linenos">265</span></a> <span class="n">e_gamma</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">/=</span> <span class="n">gamma_div</span><span class="p">[:</span><span class="n">w_max</span><span class="p">]</span>
</span><span id="Obs.gamma_method-266"><a href="#Obs.gamma_method-266"><span class="linenos">266</span></a>
</span><span id="Obs.gamma_method-267"><a href="#Obs.gamma_method-267"><span class="linenos">267</span></a> <span class="k">if</span> <span class="n">np</span><span class="o">.</span><span class="n">abs</span><span class="p">(</span><span class="n">e_gamma</span><span class="p">[</span><span class="n">e_name</span><span class="p">][</span><span class="mi">0</span><span class="p">])</span> <span class="o">&lt;</span> <span class="mi">10</span> <span class="o">*</span> <span class="n">np</span><span class="o">.</span><span class="n">finfo</span><span class="p">(</span><span class="nb">float</span><span class="p">)</span><span class="o">.</span><span class="n">tiny</span><span class="p">:</span> <span class="c1"># Prevent division by zero</span>
</span><span id="Obs.gamma_method-268"><a href="#Obs.gamma_method-268"><span class="linenos">268</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_tauint</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">=</span> <span class="mf">0.5</span>
</span><span id="Obs.gamma_method-269"><a href="#Obs.gamma_method-269"><span class="linenos">269</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_dtauint</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">=</span> <span class="mf">0.0</span>
</span><span id="Obs.gamma_method-270"><a href="#Obs.gamma_method-270"><span class="linenos">270</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_dvalue</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">=</span> <span class="mf">0.0</span>
</span><span id="Obs.gamma_method-271"><a href="#Obs.gamma_method-271"><span class="linenos">271</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_ddvalue</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">=</span> <span class="mf">0.0</span>
</span><span id="Obs.gamma_method-272"><a href="#Obs.gamma_method-272"><span class="linenos">272</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_windowsize</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">=</span> <span class="mi">0</span>
</span><span id="Obs.gamma_method-273"><a href="#Obs.gamma_method-273"><span class="linenos">273</span></a> <span class="k">continue</span>
</span><span id="Obs.gamma_method-274"><a href="#Obs.gamma_method-274"><span class="linenos">274</span></a>
</span><span id="Obs.gamma_method-275"><a href="#Obs.gamma_method-275"><span class="linenos">275</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_rho</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">=</span> <span class="n">e_gamma</span><span class="p">[</span><span class="n">e_name</span><span class="p">][:</span><span class="n">w_max</span><span class="p">]</span> <span class="o">/</span> <span class="n">e_gamma</span><span class="p">[</span><span class="n">e_name</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span>
</span><span id="Obs.gamma_method-276"><a href="#Obs.gamma_method-276"><span class="linenos">276</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_n_tauint</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">cumsum</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">concatenate</span><span class="p">(([</span><span class="mf">0.5</span><span class="p">],</span> <span class="bp">self</span><span class="o">.</span><span class="n">e_rho</span><span class="p">[</span><span class="n">e_name</span><span class="p">][</span><span class="mi">1</span><span class="p">:])))</span>
</span><span id="Obs.gamma_method-277"><a href="#Obs.gamma_method-277"><span class="linenos">277</span></a> <span class="c1"># Make sure no entry of tauint is smaller than 0.5</span>
</span><span id="Obs.gamma_method-278"><a href="#Obs.gamma_method-278"><span class="linenos">278</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_n_tauint</span><span class="p">[</span><span class="n">e_name</span><span class="p">][</span><span class="bp">self</span><span class="o">.</span><span class="n">e_n_tauint</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">&lt;=</span> <span class="mf">0.5</span><span class="p">]</span> <span class="o">=</span> <span class="mf">0.5</span> <span class="o">+</span> <span class="n">np</span><span class="o">.</span><span class="n">finfo</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">float64</span><span class="p">)</span><span class="o">.</span><span class="n">eps</span>
</span><span id="Obs.gamma_method-279"><a href="#Obs.gamma_method-279"><span class="linenos">279</span></a> <span class="c1"># hep-lat/0306017 eq. (42)</span>
</span><span id="Obs.gamma_method-280"><a href="#Obs.gamma_method-280"><span class="linenos">280</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_n_dtauint</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">e_n_tauint</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">*</span> <span class="mi">2</span> <span class="o">*</span> <span class="n">np</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">abs</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">arange</span><span class="p">(</span><span class="n">w_max</span><span class="p">)</span> <span class="o">+</span> <span class="mf">0.5</span> <span class="o">-</span> <span class="bp">self</span><span class="o">.</span><span class="n">e_n_tauint</span><span class="p">[</span><span class="n">e_name</span><span class="p">])</span> <span class="o">/</span> <span class="n">e_N</span><span class="p">)</span>
</span><span id="Obs.gamma_method-281"><a href="#Obs.gamma_method-281"><span class="linenos">281</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_n_dtauint</span><span class="p">[</span><span class="n">e_name</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="mf">0.0</span>
</span><span id="Obs.gamma_method-282"><a href="#Obs.gamma_method-282"><span class="linenos">282</span></a>
</span><span id="Obs.gamma_method-283"><a href="#Obs.gamma_method-283"><span class="linenos">283</span></a> <span class="k">def</span> <span class="nf">_compute_drho</span><span class="p">(</span><span class="n">i</span><span class="p">):</span>
</span><span id="Obs.gamma_method-284"><a href="#Obs.gamma_method-284"><span class="linenos">284</span></a> <span class="n">tmp</span> <span class="o">=</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">e_rho</span><span class="p">[</span><span class="n">e_name</span><span class="p">][</span><span class="n">i</span> <span class="o">+</span> <span class="mi">1</span><span class="p">:</span><span class="n">w_max</span><span class="p">]</span>
</span><span id="Obs.gamma_method-285"><a href="#Obs.gamma_method-285"><span class="linenos">285</span></a> <span class="o">+</span> <span class="n">np</span><span class="o">.</span><span class="n">concatenate</span><span class="p">([</span><span class="bp">self</span><span class="o">.</span><span class="n">e_rho</span><span class="p">[</span><span class="n">e_name</span><span class="p">][</span><span class="n">i</span> <span class="o">-</span> <span class="mi">1</span><span class="p">:</span><span class="kc">None</span> <span class="k">if</span> <span class="n">i</span> <span class="o">-</span> <span class="p">(</span><span class="n">w_max</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> <span class="o">//</span> <span class="mi">2</span> <span class="o">&lt;=</span> <span class="mi">0</span> <span class="k">else</span> <span class="p">(</span><span class="mi">2</span> <span class="o">*</span> <span class="n">i</span> <span class="o">-</span> <span class="p">(</span><span class="mi">2</span> <span class="o">*</span> <span class="n">w_max</span><span class="p">)</span> <span class="o">//</span> <span class="mi">2</span><span class="p">):</span><span class="o">-</span><span class="mi">1</span><span class="p">],</span>
</span><span id="Obs.gamma_method-286"><a href="#Obs.gamma_method-286"><span class="linenos">286</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_rho</span><span class="p">[</span><span class="n">e_name</span><span class="p">][</span><span class="mi">1</span><span class="p">:</span><span class="nb">max</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="n">w_max</span> <span class="o">-</span> <span class="mi">2</span> <span class="o">*</span> <span class="n">i</span><span class="p">)]])</span>
</span><span id="Obs.gamma_method-287"><a href="#Obs.gamma_method-287"><span class="linenos">287</span></a> <span class="o">-</span> <span class="mi">2</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">e_rho</span><span class="p">[</span><span class="n">e_name</span><span class="p">][</span><span class="n">i</span><span class="p">]</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">e_rho</span><span class="p">[</span><span class="n">e_name</span><span class="p">][</span><span class="mi">1</span><span class="p">:</span><span class="n">w_max</span> <span class="o">-</span> <span class="n">i</span><span class="p">])</span>
</span><span id="Obs.gamma_method-288"><a href="#Obs.gamma_method-288"><span class="linenos">288</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_drho</span><span class="p">[</span><span class="n">e_name</span><span class="p">][</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">sum</span><span class="p">(</span><span class="n">tmp</span> <span class="o">**</span> <span class="mi">2</span><span class="p">)</span> <span class="o">/</span> <span class="n">e_N</span><span class="p">)</span>
</span><span id="Obs.gamma_method-289"><a href="#Obs.gamma_method-289"><span class="linenos">289</span></a>
</span><span id="Obs.gamma_method-290"><a href="#Obs.gamma_method-290"><span class="linenos">290</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">tau_exp</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
</span><span id="Obs.gamma_method-291"><a href="#Obs.gamma_method-291"><span class="linenos">291</span></a> <span class="n">_compute_drho</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span>
</span><span id="Obs.gamma_method-292"><a href="#Obs.gamma_method-292"><span class="linenos">292</span></a> <span class="n">texp</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">tau_exp</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span>
</span><span id="Obs.gamma_method-293"><a href="#Obs.gamma_method-293"><span class="linenos">293</span></a> <span class="c1"># Critical slowing down analysis</span>
</span><span id="Obs.gamma_method-294"><a href="#Obs.gamma_method-294"><span class="linenos">294</span></a> <span class="k">if</span> <span class="n">w_max</span> <span class="o">//</span> <span class="mi">2</span> <span class="o">&lt;=</span> <span class="mi">1</span><span class="p">:</span>
</span><span id="Obs.gamma_method-295"><a href="#Obs.gamma_method-295"><span class="linenos">295</span></a> <span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s2">&quot;Need at least 8 samples for tau_exp error analysis&quot;</span><span class="p">)</span>
</span><span id="Obs.gamma_method-296"><a href="#Obs.gamma_method-296"><span class="linenos">296</span></a> <span class="k">for</span> <span class="n">n</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="n">w_max</span> <span class="o">//</span> <span class="mi">2</span><span class="p">):</span>
</span><span id="Obs.gamma_method-297"><a href="#Obs.gamma_method-297"><span class="linenos">297</span></a> <span class="n">_compute_drho</span><span class="p">(</span><span class="n">n</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span>
</span><span id="Obs.gamma_method-298"><a href="#Obs.gamma_method-298"><span class="linenos">298</span></a> <span class="k">if</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">e_rho</span><span class="p">[</span><span class="n">e_name</span><span class="p">][</span><span class="n">n</span><span class="p">]</span> <span class="o">-</span> <span class="bp">self</span><span class="o">.</span><span class="n">N_sigma</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">e_drho</span><span class="p">[</span><span class="n">e_name</span><span class="p">][</span><span class="n">n</span><span class="p">])</span> <span class="o">&lt;</span> <span class="mi">0</span> <span class="ow">or</span> <span class="n">n</span> <span class="o">&gt;=</span> <span class="n">w_max</span> <span class="o">//</span> <span class="mi">2</span> <span class="o">-</span> <span class="mi">2</span><span class="p">:</span>
</span><span id="Obs.gamma_method-299"><a href="#Obs.gamma_method-299"><span class="linenos">299</span></a> <span class="c1"># Bias correction hep-lat/0306017 eq. (49) included</span>
</span><span id="Obs.gamma_method-300"><a href="#Obs.gamma_method-300"><span class="linenos">300</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_tauint</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">e_n_tauint</span><span class="p">[</span><span class="n">e_name</span><span class="p">][</span><span class="n">n</span><span class="p">]</span> <span class="o">*</span> <span class="p">(</span><span class="mi">1</span> <span class="o">+</span> <span class="p">(</span><span class="mi">2</span> <span class="o">*</span> <span class="n">n</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span> <span class="o">/</span> <span class="n">e_N</span><span class="p">)</span> <span class="o">/</span> <span class="p">(</span><span class="mi">1</span> <span class="o">+</span> <span class="mi">1</span> <span class="o">/</span> <span class="n">e_N</span><span class="p">)</span> <span class="o">+</span> <span class="n">texp</span> <span class="o">*</span> <span class="n">np</span><span class="o">.</span><span class="n">abs</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">e_rho</span><span class="p">[</span><span class="n">e_name</span><span class="p">][</span><span class="n">n</span> <span class="o">+</span> <span class="mi">1</span><span class="p">])</span> <span class="c1"># The absolute makes sure, that the tail contribution is always positive</span>
</span><span id="Obs.gamma_method-301"><a href="#Obs.gamma_method-301"><span class="linenos">301</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_dtauint</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">e_n_dtauint</span><span class="p">[</span><span class="n">e_name</span><span class="p">][</span><span class="n">n</span><span class="p">]</span> <span class="o">**</span> <span class="mi">2</span> <span class="o">+</span> <span class="n">texp</span> <span class="o">**</span> <span class="mi">2</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">e_drho</span><span class="p">[</span><span class="n">e_name</span><span class="p">][</span><span class="n">n</span> <span class="o">+</span> <span class="mi">1</span><span class="p">]</span> <span class="o">**</span> <span class="mi">2</span><span class="p">)</span>
</span><span id="Obs.gamma_method-302"><a href="#Obs.gamma_method-302"><span class="linenos">302</span></a> <span class="c1"># Error of tau_exp neglected so far, missing term: self.e_rho[e_name][n + 1] ** 2 * d_tau_exp ** 2</span>
</span><span id="Obs.gamma_method-303"><a href="#Obs.gamma_method-303"><span class="linenos">303</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_dvalue</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="mi">2</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">e_tauint</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">*</span> <span class="n">e_gamma</span><span class="p">[</span><span class="n">e_name</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span> <span class="o">*</span> <span class="p">(</span><span class="mi">1</span> <span class="o">+</span> <span class="mi">1</span> <span class="o">/</span> <span class="n">e_N</span><span class="p">)</span> <span class="o">/</span> <span class="n">e_N</span><span class="p">)</span>
</span><span id="Obs.gamma_method-304"><a href="#Obs.gamma_method-304"><span class="linenos">304</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_ddvalue</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">e_dvalue</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">*</span> <span class="n">np</span><span class="o">.</span><span class="n">sqrt</span><span class="p">((</span><span class="n">n</span> <span class="o">+</span> <span class="mf">0.5</span><span class="p">)</span> <span class="o">/</span> <span class="n">e_N</span><span class="p">)</span>
</span><span id="Obs.gamma_method-305"><a href="#Obs.gamma_method-305"><span class="linenos">305</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_windowsize</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">=</span> <span class="n">n</span>
</span><span id="Obs.gamma_method-306"><a href="#Obs.gamma_method-306"><span class="linenos">306</span></a> <span class="k">break</span>
</span><span id="Obs.gamma_method-307"><a href="#Obs.gamma_method-307"><span class="linenos">307</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="Obs.gamma_method-308"><a href="#Obs.gamma_method-308"><span class="linenos">308</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">S</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">==</span> <span class="mf">0.0</span><span class="p">:</span>
</span><span id="Obs.gamma_method-309"><a href="#Obs.gamma_method-309"><span class="linenos">309</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_tauint</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">=</span> <span class="mf">0.5</span>
</span><span id="Obs.gamma_method-310"><a href="#Obs.gamma_method-310"><span class="linenos">310</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_dtauint</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">=</span> <span class="mf">0.0</span>
</span><span id="Obs.gamma_method-311"><a href="#Obs.gamma_method-311"><span class="linenos">311</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_dvalue</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="n">e_gamma</span><span class="p">[</span><span class="n">e_name</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span> <span class="o">/</span> <span class="p">(</span><span class="n">e_N</span> <span class="o">-</span> <span class="mi">1</span><span class="p">))</span>
</span><span id="Obs.gamma_method-312"><a href="#Obs.gamma_method-312"><span class="linenos">312</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_ddvalue</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">e_dvalue</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">*</span> <span class="n">np</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="mf">0.5</span> <span class="o">/</span> <span class="n">e_N</span><span class="p">)</span>
</span><span id="Obs.gamma_method-313"><a href="#Obs.gamma_method-313"><span class="linenos">313</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_windowsize</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">=</span> <span class="mi">0</span>
</span><span id="Obs.gamma_method-314"><a href="#Obs.gamma_method-314"><span class="linenos">314</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="Obs.gamma_method-315"><a href="#Obs.gamma_method-315"><span class="linenos">315</span></a> <span class="c1"># Standard automatic windowing procedure</span>
</span><span id="Obs.gamma_method-316"><a href="#Obs.gamma_method-316"><span class="linenos">316</span></a> <span class="n">tau</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">S</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">/</span> <span class="n">np</span><span class="o">.</span><span class="n">log</span><span class="p">((</span><span class="mi">2</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">e_n_tauint</span><span class="p">[</span><span class="n">e_name</span><span class="p">][</span><span class="mi">1</span><span class="p">:]</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span> <span class="o">/</span> <span class="p">(</span><span class="mi">2</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">e_n_tauint</span><span class="p">[</span><span class="n">e_name</span><span class="p">][</span><span class="mi">1</span><span class="p">:]</span> <span class="o">-</span> <span class="mi">1</span><span class="p">))</span>
</span><span id="Obs.gamma_method-317"><a href="#Obs.gamma_method-317"><span class="linenos">317</span></a> <span class="n">g_w</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">exp</span><span class="p">(</span><span class="o">-</span> <span class="n">np</span><span class="o">.</span><span class="n">arange</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">tau</span><span class="p">)</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span> <span class="o">/</span> <span class="n">tau</span><span class="p">)</span> <span class="o">-</span> <span class="n">tau</span> <span class="o">/</span> <span class="n">np</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">arange</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">tau</span><span class="p">)</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span> <span class="o">*</span> <span class="n">e_N</span><span class="p">)</span>
</span><span id="Obs.gamma_method-318"><a href="#Obs.gamma_method-318"><span class="linenos">318</span></a> <span class="k">for</span> <span class="n">n</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="n">w_max</span><span class="p">):</span>
</span><span id="Obs.gamma_method-319"><a href="#Obs.gamma_method-319"><span class="linenos">319</span></a> <span class="k">if</span> <span class="n">g_w</span><span class="p">[</span><span class="n">n</span> <span class="o">-</span> <span class="mi">1</span><span class="p">]</span> <span class="o">&lt;</span> <span class="mi">0</span> <span class="ow">or</span> <span class="n">n</span> <span class="o">&gt;=</span> <span class="n">w_max</span> <span class="o">-</span> <span class="mi">1</span><span class="p">:</span>
</span><span id="Obs.gamma_method-320"><a href="#Obs.gamma_method-320"><span class="linenos">320</span></a> <span class="n">_compute_drho</span><span class="p">(</span><span class="n">n</span><span class="p">)</span>
</span><span id="Obs.gamma_method-321"><a href="#Obs.gamma_method-321"><span class="linenos">321</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_tauint</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">e_n_tauint</span><span class="p">[</span><span class="n">e_name</span><span class="p">][</span><span class="n">n</span><span class="p">]</span> <span class="o">*</span> <span class="p">(</span><span class="mi">1</span> <span class="o">+</span> <span class="p">(</span><span class="mi">2</span> <span class="o">*</span> <span class="n">n</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span> <span class="o">/</span> <span class="n">e_N</span><span class="p">)</span> <span class="o">/</span> <span class="p">(</span><span class="mi">1</span> <span class="o">+</span> <span class="mi">1</span> <span class="o">/</span> <span class="n">e_N</span><span class="p">)</span> <span class="c1"># Bias correction hep-lat/0306017 eq. (49)</span>
</span><span id="Obs.gamma_method-322"><a href="#Obs.gamma_method-322"><span class="linenos">322</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_dtauint</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">e_n_dtauint</span><span class="p">[</span><span class="n">e_name</span><span class="p">][</span><span class="n">n</span><span class="p">]</span>
</span><span id="Obs.gamma_method-323"><a href="#Obs.gamma_method-323"><span class="linenos">323</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_dvalue</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="mi">2</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">e_tauint</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">*</span> <span class="n">e_gamma</span><span class="p">[</span><span class="n">e_name</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span> <span class="o">*</span> <span class="p">(</span><span class="mi">1</span> <span class="o">+</span> <span class="mi">1</span> <span class="o">/</span> <span class="n">e_N</span><span class="p">)</span> <span class="o">/</span> <span class="n">e_N</span><span class="p">)</span>
</span><span id="Obs.gamma_method-324"><a href="#Obs.gamma_method-324"><span class="linenos">324</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_ddvalue</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">e_dvalue</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">*</span> <span class="n">np</span><span class="o">.</span><span class="n">sqrt</span><span class="p">((</span><span class="n">n</span> <span class="o">+</span> <span class="mf">0.5</span><span class="p">)</span> <span class="o">/</span> <span class="n">e_N</span><span class="p">)</span>
</span><span id="Obs.gamma_method-325"><a href="#Obs.gamma_method-325"><span class="linenos">325</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_windowsize</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">=</span> <span class="n">n</span>
</span><span id="Obs.gamma_method-326"><a href="#Obs.gamma_method-326"><span class="linenos">326</span></a> <span class="k">break</span>
</span><span id="Obs.gamma_method-327"><a href="#Obs.gamma_method-327"><span class="linenos">327</span></a>
</span><span id="Obs.gamma_method-328"><a href="#Obs.gamma_method-328"><span class="linenos">328</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_dvalue</span> <span class="o">+=</span> <span class="bp">self</span><span class="o">.</span><span class="n">e_dvalue</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">**</span> <span class="mi">2</span>
</span><span id="Obs.gamma_method-329"><a href="#Obs.gamma_method-329"><span class="linenos">329</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">ddvalue</span> <span class="o">+=</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">e_dvalue</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">e_ddvalue</span><span class="p">[</span><span class="n">e_name</span><span class="p">])</span> <span class="o">**</span> <span class="mi">2</span>
</span><span id="Obs.gamma_method-330"><a href="#Obs.gamma_method-330"><span class="linenos">330</span></a>
</span><span id="Obs.gamma_method-331"><a href="#Obs.gamma_method-331"><span class="linenos">331</span></a> <span class="k">for</span> <span class="n">e_name</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">cov_names</span><span class="p">:</span>
</span><span id="Obs.gamma_method-332"><a href="#Obs.gamma_method-332"><span class="linenos">332</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_dvalue</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">covobs</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span><span class="o">.</span><span class="n">errsq</span><span class="p">())</span>
</span><span id="Obs.gamma_method-333"><a href="#Obs.gamma_method-333"><span class="linenos">333</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_ddvalue</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">=</span> <span class="mi">0</span>
</span><span id="Obs.gamma_method-334"><a href="#Obs.gamma_method-334"><span class="linenos">334</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_dvalue</span> <span class="o">+=</span> <span class="bp">self</span><span class="o">.</span><span class="n">e_dvalue</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span><span class="o">**</span><span class="mi">2</span>
</span><span id="Obs.gamma_method-335"><a href="#Obs.gamma_method-335"><span class="linenos">335</span></a>
</span><span id="Obs.gamma_method-336"><a href="#Obs.gamma_method-336"><span class="linenos">336</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_dvalue</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_dvalue</span><span class="p">)</span>
</span><span id="Obs.gamma_method-337"><a href="#Obs.gamma_method-337"><span class="linenos">337</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_dvalue</span> <span class="o">==</span> <span class="mf">0.0</span><span class="p">:</span>
</span><span id="Obs.gamma_method-338"><a href="#Obs.gamma_method-338"><span class="linenos">338</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">ddvalue</span> <span class="o">=</span> <span class="mf">0.0</span>
</span><span id="Obs.gamma_method-339"><a href="#Obs.gamma_method-339"><span class="linenos">339</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="Obs.gamma_method-340"><a href="#Obs.gamma_method-340"><span class="linenos">340</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">ddvalue</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ddvalue</span><span class="p">)</span> <span class="o">/</span> <span class="bp">self</span><span class="o">.</span><span class="n">_dvalue</span>
</span><span id="Obs.gamma_method-341"><a href="#Obs.gamma_method-341"><span class="linenos">341</span></a> <span class="k">return</span>
</span></pre></div>
<div class="docstring"><p>Estimate the error and related properties of the Obs.</p>
<h6 id="parameters">Parameters</h6>
<ul>
<li><strong>S</strong> (float):
specifies a custom value for the parameter S (default 2.0).
If set to 0 it is assumed that the data exhibits no
autocorrelation. In this case the error estimates coincides
with the sample standard error.</li>
<li><strong>tau_exp</strong> (float):
positive value triggers the critical slowing down analysis
(default 0.0).</li>
<li><strong>N_sigma</strong> (float):
number of standard deviations from zero until the tail is
attached to the autocorrelation function (default 1).</li>
<li><strong>fft</strong> (bool):
determines whether the fft algorithm is used for the computation
of the autocorrelation function (default True)</li>
</ul>
</div>
</div>
<div id="Obs.gm" class="classattr">
<input id="Obs.gm-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<div class="attr function">
<span class="def">def</span>
<span class="name">gm</span><span class="signature pdoc-code condensed">(<span class="param"><span class="bp">self</span>, </span><span class="param"><span class="o">**</span><span class="n">kwargs</span></span><span class="return-annotation">):</span></span>
<label class="view-source-button" for="Obs.gm-view-source"><span>View Source</span></label>
</div>
<a class="headerlink" href="#Obs.gm"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="Obs.gm-177"><a href="#Obs.gm-177"><span class="linenos">177</span></a> <span class="k">def</span> <span class="nf">gamma_method</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
</span><span id="Obs.gm-178"><a href="#Obs.gm-178"><span class="linenos">178</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Estimate the error and related properties of the Obs.</span>
</span><span id="Obs.gm-179"><a href="#Obs.gm-179"><span class="linenos">179</span></a>
</span><span id="Obs.gm-180"><a href="#Obs.gm-180"><span class="linenos">180</span></a><span class="sd"> Parameters</span>
</span><span id="Obs.gm-181"><a href="#Obs.gm-181"><span class="linenos">181</span></a><span class="sd"> ----------</span>
</span><span id="Obs.gm-182"><a href="#Obs.gm-182"><span class="linenos">182</span></a><span class="sd"> S : float</span>
</span><span id="Obs.gm-183"><a href="#Obs.gm-183"><span class="linenos">183</span></a><span class="sd"> specifies a custom value for the parameter S (default 2.0).</span>
</span><span id="Obs.gm-184"><a href="#Obs.gm-184"><span class="linenos">184</span></a><span class="sd"> If set to 0 it is assumed that the data exhibits no</span>
</span><span id="Obs.gm-185"><a href="#Obs.gm-185"><span class="linenos">185</span></a><span class="sd"> autocorrelation. In this case the error estimates coincides</span>
</span><span id="Obs.gm-186"><a href="#Obs.gm-186"><span class="linenos">186</span></a><span class="sd"> with the sample standard error.</span>
</span><span id="Obs.gm-187"><a href="#Obs.gm-187"><span class="linenos">187</span></a><span class="sd"> tau_exp : float</span>
</span><span id="Obs.gm-188"><a href="#Obs.gm-188"><span class="linenos">188</span></a><span class="sd"> positive value triggers the critical slowing down analysis</span>
</span><span id="Obs.gm-189"><a href="#Obs.gm-189"><span class="linenos">189</span></a><span class="sd"> (default 0.0).</span>
</span><span id="Obs.gm-190"><a href="#Obs.gm-190"><span class="linenos">190</span></a><span class="sd"> N_sigma : float</span>
</span><span id="Obs.gm-191"><a href="#Obs.gm-191"><span class="linenos">191</span></a><span class="sd"> number of standard deviations from zero until the tail is</span>
</span><span id="Obs.gm-192"><a href="#Obs.gm-192"><span class="linenos">192</span></a><span class="sd"> attached to the autocorrelation function (default 1).</span>
</span><span id="Obs.gm-193"><a href="#Obs.gm-193"><span class="linenos">193</span></a><span class="sd"> fft : bool</span>
</span><span id="Obs.gm-194"><a href="#Obs.gm-194"><span class="linenos">194</span></a><span class="sd"> determines whether the fft algorithm is used for the computation</span>
</span><span id="Obs.gm-195"><a href="#Obs.gm-195"><span class="linenos">195</span></a><span class="sd"> of the autocorrelation function (default True)</span>
</span><span id="Obs.gm-196"><a href="#Obs.gm-196"><span class="linenos">196</span></a><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="Obs.gm-197"><a href="#Obs.gm-197"><span class="linenos">197</span></a>
</span><span id="Obs.gm-198"><a href="#Obs.gm-198"><span class="linenos">198</span></a> <span class="n">e_content</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">e_content</span>
</span><span id="Obs.gm-199"><a href="#Obs.gm-199"><span class="linenos">199</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_dvalue</span> <span class="o">=</span> <span class="p">{}</span>
</span><span id="Obs.gm-200"><a href="#Obs.gm-200"><span class="linenos">200</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_ddvalue</span> <span class="o">=</span> <span class="p">{}</span>
</span><span id="Obs.gm-201"><a href="#Obs.gm-201"><span class="linenos">201</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_tauint</span> <span class="o">=</span> <span class="p">{}</span>
</span><span id="Obs.gm-202"><a href="#Obs.gm-202"><span class="linenos">202</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_dtauint</span> <span class="o">=</span> <span class="p">{}</span>
</span><span id="Obs.gm-203"><a href="#Obs.gm-203"><span class="linenos">203</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_windowsize</span> <span class="o">=</span> <span class="p">{}</span>
</span><span id="Obs.gm-204"><a href="#Obs.gm-204"><span class="linenos">204</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_n_tauint</span> <span class="o">=</span> <span class="p">{}</span>
</span><span id="Obs.gm-205"><a href="#Obs.gm-205"><span class="linenos">205</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_n_dtauint</span> <span class="o">=</span> <span class="p">{}</span>
</span><span id="Obs.gm-206"><a href="#Obs.gm-206"><span class="linenos">206</span></a> <span class="n">e_gamma</span> <span class="o">=</span> <span class="p">{}</span>
</span><span id="Obs.gm-207"><a href="#Obs.gm-207"><span class="linenos">207</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_rho</span> <span class="o">=</span> <span class="p">{}</span>
</span><span id="Obs.gm-208"><a href="#Obs.gm-208"><span class="linenos">208</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_drho</span> <span class="o">=</span> <span class="p">{}</span>
</span><span id="Obs.gm-209"><a href="#Obs.gm-209"><span class="linenos">209</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_dvalue</span> <span class="o">=</span> <span class="mi">0</span>
</span><span id="Obs.gm-210"><a href="#Obs.gm-210"><span class="linenos">210</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">ddvalue</span> <span class="o">=</span> <span class="mi">0</span>
</span><span id="Obs.gm-211"><a href="#Obs.gm-211"><span class="linenos">211</span></a>
</span><span id="Obs.gm-212"><a href="#Obs.gm-212"><span class="linenos">212</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">S</span> <span class="o">=</span> <span class="p">{}</span>
</span><span id="Obs.gm-213"><a href="#Obs.gm-213"><span class="linenos">213</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">tau_exp</span> <span class="o">=</span> <span class="p">{}</span>
</span><span id="Obs.gm-214"><a href="#Obs.gm-214"><span class="linenos">214</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">N_sigma</span> <span class="o">=</span> <span class="p">{}</span>
</span><span id="Obs.gm-215"><a href="#Obs.gm-215"><span class="linenos">215</span></a>
</span><span id="Obs.gm-216"><a href="#Obs.gm-216"><span class="linenos">216</span></a> <span class="k">if</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">&#39;fft&#39;</span><span class="p">)</span> <span class="ow">is</span> <span class="kc">False</span><span class="p">:</span>
</span><span id="Obs.gm-217"><a href="#Obs.gm-217"><span class="linenos">217</span></a> <span class="n">fft</span> <span class="o">=</span> <span class="kc">False</span>
</span><span id="Obs.gm-218"><a href="#Obs.gm-218"><span class="linenos">218</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="Obs.gm-219"><a href="#Obs.gm-219"><span class="linenos">219</span></a> <span class="n">fft</span> <span class="o">=</span> <span class="kc">True</span>
</span><span id="Obs.gm-220"><a href="#Obs.gm-220"><span class="linenos">220</span></a>
</span><span id="Obs.gm-221"><a href="#Obs.gm-221"><span class="linenos">221</span></a> <span class="k">def</span> <span class="nf">_parse_kwarg</span><span class="p">(</span><span class="n">kwarg_name</span><span class="p">):</span>
</span><span id="Obs.gm-222"><a href="#Obs.gm-222"><span class="linenos">222</span></a> <span class="k">if</span> <span class="n">kwarg_name</span> <span class="ow">in</span> <span class="n">kwargs</span><span class="p">:</span>
</span><span id="Obs.gm-223"><a href="#Obs.gm-223"><span class="linenos">223</span></a> <span class="n">tmp</span> <span class="o">=</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">kwarg_name</span><span class="p">)</span>
</span><span id="Obs.gm-224"><a href="#Obs.gm-224"><span class="linenos">224</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">tmp</span><span class="p">,</span> <span class="p">(</span><span class="nb">int</span><span class="p">,</span> <span class="nb">float</span><span class="p">)):</span>
</span><span id="Obs.gm-225"><a href="#Obs.gm-225"><span class="linenos">225</span></a> <span class="k">if</span> <span class="n">tmp</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">:</span>
</span><span id="Obs.gm-226"><a href="#Obs.gm-226"><span class="linenos">226</span></a> <span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="n">kwarg_name</span> <span class="o">+</span> <span class="s1">&#39; has to be larger or equal to 0.&#39;</span><span class="p">)</span>
</span><span id="Obs.gm-227"><a href="#Obs.gm-227"><span class="linenos">227</span></a> <span class="k">for</span> <span class="n">e</span><span class="p">,</span> <span class="n">e_name</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">e_names</span><span class="p">):</span>
</span><span id="Obs.gm-228"><a href="#Obs.gm-228"><span class="linenos">228</span></a> <span class="nb">getattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">kwarg_name</span><span class="p">)[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">=</span> <span class="n">tmp</span>
</span><span id="Obs.gm-229"><a href="#Obs.gm-229"><span class="linenos">229</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="Obs.gm-230"><a href="#Obs.gm-230"><span class="linenos">230</span></a> <span class="k">raise</span> <span class="ne">TypeError</span><span class="p">(</span><span class="n">kwarg_name</span> <span class="o">+</span> <span class="s1">&#39; is not in proper format.&#39;</span><span class="p">)</span>
</span><span id="Obs.gm-231"><a href="#Obs.gm-231"><span class="linenos">231</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="Obs.gm-232"><a href="#Obs.gm-232"><span class="linenos">232</span></a> <span class="k">for</span> <span class="n">e</span><span class="p">,</span> <span class="n">e_name</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">e_names</span><span class="p">):</span>
</span><span id="Obs.gm-233"><a href="#Obs.gm-233"><span class="linenos">233</span></a> <span class="k">if</span> <span class="n">e_name</span> <span class="ow">in</span> <span class="nb">getattr</span><span class="p">(</span><span class="n">Obs</span><span class="p">,</span> <span class="n">kwarg_name</span> <span class="o">+</span> <span class="s1">&#39;_dict&#39;</span><span class="p">):</span>
</span><span id="Obs.gm-234"><a href="#Obs.gm-234"><span class="linenos">234</span></a> <span class="nb">getattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">kwarg_name</span><span class="p">)[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">=</span> <span class="nb">getattr</span><span class="p">(</span><span class="n">Obs</span><span class="p">,</span> <span class="n">kwarg_name</span> <span class="o">+</span> <span class="s1">&#39;_dict&#39;</span><span class="p">)[</span><span class="n">e_name</span><span class="p">]</span>
</span><span id="Obs.gm-235"><a href="#Obs.gm-235"><span class="linenos">235</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="Obs.gm-236"><a href="#Obs.gm-236"><span class="linenos">236</span></a> <span class="nb">getattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">kwarg_name</span><span class="p">)[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">=</span> <span class="nb">getattr</span><span class="p">(</span><span class="n">Obs</span><span class="p">,</span> <span class="n">kwarg_name</span> <span class="o">+</span> <span class="s1">&#39;_global&#39;</span><span class="p">)</span>
</span><span id="Obs.gm-237"><a href="#Obs.gm-237"><span class="linenos">237</span></a>
</span><span id="Obs.gm-238"><a href="#Obs.gm-238"><span class="linenos">238</span></a> <span class="n">_parse_kwarg</span><span class="p">(</span><span class="s1">&#39;S&#39;</span><span class="p">)</span>
</span><span id="Obs.gm-239"><a href="#Obs.gm-239"><span class="linenos">239</span></a> <span class="n">_parse_kwarg</span><span class="p">(</span><span class="s1">&#39;tau_exp&#39;</span><span class="p">)</span>
</span><span id="Obs.gm-240"><a href="#Obs.gm-240"><span class="linenos">240</span></a> <span class="n">_parse_kwarg</span><span class="p">(</span><span class="s1">&#39;N_sigma&#39;</span><span class="p">)</span>
</span><span id="Obs.gm-241"><a href="#Obs.gm-241"><span class="linenos">241</span></a>
</span><span id="Obs.gm-242"><a href="#Obs.gm-242"><span class="linenos">242</span></a> <span class="k">for</span> <span class="n">e</span><span class="p">,</span> <span class="n">e_name</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">mc_names</span><span class="p">):</span>
</span><span id="Obs.gm-243"><a href="#Obs.gm-243"><span class="linenos">243</span></a> <span class="n">gapsize</span> <span class="o">=</span> <span class="n">_determine_gap</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">e_content</span><span class="p">,</span> <span class="n">e_name</span><span class="p">)</span>
</span><span id="Obs.gm-244"><a href="#Obs.gm-244"><span class="linenos">244</span></a>
</span><span id="Obs.gm-245"><a href="#Obs.gm-245"><span class="linenos">245</span></a> <span class="n">r_length</span> <span class="o">=</span> <span class="p">[]</span>
</span><span id="Obs.gm-246"><a href="#Obs.gm-246"><span class="linenos">246</span></a> <span class="k">for</span> <span class="n">r_name</span> <span class="ow">in</span> <span class="n">e_content</span><span class="p">[</span><span class="n">e_name</span><span class="p">]:</span>
</span><span id="Obs.gm-247"><a href="#Obs.gm-247"><span class="linenos">247</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">idl</span><span class="p">[</span><span class="n">r_name</span><span class="p">],</span> <span class="nb">range</span><span class="p">):</span>
</span><span id="Obs.gm-248"><a href="#Obs.gm-248"><span class="linenos">248</span></a> <span class="n">r_length</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">idl</span><span class="p">[</span><span class="n">r_name</span><span class="p">])</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">idl</span><span class="p">[</span><span class="n">r_name</span><span class="p">]</span><span class="o">.</span><span class="n">step</span> <span class="o">//</span> <span class="n">gapsize</span><span class="p">)</span>
</span><span id="Obs.gm-249"><a href="#Obs.gm-249"><span class="linenos">249</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="Obs.gm-250"><a href="#Obs.gm-250"><span class="linenos">250</span></a> <span class="n">r_length</span><span class="o">.</span><span class="n">append</span><span class="p">((</span><span class="bp">self</span><span class="o">.</span><span class="n">idl</span><span class="p">[</span><span class="n">r_name</span><span class="p">][</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> <span class="o">-</span> <span class="bp">self</span><span class="o">.</span><span class="n">idl</span><span class="p">[</span><span class="n">r_name</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span> <span class="o">//</span> <span class="n">gapsize</span><span class="p">)</span>
</span><span id="Obs.gm-251"><a href="#Obs.gm-251"><span class="linenos">251</span></a>
</span><span id="Obs.gm-252"><a href="#Obs.gm-252"><span class="linenos">252</span></a> <span class="n">e_N</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">sum</span><span class="p">([</span><span class="bp">self</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="n">r_name</span><span class="p">]</span> <span class="k">for</span> <span class="n">r_name</span> <span class="ow">in</span> <span class="n">e_content</span><span class="p">[</span><span class="n">e_name</span><span class="p">]])</span>
</span><span id="Obs.gm-253"><a href="#Obs.gm-253"><span class="linenos">253</span></a> <span class="n">w_max</span> <span class="o">=</span> <span class="nb">max</span><span class="p">(</span><span class="n">r_length</span><span class="p">)</span> <span class="o">//</span> <span class="mi">2</span>
</span><span id="Obs.gm-254"><a href="#Obs.gm-254"><span class="linenos">254</span></a> <span class="n">e_gamma</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">zeros</span><span class="p">(</span><span class="n">w_max</span><span class="p">)</span>
</span><span id="Obs.gm-255"><a href="#Obs.gm-255"><span class="linenos">255</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_rho</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">zeros</span><span class="p">(</span><span class="n">w_max</span><span class="p">)</span>
</span><span id="Obs.gm-256"><a href="#Obs.gm-256"><span class="linenos">256</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_drho</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">zeros</span><span class="p">(</span><span class="n">w_max</span><span class="p">)</span>
</span><span id="Obs.gm-257"><a href="#Obs.gm-257"><span class="linenos">257</span></a>
</span><span id="Obs.gm-258"><a href="#Obs.gm-258"><span class="linenos">258</span></a> <span class="k">for</span> <span class="n">r_name</span> <span class="ow">in</span> <span class="n">e_content</span><span class="p">[</span><span class="n">e_name</span><span class="p">]:</span>
</span><span id="Obs.gm-259"><a href="#Obs.gm-259"><span class="linenos">259</span></a> <span class="n">e_gamma</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">+=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_calc_gamma</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">deltas</span><span class="p">[</span><span class="n">r_name</span><span class="p">],</span> <span class="bp">self</span><span class="o">.</span><span class="n">idl</span><span class="p">[</span><span class="n">r_name</span><span class="p">],</span> <span class="bp">self</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="n">r_name</span><span class="p">],</span> <span class="n">w_max</span><span class="p">,</span> <span class="n">fft</span><span class="p">,</span> <span class="n">gapsize</span><span class="p">)</span>
</span><span id="Obs.gm-260"><a href="#Obs.gm-260"><span class="linenos">260</span></a>
</span><span id="Obs.gm-261"><a href="#Obs.gm-261"><span class="linenos">261</span></a> <span class="n">gamma_div</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">zeros</span><span class="p">(</span><span class="n">w_max</span><span class="p">)</span>
</span><span id="Obs.gm-262"><a href="#Obs.gm-262"><span class="linenos">262</span></a> <span class="k">for</span> <span class="n">r_name</span> <span class="ow">in</span> <span class="n">e_content</span><span class="p">[</span><span class="n">e_name</span><span class="p">]:</span>
</span><span id="Obs.gm-263"><a href="#Obs.gm-263"><span class="linenos">263</span></a> <span class="n">gamma_div</span> <span class="o">+=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_calc_gamma</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">ones</span><span class="p">((</span><span class="bp">self</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="n">r_name</span><span class="p">])),</span> <span class="bp">self</span><span class="o">.</span><span class="n">idl</span><span class="p">[</span><span class="n">r_name</span><span class="p">],</span> <span class="bp">self</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="n">r_name</span><span class="p">],</span> <span class="n">w_max</span><span class="p">,</span> <span class="n">fft</span><span class="p">,</span> <span class="n">gapsize</span><span class="p">)</span>
</span><span id="Obs.gm-264"><a href="#Obs.gm-264"><span class="linenos">264</span></a> <span class="n">gamma_div</span><span class="p">[</span><span class="n">gamma_div</span> <span class="o">&lt;</span> <span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="mf">1.0</span>
</span><span id="Obs.gm-265"><a href="#Obs.gm-265"><span class="linenos">265</span></a> <span class="n">e_gamma</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">/=</span> <span class="n">gamma_div</span><span class="p">[:</span><span class="n">w_max</span><span class="p">]</span>
</span><span id="Obs.gm-266"><a href="#Obs.gm-266"><span class="linenos">266</span></a>
</span><span id="Obs.gm-267"><a href="#Obs.gm-267"><span class="linenos">267</span></a> <span class="k">if</span> <span class="n">np</span><span class="o">.</span><span class="n">abs</span><span class="p">(</span><span class="n">e_gamma</span><span class="p">[</span><span class="n">e_name</span><span class="p">][</span><span class="mi">0</span><span class="p">])</span> <span class="o">&lt;</span> <span class="mi">10</span> <span class="o">*</span> <span class="n">np</span><span class="o">.</span><span class="n">finfo</span><span class="p">(</span><span class="nb">float</span><span class="p">)</span><span class="o">.</span><span class="n">tiny</span><span class="p">:</span> <span class="c1"># Prevent division by zero</span>
</span><span id="Obs.gm-268"><a href="#Obs.gm-268"><span class="linenos">268</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_tauint</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">=</span> <span class="mf">0.5</span>
</span><span id="Obs.gm-269"><a href="#Obs.gm-269"><span class="linenos">269</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_dtauint</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">=</span> <span class="mf">0.0</span>
</span><span id="Obs.gm-270"><a href="#Obs.gm-270"><span class="linenos">270</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_dvalue</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">=</span> <span class="mf">0.0</span>
</span><span id="Obs.gm-271"><a href="#Obs.gm-271"><span class="linenos">271</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_ddvalue</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">=</span> <span class="mf">0.0</span>
</span><span id="Obs.gm-272"><a href="#Obs.gm-272"><span class="linenos">272</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_windowsize</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">=</span> <span class="mi">0</span>
</span><span id="Obs.gm-273"><a href="#Obs.gm-273"><span class="linenos">273</span></a> <span class="k">continue</span>
</span><span id="Obs.gm-274"><a href="#Obs.gm-274"><span class="linenos">274</span></a>
</span><span id="Obs.gm-275"><a href="#Obs.gm-275"><span class="linenos">275</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_rho</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">=</span> <span class="n">e_gamma</span><span class="p">[</span><span class="n">e_name</span><span class="p">][:</span><span class="n">w_max</span><span class="p">]</span> <span class="o">/</span> <span class="n">e_gamma</span><span class="p">[</span><span class="n">e_name</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span>
</span><span id="Obs.gm-276"><a href="#Obs.gm-276"><span class="linenos">276</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_n_tauint</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">cumsum</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">concatenate</span><span class="p">(([</span><span class="mf">0.5</span><span class="p">],</span> <span class="bp">self</span><span class="o">.</span><span class="n">e_rho</span><span class="p">[</span><span class="n">e_name</span><span class="p">][</span><span class="mi">1</span><span class="p">:])))</span>
</span><span id="Obs.gm-277"><a href="#Obs.gm-277"><span class="linenos">277</span></a> <span class="c1"># Make sure no entry of tauint is smaller than 0.5</span>
</span><span id="Obs.gm-278"><a href="#Obs.gm-278"><span class="linenos">278</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_n_tauint</span><span class="p">[</span><span class="n">e_name</span><span class="p">][</span><span class="bp">self</span><span class="o">.</span><span class="n">e_n_tauint</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">&lt;=</span> <span class="mf">0.5</span><span class="p">]</span> <span class="o">=</span> <span class="mf">0.5</span> <span class="o">+</span> <span class="n">np</span><span class="o">.</span><span class="n">finfo</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">float64</span><span class="p">)</span><span class="o">.</span><span class="n">eps</span>
</span><span id="Obs.gm-279"><a href="#Obs.gm-279"><span class="linenos">279</span></a> <span class="c1"># hep-lat/0306017 eq. (42)</span>
</span><span id="Obs.gm-280"><a href="#Obs.gm-280"><span class="linenos">280</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_n_dtauint</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">e_n_tauint</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">*</span> <span class="mi">2</span> <span class="o">*</span> <span class="n">np</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">abs</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">arange</span><span class="p">(</span><span class="n">w_max</span><span class="p">)</span> <span class="o">+</span> <span class="mf">0.5</span> <span class="o">-</span> <span class="bp">self</span><span class="o">.</span><span class="n">e_n_tauint</span><span class="p">[</span><span class="n">e_name</span><span class="p">])</span> <span class="o">/</span> <span class="n">e_N</span><span class="p">)</span>
</span><span id="Obs.gm-281"><a href="#Obs.gm-281"><span class="linenos">281</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_n_dtauint</span><span class="p">[</span><span class="n">e_name</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="mf">0.0</span>
</span><span id="Obs.gm-282"><a href="#Obs.gm-282"><span class="linenos">282</span></a>
</span><span id="Obs.gm-283"><a href="#Obs.gm-283"><span class="linenos">283</span></a> <span class="k">def</span> <span class="nf">_compute_drho</span><span class="p">(</span><span class="n">i</span><span class="p">):</span>
</span><span id="Obs.gm-284"><a href="#Obs.gm-284"><span class="linenos">284</span></a> <span class="n">tmp</span> <span class="o">=</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">e_rho</span><span class="p">[</span><span class="n">e_name</span><span class="p">][</span><span class="n">i</span> <span class="o">+</span> <span class="mi">1</span><span class="p">:</span><span class="n">w_max</span><span class="p">]</span>
</span><span id="Obs.gm-285"><a href="#Obs.gm-285"><span class="linenos">285</span></a> <span class="o">+</span> <span class="n">np</span><span class="o">.</span><span class="n">concatenate</span><span class="p">([</span><span class="bp">self</span><span class="o">.</span><span class="n">e_rho</span><span class="p">[</span><span class="n">e_name</span><span class="p">][</span><span class="n">i</span> <span class="o">-</span> <span class="mi">1</span><span class="p">:</span><span class="kc">None</span> <span class="k">if</span> <span class="n">i</span> <span class="o">-</span> <span class="p">(</span><span class="n">w_max</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> <span class="o">//</span> <span class="mi">2</span> <span class="o">&lt;=</span> <span class="mi">0</span> <span class="k">else</span> <span class="p">(</span><span class="mi">2</span> <span class="o">*</span> <span class="n">i</span> <span class="o">-</span> <span class="p">(</span><span class="mi">2</span> <span class="o">*</span> <span class="n">w_max</span><span class="p">)</span> <span class="o">//</span> <span class="mi">2</span><span class="p">):</span><span class="o">-</span><span class="mi">1</span><span class="p">],</span>
</span><span id="Obs.gm-286"><a href="#Obs.gm-286"><span class="linenos">286</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_rho</span><span class="p">[</span><span class="n">e_name</span><span class="p">][</span><span class="mi">1</span><span class="p">:</span><span class="nb">max</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="n">w_max</span> <span class="o">-</span> <span class="mi">2</span> <span class="o">*</span> <span class="n">i</span><span class="p">)]])</span>
</span><span id="Obs.gm-287"><a href="#Obs.gm-287"><span class="linenos">287</span></a> <span class="o">-</span> <span class="mi">2</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">e_rho</span><span class="p">[</span><span class="n">e_name</span><span class="p">][</span><span class="n">i</span><span class="p">]</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">e_rho</span><span class="p">[</span><span class="n">e_name</span><span class="p">][</span><span class="mi">1</span><span class="p">:</span><span class="n">w_max</span> <span class="o">-</span> <span class="n">i</span><span class="p">])</span>
</span><span id="Obs.gm-288"><a href="#Obs.gm-288"><span class="linenos">288</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_drho</span><span class="p">[</span><span class="n">e_name</span><span class="p">][</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">sum</span><span class="p">(</span><span class="n">tmp</span> <span class="o">**</span> <span class="mi">2</span><span class="p">)</span> <span class="o">/</span> <span class="n">e_N</span><span class="p">)</span>
</span><span id="Obs.gm-289"><a href="#Obs.gm-289"><span class="linenos">289</span></a>
</span><span id="Obs.gm-290"><a href="#Obs.gm-290"><span class="linenos">290</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">tau_exp</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
</span><span id="Obs.gm-291"><a href="#Obs.gm-291"><span class="linenos">291</span></a> <span class="n">_compute_drho</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span>
</span><span id="Obs.gm-292"><a href="#Obs.gm-292"><span class="linenos">292</span></a> <span class="n">texp</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">tau_exp</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span>
</span><span id="Obs.gm-293"><a href="#Obs.gm-293"><span class="linenos">293</span></a> <span class="c1"># Critical slowing down analysis</span>
</span><span id="Obs.gm-294"><a href="#Obs.gm-294"><span class="linenos">294</span></a> <span class="k">if</span> <span class="n">w_max</span> <span class="o">//</span> <span class="mi">2</span> <span class="o">&lt;=</span> <span class="mi">1</span><span class="p">:</span>
</span><span id="Obs.gm-295"><a href="#Obs.gm-295"><span class="linenos">295</span></a> <span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s2">&quot;Need at least 8 samples for tau_exp error analysis&quot;</span><span class="p">)</span>
</span><span id="Obs.gm-296"><a href="#Obs.gm-296"><span class="linenos">296</span></a> <span class="k">for</span> <span class="n">n</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="n">w_max</span> <span class="o">//</span> <span class="mi">2</span><span class="p">):</span>
</span><span id="Obs.gm-297"><a href="#Obs.gm-297"><span class="linenos">297</span></a> <span class="n">_compute_drho</span><span class="p">(</span><span class="n">n</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span>
</span><span id="Obs.gm-298"><a href="#Obs.gm-298"><span class="linenos">298</span></a> <span class="k">if</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">e_rho</span><span class="p">[</span><span class="n">e_name</span><span class="p">][</span><span class="n">n</span><span class="p">]</span> <span class="o">-</span> <span class="bp">self</span><span class="o">.</span><span class="n">N_sigma</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">e_drho</span><span class="p">[</span><span class="n">e_name</span><span class="p">][</span><span class="n">n</span><span class="p">])</span> <span class="o">&lt;</span> <span class="mi">0</span> <span class="ow">or</span> <span class="n">n</span> <span class="o">&gt;=</span> <span class="n">w_max</span> <span class="o">//</span> <span class="mi">2</span> <span class="o">-</span> <span class="mi">2</span><span class="p">:</span>
</span><span id="Obs.gm-299"><a href="#Obs.gm-299"><span class="linenos">299</span></a> <span class="c1"># Bias correction hep-lat/0306017 eq. (49) included</span>
</span><span id="Obs.gm-300"><a href="#Obs.gm-300"><span class="linenos">300</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_tauint</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">e_n_tauint</span><span class="p">[</span><span class="n">e_name</span><span class="p">][</span><span class="n">n</span><span class="p">]</span> <span class="o">*</span> <span class="p">(</span><span class="mi">1</span> <span class="o">+</span> <span class="p">(</span><span class="mi">2</span> <span class="o">*</span> <span class="n">n</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span> <span class="o">/</span> <span class="n">e_N</span><span class="p">)</span> <span class="o">/</span> <span class="p">(</span><span class="mi">1</span> <span class="o">+</span> <span class="mi">1</span> <span class="o">/</span> <span class="n">e_N</span><span class="p">)</span> <span class="o">+</span> <span class="n">texp</span> <span class="o">*</span> <span class="n">np</span><span class="o">.</span><span class="n">abs</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">e_rho</span><span class="p">[</span><span class="n">e_name</span><span class="p">][</span><span class="n">n</span> <span class="o">+</span> <span class="mi">1</span><span class="p">])</span> <span class="c1"># The absolute makes sure, that the tail contribution is always positive</span>
</span><span id="Obs.gm-301"><a href="#Obs.gm-301"><span class="linenos">301</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_dtauint</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">e_n_dtauint</span><span class="p">[</span><span class="n">e_name</span><span class="p">][</span><span class="n">n</span><span class="p">]</span> <span class="o">**</span> <span class="mi">2</span> <span class="o">+</span> <span class="n">texp</span> <span class="o">**</span> <span class="mi">2</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">e_drho</span><span class="p">[</span><span class="n">e_name</span><span class="p">][</span><span class="n">n</span> <span class="o">+</span> <span class="mi">1</span><span class="p">]</span> <span class="o">**</span> <span class="mi">2</span><span class="p">)</span>
</span><span id="Obs.gm-302"><a href="#Obs.gm-302"><span class="linenos">302</span></a> <span class="c1"># Error of tau_exp neglected so far, missing term: self.e_rho[e_name][n + 1] ** 2 * d_tau_exp ** 2</span>
</span><span id="Obs.gm-303"><a href="#Obs.gm-303"><span class="linenos">303</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_dvalue</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="mi">2</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">e_tauint</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">*</span> <span class="n">e_gamma</span><span class="p">[</span><span class="n">e_name</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span> <span class="o">*</span> <span class="p">(</span><span class="mi">1</span> <span class="o">+</span> <span class="mi">1</span> <span class="o">/</span> <span class="n">e_N</span><span class="p">)</span> <span class="o">/</span> <span class="n">e_N</span><span class="p">)</span>
</span><span id="Obs.gm-304"><a href="#Obs.gm-304"><span class="linenos">304</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_ddvalue</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">e_dvalue</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">*</span> <span class="n">np</span><span class="o">.</span><span class="n">sqrt</span><span class="p">((</span><span class="n">n</span> <span class="o">+</span> <span class="mf">0.5</span><span class="p">)</span> <span class="o">/</span> <span class="n">e_N</span><span class="p">)</span>
</span><span id="Obs.gm-305"><a href="#Obs.gm-305"><span class="linenos">305</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_windowsize</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">=</span> <span class="n">n</span>
</span><span id="Obs.gm-306"><a href="#Obs.gm-306"><span class="linenos">306</span></a> <span class="k">break</span>
</span><span id="Obs.gm-307"><a href="#Obs.gm-307"><span class="linenos">307</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="Obs.gm-308"><a href="#Obs.gm-308"><span class="linenos">308</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">S</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">==</span> <span class="mf">0.0</span><span class="p">:</span>
</span><span id="Obs.gm-309"><a href="#Obs.gm-309"><span class="linenos">309</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_tauint</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">=</span> <span class="mf">0.5</span>
</span><span id="Obs.gm-310"><a href="#Obs.gm-310"><span class="linenos">310</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_dtauint</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">=</span> <span class="mf">0.0</span>
</span><span id="Obs.gm-311"><a href="#Obs.gm-311"><span class="linenos">311</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_dvalue</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="n">e_gamma</span><span class="p">[</span><span class="n">e_name</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span> <span class="o">/</span> <span class="p">(</span><span class="n">e_N</span> <span class="o">-</span> <span class="mi">1</span><span class="p">))</span>
</span><span id="Obs.gm-312"><a href="#Obs.gm-312"><span class="linenos">312</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_ddvalue</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">e_dvalue</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">*</span> <span class="n">np</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="mf">0.5</span> <span class="o">/</span> <span class="n">e_N</span><span class="p">)</span>
</span><span id="Obs.gm-313"><a href="#Obs.gm-313"><span class="linenos">313</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_windowsize</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">=</span> <span class="mi">0</span>
</span><span id="Obs.gm-314"><a href="#Obs.gm-314"><span class="linenos">314</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="Obs.gm-315"><a href="#Obs.gm-315"><span class="linenos">315</span></a> <span class="c1"># Standard automatic windowing procedure</span>
</span><span id="Obs.gm-316"><a href="#Obs.gm-316"><span class="linenos">316</span></a> <span class="n">tau</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">S</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">/</span> <span class="n">np</span><span class="o">.</span><span class="n">log</span><span class="p">((</span><span class="mi">2</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">e_n_tauint</span><span class="p">[</span><span class="n">e_name</span><span class="p">][</span><span class="mi">1</span><span class="p">:]</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span> <span class="o">/</span> <span class="p">(</span><span class="mi">2</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">e_n_tauint</span><span class="p">[</span><span class="n">e_name</span><span class="p">][</span><span class="mi">1</span><span class="p">:]</span> <span class="o">-</span> <span class="mi">1</span><span class="p">))</span>
</span><span id="Obs.gm-317"><a href="#Obs.gm-317"><span class="linenos">317</span></a> <span class="n">g_w</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">exp</span><span class="p">(</span><span class="o">-</span> <span class="n">np</span><span class="o">.</span><span class="n">arange</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">tau</span><span class="p">)</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span> <span class="o">/</span> <span class="n">tau</span><span class="p">)</span> <span class="o">-</span> <span class="n">tau</span> <span class="o">/</span> <span class="n">np</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">arange</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">tau</span><span class="p">)</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span> <span class="o">*</span> <span class="n">e_N</span><span class="p">)</span>
</span><span id="Obs.gm-318"><a href="#Obs.gm-318"><span class="linenos">318</span></a> <span class="k">for</span> <span class="n">n</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="n">w_max</span><span class="p">):</span>
</span><span id="Obs.gm-319"><a href="#Obs.gm-319"><span class="linenos">319</span></a> <span class="k">if</span> <span class="n">g_w</span><span class="p">[</span><span class="n">n</span> <span class="o">-</span> <span class="mi">1</span><span class="p">]</span> <span class="o">&lt;</span> <span class="mi">0</span> <span class="ow">or</span> <span class="n">n</span> <span class="o">&gt;=</span> <span class="n">w_max</span> <span class="o">-</span> <span class="mi">1</span><span class="p">:</span>
</span><span id="Obs.gm-320"><a href="#Obs.gm-320"><span class="linenos">320</span></a> <span class="n">_compute_drho</span><span class="p">(</span><span class="n">n</span><span class="p">)</span>
</span><span id="Obs.gm-321"><a href="#Obs.gm-321"><span class="linenos">321</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_tauint</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">e_n_tauint</span><span class="p">[</span><span class="n">e_name</span><span class="p">][</span><span class="n">n</span><span class="p">]</span> <span class="o">*</span> <span class="p">(</span><span class="mi">1</span> <span class="o">+</span> <span class="p">(</span><span class="mi">2</span> <span class="o">*</span> <span class="n">n</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span> <span class="o">/</span> <span class="n">e_N</span><span class="p">)</span> <span class="o">/</span> <span class="p">(</span><span class="mi">1</span> <span class="o">+</span> <span class="mi">1</span> <span class="o">/</span> <span class="n">e_N</span><span class="p">)</span> <span class="c1"># Bias correction hep-lat/0306017 eq. (49)</span>
</span><span id="Obs.gm-322"><a href="#Obs.gm-322"><span class="linenos">322</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_dtauint</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">e_n_dtauint</span><span class="p">[</span><span class="n">e_name</span><span class="p">][</span><span class="n">n</span><span class="p">]</span>
</span><span id="Obs.gm-323"><a href="#Obs.gm-323"><span class="linenos">323</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_dvalue</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="mi">2</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">e_tauint</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">*</span> <span class="n">e_gamma</span><span class="p">[</span><span class="n">e_name</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span> <span class="o">*</span> <span class="p">(</span><span class="mi">1</span> <span class="o">+</span> <span class="mi">1</span> <span class="o">/</span> <span class="n">e_N</span><span class="p">)</span> <span class="o">/</span> <span class="n">e_N</span><span class="p">)</span>
</span><span id="Obs.gm-324"><a href="#Obs.gm-324"><span class="linenos">324</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_ddvalue</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">e_dvalue</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">*</span> <span class="n">np</span><span class="o">.</span><span class="n">sqrt</span><span class="p">((</span><span class="n">n</span> <span class="o">+</span> <span class="mf">0.5</span><span class="p">)</span> <span class="o">/</span> <span class="n">e_N</span><span class="p">)</span>
</span><span id="Obs.gm-325"><a href="#Obs.gm-325"><span class="linenos">325</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_windowsize</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">=</span> <span class="n">n</span>
</span><span id="Obs.gm-326"><a href="#Obs.gm-326"><span class="linenos">326</span></a> <span class="k">break</span>
</span><span id="Obs.gm-327"><a href="#Obs.gm-327"><span class="linenos">327</span></a>
</span><span id="Obs.gm-328"><a href="#Obs.gm-328"><span class="linenos">328</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_dvalue</span> <span class="o">+=</span> <span class="bp">self</span><span class="o">.</span><span class="n">e_dvalue</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">**</span> <span class="mi">2</span>
</span><span id="Obs.gm-329"><a href="#Obs.gm-329"><span class="linenos">329</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">ddvalue</span> <span class="o">+=</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">e_dvalue</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">e_ddvalue</span><span class="p">[</span><span class="n">e_name</span><span class="p">])</span> <span class="o">**</span> <span class="mi">2</span>
</span><span id="Obs.gm-330"><a href="#Obs.gm-330"><span class="linenos">330</span></a>
</span><span id="Obs.gm-331"><a href="#Obs.gm-331"><span class="linenos">331</span></a> <span class="k">for</span> <span class="n">e_name</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">cov_names</span><span class="p">:</span>
</span><span id="Obs.gm-332"><a href="#Obs.gm-332"><span class="linenos">332</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_dvalue</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">covobs</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span><span class="o">.</span><span class="n">errsq</span><span class="p">())</span>
</span><span id="Obs.gm-333"><a href="#Obs.gm-333"><span class="linenos">333</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">e_ddvalue</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">=</span> <span class="mi">0</span>
</span><span id="Obs.gm-334"><a href="#Obs.gm-334"><span class="linenos">334</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_dvalue</span> <span class="o">+=</span> <span class="bp">self</span><span class="o">.</span><span class="n">e_dvalue</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span><span class="o">**</span><span class="mi">2</span>
</span><span id="Obs.gm-335"><a href="#Obs.gm-335"><span class="linenos">335</span></a>
</span><span id="Obs.gm-336"><a href="#Obs.gm-336"><span class="linenos">336</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_dvalue</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_dvalue</span><span class="p">)</span>
</span><span id="Obs.gm-337"><a href="#Obs.gm-337"><span class="linenos">337</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_dvalue</span> <span class="o">==</span> <span class="mf">0.0</span><span class="p">:</span>
</span><span id="Obs.gm-338"><a href="#Obs.gm-338"><span class="linenos">338</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">ddvalue</span> <span class="o">=</span> <span class="mf">0.0</span>
</span><span id="Obs.gm-339"><a href="#Obs.gm-339"><span class="linenos">339</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="Obs.gm-340"><a href="#Obs.gm-340"><span class="linenos">340</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">ddvalue</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ddvalue</span><span class="p">)</span> <span class="o">/</span> <span class="bp">self</span><span class="o">.</span><span class="n">_dvalue</span>
</span><span id="Obs.gm-341"><a href="#Obs.gm-341"><span class="linenos">341</span></a> <span class="k">return</span>
</span></pre></div>
<div class="docstring"><p>Estimate the error and related properties of the Obs.</p>
<h6 id="parameters">Parameters</h6>
<ul>
<li><strong>S</strong> (float):
specifies a custom value for the parameter S (default 2.0).
If set to 0 it is assumed that the data exhibits no
autocorrelation. In this case the error estimates coincides
with the sample standard error.</li>
<li><strong>tau_exp</strong> (float):
positive value triggers the critical slowing down analysis
(default 0.0).</li>
<li><strong>N_sigma</strong> (float):
number of standard deviations from zero until the tail is
attached to the autocorrelation function (default 1).</li>
<li><strong>fft</strong> (bool):
determines whether the fft algorithm is used for the computation
of the autocorrelation function (default True)</li>
</ul>
</div>
</div>
<div id="Obs.details" class="classattr">
<input id="Obs.details-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<div class="attr function">
<span class="def">def</span>
<span class="name">details</span><span class="signature pdoc-code condensed">(<span class="param"><span class="bp">self</span>, </span><span class="param"><span class="n">ens_content</span><span class="o">=</span><span class="kc">True</span></span><span class="return-annotation">):</span></span>
<label class="view-source-button" for="Obs.details-view-source"><span>View Source</span></label>
</div>
<a class="headerlink" href="#Obs.details"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="Obs.details-381"><a href="#Obs.details-381"><span class="linenos">381</span></a> <span class="k">def</span> <span class="nf">details</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">ens_content</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
</span><span id="Obs.details-382"><a href="#Obs.details-382"><span class="linenos">382</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Output detailed properties of the Obs.</span>
</span><span id="Obs.details-383"><a href="#Obs.details-383"><span class="linenos">383</span></a>
</span><span id="Obs.details-384"><a href="#Obs.details-384"><span class="linenos">384</span></a><span class="sd"> Parameters</span>
</span><span id="Obs.details-385"><a href="#Obs.details-385"><span class="linenos">385</span></a><span class="sd"> ----------</span>
</span><span id="Obs.details-386"><a href="#Obs.details-386"><span class="linenos">386</span></a><span class="sd"> ens_content : bool</span>
</span><span id="Obs.details-387"><a href="#Obs.details-387"><span class="linenos">387</span></a><span class="sd"> print details about the ensembles and replica if true.</span>
</span><span id="Obs.details-388"><a href="#Obs.details-388"><span class="linenos">388</span></a><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="Obs.details-389"><a href="#Obs.details-389"><span class="linenos">389</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">tag</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
</span><span id="Obs.details-390"><a href="#Obs.details-390"><span class="linenos">390</span></a> <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;Description:&quot;</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
</span><span id="Obs.details-391"><a href="#Obs.details-391"><span class="linenos">391</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">hasattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s1">&#39;e_dvalue&#39;</span><span class="p">):</span>
</span><span id="Obs.details-392"><a href="#Obs.details-392"><span class="linenos">392</span></a> <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;Result</span><span class="se">\t</span><span class="s1"> </span><span class="si">%3.8e</span><span class="s1">&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">value</span><span class="p">))</span>
</span><span id="Obs.details-393"><a href="#Obs.details-393"><span class="linenos">393</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="Obs.details-394"><a href="#Obs.details-394"><span class="linenos">394</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">value</span> <span class="o">==</span> <span class="mf">0.0</span><span class="p">:</span>
</span><span id="Obs.details-395"><a href="#Obs.details-395"><span class="linenos">395</span></a> <span class="n">percentage</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">nan</span>
</span><span id="Obs.details-396"><a href="#Obs.details-396"><span class="linenos">396</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="Obs.details-397"><a href="#Obs.details-397"><span class="linenos">397</span></a> <span class="n">percentage</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">abs</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_dvalue</span> <span class="o">/</span> <span class="bp">self</span><span class="o">.</span><span class="n">value</span><span class="p">)</span> <span class="o">*</span> <span class="mi">100</span>
</span><span id="Obs.details-398"><a href="#Obs.details-398"><span class="linenos">398</span></a> <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;Result</span><span class="se">\t</span><span class="s1"> </span><span class="si">%3.8e</span><span class="s1"> +/- </span><span class="si">%3.8e</span><span class="s1"> +/- </span><span class="si">%3.8e</span><span class="s1"> (</span><span class="si">%3.3f%%</span><span class="s1">)&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">value</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_dvalue</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">ddvalue</span><span class="p">,</span> <span class="n">percentage</span><span class="p">))</span>
</span><span id="Obs.details-399"><a href="#Obs.details-399"><span class="linenos">399</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">e_names</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">1</span><span class="p">:</span>
</span><span id="Obs.details-400"><a href="#Obs.details-400"><span class="linenos">400</span></a> <span class="nb">print</span><span class="p">(</span><span class="s1">&#39; Ensemble errors:&#39;</span><span class="p">)</span>
</span><span id="Obs.details-401"><a href="#Obs.details-401"><span class="linenos">401</span></a> <span class="n">e_content</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">e_content</span>
</span><span id="Obs.details-402"><a href="#Obs.details-402"><span class="linenos">402</span></a> <span class="k">for</span> <span class="n">e_name</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">mc_names</span><span class="p">:</span>
</span><span id="Obs.details-403"><a href="#Obs.details-403"><span class="linenos">403</span></a> <span class="n">gap</span> <span class="o">=</span> <span class="n">_determine_gap</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">e_content</span><span class="p">,</span> <span class="n">e_name</span><span class="p">)</span>
</span><span id="Obs.details-404"><a href="#Obs.details-404"><span class="linenos">404</span></a>
</span><span id="Obs.details-405"><a href="#Obs.details-405"><span class="linenos">405</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">e_names</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">1</span><span class="p">:</span>
</span><span id="Obs.details-406"><a href="#Obs.details-406"><span class="linenos">406</span></a> <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;&#39;</span><span class="p">,</span> <span class="n">e_name</span><span class="p">,</span> <span class="s1">&#39;</span><span class="se">\t</span><span class="s1"> </span><span class="si">%3.6e</span><span class="s1"> +/- </span><span class="si">%3.6e</span><span class="s1">&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">e_dvalue</span><span class="p">[</span><span class="n">e_name</span><span class="p">],</span> <span class="bp">self</span><span class="o">.</span><span class="n">e_ddvalue</span><span class="p">[</span><span class="n">e_name</span><span class="p">]))</span>
</span><span id="Obs.details-407"><a href="#Obs.details-407"><span class="linenos">407</span></a> <span class="n">tau_string</span> <span class="o">=</span> <span class="s2">&quot; </span><span class="se">\N{GREEK SMALL LETTER TAU}</span><span class="s2">_int</span><span class="se">\t</span><span class="s2"> &quot;</span> <span class="o">+</span> <span class="n">_format_uncertainty</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">e_tauint</span><span class="p">[</span><span class="n">e_name</span><span class="p">],</span> <span class="bp">self</span><span class="o">.</span><span class="n">e_dtauint</span><span class="p">[</span><span class="n">e_name</span><span class="p">])</span>
</span><span id="Obs.details-408"><a href="#Obs.details-408"><span class="linenos">408</span></a> <span class="n">tau_string</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">&quot; in units of </span><span class="si">{</span><span class="n">gap</span><span class="si">}</span><span class="s2"> config&quot;</span>
</span><span id="Obs.details-409"><a href="#Obs.details-409"><span class="linenos">409</span></a> <span class="k">if</span> <span class="n">gap</span> <span class="o">&gt;</span> <span class="mi">1</span><span class="p">:</span>
</span><span id="Obs.details-410"><a href="#Obs.details-410"><span class="linenos">410</span></a> <span class="n">tau_string</span> <span class="o">+=</span> <span class="s2">&quot;s&quot;</span>
</span><span id="Obs.details-411"><a href="#Obs.details-411"><span class="linenos">411</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">tau_exp</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
</span><span id="Obs.details-412"><a href="#Obs.details-412"><span class="linenos">412</span></a> <span class="n">tau_string</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">tau_string</span><span class="si">:</span><span class="s2"> &lt;45</span><span class="si">}</span><span class="s2">&quot;</span> <span class="o">+</span> <span class="s1">&#39;</span><span class="se">\t</span><span class="s1">(</span><span class="se">\N{GREEK SMALL LETTER TAU}</span><span class="s1">_exp=</span><span class="si">%3.2f</span><span class="s1">, N_</span><span class="se">\N{GREEK SMALL LETTER SIGMA}</span><span class="s1">=</span><span class="si">%1.0i</span><span class="s1">)&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">tau_exp</span><span class="p">[</span><span class="n">e_name</span><span class="p">],</span> <span class="bp">self</span><span class="o">.</span><span class="n">N_sigma</span><span class="p">[</span><span class="n">e_name</span><span class="p">])</span>
</span><span id="Obs.details-413"><a href="#Obs.details-413"><span class="linenos">413</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="Obs.details-414"><a href="#Obs.details-414"><span class="linenos">414</span></a> <span class="n">tau_string</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">tau_string</span><span class="si">:</span><span class="s2"> &lt;45</span><span class="si">}</span><span class="s2">&quot;</span> <span class="o">+</span> <span class="s1">&#39;</span><span class="se">\t</span><span class="s1">(S=</span><span class="si">%3.2f</span><span class="s1">)&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">S</span><span class="p">[</span><span class="n">e_name</span><span class="p">])</span>
</span><span id="Obs.details-415"><a href="#Obs.details-415"><span class="linenos">415</span></a> <span class="nb">print</span><span class="p">(</span><span class="n">tau_string</span><span class="p">)</span>
</span><span id="Obs.details-416"><a href="#Obs.details-416"><span class="linenos">416</span></a> <span class="k">for</span> <span class="n">e_name</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">cov_names</span><span class="p">:</span>
</span><span id="Obs.details-417"><a href="#Obs.details-417"><span class="linenos">417</span></a> <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;&#39;</span><span class="p">,</span> <span class="n">e_name</span><span class="p">,</span> <span class="s1">&#39;</span><span class="se">\t</span><span class="s1"> </span><span class="si">%3.8e</span><span class="s1">&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">e_dvalue</span><span class="p">[</span><span class="n">e_name</span><span class="p">]))</span>
</span><span id="Obs.details-418"><a href="#Obs.details-418"><span class="linenos">418</span></a> <span class="k">if</span> <span class="n">ens_content</span> <span class="ow">is</span> <span class="kc">True</span><span class="p">:</span>
</span><span id="Obs.details-419"><a href="#Obs.details-419"><span class="linenos">419</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">e_names</span><span class="p">)</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span>
</span><span id="Obs.details-420"><a href="#Obs.details-420"><span class="linenos">420</span></a> <span class="nb">print</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">N</span><span class="p">,</span> <span class="s1">&#39;samples in&#39;</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">e_names</span><span class="p">),</span> <span class="s1">&#39;ensemble:&#39;</span><span class="p">)</span>
</span><span id="Obs.details-421"><a href="#Obs.details-421"><span class="linenos">421</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="Obs.details-422"><a href="#Obs.details-422"><span class="linenos">422</span></a> <span class="nb">print</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">N</span><span class="p">,</span> <span class="s1">&#39;samples in&#39;</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">e_names</span><span class="p">),</span> <span class="s1">&#39;ensembles:&#39;</span><span class="p">)</span>
</span><span id="Obs.details-423"><a href="#Obs.details-423"><span class="linenos">423</span></a> <span class="n">my_string_list</span> <span class="o">=</span> <span class="p">[]</span>
</span><span id="Obs.details-424"><a href="#Obs.details-424"><span class="linenos">424</span></a> <span class="k">for</span> <span class="n">key</span><span class="p">,</span> <span class="n">value</span> <span class="ow">in</span> <span class="nb">sorted</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">e_content</span><span class="o">.</span><span class="n">items</span><span class="p">()):</span>
</span><span id="Obs.details-425"><a href="#Obs.details-425"><span class="linenos">425</span></a> <span class="k">if</span> <span class="n">key</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">covobs</span><span class="p">:</span>
</span><span id="Obs.details-426"><a href="#Obs.details-426"><span class="linenos">426</span></a> <span class="n">my_string</span> <span class="o">=</span> <span class="s1">&#39; &#39;</span> <span class="o">+</span> <span class="s2">&quot;</span><span class="se">\u00B7</span><span class="s2"> Ensemble &#39;&quot;</span> <span class="o">+</span> <span class="n">key</span> <span class="o">+</span> <span class="s2">&quot;&#39; &quot;</span>
</span><span id="Obs.details-427"><a href="#Obs.details-427"><span class="linenos">427</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">value</span><span class="p">)</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span>
</span><span id="Obs.details-428"><a href="#Obs.details-428"><span class="linenos">428</span></a> <span class="n">my_string</span> <span class="o">+=</span> <span class="sa">f</span><span class="s1">&#39;: </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="n">value</span><span class="p">[</span><span class="mi">0</span><span class="p">]]</span><span class="si">}</span><span class="s1"> configurations&#39;</span>
</span><span id="Obs.details-429"><a href="#Obs.details-429"><span class="linenos">429</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">idl</span><span class="p">[</span><span class="n">value</span><span class="p">[</span><span class="mi">0</span><span class="p">]],</span> <span class="nb">range</span><span class="p">):</span>
</span><span id="Obs.details-430"><a href="#Obs.details-430"><span class="linenos">430</span></a> <span class="n">my_string</span> <span class="o">+=</span> <span class="sa">f</span><span class="s1">&#39; (from </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">idl</span><span class="p">[</span><span class="n">value</span><span class="p">[</span><span class="mi">0</span><span class="p">]]</span><span class="o">.</span><span class="n">start</span><span class="si">}</span><span class="s1"> to </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">idl</span><span class="p">[</span><span class="n">value</span><span class="p">[</span><span class="mi">0</span><span class="p">]][</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span><span class="si">}</span><span class="s1">&#39;</span> <span class="o">+</span> <span class="nb">int</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">idl</span><span class="p">[</span><span class="n">value</span><span class="p">[</span><span class="mi">0</span><span class="p">]]</span><span class="o">.</span><span class="n">step</span> <span class="o">!=</span> <span class="mi">1</span><span class="p">)</span> <span class="o">*</span> <span class="sa">f</span><span class="s1">&#39; in steps of </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">idl</span><span class="p">[</span><span class="n">value</span><span class="p">[</span><span class="mi">0</span><span class="p">]]</span><span class="o">.</span><span class="n">step</span><span class="si">}</span><span class="s1">&#39;</span> <span class="o">+</span> <span class="s1">&#39;)&#39;</span>
</span><span id="Obs.details-431"><a href="#Obs.details-431"><span class="linenos">431</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="Obs.details-432"><a href="#Obs.details-432"><span class="linenos">432</span></a> <span class="n">my_string</span> <span class="o">+=</span> <span class="sa">f</span><span class="s1">&#39; (irregular range from </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">idl</span><span class="p">[</span><span class="n">value</span><span class="p">[</span><span class="mi">0</span><span class="p">]][</span><span class="mi">0</span><span class="p">]</span><span class="si">}</span><span class="s1"> to </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">idl</span><span class="p">[</span><span class="n">value</span><span class="p">[</span><span class="mi">0</span><span class="p">]][</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span><span class="si">}</span><span class="s1">)&#39;</span>
</span><span id="Obs.details-433"><a href="#Obs.details-433"><span class="linenos">433</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="Obs.details-434"><a href="#Obs.details-434"><span class="linenos">434</span></a> <span class="n">sublist</span> <span class="o">=</span> <span class="p">[]</span>
</span><span id="Obs.details-435"><a href="#Obs.details-435"><span class="linenos">435</span></a> <span class="k">for</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">value</span><span class="p">:</span>
</span><span id="Obs.details-436"><a href="#Obs.details-436"><span class="linenos">436</span></a> <span class="n">my_substring</span> <span class="o">=</span> <span class="s1">&#39; &#39;</span> <span class="o">+</span> <span class="s2">&quot;</span><span class="se">\u00B7</span><span class="s2"> Replicum &#39;&quot;</span> <span class="o">+</span> <span class="n">v</span><span class="p">[</span><span class="nb">len</span><span class="p">(</span><span class="n">key</span><span class="p">)</span> <span class="o">+</span> <span class="mi">1</span><span class="p">:]</span> <span class="o">+</span> <span class="s2">&quot;&#39; &quot;</span>
</span><span id="Obs.details-437"><a href="#Obs.details-437"><span class="linenos">437</span></a> <span class="n">my_substring</span> <span class="o">+=</span> <span class="sa">f</span><span class="s1">&#39;: </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="n">v</span><span class="p">]</span><span class="si">}</span><span class="s1"> configurations&#39;</span>
</span><span id="Obs.details-438"><a href="#Obs.details-438"><span class="linenos">438</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">idl</span><span class="p">[</span><span class="n">v</span><span class="p">],</span> <span class="nb">range</span><span class="p">):</span>
</span><span id="Obs.details-439"><a href="#Obs.details-439"><span class="linenos">439</span></a> <span class="n">my_substring</span> <span class="o">+=</span> <span class="sa">f</span><span class="s1">&#39; (from </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">idl</span><span class="p">[</span><span class="n">v</span><span class="p">]</span><span class="o">.</span><span class="n">start</span><span class="si">}</span><span class="s1"> to </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">idl</span><span class="p">[</span><span class="n">v</span><span class="p">][</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span><span class="si">}</span><span class="s1">&#39;</span> <span class="o">+</span> <span class="nb">int</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">idl</span><span class="p">[</span><span class="n">v</span><span class="p">]</span><span class="o">.</span><span class="n">step</span> <span class="o">!=</span> <span class="mi">1</span><span class="p">)</span> <span class="o">*</span> <span class="sa">f</span><span class="s1">&#39; in steps of </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">idl</span><span class="p">[</span><span class="n">v</span><span class="p">]</span><span class="o">.</span><span class="n">step</span><span class="si">}</span><span class="s1">&#39;</span> <span class="o">+</span> <span class="s1">&#39;)&#39;</span>
</span><span id="Obs.details-440"><a href="#Obs.details-440"><span class="linenos">440</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="Obs.details-441"><a href="#Obs.details-441"><span class="linenos">441</span></a> <span class="n">my_substring</span> <span class="o">+=</span> <span class="sa">f</span><span class="s1">&#39; (irregular range from </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">idl</span><span class="p">[</span><span class="n">v</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span><span class="si">}</span><span class="s1"> to </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">idl</span><span class="p">[</span><span class="n">v</span><span class="p">][</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span><span class="si">}</span><span class="s1">)&#39;</span>
</span><span id="Obs.details-442"><a href="#Obs.details-442"><span class="linenos">442</span></a> <span class="n">sublist</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">my_substring</span><span class="p">)</span>
</span><span id="Obs.details-443"><a href="#Obs.details-443"><span class="linenos">443</span></a>
</span><span id="Obs.details-444"><a href="#Obs.details-444"><span class="linenos">444</span></a> <span class="n">my_string</span> <span class="o">+=</span> <span class="s1">&#39;</span><span class="se">\n</span><span class="s1">&#39;</span> <span class="o">+</span> <span class="s1">&#39;</span><span class="se">\n</span><span class="s1">&#39;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">sublist</span><span class="p">)</span>
</span><span id="Obs.details-445"><a href="#Obs.details-445"><span class="linenos">445</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="Obs.details-446"><a href="#Obs.details-446"><span class="linenos">446</span></a> <span class="n">my_string</span> <span class="o">=</span> <span class="s1">&#39; &#39;</span> <span class="o">+</span> <span class="s2">&quot;</span><span class="se">\u00B7</span><span class="s2"> Covobs &#39;&quot;</span> <span class="o">+</span> <span class="n">key</span> <span class="o">+</span> <span class="s2">&quot;&#39; &quot;</span>
</span><span id="Obs.details-447"><a href="#Obs.details-447"><span class="linenos">447</span></a> <span class="n">my_string_list</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">my_string</span><span class="p">)</span>
</span><span id="Obs.details-448"><a href="#Obs.details-448"><span class="linenos">448</span></a> <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">&#39;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">my_string_list</span><span class="p">))</span>
</span></pre></div>
<div class="docstring"><p>Output detailed properties of the Obs.</p>
<h6 id="parameters">Parameters</h6>
<ul>
<li><strong>ens_content</strong> (bool):
print details about the ensembles and replica if true.</li>
</ul>
</div>
</div>
<div id="Obs.reweight" class="classattr">
<input id="Obs.reweight-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<div class="attr function">
<span class="def">def</span>
<span class="name">reweight</span><span class="signature pdoc-code condensed">(<span class="param"><span class="bp">self</span>, </span><span class="param"><span class="n">weight</span></span><span class="return-annotation">):</span></span>
<label class="view-source-button" for="Obs.reweight-view-source"><span>View Source</span></label>
</div>
<a class="headerlink" href="#Obs.reweight"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="Obs.reweight-450"><a href="#Obs.reweight-450"><span class="linenos">450</span></a> <span class="k">def</span> <span class="nf">reweight</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">weight</span><span class="p">):</span>
</span><span id="Obs.reweight-451"><a href="#Obs.reweight-451"><span class="linenos">451</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Reweight the obs with given rewighting factors.</span>
</span><span id="Obs.reweight-452"><a href="#Obs.reweight-452"><span class="linenos">452</span></a>
</span><span id="Obs.reweight-453"><a href="#Obs.reweight-453"><span class="linenos">453</span></a><span class="sd"> Parameters</span>
</span><span id="Obs.reweight-454"><a href="#Obs.reweight-454"><span class="linenos">454</span></a><span class="sd"> ----------</span>
</span><span id="Obs.reweight-455"><a href="#Obs.reweight-455"><span class="linenos">455</span></a><span class="sd"> weight : Obs</span>
</span><span id="Obs.reweight-456"><a href="#Obs.reweight-456"><span class="linenos">456</span></a><span class="sd"> Reweighting factor. An Observable that has to be defined on a superset of the</span>
</span><span id="Obs.reweight-457"><a href="#Obs.reweight-457"><span class="linenos">457</span></a><span class="sd"> configurations in obs[i].idl for all i.</span>
</span><span id="Obs.reweight-458"><a href="#Obs.reweight-458"><span class="linenos">458</span></a><span class="sd"> all_configs : bool</span>
</span><span id="Obs.reweight-459"><a href="#Obs.reweight-459"><span class="linenos">459</span></a><span class="sd"> if True, the reweighted observables are normalized by the average of</span>
</span><span id="Obs.reweight-460"><a href="#Obs.reweight-460"><span class="linenos">460</span></a><span class="sd"> the reweighting factor on all configurations in weight.idl and not</span>
</span><span id="Obs.reweight-461"><a href="#Obs.reweight-461"><span class="linenos">461</span></a><span class="sd"> on the configurations in obs[i].idl. Default False.</span>
</span><span id="Obs.reweight-462"><a href="#Obs.reweight-462"><span class="linenos">462</span></a><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="Obs.reweight-463"><a href="#Obs.reweight-463"><span class="linenos">463</span></a> <span class="k">return</span> <span class="n">reweight</span><span class="p">(</span><span class="n">weight</span><span class="p">,</span> <span class="p">[</span><span class="bp">self</span><span class="p">])[</span><span class="mi">0</span><span class="p">]</span>
</span></pre></div>
<div class="docstring"><p>Reweight the obs with given rewighting factors.</p>
<h6 id="parameters">Parameters</h6>
<ul>
<li><strong>weight</strong> (Obs):
Reweighting factor. An Observable that has to be defined on a superset of the
configurations in obs[i].idl for all i.</li>
<li><strong>all_configs</strong> (bool):
if True, the reweighted observables are normalized by the average of
the reweighting factor on all configurations in weight.idl and not
on the configurations in obs[i].idl. Default False.</li>
</ul>
</div>
</div>
<div id="Obs.is_zero_within_error" class="classattr">
<input id="Obs.is_zero_within_error-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<div class="attr function">
<span class="def">def</span>
<span class="name">is_zero_within_error</span><span class="signature pdoc-code condensed">(<span class="param"><span class="bp">self</span>, </span><span class="param"><span class="n">sigma</span><span class="o">=</span><span class="mi">1</span></span><span class="return-annotation">):</span></span>
<label class="view-source-button" for="Obs.is_zero_within_error-view-source"><span>View Source</span></label>
</div>
<a class="headerlink" href="#Obs.is_zero_within_error"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="Obs.is_zero_within_error-465"><a href="#Obs.is_zero_within_error-465"><span class="linenos">465</span></a> <span class="k">def</span> <span class="nf">is_zero_within_error</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">sigma</span><span class="o">=</span><span class="mi">1</span><span class="p">):</span>
</span><span id="Obs.is_zero_within_error-466"><a href="#Obs.is_zero_within_error-466"><span class="linenos">466</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Checks whether the observable is zero within &#39;sigma&#39; standard errors.</span>
</span><span id="Obs.is_zero_within_error-467"><a href="#Obs.is_zero_within_error-467"><span class="linenos">467</span></a>
</span><span id="Obs.is_zero_within_error-468"><a href="#Obs.is_zero_within_error-468"><span class="linenos">468</span></a><span class="sd"> Parameters</span>
</span><span id="Obs.is_zero_within_error-469"><a href="#Obs.is_zero_within_error-469"><span class="linenos">469</span></a><span class="sd"> ----------</span>
</span><span id="Obs.is_zero_within_error-470"><a href="#Obs.is_zero_within_error-470"><span class="linenos">470</span></a><span class="sd"> sigma : int</span>
</span><span id="Obs.is_zero_within_error-471"><a href="#Obs.is_zero_within_error-471"><span class="linenos">471</span></a><span class="sd"> Number of standard errors used for the check.</span>
</span><span id="Obs.is_zero_within_error-472"><a href="#Obs.is_zero_within_error-472"><span class="linenos">472</span></a>
</span><span id="Obs.is_zero_within_error-473"><a href="#Obs.is_zero_within_error-473"><span class="linenos">473</span></a><span class="sd"> Works only properly when the gamma method was run.</span>
</span><span id="Obs.is_zero_within_error-474"><a href="#Obs.is_zero_within_error-474"><span class="linenos">474</span></a><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="Obs.is_zero_within_error-475"><a href="#Obs.is_zero_within_error-475"><span class="linenos">475</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_zero</span><span class="p">()</span> <span class="ow">or</span> <span class="n">np</span><span class="o">.</span><span class="n">abs</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">value</span><span class="p">)</span> <span class="o">&lt;=</span> <span class="n">sigma</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">_dvalue</span>
</span></pre></div>
<div class="docstring"><p>Checks whether the observable is zero within 'sigma' standard errors.</p>
<h6 id="parameters">Parameters</h6>
<ul>
<li><strong>sigma</strong> (int):
Number of standard errors used for the check.</li>
<li><strong>Works only properly when the gamma method was run.</strong></li>
</ul>
</div>
</div>
<div id="Obs.is_zero" class="classattr">
<input id="Obs.is_zero-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<div class="attr function">
<span class="def">def</span>
<span class="name">is_zero</span><span class="signature pdoc-code condensed">(<span class="param"><span class="bp">self</span>, </span><span class="param"><span class="n">atol</span><span class="o">=</span><span class="mf">1e-10</span></span><span class="return-annotation">):</span></span>
<label class="view-source-button" for="Obs.is_zero-view-source"><span>View Source</span></label>
</div>
<a class="headerlink" href="#Obs.is_zero"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="Obs.is_zero-477"><a href="#Obs.is_zero-477"><span class="linenos">477</span></a> <span class="k">def</span> <span class="nf">is_zero</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">atol</span><span class="o">=</span><span class="mf">1e-10</span><span class="p">):</span>
</span><span id="Obs.is_zero-478"><a href="#Obs.is_zero-478"><span class="linenos">478</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Checks whether the observable is zero within a given tolerance.</span>
</span><span id="Obs.is_zero-479"><a href="#Obs.is_zero-479"><span class="linenos">479</span></a>
</span><span id="Obs.is_zero-480"><a href="#Obs.is_zero-480"><span class="linenos">480</span></a><span class="sd"> Parameters</span>
</span><span id="Obs.is_zero-481"><a href="#Obs.is_zero-481"><span class="linenos">481</span></a><span class="sd"> ----------</span>
</span><span id="Obs.is_zero-482"><a href="#Obs.is_zero-482"><span class="linenos">482</span></a><span class="sd"> atol : float</span>
</span><span id="Obs.is_zero-483"><a href="#Obs.is_zero-483"><span class="linenos">483</span></a><span class="sd"> Absolute tolerance (for details see numpy documentation).</span>
</span><span id="Obs.is_zero-484"><a href="#Obs.is_zero-484"><span class="linenos">484</span></a><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="Obs.is_zero-485"><a href="#Obs.is_zero-485"><span class="linenos">485</span></a> <span class="k">return</span> <span class="n">np</span><span class="o">.</span><span class="n">isclose</span><span class="p">(</span><span class="mf">0.0</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">value</span><span class="p">,</span> <span class="mf">1e-14</span><span class="p">,</span> <span class="n">atol</span><span class="p">)</span> <span class="ow">and</span> <span class="nb">all</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">allclose</span><span class="p">(</span><span class="mf">0.0</span><span class="p">,</span> <span class="n">delta</span><span class="p">,</span> <span class="mf">1e-14</span><span class="p">,</span> <span class="n">atol</span><span class="p">)</span> <span class="k">for</span> <span class="n">delta</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">deltas</span><span class="o">.</span><span class="n">values</span><span class="p">())</span> <span class="ow">and</span> <span class="nb">all</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">allclose</span><span class="p">(</span><span class="mf">0.0</span><span class="p">,</span> <span class="n">delta</span><span class="o">.</span><span class="n">errsq</span><span class="p">(),</span> <span class="mf">1e-14</span><span class="p">,</span> <span class="n">atol</span><span class="p">)</span> <span class="k">for</span> <span class="n">delta</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">covobs</span><span class="o">.</span><span class="n">values</span><span class="p">())</span>
</span></pre></div>
<div class="docstring"><p>Checks whether the observable is zero within a given tolerance.</p>
<h6 id="parameters">Parameters</h6>
<ul>
<li><strong>atol</strong> (float):
Absolute tolerance (for details see numpy documentation).</li>
</ul>
</div>
</div>
<div id="Obs.plot_tauint" class="classattr">
<input id="Obs.plot_tauint-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<div class="attr function">
<span class="def">def</span>
<span class="name">plot_tauint</span><span class="signature pdoc-code condensed">(<span class="param"><span class="bp">self</span>, </span><span class="param"><span class="n">save</span><span class="o">=</span><span class="kc">None</span></span><span class="return-annotation">):</span></span>
<label class="view-source-button" for="Obs.plot_tauint-view-source"><span>View Source</span></label>
</div>
<a class="headerlink" href="#Obs.plot_tauint"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="Obs.plot_tauint-487"><a href="#Obs.plot_tauint-487"><span class="linenos">487</span></a> <span class="k">def</span> <span class="nf">plot_tauint</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">save</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
</span><span id="Obs.plot_tauint-488"><a href="#Obs.plot_tauint-488"><span class="linenos">488</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Plot integrated autocorrelation time for each ensemble.</span>
</span><span id="Obs.plot_tauint-489"><a href="#Obs.plot_tauint-489"><span class="linenos">489</span></a>
</span><span id="Obs.plot_tauint-490"><a href="#Obs.plot_tauint-490"><span class="linenos">490</span></a><span class="sd"> Parameters</span>
</span><span id="Obs.plot_tauint-491"><a href="#Obs.plot_tauint-491"><span class="linenos">491</span></a><span class="sd"> ----------</span>
</span><span id="Obs.plot_tauint-492"><a href="#Obs.plot_tauint-492"><span class="linenos">492</span></a><span class="sd"> save : str</span>
</span><span id="Obs.plot_tauint-493"><a href="#Obs.plot_tauint-493"><span class="linenos">493</span></a><span class="sd"> saves the figure to a file named &#39;save&#39; if.</span>
</span><span id="Obs.plot_tauint-494"><a href="#Obs.plot_tauint-494"><span class="linenos">494</span></a><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="Obs.plot_tauint-495"><a href="#Obs.plot_tauint-495"><span class="linenos">495</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">hasattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s1">&#39;e_dvalue&#39;</span><span class="p">):</span>
</span><span id="Obs.plot_tauint-496"><a href="#Obs.plot_tauint-496"><span class="linenos">496</span></a> <span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s1">&#39;Run the gamma method first.&#39;</span><span class="p">)</span>
</span><span id="Obs.plot_tauint-497"><a href="#Obs.plot_tauint-497"><span class="linenos">497</span></a>
</span><span id="Obs.plot_tauint-498"><a href="#Obs.plot_tauint-498"><span class="linenos">498</span></a> <span class="k">for</span> <span class="n">e</span><span class="p">,</span> <span class="n">e_name</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">mc_names</span><span class="p">):</span>
</span><span id="Obs.plot_tauint-499"><a href="#Obs.plot_tauint-499"><span class="linenos">499</span></a> <span class="n">fig</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">figure</span><span class="p">()</span>
</span><span id="Obs.plot_tauint-500"><a href="#Obs.plot_tauint-500"><span class="linenos">500</span></a> <span class="n">plt</span><span class="o">.</span><span class="n">xlabel</span><span class="p">(</span><span class="sa">r</span><span class="s1">&#39;$W$&#39;</span><span class="p">)</span>
</span><span id="Obs.plot_tauint-501"><a href="#Obs.plot_tauint-501"><span class="linenos">501</span></a> <span class="n">plt</span><span class="o">.</span><span class="n">ylabel</span><span class="p">(</span><span class="sa">r</span><span class="s1">&#39;$\tau_\mathrm</span><span class="si">{int}</span><span class="s1">$&#39;</span><span class="p">)</span>
</span><span id="Obs.plot_tauint-502"><a href="#Obs.plot_tauint-502"><span class="linenos">502</span></a> <span class="n">length</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">e_n_tauint</span><span class="p">[</span><span class="n">e_name</span><span class="p">]))</span>
</span><span id="Obs.plot_tauint-503"><a href="#Obs.plot_tauint-503"><span class="linenos">503</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">tau_exp</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
</span><span id="Obs.plot_tauint-504"><a href="#Obs.plot_tauint-504"><span class="linenos">504</span></a> <span class="n">base</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">e_n_tauint</span><span class="p">[</span><span class="n">e_name</span><span class="p">][</span><span class="bp">self</span><span class="o">.</span><span class="n">e_windowsize</span><span class="p">[</span><span class="n">e_name</span><span class="p">]]</span>
</span><span id="Obs.plot_tauint-505"><a href="#Obs.plot_tauint-505"><span class="linenos">505</span></a> <span class="n">x_help</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">arange</span><span class="p">(</span><span class="mi">2</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">tau_exp</span><span class="p">[</span><span class="n">e_name</span><span class="p">])</span>
</span><span id="Obs.plot_tauint-506"><a href="#Obs.plot_tauint-506"><span class="linenos">506</span></a> <span class="n">y_help</span> <span class="o">=</span> <span class="p">(</span><span class="n">x_help</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span> <span class="o">*</span> <span class="n">np</span><span class="o">.</span><span class="n">abs</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">e_rho</span><span class="p">[</span><span class="n">e_name</span><span class="p">][</span><span class="bp">self</span><span class="o">.</span><span class="n">e_windowsize</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">+</span> <span class="mi">1</span><span class="p">])</span> <span class="o">*</span> <span class="p">(</span><span class="mi">1</span> <span class="o">-</span> <span class="n">x_help</span> <span class="o">/</span> <span class="p">(</span><span class="mi">2</span> <span class="o">*</span> <span class="p">(</span><span class="mi">2</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">tau_exp</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)))</span> <span class="o">+</span> <span class="n">base</span>
</span><span id="Obs.plot_tauint-507"><a href="#Obs.plot_tauint-507"><span class="linenos">507</span></a> <span class="n">x_arr</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">arange</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">e_windowsize</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">+</span> <span class="mi">1</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">e_windowsize</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">+</span> <span class="mi">1</span> <span class="o">+</span> <span class="mi">2</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">tau_exp</span><span class="p">[</span><span class="n">e_name</span><span class="p">])</span>
</span><span id="Obs.plot_tauint-508"><a href="#Obs.plot_tauint-508"><span class="linenos">508</span></a> <span class="n">plt</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">x_arr</span><span class="p">,</span> <span class="n">y_help</span><span class="p">,</span> <span class="s1">&#39;C&#39;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">e</span><span class="p">),</span> <span class="n">linewidth</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">ls</span><span class="o">=</span><span class="s1">&#39;--&#39;</span><span class="p">,</span> <span class="n">marker</span><span class="o">=</span><span class="s1">&#39;,&#39;</span><span class="p">)</span>
</span><span id="Obs.plot_tauint-509"><a href="#Obs.plot_tauint-509"><span class="linenos">509</span></a> <span class="n">plt</span><span class="o">.</span><span class="n">errorbar</span><span class="p">([</span><span class="bp">self</span><span class="o">.</span><span class="n">e_windowsize</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">+</span> <span class="mi">2</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">tau_exp</span><span class="p">[</span><span class="n">e_name</span><span class="p">]],</span> <span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">e_tauint</span><span class="p">[</span><span class="n">e_name</span><span class="p">]],</span>
</span><span id="Obs.plot_tauint-510"><a href="#Obs.plot_tauint-510"><span class="linenos">510</span></a> <span class="n">yerr</span><span class="o">=</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">e_dtauint</span><span class="p">[</span><span class="n">e_name</span><span class="p">]],</span> <span class="n">fmt</span><span class="o">=</span><span class="s1">&#39;C&#39;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">e</span><span class="p">),</span> <span class="n">linewidth</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">capsize</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span> <span class="n">marker</span><span class="o">=</span><span class="s1">&#39;o&#39;</span><span class="p">,</span> <span class="n">mfc</span><span class="o">=</span><span class="n">plt</span><span class="o">.</span><span class="n">rcParams</span><span class="p">[</span><span class="s1">&#39;axes.facecolor&#39;</span><span class="p">])</span>
</span><span id="Obs.plot_tauint-511"><a href="#Obs.plot_tauint-511"><span class="linenos">511</span></a> <span class="n">xmax</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">e_windowsize</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">+</span> <span class="mi">2</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">tau_exp</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">+</span> <span class="mf">1.5</span>
</span><span id="Obs.plot_tauint-512"><a href="#Obs.plot_tauint-512"><span class="linenos">512</span></a> <span class="n">label</span> <span class="o">=</span> <span class="n">e_name</span> <span class="o">+</span> <span class="sa">r</span><span class="s1">&#39;, $\tau_\mathrm</span><span class="si">{exp}</span><span class="s1">$=&#39;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">around</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">tau_exp</span><span class="p">[</span><span class="n">e_name</span><span class="p">],</span> <span class="n">decimals</span><span class="o">=</span><span class="mi">2</span><span class="p">))</span>
</span><span id="Obs.plot_tauint-513"><a href="#Obs.plot_tauint-513"><span class="linenos">513</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="Obs.plot_tauint-514"><a href="#Obs.plot_tauint-514"><span class="linenos">514</span></a> <span class="n">label</span> <span class="o">=</span> <span class="n">e_name</span> <span class="o">+</span> <span class="s1">&#39;, S=&#39;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">around</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">S</span><span class="p">[</span><span class="n">e_name</span><span class="p">],</span> <span class="n">decimals</span><span class="o">=</span><span class="mi">2</span><span class="p">))</span>
</span><span id="Obs.plot_tauint-515"><a href="#Obs.plot_tauint-515"><span class="linenos">515</span></a> <span class="n">xmax</span> <span class="o">=</span> <span class="nb">max</span><span class="p">(</span><span class="mf">10.5</span><span class="p">,</span> <span class="mi">2</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">e_windowsize</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">-</span> <span class="mf">0.5</span><span class="p">)</span>
</span><span id="Obs.plot_tauint-516"><a href="#Obs.plot_tauint-516"><span class="linenos">516</span></a>
</span><span id="Obs.plot_tauint-517"><a href="#Obs.plot_tauint-517"><span class="linenos">517</span></a> <span class="n">plt</span><span class="o">.</span><span class="n">errorbar</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">arange</span><span class="p">(</span><span class="n">length</span><span class="p">)[:</span><span class="nb">int</span><span class="p">(</span><span class="n">xmax</span><span class="p">)</span> <span class="o">+</span> <span class="mi">1</span><span class="p">],</span> <span class="bp">self</span><span class="o">.</span><span class="n">e_n_tauint</span><span class="p">[</span><span class="n">e_name</span><span class="p">][:</span><span class="nb">int</span><span class="p">(</span><span class="n">xmax</span><span class="p">)</span> <span class="o">+</span> <span class="mi">1</span><span class="p">],</span> <span class="n">yerr</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">e_n_dtauint</span><span class="p">[</span><span class="n">e_name</span><span class="p">][:</span><span class="nb">int</span><span class="p">(</span><span class="n">xmax</span><span class="p">)</span> <span class="o">+</span> <span class="mi">1</span><span class="p">],</span> <span class="n">linewidth</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">capsize</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span> <span class="n">label</span><span class="o">=</span><span class="n">label</span><span class="p">)</span>
</span><span id="Obs.plot_tauint-518"><a href="#Obs.plot_tauint-518"><span class="linenos">518</span></a> <span class="n">plt</span><span class="o">.</span><span class="n">axvline</span><span class="p">(</span><span class="n">x</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">e_windowsize</span><span class="p">[</span><span class="n">e_name</span><span class="p">],</span> <span class="n">color</span><span class="o">=</span><span class="s1">&#39;C&#39;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">e</span><span class="p">),</span> <span class="n">alpha</span><span class="o">=</span><span class="mf">0.5</span><span class="p">,</span> <span class="n">marker</span><span class="o">=</span><span class="s1">&#39;,&#39;</span><span class="p">,</span> <span class="n">ls</span><span class="o">=</span><span class="s1">&#39;--&#39;</span><span class="p">)</span>
</span><span id="Obs.plot_tauint-519"><a href="#Obs.plot_tauint-519"><span class="linenos">519</span></a> <span class="n">plt</span><span class="o">.</span><span class="n">legend</span><span class="p">()</span>
</span><span id="Obs.plot_tauint-520"><a href="#Obs.plot_tauint-520"><span class="linenos">520</span></a> <span class="n">plt</span><span class="o">.</span><span class="n">xlim</span><span class="p">(</span><span class="o">-</span><span class="mf">0.5</span><span class="p">,</span> <span class="n">xmax</span><span class="p">)</span>
</span><span id="Obs.plot_tauint-521"><a href="#Obs.plot_tauint-521"><span class="linenos">521</span></a> <span class="n">ylim</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">ylim</span><span class="p">()</span>
</span><span id="Obs.plot_tauint-522"><a href="#Obs.plot_tauint-522"><span class="linenos">522</span></a> <span class="n">plt</span><span class="o">.</span><span class="n">ylim</span><span class="p">(</span><span class="n">bottom</span><span class="o">=</span><span class="mf">0.0</span><span class="p">,</span> <span class="n">top</span><span class="o">=</span><span class="nb">max</span><span class="p">(</span><span class="mf">1.0</span><span class="p">,</span> <span class="n">ylim</span><span class="p">[</span><span class="mi">1</span><span class="p">]))</span>
</span><span id="Obs.plot_tauint-523"><a href="#Obs.plot_tauint-523"><span class="linenos">523</span></a> <span class="n">plt</span><span class="o">.</span><span class="n">draw</span><span class="p">()</span>
</span><span id="Obs.plot_tauint-524"><a href="#Obs.plot_tauint-524"><span class="linenos">524</span></a> <span class="k">if</span> <span class="n">save</span><span class="p">:</span>
</span><span id="Obs.plot_tauint-525"><a href="#Obs.plot_tauint-525"><span class="linenos">525</span></a> <span class="n">fig</span><span class="o">.</span><span class="n">savefig</span><span class="p">(</span><span class="n">save</span> <span class="o">+</span> <span class="s2">&quot;_&quot;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">e</span><span class="p">))</span>
</span></pre></div>
<div class="docstring"><p>Plot integrated autocorrelation time for each ensemble.</p>
<h6 id="parameters">Parameters</h6>
<ul>
<li><strong>save</strong> (str):
saves the figure to a file named 'save' if.</li>
</ul>
</div>
</div>
<div id="Obs.plot_rho" class="classattr">
<input id="Obs.plot_rho-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<div class="attr function">
<span class="def">def</span>
<span class="name">plot_rho</span><span class="signature pdoc-code condensed">(<span class="param"><span class="bp">self</span>, </span><span class="param"><span class="n">save</span><span class="o">=</span><span class="kc">None</span></span><span class="return-annotation">):</span></span>
<label class="view-source-button" for="Obs.plot_rho-view-source"><span>View Source</span></label>
</div>
<a class="headerlink" href="#Obs.plot_rho"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="Obs.plot_rho-527"><a href="#Obs.plot_rho-527"><span class="linenos">527</span></a> <span class="k">def</span> <span class="nf">plot_rho</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">save</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
</span><span id="Obs.plot_rho-528"><a href="#Obs.plot_rho-528"><span class="linenos">528</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Plot normalized autocorrelation function time for each ensemble.</span>
</span><span id="Obs.plot_rho-529"><a href="#Obs.plot_rho-529"><span class="linenos">529</span></a>
</span><span id="Obs.plot_rho-530"><a href="#Obs.plot_rho-530"><span class="linenos">530</span></a><span class="sd"> Parameters</span>
</span><span id="Obs.plot_rho-531"><a href="#Obs.plot_rho-531"><span class="linenos">531</span></a><span class="sd"> ----------</span>
</span><span id="Obs.plot_rho-532"><a href="#Obs.plot_rho-532"><span class="linenos">532</span></a><span class="sd"> save : str</span>
</span><span id="Obs.plot_rho-533"><a href="#Obs.plot_rho-533"><span class="linenos">533</span></a><span class="sd"> saves the figure to a file named &#39;save&#39; if.</span>
</span><span id="Obs.plot_rho-534"><a href="#Obs.plot_rho-534"><span class="linenos">534</span></a><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="Obs.plot_rho-535"><a href="#Obs.plot_rho-535"><span class="linenos">535</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">hasattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s1">&#39;e_dvalue&#39;</span><span class="p">):</span>
</span><span id="Obs.plot_rho-536"><a href="#Obs.plot_rho-536"><span class="linenos">536</span></a> <span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s1">&#39;Run the gamma method first.&#39;</span><span class="p">)</span>
</span><span id="Obs.plot_rho-537"><a href="#Obs.plot_rho-537"><span class="linenos">537</span></a> <span class="k">for</span> <span class="n">e</span><span class="p">,</span> <span class="n">e_name</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">mc_names</span><span class="p">):</span>
</span><span id="Obs.plot_rho-538"><a href="#Obs.plot_rho-538"><span class="linenos">538</span></a> <span class="n">fig</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">figure</span><span class="p">()</span>
</span><span id="Obs.plot_rho-539"><a href="#Obs.plot_rho-539"><span class="linenos">539</span></a> <span class="n">plt</span><span class="o">.</span><span class="n">xlabel</span><span class="p">(</span><span class="s1">&#39;W&#39;</span><span class="p">)</span>
</span><span id="Obs.plot_rho-540"><a href="#Obs.plot_rho-540"><span class="linenos">540</span></a> <span class="n">plt</span><span class="o">.</span><span class="n">ylabel</span><span class="p">(</span><span class="s1">&#39;rho&#39;</span><span class="p">)</span>
</span><span id="Obs.plot_rho-541"><a href="#Obs.plot_rho-541"><span class="linenos">541</span></a> <span class="n">length</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">e_drho</span><span class="p">[</span><span class="n">e_name</span><span class="p">]))</span>
</span><span id="Obs.plot_rho-542"><a href="#Obs.plot_rho-542"><span class="linenos">542</span></a> <span class="n">plt</span><span class="o">.</span><span class="n">errorbar</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">arange</span><span class="p">(</span><span class="n">length</span><span class="p">),</span> <span class="bp">self</span><span class="o">.</span><span class="n">e_rho</span><span class="p">[</span><span class="n">e_name</span><span class="p">][:</span><span class="n">length</span><span class="p">],</span> <span class="n">yerr</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">e_drho</span><span class="p">[</span><span class="n">e_name</span><span class="p">][:],</span> <span class="n">linewidth</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">capsize</span><span class="o">=</span><span class="mi">2</span><span class="p">)</span>
</span><span id="Obs.plot_rho-543"><a href="#Obs.plot_rho-543"><span class="linenos">543</span></a> <span class="n">plt</span><span class="o">.</span><span class="n">axvline</span><span class="p">(</span><span class="n">x</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">e_windowsize</span><span class="p">[</span><span class="n">e_name</span><span class="p">],</span> <span class="n">color</span><span class="o">=</span><span class="s1">&#39;r&#39;</span><span class="p">,</span> <span class="n">alpha</span><span class="o">=</span><span class="mf">0.25</span><span class="p">,</span> <span class="n">ls</span><span class="o">=</span><span class="s1">&#39;--&#39;</span><span class="p">,</span> <span class="n">marker</span><span class="o">=</span><span class="s1">&#39;,&#39;</span><span class="p">)</span>
</span><span id="Obs.plot_rho-544"><a href="#Obs.plot_rho-544"><span class="linenos">544</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">tau_exp</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
</span><span id="Obs.plot_rho-545"><a href="#Obs.plot_rho-545"><span class="linenos">545</span></a> <span class="n">plt</span><span class="o">.</span><span class="n">plot</span><span class="p">([</span><span class="bp">self</span><span class="o">.</span><span class="n">e_windowsize</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">+</span> <span class="mi">1</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">e_windowsize</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">+</span> <span class="mi">1</span> <span class="o">+</span> <span class="mi">2</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">tau_exp</span><span class="p">[</span><span class="n">e_name</span><span class="p">]],</span>
</span><span id="Obs.plot_rho-546"><a href="#Obs.plot_rho-546"><span class="linenos">546</span></a> <span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">e_rho</span><span class="p">[</span><span class="n">e_name</span><span class="p">][</span><span class="bp">self</span><span class="o">.</span><span class="n">e_windowsize</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">+</span> <span class="mi">1</span><span class="p">],</span> <span class="mi">0</span><span class="p">],</span> <span class="s1">&#39;k-&#39;</span><span class="p">,</span> <span class="n">lw</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
</span><span id="Obs.plot_rho-547"><a href="#Obs.plot_rho-547"><span class="linenos">547</span></a> <span class="n">xmax</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">e_windowsize</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">+</span> <span class="mi">2</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">tau_exp</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">+</span> <span class="mf">1.5</span>
</span><span id="Obs.plot_rho-548"><a href="#Obs.plot_rho-548"><span class="linenos">548</span></a> <span class="n">plt</span><span class="o">.</span><span class="n">title</span><span class="p">(</span><span class="s1">&#39;Rho &#39;</span> <span class="o">+</span> <span class="n">e_name</span> <span class="o">+</span> <span class="sa">r</span><span class="s1">&#39;, tau\_exp=&#39;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">around</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">tau_exp</span><span class="p">[</span><span class="n">e_name</span><span class="p">],</span> <span class="n">decimals</span><span class="o">=</span><span class="mi">2</span><span class="p">)))</span>
</span><span id="Obs.plot_rho-549"><a href="#Obs.plot_rho-549"><span class="linenos">549</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="Obs.plot_rho-550"><a href="#Obs.plot_rho-550"><span class="linenos">550</span></a> <span class="n">xmax</span> <span class="o">=</span> <span class="nb">max</span><span class="p">(</span><span class="mf">10.5</span><span class="p">,</span> <span class="mi">2</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">e_windowsize</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">-</span> <span class="mf">0.5</span><span class="p">)</span>
</span><span id="Obs.plot_rho-551"><a href="#Obs.plot_rho-551"><span class="linenos">551</span></a> <span class="n">plt</span><span class="o">.</span><span class="n">title</span><span class="p">(</span><span class="s1">&#39;Rho &#39;</span> <span class="o">+</span> <span class="n">e_name</span> <span class="o">+</span> <span class="s1">&#39;, S=&#39;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">around</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">S</span><span class="p">[</span><span class="n">e_name</span><span class="p">],</span> <span class="n">decimals</span><span class="o">=</span><span class="mi">2</span><span class="p">)))</span>
</span><span id="Obs.plot_rho-552"><a href="#Obs.plot_rho-552"><span class="linenos">552</span></a> <span class="n">plt</span><span class="o">.</span><span class="n">plot</span><span class="p">([</span><span class="o">-</span><span class="mf">0.5</span><span class="p">,</span> <span class="n">xmax</span><span class="p">],</span> <span class="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">],</span> <span class="s1">&#39;k--&#39;</span><span class="p">,</span> <span class="n">lw</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
</span><span id="Obs.plot_rho-553"><a href="#Obs.plot_rho-553"><span class="linenos">553</span></a> <span class="n">plt</span><span class="o">.</span><span class="n">xlim</span><span class="p">(</span><span class="o">-</span><span class="mf">0.5</span><span class="p">,</span> <span class="n">xmax</span><span class="p">)</span>
</span><span id="Obs.plot_rho-554"><a href="#Obs.plot_rho-554"><span class="linenos">554</span></a> <span class="n">plt</span><span class="o">.</span><span class="n">draw</span><span class="p">()</span>
</span><span id="Obs.plot_rho-555"><a href="#Obs.plot_rho-555"><span class="linenos">555</span></a> <span class="k">if</span> <span class="n">save</span><span class="p">:</span>
</span><span id="Obs.plot_rho-556"><a href="#Obs.plot_rho-556"><span class="linenos">556</span></a> <span class="n">fig</span><span class="o">.</span><span class="n">savefig</span><span class="p">(</span><span class="n">save</span> <span class="o">+</span> <span class="s2">&quot;_&quot;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">e</span><span class="p">))</span>
</span></pre></div>
<div class="docstring"><p>Plot normalized autocorrelation function time for each ensemble.</p>
<h6 id="parameters">Parameters</h6>
<ul>
<li><strong>save</strong> (str):
saves the figure to a file named 'save' if.</li>
</ul>
</div>
</div>
<div id="Obs.plot_rep_dist" class="classattr">
<input id="Obs.plot_rep_dist-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<div class="attr function">
<span class="def">def</span>
<span class="name">plot_rep_dist</span><span class="signature pdoc-code condensed">(<span class="param"><span class="bp">self</span></span><span class="return-annotation">):</span></span>
<label class="view-source-button" for="Obs.plot_rep_dist-view-source"><span>View Source</span></label>
</div>
<a class="headerlink" href="#Obs.plot_rep_dist"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="Obs.plot_rep_dist-558"><a href="#Obs.plot_rep_dist-558"><span class="linenos">558</span></a> <span class="k">def</span> <span class="nf">plot_rep_dist</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
</span><span id="Obs.plot_rep_dist-559"><a href="#Obs.plot_rep_dist-559"><span class="linenos">559</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Plot replica distribution for each ensemble with more than one replicum.&quot;&quot;&quot;</span>
</span><span id="Obs.plot_rep_dist-560"><a href="#Obs.plot_rep_dist-560"><span class="linenos">560</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">hasattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s1">&#39;e_dvalue&#39;</span><span class="p">):</span>
</span><span id="Obs.plot_rep_dist-561"><a href="#Obs.plot_rep_dist-561"><span class="linenos">561</span></a> <span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s1">&#39;Run the gamma method first.&#39;</span><span class="p">)</span>
</span><span id="Obs.plot_rep_dist-562"><a href="#Obs.plot_rep_dist-562"><span class="linenos">562</span></a> <span class="k">for</span> <span class="n">e</span><span class="p">,</span> <span class="n">e_name</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">mc_names</span><span class="p">):</span>
</span><span id="Obs.plot_rep_dist-563"><a href="#Obs.plot_rep_dist-563"><span class="linenos">563</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">e_content</span><span class="p">[</span><span class="n">e_name</span><span class="p">])</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span>
</span><span id="Obs.plot_rep_dist-564"><a href="#Obs.plot_rep_dist-564"><span class="linenos">564</span></a> <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;No replica distribution for a single replicum (&#39;</span><span class="p">,</span> <span class="n">e_name</span><span class="p">,</span> <span class="s1">&#39;)&#39;</span><span class="p">)</span>
</span><span id="Obs.plot_rep_dist-565"><a href="#Obs.plot_rep_dist-565"><span class="linenos">565</span></a> <span class="k">continue</span>
</span><span id="Obs.plot_rep_dist-566"><a href="#Obs.plot_rep_dist-566"><span class="linenos">566</span></a> <span class="n">r_length</span> <span class="o">=</span> <span class="p">[]</span>
</span><span id="Obs.plot_rep_dist-567"><a href="#Obs.plot_rep_dist-567"><span class="linenos">567</span></a> <span class="n">sub_r_mean</span> <span class="o">=</span> <span class="mi">0</span>
</span><span id="Obs.plot_rep_dist-568"><a href="#Obs.plot_rep_dist-568"><span class="linenos">568</span></a> <span class="k">for</span> <span class="n">r</span><span class="p">,</span> <span class="n">r_name</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">e_content</span><span class="p">[</span><span class="n">e_name</span><span class="p">]):</span>
</span><span id="Obs.plot_rep_dist-569"><a href="#Obs.plot_rep_dist-569"><span class="linenos">569</span></a> <span class="n">r_length</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">deltas</span><span class="p">[</span><span class="n">r_name</span><span class="p">]))</span>
</span><span id="Obs.plot_rep_dist-570"><a href="#Obs.plot_rep_dist-570"><span class="linenos">570</span></a> <span class="n">sub_r_mean</span> <span class="o">+=</span> <span class="bp">self</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="n">r_name</span><span class="p">]</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">r_values</span><span class="p">[</span><span class="n">r_name</span><span class="p">]</span>
</span><span id="Obs.plot_rep_dist-571"><a href="#Obs.plot_rep_dist-571"><span class="linenos">571</span></a> <span class="n">e_N</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">sum</span><span class="p">(</span><span class="n">r_length</span><span class="p">)</span>
</span><span id="Obs.plot_rep_dist-572"><a href="#Obs.plot_rep_dist-572"><span class="linenos">572</span></a> <span class="n">sub_r_mean</span> <span class="o">/=</span> <span class="n">e_N</span>
</span><span id="Obs.plot_rep_dist-573"><a href="#Obs.plot_rep_dist-573"><span class="linenos">573</span></a> <span class="n">arr</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">zeros</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">e_content</span><span class="p">[</span><span class="n">e_name</span><span class="p">]))</span>
</span><span id="Obs.plot_rep_dist-574"><a href="#Obs.plot_rep_dist-574"><span class="linenos">574</span></a> <span class="k">for</span> <span class="n">r</span><span class="p">,</span> <span class="n">r_name</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">e_content</span><span class="p">[</span><span class="n">e_name</span><span class="p">]):</span>
</span><span id="Obs.plot_rep_dist-575"><a href="#Obs.plot_rep_dist-575"><span class="linenos">575</span></a> <span class="n">arr</span><span class="p">[</span><span class="n">r</span><span class="p">]</span> <span class="o">=</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">r_values</span><span class="p">[</span><span class="n">r_name</span><span class="p">]</span> <span class="o">-</span> <span class="n">sub_r_mean</span><span class="p">)</span> <span class="o">/</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">e_dvalue</span><span class="p">[</span><span class="n">e_name</span><span class="p">]</span> <span class="o">*</span> <span class="n">np</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="n">e_N</span> <span class="o">/</span> <span class="bp">self</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="n">r_name</span><span class="p">]</span> <span class="o">-</span> <span class="mi">1</span><span class="p">))</span>
</span><span id="Obs.plot_rep_dist-576"><a href="#Obs.plot_rep_dist-576"><span class="linenos">576</span></a> <span class="n">plt</span><span class="o">.</span><span class="n">hist</span><span class="p">(</span><span class="n">arr</span><span class="p">,</span> <span class="n">rwidth</span><span class="o">=</span><span class="mf">0.8</span><span class="p">,</span> <span class="n">bins</span><span class="o">=</span><span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">e_content</span><span class="p">[</span><span class="n">e_name</span><span class="p">]))</span>
</span><span id="Obs.plot_rep_dist-577"><a href="#Obs.plot_rep_dist-577"><span class="linenos">577</span></a> <span class="n">plt</span><span class="o">.</span><span class="n">title</span><span class="p">(</span><span class="s1">&#39;Replica distribution&#39;</span> <span class="o">+</span> <span class="n">e_name</span> <span class="o">+</span> <span class="s1">&#39; (mean=0, var=1)&#39;</span><span class="p">)</span>
</span><span id="Obs.plot_rep_dist-578"><a href="#Obs.plot_rep_dist-578"><span class="linenos">578</span></a> <span class="n">plt</span><span class="o">.</span><span class="n">draw</span><span class="p">()</span>
</span></pre></div>
<div class="docstring"><p>Plot replica distribution for each ensemble with more than one replicum.</p>
</div>
</div>
<div id="Obs.plot_history" class="classattr">
<input id="Obs.plot_history-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<div class="attr function">
<span class="def">def</span>
<span class="name">plot_history</span><span class="signature pdoc-code condensed">(<span class="param"><span class="bp">self</span>, </span><span class="param"><span class="n">expand</span><span class="o">=</span><span class="kc">True</span></span><span class="return-annotation">):</span></span>
<label class="view-source-button" for="Obs.plot_history-view-source"><span>View Source</span></label>
</div>
<a class="headerlink" href="#Obs.plot_history"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="Obs.plot_history-580"><a href="#Obs.plot_history-580"><span class="linenos">580</span></a> <span class="k">def</span> <span class="nf">plot_history</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expand</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
</span><span id="Obs.plot_history-581"><a href="#Obs.plot_history-581"><span class="linenos">581</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Plot derived Monte Carlo history for each ensemble</span>
</span><span id="Obs.plot_history-582"><a href="#Obs.plot_history-582"><span class="linenos">582</span></a>
</span><span id="Obs.plot_history-583"><a href="#Obs.plot_history-583"><span class="linenos">583</span></a><span class="sd"> Parameters</span>
</span><span id="Obs.plot_history-584"><a href="#Obs.plot_history-584"><span class="linenos">584</span></a><span class="sd"> ----------</span>
</span><span id="Obs.plot_history-585"><a href="#Obs.plot_history-585"><span class="linenos">585</span></a><span class="sd"> expand : bool</span>
</span><span id="Obs.plot_history-586"><a href="#Obs.plot_history-586"><span class="linenos">586</span></a><span class="sd"> show expanded history for irregular Monte Carlo chains (default: True).</span>
</span><span id="Obs.plot_history-587"><a href="#Obs.plot_history-587"><span class="linenos">587</span></a><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="Obs.plot_history-588"><a href="#Obs.plot_history-588"><span class="linenos">588</span></a> <span class="k">for</span> <span class="n">e</span><span class="p">,</span> <span class="n">e_name</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">mc_names</span><span class="p">):</span>
</span><span id="Obs.plot_history-589"><a href="#Obs.plot_history-589"><span class="linenos">589</span></a> <span class="n">plt</span><span class="o">.</span><span class="n">figure</span><span class="p">()</span>
</span><span id="Obs.plot_history-590"><a href="#Obs.plot_history-590"><span class="linenos">590</span></a> <span class="n">r_length</span> <span class="o">=</span> <span class="p">[]</span>
</span><span id="Obs.plot_history-591"><a href="#Obs.plot_history-591"><span class="linenos">591</span></a> <span class="n">tmp</span> <span class="o">=</span> <span class="p">[]</span>
</span><span id="Obs.plot_history-592"><a href="#Obs.plot_history-592"><span class="linenos">592</span></a> <span class="n">tmp_expanded</span> <span class="o">=</span> <span class="p">[]</span>
</span><span id="Obs.plot_history-593"><a href="#Obs.plot_history-593"><span class="linenos">593</span></a> <span class="k">for</span> <span class="n">r</span><span class="p">,</span> <span class="n">r_name</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">e_content</span><span class="p">[</span><span class="n">e_name</span><span class="p">]):</span>
</span><span id="Obs.plot_history-594"><a href="#Obs.plot_history-594"><span class="linenos">594</span></a> <span class="n">tmp</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">deltas</span><span class="p">[</span><span class="n">r_name</span><span class="p">]</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">r_values</span><span class="p">[</span><span class="n">r_name</span><span class="p">])</span>
</span><span id="Obs.plot_history-595"><a href="#Obs.plot_history-595"><span class="linenos">595</span></a> <span class="k">if</span> <span class="n">expand</span><span class="p">:</span>
</span><span id="Obs.plot_history-596"><a href="#Obs.plot_history-596"><span class="linenos">596</span></a> <span class="n">tmp_expanded</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">_expand_deltas</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">deltas</span><span class="p">[</span><span class="n">r_name</span><span class="p">],</span> <span class="nb">list</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">idl</span><span class="p">[</span><span class="n">r_name</span><span class="p">]),</span> <span class="bp">self</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="n">r_name</span><span class="p">],</span> <span class="mi">1</span><span class="p">)</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">r_values</span><span class="p">[</span><span class="n">r_name</span><span class="p">])</span>
</span><span id="Obs.plot_history-597"><a href="#Obs.plot_history-597"><span class="linenos">597</span></a> <span class="n">r_length</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">tmp_expanded</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]))</span>
</span><span id="Obs.plot_history-598"><a href="#Obs.plot_history-598"><span class="linenos">598</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="Obs.plot_history-599"><a href="#Obs.plot_history-599"><span class="linenos">599</span></a> <span class="n">r_length</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">tmp</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]))</span>
</span><span id="Obs.plot_history-600"><a href="#Obs.plot_history-600"><span class="linenos">600</span></a> <span class="n">e_N</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">sum</span><span class="p">(</span><span class="n">r_length</span><span class="p">)</span>
</span><span id="Obs.plot_history-601"><a href="#Obs.plot_history-601"><span class="linenos">601</span></a> <span class="n">x</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">arange</span><span class="p">(</span><span class="n">e_N</span><span class="p">)</span>
</span><span id="Obs.plot_history-602"><a href="#Obs.plot_history-602"><span class="linenos">602</span></a> <span class="n">y_test</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">concatenate</span><span class="p">(</span><span class="n">tmp</span><span class="p">,</span> <span class="n">axis</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span>
</span><span id="Obs.plot_history-603"><a href="#Obs.plot_history-603"><span class="linenos">603</span></a> <span class="k">if</span> <span class="n">expand</span><span class="p">:</span>
</span><span id="Obs.plot_history-604"><a href="#Obs.plot_history-604"><span class="linenos">604</span></a> <span class="n">y</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">concatenate</span><span class="p">(</span><span class="n">tmp_expanded</span><span class="p">,</span> <span class="n">axis</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span>
</span><span id="Obs.plot_history-605"><a href="#Obs.plot_history-605"><span class="linenos">605</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="Obs.plot_history-606"><a href="#Obs.plot_history-606"><span class="linenos">606</span></a> <span class="n">y</span> <span class="o">=</span> <span class="n">y_test</span>
</span><span id="Obs.plot_history-607"><a href="#Obs.plot_history-607"><span class="linenos">607</span></a> <span class="n">plt</span><span class="o">.</span><span class="n">errorbar</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">fmt</span><span class="o">=</span><span class="s1">&#39;.&#39;</span><span class="p">,</span> <span class="n">markersize</span><span class="o">=</span><span class="mi">3</span><span class="p">)</span>
</span><span id="Obs.plot_history-608"><a href="#Obs.plot_history-608"><span class="linenos">608</span></a> <span class="n">plt</span><span class="o">.</span><span class="n">xlim</span><span class="p">(</span><span class="o">-</span><span class="mf">0.5</span><span class="p">,</span> <span class="n">e_N</span> <span class="o">-</span> <span class="mf">0.5</span><span class="p">)</span>
</span><span id="Obs.plot_history-609"><a href="#Obs.plot_history-609"><span class="linenos">609</span></a> <span class="n">plt</span><span class="o">.</span><span class="n">title</span><span class="p">(</span><span class="n">e_name</span> <span class="o">+</span> <span class="sa">f</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">skew: </span><span class="si">{</span><span class="n">skew</span><span class="p">(</span><span class="n">y_test</span><span class="p">)</span><span class="si">:</span><span class="s1">.3f</span><span class="si">}</span><span class="s1"> (p=</span><span class="si">{</span><span class="n">skewtest</span><span class="p">(</span><span class="n">y_test</span><span class="p">)</span><span class="o">.</span><span class="n">pvalue</span><span class="si">:</span><span class="s1">.3f</span><span class="si">}</span><span class="s1">), kurtosis: </span><span class="si">{</span><span class="n">kurtosis</span><span class="p">(</span><span class="n">y_test</span><span class="p">)</span><span class="si">:</span><span class="s1">.3f</span><span class="si">}</span><span class="s1"> (p=</span><span class="si">{</span><span class="n">kurtosistest</span><span class="p">(</span><span class="n">y_test</span><span class="p">)</span><span class="o">.</span><span class="n">pvalue</span><span class="si">:</span><span class="s1">.3f</span><span class="si">}</span><span class="s1">)&#39;</span><span class="p">)</span>
</span><span id="Obs.plot_history-610"><a href="#Obs.plot_history-610"><span class="linenos">610</span></a> <span class="n">plt</span><span class="o">.</span><span class="n">draw</span><span class="p">()</span>
</span></pre></div>
<div class="docstring"><p>Plot derived Monte Carlo history for each ensemble</p>
<h6 id="parameters">Parameters</h6>
<ul>
<li><strong>expand</strong> (bool):
show expanded history for irregular Monte Carlo chains (default: True).</li>
</ul>
</div>
</div>
<div id="Obs.plot_piechart" class="classattr">
<input id="Obs.plot_piechart-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<div class="attr function">
<span class="def">def</span>
<span class="name">plot_piechart</span><span class="signature pdoc-code condensed">(<span class="param"><span class="bp">self</span>, </span><span class="param"><span class="n">save</span><span class="o">=</span><span class="kc">None</span></span><span class="return-annotation">):</span></span>
<label class="view-source-button" for="Obs.plot_piechart-view-source"><span>View Source</span></label>
</div>
<a class="headerlink" href="#Obs.plot_piechart"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="Obs.plot_piechart-612"><a href="#Obs.plot_piechart-612"><span class="linenos">612</span></a> <span class="k">def</span> <span class="nf">plot_piechart</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">save</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
</span><span id="Obs.plot_piechart-613"><a href="#Obs.plot_piechart-613"><span class="linenos">613</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Plot piechart which shows the fractional contribution of each</span>
</span><span id="Obs.plot_piechart-614"><a href="#Obs.plot_piechart-614"><span class="linenos">614</span></a><span class="sd"> ensemble to the error and returns a dictionary containing the fractions.</span>
</span><span id="Obs.plot_piechart-615"><a href="#Obs.plot_piechart-615"><span class="linenos">615</span></a>
</span><span id="Obs.plot_piechart-616"><a href="#Obs.plot_piechart-616"><span class="linenos">616</span></a><span class="sd"> Parameters</span>
</span><span id="Obs.plot_piechart-617"><a href="#Obs.plot_piechart-617"><span class="linenos">617</span></a><span class="sd"> ----------</span>
</span><span id="Obs.plot_piechart-618"><a href="#Obs.plot_piechart-618"><span class="linenos">618</span></a><span class="sd"> save : str</span>
</span><span id="Obs.plot_piechart-619"><a href="#Obs.plot_piechart-619"><span class="linenos">619</span></a><span class="sd"> saves the figure to a file named &#39;save&#39; if.</span>
</span><span id="Obs.plot_piechart-620"><a href="#Obs.plot_piechart-620"><span class="linenos">620</span></a><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="Obs.plot_piechart-621"><a href="#Obs.plot_piechart-621"><span class="linenos">621</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">hasattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s1">&#39;e_dvalue&#39;</span><span class="p">):</span>
</span><span id="Obs.plot_piechart-622"><a href="#Obs.plot_piechart-622"><span class="linenos">622</span></a> <span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s1">&#39;Run the gamma method first.&#39;</span><span class="p">)</span>
</span><span id="Obs.plot_piechart-623"><a href="#Obs.plot_piechart-623"><span class="linenos">623</span></a> <span class="k">if</span> <span class="n">np</span><span class="o">.</span><span class="n">isclose</span><span class="p">(</span><span class="mf">0.0</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_dvalue</span><span class="p">,</span> <span class="n">atol</span><span class="o">=</span><span class="mf">1e-15</span><span class="p">):</span>
</span><span id="Obs.plot_piechart-624"><a href="#Obs.plot_piechart-624"><span class="linenos">624</span></a> <span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s1">&#39;Error is 0.0&#39;</span><span class="p">)</span>
</span><span id="Obs.plot_piechart-625"><a href="#Obs.plot_piechart-625"><span class="linenos">625</span></a> <span class="n">labels</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">e_names</span>
</span><span id="Obs.plot_piechart-626"><a href="#Obs.plot_piechart-626"><span class="linenos">626</span></a> <span class="n">sizes</span> <span class="o">=</span> <span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">e_dvalue</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="o">**</span> <span class="mi">2</span> <span class="k">for</span> <span class="n">name</span> <span class="ow">in</span> <span class="n">labels</span><span class="p">]</span> <span class="o">/</span> <span class="bp">self</span><span class="o">.</span><span class="n">_dvalue</span> <span class="o">**</span> <span class="mi">2</span>
</span><span id="Obs.plot_piechart-627"><a href="#Obs.plot_piechart-627"><span class="linenos">627</span></a> <span class="n">fig1</span><span class="p">,</span> <span class="n">ax1</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">subplots</span><span class="p">()</span>
</span><span id="Obs.plot_piechart-628"><a href="#Obs.plot_piechart-628"><span class="linenos">628</span></a> <span class="n">ax1</span><span class="o">.</span><span class="n">pie</span><span class="p">(</span><span class="n">sizes</span><span class="p">,</span> <span class="n">labels</span><span class="o">=</span><span class="n">labels</span><span class="p">,</span> <span class="n">startangle</span><span class="o">=</span><span class="mi">90</span><span class="p">,</span> <span class="n">normalize</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
</span><span id="Obs.plot_piechart-629"><a href="#Obs.plot_piechart-629"><span class="linenos">629</span></a> <span class="n">ax1</span><span class="o">.</span><span class="n">axis</span><span class="p">(</span><span class="s1">&#39;equal&#39;</span><span class="p">)</span>
</span><span id="Obs.plot_piechart-630"><a href="#Obs.plot_piechart-630"><span class="linenos">630</span></a> <span class="n">plt</span><span class="o">.</span><span class="n">draw</span><span class="p">()</span>
</span><span id="Obs.plot_piechart-631"><a href="#Obs.plot_piechart-631"><span class="linenos">631</span></a> <span class="k">if</span> <span class="n">save</span><span class="p">:</span>
</span><span id="Obs.plot_piechart-632"><a href="#Obs.plot_piechart-632"><span class="linenos">632</span></a> <span class="n">fig1</span><span class="o">.</span><span class="n">savefig</span><span class="p">(</span><span class="n">save</span><span class="p">)</span>
</span><span id="Obs.plot_piechart-633"><a href="#Obs.plot_piechart-633"><span class="linenos">633</span></a>
</span><span id="Obs.plot_piechart-634"><a href="#Obs.plot_piechart-634"><span class="linenos">634</span></a> <span class="k">return</span> <span class="nb">dict</span><span class="p">(</span><span class="nb">zip</span><span class="p">(</span><span class="n">labels</span><span class="p">,</span> <span class="n">sizes</span><span class="p">))</span>
</span></pre></div>
<div class="docstring"><p>Plot piechart which shows the fractional contribution of each
ensemble to the error and returns a dictionary containing the fractions.</p>
<h6 id="parameters">Parameters</h6>
<ul>
<li><strong>save</strong> (str):
saves the figure to a file named 'save' if.</li>
</ul>
</div>
</div>
<div id="Obs.dump" class="classattr">
<input id="Obs.dump-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<div class="attr function">
<span class="def">def</span>
<span class="name">dump</span><span class="signature pdoc-code condensed">(<span class="param"><span class="bp">self</span>, </span><span class="param"><span class="n">filename</span>, </span><span class="param"><span class="n">datatype</span><span class="o">=</span><span class="s1">&#39;json.gz&#39;</span>, </span><span class="param"><span class="n">description</span><span class="o">=</span><span class="s1">&#39;&#39;</span>, </span><span class="param"><span class="o">**</span><span class="n">kwargs</span></span><span class="return-annotation">):</span></span>
<label class="view-source-button" for="Obs.dump-view-source"><span>View Source</span></label>
</div>
<a class="headerlink" href="#Obs.dump"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="Obs.dump-636"><a href="#Obs.dump-636"><span class="linenos">636</span></a> <span class="k">def</span> <span class="nf">dump</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">filename</span><span class="p">,</span> <span class="n">datatype</span><span class="o">=</span><span class="s2">&quot;json.gz&quot;</span><span class="p">,</span> <span class="n">description</span><span class="o">=</span><span class="s2">&quot;&quot;</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
</span><span id="Obs.dump-637"><a href="#Obs.dump-637"><span class="linenos">637</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Dump the Obs to a file &#39;name&#39; of chosen format.</span>
</span><span id="Obs.dump-638"><a href="#Obs.dump-638"><span class="linenos">638</span></a>
</span><span id="Obs.dump-639"><a href="#Obs.dump-639"><span class="linenos">639</span></a><span class="sd"> Parameters</span>
</span><span id="Obs.dump-640"><a href="#Obs.dump-640"><span class="linenos">640</span></a><span class="sd"> ----------</span>
</span><span id="Obs.dump-641"><a href="#Obs.dump-641"><span class="linenos">641</span></a><span class="sd"> filename : str</span>
</span><span id="Obs.dump-642"><a href="#Obs.dump-642"><span class="linenos">642</span></a><span class="sd"> name of the file to be saved.</span>
</span><span id="Obs.dump-643"><a href="#Obs.dump-643"><span class="linenos">643</span></a><span class="sd"> datatype : str</span>
</span><span id="Obs.dump-644"><a href="#Obs.dump-644"><span class="linenos">644</span></a><span class="sd"> Format of the exported file. Supported formats include</span>
</span><span id="Obs.dump-645"><a href="#Obs.dump-645"><span class="linenos">645</span></a><span class="sd"> &quot;json.gz&quot; and &quot;pickle&quot;</span>
</span><span id="Obs.dump-646"><a href="#Obs.dump-646"><span class="linenos">646</span></a><span class="sd"> description : str</span>
</span><span id="Obs.dump-647"><a href="#Obs.dump-647"><span class="linenos">647</span></a><span class="sd"> Description for output file, only relevant for json.gz format.</span>
</span><span id="Obs.dump-648"><a href="#Obs.dump-648"><span class="linenos">648</span></a><span class="sd"> path : str</span>
</span><span id="Obs.dump-649"><a href="#Obs.dump-649"><span class="linenos">649</span></a><span class="sd"> specifies a custom path for the file (default &#39;.&#39;)</span>
</span><span id="Obs.dump-650"><a href="#Obs.dump-650"><span class="linenos">650</span></a><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="Obs.dump-651"><a href="#Obs.dump-651"><span class="linenos">651</span></a> <span class="k">if</span> <span class="s1">&#39;path&#39;</span> <span class="ow">in</span> <span class="n">kwargs</span><span class="p">:</span>
</span><span id="Obs.dump-652"><a href="#Obs.dump-652"><span class="linenos">652</span></a> <span class="n">file_name</span> <span class="o">=</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">&#39;path&#39;</span><span class="p">)</span> <span class="o">+</span> <span class="s1">&#39;/&#39;</span> <span class="o">+</span> <span class="n">filename</span>
</span><span id="Obs.dump-653"><a href="#Obs.dump-653"><span class="linenos">653</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="Obs.dump-654"><a href="#Obs.dump-654"><span class="linenos">654</span></a> <span class="n">file_name</span> <span class="o">=</span> <span class="n">filename</span>
</span><span id="Obs.dump-655"><a href="#Obs.dump-655"><span class="linenos">655</span></a>
</span><span id="Obs.dump-656"><a href="#Obs.dump-656"><span class="linenos">656</span></a> <span class="k">if</span> <span class="n">datatype</span> <span class="o">==</span> <span class="s2">&quot;json.gz&quot;</span><span class="p">:</span>
</span><span id="Obs.dump-657"><a href="#Obs.dump-657"><span class="linenos">657</span></a> <span class="kn">from</span> <span class="nn">.input.json</span> <span class="kn">import</span> <span class="n">dump_to_json</span>
</span><span id="Obs.dump-658"><a href="#Obs.dump-658"><span class="linenos">658</span></a> <span class="n">dump_to_json</span><span class="p">([</span><span class="bp">self</span><span class="p">],</span> <span class="n">file_name</span><span class="p">,</span> <span class="n">description</span><span class="o">=</span><span class="n">description</span><span class="p">)</span>
</span><span id="Obs.dump-659"><a href="#Obs.dump-659"><span class="linenos">659</span></a> <span class="k">elif</span> <span class="n">datatype</span> <span class="o">==</span> <span class="s2">&quot;pickle&quot;</span><span class="p">:</span>
</span><span id="Obs.dump-660"><a href="#Obs.dump-660"><span class="linenos">660</span></a> <span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">file_name</span> <span class="o">+</span> <span class="s1">&#39;.p&#39;</span><span class="p">,</span> <span class="s1">&#39;wb&#39;</span><span class="p">)</span> <span class="k">as</span> <span class="n">fb</span><span class="p">:</span>
</span><span id="Obs.dump-661"><a href="#Obs.dump-661"><span class="linenos">661</span></a> <span class="n">pickle</span><span class="o">.</span><span class="n">dump</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">fb</span><span class="p">)</span>
</span><span id="Obs.dump-662"><a href="#Obs.dump-662"><span class="linenos">662</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="Obs.dump-663"><a href="#Obs.dump-663"><span class="linenos">663</span></a> <span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s2">&quot;Unknown datatype &quot;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">datatype</span><span class="p">))</span>
</span></pre></div>
<div class="docstring"><p>Dump the Obs to a file 'name' of chosen format.</p>
<h6 id="parameters">Parameters</h6>
<ul>
<li><strong>filename</strong> (str):
name of the file to be saved.</li>
<li><strong>datatype</strong> (str):
Format of the exported file. Supported formats include
"json.gz" and "pickle"</li>
<li><strong>description</strong> (str):
Description for output file, only relevant for json.gz format.</li>
<li><strong>path</strong> (str):
specifies a custom path for the file (default '.')</li>
</ul>
</div>
</div>
<div id="Obs.export_jackknife" class="classattr">
<input id="Obs.export_jackknife-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<div class="attr function">
<span class="def">def</span>
<span class="name">export_jackknife</span><span class="signature pdoc-code condensed">(<span class="param"><span class="bp">self</span></span><span class="return-annotation">):</span></span>
<label class="view-source-button" for="Obs.export_jackknife-view-source"><span>View Source</span></label>
</div>
<a class="headerlink" href="#Obs.export_jackknife"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="Obs.export_jackknife-665"><a href="#Obs.export_jackknife-665"><span class="linenos">665</span></a> <span class="k">def</span> <span class="nf">export_jackknife</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
</span><span id="Obs.export_jackknife-666"><a href="#Obs.export_jackknife-666"><span class="linenos">666</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Export jackknife samples from the Obs</span>
</span><span id="Obs.export_jackknife-667"><a href="#Obs.export_jackknife-667"><span class="linenos">667</span></a>
</span><span id="Obs.export_jackknife-668"><a href="#Obs.export_jackknife-668"><span class="linenos">668</span></a><span class="sd"> Returns</span>
</span><span id="Obs.export_jackknife-669"><a href="#Obs.export_jackknife-669"><span class="linenos">669</span></a><span class="sd"> -------</span>
</span><span id="Obs.export_jackknife-670"><a href="#Obs.export_jackknife-670"><span class="linenos">670</span></a><span class="sd"> numpy.ndarray</span>
</span><span id="Obs.export_jackknife-671"><a href="#Obs.export_jackknife-671"><span class="linenos">671</span></a><span class="sd"> Returns a numpy array of length N + 1 where N is the number of samples</span>
</span><span id="Obs.export_jackknife-672"><a href="#Obs.export_jackknife-672"><span class="linenos">672</span></a><span class="sd"> for the given ensemble and replicum. The zeroth entry of the array contains</span>
</span><span id="Obs.export_jackknife-673"><a href="#Obs.export_jackknife-673"><span class="linenos">673</span></a><span class="sd"> the mean value of the Obs, entries 1 to N contain the N jackknife samples</span>
</span><span id="Obs.export_jackknife-674"><a href="#Obs.export_jackknife-674"><span class="linenos">674</span></a><span class="sd"> derived from the Obs. The current implementation only works for observables</span>
</span><span id="Obs.export_jackknife-675"><a href="#Obs.export_jackknife-675"><span class="linenos">675</span></a><span class="sd"> defined on exactly one ensemble and replicum. The derived jackknife samples</span>
</span><span id="Obs.export_jackknife-676"><a href="#Obs.export_jackknife-676"><span class="linenos">676</span></a><span class="sd"> should agree with samples from a full jackknife analysis up to O(1/N).</span>
</span><span id="Obs.export_jackknife-677"><a href="#Obs.export_jackknife-677"><span class="linenos">677</span></a><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="Obs.export_jackknife-678"><a href="#Obs.export_jackknife-678"><span class="linenos">678</span></a>
</span><span id="Obs.export_jackknife-679"><a href="#Obs.export_jackknife-679"><span class="linenos">679</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">names</span><span class="p">)</span> <span class="o">!=</span> <span class="mi">1</span><span class="p">:</span>
</span><span id="Obs.export_jackknife-680"><a href="#Obs.export_jackknife-680"><span class="linenos">680</span></a> <span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s2">&quot;&#39;export_jackknife&#39; is only implemented for Obs defined on one ensemble and replicum.&quot;</span><span class="p">)</span>
</span><span id="Obs.export_jackknife-681"><a href="#Obs.export_jackknife-681"><span class="linenos">681</span></a>
</span><span id="Obs.export_jackknife-682"><a href="#Obs.export_jackknife-682"><span class="linenos">682</span></a> <span class="n">name</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">names</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
</span><span id="Obs.export_jackknife-683"><a href="#Obs.export_jackknife-683"><span class="linenos">683</span></a> <span class="n">full_data</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">deltas</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">r_values</span><span class="p">[</span><span class="n">name</span><span class="p">]</span>
</span><span id="Obs.export_jackknife-684"><a href="#Obs.export_jackknife-684"><span class="linenos">684</span></a> <span class="n">n</span> <span class="o">=</span> <span class="n">full_data</span><span class="o">.</span><span class="n">size</span>
</span><span id="Obs.export_jackknife-685"><a href="#Obs.export_jackknife-685"><span class="linenos">685</span></a> <span class="n">mean</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">value</span>
</span><span id="Obs.export_jackknife-686"><a href="#Obs.export_jackknife-686"><span class="linenos">686</span></a> <span class="n">tmp_jacks</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">zeros</span><span class="p">(</span><span class="n">n</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span>
</span><span id="Obs.export_jackknife-687"><a href="#Obs.export_jackknife-687"><span class="linenos">687</span></a> <span class="n">tmp_jacks</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="n">mean</span>
</span><span id="Obs.export_jackknife-688"><a href="#Obs.export_jackknife-688"><span class="linenos">688</span></a> <span class="n">tmp_jacks</span><span class="p">[</span><span class="mi">1</span><span class="p">:]</span> <span class="o">=</span> <span class="p">(</span><span class="n">n</span> <span class="o">*</span> <span class="n">mean</span> <span class="o">-</span> <span class="n">full_data</span><span class="p">)</span> <span class="o">/</span> <span class="p">(</span><span class="n">n</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span>
</span><span id="Obs.export_jackknife-689"><a href="#Obs.export_jackknife-689"><span class="linenos">689</span></a> <span class="k">return</span> <span class="n">tmp_jacks</span>
</span></pre></div>
<div class="docstring"><p>Export jackknife samples from the Obs</p>
<h6 id="returns">Returns</h6>
<ul>
<li><strong>numpy.ndarray</strong>: Returns a numpy array of length N + 1 where N is the number of samples
for the given ensemble and replicum. The zeroth entry of the array contains
the mean value of the Obs, entries 1 to N contain the N jackknife samples
derived from the Obs. The current implementation only works for observables
defined on exactly one ensemble and replicum. The derived jackknife samples
should agree with samples from a full jackknife analysis up to O(1/N).</li>
</ul>
</div>
</div>
<div id="Obs.export_bootstrap" class="classattr">
<input id="Obs.export_bootstrap-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<div class="attr function">
<span class="def">def</span>
<span class="name">export_bootstrap</span><span class="signature pdoc-code condensed">(<span class="param"><span class="bp">self</span>, </span><span class="param"><span class="n">samples</span><span class="o">=</span><span class="mi">500</span>, </span><span class="param"><span class="n">random_numbers</span><span class="o">=</span><span class="kc">None</span>, </span><span class="param"><span class="n">save_rng</span><span class="o">=</span><span class="kc">None</span></span><span class="return-annotation">):</span></span>
<label class="view-source-button" for="Obs.export_bootstrap-view-source"><span>View Source</span></label>
</div>
<a class="headerlink" href="#Obs.export_bootstrap"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="Obs.export_bootstrap-691"><a href="#Obs.export_bootstrap-691"><span class="linenos">691</span></a> <span class="k">def</span> <span class="nf">export_bootstrap</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">samples</span><span class="o">=</span><span class="mi">500</span><span class="p">,</span> <span class="n">random_numbers</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">save_rng</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
</span><span id="Obs.export_bootstrap-692"><a href="#Obs.export_bootstrap-692"><span class="linenos">692</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Export bootstrap samples from the Obs</span>
</span><span id="Obs.export_bootstrap-693"><a href="#Obs.export_bootstrap-693"><span class="linenos">693</span></a>
</span><span id="Obs.export_bootstrap-694"><a href="#Obs.export_bootstrap-694"><span class="linenos">694</span></a><span class="sd"> Parameters</span>
</span><span id="Obs.export_bootstrap-695"><a href="#Obs.export_bootstrap-695"><span class="linenos">695</span></a><span class="sd"> ----------</span>
</span><span id="Obs.export_bootstrap-696"><a href="#Obs.export_bootstrap-696"><span class="linenos">696</span></a><span class="sd"> samples : int</span>
</span><span id="Obs.export_bootstrap-697"><a href="#Obs.export_bootstrap-697"><span class="linenos">697</span></a><span class="sd"> Number of bootstrap samples to generate.</span>
</span><span id="Obs.export_bootstrap-698"><a href="#Obs.export_bootstrap-698"><span class="linenos">698</span></a><span class="sd"> random_numbers : np.ndarray</span>
</span><span id="Obs.export_bootstrap-699"><a href="#Obs.export_bootstrap-699"><span class="linenos">699</span></a><span class="sd"> Array of shape (samples, length) containing the random numbers to generate the bootstrap samples.</span>
</span><span id="Obs.export_bootstrap-700"><a href="#Obs.export_bootstrap-700"><span class="linenos">700</span></a><span class="sd"> If not provided the bootstrap samples are generated bashed on the md5 hash of the enesmble name.</span>
</span><span id="Obs.export_bootstrap-701"><a href="#Obs.export_bootstrap-701"><span class="linenos">701</span></a><span class="sd"> save_rng : str</span>
</span><span id="Obs.export_bootstrap-702"><a href="#Obs.export_bootstrap-702"><span class="linenos">702</span></a><span class="sd"> Save the random numbers to a file if a path is specified.</span>
</span><span id="Obs.export_bootstrap-703"><a href="#Obs.export_bootstrap-703"><span class="linenos">703</span></a>
</span><span id="Obs.export_bootstrap-704"><a href="#Obs.export_bootstrap-704"><span class="linenos">704</span></a><span class="sd"> Returns</span>
</span><span id="Obs.export_bootstrap-705"><a href="#Obs.export_bootstrap-705"><span class="linenos">705</span></a><span class="sd"> -------</span>
</span><span id="Obs.export_bootstrap-706"><a href="#Obs.export_bootstrap-706"><span class="linenos">706</span></a><span class="sd"> numpy.ndarray</span>
</span><span id="Obs.export_bootstrap-707"><a href="#Obs.export_bootstrap-707"><span class="linenos">707</span></a><span class="sd"> Returns a numpy array of length N + 1 where N is the number of samples</span>
</span><span id="Obs.export_bootstrap-708"><a href="#Obs.export_bootstrap-708"><span class="linenos">708</span></a><span class="sd"> for the given ensemble and replicum. The zeroth entry of the array contains</span>
</span><span id="Obs.export_bootstrap-709"><a href="#Obs.export_bootstrap-709"><span class="linenos">709</span></a><span class="sd"> the mean value of the Obs, entries 1 to N contain the N import_bootstrap samples</span>
</span><span id="Obs.export_bootstrap-710"><a href="#Obs.export_bootstrap-710"><span class="linenos">710</span></a><span class="sd"> derived from the Obs. The current implementation only works for observables</span>
</span><span id="Obs.export_bootstrap-711"><a href="#Obs.export_bootstrap-711"><span class="linenos">711</span></a><span class="sd"> defined on exactly one ensemble and replicum. The derived bootstrap samples</span>
</span><span id="Obs.export_bootstrap-712"><a href="#Obs.export_bootstrap-712"><span class="linenos">712</span></a><span class="sd"> should agree with samples from a full bootstrap analysis up to O(1/N).</span>
</span><span id="Obs.export_bootstrap-713"><a href="#Obs.export_bootstrap-713"><span class="linenos">713</span></a><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="Obs.export_bootstrap-714"><a href="#Obs.export_bootstrap-714"><span class="linenos">714</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">names</span><span class="p">)</span> <span class="o">!=</span> <span class="mi">1</span><span class="p">:</span>
</span><span id="Obs.export_bootstrap-715"><a href="#Obs.export_bootstrap-715"><span class="linenos">715</span></a> <span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s2">&quot;&#39;export_boostrap&#39; is only implemented for Obs defined on one ensemble and replicum.&quot;</span><span class="p">)</span>
</span><span id="Obs.export_bootstrap-716"><a href="#Obs.export_bootstrap-716"><span class="linenos">716</span></a>
</span><span id="Obs.export_bootstrap-717"><a href="#Obs.export_bootstrap-717"><span class="linenos">717</span></a> <span class="n">name</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">names</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
</span><span id="Obs.export_bootstrap-718"><a href="#Obs.export_bootstrap-718"><span class="linenos">718</span></a> <span class="n">length</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">N</span>
</span><span id="Obs.export_bootstrap-719"><a href="#Obs.export_bootstrap-719"><span class="linenos">719</span></a>
</span><span id="Obs.export_bootstrap-720"><a href="#Obs.export_bootstrap-720"><span class="linenos">720</span></a> <span class="k">if</span> <span class="n">random_numbers</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
</span><span id="Obs.export_bootstrap-721"><a href="#Obs.export_bootstrap-721"><span class="linenos">721</span></a> <span class="n">seed</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">hashlib</span><span class="o">.</span><span class="n">md5</span><span class="p">(</span><span class="n">name</span><span class="o">.</span><span class="n">encode</span><span class="p">())</span><span class="o">.</span><span class="n">hexdigest</span><span class="p">(),</span> <span class="mi">16</span><span class="p">)</span> <span class="o">&amp;</span> <span class="mh">0xFFFFFFFF</span>
</span><span id="Obs.export_bootstrap-722"><a href="#Obs.export_bootstrap-722"><span class="linenos">722</span></a> <span class="n">rng</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">random</span><span class="o">.</span><span class="n">default_rng</span><span class="p">(</span><span class="n">seed</span><span class="p">)</span>
</span><span id="Obs.export_bootstrap-723"><a href="#Obs.export_bootstrap-723"><span class="linenos">723</span></a> <span class="n">random_numbers</span> <span class="o">=</span> <span class="n">rng</span><span class="o">.</span><span class="n">integers</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">length</span><span class="p">,</span> <span class="n">size</span><span class="o">=</span><span class="p">(</span><span class="n">samples</span><span class="p">,</span> <span class="n">length</span><span class="p">))</span>
</span><span id="Obs.export_bootstrap-724"><a href="#Obs.export_bootstrap-724"><span class="linenos">724</span></a>
</span><span id="Obs.export_bootstrap-725"><a href="#Obs.export_bootstrap-725"><span class="linenos">725</span></a> <span class="k">if</span> <span class="n">save_rng</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
</span><span id="Obs.export_bootstrap-726"><a href="#Obs.export_bootstrap-726"><span class="linenos">726</span></a> <span class="n">np</span><span class="o">.</span><span class="n">savetxt</span><span class="p">(</span><span class="n">save_rng</span><span class="p">,</span> <span class="n">random_numbers</span><span class="p">,</span> <span class="n">fmt</span><span class="o">=</span><span class="s1">&#39;</span><span class="si">%i</span><span class="s1">&#39;</span><span class="p">)</span>
</span><span id="Obs.export_bootstrap-727"><a href="#Obs.export_bootstrap-727"><span class="linenos">727</span></a>
</span><span id="Obs.export_bootstrap-728"><a href="#Obs.export_bootstrap-728"><span class="linenos">728</span></a> <span class="n">proj</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">vstack</span><span class="p">([</span><span class="n">np</span><span class="o">.</span><span class="n">bincount</span><span class="p">(</span><span class="n">o</span><span class="p">,</span> <span class="n">minlength</span><span class="o">=</span><span class="n">length</span><span class="p">)</span> <span class="k">for</span> <span class="n">o</span> <span class="ow">in</span> <span class="n">random_numbers</span><span class="p">])</span> <span class="o">/</span> <span class="n">length</span>
</span><span id="Obs.export_bootstrap-729"><a href="#Obs.export_bootstrap-729"><span class="linenos">729</span></a> <span class="n">ret</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">zeros</span><span class="p">(</span><span class="n">samples</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span>
</span><span id="Obs.export_bootstrap-730"><a href="#Obs.export_bootstrap-730"><span class="linenos">730</span></a> <span class="n">ret</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">value</span>
</span><span id="Obs.export_bootstrap-731"><a href="#Obs.export_bootstrap-731"><span class="linenos">731</span></a> <span class="n">ret</span><span class="p">[</span><span class="mi">1</span><span class="p">:]</span> <span class="o">=</span> <span class="n">proj</span> <span class="o">@</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">deltas</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">r_values</span><span class="p">[</span><span class="n">name</span><span class="p">])</span>
</span><span id="Obs.export_bootstrap-732"><a href="#Obs.export_bootstrap-732"><span class="linenos">732</span></a> <span class="k">return</span> <span class="n">ret</span>
</span></pre></div>
<div class="docstring"><p>Export bootstrap samples from the Obs</p>
<h6 id="parameters">Parameters</h6>
<ul>
<li><strong>samples</strong> (int):
Number of bootstrap samples to generate.</li>
<li><strong>random_numbers</strong> (np.ndarray):
Array of shape (samples, length) containing the random numbers to generate the bootstrap samples.
If not provided the bootstrap samples are generated bashed on the md5 hash of the enesmble name.</li>
<li><strong>save_rng</strong> (str):
Save the random numbers to a file if a path is specified.</li>
</ul>
<h6 id="returns">Returns</h6>
<ul>
<li><strong>numpy.ndarray</strong>: Returns a numpy array of length N + 1 where N is the number of samples
for the given ensemble and replicum. The zeroth entry of the array contains
the mean value of the Obs, entries 1 to N contain the N import_bootstrap samples
derived from the Obs. The current implementation only works for observables
defined on exactly one ensemble and replicum. The derived bootstrap samples
should agree with samples from a full bootstrap analysis up to O(1/N).</li>
</ul>
</div>
</div>
<div id="Obs.sqrt" class="classattr">
<input id="Obs.sqrt-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<div class="attr function">
<span class="def">def</span>
<span class="name">sqrt</span><span class="signature pdoc-code condensed">(<span class="param"><span class="bp">self</span></span><span class="return-annotation">):</span></span>
<label class="view-source-button" for="Obs.sqrt-view-source"><span>View Source</span></label>
</div>
<a class="headerlink" href="#Obs.sqrt"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="Obs.sqrt-874"><a href="#Obs.sqrt-874"><span class="linenos">874</span></a> <span class="k">def</span> <span class="nf">sqrt</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
</span><span id="Obs.sqrt-875"><a href="#Obs.sqrt-875"><span class="linenos">875</span></a> <span class="k">return</span> <span class="n">derived_observable</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">:</span> <span class="n">np</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="n">x</span><span class="p">[</span><span class="mi">0</span><span class="p">]),</span> <span class="p">[</span><span class="bp">self</span><span class="p">],</span> <span class="n">man_grad</span><span class="o">=</span><span class="p">[</span><span class="mi">1</span> <span class="o">/</span> <span class="mi">2</span> <span class="o">/</span> <span class="n">np</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">value</span><span class="p">)])</span>
</span></pre></div>
</div>
<div id="Obs.log" class="classattr">
<input id="Obs.log-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<div class="attr function">
<span class="def">def</span>
<span class="name">log</span><span class="signature pdoc-code condensed">(<span class="param"><span class="bp">self</span></span><span class="return-annotation">):</span></span>
<label class="view-source-button" for="Obs.log-view-source"><span>View Source</span></label>
</div>
<a class="headerlink" href="#Obs.log"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="Obs.log-877"><a href="#Obs.log-877"><span class="linenos">877</span></a> <span class="k">def</span> <span class="nf">log</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
</span><span id="Obs.log-878"><a href="#Obs.log-878"><span class="linenos">878</span></a> <span class="k">return</span> <span class="n">derived_observable</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">:</span> <span class="n">np</span><span class="o">.</span><span class="n">log</span><span class="p">(</span><span class="n">x</span><span class="p">[</span><span class="mi">0</span><span class="p">]),</span> <span class="p">[</span><span class="bp">self</span><span class="p">],</span> <span class="n">man_grad</span><span class="o">=</span><span class="p">[</span><span class="mi">1</span> <span class="o">/</span> <span class="bp">self</span><span class="o">.</span><span class="n">value</span><span class="p">])</span>
</span></pre></div>
</div>
<div id="Obs.exp" class="classattr">
<input id="Obs.exp-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<div class="attr function">
<span class="def">def</span>
<span class="name">exp</span><span class="signature pdoc-code condensed">(<span class="param"><span class="bp">self</span></span><span class="return-annotation">):</span></span>
<label class="view-source-button" for="Obs.exp-view-source"><span>View Source</span></label>
</div>
<a class="headerlink" href="#Obs.exp"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="Obs.exp-880"><a href="#Obs.exp-880"><span class="linenos">880</span></a> <span class="k">def</span> <span class="nf">exp</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
</span><span id="Obs.exp-881"><a href="#Obs.exp-881"><span class="linenos">881</span></a> <span class="k">return</span> <span class="n">derived_observable</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">:</span> <span class="n">np</span><span class="o">.</span><span class="n">exp</span><span class="p">(</span><span class="n">x</span><span class="p">[</span><span class="mi">0</span><span class="p">]),</span> <span class="p">[</span><span class="bp">self</span><span class="p">],</span> <span class="n">man_grad</span><span class="o">=</span><span class="p">[</span><span class="n">np</span><span class="o">.</span><span class="n">exp</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">value</span><span class="p">)])</span>
</span></pre></div>
</div>
<div id="Obs.sin" class="classattr">
<input id="Obs.sin-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<div class="attr function">
<span class="def">def</span>
<span class="name">sin</span><span class="signature pdoc-code condensed">(<span class="param"><span class="bp">self</span></span><span class="return-annotation">):</span></span>
<label class="view-source-button" for="Obs.sin-view-source"><span>View Source</span></label>
</div>
<a class="headerlink" href="#Obs.sin"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="Obs.sin-883"><a href="#Obs.sin-883"><span class="linenos">883</span></a> <span class="k">def</span> <span class="nf">sin</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
</span><span id="Obs.sin-884"><a href="#Obs.sin-884"><span class="linenos">884</span></a> <span class="k">return</span> <span class="n">derived_observable</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">:</span> <span class="n">np</span><span class="o">.</span><span class="n">sin</span><span class="p">(</span><span class="n">x</span><span class="p">[</span><span class="mi">0</span><span class="p">]),</span> <span class="p">[</span><span class="bp">self</span><span class="p">],</span> <span class="n">man_grad</span><span class="o">=</span><span class="p">[</span><span class="n">np</span><span class="o">.</span><span class="n">cos</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">value</span><span class="p">)])</span>
</span></pre></div>
</div>
<div id="Obs.cos" class="classattr">
<input id="Obs.cos-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<div class="attr function">
<span class="def">def</span>
<span class="name">cos</span><span class="signature pdoc-code condensed">(<span class="param"><span class="bp">self</span></span><span class="return-annotation">):</span></span>
<label class="view-source-button" for="Obs.cos-view-source"><span>View Source</span></label>
</div>
<a class="headerlink" href="#Obs.cos"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="Obs.cos-886"><a href="#Obs.cos-886"><span class="linenos">886</span></a> <span class="k">def</span> <span class="nf">cos</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
</span><span id="Obs.cos-887"><a href="#Obs.cos-887"><span class="linenos">887</span></a> <span class="k">return</span> <span class="n">derived_observable</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">:</span> <span class="n">np</span><span class="o">.</span><span class="n">cos</span><span class="p">(</span><span class="n">x</span><span class="p">[</span><span class="mi">0</span><span class="p">]),</span> <span class="p">[</span><span class="bp">self</span><span class="p">],</span> <span class="n">man_grad</span><span class="o">=</span><span class="p">[</span><span class="o">-</span><span class="n">np</span><span class="o">.</span><span class="n">sin</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">value</span><span class="p">)])</span>
</span></pre></div>
</div>
<div id="Obs.tan" class="classattr">
<input id="Obs.tan-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<div class="attr function">
<span class="def">def</span>
<span class="name">tan</span><span class="signature pdoc-code condensed">(<span class="param"><span class="bp">self</span></span><span class="return-annotation">):</span></span>
<label class="view-source-button" for="Obs.tan-view-source"><span>View Source</span></label>
</div>
<a class="headerlink" href="#Obs.tan"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="Obs.tan-889"><a href="#Obs.tan-889"><span class="linenos">889</span></a> <span class="k">def</span> <span class="nf">tan</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
</span><span id="Obs.tan-890"><a href="#Obs.tan-890"><span class="linenos">890</span></a> <span class="k">return</span> <span class="n">derived_observable</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">:</span> <span class="n">np</span><span class="o">.</span><span class="n">tan</span><span class="p">(</span><span class="n">x</span><span class="p">[</span><span class="mi">0</span><span class="p">]),</span> <span class="p">[</span><span class="bp">self</span><span class="p">],</span> <span class="n">man_grad</span><span class="o">=</span><span class="p">[</span><span class="mi">1</span> <span class="o">/</span> <span class="n">np</span><span class="o">.</span><span class="n">cos</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">value</span><span class="p">)</span> <span class="o">**</span> <span class="mi">2</span><span class="p">])</span>
</span></pre></div>
</div>
<div id="Obs.arcsin" class="classattr">
<input id="Obs.arcsin-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<div class="attr function">
<span class="def">def</span>
<span class="name">arcsin</span><span class="signature pdoc-code condensed">(<span class="param"><span class="bp">self</span></span><span class="return-annotation">):</span></span>
<label class="view-source-button" for="Obs.arcsin-view-source"><span>View Source</span></label>
</div>
<a class="headerlink" href="#Obs.arcsin"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="Obs.arcsin-892"><a href="#Obs.arcsin-892"><span class="linenos">892</span></a> <span class="k">def</span> <span class="nf">arcsin</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
</span><span id="Obs.arcsin-893"><a href="#Obs.arcsin-893"><span class="linenos">893</span></a> <span class="k">return</span> <span class="n">derived_observable</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span><span class="p">:</span> <span class="n">anp</span><span class="o">.</span><span class="n">arcsin</span><span class="p">(</span><span class="n">x</span><span class="p">[</span><span class="mi">0</span><span class="p">]),</span> <span class="p">[</span><span class="bp">self</span><span class="p">])</span>
</span></pre></div>
</div>
<div id="Obs.arccos" class="classattr">
<input id="Obs.arccos-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<div class="attr function">
<span class="def">def</span>
<span class="name">arccos</span><span class="signature pdoc-code condensed">(<span class="param"><span class="bp">self</span></span><span class="return-annotation">):</span></span>
<label class="view-source-button" for="Obs.arccos-view-source"><span>View Source</span></label>
</div>
<a class="headerlink" href="#Obs.arccos"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="Obs.arccos-895"><a href="#Obs.arccos-895"><span class="linenos">895</span></a> <span class="k">def</span> <span class="nf">arccos</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
</span><span id="Obs.arccos-896"><a href="#Obs.arccos-896"><span class="linenos">896</span></a> <span class="k">return</span> <span class="n">derived_observable</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span><span class="p">:</span> <span class="n">anp</span><span class="o">.</span><span class="n">arccos</span><span class="p">(</span><span class="n">x</span><span class="p">[</span><span class="mi">0</span><span class="p">]),</span> <span class="p">[</span><span class="bp">self</span><span class="p">])</span>
</span></pre></div>
</div>
<div id="Obs.arctan" class="classattr">
<input id="Obs.arctan-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<div class="attr function">
<span class="def">def</span>
<span class="name">arctan</span><span class="signature pdoc-code condensed">(<span class="param"><span class="bp">self</span></span><span class="return-annotation">):</span></span>
<label class="view-source-button" for="Obs.arctan-view-source"><span>View Source</span></label>
</div>
<a class="headerlink" href="#Obs.arctan"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="Obs.arctan-898"><a href="#Obs.arctan-898"><span class="linenos">898</span></a> <span class="k">def</span> <span class="nf">arctan</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
</span><span id="Obs.arctan-899"><a href="#Obs.arctan-899"><span class="linenos">899</span></a> <span class="k">return</span> <span class="n">derived_observable</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span><span class="p">:</span> <span class="n">anp</span><span class="o">.</span><span class="n">arctan</span><span class="p">(</span><span class="n">x</span><span class="p">[</span><span class="mi">0</span><span class="p">]),</span> <span class="p">[</span><span class="bp">self</span><span class="p">])</span>
</span></pre></div>
</div>
<div id="Obs.sinh" class="classattr">
<input id="Obs.sinh-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<div class="attr function">
<span class="def">def</span>
<span class="name">sinh</span><span class="signature pdoc-code condensed">(<span class="param"><span class="bp">self</span></span><span class="return-annotation">):</span></span>
<label class="view-source-button" for="Obs.sinh-view-source"><span>View Source</span></label>
</div>
<a class="headerlink" href="#Obs.sinh"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="Obs.sinh-901"><a href="#Obs.sinh-901"><span class="linenos">901</span></a> <span class="k">def</span> <span class="nf">sinh</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
</span><span id="Obs.sinh-902"><a href="#Obs.sinh-902"><span class="linenos">902</span></a> <span class="k">return</span> <span class="n">derived_observable</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">:</span> <span class="n">np</span><span class="o">.</span><span class="n">sinh</span><span class="p">(</span><span class="n">x</span><span class="p">[</span><span class="mi">0</span><span class="p">]),</span> <span class="p">[</span><span class="bp">self</span><span class="p">],</span> <span class="n">man_grad</span><span class="o">=</span><span class="p">[</span><span class="n">np</span><span class="o">.</span><span class="n">cosh</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">value</span><span class="p">)])</span>
</span></pre></div>
</div>
<div id="Obs.cosh" class="classattr">
<input id="Obs.cosh-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<div class="attr function">
<span class="def">def</span>
<span class="name">cosh</span><span class="signature pdoc-code condensed">(<span class="param"><span class="bp">self</span></span><span class="return-annotation">):</span></span>
<label class="view-source-button" for="Obs.cosh-view-source"><span>View Source</span></label>
</div>
<a class="headerlink" href="#Obs.cosh"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="Obs.cosh-904"><a href="#Obs.cosh-904"><span class="linenos">904</span></a> <span class="k">def</span> <span class="nf">cosh</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
</span><span id="Obs.cosh-905"><a href="#Obs.cosh-905"><span class="linenos">905</span></a> <span class="k">return</span> <span class="n">derived_observable</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">:</span> <span class="n">np</span><span class="o">.</span><span class="n">cosh</span><span class="p">(</span><span class="n">x</span><span class="p">[</span><span class="mi">0</span><span class="p">]),</span> <span class="p">[</span><span class="bp">self</span><span class="p">],</span> <span class="n">man_grad</span><span class="o">=</span><span class="p">[</span><span class="n">np</span><span class="o">.</span><span class="n">sinh</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">value</span><span class="p">)])</span>
</span></pre></div>
</div>
<div id="Obs.tanh" class="classattr">
<input id="Obs.tanh-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<div class="attr function">
<span class="def">def</span>
<span class="name">tanh</span><span class="signature pdoc-code condensed">(<span class="param"><span class="bp">self</span></span><span class="return-annotation">):</span></span>
<label class="view-source-button" for="Obs.tanh-view-source"><span>View Source</span></label>
</div>
<a class="headerlink" href="#Obs.tanh"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="Obs.tanh-907"><a href="#Obs.tanh-907"><span class="linenos">907</span></a> <span class="k">def</span> <span class="nf">tanh</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
</span><span id="Obs.tanh-908"><a href="#Obs.tanh-908"><span class="linenos">908</span></a> <span class="k">return</span> <span class="n">derived_observable</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">:</span> <span class="n">np</span><span class="o">.</span><span class="n">tanh</span><span class="p">(</span><span class="n">x</span><span class="p">[</span><span class="mi">0</span><span class="p">]),</span> <span class="p">[</span><span class="bp">self</span><span class="p">],</span> <span class="n">man_grad</span><span class="o">=</span><span class="p">[</span><span class="mi">1</span> <span class="o">/</span> <span class="n">np</span><span class="o">.</span><span class="n">cosh</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">value</span><span class="p">)</span> <span class="o">**</span> <span class="mi">2</span><span class="p">])</span>
</span></pre></div>
</div>
<div id="Obs.arcsinh" class="classattr">
<input id="Obs.arcsinh-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<div class="attr function">
<span class="def">def</span>
<span class="name">arcsinh</span><span class="signature pdoc-code condensed">(<span class="param"><span class="bp">self</span></span><span class="return-annotation">):</span></span>
<label class="view-source-button" for="Obs.arcsinh-view-source"><span>View Source</span></label>
</div>
<a class="headerlink" href="#Obs.arcsinh"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="Obs.arcsinh-910"><a href="#Obs.arcsinh-910"><span class="linenos">910</span></a> <span class="k">def</span> <span class="nf">arcsinh</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
</span><span id="Obs.arcsinh-911"><a href="#Obs.arcsinh-911"><span class="linenos">911</span></a> <span class="k">return</span> <span class="n">derived_observable</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span><span class="p">:</span> <span class="n">anp</span><span class="o">.</span><span class="n">arcsinh</span><span class="p">(</span><span class="n">x</span><span class="p">[</span><span class="mi">0</span><span class="p">]),</span> <span class="p">[</span><span class="bp">self</span><span class="p">])</span>
</span></pre></div>
</div>
<div id="Obs.arccosh" class="classattr">
<input id="Obs.arccosh-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<div class="attr function">
<span class="def">def</span>
<span class="name">arccosh</span><span class="signature pdoc-code condensed">(<span class="param"><span class="bp">self</span></span><span class="return-annotation">):</span></span>
<label class="view-source-button" for="Obs.arccosh-view-source"><span>View Source</span></label>
</div>
<a class="headerlink" href="#Obs.arccosh"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="Obs.arccosh-913"><a href="#Obs.arccosh-913"><span class="linenos">913</span></a> <span class="k">def</span> <span class="nf">arccosh</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
</span><span id="Obs.arccosh-914"><a href="#Obs.arccosh-914"><span class="linenos">914</span></a> <span class="k">return</span> <span class="n">derived_observable</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span><span class="p">:</span> <span class="n">anp</span><span class="o">.</span><span class="n">arccosh</span><span class="p">(</span><span class="n">x</span><span class="p">[</span><span class="mi">0</span><span class="p">]),</span> <span class="p">[</span><span class="bp">self</span><span class="p">])</span>
</span></pre></div>
</div>
<div id="Obs.arctanh" class="classattr">
<input id="Obs.arctanh-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<div class="attr function">
<span class="def">def</span>
<span class="name">arctanh</span><span class="signature pdoc-code condensed">(<span class="param"><span class="bp">self</span></span><span class="return-annotation">):</span></span>
<label class="view-source-button" for="Obs.arctanh-view-source"><span>View Source</span></label>
</div>
<a class="headerlink" href="#Obs.arctanh"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="Obs.arctanh-916"><a href="#Obs.arctanh-916"><span class="linenos">916</span></a> <span class="k">def</span> <span class="nf">arctanh</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
</span><span id="Obs.arctanh-917"><a href="#Obs.arctanh-917"><span class="linenos">917</span></a> <span class="k">return</span> <span class="n">derived_observable</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span><span class="p">:</span> <span class="n">anp</span><span class="o">.</span><span class="n">arctanh</span><span class="p">(</span><span class="n">x</span><span class="p">[</span><span class="mi">0</span><span class="p">]),</span> <span class="p">[</span><span class="bp">self</span><span class="p">])</span>
</span></pre></div>
</div>
<div id="Obs.N_sigma" class="classattr">
<div class="attr variable">
<span class="name">N_sigma</span>
</div>
<a class="headerlink" href="#Obs.N_sigma"></a>
</div>
<div id="Obs.S" class="classattr">
<div class="attr variable">
<span class="name">S</span>
</div>
<a class="headerlink" href="#Obs.S"></a>
</div>
<div id="Obs.e_ddvalue" class="classattr">
<div class="attr variable">
<span class="name">e_ddvalue</span>
</div>
<a class="headerlink" href="#Obs.e_ddvalue"></a>
</div>
<div id="Obs.e_drho" class="classattr">
<div class="attr variable">
<span class="name">e_drho</span>
</div>
<a class="headerlink" href="#Obs.e_drho"></a>
</div>
<div id="Obs.e_dtauint" class="classattr">
<div class="attr variable">
<span class="name">e_dtauint</span>
</div>
<a class="headerlink" href="#Obs.e_dtauint"></a>
</div>
<div id="Obs.e_dvalue" class="classattr">
<div class="attr variable">
<span class="name">e_dvalue</span>
</div>
<a class="headerlink" href="#Obs.e_dvalue"></a>
</div>
<div id="Obs.e_n_dtauint" class="classattr">
<div class="attr variable">
<span class="name">e_n_dtauint</span>
</div>
<a class="headerlink" href="#Obs.e_n_dtauint"></a>
</div>
<div id="Obs.e_n_tauint" class="classattr">
<div class="attr variable">
<span class="name">e_n_tauint</span>
</div>
<a class="headerlink" href="#Obs.e_n_tauint"></a>
</div>
<div id="Obs.e_rho" class="classattr">
<div class="attr variable">
<span class="name">e_rho</span>
</div>
<a class="headerlink" href="#Obs.e_rho"></a>
</div>
<div id="Obs.e_tauint" class="classattr">
<div class="attr variable">
<span class="name">e_tauint</span>
</div>
<a class="headerlink" href="#Obs.e_tauint"></a>
</div>
<div id="Obs.e_windowsize" class="classattr">
<div class="attr variable">
<span class="name">e_windowsize</span>
</div>
<a class="headerlink" href="#Obs.e_windowsize"></a>
</div>
<div id="Obs.tau_exp" class="classattr">
<div class="attr variable">
<span class="name">tau_exp</span>
</div>
<a class="headerlink" href="#Obs.tau_exp"></a>
</div>
</section>
<section id="CObs">
<input id="CObs-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<div class="attr class">
<span class="def">class</span>
<span class="name">CObs</span>:
<label class="view-source-button" for="CObs-view-source"><span>View Source</span></label>
</div>
<a class="headerlink" href="#CObs"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="CObs-920"><a href="#CObs-920"><span class="linenos"> 920</span></a><span class="k">class</span> <span class="nc">CObs</span><span class="p">:</span>
</span><span id="CObs-921"><a href="#CObs-921"><span class="linenos"> 921</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Class for a complex valued observable.&quot;&quot;&quot;</span>
</span><span id="CObs-922"><a href="#CObs-922"><span class="linenos"> 922</span></a> <span class="vm">__slots__</span> <span class="o">=</span> <span class="p">[</span><span class="s1">&#39;_real&#39;</span><span class="p">,</span> <span class="s1">&#39;_imag&#39;</span><span class="p">,</span> <span class="s1">&#39;tag&#39;</span><span class="p">]</span>
</span><span id="CObs-923"><a href="#CObs-923"><span class="linenos"> 923</span></a>
</span><span id="CObs-924"><a href="#CObs-924"><span class="linenos"> 924</span></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">real</span><span class="p">,</span> <span class="n">imag</span><span class="o">=</span><span class="mf">0.0</span><span class="p">):</span>
</span><span id="CObs-925"><a href="#CObs-925"><span class="linenos"> 925</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_real</span> <span class="o">=</span> <span class="n">real</span>
</span><span id="CObs-926"><a href="#CObs-926"><span class="linenos"> 926</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_imag</span> <span class="o">=</span> <span class="n">imag</span>
</span><span id="CObs-927"><a href="#CObs-927"><span class="linenos"> 927</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">tag</span> <span class="o">=</span> <span class="kc">None</span>
</span><span id="CObs-928"><a href="#CObs-928"><span class="linenos"> 928</span></a>
</span><span id="CObs-929"><a href="#CObs-929"><span class="linenos"> 929</span></a> <span class="nd">@property</span>
</span><span id="CObs-930"><a href="#CObs-930"><span class="linenos"> 930</span></a> <span class="k">def</span> <span class="nf">real</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
</span><span id="CObs-931"><a href="#CObs-931"><span class="linenos"> 931</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_real</span>
</span><span id="CObs-932"><a href="#CObs-932"><span class="linenos"> 932</span></a>
</span><span id="CObs-933"><a href="#CObs-933"><span class="linenos"> 933</span></a> <span class="nd">@property</span>
</span><span id="CObs-934"><a href="#CObs-934"><span class="linenos"> 934</span></a> <span class="k">def</span> <span class="nf">imag</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
</span><span id="CObs-935"><a href="#CObs-935"><span class="linenos"> 935</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_imag</span>
</span><span id="CObs-936"><a href="#CObs-936"><span class="linenos"> 936</span></a>
</span><span id="CObs-937"><a href="#CObs-937"><span class="linenos"> 937</span></a> <span class="k">def</span> <span class="nf">gamma_method</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
</span><span id="CObs-938"><a href="#CObs-938"><span class="linenos"> 938</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Executes the gamma_method for the real and the imaginary part.&quot;&quot;&quot;</span>
</span><span id="CObs-939"><a href="#CObs-939"><span class="linenos"> 939</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">real</span><span class="p">,</span> <span class="n">Obs</span><span class="p">):</span>
</span><span id="CObs-940"><a href="#CObs-940"><span class="linenos"> 940</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">real</span><span class="o">.</span><span class="n">gamma_method</span><span class="p">(</span><span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
</span><span id="CObs-941"><a href="#CObs-941"><span class="linenos"> 941</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">imag</span><span class="p">,</span> <span class="n">Obs</span><span class="p">):</span>
</span><span id="CObs-942"><a href="#CObs-942"><span class="linenos"> 942</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">imag</span><span class="o">.</span><span class="n">gamma_method</span><span class="p">(</span><span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
</span><span id="CObs-943"><a href="#CObs-943"><span class="linenos"> 943</span></a>
</span><span id="CObs-944"><a href="#CObs-944"><span class="linenos"> 944</span></a> <span class="k">def</span> <span class="nf">is_zero</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
</span><span id="CObs-945"><a href="#CObs-945"><span class="linenos"> 945</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Checks whether both real and imaginary part are zero within machine precision.&quot;&quot;&quot;</span>
</span><span id="CObs-946"><a href="#CObs-946"><span class="linenos"> 946</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">real</span> <span class="o">==</span> <span class="mf">0.0</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">imag</span> <span class="o">==</span> <span class="mf">0.0</span>
</span><span id="CObs-947"><a href="#CObs-947"><span class="linenos"> 947</span></a>
</span><span id="CObs-948"><a href="#CObs-948"><span class="linenos"> 948</span></a> <span class="k">def</span> <span class="nf">conjugate</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
</span><span id="CObs-949"><a href="#CObs-949"><span class="linenos"> 949</span></a> <span class="k">return</span> <span class="n">CObs</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">real</span><span class="p">,</span> <span class="o">-</span><span class="bp">self</span><span class="o">.</span><span class="n">imag</span><span class="p">)</span>
</span><span id="CObs-950"><a href="#CObs-950"><span class="linenos"> 950</span></a>
</span><span id="CObs-951"><a href="#CObs-951"><span class="linenos"> 951</span></a> <span class="k">def</span> <span class="fm">__add__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">):</span>
</span><span id="CObs-952"><a href="#CObs-952"><span class="linenos"> 952</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">other</span><span class="p">,</span> <span class="n">np</span><span class="o">.</span><span class="n">ndarray</span><span class="p">):</span>
</span><span id="CObs-953"><a href="#CObs-953"><span class="linenos"> 953</span></a> <span class="k">return</span> <span class="n">other</span> <span class="o">+</span> <span class="bp">self</span>
</span><span id="CObs-954"><a href="#CObs-954"><span class="linenos"> 954</span></a> <span class="k">elif</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">other</span><span class="p">,</span> <span class="s1">&#39;real&#39;</span><span class="p">)</span> <span class="ow">and</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">other</span><span class="p">,</span> <span class="s1">&#39;imag&#39;</span><span class="p">):</span>
</span><span id="CObs-955"><a href="#CObs-955"><span class="linenos"> 955</span></a> <span class="k">return</span> <span class="n">CObs</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">real</span> <span class="o">+</span> <span class="n">other</span><span class="o">.</span><span class="n">real</span><span class="p">,</span>
</span><span id="CObs-956"><a href="#CObs-956"><span class="linenos"> 956</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">imag</span> <span class="o">+</span> <span class="n">other</span><span class="o">.</span><span class="n">imag</span><span class="p">)</span>
</span><span id="CObs-957"><a href="#CObs-957"><span class="linenos"> 957</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="CObs-958"><a href="#CObs-958"><span class="linenos"> 958</span></a> <span class="k">return</span> <span class="n">CObs</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">real</span> <span class="o">+</span> <span class="n">other</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">imag</span><span class="p">)</span>
</span><span id="CObs-959"><a href="#CObs-959"><span class="linenos"> 959</span></a>
</span><span id="CObs-960"><a href="#CObs-960"><span class="linenos"> 960</span></a> <span class="k">def</span> <span class="fm">__radd__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">y</span><span class="p">):</span>
</span><span id="CObs-961"><a href="#CObs-961"><span class="linenos"> 961</span></a> <span class="k">return</span> <span class="bp">self</span> <span class="o">+</span> <span class="n">y</span>
</span><span id="CObs-962"><a href="#CObs-962"><span class="linenos"> 962</span></a>
</span><span id="CObs-963"><a href="#CObs-963"><span class="linenos"> 963</span></a> <span class="k">def</span> <span class="fm">__sub__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">):</span>
</span><span id="CObs-964"><a href="#CObs-964"><span class="linenos"> 964</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">other</span><span class="p">,</span> <span class="n">np</span><span class="o">.</span><span class="n">ndarray</span><span class="p">):</span>
</span><span id="CObs-965"><a href="#CObs-965"><span class="linenos"> 965</span></a> <span class="k">return</span> <span class="o">-</span><span class="mi">1</span> <span class="o">*</span> <span class="p">(</span><span class="n">other</span> <span class="o">-</span> <span class="bp">self</span><span class="p">)</span>
</span><span id="CObs-966"><a href="#CObs-966"><span class="linenos"> 966</span></a> <span class="k">elif</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">other</span><span class="p">,</span> <span class="s1">&#39;real&#39;</span><span class="p">)</span> <span class="ow">and</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">other</span><span class="p">,</span> <span class="s1">&#39;imag&#39;</span><span class="p">):</span>
</span><span id="CObs-967"><a href="#CObs-967"><span class="linenos"> 967</span></a> <span class="k">return</span> <span class="n">CObs</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">real</span> <span class="o">-</span> <span class="n">other</span><span class="o">.</span><span class="n">real</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">imag</span> <span class="o">-</span> <span class="n">other</span><span class="o">.</span><span class="n">imag</span><span class="p">)</span>
</span><span id="CObs-968"><a href="#CObs-968"><span class="linenos"> 968</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="CObs-969"><a href="#CObs-969"><span class="linenos"> 969</span></a> <span class="k">return</span> <span class="n">CObs</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">real</span> <span class="o">-</span> <span class="n">other</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">imag</span><span class="p">)</span>
</span><span id="CObs-970"><a href="#CObs-970"><span class="linenos"> 970</span></a>
</span><span id="CObs-971"><a href="#CObs-971"><span class="linenos"> 971</span></a> <span class="k">def</span> <span class="fm">__rsub__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">):</span>
</span><span id="CObs-972"><a href="#CObs-972"><span class="linenos"> 972</span></a> <span class="k">return</span> <span class="o">-</span><span class="mi">1</span> <span class="o">*</span> <span class="p">(</span><span class="bp">self</span> <span class="o">-</span> <span class="n">other</span><span class="p">)</span>
</span><span id="CObs-973"><a href="#CObs-973"><span class="linenos"> 973</span></a>
</span><span id="CObs-974"><a href="#CObs-974"><span class="linenos"> 974</span></a> <span class="k">def</span> <span class="fm">__mul__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">):</span>
</span><span id="CObs-975"><a href="#CObs-975"><span class="linenos"> 975</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">other</span><span class="p">,</span> <span class="n">np</span><span class="o">.</span><span class="n">ndarray</span><span class="p">):</span>
</span><span id="CObs-976"><a href="#CObs-976"><span class="linenos"> 976</span></a> <span class="k">return</span> <span class="n">other</span> <span class="o">*</span> <span class="bp">self</span>
</span><span id="CObs-977"><a href="#CObs-977"><span class="linenos"> 977</span></a> <span class="k">elif</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">other</span><span class="p">,</span> <span class="s1">&#39;real&#39;</span><span class="p">)</span> <span class="ow">and</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">other</span><span class="p">,</span> <span class="s1">&#39;imag&#39;</span><span class="p">):</span>
</span><span id="CObs-978"><a href="#CObs-978"><span class="linenos"> 978</span></a> <span class="k">if</span> <span class="nb">all</span><span class="p">(</span><span class="nb">isinstance</span><span class="p">(</span><span class="n">i</span><span class="p">,</span> <span class="n">Obs</span><span class="p">)</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">real</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">imag</span><span class="p">,</span> <span class="n">other</span><span class="o">.</span><span class="n">real</span><span class="p">,</span> <span class="n">other</span><span class="o">.</span><span class="n">imag</span><span class="p">]):</span>
</span><span id="CObs-979"><a href="#CObs-979"><span class="linenos"> 979</span></a> <span class="k">return</span> <span class="n">CObs</span><span class="p">(</span><span class="n">derived_observable</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">:</span> <span class="n">x</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">*</span> <span class="n">x</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">-</span> <span class="n">x</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="o">*</span> <span class="n">x</span><span class="p">[</span><span class="mi">3</span><span class="p">],</span>
</span><span id="CObs-980"><a href="#CObs-980"><span class="linenos"> 980</span></a> <span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">real</span><span class="p">,</span> <span class="n">other</span><span class="o">.</span><span class="n">real</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">imag</span><span class="p">,</span> <span class="n">other</span><span class="o">.</span><span class="n">imag</span><span class="p">],</span>
</span><span id="CObs-981"><a href="#CObs-981"><span class="linenos"> 981</span></a> <span class="n">man_grad</span><span class="o">=</span><span class="p">[</span><span class="n">other</span><span class="o">.</span><span class="n">real</span><span class="o">.</span><span class="n">value</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">real</span><span class="o">.</span><span class="n">value</span><span class="p">,</span> <span class="o">-</span><span class="n">other</span><span class="o">.</span><span class="n">imag</span><span class="o">.</span><span class="n">value</span><span class="p">,</span> <span class="o">-</span><span class="bp">self</span><span class="o">.</span><span class="n">imag</span><span class="o">.</span><span class="n">value</span><span class="p">]),</span>
</span><span id="CObs-982"><a href="#CObs-982"><span class="linenos"> 982</span></a> <span class="n">derived_observable</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">:</span> <span class="n">x</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="o">*</span> <span class="n">x</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">+</span> <span class="n">x</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">*</span> <span class="n">x</span><span class="p">[</span><span class="mi">3</span><span class="p">],</span>
</span><span id="CObs-983"><a href="#CObs-983"><span class="linenos"> 983</span></a> <span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">real</span><span class="p">,</span> <span class="n">other</span><span class="o">.</span><span class="n">real</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">imag</span><span class="p">,</span> <span class="n">other</span><span class="o">.</span><span class="n">imag</span><span class="p">],</span>
</span><span id="CObs-984"><a href="#CObs-984"><span class="linenos"> 984</span></a> <span class="n">man_grad</span><span class="o">=</span><span class="p">[</span><span class="n">other</span><span class="o">.</span><span class="n">imag</span><span class="o">.</span><span class="n">value</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">imag</span><span class="o">.</span><span class="n">value</span><span class="p">,</span> <span class="n">other</span><span class="o">.</span><span class="n">real</span><span class="o">.</span><span class="n">value</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">real</span><span class="o">.</span><span class="n">value</span><span class="p">]))</span>
</span><span id="CObs-985"><a href="#CObs-985"><span class="linenos"> 985</span></a> <span class="k">elif</span> <span class="nb">getattr</span><span class="p">(</span><span class="n">other</span><span class="p">,</span> <span class="s1">&#39;imag&#39;</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">:</span>
</span><span id="CObs-986"><a href="#CObs-986"><span class="linenos"> 986</span></a> <span class="k">return</span> <span class="n">CObs</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">real</span> <span class="o">*</span> <span class="n">other</span><span class="o">.</span><span class="n">real</span> <span class="o">-</span> <span class="bp">self</span><span class="o">.</span><span class="n">imag</span> <span class="o">*</span> <span class="n">other</span><span class="o">.</span><span class="n">imag</span><span class="p">,</span>
</span><span id="CObs-987"><a href="#CObs-987"><span class="linenos"> 987</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">imag</span> <span class="o">*</span> <span class="n">other</span><span class="o">.</span><span class="n">real</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">real</span> <span class="o">*</span> <span class="n">other</span><span class="o">.</span><span class="n">imag</span><span class="p">)</span>
</span><span id="CObs-988"><a href="#CObs-988"><span class="linenos"> 988</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="CObs-989"><a href="#CObs-989"><span class="linenos"> 989</span></a> <span class="k">return</span> <span class="n">CObs</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">real</span> <span class="o">*</span> <span class="n">other</span><span class="o">.</span><span class="n">real</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">imag</span> <span class="o">*</span> <span class="n">other</span><span class="o">.</span><span class="n">real</span><span class="p">)</span>
</span><span id="CObs-990"><a href="#CObs-990"><span class="linenos"> 990</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="CObs-991"><a href="#CObs-991"><span class="linenos"> 991</span></a> <span class="k">return</span> <span class="n">CObs</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">real</span> <span class="o">*</span> <span class="n">other</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">imag</span> <span class="o">*</span> <span class="n">other</span><span class="p">)</span>
</span><span id="CObs-992"><a href="#CObs-992"><span class="linenos"> 992</span></a>
</span><span id="CObs-993"><a href="#CObs-993"><span class="linenos"> 993</span></a> <span class="k">def</span> <span class="fm">__rmul__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">):</span>
</span><span id="CObs-994"><a href="#CObs-994"><span class="linenos"> 994</span></a> <span class="k">return</span> <span class="bp">self</span> <span class="o">*</span> <span class="n">other</span>
</span><span id="CObs-995"><a href="#CObs-995"><span class="linenos"> 995</span></a>
</span><span id="CObs-996"><a href="#CObs-996"><span class="linenos"> 996</span></a> <span class="k">def</span> <span class="fm">__truediv__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">):</span>
</span><span id="CObs-997"><a href="#CObs-997"><span class="linenos"> 997</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">other</span><span class="p">,</span> <span class="n">np</span><span class="o">.</span><span class="n">ndarray</span><span class="p">):</span>
</span><span id="CObs-998"><a href="#CObs-998"><span class="linenos"> 998</span></a> <span class="k">return</span> <span class="mi">1</span> <span class="o">/</span> <span class="p">(</span><span class="n">other</span> <span class="o">/</span> <span class="bp">self</span><span class="p">)</span>
</span><span id="CObs-999"><a href="#CObs-999"><span class="linenos"> 999</span></a> <span class="k">elif</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">other</span><span class="p">,</span> <span class="s1">&#39;real&#39;</span><span class="p">)</span> <span class="ow">and</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">other</span><span class="p">,</span> <span class="s1">&#39;imag&#39;</span><span class="p">):</span>
</span><span id="CObs-1000"><a href="#CObs-1000"><span class="linenos">1000</span></a> <span class="n">r</span> <span class="o">=</span> <span class="n">other</span><span class="o">.</span><span class="n">real</span> <span class="o">**</span> <span class="mi">2</span> <span class="o">+</span> <span class="n">other</span><span class="o">.</span><span class="n">imag</span> <span class="o">**</span> <span class="mi">2</span>
</span><span id="CObs-1001"><a href="#CObs-1001"><span class="linenos">1001</span></a> <span class="k">return</span> <span class="n">CObs</span><span class="p">((</span><span class="bp">self</span><span class="o">.</span><span class="n">real</span> <span class="o">*</span> <span class="n">other</span><span class="o">.</span><span class="n">real</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">imag</span> <span class="o">*</span> <span class="n">other</span><span class="o">.</span><span class="n">imag</span><span class="p">)</span> <span class="o">/</span> <span class="n">r</span><span class="p">,</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">imag</span> <span class="o">*</span> <span class="n">other</span><span class="o">.</span><span class="n">real</span> <span class="o">-</span> <span class="bp">self</span><span class="o">.</span><span class="n">real</span> <span class="o">*</span> <span class="n">other</span><span class="o">.</span><span class="n">imag</span><span class="p">)</span> <span class="o">/</span> <span class="n">r</span><span class="p">)</span>
</span><span id="CObs-1002"><a href="#CObs-1002"><span class="linenos">1002</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="CObs-1003"><a href="#CObs-1003"><span class="linenos">1003</span></a> <span class="k">return</span> <span class="n">CObs</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">real</span> <span class="o">/</span> <span class="n">other</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">imag</span> <span class="o">/</span> <span class="n">other</span><span class="p">)</span>
</span><span id="CObs-1004"><a href="#CObs-1004"><span class="linenos">1004</span></a>
</span><span id="CObs-1005"><a href="#CObs-1005"><span class="linenos">1005</span></a> <span class="k">def</span> <span class="fm">__rtruediv__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">):</span>
</span><span id="CObs-1006"><a href="#CObs-1006"><span class="linenos">1006</span></a> <span class="n">r</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">real</span> <span class="o">**</span> <span class="mi">2</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">imag</span> <span class="o">**</span> <span class="mi">2</span>
</span><span id="CObs-1007"><a href="#CObs-1007"><span class="linenos">1007</span></a> <span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">other</span><span class="p">,</span> <span class="s1">&#39;real&#39;</span><span class="p">)</span> <span class="ow">and</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">other</span><span class="p">,</span> <span class="s1">&#39;imag&#39;</span><span class="p">):</span>
</span><span id="CObs-1008"><a href="#CObs-1008"><span class="linenos">1008</span></a> <span class="k">return</span> <span class="n">CObs</span><span class="p">((</span><span class="bp">self</span><span class="o">.</span><span class="n">real</span> <span class="o">*</span> <span class="n">other</span><span class="o">.</span><span class="n">real</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">imag</span> <span class="o">*</span> <span class="n">other</span><span class="o">.</span><span class="n">imag</span><span class="p">)</span> <span class="o">/</span> <span class="n">r</span><span class="p">,</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">real</span> <span class="o">*</span> <span class="n">other</span><span class="o">.</span><span class="n">imag</span> <span class="o">-</span> <span class="bp">self</span><span class="o">.</span><span class="n">imag</span> <span class="o">*</span> <span class="n">other</span><span class="o">.</span><span class="n">real</span><span class="p">)</span> <span class="o">/</span> <span class="n">r</span><span class="p">)</span>
</span><span id="CObs-1009"><a href="#CObs-1009"><span class="linenos">1009</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="CObs-1010"><a href="#CObs-1010"><span class="linenos">1010</span></a> <span class="k">return</span> <span class="n">CObs</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">real</span> <span class="o">*</span> <span class="n">other</span> <span class="o">/</span> <span class="n">r</span><span class="p">,</span> <span class="o">-</span><span class="bp">self</span><span class="o">.</span><span class="n">imag</span> <span class="o">*</span> <span class="n">other</span> <span class="o">/</span> <span class="n">r</span><span class="p">)</span>
</span><span id="CObs-1011"><a href="#CObs-1011"><span class="linenos">1011</span></a>
</span><span id="CObs-1012"><a href="#CObs-1012"><span class="linenos">1012</span></a> <span class="k">def</span> <span class="fm">__abs__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
</span><span id="CObs-1013"><a href="#CObs-1013"><span class="linenos">1013</span></a> <span class="k">return</span> <span class="n">np</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">real</span><span class="o">**</span><span class="mi">2</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">imag</span><span class="o">**</span><span class="mi">2</span><span class="p">)</span>
</span><span id="CObs-1014"><a href="#CObs-1014"><span class="linenos">1014</span></a>
</span><span id="CObs-1015"><a href="#CObs-1015"><span class="linenos">1015</span></a> <span class="k">def</span> <span class="fm">__pos__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
</span><span id="CObs-1016"><a href="#CObs-1016"><span class="linenos">1016</span></a> <span class="k">return</span> <span class="bp">self</span>
</span><span id="CObs-1017"><a href="#CObs-1017"><span class="linenos">1017</span></a>
</span><span id="CObs-1018"><a href="#CObs-1018"><span class="linenos">1018</span></a> <span class="k">def</span> <span class="fm">__neg__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
</span><span id="CObs-1019"><a href="#CObs-1019"><span class="linenos">1019</span></a> <span class="k">return</span> <span class="o">-</span><span class="mi">1</span> <span class="o">*</span> <span class="bp">self</span>
</span><span id="CObs-1020"><a href="#CObs-1020"><span class="linenos">1020</span></a>
</span><span id="CObs-1021"><a href="#CObs-1021"><span class="linenos">1021</span></a> <span class="k">def</span> <span class="fm">__eq__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">):</span>
</span><span id="CObs-1022"><a href="#CObs-1022"><span class="linenos">1022</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">real</span> <span class="o">==</span> <span class="n">other</span><span class="o">.</span><span class="n">real</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">imag</span> <span class="o">==</span> <span class="n">other</span><span class="o">.</span><span class="n">imag</span>
</span><span id="CObs-1023"><a href="#CObs-1023"><span class="linenos">1023</span></a>
</span><span id="CObs-1024"><a href="#CObs-1024"><span class="linenos">1024</span></a> <span class="k">def</span> <span class="fm">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
</span><span id="CObs-1025"><a href="#CObs-1025"><span class="linenos">1025</span></a> <span class="k">return</span> <span class="s1">&#39;(&#39;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">real</span><span class="p">)</span> <span class="o">+</span> <span class="nb">int</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">imag</span> <span class="o">&gt;=</span> <span class="mf">0.0</span><span class="p">)</span> <span class="o">*</span> <span class="s1">&#39;+&#39;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">imag</span><span class="p">)</span> <span class="o">+</span> <span class="s1">&#39;j)&#39;</span>
</span><span id="CObs-1026"><a href="#CObs-1026"><span class="linenos">1026</span></a>
</span><span id="CObs-1027"><a href="#CObs-1027"><span class="linenos">1027</span></a> <span class="k">def</span> <span class="fm">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
</span><span id="CObs-1028"><a href="#CObs-1028"><span class="linenos">1028</span></a> <span class="k">return</span> <span class="s1">&#39;CObs[&#39;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">+</span> <span class="s1">&#39;]&#39;</span>
</span><span id="CObs-1029"><a href="#CObs-1029"><span class="linenos">1029</span></a>
</span><span id="CObs-1030"><a href="#CObs-1030"><span class="linenos">1030</span></a> <span class="k">def</span> <span class="fm">__format__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">format_type</span><span class="p">):</span>
</span><span id="CObs-1031"><a href="#CObs-1031"><span class="linenos">1031</span></a> <span class="k">if</span> <span class="n">format_type</span> <span class="o">==</span> <span class="s2">&quot;&quot;</span><span class="p">:</span>
</span><span id="CObs-1032"><a href="#CObs-1032"><span class="linenos">1032</span></a> <span class="n">significance</span> <span class="o">=</span> <span class="mi">2</span>
</span><span id="CObs-1033"><a href="#CObs-1033"><span class="linenos">1033</span></a> <span class="n">format_type</span> <span class="o">=</span> <span class="s2">&quot;2&quot;</span>
</span><span id="CObs-1034"><a href="#CObs-1034"><span class="linenos">1034</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="CObs-1035"><a href="#CObs-1035"><span class="linenos">1035</span></a> <span class="n">significance</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="nb">float</span><span class="p">(</span><span class="n">format_type</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s2">&quot;+&quot;</span><span class="p">,</span> <span class="s2">&quot;&quot;</span><span class="p">)</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s2">&quot;-&quot;</span><span class="p">,</span> <span class="s2">&quot;&quot;</span><span class="p">)))</span>
</span><span id="CObs-1036"><a href="#CObs-1036"><span class="linenos">1036</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">&quot;(</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">real</span><span class="si">:{</span><span class="n">format_type</span><span class="si">}}{</span><span class="bp">self</span><span class="o">.</span><span class="n">imag</span><span class="si">:</span><span class="s2">+</span><span class="si">{</span><span class="n">significance</span><span class="si">}}</span><span class="s2">j)&quot;</span>
</span></pre></div>
<div class="docstring"><p>Class for a complex valued observable.</p>
</div>
<div id="CObs.__init__" class="classattr">
<input id="CObs.__init__-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<div class="attr function">
<span class="name">CObs</span><span class="signature pdoc-code condensed">(<span class="param"><span class="n">real</span>, </span><span class="param"><span class="n">imag</span><span class="o">=</span><span class="mf">0.0</span></span>)</span>
<label class="view-source-button" for="CObs.__init__-view-source"><span>View Source</span></label>
</div>
<a class="headerlink" href="#CObs.__init__"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="CObs.__init__-924"><a href="#CObs.__init__-924"><span class="linenos">924</span></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">real</span><span class="p">,</span> <span class="n">imag</span><span class="o">=</span><span class="mf">0.0</span><span class="p">):</span>
</span><span id="CObs.__init__-925"><a href="#CObs.__init__-925"><span class="linenos">925</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_real</span> <span class="o">=</span> <span class="n">real</span>
</span><span id="CObs.__init__-926"><a href="#CObs.__init__-926"><span class="linenos">926</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_imag</span> <span class="o">=</span> <span class="n">imag</span>
</span><span id="CObs.__init__-927"><a href="#CObs.__init__-927"><span class="linenos">927</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">tag</span> <span class="o">=</span> <span class="kc">None</span>
</span></pre></div>
</div>
<div id="CObs.tag" class="classattr">
<div class="attr variable">
<span class="name">tag</span>
</div>
<a class="headerlink" href="#CObs.tag"></a>
</div>
<div id="CObs.real" class="classattr">
<input id="CObs.real-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<div class="attr variable">
<span class="name">real</span>
<label class="view-source-button" for="CObs.real-view-source"><span>View Source</span></label>
</div>
<a class="headerlink" href="#CObs.real"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="CObs.real-929"><a href="#CObs.real-929"><span class="linenos">929</span></a> <span class="nd">@property</span>
</span><span id="CObs.real-930"><a href="#CObs.real-930"><span class="linenos">930</span></a> <span class="k">def</span> <span class="nf">real</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
</span><span id="CObs.real-931"><a href="#CObs.real-931"><span class="linenos">931</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_real</span>
</span></pre></div>
</div>
<div id="CObs.imag" class="classattr">
<input id="CObs.imag-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<div class="attr variable">
<span class="name">imag</span>
<label class="view-source-button" for="CObs.imag-view-source"><span>View Source</span></label>
</div>
<a class="headerlink" href="#CObs.imag"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="CObs.imag-933"><a href="#CObs.imag-933"><span class="linenos">933</span></a> <span class="nd">@property</span>
</span><span id="CObs.imag-934"><a href="#CObs.imag-934"><span class="linenos">934</span></a> <span class="k">def</span> <span class="nf">imag</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
</span><span id="CObs.imag-935"><a href="#CObs.imag-935"><span class="linenos">935</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_imag</span>
</span></pre></div>
</div>
<div id="CObs.gamma_method" class="classattr">
<input id="CObs.gamma_method-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<div class="attr function">
<span class="def">def</span>
<span class="name">gamma_method</span><span class="signature pdoc-code condensed">(<span class="param"><span class="bp">self</span>, </span><span class="param"><span class="o">**</span><span class="n">kwargs</span></span><span class="return-annotation">):</span></span>
<label class="view-source-button" for="CObs.gamma_method-view-source"><span>View Source</span></label>
</div>
<a class="headerlink" href="#CObs.gamma_method"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="CObs.gamma_method-937"><a href="#CObs.gamma_method-937"><span class="linenos">937</span></a> <span class="k">def</span> <span class="nf">gamma_method</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
</span><span id="CObs.gamma_method-938"><a href="#CObs.gamma_method-938"><span class="linenos">938</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Executes the gamma_method for the real and the imaginary part.&quot;&quot;&quot;</span>
</span><span id="CObs.gamma_method-939"><a href="#CObs.gamma_method-939"><span class="linenos">939</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">real</span><span class="p">,</span> <span class="n">Obs</span><span class="p">):</span>
</span><span id="CObs.gamma_method-940"><a href="#CObs.gamma_method-940"><span class="linenos">940</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">real</span><span class="o">.</span><span class="n">gamma_method</span><span class="p">(</span><span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
</span><span id="CObs.gamma_method-941"><a href="#CObs.gamma_method-941"><span class="linenos">941</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">imag</span><span class="p">,</span> <span class="n">Obs</span><span class="p">):</span>
</span><span id="CObs.gamma_method-942"><a href="#CObs.gamma_method-942"><span class="linenos">942</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">imag</span><span class="o">.</span><span class="n">gamma_method</span><span class="p">(</span><span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
</span></pre></div>
<div class="docstring"><p>Executes the gamma_method for the real and the imaginary part.</p>
</div>
</div>
<div id="CObs.is_zero" class="classattr">
<input id="CObs.is_zero-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<div class="attr function">
<span class="def">def</span>
<span class="name">is_zero</span><span class="signature pdoc-code condensed">(<span class="param"><span class="bp">self</span></span><span class="return-annotation">):</span></span>
<label class="view-source-button" for="CObs.is_zero-view-source"><span>View Source</span></label>
</div>
<a class="headerlink" href="#CObs.is_zero"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="CObs.is_zero-944"><a href="#CObs.is_zero-944"><span class="linenos">944</span></a> <span class="k">def</span> <span class="nf">is_zero</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
</span><span id="CObs.is_zero-945"><a href="#CObs.is_zero-945"><span class="linenos">945</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Checks whether both real and imaginary part are zero within machine precision.&quot;&quot;&quot;</span>
</span><span id="CObs.is_zero-946"><a href="#CObs.is_zero-946"><span class="linenos">946</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">real</span> <span class="o">==</span> <span class="mf">0.0</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">imag</span> <span class="o">==</span> <span class="mf">0.0</span>
</span></pre></div>
<div class="docstring"><p>Checks whether both real and imaginary part are zero within machine precision.</p>
</div>
</div>
<div id="CObs.conjugate" class="classattr">
<input id="CObs.conjugate-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<div class="attr function">
<span class="def">def</span>
<span class="name">conjugate</span><span class="signature pdoc-code condensed">(<span class="param"><span class="bp">self</span></span><span class="return-annotation">):</span></span>
<label class="view-source-button" for="CObs.conjugate-view-source"><span>View Source</span></label>
</div>
<a class="headerlink" href="#CObs.conjugate"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="CObs.conjugate-948"><a href="#CObs.conjugate-948"><span class="linenos">948</span></a> <span class="k">def</span> <span class="nf">conjugate</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
</span><span id="CObs.conjugate-949"><a href="#CObs.conjugate-949"><span class="linenos">949</span></a> <span class="k">return</span> <span class="n">CObs</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">real</span><span class="p">,</span> <span class="o">-</span><span class="bp">self</span><span class="o">.</span><span class="n">imag</span><span class="p">)</span>
</span></pre></div>
</div>
</section>
<section id="gamma_method">
<input id="gamma_method-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<div class="attr function">
<span class="def">def</span>
<span class="name">gamma_method</span><span class="signature pdoc-code condensed">(<span class="param"><span class="n">x</span>, </span><span class="param"><span class="o">**</span><span class="n">kwargs</span></span><span class="return-annotation">):</span></span>
<label class="view-source-button" for="gamma_method-view-source"><span>View Source</span></label>
</div>
<a class="headerlink" href="#gamma_method"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="gamma_method-1039"><a href="#gamma_method-1039"><span class="linenos">1039</span></a><span class="k">def</span> <span class="nf">gamma_method</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
</span><span id="gamma_method-1040"><a href="#gamma_method-1040"><span class="linenos">1040</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Vectorized version of the gamma_method applicable to lists or arrays of Obs.</span>
</span><span id="gamma_method-1041"><a href="#gamma_method-1041"><span class="linenos">1041</span></a>
</span><span id="gamma_method-1042"><a href="#gamma_method-1042"><span class="linenos">1042</span></a><span class="sd"> See docstring of pe.Obs.gamma_method for details.</span>
</span><span id="gamma_method-1043"><a href="#gamma_method-1043"><span class="linenos">1043</span></a><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="gamma_method-1044"><a href="#gamma_method-1044"><span class="linenos">1044</span></a> <span class="k">return</span> <span class="n">np</span><span class="o">.</span><span class="n">vectorize</span><span class="p">(</span><span class="k">lambda</span> <span class="n">o</span><span class="p">:</span> <span class="n">o</span><span class="o">.</span><span class="n">gm</span><span class="p">(</span><span class="o">**</span><span class="n">kwargs</span><span class="p">))(</span><span class="n">x</span><span class="p">)</span>
</span></pre></div>
<div class="docstring"><p>Vectorized version of the gamma_method applicable to lists or arrays of Obs.</p>
<p>See docstring of pe.Obs.gamma_method for details.</p>
</div>
</section>
<section id="gm">
<input id="gm-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<div class="attr function">
<span class="def">def</span>
<span class="name">gm</span><span class="signature pdoc-code condensed">(<span class="param"><span class="n">x</span>, </span><span class="param"><span class="o">**</span><span class="n">kwargs</span></span><span class="return-annotation">):</span></span>
<label class="view-source-button" for="gm-view-source"><span>View Source</span></label>
</div>
<a class="headerlink" href="#gm"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="gm-1039"><a href="#gm-1039"><span class="linenos">1039</span></a><span class="k">def</span> <span class="nf">gamma_method</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
</span><span id="gm-1040"><a href="#gm-1040"><span class="linenos">1040</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Vectorized version of the gamma_method applicable to lists or arrays of Obs.</span>
</span><span id="gm-1041"><a href="#gm-1041"><span class="linenos">1041</span></a>
</span><span id="gm-1042"><a href="#gm-1042"><span class="linenos">1042</span></a><span class="sd"> See docstring of pe.Obs.gamma_method for details.</span>
</span><span id="gm-1043"><a href="#gm-1043"><span class="linenos">1043</span></a><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="gm-1044"><a href="#gm-1044"><span class="linenos">1044</span></a> <span class="k">return</span> <span class="n">np</span><span class="o">.</span><span class="n">vectorize</span><span class="p">(</span><span class="k">lambda</span> <span class="n">o</span><span class="p">:</span> <span class="n">o</span><span class="o">.</span><span class="n">gm</span><span class="p">(</span><span class="o">**</span><span class="n">kwargs</span><span class="p">))(</span><span class="n">x</span><span class="p">)</span>
</span></pre></div>
<div class="docstring"><p>Vectorized version of the gamma_method applicable to lists or arrays of Obs.</p>
<p>See docstring of pe.Obs.gamma_method for details.</p>
</div>
</section>
<section id="derived_observable">
<input id="derived_observable-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<div class="attr function">
<span class="def">def</span>
<span class="name">derived_observable</span><span class="signature pdoc-code condensed">(<span class="param"><span class="n">func</span>, </span><span class="param"><span class="n">data</span>, </span><span class="param"><span class="n">array_mode</span><span class="o">=</span><span class="kc">False</span>, </span><span class="param"><span class="o">**</span><span class="n">kwargs</span></span><span class="return-annotation">):</span></span>
<label class="view-source-button" for="derived_observable-view-source"><span>View Source</span></label>
</div>
<a class="headerlink" href="#derived_observable"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="derived_observable-1169"><a href="#derived_observable-1169"><span class="linenos">1169</span></a><span class="k">def</span> <span class="nf">derived_observable</span><span class="p">(</span><span class="n">func</span><span class="p">,</span> <span class="n">data</span><span class="p">,</span> <span class="n">array_mode</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
</span><span id="derived_observable-1170"><a href="#derived_observable-1170"><span class="linenos">1170</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Construct a derived Obs according to func(data, **kwargs) using automatic differentiation.</span>
</span><span id="derived_observable-1171"><a href="#derived_observable-1171"><span class="linenos">1171</span></a>
</span><span id="derived_observable-1172"><a href="#derived_observable-1172"><span class="linenos">1172</span></a><span class="sd"> Parameters</span>
</span><span id="derived_observable-1173"><a href="#derived_observable-1173"><span class="linenos">1173</span></a><span class="sd"> ----------</span>
</span><span id="derived_observable-1174"><a href="#derived_observable-1174"><span class="linenos">1174</span></a><span class="sd"> func : object</span>
</span><span id="derived_observable-1175"><a href="#derived_observable-1175"><span class="linenos">1175</span></a><span class="sd"> arbitrary function of the form func(data, **kwargs). For the</span>
</span><span id="derived_observable-1176"><a href="#derived_observable-1176"><span class="linenos">1176</span></a><span class="sd"> automatic differentiation to work, all numpy functions have to have</span>
</span><span id="derived_observable-1177"><a href="#derived_observable-1177"><span class="linenos">1177</span></a><span class="sd"> the autograd wrapper (use &#39;import autograd.numpy as anp&#39;).</span>
</span><span id="derived_observable-1178"><a href="#derived_observable-1178"><span class="linenos">1178</span></a><span class="sd"> data : list</span>
</span><span id="derived_observable-1179"><a href="#derived_observable-1179"><span class="linenos">1179</span></a><span class="sd"> list of Obs, e.g. [obs1, obs2, obs3].</span>
</span><span id="derived_observable-1180"><a href="#derived_observable-1180"><span class="linenos">1180</span></a><span class="sd"> num_grad : bool</span>
</span><span id="derived_observable-1181"><a href="#derived_observable-1181"><span class="linenos">1181</span></a><span class="sd"> if True, numerical derivatives are used instead of autograd</span>
</span><span id="derived_observable-1182"><a href="#derived_observable-1182"><span class="linenos">1182</span></a><span class="sd"> (default False). To control the numerical differentiation the</span>
</span><span id="derived_observable-1183"><a href="#derived_observable-1183"><span class="linenos">1183</span></a><span class="sd"> kwargs of numdifftools.step_generators.MaxStepGenerator</span>
</span><span id="derived_observable-1184"><a href="#derived_observable-1184"><span class="linenos">1184</span></a><span class="sd"> can be used.</span>
</span><span id="derived_observable-1185"><a href="#derived_observable-1185"><span class="linenos">1185</span></a><span class="sd"> man_grad : list</span>
</span><span id="derived_observable-1186"><a href="#derived_observable-1186"><span class="linenos">1186</span></a><span class="sd"> manually supply a list or an array which contains the jacobian</span>
</span><span id="derived_observable-1187"><a href="#derived_observable-1187"><span class="linenos">1187</span></a><span class="sd"> of func. Use cautiously, supplying the wrong derivative will</span>
</span><span id="derived_observable-1188"><a href="#derived_observable-1188"><span class="linenos">1188</span></a><span class="sd"> not be intercepted.</span>
</span><span id="derived_observable-1189"><a href="#derived_observable-1189"><span class="linenos">1189</span></a>
</span><span id="derived_observable-1190"><a href="#derived_observable-1190"><span class="linenos">1190</span></a><span class="sd"> Notes</span>
</span><span id="derived_observable-1191"><a href="#derived_observable-1191"><span class="linenos">1191</span></a><span class="sd"> -----</span>
</span><span id="derived_observable-1192"><a href="#derived_observable-1192"><span class="linenos">1192</span></a><span class="sd"> For simple mathematical operations it can be practical to use anonymous</span>
</span><span id="derived_observable-1193"><a href="#derived_observable-1193"><span class="linenos">1193</span></a><span class="sd"> functions. For the ratio of two observables one can e.g. use</span>
</span><span id="derived_observable-1194"><a href="#derived_observable-1194"><span class="linenos">1194</span></a>
</span><span id="derived_observable-1195"><a href="#derived_observable-1195"><span class="linenos">1195</span></a><span class="sd"> new_obs = derived_observable(lambda x: x[0] / x[1], [obs1, obs2])</span>
</span><span id="derived_observable-1196"><a href="#derived_observable-1196"><span class="linenos">1196</span></a><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="derived_observable-1197"><a href="#derived_observable-1197"><span class="linenos">1197</span></a>
</span><span id="derived_observable-1198"><a href="#derived_observable-1198"><span class="linenos">1198</span></a> <span class="n">data</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">asarray</span><span class="p">(</span><span class="n">data</span><span class="p">)</span>
</span><span id="derived_observable-1199"><a href="#derived_observable-1199"><span class="linenos">1199</span></a> <span class="n">raveled_data</span> <span class="o">=</span> <span class="n">data</span><span class="o">.</span><span class="n">ravel</span><span class="p">()</span>
</span><span id="derived_observable-1200"><a href="#derived_observable-1200"><span class="linenos">1200</span></a>
</span><span id="derived_observable-1201"><a href="#derived_observable-1201"><span class="linenos">1201</span></a> <span class="c1"># Workaround for matrix operations containing non Obs data</span>
</span><span id="derived_observable-1202"><a href="#derived_observable-1202"><span class="linenos">1202</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">all</span><span class="p">(</span><span class="nb">isinstance</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">Obs</span><span class="p">)</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">raveled_data</span><span class="p">):</span>
</span><span id="derived_observable-1203"><a href="#derived_observable-1203"><span class="linenos">1203</span></a> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">raveled_data</span><span class="p">)):</span>
</span><span id="derived_observable-1204"><a href="#derived_observable-1204"><span class="linenos">1204</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">raveled_data</span><span class="p">[</span><span class="n">i</span><span class="p">],</span> <span class="p">(</span><span class="nb">int</span><span class="p">,</span> <span class="nb">float</span><span class="p">)):</span>
</span><span id="derived_observable-1205"><a href="#derived_observable-1205"><span class="linenos">1205</span></a> <span class="n">raveled_data</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="n">cov_Obs</span><span class="p">(</span><span class="n">raveled_data</span><span class="p">[</span><span class="n">i</span><span class="p">],</span> <span class="mf">0.0</span><span class="p">,</span> <span class="s2">&quot;###dummy_covobs###&quot;</span><span class="p">)</span>
</span><span id="derived_observable-1206"><a href="#derived_observable-1206"><span class="linenos">1206</span></a>
</span><span id="derived_observable-1207"><a href="#derived_observable-1207"><span class="linenos">1207</span></a> <span class="n">allcov</span> <span class="o">=</span> <span class="p">{}</span>
</span><span id="derived_observable-1208"><a href="#derived_observable-1208"><span class="linenos">1208</span></a> <span class="k">for</span> <span class="n">o</span> <span class="ow">in</span> <span class="n">raveled_data</span><span class="p">:</span>
</span><span id="derived_observable-1209"><a href="#derived_observable-1209"><span class="linenos">1209</span></a> <span class="k">for</span> <span class="n">name</span> <span class="ow">in</span> <span class="n">o</span><span class="o">.</span><span class="n">cov_names</span><span class="p">:</span>
</span><span id="derived_observable-1210"><a href="#derived_observable-1210"><span class="linenos">1210</span></a> <span class="k">if</span> <span class="n">name</span> <span class="ow">in</span> <span class="n">allcov</span><span class="p">:</span>
</span><span id="derived_observable-1211"><a href="#derived_observable-1211"><span class="linenos">1211</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">np</span><span class="o">.</span><span class="n">allclose</span><span class="p">(</span><span class="n">allcov</span><span class="p">[</span><span class="n">name</span><span class="p">],</span> <span class="n">o</span><span class="o">.</span><span class="n">covobs</span><span class="p">[</span><span class="n">name</span><span class="p">]</span><span class="o">.</span><span class="n">cov</span><span class="p">):</span>
</span><span id="derived_observable-1212"><a href="#derived_observable-1212"><span class="linenos">1212</span></a> <span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s1">&#39;Inconsistent covariance matrices for </span><span class="si">%s</span><span class="s1">!&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">name</span><span class="p">))</span>
</span><span id="derived_observable-1213"><a href="#derived_observable-1213"><span class="linenos">1213</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="derived_observable-1214"><a href="#derived_observable-1214"><span class="linenos">1214</span></a> <span class="n">allcov</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="o">=</span> <span class="n">o</span><span class="o">.</span><span class="n">covobs</span><span class="p">[</span><span class="n">name</span><span class="p">]</span><span class="o">.</span><span class="n">cov</span>
</span><span id="derived_observable-1215"><a href="#derived_observable-1215"><span class="linenos">1215</span></a>
</span><span id="derived_observable-1216"><a href="#derived_observable-1216"><span class="linenos">1216</span></a> <span class="n">n_obs</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">raveled_data</span><span class="p">)</span>
</span><span id="derived_observable-1217"><a href="#derived_observable-1217"><span class="linenos">1217</span></a> <span class="n">new_names</span> <span class="o">=</span> <span class="nb">sorted</span><span class="p">(</span><span class="nb">set</span><span class="p">([</span><span class="n">y</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="p">[</span><span class="n">o</span><span class="o">.</span><span class="n">names</span> <span class="k">for</span> <span class="n">o</span> <span class="ow">in</span> <span class="n">raveled_data</span><span class="p">]</span> <span class="k">for</span> <span class="n">y</span> <span class="ow">in</span> <span class="n">x</span><span class="p">]))</span>
</span><span id="derived_observable-1218"><a href="#derived_observable-1218"><span class="linenos">1218</span></a> <span class="n">new_cov_names</span> <span class="o">=</span> <span class="nb">sorted</span><span class="p">(</span><span class="nb">set</span><span class="p">([</span><span class="n">y</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="p">[</span><span class="n">o</span><span class="o">.</span><span class="n">cov_names</span> <span class="k">for</span> <span class="n">o</span> <span class="ow">in</span> <span class="n">raveled_data</span><span class="p">]</span> <span class="k">for</span> <span class="n">y</span> <span class="ow">in</span> <span class="n">x</span><span class="p">]))</span>
</span><span id="derived_observable-1219"><a href="#derived_observable-1219"><span class="linenos">1219</span></a> <span class="n">new_sample_names</span> <span class="o">=</span> <span class="nb">sorted</span><span class="p">(</span><span class="nb">set</span><span class="p">(</span><span class="n">new_names</span><span class="p">)</span> <span class="o">-</span> <span class="nb">set</span><span class="p">(</span><span class="n">new_cov_names</span><span class="p">))</span>
</span><span id="derived_observable-1220"><a href="#derived_observable-1220"><span class="linenos">1220</span></a>
</span><span id="derived_observable-1221"><a href="#derived_observable-1221"><span class="linenos">1221</span></a> <span class="n">reweighted</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="nb">list</span><span class="p">(</span><span class="nb">filter</span><span class="p">(</span><span class="k">lambda</span> <span class="n">o</span><span class="p">:</span> <span class="n">o</span><span class="o">.</span><span class="n">reweighted</span> <span class="ow">is</span> <span class="kc">True</span><span class="p">,</span> <span class="n">raveled_data</span><span class="p">)))</span> <span class="o">&gt;</span> <span class="mi">0</span>
</span><span id="derived_observable-1222"><a href="#derived_observable-1222"><span class="linenos">1222</span></a>
</span><span id="derived_observable-1223"><a href="#derived_observable-1223"><span class="linenos">1223</span></a> <span class="k">if</span> <span class="n">data</span><span class="o">.</span><span class="n">ndim</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span>
</span><span id="derived_observable-1224"><a href="#derived_observable-1224"><span class="linenos">1224</span></a> <span class="n">values</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">([</span><span class="n">o</span><span class="o">.</span><span class="n">value</span> <span class="k">for</span> <span class="n">o</span> <span class="ow">in</span> <span class="n">data</span><span class="p">])</span>
</span><span id="derived_observable-1225"><a href="#derived_observable-1225"><span class="linenos">1225</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="derived_observable-1226"><a href="#derived_observable-1226"><span class="linenos">1226</span></a> <span class="n">values</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">vectorize</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span><span class="p">:</span> <span class="n">x</span><span class="o">.</span><span class="n">value</span><span class="p">)(</span><span class="n">data</span><span class="p">)</span>
</span><span id="derived_observable-1227"><a href="#derived_observable-1227"><span class="linenos">1227</span></a>
</span><span id="derived_observable-1228"><a href="#derived_observable-1228"><span class="linenos">1228</span></a> <span class="n">new_values</span> <span class="o">=</span> <span class="n">func</span><span class="p">(</span><span class="n">values</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
</span><span id="derived_observable-1229"><a href="#derived_observable-1229"><span class="linenos">1229</span></a>
</span><span id="derived_observable-1230"><a href="#derived_observable-1230"><span class="linenos">1230</span></a> <span class="n">multi</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="nb">isinstance</span><span class="p">(</span><span class="n">new_values</span><span class="p">,</span> <span class="n">np</span><span class="o">.</span><span class="n">ndarray</span><span class="p">))</span>
</span><span id="derived_observable-1231"><a href="#derived_observable-1231"><span class="linenos">1231</span></a>
</span><span id="derived_observable-1232"><a href="#derived_observable-1232"><span class="linenos">1232</span></a> <span class="n">new_r_values</span> <span class="o">=</span> <span class="p">{}</span>
</span><span id="derived_observable-1233"><a href="#derived_observable-1233"><span class="linenos">1233</span></a> <span class="n">new_idl_d</span> <span class="o">=</span> <span class="p">{}</span>
</span><span id="derived_observable-1234"><a href="#derived_observable-1234"><span class="linenos">1234</span></a> <span class="k">for</span> <span class="n">name</span> <span class="ow">in</span> <span class="n">new_sample_names</span><span class="p">:</span>
</span><span id="derived_observable-1235"><a href="#derived_observable-1235"><span class="linenos">1235</span></a> <span class="n">idl</span> <span class="o">=</span> <span class="p">[]</span>
</span><span id="derived_observable-1236"><a href="#derived_observable-1236"><span class="linenos">1236</span></a> <span class="n">tmp_values</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">zeros</span><span class="p">(</span><span class="n">n_obs</span><span class="p">)</span>
</span><span id="derived_observable-1237"><a href="#derived_observable-1237"><span class="linenos">1237</span></a> <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">item</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">raveled_data</span><span class="p">):</span>
</span><span id="derived_observable-1238"><a href="#derived_observable-1238"><span class="linenos">1238</span></a> <span class="n">tmp_values</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="n">item</span><span class="o">.</span><span class="n">r_values</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">item</span><span class="o">.</span><span class="n">value</span><span class="p">)</span>
</span><span id="derived_observable-1239"><a href="#derived_observable-1239"><span class="linenos">1239</span></a> <span class="n">tmp_idl</span> <span class="o">=</span> <span class="n">item</span><span class="o">.</span><span class="n">idl</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">name</span><span class="p">)</span>
</span><span id="derived_observable-1240"><a href="#derived_observable-1240"><span class="linenos">1240</span></a> <span class="k">if</span> <span class="n">tmp_idl</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
</span><span id="derived_observable-1241"><a href="#derived_observable-1241"><span class="linenos">1241</span></a> <span class="n">idl</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">tmp_idl</span><span class="p">)</span>
</span><span id="derived_observable-1242"><a href="#derived_observable-1242"><span class="linenos">1242</span></a> <span class="k">if</span> <span class="n">multi</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
</span><span id="derived_observable-1243"><a href="#derived_observable-1243"><span class="linenos">1243</span></a> <span class="n">tmp_values</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">(</span><span class="n">tmp_values</span><span class="p">)</span><span class="o">.</span><span class="n">reshape</span><span class="p">(</span><span class="n">data</span><span class="o">.</span><span class="n">shape</span><span class="p">)</span>
</span><span id="derived_observable-1244"><a href="#derived_observable-1244"><span class="linenos">1244</span></a> <span class="n">new_r_values</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="o">=</span> <span class="n">func</span><span class="p">(</span><span class="n">tmp_values</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
</span><span id="derived_observable-1245"><a href="#derived_observable-1245"><span class="linenos">1245</span></a> <span class="n">new_idl_d</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="o">=</span> <span class="n">_merge_idx</span><span class="p">(</span><span class="n">idl</span><span class="p">)</span>
</span><span id="derived_observable-1246"><a href="#derived_observable-1246"><span class="linenos">1246</span></a>
</span><span id="derived_observable-1247"><a href="#derived_observable-1247"><span class="linenos">1247</span></a> <span class="k">if</span> <span class="s1">&#39;man_grad&#39;</span> <span class="ow">in</span> <span class="n">kwargs</span><span class="p">:</span>
</span><span id="derived_observable-1248"><a href="#derived_observable-1248"><span class="linenos">1248</span></a> <span class="n">deriv</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">asarray</span><span class="p">(</span><span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">&#39;man_grad&#39;</span><span class="p">))</span>
</span><span id="derived_observable-1249"><a href="#derived_observable-1249"><span class="linenos">1249</span></a> <span class="k">if</span> <span class="n">new_values</span><span class="o">.</span><span class="n">shape</span> <span class="o">+</span> <span class="n">data</span><span class="o">.</span><span class="n">shape</span> <span class="o">!=</span> <span class="n">deriv</span><span class="o">.</span><span class="n">shape</span><span class="p">:</span>
</span><span id="derived_observable-1250"><a href="#derived_observable-1250"><span class="linenos">1250</span></a> <span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s1">&#39;Manual derivative does not have correct shape.&#39;</span><span class="p">)</span>
</span><span id="derived_observable-1251"><a href="#derived_observable-1251"><span class="linenos">1251</span></a> <span class="k">elif</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">&#39;num_grad&#39;</span><span class="p">)</span> <span class="ow">is</span> <span class="kc">True</span><span class="p">:</span>
</span><span id="derived_observable-1252"><a href="#derived_observable-1252"><span class="linenos">1252</span></a> <span class="k">if</span> <span class="n">multi</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
</span><span id="derived_observable-1253"><a href="#derived_observable-1253"><span class="linenos">1253</span></a> <span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s1">&#39;Multi mode currently not supported for numerical derivative&#39;</span><span class="p">)</span>
</span><span id="derived_observable-1254"><a href="#derived_observable-1254"><span class="linenos">1254</span></a> <span class="n">options</span> <span class="o">=</span> <span class="p">{</span>
</span><span id="derived_observable-1255"><a href="#derived_observable-1255"><span class="linenos">1255</span></a> <span class="s1">&#39;base_step&#39;</span><span class="p">:</span> <span class="mf">0.1</span><span class="p">,</span>
</span><span id="derived_observable-1256"><a href="#derived_observable-1256"><span class="linenos">1256</span></a> <span class="s1">&#39;step_ratio&#39;</span><span class="p">:</span> <span class="mf">2.5</span><span class="p">}</span>
</span><span id="derived_observable-1257"><a href="#derived_observable-1257"><span class="linenos">1257</span></a> <span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="n">options</span><span class="o">.</span><span class="n">keys</span><span class="p">():</span>
</span><span id="derived_observable-1258"><a href="#derived_observable-1258"><span class="linenos">1258</span></a> <span class="n">kwarg</span> <span class="o">=</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">key</span><span class="p">)</span>
</span><span id="derived_observable-1259"><a href="#derived_observable-1259"><span class="linenos">1259</span></a> <span class="k">if</span> <span class="n">kwarg</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
</span><span id="derived_observable-1260"><a href="#derived_observable-1260"><span class="linenos">1260</span></a> <span class="n">options</span><span class="p">[</span><span class="n">key</span><span class="p">]</span> <span class="o">=</span> <span class="n">kwarg</span>
</span><span id="derived_observable-1261"><a href="#derived_observable-1261"><span class="linenos">1261</span></a> <span class="n">tmp_df</span> <span class="o">=</span> <span class="n">nd</span><span class="o">.</span><span class="n">Gradient</span><span class="p">(</span><span class="n">func</span><span class="p">,</span> <span class="n">order</span><span class="o">=</span><span class="mi">4</span><span class="p">,</span> <span class="o">**</span><span class="p">{</span><span class="n">k</span><span class="p">:</span> <span class="n">v</span> <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">options</span><span class="o">.</span><span class="n">items</span><span class="p">()</span> <span class="k">if</span> <span class="n">v</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">})(</span><span class="n">values</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
</span><span id="derived_observable-1262"><a href="#derived_observable-1262"><span class="linenos">1262</span></a> <span class="k">if</span> <span class="n">tmp_df</span><span class="o">.</span><span class="n">size</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span>
</span><span id="derived_observable-1263"><a href="#derived_observable-1263"><span class="linenos">1263</span></a> <span class="n">deriv</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">([</span><span class="n">tmp_df</span><span class="o">.</span><span class="n">real</span><span class="p">])</span>
</span><span id="derived_observable-1264"><a href="#derived_observable-1264"><span class="linenos">1264</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="derived_observable-1265"><a href="#derived_observable-1265"><span class="linenos">1265</span></a> <span class="n">deriv</span> <span class="o">=</span> <span class="n">tmp_df</span><span class="o">.</span><span class="n">real</span>
</span><span id="derived_observable-1266"><a href="#derived_observable-1266"><span class="linenos">1266</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="derived_observable-1267"><a href="#derived_observable-1267"><span class="linenos">1267</span></a> <span class="n">deriv</span> <span class="o">=</span> <span class="n">jacobian</span><span class="p">(</span><span class="n">func</span><span class="p">)(</span><span class="n">values</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
</span><span id="derived_observable-1268"><a href="#derived_observable-1268"><span class="linenos">1268</span></a>
</span><span id="derived_observable-1269"><a href="#derived_observable-1269"><span class="linenos">1269</span></a> <span class="n">final_result</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">zeros</span><span class="p">(</span><span class="n">new_values</span><span class="o">.</span><span class="n">shape</span><span class="p">,</span> <span class="n">dtype</span><span class="o">=</span><span class="nb">object</span><span class="p">)</span>
</span><span id="derived_observable-1270"><a href="#derived_observable-1270"><span class="linenos">1270</span></a>
</span><span id="derived_observable-1271"><a href="#derived_observable-1271"><span class="linenos">1271</span></a> <span class="k">if</span> <span class="n">array_mode</span> <span class="ow">is</span> <span class="kc">True</span><span class="p">:</span>
</span><span id="derived_observable-1272"><a href="#derived_observable-1272"><span class="linenos">1272</span></a>
</span><span id="derived_observable-1273"><a href="#derived_observable-1273"><span class="linenos">1273</span></a> <span class="k">class</span> <span class="nc">_Zero_grad</span><span class="p">():</span>
</span><span id="derived_observable-1274"><a href="#derived_observable-1274"><span class="linenos">1274</span></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">N</span><span class="p">):</span>
</span><span id="derived_observable-1275"><a href="#derived_observable-1275"><span class="linenos">1275</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">grad</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">zeros</span><span class="p">((</span><span class="n">N</span><span class="p">,</span> <span class="mi">1</span><span class="p">))</span>
</span><span id="derived_observable-1276"><a href="#derived_observable-1276"><span class="linenos">1276</span></a>
</span><span id="derived_observable-1277"><a href="#derived_observable-1277"><span class="linenos">1277</span></a> <span class="n">new_covobs_lengths</span> <span class="o">=</span> <span class="nb">dict</span><span class="p">(</span><span class="nb">set</span><span class="p">([</span><span class="n">y</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="p">[[(</span><span class="n">n</span><span class="p">,</span> <span class="n">o</span><span class="o">.</span><span class="n">covobs</span><span class="p">[</span><span class="n">n</span><span class="p">]</span><span class="o">.</span><span class="n">N</span><span class="p">)</span> <span class="k">for</span> <span class="n">n</span> <span class="ow">in</span> <span class="n">o</span><span class="o">.</span><span class="n">cov_names</span><span class="p">]</span> <span class="k">for</span> <span class="n">o</span> <span class="ow">in</span> <span class="n">raveled_data</span><span class="p">]</span> <span class="k">for</span> <span class="n">y</span> <span class="ow">in</span> <span class="n">x</span><span class="p">]))</span>
</span><span id="derived_observable-1278"><a href="#derived_observable-1278"><span class="linenos">1278</span></a> <span class="n">d_extracted</span> <span class="o">=</span> <span class="p">{}</span>
</span><span id="derived_observable-1279"><a href="#derived_observable-1279"><span class="linenos">1279</span></a> <span class="n">g_extracted</span> <span class="o">=</span> <span class="p">{}</span>
</span><span id="derived_observable-1280"><a href="#derived_observable-1280"><span class="linenos">1280</span></a> <span class="k">for</span> <span class="n">name</span> <span class="ow">in</span> <span class="n">new_sample_names</span><span class="p">:</span>
</span><span id="derived_observable-1281"><a href="#derived_observable-1281"><span class="linenos">1281</span></a> <span class="n">d_extracted</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="o">=</span> <span class="p">[]</span>
</span><span id="derived_observable-1282"><a href="#derived_observable-1282"><span class="linenos">1282</span></a> <span class="n">ens_length</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">new_idl_d</span><span class="p">[</span><span class="n">name</span><span class="p">])</span>
</span><span id="derived_observable-1283"><a href="#derived_observable-1283"><span class="linenos">1283</span></a> <span class="k">for</span> <span class="n">i_dat</span><span class="p">,</span> <span class="n">dat</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">data</span><span class="p">):</span>
</span><span id="derived_observable-1284"><a href="#derived_observable-1284"><span class="linenos">1284</span></a> <span class="n">d_extracted</span><span class="p">[</span><span class="n">name</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">([</span><span class="n">_expand_deltas_for_merge</span><span class="p">(</span><span class="n">o</span><span class="o">.</span><span class="n">deltas</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">np</span><span class="o">.</span><span class="n">zeros</span><span class="p">(</span><span class="n">ens_length</span><span class="p">)),</span> <span class="n">o</span><span class="o">.</span><span class="n">idl</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">new_idl_d</span><span class="p">[</span><span class="n">name</span><span class="p">]),</span> <span class="n">o</span><span class="o">.</span><span class="n">shape</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">ens_length</span><span class="p">),</span> <span class="n">new_idl_d</span><span class="p">[</span><span class="n">name</span><span class="p">])</span> <span class="k">for</span> <span class="n">o</span> <span class="ow">in</span> <span class="n">dat</span><span class="o">.</span><span class="n">reshape</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">prod</span><span class="p">(</span><span class="n">dat</span><span class="o">.</span><span class="n">shape</span><span class="p">))])</span><span class="o">.</span><span class="n">reshape</span><span class="p">(</span><span class="n">dat</span><span class="o">.</span><span class="n">shape</span> <span class="o">+</span> <span class="p">(</span><span class="n">ens_length</span><span class="p">,</span> <span class="p">)))</span>
</span><span id="derived_observable-1285"><a href="#derived_observable-1285"><span class="linenos">1285</span></a> <span class="k">for</span> <span class="n">name</span> <span class="ow">in</span> <span class="n">new_cov_names</span><span class="p">:</span>
</span><span id="derived_observable-1286"><a href="#derived_observable-1286"><span class="linenos">1286</span></a> <span class="n">g_extracted</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="o">=</span> <span class="p">[]</span>
</span><span id="derived_observable-1287"><a href="#derived_observable-1287"><span class="linenos">1287</span></a> <span class="n">zero_grad</span> <span class="o">=</span> <span class="n">_Zero_grad</span><span class="p">(</span><span class="n">new_covobs_lengths</span><span class="p">[</span><span class="n">name</span><span class="p">])</span>
</span><span id="derived_observable-1288"><a href="#derived_observable-1288"><span class="linenos">1288</span></a> <span class="k">for</span> <span class="n">i_dat</span><span class="p">,</span> <span class="n">dat</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">data</span><span class="p">):</span>
</span><span id="derived_observable-1289"><a href="#derived_observable-1289"><span class="linenos">1289</span></a> <span class="n">g_extracted</span><span class="p">[</span><span class="n">name</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">([</span><span class="n">o</span><span class="o">.</span><span class="n">covobs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">zero_grad</span><span class="p">)</span><span class="o">.</span><span class="n">grad</span> <span class="k">for</span> <span class="n">o</span> <span class="ow">in</span> <span class="n">dat</span><span class="o">.</span><span class="n">reshape</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">prod</span><span class="p">(</span><span class="n">dat</span><span class="o">.</span><span class="n">shape</span><span class="p">))])</span><span class="o">.</span><span class="n">reshape</span><span class="p">(</span><span class="n">dat</span><span class="o">.</span><span class="n">shape</span> <span class="o">+</span> <span class="p">(</span><span class="n">new_covobs_lengths</span><span class="p">[</span><span class="n">name</span><span class="p">],</span> <span class="mi">1</span><span class="p">)))</span>
</span><span id="derived_observable-1290"><a href="#derived_observable-1290"><span class="linenos">1290</span></a>
</span><span id="derived_observable-1291"><a href="#derived_observable-1291"><span class="linenos">1291</span></a> <span class="k">for</span> <span class="n">i_val</span><span class="p">,</span> <span class="n">new_val</span> <span class="ow">in</span> <span class="n">np</span><span class="o">.</span><span class="n">ndenumerate</span><span class="p">(</span><span class="n">new_values</span><span class="p">):</span>
</span><span id="derived_observable-1292"><a href="#derived_observable-1292"><span class="linenos">1292</span></a> <span class="n">new_deltas</span> <span class="o">=</span> <span class="p">{}</span>
</span><span id="derived_observable-1293"><a href="#derived_observable-1293"><span class="linenos">1293</span></a> <span class="n">new_grad</span> <span class="o">=</span> <span class="p">{}</span>
</span><span id="derived_observable-1294"><a href="#derived_observable-1294"><span class="linenos">1294</span></a> <span class="k">if</span> <span class="n">array_mode</span> <span class="ow">is</span> <span class="kc">True</span><span class="p">:</span>
</span><span id="derived_observable-1295"><a href="#derived_observable-1295"><span class="linenos">1295</span></a> <span class="k">for</span> <span class="n">name</span> <span class="ow">in</span> <span class="n">new_sample_names</span><span class="p">:</span>
</span><span id="derived_observable-1296"><a href="#derived_observable-1296"><span class="linenos">1296</span></a> <span class="n">ens_length</span> <span class="o">=</span> <span class="n">d_extracted</span><span class="p">[</span><span class="n">name</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span>
</span><span id="derived_observable-1297"><a href="#derived_observable-1297"><span class="linenos">1297</span></a> <span class="n">new_deltas</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">zeros</span><span class="p">(</span><span class="n">ens_length</span><span class="p">)</span>
</span><span id="derived_observable-1298"><a href="#derived_observable-1298"><span class="linenos">1298</span></a> <span class="k">for</span> <span class="n">i_dat</span><span class="p">,</span> <span class="n">dat</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">d_extracted</span><span class="p">[</span><span class="n">name</span><span class="p">]):</span>
</span><span id="derived_observable-1299"><a href="#derived_observable-1299"><span class="linenos">1299</span></a> <span class="n">new_deltas</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="o">+=</span> <span class="n">np</span><span class="o">.</span><span class="n">tensordot</span><span class="p">(</span><span class="n">deriv</span><span class="p">[</span><span class="n">i_val</span> <span class="o">+</span> <span class="p">(</span><span class="n">i_dat</span><span class="p">,</span> <span class="p">)],</span> <span class="n">dat</span><span class="p">)</span>
</span><span id="derived_observable-1300"><a href="#derived_observable-1300"><span class="linenos">1300</span></a> <span class="k">for</span> <span class="n">name</span> <span class="ow">in</span> <span class="n">new_cov_names</span><span class="p">:</span>
</span><span id="derived_observable-1301"><a href="#derived_observable-1301"><span class="linenos">1301</span></a> <span class="n">new_grad</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="o">=</span> <span class="mi">0</span>
</span><span id="derived_observable-1302"><a href="#derived_observable-1302"><span class="linenos">1302</span></a> <span class="k">for</span> <span class="n">i_dat</span><span class="p">,</span> <span class="n">dat</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">g_extracted</span><span class="p">[</span><span class="n">name</span><span class="p">]):</span>
</span><span id="derived_observable-1303"><a href="#derived_observable-1303"><span class="linenos">1303</span></a> <span class="n">new_grad</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="o">+=</span> <span class="n">np</span><span class="o">.</span><span class="n">tensordot</span><span class="p">(</span><span class="n">deriv</span><span class="p">[</span><span class="n">i_val</span> <span class="o">+</span> <span class="p">(</span><span class="n">i_dat</span><span class="p">,</span> <span class="p">)],</span> <span class="n">dat</span><span class="p">)</span>
</span><span id="derived_observable-1304"><a href="#derived_observable-1304"><span class="linenos">1304</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="derived_observable-1305"><a href="#derived_observable-1305"><span class="linenos">1305</span></a> <span class="k">for</span> <span class="n">j_obs</span><span class="p">,</span> <span class="n">obs</span> <span class="ow">in</span> <span class="n">np</span><span class="o">.</span><span class="n">ndenumerate</span><span class="p">(</span><span class="n">data</span><span class="p">):</span>
</span><span id="derived_observable-1306"><a href="#derived_observable-1306"><span class="linenos">1306</span></a> <span class="k">for</span> <span class="n">name</span> <span class="ow">in</span> <span class="n">obs</span><span class="o">.</span><span class="n">names</span><span class="p">:</span>
</span><span id="derived_observable-1307"><a href="#derived_observable-1307"><span class="linenos">1307</span></a> <span class="k">if</span> <span class="n">name</span> <span class="ow">in</span> <span class="n">obs</span><span class="o">.</span><span class="n">cov_names</span><span class="p">:</span>
</span><span id="derived_observable-1308"><a href="#derived_observable-1308"><span class="linenos">1308</span></a> <span class="n">new_grad</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="o">=</span> <span class="n">new_grad</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> <span class="o">+</span> <span class="n">deriv</span><span class="p">[</span><span class="n">i_val</span> <span class="o">+</span> <span class="n">j_obs</span><span class="p">]</span> <span class="o">*</span> <span class="n">obs</span><span class="o">.</span><span class="n">covobs</span><span class="p">[</span><span class="n">name</span><span class="p">]</span><span class="o">.</span><span class="n">grad</span>
</span><span id="derived_observable-1309"><a href="#derived_observable-1309"><span class="linenos">1309</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="derived_observable-1310"><a href="#derived_observable-1310"><span class="linenos">1310</span></a> <span class="n">new_deltas</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="o">=</span> <span class="n">new_deltas</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> <span class="o">+</span> <span class="n">deriv</span><span class="p">[</span><span class="n">i_val</span> <span class="o">+</span> <span class="n">j_obs</span><span class="p">]</span> <span class="o">*</span> <span class="n">_expand_deltas_for_merge</span><span class="p">(</span><span class="n">obs</span><span class="o">.</span><span class="n">deltas</span><span class="p">[</span><span class="n">name</span><span class="p">],</span> <span class="n">obs</span><span class="o">.</span><span class="n">idl</span><span class="p">[</span><span class="n">name</span><span class="p">],</span> <span class="n">obs</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="n">name</span><span class="p">],</span> <span class="n">new_idl_d</span><span class="p">[</span><span class="n">name</span><span class="p">])</span>
</span><span id="derived_observable-1311"><a href="#derived_observable-1311"><span class="linenos">1311</span></a>
</span><span id="derived_observable-1312"><a href="#derived_observable-1312"><span class="linenos">1312</span></a> <span class="n">new_covobs</span> <span class="o">=</span> <span class="p">{</span><span class="n">name</span><span class="p">:</span> <span class="n">Covobs</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">allcov</span><span class="p">[</span><span class="n">name</span><span class="p">],</span> <span class="n">name</span><span class="p">,</span> <span class="n">grad</span><span class="o">=</span><span class="n">new_grad</span><span class="p">[</span><span class="n">name</span><span class="p">])</span> <span class="k">for</span> <span class="n">name</span> <span class="ow">in</span> <span class="n">new_grad</span><span class="p">}</span>
</span><span id="derived_observable-1313"><a href="#derived_observable-1313"><span class="linenos">1313</span></a>
</span><span id="derived_observable-1314"><a href="#derived_observable-1314"><span class="linenos">1314</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">set</span><span class="p">(</span><span class="n">new_covobs</span><span class="o">.</span><span class="n">keys</span><span class="p">())</span><span class="o">.</span><span class="n">isdisjoint</span><span class="p">(</span><span class="n">new_deltas</span><span class="o">.</span><span class="n">keys</span><span class="p">()):</span>
</span><span id="derived_observable-1315"><a href="#derived_observable-1315"><span class="linenos">1315</span></a> <span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s1">&#39;The same name has been used for deltas and covobs!&#39;</span><span class="p">)</span>
</span><span id="derived_observable-1316"><a href="#derived_observable-1316"><span class="linenos">1316</span></a> <span class="n">new_samples</span> <span class="o">=</span> <span class="p">[]</span>
</span><span id="derived_observable-1317"><a href="#derived_observable-1317"><span class="linenos">1317</span></a> <span class="n">new_means</span> <span class="o">=</span> <span class="p">[]</span>
</span><span id="derived_observable-1318"><a href="#derived_observable-1318"><span class="linenos">1318</span></a> <span class="n">new_idl</span> <span class="o">=</span> <span class="p">[]</span>
</span><span id="derived_observable-1319"><a href="#derived_observable-1319"><span class="linenos">1319</span></a> <span class="n">new_names_obs</span> <span class="o">=</span> <span class="p">[]</span>
</span><span id="derived_observable-1320"><a href="#derived_observable-1320"><span class="linenos">1320</span></a> <span class="k">for</span> <span class="n">name</span> <span class="ow">in</span> <span class="n">new_names</span><span class="p">:</span>
</span><span id="derived_observable-1321"><a href="#derived_observable-1321"><span class="linenos">1321</span></a> <span class="k">if</span> <span class="n">name</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">new_covobs</span><span class="p">:</span>
</span><span id="derived_observable-1322"><a href="#derived_observable-1322"><span class="linenos">1322</span></a> <span class="n">new_samples</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">new_deltas</span><span class="p">[</span><span class="n">name</span><span class="p">])</span>
</span><span id="derived_observable-1323"><a href="#derived_observable-1323"><span class="linenos">1323</span></a> <span class="n">new_idl</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">new_idl_d</span><span class="p">[</span><span class="n">name</span><span class="p">])</span>
</span><span id="derived_observable-1324"><a href="#derived_observable-1324"><span class="linenos">1324</span></a> <span class="n">new_means</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">new_r_values</span><span class="p">[</span><span class="n">name</span><span class="p">][</span><span class="n">i_val</span><span class="p">])</span>
</span><span id="derived_observable-1325"><a href="#derived_observable-1325"><span class="linenos">1325</span></a> <span class="n">new_names_obs</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">name</span><span class="p">)</span>
</span><span id="derived_observable-1326"><a href="#derived_observable-1326"><span class="linenos">1326</span></a> <span class="n">final_result</span><span class="p">[</span><span class="n">i_val</span><span class="p">]</span> <span class="o">=</span> <span class="n">Obs</span><span class="p">(</span><span class="n">new_samples</span><span class="p">,</span> <span class="n">new_names_obs</span><span class="p">,</span> <span class="n">means</span><span class="o">=</span><span class="n">new_means</span><span class="p">,</span> <span class="n">idl</span><span class="o">=</span><span class="n">new_idl</span><span class="p">)</span>
</span><span id="derived_observable-1327"><a href="#derived_observable-1327"><span class="linenos">1327</span></a> <span class="k">for</span> <span class="n">name</span> <span class="ow">in</span> <span class="n">new_covobs</span><span class="p">:</span>
</span><span id="derived_observable-1328"><a href="#derived_observable-1328"><span class="linenos">1328</span></a> <span class="n">final_result</span><span class="p">[</span><span class="n">i_val</span><span class="p">]</span><span class="o">.</span><span class="n">names</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">name</span><span class="p">)</span>
</span><span id="derived_observable-1329"><a href="#derived_observable-1329"><span class="linenos">1329</span></a> <span class="n">final_result</span><span class="p">[</span><span class="n">i_val</span><span class="p">]</span><span class="o">.</span><span class="n">_covobs</span> <span class="o">=</span> <span class="n">new_covobs</span>
</span><span id="derived_observable-1330"><a href="#derived_observable-1330"><span class="linenos">1330</span></a> <span class="n">final_result</span><span class="p">[</span><span class="n">i_val</span><span class="p">]</span><span class="o">.</span><span class="n">_value</span> <span class="o">=</span> <span class="n">new_val</span>
</span><span id="derived_observable-1331"><a href="#derived_observable-1331"><span class="linenos">1331</span></a> <span class="n">final_result</span><span class="p">[</span><span class="n">i_val</span><span class="p">]</span><span class="o">.</span><span class="n">reweighted</span> <span class="o">=</span> <span class="n">reweighted</span>
</span><span id="derived_observable-1332"><a href="#derived_observable-1332"><span class="linenos">1332</span></a>
</span><span id="derived_observable-1333"><a href="#derived_observable-1333"><span class="linenos">1333</span></a> <span class="k">if</span> <span class="n">multi</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
</span><span id="derived_observable-1334"><a href="#derived_observable-1334"><span class="linenos">1334</span></a> <span class="n">final_result</span> <span class="o">=</span> <span class="n">final_result</span><span class="o">.</span><span class="n">item</span><span class="p">()</span>
</span><span id="derived_observable-1335"><a href="#derived_observable-1335"><span class="linenos">1335</span></a>
</span><span id="derived_observable-1336"><a href="#derived_observable-1336"><span class="linenos">1336</span></a> <span class="k">return</span> <span class="n">final_result</span>
</span></pre></div>
<div class="docstring"><p>Construct a derived Obs according to func(data, **kwargs) using automatic differentiation.</p>
<h6 id="parameters">Parameters</h6>
<ul>
<li><strong>func</strong> (object):
arbitrary function of the form func(data, **kwargs). For the
automatic differentiation to work, all numpy functions have to have
the autograd wrapper (use 'import autograd.numpy as anp').</li>
<li><strong>data</strong> (list):
list of Obs, e.g. [obs1, obs2, obs3].</li>
<li><strong>num_grad</strong> (bool):
if True, numerical derivatives are used instead of autograd
(default False). To control the numerical differentiation the
kwargs of numdifftools.step_generators.MaxStepGenerator
can be used.</li>
<li><strong>man_grad</strong> (list):
manually supply a list or an array which contains the jacobian
of func. Use cautiously, supplying the wrong derivative will
not be intercepted.</li>
</ul>
<h6 id="notes">Notes</h6>
<p>For simple mathematical operations it can be practical to use anonymous
functions. For the ratio of two observables one can e.g. use</p>
<p>new_obs = derived_observable(lambda x: x[0] / x[1], [obs1, obs2])</p>
</div>
</section>
<section id="reweight">
<input id="reweight-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<div class="attr function">
<span class="def">def</span>
<span class="name">reweight</span><span class="signature pdoc-code condensed">(<span class="param"><span class="n">weight</span>, </span><span class="param"><span class="n">obs</span>, </span><span class="param"><span class="o">**</span><span class="n">kwargs</span></span><span class="return-annotation">):</span></span>
<label class="view-source-button" for="reweight-view-source"><span>View Source</span></label>
</div>
<a class="headerlink" href="#reweight"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="reweight-1368"><a href="#reweight-1368"><span class="linenos">1368</span></a><span class="k">def</span> <span class="nf">reweight</span><span class="p">(</span><span class="n">weight</span><span class="p">,</span> <span class="n">obs</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
</span><span id="reweight-1369"><a href="#reweight-1369"><span class="linenos">1369</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Reweight a list of observables.</span>
</span><span id="reweight-1370"><a href="#reweight-1370"><span class="linenos">1370</span></a>
</span><span id="reweight-1371"><a href="#reweight-1371"><span class="linenos">1371</span></a><span class="sd"> Parameters</span>
</span><span id="reweight-1372"><a href="#reweight-1372"><span class="linenos">1372</span></a><span class="sd"> ----------</span>
</span><span id="reweight-1373"><a href="#reweight-1373"><span class="linenos">1373</span></a><span class="sd"> weight : Obs</span>
</span><span id="reweight-1374"><a href="#reweight-1374"><span class="linenos">1374</span></a><span class="sd"> Reweighting factor. An Observable that has to be defined on a superset of the</span>
</span><span id="reweight-1375"><a href="#reweight-1375"><span class="linenos">1375</span></a><span class="sd"> configurations in obs[i].idl for all i.</span>
</span><span id="reweight-1376"><a href="#reweight-1376"><span class="linenos">1376</span></a><span class="sd"> obs : list</span>
</span><span id="reweight-1377"><a href="#reweight-1377"><span class="linenos">1377</span></a><span class="sd"> list of Obs, e.g. [obs1, obs2, obs3].</span>
</span><span id="reweight-1378"><a href="#reweight-1378"><span class="linenos">1378</span></a><span class="sd"> all_configs : bool</span>
</span><span id="reweight-1379"><a href="#reweight-1379"><span class="linenos">1379</span></a><span class="sd"> if True, the reweighted observables are normalized by the average of</span>
</span><span id="reweight-1380"><a href="#reweight-1380"><span class="linenos">1380</span></a><span class="sd"> the reweighting factor on all configurations in weight.idl and not</span>
</span><span id="reweight-1381"><a href="#reweight-1381"><span class="linenos">1381</span></a><span class="sd"> on the configurations in obs[i].idl. Default False.</span>
</span><span id="reweight-1382"><a href="#reweight-1382"><span class="linenos">1382</span></a><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="reweight-1383"><a href="#reweight-1383"><span class="linenos">1383</span></a> <span class="n">result</span> <span class="o">=</span> <span class="p">[]</span>
</span><span id="reweight-1384"><a href="#reweight-1384"><span class="linenos">1384</span></a> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">obs</span><span class="p">)):</span>
</span><span id="reweight-1385"><a href="#reweight-1385"><span class="linenos">1385</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">obs</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">cov_names</span><span class="p">):</span>
</span><span id="reweight-1386"><a href="#reweight-1386"><span class="linenos">1386</span></a> <span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s1">&#39;Error: Not possible to reweight an Obs that contains covobs!&#39;</span><span class="p">)</span>
</span><span id="reweight-1387"><a href="#reweight-1387"><span class="linenos">1387</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">set</span><span class="p">(</span><span class="n">obs</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">names</span><span class="p">)</span><span class="o">.</span><span class="n">issubset</span><span class="p">(</span><span class="n">weight</span><span class="o">.</span><span class="n">names</span><span class="p">):</span>
</span><span id="reweight-1388"><a href="#reweight-1388"><span class="linenos">1388</span></a> <span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s1">&#39;Error: Ensembles do not fit&#39;</span><span class="p">)</span>
</span><span id="reweight-1389"><a href="#reweight-1389"><span class="linenos">1389</span></a> <span class="k">for</span> <span class="n">name</span> <span class="ow">in</span> <span class="n">obs</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">names</span><span class="p">:</span>
</span><span id="reweight-1390"><a href="#reweight-1390"><span class="linenos">1390</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">set</span><span class="p">(</span><span class="n">obs</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">idl</span><span class="p">[</span><span class="n">name</span><span class="p">])</span><span class="o">.</span><span class="n">issubset</span><span class="p">(</span><span class="n">weight</span><span class="o">.</span><span class="n">idl</span><span class="p">[</span><span class="n">name</span><span class="p">]):</span>
</span><span id="reweight-1391"><a href="#reweight-1391"><span class="linenos">1391</span></a> <span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s1">&#39;obs[</span><span class="si">%d</span><span class="s1">] has to be defined on a subset of the configs in weight.idl[</span><span class="si">%s</span><span class="s1">]!&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">i</span><span class="p">,</span> <span class="n">name</span><span class="p">))</span>
</span><span id="reweight-1392"><a href="#reweight-1392"><span class="linenos">1392</span></a> <span class="n">new_samples</span> <span class="o">=</span> <span class="p">[]</span>
</span><span id="reweight-1393"><a href="#reweight-1393"><span class="linenos">1393</span></a> <span class="n">w_deltas</span> <span class="o">=</span> <span class="p">{}</span>
</span><span id="reweight-1394"><a href="#reweight-1394"><span class="linenos">1394</span></a> <span class="k">for</span> <span class="n">name</span> <span class="ow">in</span> <span class="nb">sorted</span><span class="p">(</span><span class="n">obs</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">names</span><span class="p">):</span>
</span><span id="reweight-1395"><a href="#reweight-1395"><span class="linenos">1395</span></a> <span class="n">w_deltas</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="o">=</span> <span class="n">_reduce_deltas</span><span class="p">(</span><span class="n">weight</span><span class="o">.</span><span class="n">deltas</span><span class="p">[</span><span class="n">name</span><span class="p">],</span> <span class="n">weight</span><span class="o">.</span><span class="n">idl</span><span class="p">[</span><span class="n">name</span><span class="p">],</span> <span class="n">obs</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">idl</span><span class="p">[</span><span class="n">name</span><span class="p">])</span>
</span><span id="reweight-1396"><a href="#reweight-1396"><span class="linenos">1396</span></a> <span class="n">new_samples</span><span class="o">.</span><span class="n">append</span><span class="p">((</span><span class="n">w_deltas</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="o">+</span> <span class="n">weight</span><span class="o">.</span><span class="n">r_values</span><span class="p">[</span><span class="n">name</span><span class="p">])</span> <span class="o">*</span> <span class="p">(</span><span class="n">obs</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">deltas</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="o">+</span> <span class="n">obs</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">r_values</span><span class="p">[</span><span class="n">name</span><span class="p">]))</span>
</span><span id="reweight-1397"><a href="#reweight-1397"><span class="linenos">1397</span></a> <span class="n">tmp_obs</span> <span class="o">=</span> <span class="n">Obs</span><span class="p">(</span><span class="n">new_samples</span><span class="p">,</span> <span class="nb">sorted</span><span class="p">(</span><span class="n">obs</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">names</span><span class="p">),</span> <span class="n">idl</span><span class="o">=</span><span class="p">[</span><span class="n">obs</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">idl</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="k">for</span> <span class="n">name</span> <span class="ow">in</span> <span class="nb">sorted</span><span class="p">(</span><span class="n">obs</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">names</span><span class="p">)])</span>
</span><span id="reweight-1398"><a href="#reweight-1398"><span class="linenos">1398</span></a>
</span><span id="reweight-1399"><a href="#reweight-1399"><span class="linenos">1399</span></a> <span class="k">if</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">&#39;all_configs&#39;</span><span class="p">):</span>
</span><span id="reweight-1400"><a href="#reweight-1400"><span class="linenos">1400</span></a> <span class="n">new_weight</span> <span class="o">=</span> <span class="n">weight</span>
</span><span id="reweight-1401"><a href="#reweight-1401"><span class="linenos">1401</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="reweight-1402"><a href="#reweight-1402"><span class="linenos">1402</span></a> <span class="n">new_weight</span> <span class="o">=</span> <span class="n">Obs</span><span class="p">([</span><span class="n">w_deltas</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="o">+</span> <span class="n">weight</span><span class="o">.</span><span class="n">r_values</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="k">for</span> <span class="n">name</span> <span class="ow">in</span> <span class="nb">sorted</span><span class="p">(</span><span class="n">obs</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">names</span><span class="p">)],</span> <span class="nb">sorted</span><span class="p">(</span><span class="n">obs</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">names</span><span class="p">),</span> <span class="n">idl</span><span class="o">=</span><span class="p">[</span><span class="n">obs</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">idl</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="k">for</span> <span class="n">name</span> <span class="ow">in</span> <span class="nb">sorted</span><span class="p">(</span><span class="n">obs</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">names</span><span class="p">)])</span>
</span><span id="reweight-1403"><a href="#reweight-1403"><span class="linenos">1403</span></a>
</span><span id="reweight-1404"><a href="#reweight-1404"><span class="linenos">1404</span></a> <span class="n">result</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">tmp_obs</span> <span class="o">/</span> <span class="n">new_weight</span><span class="p">)</span>
</span><span id="reweight-1405"><a href="#reweight-1405"><span class="linenos">1405</span></a> <span class="n">result</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">reweighted</span> <span class="o">=</span> <span class="kc">True</span>
</span><span id="reweight-1406"><a href="#reweight-1406"><span class="linenos">1406</span></a>
</span><span id="reweight-1407"><a href="#reweight-1407"><span class="linenos">1407</span></a> <span class="k">return</span> <span class="n">result</span>
</span></pre></div>
<div class="docstring"><p>Reweight a list of observables.</p>
<h6 id="parameters">Parameters</h6>
<ul>
<li><strong>weight</strong> (Obs):
Reweighting factor. An Observable that has to be defined on a superset of the
configurations in obs[i].idl for all i.</li>
<li><strong>obs</strong> (list):
list of Obs, e.g. [obs1, obs2, obs3].</li>
<li><strong>all_configs</strong> (bool):
if True, the reweighted observables are normalized by the average of
the reweighting factor on all configurations in weight.idl and not
on the configurations in obs[i].idl. Default False.</li>
</ul>
</div>
</section>
<section id="correlate">
<input id="correlate-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<div class="attr function">
<span class="def">def</span>
<span class="name">correlate</span><span class="signature pdoc-code condensed">(<span class="param"><span class="n">obs_a</span>, </span><span class="param"><span class="n">obs_b</span></span><span class="return-annotation">):</span></span>
<label class="view-source-button" for="correlate-view-source"><span>View Source</span></label>
</div>
<a class="headerlink" href="#correlate"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="correlate-1410"><a href="#correlate-1410"><span class="linenos">1410</span></a><span class="k">def</span> <span class="nf">correlate</span><span class="p">(</span><span class="n">obs_a</span><span class="p">,</span> <span class="n">obs_b</span><span class="p">):</span>
</span><span id="correlate-1411"><a href="#correlate-1411"><span class="linenos">1411</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Correlate two observables.</span>
</span><span id="correlate-1412"><a href="#correlate-1412"><span class="linenos">1412</span></a>
</span><span id="correlate-1413"><a href="#correlate-1413"><span class="linenos">1413</span></a><span class="sd"> Parameters</span>
</span><span id="correlate-1414"><a href="#correlate-1414"><span class="linenos">1414</span></a><span class="sd"> ----------</span>
</span><span id="correlate-1415"><a href="#correlate-1415"><span class="linenos">1415</span></a><span class="sd"> obs_a : Obs</span>
</span><span id="correlate-1416"><a href="#correlate-1416"><span class="linenos">1416</span></a><span class="sd"> First observable</span>
</span><span id="correlate-1417"><a href="#correlate-1417"><span class="linenos">1417</span></a><span class="sd"> obs_b : Obs</span>
</span><span id="correlate-1418"><a href="#correlate-1418"><span class="linenos">1418</span></a><span class="sd"> Second observable</span>
</span><span id="correlate-1419"><a href="#correlate-1419"><span class="linenos">1419</span></a>
</span><span id="correlate-1420"><a href="#correlate-1420"><span class="linenos">1420</span></a><span class="sd"> Notes</span>
</span><span id="correlate-1421"><a href="#correlate-1421"><span class="linenos">1421</span></a><span class="sd"> -----</span>
</span><span id="correlate-1422"><a href="#correlate-1422"><span class="linenos">1422</span></a><span class="sd"> Keep in mind to only correlate primary observables which have not been reweighted</span>
</span><span id="correlate-1423"><a href="#correlate-1423"><span class="linenos">1423</span></a><span class="sd"> yet. The reweighting has to be applied after correlating the observables.</span>
</span><span id="correlate-1424"><a href="#correlate-1424"><span class="linenos">1424</span></a><span class="sd"> Currently only works if ensembles are identical (this is not strictly necessary).</span>
</span><span id="correlate-1425"><a href="#correlate-1425"><span class="linenos">1425</span></a><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="correlate-1426"><a href="#correlate-1426"><span class="linenos">1426</span></a>
</span><span id="correlate-1427"><a href="#correlate-1427"><span class="linenos">1427</span></a> <span class="k">if</span> <span class="nb">sorted</span><span class="p">(</span><span class="n">obs_a</span><span class="o">.</span><span class="n">names</span><span class="p">)</span> <span class="o">!=</span> <span class="nb">sorted</span><span class="p">(</span><span class="n">obs_b</span><span class="o">.</span><span class="n">names</span><span class="p">):</span>
</span><span id="correlate-1428"><a href="#correlate-1428"><span class="linenos">1428</span></a> <span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Ensembles do not fit </span><span class="si">{</span><span class="nb">set</span><span class="p">(</span><span class="nb">sorted</span><span class="p">(</span><span class="n">obs_a</span><span class="o">.</span><span class="n">names</span><span class="p">))</span><span class="w"> </span><span class="o">^</span><span class="w"> </span><span class="nb">set</span><span class="p">(</span><span class="nb">sorted</span><span class="p">(</span><span class="n">obs_b</span><span class="o">.</span><span class="n">names</span><span class="p">))</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
</span><span id="correlate-1429"><a href="#correlate-1429"><span class="linenos">1429</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">obs_a</span><span class="o">.</span><span class="n">cov_names</span><span class="p">)</span> <span class="ow">or</span> <span class="nb">len</span><span class="p">(</span><span class="n">obs_b</span><span class="o">.</span><span class="n">cov_names</span><span class="p">):</span>
</span><span id="correlate-1430"><a href="#correlate-1430"><span class="linenos">1430</span></a> <span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s1">&#39;Error: Not possible to correlate Obs that contain covobs!&#39;</span><span class="p">)</span>
</span><span id="correlate-1431"><a href="#correlate-1431"><span class="linenos">1431</span></a> <span class="k">for</span> <span class="n">name</span> <span class="ow">in</span> <span class="n">obs_a</span><span class="o">.</span><span class="n">names</span><span class="p">:</span>
</span><span id="correlate-1432"><a href="#correlate-1432"><span class="linenos">1432</span></a> <span class="k">if</span> <span class="n">obs_a</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="o">!=</span> <span class="n">obs_b</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="n">name</span><span class="p">]:</span>
</span><span id="correlate-1433"><a href="#correlate-1433"><span class="linenos">1433</span></a> <span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s1">&#39;Shapes of ensemble&#39;</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="s1">&#39;do not fit&#39;</span><span class="p">)</span>
</span><span id="correlate-1434"><a href="#correlate-1434"><span class="linenos">1434</span></a> <span class="k">if</span> <span class="n">obs_a</span><span class="o">.</span><span class="n">idl</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="o">!=</span> <span class="n">obs_b</span><span class="o">.</span><span class="n">idl</span><span class="p">[</span><span class="n">name</span><span class="p">]:</span>
</span><span id="correlate-1435"><a href="#correlate-1435"><span class="linenos">1435</span></a> <span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s1">&#39;idl of ensemble&#39;</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="s1">&#39;do not fit&#39;</span><span class="p">)</span>
</span><span id="correlate-1436"><a href="#correlate-1436"><span class="linenos">1436</span></a>
</span><span id="correlate-1437"><a href="#correlate-1437"><span class="linenos">1437</span></a> <span class="k">if</span> <span class="n">obs_a</span><span class="o">.</span><span class="n">reweighted</span> <span class="ow">is</span> <span class="kc">True</span><span class="p">:</span>
</span><span id="correlate-1438"><a href="#correlate-1438"><span class="linenos">1438</span></a> <span class="n">warnings</span><span class="o">.</span><span class="n">warn</span><span class="p">(</span><span class="s2">&quot;The first observable is already reweighted.&quot;</span><span class="p">,</span> <span class="ne">RuntimeWarning</span><span class="p">)</span>
</span><span id="correlate-1439"><a href="#correlate-1439"><span class="linenos">1439</span></a> <span class="k">if</span> <span class="n">obs_b</span><span class="o">.</span><span class="n">reweighted</span> <span class="ow">is</span> <span class="kc">True</span><span class="p">:</span>
</span><span id="correlate-1440"><a href="#correlate-1440"><span class="linenos">1440</span></a> <span class="n">warnings</span><span class="o">.</span><span class="n">warn</span><span class="p">(</span><span class="s2">&quot;The second observable is already reweighted.&quot;</span><span class="p">,</span> <span class="ne">RuntimeWarning</span><span class="p">)</span>
</span><span id="correlate-1441"><a href="#correlate-1441"><span class="linenos">1441</span></a>
</span><span id="correlate-1442"><a href="#correlate-1442"><span class="linenos">1442</span></a> <span class="n">new_samples</span> <span class="o">=</span> <span class="p">[]</span>
</span><span id="correlate-1443"><a href="#correlate-1443"><span class="linenos">1443</span></a> <span class="n">new_idl</span> <span class="o">=</span> <span class="p">[]</span>
</span><span id="correlate-1444"><a href="#correlate-1444"><span class="linenos">1444</span></a> <span class="k">for</span> <span class="n">name</span> <span class="ow">in</span> <span class="nb">sorted</span><span class="p">(</span><span class="n">obs_a</span><span class="o">.</span><span class="n">names</span><span class="p">):</span>
</span><span id="correlate-1445"><a href="#correlate-1445"><span class="linenos">1445</span></a> <span class="n">new_samples</span><span class="o">.</span><span class="n">append</span><span class="p">((</span><span class="n">obs_a</span><span class="o">.</span><span class="n">deltas</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="o">+</span> <span class="n">obs_a</span><span class="o">.</span><span class="n">r_values</span><span class="p">[</span><span class="n">name</span><span class="p">])</span> <span class="o">*</span> <span class="p">(</span><span class="n">obs_b</span><span class="o">.</span><span class="n">deltas</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="o">+</span> <span class="n">obs_b</span><span class="o">.</span><span class="n">r_values</span><span class="p">[</span><span class="n">name</span><span class="p">]))</span>
</span><span id="correlate-1446"><a href="#correlate-1446"><span class="linenos">1446</span></a> <span class="n">new_idl</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">obs_a</span><span class="o">.</span><span class="n">idl</span><span class="p">[</span><span class="n">name</span><span class="p">])</span>
</span><span id="correlate-1447"><a href="#correlate-1447"><span class="linenos">1447</span></a>
</span><span id="correlate-1448"><a href="#correlate-1448"><span class="linenos">1448</span></a> <span class="n">o</span> <span class="o">=</span> <span class="n">Obs</span><span class="p">(</span><span class="n">new_samples</span><span class="p">,</span> <span class="nb">sorted</span><span class="p">(</span><span class="n">obs_a</span><span class="o">.</span><span class="n">names</span><span class="p">),</span> <span class="n">idl</span><span class="o">=</span><span class="n">new_idl</span><span class="p">)</span>
</span><span id="correlate-1449"><a href="#correlate-1449"><span class="linenos">1449</span></a> <span class="n">o</span><span class="o">.</span><span class="n">reweighted</span> <span class="o">=</span> <span class="n">obs_a</span><span class="o">.</span><span class="n">reweighted</span> <span class="ow">or</span> <span class="n">obs_b</span><span class="o">.</span><span class="n">reweighted</span>
</span><span id="correlate-1450"><a href="#correlate-1450"><span class="linenos">1450</span></a> <span class="k">return</span> <span class="n">o</span>
</span></pre></div>
<div class="docstring"><p>Correlate two observables.</p>
<h6 id="parameters">Parameters</h6>
<ul>
<li><strong>obs_a</strong> (Obs):
First observable</li>
<li><strong>obs_b</strong> (Obs):
Second observable</li>
</ul>
<h6 id="notes">Notes</h6>
<p>Keep in mind to only correlate primary observables which have not been reweighted
yet. The reweighting has to be applied after correlating the observables.
Currently only works if ensembles are identical (this is not strictly necessary).</p>
</div>
</section>
<section id="covariance">
<input id="covariance-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<div class="attr function">
<span class="def">def</span>
<span class="name">covariance</span><span class="signature pdoc-code condensed">(<span class="param"><span class="n">obs</span>, </span><span class="param"><span class="n">visualize</span><span class="o">=</span><span class="kc">False</span>, </span><span class="param"><span class="n">correlation</span><span class="o">=</span><span class="kc">False</span>, </span><span class="param"><span class="n">smooth</span><span class="o">=</span><span class="kc">None</span>, </span><span class="param"><span class="o">**</span><span class="n">kwargs</span></span><span class="return-annotation">):</span></span>
<label class="view-source-button" for="covariance-view-source"><span>View Source</span></label>
</div>
<a class="headerlink" href="#covariance"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="covariance-1453"><a href="#covariance-1453"><span class="linenos">1453</span></a><span class="k">def</span> <span class="nf">covariance</span><span class="p">(</span><span class="n">obs</span><span class="p">,</span> <span class="n">visualize</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">correlation</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">smooth</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
</span><span id="covariance-1454"><a href="#covariance-1454"><span class="linenos">1454</span></a><span class="w"> </span><span class="sa">r</span><span class="sd">&#39;&#39;&#39;Calculates the error covariance matrix of a set of observables.</span>
</span><span id="covariance-1455"><a href="#covariance-1455"><span class="linenos">1455</span></a>
</span><span id="covariance-1456"><a href="#covariance-1456"><span class="linenos">1456</span></a><span class="sd"> WARNING: This function should be used with care, especially for observables with support on multiple</span>
</span><span id="covariance-1457"><a href="#covariance-1457"><span class="linenos">1457</span></a><span class="sd"> ensembles with differing autocorrelations. See the notes below for details.</span>
</span><span id="covariance-1458"><a href="#covariance-1458"><span class="linenos">1458</span></a>
</span><span id="covariance-1459"><a href="#covariance-1459"><span class="linenos">1459</span></a><span class="sd"> The gamma method has to be applied first to all observables.</span>
</span><span id="covariance-1460"><a href="#covariance-1460"><span class="linenos">1460</span></a>
</span><span id="covariance-1461"><a href="#covariance-1461"><span class="linenos">1461</span></a><span class="sd"> Parameters</span>
</span><span id="covariance-1462"><a href="#covariance-1462"><span class="linenos">1462</span></a><span class="sd"> ----------</span>
</span><span id="covariance-1463"><a href="#covariance-1463"><span class="linenos">1463</span></a><span class="sd"> obs : list or numpy.ndarray</span>
</span><span id="covariance-1464"><a href="#covariance-1464"><span class="linenos">1464</span></a><span class="sd"> List or one dimensional array of Obs</span>
</span><span id="covariance-1465"><a href="#covariance-1465"><span class="linenos">1465</span></a><span class="sd"> visualize : bool</span>
</span><span id="covariance-1466"><a href="#covariance-1466"><span class="linenos">1466</span></a><span class="sd"> If True plots the corresponding normalized correlation matrix (default False).</span>
</span><span id="covariance-1467"><a href="#covariance-1467"><span class="linenos">1467</span></a><span class="sd"> correlation : bool</span>
</span><span id="covariance-1468"><a href="#covariance-1468"><span class="linenos">1468</span></a><span class="sd"> If True the correlation matrix instead of the error covariance matrix is returned (default False).</span>
</span><span id="covariance-1469"><a href="#covariance-1469"><span class="linenos">1469</span></a><span class="sd"> smooth : None or int</span>
</span><span id="covariance-1470"><a href="#covariance-1470"><span class="linenos">1470</span></a><span class="sd"> If smooth is an integer &#39;E&#39; between 2 and the dimension of the matrix minus 1 the eigenvalue</span>
</span><span id="covariance-1471"><a href="#covariance-1471"><span class="linenos">1471</span></a><span class="sd"> smoothing procedure of hep-lat/9412087 is applied to the correlation matrix which leaves the</span>
</span><span id="covariance-1472"><a href="#covariance-1472"><span class="linenos">1472</span></a><span class="sd"> largest E eigenvalues essentially unchanged and smoothes the smaller eigenvalues to avoid extremely</span>
</span><span id="covariance-1473"><a href="#covariance-1473"><span class="linenos">1473</span></a><span class="sd"> small ones.</span>
</span><span id="covariance-1474"><a href="#covariance-1474"><span class="linenos">1474</span></a>
</span><span id="covariance-1475"><a href="#covariance-1475"><span class="linenos">1475</span></a><span class="sd"> Notes</span>
</span><span id="covariance-1476"><a href="#covariance-1476"><span class="linenos">1476</span></a><span class="sd"> -----</span>
</span><span id="covariance-1477"><a href="#covariance-1477"><span class="linenos">1477</span></a><span class="sd"> The error covariance is defined such that it agrees with the squared standard error for two identical observables</span>
</span><span id="covariance-1478"><a href="#covariance-1478"><span class="linenos">1478</span></a><span class="sd"> $$\operatorname{cov}(a,a)=\sum_{s=1}^N\delta_a^s\delta_a^s/N^2=\Gamma_{aa}(0)/N=\operatorname{var}(a)/N=\sigma_a^2$$</span>
</span><span id="covariance-1479"><a href="#covariance-1479"><span class="linenos">1479</span></a><span class="sd"> in the absence of autocorrelation.</span>
</span><span id="covariance-1480"><a href="#covariance-1480"><span class="linenos">1480</span></a><span class="sd"> The error covariance is estimated by calculating the correlation matrix assuming no autocorrelation and then rescaling the correlation matrix by the full errors including the previous gamma method estimate for the autocorrelation of the observables. The covariance at windowsize 0 is guaranteed to be positive semi-definite</span>
</span><span id="covariance-1481"><a href="#covariance-1481"><span class="linenos">1481</span></a><span class="sd"> $$\sum_{i,j}v_i\Gamma_{ij}(0)v_j=\frac{1}{N}\sum_{s=1}^N\sum_{i,j}v_i\delta_i^s\delta_j^s v_j=\frac{1}{N}\sum_{s=1}^N\sum_{i}|v_i\delta_i^s|^2\geq 0\,,$$ for every $v\in\mathbb{R}^M$, while such an identity does not hold for larger windows/lags.</span>
</span><span id="covariance-1482"><a href="#covariance-1482"><span class="linenos">1482</span></a><span class="sd"> For observables defined on a single ensemble our approximation is equivalent to assuming that the integrated autocorrelation time of an off-diagonal element is equal to the geometric mean of the integrated autocorrelation times of the corresponding diagonal elements.</span>
</span><span id="covariance-1483"><a href="#covariance-1483"><span class="linenos">1483</span></a><span class="sd"> $$\tau_{\mathrm{int}, ij}=\sqrt{\tau_{\mathrm{int}, i}\times \tau_{\mathrm{int}, j}}$$</span>
</span><span id="covariance-1484"><a href="#covariance-1484"><span class="linenos">1484</span></a><span class="sd"> This construction ensures that the estimated covariance matrix is positive semi-definite (up to numerical rounding errors).</span>
</span><span id="covariance-1485"><a href="#covariance-1485"><span class="linenos">1485</span></a><span class="sd"> &#39;&#39;&#39;</span>
</span><span id="covariance-1486"><a href="#covariance-1486"><span class="linenos">1486</span></a>
</span><span id="covariance-1487"><a href="#covariance-1487"><span class="linenos">1487</span></a> <span class="n">length</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">obs</span><span class="p">)</span>
</span><span id="covariance-1488"><a href="#covariance-1488"><span class="linenos">1488</span></a>
</span><span id="covariance-1489"><a href="#covariance-1489"><span class="linenos">1489</span></a> <span class="n">max_samples</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">max</span><span class="p">([</span><span class="n">o</span><span class="o">.</span><span class="n">N</span> <span class="k">for</span> <span class="n">o</span> <span class="ow">in</span> <span class="n">obs</span><span class="p">])</span>
</span><span id="covariance-1490"><a href="#covariance-1490"><span class="linenos">1490</span></a> <span class="k">if</span> <span class="n">max_samples</span> <span class="o">&lt;=</span> <span class="n">length</span> <span class="ow">and</span> <span class="ow">not</span> <span class="p">[</span><span class="n">item</span> <span class="k">for</span> <span class="n">sublist</span> <span class="ow">in</span> <span class="p">[</span><span class="n">o</span><span class="o">.</span><span class="n">cov_names</span> <span class="k">for</span> <span class="n">o</span> <span class="ow">in</span> <span class="n">obs</span><span class="p">]</span> <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="n">sublist</span><span class="p">]:</span>
</span><span id="covariance-1491"><a href="#covariance-1491"><span class="linenos">1491</span></a> <span class="n">warnings</span><span class="o">.</span><span class="n">warn</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;The dimension of the covariance matrix (</span><span class="si">{</span><span class="n">length</span><span class="si">}</span><span class="s2">) is larger or equal to the number of samples (</span><span class="si">{</span><span class="n">max_samples</span><span class="si">}</span><span class="s2">). This will result in a rank deficient matrix.&quot;</span><span class="p">,</span> <span class="ne">RuntimeWarning</span><span class="p">)</span>
</span><span id="covariance-1492"><a href="#covariance-1492"><span class="linenos">1492</span></a>
</span><span id="covariance-1493"><a href="#covariance-1493"><span class="linenos">1493</span></a> <span class="n">cov</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">zeros</span><span class="p">((</span><span class="n">length</span><span class="p">,</span> <span class="n">length</span><span class="p">))</span>
</span><span id="covariance-1494"><a href="#covariance-1494"><span class="linenos">1494</span></a> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">length</span><span class="p">):</span>
</span><span id="covariance-1495"><a href="#covariance-1495"><span class="linenos">1495</span></a> <span class="k">for</span> <span class="n">j</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">i</span><span class="p">,</span> <span class="n">length</span><span class="p">):</span>
</span><span id="covariance-1496"><a href="#covariance-1496"><span class="linenos">1496</span></a> <span class="n">cov</span><span class="p">[</span><span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class="p">]</span> <span class="o">=</span> <span class="n">_covariance_element</span><span class="p">(</span><span class="n">obs</span><span class="p">[</span><span class="n">i</span><span class="p">],</span> <span class="n">obs</span><span class="p">[</span><span class="n">j</span><span class="p">])</span>
</span><span id="covariance-1497"><a href="#covariance-1497"><span class="linenos">1497</span></a> <span class="n">cov</span> <span class="o">=</span> <span class="n">cov</span> <span class="o">+</span> <span class="n">cov</span><span class="o">.</span><span class="n">T</span> <span class="o">-</span> <span class="n">np</span><span class="o">.</span><span class="n">diag</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">diag</span><span class="p">(</span><span class="n">cov</span><span class="p">))</span>
</span><span id="covariance-1498"><a href="#covariance-1498"><span class="linenos">1498</span></a>
</span><span id="covariance-1499"><a href="#covariance-1499"><span class="linenos">1499</span></a> <span class="n">corr</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">diag</span><span class="p">(</span><span class="mi">1</span> <span class="o">/</span> <span class="n">np</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">diag</span><span class="p">(</span><span class="n">cov</span><span class="p">)))</span> <span class="o">@</span> <span class="n">cov</span> <span class="o">@</span> <span class="n">np</span><span class="o">.</span><span class="n">diag</span><span class="p">(</span><span class="mi">1</span> <span class="o">/</span> <span class="n">np</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">diag</span><span class="p">(</span><span class="n">cov</span><span class="p">)))</span>
</span><span id="covariance-1500"><a href="#covariance-1500"><span class="linenos">1500</span></a>
</span><span id="covariance-1501"><a href="#covariance-1501"><span class="linenos">1501</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">smooth</span><span class="p">,</span> <span class="nb">int</span><span class="p">):</span>
</span><span id="covariance-1502"><a href="#covariance-1502"><span class="linenos">1502</span></a> <span class="n">corr</span> <span class="o">=</span> <span class="n">_smooth_eigenvalues</span><span class="p">(</span><span class="n">corr</span><span class="p">,</span> <span class="n">smooth</span><span class="p">)</span>
</span><span id="covariance-1503"><a href="#covariance-1503"><span class="linenos">1503</span></a>
</span><span id="covariance-1504"><a href="#covariance-1504"><span class="linenos">1504</span></a> <span class="k">if</span> <span class="n">visualize</span><span class="p">:</span>
</span><span id="covariance-1505"><a href="#covariance-1505"><span class="linenos">1505</span></a> <span class="n">plt</span><span class="o">.</span><span class="n">matshow</span><span class="p">(</span><span class="n">corr</span><span class="p">,</span> <span class="n">vmin</span><span class="o">=-</span><span class="mi">1</span><span class="p">,</span> <span class="n">vmax</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
</span><span id="covariance-1506"><a href="#covariance-1506"><span class="linenos">1506</span></a> <span class="n">plt</span><span class="o">.</span><span class="n">set_cmap</span><span class="p">(</span><span class="s1">&#39;RdBu&#39;</span><span class="p">)</span>
</span><span id="covariance-1507"><a href="#covariance-1507"><span class="linenos">1507</span></a> <span class="n">plt</span><span class="o">.</span><span class="n">colorbar</span><span class="p">()</span>
</span><span id="covariance-1508"><a href="#covariance-1508"><span class="linenos">1508</span></a> <span class="n">plt</span><span class="o">.</span><span class="n">draw</span><span class="p">()</span>
</span><span id="covariance-1509"><a href="#covariance-1509"><span class="linenos">1509</span></a>
</span><span id="covariance-1510"><a href="#covariance-1510"><span class="linenos">1510</span></a> <span class="k">if</span> <span class="n">correlation</span> <span class="ow">is</span> <span class="kc">True</span><span class="p">:</span>
</span><span id="covariance-1511"><a href="#covariance-1511"><span class="linenos">1511</span></a> <span class="k">return</span> <span class="n">corr</span>
</span><span id="covariance-1512"><a href="#covariance-1512"><span class="linenos">1512</span></a>
</span><span id="covariance-1513"><a href="#covariance-1513"><span class="linenos">1513</span></a> <span class="n">errors</span> <span class="o">=</span> <span class="p">[</span><span class="n">o</span><span class="o">.</span><span class="n">dvalue</span> <span class="k">for</span> <span class="n">o</span> <span class="ow">in</span> <span class="n">obs</span><span class="p">]</span>
</span><span id="covariance-1514"><a href="#covariance-1514"><span class="linenos">1514</span></a> <span class="n">cov</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">diag</span><span class="p">(</span><span class="n">errors</span><span class="p">)</span> <span class="o">@</span> <span class="n">corr</span> <span class="o">@</span> <span class="n">np</span><span class="o">.</span><span class="n">diag</span><span class="p">(</span><span class="n">errors</span><span class="p">)</span>
</span><span id="covariance-1515"><a href="#covariance-1515"><span class="linenos">1515</span></a>
</span><span id="covariance-1516"><a href="#covariance-1516"><span class="linenos">1516</span></a> <span class="n">eigenvalues</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">linalg</span><span class="o">.</span><span class="n">eigh</span><span class="p">(</span><span class="n">cov</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span>
</span><span id="covariance-1517"><a href="#covariance-1517"><span class="linenos">1517</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">np</span><span class="o">.</span><span class="n">all</span><span class="p">(</span><span class="n">eigenvalues</span> <span class="o">&gt;=</span> <span class="mi">0</span><span class="p">):</span>
</span><span id="covariance-1518"><a href="#covariance-1518"><span class="linenos">1518</span></a> <span class="n">warnings</span><span class="o">.</span><span class="n">warn</span><span class="p">(</span><span class="s2">&quot;Covariance matrix is not positive semi-definite (Eigenvalues: &quot;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">eigenvalues</span><span class="p">)</span> <span class="o">+</span> <span class="s2">&quot;)&quot;</span><span class="p">,</span> <span class="ne">RuntimeWarning</span><span class="p">)</span>
</span><span id="covariance-1519"><a href="#covariance-1519"><span class="linenos">1519</span></a>
</span><span id="covariance-1520"><a href="#covariance-1520"><span class="linenos">1520</span></a> <span class="k">return</span> <span class="n">cov</span>
</span></pre></div>
<div class="docstring"><p>Calculates the error covariance matrix of a set of observables.</p>
<p>WARNING: This function should be used with care, especially for observables with support on multiple
ensembles with differing autocorrelations. See the notes below for details.</p>
<p>The gamma method has to be applied first to all observables.</p>
<h6 id="parameters">Parameters</h6>
<ul>
<li><strong>obs</strong> (list or numpy.ndarray):
List or one dimensional array of Obs</li>
<li><strong>visualize</strong> (bool):
If True plots the corresponding normalized correlation matrix (default False).</li>
<li><strong>correlation</strong> (bool):
If True the correlation matrix instead of the error covariance matrix is returned (default False).</li>
<li><strong>smooth</strong> (None or int):
If smooth is an integer 'E' between 2 and the dimension of the matrix minus 1 the eigenvalue
smoothing procedure of hep-lat/9412087 is applied to the correlation matrix which leaves the
largest E eigenvalues essentially unchanged and smoothes the smaller eigenvalues to avoid extremely
small ones.</li>
</ul>
<h6 id="notes">Notes</h6>
<p>The error covariance is defined such that it agrees with the squared standard error for two identical observables
$$\operatorname{cov}(a,a)=\sum_{s=1}^N\delta_a^s\delta_a^s/N^2=\Gamma_{aa}(0)/N=\operatorname{var}(a)/N=\sigma_a^2$$
in the absence of autocorrelation.
The error covariance is estimated by calculating the correlation matrix assuming no autocorrelation and then rescaling the correlation matrix by the full errors including the previous gamma method estimate for the autocorrelation of the observables. The covariance at windowsize 0 is guaranteed to be positive semi-definite
$$\sum_{i,j}v_i\Gamma_{ij}(0)v_j=\frac{1}{N}\sum_{s=1}^N\sum_{i,j}v_i\delta_i^s\delta_j^s v_j=\frac{1}{N}\sum_{s=1}^N\sum_{i}|v_i\delta_i^s|^2\geq 0\,,$$ for every $v\in\mathbb{R}^M$, while such an identity does not hold for larger windows/lags.
For observables defined on a single ensemble our approximation is equivalent to assuming that the integrated autocorrelation time of an off-diagonal element is equal to the geometric mean of the integrated autocorrelation times of the corresponding diagonal elements.
$$\tau_{\mathrm{int}, ij}=\sqrt{\tau_{\mathrm{int}, i}\times \tau_{\mathrm{int}, j}}$$
This construction ensures that the estimated covariance matrix is positive semi-definite (up to numerical rounding errors).</p>
</div>
</section>
<section id="import_jackknife">
<input id="import_jackknife-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<div class="attr function">
<span class="def">def</span>
<span class="name">import_jackknife</span><span class="signature pdoc-code condensed">(<span class="param"><span class="n">jacks</span>, </span><span class="param"><span class="n">name</span>, </span><span class="param"><span class="n">idl</span><span class="o">=</span><span class="kc">None</span></span><span class="return-annotation">):</span></span>
<label class="view-source-button" for="import_jackknife-view-source"><span>View Source</span></label>
</div>
<a class="headerlink" href="#import_jackknife"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="import_jackknife-1600"><a href="#import_jackknife-1600"><span class="linenos">1600</span></a><span class="k">def</span> <span class="nf">import_jackknife</span><span class="p">(</span><span class="n">jacks</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">idl</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
</span><span id="import_jackknife-1601"><a href="#import_jackknife-1601"><span class="linenos">1601</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Imports jackknife samples and returns an Obs</span>
</span><span id="import_jackknife-1602"><a href="#import_jackknife-1602"><span class="linenos">1602</span></a>
</span><span id="import_jackknife-1603"><a href="#import_jackknife-1603"><span class="linenos">1603</span></a><span class="sd"> Parameters</span>
</span><span id="import_jackknife-1604"><a href="#import_jackknife-1604"><span class="linenos">1604</span></a><span class="sd"> ----------</span>
</span><span id="import_jackknife-1605"><a href="#import_jackknife-1605"><span class="linenos">1605</span></a><span class="sd"> jacks : numpy.ndarray</span>
</span><span id="import_jackknife-1606"><a href="#import_jackknife-1606"><span class="linenos">1606</span></a><span class="sd"> numpy array containing the mean value as zeroth entry and</span>
</span><span id="import_jackknife-1607"><a href="#import_jackknife-1607"><span class="linenos">1607</span></a><span class="sd"> the N jackknife samples as first to Nth entry.</span>
</span><span id="import_jackknife-1608"><a href="#import_jackknife-1608"><span class="linenos">1608</span></a><span class="sd"> name : str</span>
</span><span id="import_jackknife-1609"><a href="#import_jackknife-1609"><span class="linenos">1609</span></a><span class="sd"> name of the ensemble the samples are defined on.</span>
</span><span id="import_jackknife-1610"><a href="#import_jackknife-1610"><span class="linenos">1610</span></a><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="import_jackknife-1611"><a href="#import_jackknife-1611"><span class="linenos">1611</span></a> <span class="n">length</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">jacks</span><span class="p">)</span> <span class="o">-</span> <span class="mi">1</span>
</span><span id="import_jackknife-1612"><a href="#import_jackknife-1612"><span class="linenos">1612</span></a> <span class="n">prj</span> <span class="o">=</span> <span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">ones</span><span class="p">((</span><span class="n">length</span><span class="p">,</span> <span class="n">length</span><span class="p">))</span> <span class="o">-</span> <span class="p">(</span><span class="n">length</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> <span class="o">*</span> <span class="n">np</span><span class="o">.</span><span class="n">identity</span><span class="p">(</span><span class="n">length</span><span class="p">))</span>
</span><span id="import_jackknife-1613"><a href="#import_jackknife-1613"><span class="linenos">1613</span></a> <span class="n">samples</span> <span class="o">=</span> <span class="n">jacks</span><span class="p">[</span><span class="mi">1</span><span class="p">:]</span> <span class="o">@</span> <span class="n">prj</span>
</span><span id="import_jackknife-1614"><a href="#import_jackknife-1614"><span class="linenos">1614</span></a> <span class="n">mean</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">mean</span><span class="p">(</span><span class="n">samples</span><span class="p">)</span>
</span><span id="import_jackknife-1615"><a href="#import_jackknife-1615"><span class="linenos">1615</span></a> <span class="n">new_obs</span> <span class="o">=</span> <span class="n">Obs</span><span class="p">([</span><span class="n">samples</span> <span class="o">-</span> <span class="n">mean</span><span class="p">],</span> <span class="p">[</span><span class="n">name</span><span class="p">],</span> <span class="n">idl</span><span class="o">=</span><span class="n">idl</span><span class="p">,</span> <span class="n">means</span><span class="o">=</span><span class="p">[</span><span class="n">mean</span><span class="p">])</span>
</span><span id="import_jackknife-1616"><a href="#import_jackknife-1616"><span class="linenos">1616</span></a> <span class="n">new_obs</span><span class="o">.</span><span class="n">_value</span> <span class="o">=</span> <span class="n">jacks</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
</span><span id="import_jackknife-1617"><a href="#import_jackknife-1617"><span class="linenos">1617</span></a> <span class="k">return</span> <span class="n">new_obs</span>
</span></pre></div>
<div class="docstring"><p>Imports jackknife samples and returns an Obs</p>
<h6 id="parameters">Parameters</h6>
<ul>
<li><strong>jacks</strong> (numpy.ndarray):
numpy array containing the mean value as zeroth entry and
the N jackknife samples as first to Nth entry.</li>
<li><strong>name</strong> (str):
name of the ensemble the samples are defined on.</li>
</ul>
</div>
</section>
<section id="import_bootstrap">
<input id="import_bootstrap-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<div class="attr function">
<span class="def">def</span>
<span class="name">import_bootstrap</span><span class="signature pdoc-code condensed">(<span class="param"><span class="n">boots</span>, </span><span class="param"><span class="n">name</span>, </span><span class="param"><span class="n">random_numbers</span></span><span class="return-annotation">):</span></span>
<label class="view-source-button" for="import_bootstrap-view-source"><span>View Source</span></label>
</div>
<a class="headerlink" href="#import_bootstrap"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="import_bootstrap-1620"><a href="#import_bootstrap-1620"><span class="linenos">1620</span></a><span class="k">def</span> <span class="nf">import_bootstrap</span><span class="p">(</span><span class="n">boots</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">random_numbers</span><span class="p">):</span>
</span><span id="import_bootstrap-1621"><a href="#import_bootstrap-1621"><span class="linenos">1621</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Imports bootstrap samples and returns an Obs</span>
</span><span id="import_bootstrap-1622"><a href="#import_bootstrap-1622"><span class="linenos">1622</span></a>
</span><span id="import_bootstrap-1623"><a href="#import_bootstrap-1623"><span class="linenos">1623</span></a><span class="sd"> Parameters</span>
</span><span id="import_bootstrap-1624"><a href="#import_bootstrap-1624"><span class="linenos">1624</span></a><span class="sd"> ----------</span>
</span><span id="import_bootstrap-1625"><a href="#import_bootstrap-1625"><span class="linenos">1625</span></a><span class="sd"> boots : numpy.ndarray</span>
</span><span id="import_bootstrap-1626"><a href="#import_bootstrap-1626"><span class="linenos">1626</span></a><span class="sd"> numpy array containing the mean value as zeroth entry and</span>
</span><span id="import_bootstrap-1627"><a href="#import_bootstrap-1627"><span class="linenos">1627</span></a><span class="sd"> the N bootstrap samples as first to Nth entry.</span>
</span><span id="import_bootstrap-1628"><a href="#import_bootstrap-1628"><span class="linenos">1628</span></a><span class="sd"> name : str</span>
</span><span id="import_bootstrap-1629"><a href="#import_bootstrap-1629"><span class="linenos">1629</span></a><span class="sd"> name of the ensemble the samples are defined on.</span>
</span><span id="import_bootstrap-1630"><a href="#import_bootstrap-1630"><span class="linenos">1630</span></a><span class="sd"> random_numbers : np.ndarray</span>
</span><span id="import_bootstrap-1631"><a href="#import_bootstrap-1631"><span class="linenos">1631</span></a><span class="sd"> Array of shape (samples, length) containing the random numbers to generate the bootstrap samples,</span>
</span><span id="import_bootstrap-1632"><a href="#import_bootstrap-1632"><span class="linenos">1632</span></a><span class="sd"> where samples is the number of bootstrap samples and length is the length of the original Monte Carlo</span>
</span><span id="import_bootstrap-1633"><a href="#import_bootstrap-1633"><span class="linenos">1633</span></a><span class="sd"> chain to be reconstructed.</span>
</span><span id="import_bootstrap-1634"><a href="#import_bootstrap-1634"><span class="linenos">1634</span></a><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="import_bootstrap-1635"><a href="#import_bootstrap-1635"><span class="linenos">1635</span></a> <span class="n">samples</span><span class="p">,</span> <span class="n">length</span> <span class="o">=</span> <span class="n">random_numbers</span><span class="o">.</span><span class="n">shape</span>
</span><span id="import_bootstrap-1636"><a href="#import_bootstrap-1636"><span class="linenos">1636</span></a> <span class="k">if</span> <span class="n">samples</span> <span class="o">!=</span> <span class="nb">len</span><span class="p">(</span><span class="n">boots</span><span class="p">)</span> <span class="o">-</span> <span class="mi">1</span><span class="p">:</span>
</span><span id="import_bootstrap-1637"><a href="#import_bootstrap-1637"><span class="linenos">1637</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;Random numbers do not have the correct shape.&quot;</span><span class="p">)</span>
</span><span id="import_bootstrap-1638"><a href="#import_bootstrap-1638"><span class="linenos">1638</span></a>
</span><span id="import_bootstrap-1639"><a href="#import_bootstrap-1639"><span class="linenos">1639</span></a> <span class="k">if</span> <span class="n">samples</span> <span class="o">&lt;</span> <span class="n">length</span><span class="p">:</span>
</span><span id="import_bootstrap-1640"><a href="#import_bootstrap-1640"><span class="linenos">1640</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;Obs can&#39;t be reconstructed if there are fewer bootstrap samples than Monte Carlo data points.&quot;</span><span class="p">)</span>
</span><span id="import_bootstrap-1641"><a href="#import_bootstrap-1641"><span class="linenos">1641</span></a>
</span><span id="import_bootstrap-1642"><a href="#import_bootstrap-1642"><span class="linenos">1642</span></a> <span class="n">proj</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">vstack</span><span class="p">([</span><span class="n">np</span><span class="o">.</span><span class="n">bincount</span><span class="p">(</span><span class="n">o</span><span class="p">,</span> <span class="n">minlength</span><span class="o">=</span><span class="n">length</span><span class="p">)</span> <span class="k">for</span> <span class="n">o</span> <span class="ow">in</span> <span class="n">random_numbers</span><span class="p">])</span> <span class="o">/</span> <span class="n">length</span>
</span><span id="import_bootstrap-1643"><a href="#import_bootstrap-1643"><span class="linenos">1643</span></a>
</span><span id="import_bootstrap-1644"><a href="#import_bootstrap-1644"><span class="linenos">1644</span></a> <span class="n">samples</span> <span class="o">=</span> <span class="n">scipy</span><span class="o">.</span><span class="n">linalg</span><span class="o">.</span><span class="n">lstsq</span><span class="p">(</span><span class="n">proj</span><span class="p">,</span> <span class="n">boots</span><span class="p">[</span><span class="mi">1</span><span class="p">:])[</span><span class="mi">0</span><span class="p">]</span>
</span><span id="import_bootstrap-1645"><a href="#import_bootstrap-1645"><span class="linenos">1645</span></a> <span class="n">ret</span> <span class="o">=</span> <span class="n">Obs</span><span class="p">([</span><span class="n">samples</span><span class="p">],</span> <span class="p">[</span><span class="n">name</span><span class="p">])</span>
</span><span id="import_bootstrap-1646"><a href="#import_bootstrap-1646"><span class="linenos">1646</span></a> <span class="n">ret</span><span class="o">.</span><span class="n">_value</span> <span class="o">=</span> <span class="n">boots</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
</span><span id="import_bootstrap-1647"><a href="#import_bootstrap-1647"><span class="linenos">1647</span></a> <span class="k">return</span> <span class="n">ret</span>
</span></pre></div>
<div class="docstring"><p>Imports bootstrap samples and returns an Obs</p>
<h6 id="parameters">Parameters</h6>
<ul>
<li><strong>boots</strong> (numpy.ndarray):
numpy array containing the mean value as zeroth entry and
the N bootstrap samples as first to Nth entry.</li>
<li><strong>name</strong> (str):
name of the ensemble the samples are defined on.</li>
<li><strong>random_numbers</strong> (np.ndarray):
Array of shape (samples, length) containing the random numbers to generate the bootstrap samples,
where samples is the number of bootstrap samples and length is the length of the original Monte Carlo
chain to be reconstructed.</li>
</ul>
</div>
</section>
<section id="merge_obs">
<input id="merge_obs-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<div class="attr function">
<span class="def">def</span>
<span class="name">merge_obs</span><span class="signature pdoc-code condensed">(<span class="param"><span class="n">list_of_obs</span></span><span class="return-annotation">):</span></span>
<label class="view-source-button" for="merge_obs-view-source"><span>View Source</span></label>
</div>
<a class="headerlink" href="#merge_obs"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="merge_obs-1650"><a href="#merge_obs-1650"><span class="linenos">1650</span></a><span class="k">def</span> <span class="nf">merge_obs</span><span class="p">(</span><span class="n">list_of_obs</span><span class="p">):</span>
</span><span id="merge_obs-1651"><a href="#merge_obs-1651"><span class="linenos">1651</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Combine all observables in list_of_obs into one new observable</span>
</span><span id="merge_obs-1652"><a href="#merge_obs-1652"><span class="linenos">1652</span></a>
</span><span id="merge_obs-1653"><a href="#merge_obs-1653"><span class="linenos">1653</span></a><span class="sd"> Parameters</span>
</span><span id="merge_obs-1654"><a href="#merge_obs-1654"><span class="linenos">1654</span></a><span class="sd"> ----------</span>
</span><span id="merge_obs-1655"><a href="#merge_obs-1655"><span class="linenos">1655</span></a><span class="sd"> list_of_obs : list</span>
</span><span id="merge_obs-1656"><a href="#merge_obs-1656"><span class="linenos">1656</span></a><span class="sd"> list of the Obs object to be combined</span>
</span><span id="merge_obs-1657"><a href="#merge_obs-1657"><span class="linenos">1657</span></a>
</span><span id="merge_obs-1658"><a href="#merge_obs-1658"><span class="linenos">1658</span></a><span class="sd"> Notes</span>
</span><span id="merge_obs-1659"><a href="#merge_obs-1659"><span class="linenos">1659</span></a><span class="sd"> -----</span>
</span><span id="merge_obs-1660"><a href="#merge_obs-1660"><span class="linenos">1660</span></a><span class="sd"> It is not possible to combine obs which are based on the same replicum</span>
</span><span id="merge_obs-1661"><a href="#merge_obs-1661"><span class="linenos">1661</span></a><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="merge_obs-1662"><a href="#merge_obs-1662"><span class="linenos">1662</span></a> <span class="n">replist</span> <span class="o">=</span> <span class="p">[</span><span class="n">item</span> <span class="k">for</span> <span class="n">obs</span> <span class="ow">in</span> <span class="n">list_of_obs</span> <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="n">obs</span><span class="o">.</span><span class="n">names</span><span class="p">]</span>
</span><span id="merge_obs-1663"><a href="#merge_obs-1663"><span class="linenos">1663</span></a> <span class="k">if</span> <span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">replist</span><span class="p">)</span> <span class="o">==</span> <span class="nb">len</span><span class="p">(</span><span class="nb">set</span><span class="p">(</span><span class="n">replist</span><span class="p">)))</span> <span class="ow">is</span> <span class="kc">False</span><span class="p">:</span>
</span><span id="merge_obs-1664"><a href="#merge_obs-1664"><span class="linenos">1664</span></a> <span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s1">&#39;list_of_obs contains duplicate replica: </span><span class="si">%s</span><span class="s1">&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">replist</span><span class="p">)))</span>
</span><span id="merge_obs-1665"><a href="#merge_obs-1665"><span class="linenos">1665</span></a> <span class="k">if</span> <span class="nb">any</span><span class="p">([</span><span class="nb">len</span><span class="p">(</span><span class="n">o</span><span class="o">.</span><span class="n">cov_names</span><span class="p">)</span> <span class="k">for</span> <span class="n">o</span> <span class="ow">in</span> <span class="n">list_of_obs</span><span class="p">]):</span>
</span><span id="merge_obs-1666"><a href="#merge_obs-1666"><span class="linenos">1666</span></a> <span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s1">&#39;Not possible to merge data that contains covobs!&#39;</span><span class="p">)</span>
</span><span id="merge_obs-1667"><a href="#merge_obs-1667"><span class="linenos">1667</span></a> <span class="n">new_dict</span> <span class="o">=</span> <span class="p">{}</span>
</span><span id="merge_obs-1668"><a href="#merge_obs-1668"><span class="linenos">1668</span></a> <span class="n">idl_dict</span> <span class="o">=</span> <span class="p">{}</span>
</span><span id="merge_obs-1669"><a href="#merge_obs-1669"><span class="linenos">1669</span></a> <span class="k">for</span> <span class="n">o</span> <span class="ow">in</span> <span class="n">list_of_obs</span><span class="p">:</span>
</span><span id="merge_obs-1670"><a href="#merge_obs-1670"><span class="linenos">1670</span></a> <span class="n">new_dict</span><span class="o">.</span><span class="n">update</span><span class="p">({</span><span class="n">key</span><span class="p">:</span> <span class="n">o</span><span class="o">.</span><span class="n">deltas</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">key</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> <span class="o">+</span> <span class="n">o</span><span class="o">.</span><span class="n">r_values</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">key</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span>
</span><span id="merge_obs-1671"><a href="#merge_obs-1671"><span class="linenos">1671</span></a> <span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="nb">set</span><span class="p">(</span><span class="n">o</span><span class="o">.</span><span class="n">deltas</span><span class="p">)</span> <span class="o">|</span> <span class="nb">set</span><span class="p">(</span><span class="n">o</span><span class="o">.</span><span class="n">r_values</span><span class="p">)})</span>
</span><span id="merge_obs-1672"><a href="#merge_obs-1672"><span class="linenos">1672</span></a> <span class="n">idl_dict</span><span class="o">.</span><span class="n">update</span><span class="p">({</span><span class="n">key</span><span class="p">:</span> <span class="n">o</span><span class="o">.</span><span class="n">idl</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">key</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> <span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="nb">set</span><span class="p">(</span><span class="n">o</span><span class="o">.</span><span class="n">deltas</span><span class="p">)})</span>
</span><span id="merge_obs-1673"><a href="#merge_obs-1673"><span class="linenos">1673</span></a>
</span><span id="merge_obs-1674"><a href="#merge_obs-1674"><span class="linenos">1674</span></a> <span class="n">names</span> <span class="o">=</span> <span class="nb">sorted</span><span class="p">(</span><span class="n">new_dict</span><span class="o">.</span><span class="n">keys</span><span class="p">())</span>
</span><span id="merge_obs-1675"><a href="#merge_obs-1675"><span class="linenos">1675</span></a> <span class="n">o</span> <span class="o">=</span> <span class="n">Obs</span><span class="p">([</span><span class="n">new_dict</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="k">for</span> <span class="n">name</span> <span class="ow">in</span> <span class="n">names</span><span class="p">],</span> <span class="n">names</span><span class="p">,</span> <span class="n">idl</span><span class="o">=</span><span class="p">[</span><span class="n">idl_dict</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="k">for</span> <span class="n">name</span> <span class="ow">in</span> <span class="n">names</span><span class="p">])</span>
</span><span id="merge_obs-1676"><a href="#merge_obs-1676"><span class="linenos">1676</span></a> <span class="n">o</span><span class="o">.</span><span class="n">reweighted</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">max</span><span class="p">([</span><span class="n">oi</span><span class="o">.</span><span class="n">reweighted</span> <span class="k">for</span> <span class="n">oi</span> <span class="ow">in</span> <span class="n">list_of_obs</span><span class="p">])</span>
</span><span id="merge_obs-1677"><a href="#merge_obs-1677"><span class="linenos">1677</span></a> <span class="k">return</span> <span class="n">o</span>
</span></pre></div>
<div class="docstring"><p>Combine all observables in list_of_obs into one new observable</p>
<h6 id="parameters">Parameters</h6>
<ul>
<li><strong>list_of_obs</strong> (list):
list of the Obs object to be combined</li>
</ul>
<h6 id="notes">Notes</h6>
<p>It is not possible to combine obs which are based on the same replicum</p>
</div>
</section>
<section id="cov_Obs">
<input id="cov_Obs-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<div class="attr function">
<span class="def">def</span>
<span class="name">cov_Obs</span><span class="signature pdoc-code condensed">(<span class="param"><span class="n">means</span>, </span><span class="param"><span class="n">cov</span>, </span><span class="param"><span class="n">name</span>, </span><span class="param"><span class="n">grad</span><span class="o">=</span><span class="kc">None</span></span><span class="return-annotation">):</span></span>
<label class="view-source-button" for="cov_Obs-view-source"><span>View Source</span></label>
</div>
<a class="headerlink" href="#cov_Obs"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="cov_Obs-1680"><a href="#cov_Obs-1680"><span class="linenos">1680</span></a><span class="k">def</span> <span class="nf">cov_Obs</span><span class="p">(</span><span class="n">means</span><span class="p">,</span> <span class="n">cov</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">grad</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
</span><span id="cov_Obs-1681"><a href="#cov_Obs-1681"><span class="linenos">1681</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Create an Obs based on mean(s) and a covariance matrix</span>
</span><span id="cov_Obs-1682"><a href="#cov_Obs-1682"><span class="linenos">1682</span></a>
</span><span id="cov_Obs-1683"><a href="#cov_Obs-1683"><span class="linenos">1683</span></a><span class="sd"> Parameters</span>
</span><span id="cov_Obs-1684"><a href="#cov_Obs-1684"><span class="linenos">1684</span></a><span class="sd"> ----------</span>
</span><span id="cov_Obs-1685"><a href="#cov_Obs-1685"><span class="linenos">1685</span></a><span class="sd"> mean : list of floats or float</span>
</span><span id="cov_Obs-1686"><a href="#cov_Obs-1686"><span class="linenos">1686</span></a><span class="sd"> N mean value(s) of the new Obs</span>
</span><span id="cov_Obs-1687"><a href="#cov_Obs-1687"><span class="linenos">1687</span></a><span class="sd"> cov : list or array</span>
</span><span id="cov_Obs-1688"><a href="#cov_Obs-1688"><span class="linenos">1688</span></a><span class="sd"> 2d (NxN) Covariance matrix, 1d diagonal entries or 0d covariance</span>
</span><span id="cov_Obs-1689"><a href="#cov_Obs-1689"><span class="linenos">1689</span></a><span class="sd"> name : str</span>
</span><span id="cov_Obs-1690"><a href="#cov_Obs-1690"><span class="linenos">1690</span></a><span class="sd"> identifier for the covariance matrix</span>
</span><span id="cov_Obs-1691"><a href="#cov_Obs-1691"><span class="linenos">1691</span></a><span class="sd"> grad : list or array</span>
</span><span id="cov_Obs-1692"><a href="#cov_Obs-1692"><span class="linenos">1692</span></a><span class="sd"> Gradient of the Covobs wrt. the means belonging to cov.</span>
</span><span id="cov_Obs-1693"><a href="#cov_Obs-1693"><span class="linenos">1693</span></a><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="cov_Obs-1694"><a href="#cov_Obs-1694"><span class="linenos">1694</span></a>
</span><span id="cov_Obs-1695"><a href="#cov_Obs-1695"><span class="linenos">1695</span></a> <span class="k">def</span> <span class="nf">covobs_to_obs</span><span class="p">(</span><span class="n">co</span><span class="p">):</span>
</span><span id="cov_Obs-1696"><a href="#cov_Obs-1696"><span class="linenos">1696</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Make an Obs out of a Covobs</span>
</span><span id="cov_Obs-1697"><a href="#cov_Obs-1697"><span class="linenos">1697</span></a>
</span><span id="cov_Obs-1698"><a href="#cov_Obs-1698"><span class="linenos">1698</span></a><span class="sd"> Parameters</span>
</span><span id="cov_Obs-1699"><a href="#cov_Obs-1699"><span class="linenos">1699</span></a><span class="sd"> ----------</span>
</span><span id="cov_Obs-1700"><a href="#cov_Obs-1700"><span class="linenos">1700</span></a><span class="sd"> co : Covobs</span>
</span><span id="cov_Obs-1701"><a href="#cov_Obs-1701"><span class="linenos">1701</span></a><span class="sd"> Covobs to be embedded into the Obs</span>
</span><span id="cov_Obs-1702"><a href="#cov_Obs-1702"><span class="linenos">1702</span></a><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="cov_Obs-1703"><a href="#cov_Obs-1703"><span class="linenos">1703</span></a> <span class="n">o</span> <span class="o">=</span> <span class="n">Obs</span><span class="p">([],</span> <span class="p">[],</span> <span class="n">means</span><span class="o">=</span><span class="p">[])</span>
</span><span id="cov_Obs-1704"><a href="#cov_Obs-1704"><span class="linenos">1704</span></a> <span class="n">o</span><span class="o">.</span><span class="n">_value</span> <span class="o">=</span> <span class="n">co</span><span class="o">.</span><span class="n">value</span>
</span><span id="cov_Obs-1705"><a href="#cov_Obs-1705"><span class="linenos">1705</span></a> <span class="n">o</span><span class="o">.</span><span class="n">names</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">co</span><span class="o">.</span><span class="n">name</span><span class="p">)</span>
</span><span id="cov_Obs-1706"><a href="#cov_Obs-1706"><span class="linenos">1706</span></a> <span class="n">o</span><span class="o">.</span><span class="n">_covobs</span><span class="p">[</span><span class="n">co</span><span class="o">.</span><span class="n">name</span><span class="p">]</span> <span class="o">=</span> <span class="n">co</span>
</span><span id="cov_Obs-1707"><a href="#cov_Obs-1707"><span class="linenos">1707</span></a> <span class="n">o</span><span class="o">.</span><span class="n">_dvalue</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="n">co</span><span class="o">.</span><span class="n">errsq</span><span class="p">())</span>
</span><span id="cov_Obs-1708"><a href="#cov_Obs-1708"><span class="linenos">1708</span></a> <span class="k">return</span> <span class="n">o</span>
</span><span id="cov_Obs-1709"><a href="#cov_Obs-1709"><span class="linenos">1709</span></a>
</span><span id="cov_Obs-1710"><a href="#cov_Obs-1710"><span class="linenos">1710</span></a> <span class="n">ol</span> <span class="o">=</span> <span class="p">[]</span>
</span><span id="cov_Obs-1711"><a href="#cov_Obs-1711"><span class="linenos">1711</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">means</span><span class="p">,</span> <span class="p">(</span><span class="nb">float</span><span class="p">,</span> <span class="nb">int</span><span class="p">)):</span>
</span><span id="cov_Obs-1712"><a href="#cov_Obs-1712"><span class="linenos">1712</span></a> <span class="n">means</span> <span class="o">=</span> <span class="p">[</span><span class="n">means</span><span class="p">]</span>
</span><span id="cov_Obs-1713"><a href="#cov_Obs-1713"><span class="linenos">1713</span></a>
</span><span id="cov_Obs-1714"><a href="#cov_Obs-1714"><span class="linenos">1714</span></a> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">means</span><span class="p">)):</span>
</span><span id="cov_Obs-1715"><a href="#cov_Obs-1715"><span class="linenos">1715</span></a> <span class="n">ol</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">covobs_to_obs</span><span class="p">(</span><span class="n">Covobs</span><span class="p">(</span><span class="n">means</span><span class="p">[</span><span class="n">i</span><span class="p">],</span> <span class="n">cov</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">pos</span><span class="o">=</span><span class="n">i</span><span class="p">,</span> <span class="n">grad</span><span class="o">=</span><span class="n">grad</span><span class="p">)))</span>
</span><span id="cov_Obs-1716"><a href="#cov_Obs-1716"><span class="linenos">1716</span></a> <span class="k">if</span> <span class="n">ol</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">covobs</span><span class="p">[</span><span class="n">name</span><span class="p">]</span><span class="o">.</span><span class="n">N</span> <span class="o">!=</span> <span class="nb">len</span><span class="p">(</span><span class="n">means</span><span class="p">):</span>
</span><span id="cov_Obs-1717"><a href="#cov_Obs-1717"><span class="linenos">1717</span></a> <span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s1">&#39;You have to provide </span><span class="si">%d</span><span class="s1"> mean values!&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">ol</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">N</span><span class="p">))</span>
</span><span id="cov_Obs-1718"><a href="#cov_Obs-1718"><span class="linenos">1718</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">ol</span><span class="p">)</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span>
</span><span id="cov_Obs-1719"><a href="#cov_Obs-1719"><span class="linenos">1719</span></a> <span class="k">return</span> <span class="n">ol</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
</span><span id="cov_Obs-1720"><a href="#cov_Obs-1720"><span class="linenos">1720</span></a> <span class="k">return</span> <span class="n">ol</span>
</span></pre></div>
<div class="docstring"><p>Create an Obs based on mean(s) and a covariance matrix</p>
<h6 id="parameters">Parameters</h6>
<ul>
<li><strong>mean</strong> (list of floats or float):
N mean value(s) of the new Obs</li>
<li><strong>cov</strong> (list or array):
2d (NxN) Covariance matrix, 1d diagonal entries or 0d covariance</li>
<li><strong>name</strong> (str):
identifier for the covariance matrix</li>
<li><strong>grad</strong> (list or array):
Gradient of the Covobs wrt. the means belonging to cov.</li>
</ul>
</div>
</section>
</main>
<script>
function escapeHTML(html) {
return document.createElement('div').appendChild(document.createTextNode(html)).parentNode.innerHTML;
}
const originalContent = document.querySelector("main.pdoc");
let currentContent = originalContent;
function setContent(innerHTML) {
let elem;
if (innerHTML) {
elem = document.createElement("main");
elem.classList.add("pdoc");
elem.innerHTML = innerHTML;
} else {
elem = originalContent;
}
if (currentContent !== elem) {
currentContent.replaceWith(elem);
currentContent = elem;
}
}
function getSearchTerm() {
return (new URL(window.location)).searchParams.get("search");
}
const searchBox = document.querySelector(".pdoc input[type=search]");
searchBox.addEventListener("input", function () {
let url = new URL(window.location);
if (searchBox.value.trim()) {
url.hash = "";
url.searchParams.set("search", searchBox.value);
} else {
url.searchParams.delete("search");
}
history.replaceState("", "", url.toString());
onInput();
});
window.addEventListener("popstate", onInput);
let search, searchErr;
async function initialize() {
try {
search = await new Promise((resolve, reject) => {
const script = document.createElement("script");
script.type = "text/javascript";
script.async = true;
script.onload = () => resolve(window.pdocSearch);
script.onerror = (e) => reject(e);
script.src = "../search.js";
document.getElementsByTagName("head")[0].appendChild(script);
});
} catch (e) {
console.error("Cannot fetch pdoc search index");
searchErr = "Cannot fetch search index.";
}
onInput();
document.querySelector("nav.pdoc").addEventListener("click", e => {
if (e.target.hash) {
searchBox.value = "";
searchBox.dispatchEvent(new Event("input"));
}
});
}
function onInput() {
setContent((() => {
const term = getSearchTerm();
if (!term) {
return null
}
if (searchErr) {
return `<h3>Error: ${searchErr}</h3>`
}
if (!search) {
return "<h3>Searching...</h3>"
}
window.scrollTo({top: 0, left: 0, behavior: 'auto'});
const results = search(term);
let html;
if (results.length === 0) {
html = `No search results for '${escapeHTML(term)}'.`
} else {
html = `<h4>${results.length} search result${results.length > 1 ? "s" : ""} for '${escapeHTML(term)}'.</h4>`;
}
for (let result of results.slice(0, 10)) {
let doc = result.doc;
let url = `../${doc.modulename.replaceAll(".", "/")}.html`;
if (doc.qualname) {
url += `#${doc.qualname}`;
}
let heading;
switch (result.doc.kind) {
case "function":
if (doc.fullname.endsWith(".__init__")) {
heading = `<span class="name">${doc.fullname.replace(/\.__init__$/, "")}</span>${doc.signature}`;
} else {
heading = `<span class="def">${doc.funcdef}</span> <span class="name">${doc.fullname}</span>${doc.signature}`;
}
break;
case "class":
heading = `<span class="def">class</span> <span class="name">${doc.fullname}</span>`;
if (doc.bases)
heading += `<wbr>(<span class="base">${doc.bases}</span>)`;
heading += `:`;
break;
case "variable":
heading = `<span class="name">${doc.fullname}</span>`;
if (doc.annotation)
heading += `<span class="annotation">${doc.annotation}</span>`;
if (doc.default_value)
heading += `<span class="default_value"> = ${doc.default_value}</span>`;
break;
default:
heading = `<span class="name">${doc.fullname}</span>`;
break;
}
html += `
<section class="search-result">
<a href="${url}" class="attr ${doc.kind}">${heading}</a>
<div class="docstring">${doc.doc}</div>
</section>
`;
}
return html;
})());
}
if (getSearchTerm()) {
initialize();
searchBox.value = getSearchTerm();
onInput();
} else {
searchBox.addEventListener("focus", initialize, {once: true});
}
searchBox.addEventListener("keydown", e => {
if (["ArrowDown", "ArrowUp", "Enter"].includes(e.key)) {
let focused = currentContent.querySelector(".search-result.focused");
if (!focused) {
currentContent.querySelector(".search-result").classList.add("focused");
} else if (
e.key === "ArrowDown"
&& focused.nextElementSibling
&& focused.nextElementSibling.classList.contains("search-result")
) {
focused.classList.remove("focused");
focused.nextElementSibling.classList.add("focused");
focused.nextElementSibling.scrollIntoView({
behavior: "smooth",
block: "nearest",
inline: "nearest"
});
} else if (
e.key === "ArrowUp"
&& focused.previousElementSibling
&& focused.previousElementSibling.classList.contains("search-result")
) {
focused.classList.remove("focused");
focused.previousElementSibling.classList.add("focused");
focused.previousElementSibling.scrollIntoView({
behavior: "smooth",
block: "nearest",
inline: "nearest"
});
} else if (
e.key === "Enter"
) {
focused.querySelector("a").click();
}
}
});
</script></body>
</html>