1&&\"string\"==typeof v&&!d.checkClone&&je.test(v))return e.each((function(i){var o=e.eq(i);y&&(t[0]=v.call(this,i,o.html())),Me(o,t,n,r)}));if(p&&(a=(i=be(t,e[0].ownerDocument,!1,e,r)).firstChild,1===i.childNodes.length&&(i=a),a||r)){for(u=(s=w.map(ye(i,\"script\"),He)).length;f0&&me(a,!u&&ye(e,\"script\")),s},cleanData:function(e){for(var t,n,r,i=w.event.special,o=0;void 0!==(n=e[o]);o++)if(V(n)){if(t=n[Y.expando]){if(t.events)for(r in t.events)i[r]?w.event.remove(n,r):w.removeEvent(n,r,t.handle);n[Y.expando]=void 0}n[Q.expando]&&(n[Q.expando]=void 0)}}}),w.fn.extend({detach:function(e){return Ie(this,e,!0)},remove:function(e){return Ie(this,e)},text:function(e){return $(this,(function(e){return void 0===e?w.text(this):this.empty().each((function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)}))}),null,e,arguments.length)},append:function(){return Me(this,arguments,(function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Le(this,e).appendChild(e)}))},prepend:function(){return Me(this,arguments,(function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Le(this,e);t.insertBefore(e,t.firstChild)}}))},before:function(){return Me(this,arguments,(function(e){this.parentNode&&this.parentNode.insertBefore(e,this)}))},after:function(){return Me(this,arguments,(function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)}))},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(w.cleanData(ye(e,!1)),e.textContent=\"\");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map((function(){return w.clone(this,e,t)}))},html:function(e){return $(this,(function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if(\"string\"==typeof e&&!De.test(e)&&!ve[(he.exec(e)||[\"\",\"\"])[1].toLowerCase()]){e=w.htmlPrefilter(e);try{for(;n3,re.removeChild(t)),s}}))}();var Ue=[\"Webkit\",\"Moz\",\"ms\"],Xe=v.createElement(\"div\").style,Ve={};function Ge(e){var t=w.cssProps[e]||Ve[e];return t||(e in Xe?e:Ve[e]=function(e){for(var t=e[0].toUpperCase()+e.slice(1),n=Ue.length;n--;)if((e=Ue[n]+t)in Xe)return e}(e)||e)}var Ye=/^(none|table(?!-c[ea]).+)/,Qe=/^--/,Je={position:\"absolute\",visibility:\"hidden\",display:\"block\"},Ke={letterSpacing:\"0\",fontWeight:\"400\"};function Ze(e,t,n){var r=te.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||\"px\"):t}function et(e,t,n,r,i,o){var a=\"width\"===t?1:0,s=0,u=0;if(n===(r?\"border\":\"content\"))return 0;for(;a<4;a+=2)\"margin\"===n&&(u+=w.css(e,n+ne[a],!0,i)),r?(\"content\"===n&&(u-=w.css(e,\"padding\"+ne[a],!0,i)),\"margin\"!==n&&(u-=w.css(e,\"border\"+ne[a]+\"Width\",!0,i))):(u+=w.css(e,\"padding\"+ne[a],!0,i),\"padding\"!==n?u+=w.css(e,\"border\"+ne[a]+\"Width\",!0,i):s+=w.css(e,\"border\"+ne[a]+\"Width\",!0,i));return!r&&o>=0&&(u+=Math.max(0,Math.ceil(e[\"offset\"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))||0),u}function tt(e,t,n){var r=Fe(e),i=(!d.boxSizingReliable()||n)&&\"border-box\"===w.css(e,\"boxSizing\",!1,r),o=i,a=_e(e,t,r),s=\"offset\"+t[0].toUpperCase()+t.slice(1);if(We.test(a)){if(!n)return a;a=\"auto\"}return(!d.boxSizingReliable()&&i||!d.reliableTrDimensions()&&A(e,\"tr\")||\"auto\"===a||!parseFloat(a)&&\"inline\"===w.css(e,\"display\",!1,r))&&e.getClientRects().length&&(i=\"border-box\"===w.css(e,\"boxSizing\",!1,r),(o=s in e)&&(a=e[s])),(a=parseFloat(a)||0)+et(e,t,n||(i?\"border\":\"content\"),o,r,a)+\"px\"}function nt(e,t,n,r,i){return new nt.prototype.init(e,t,n,r,i)}w.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=_e(e,\"opacity\");return\"\"===n?\"1\":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=X(t),u=Qe.test(t),l=e.style;if(u||(t=Ge(s)),a=w.cssHooks[t]||w.cssHooks[s],void 0===n)return a&&\"get\"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];\"string\"===(o=typeof n)&&(i=te.exec(n))&&i[1]&&(n=se(e,t,i),o=\"number\"),null!=n&&n==n&&(\"number\"!==o||u||(n+=i&&i[3]||(w.cssNumber[s]?\"\":\"px\")),d.clearCloneStyle||\"\"!==n||0!==t.indexOf(\"background\")||(l[t]=\"inherit\"),a&&\"set\"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,s=X(t);return Qe.test(t)||(t=Ge(s)),(a=w.cssHooks[t]||w.cssHooks[s])&&\"get\"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=_e(e,t,r)),\"normal\"===i&&t in Ke&&(i=Ke[t]),\"\"===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),w.each([\"height\",\"width\"],(function(e,t){w.cssHooks[t]={get:function(e,n,r){if(n)return!Ye.test(w.css(e,\"display\"))||e.getClientRects().length&&e.getBoundingClientRect().width?tt(e,t,r):Be(e,Je,(function(){return tt(e,t,r)}))},set:function(e,n,r){var i,o=Fe(e),a=!d.scrollboxSize()&&\"absolute\"===o.position,s=(a||r)&&\"border-box\"===w.css(e,\"boxSizing\",!1,o),u=r?et(e,t,r,s,o):0;return s&&a&&(u-=Math.ceil(e[\"offset\"+t[0].toUpperCase()+t.slice(1)]-parseFloat(o[t])-et(e,t,\"border\",!1,o)-.5)),u&&(i=te.exec(n))&&\"px\"!==(i[3]||\"px\")&&(e.style[t]=n,n=w.css(e,t)),Ze(0,n,u)}}})),w.cssHooks.marginLeft=ze(d.reliableMarginLeft,(function(e,t){if(t)return(parseFloat(_e(e,\"marginLeft\"))||e.getBoundingClientRect().left-Be(e,{marginLeft:0},(function(){return e.getBoundingClientRect().left})))+\"px\"})),w.each({margin:\"\",padding:\"\",border:\"Width\"},(function(e,t){w.cssHooks[e+t]={expand:function(n){for(var r=0,i={},o=\"string\"==typeof n?n.split(\" \"):[n];r<4;r++)i[e+ne[r]+t]=o[r]||o[r-2]||o[0];return i}},\"margin\"!==e&&(w.cssHooks[e+t].set=Ze)})),w.fn.extend({css:function(e,t){return $(this,(function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=Fe(e),i=t.length;a1)}}),w.Tween=nt,nt.prototype={constructor:nt,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||w.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(w.cssNumber[n]?\"\":\"px\")},cur:function(){var e=nt.propHooks[this.prop];return e&&e.get?e.get(this):nt.propHooks._default.get(this)},run:function(e){var t,n=nt.propHooks[this.prop];return this.options.duration?this.pos=t=w.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):nt.propHooks._default.set(this),this}},nt.prototype.init.prototype=nt.prototype,nt.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=w.css(e.elem,e.prop,\"\"))&&\"auto\"!==t?t:0},set:function(e){w.fx.step[e.prop]?w.fx.step[e.prop](e):1!==e.elem.nodeType||!w.cssHooks[e.prop]&&null==e.elem.style[Ge(e.prop)]?e.elem[e.prop]=e.now:w.style(e.elem,e.prop,e.now+e.unit)}}},nt.propHooks.scrollTop=nt.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},w.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:\"swing\"},w.fx=nt.prototype.init,w.fx.step={};var rt,it,ot=/^(?:toggle|show|hide)$/,at=/queueHooks$/;function st(){it&&(!1===v.hidden&&e.requestAnimationFrame?e.requestAnimationFrame(st):e.setTimeout(st,w.fx.interval),w.fx.tick())}function ut(){return e.setTimeout((function(){rt=void 0})),rt=Date.now()}function lt(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i[\"margin\"+(n=ne[r])]=i[\"padding\"+n]=e;return t&&(i.opacity=i.width=e),i}function ct(e,t,n){for(var r,i=(ft.tweeners[t]||[]).concat(ft.tweeners[\"*\"]),o=0,a=i.length;o1)},removeAttr:function(e){return this.each((function(){w.removeAttr(this,e)}))}}),w.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return void 0===e.getAttribute?w.prop(e,t,n):(1===o&&w.isXMLDoc(e)||(i=w.attrHooks[t.toLowerCase()]||(w.expr.match.bool.test(t)?pt:void 0)),void 0!==n?null===n?void w.removeAttr(e,t):i&&\"set\"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+\"\"),n):i&&\"get\"in i&&null!==(r=i.get(e,t))?r:null==(r=w.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!d.radioValue&&\"radio\"===t&&A(e,\"input\")){var n=e.value;return e.setAttribute(\"type\",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(P);if(i&&1===e.nodeType)for(;n=i[r++];)e.removeAttribute(n)}}),pt={set:function(e,t,n){return!1===t?w.removeAttr(e,n):e.setAttribute(n,n),n}},w.each(w.expr.match.bool.source.match(/\\w+/g),(function(e,t){var n=dt[t]||w.find.attr;dt[t]=function(e,t,r){var i,o,a=t.toLowerCase();return r||(o=dt[a],dt[a]=i,i=null!=n(e,t,r)?a:null,dt[a]=o),i}}));var ht=/^(?:input|select|textarea|button)$/i,gt=/^(?:a|area)$/i;function vt(e){return(e.match(P)||[]).join(\" \")}function yt(e){return e.getAttribute&&e.getAttribute(\"class\")||\"\"}function mt(e){return Array.isArray(e)?e:\"string\"==typeof e&&e.match(P)||[]}w.fn.extend({prop:function(e,t){return $(this,w.prop,e,t,arguments.length>1)},removeProp:function(e){return this.each((function(){delete this[w.propFix[e]||e]}))}}),w.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&w.isXMLDoc(e)||(t=w.propFix[t]||t,i=w.propHooks[t]),void 0!==n?i&&\"set\"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&\"get\"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=w.find.attr(e,\"tabindex\");return t?parseInt(t,10):ht.test(e.nodeName)||gt.test(e.nodeName)&&e.href?0:-1}}},propFix:{for:\"htmlFor\",class:\"className\"}}),d.optSelected||(w.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),w.each([\"tabIndex\",\"readOnly\",\"maxLength\",\"cellSpacing\",\"cellPadding\",\"rowSpan\",\"colSpan\",\"useMap\",\"frameBorder\",\"contentEditable\"],(function(){w.propFix[this.toLowerCase()]=this})),w.fn.extend({addClass:function(e){var t,n,r,i,o,a,s,u=0;if(h(e))return this.each((function(t){w(this).addClass(e.call(this,t,yt(this)))}));if((t=mt(e)).length)for(;n=this[u++];)if(i=yt(n),r=1===n.nodeType&&\" \"+vt(i)+\" \"){for(a=0;o=t[a++];)r.indexOf(\" \"+o+\" \")<0&&(r+=o+\" \");i!==(s=vt(r))&&n.setAttribute(\"class\",s)}return this},removeClass:function(e){var t,n,r,i,o,a,s,u=0;if(h(e))return this.each((function(t){w(this).removeClass(e.call(this,t,yt(this)))}));if(!arguments.length)return this.attr(\"class\",\"\");if((t=mt(e)).length)for(;n=this[u++];)if(i=yt(n),r=1===n.nodeType&&\" \"+vt(i)+\" \"){for(a=0;o=t[a++];)for(;r.indexOf(\" \"+o+\" \")>-1;)r=r.replace(\" \"+o+\" \",\" \");i!==(s=vt(r))&&n.setAttribute(\"class\",s)}return this},toggleClass:function(e,t){var n=typeof e,r=\"string\"===n||Array.isArray(e);return\"boolean\"==typeof t&&r?t?this.addClass(e):this.removeClass(e):h(e)?this.each((function(n){w(this).toggleClass(e.call(this,n,yt(this),t),t)})):this.each((function(){var t,i,o,a;if(r)for(i=0,o=w(this),a=mt(e);t=a[i++];)o.hasClass(t)?o.removeClass(t):o.addClass(t);else void 0!==e&&\"boolean\"!==n||((t=yt(this))&&Y.set(this,\"__className__\",t),this.setAttribute&&this.setAttribute(\"class\",t||!1===e?\"\":Y.get(this,\"__className__\")||\"\"))}))},hasClass:function(e){var t,n,r=0;for(t=\" \"+e+\" \";n=this[r++];)if(1===n.nodeType&&(\" \"+vt(yt(n))+\" \").indexOf(t)>-1)return!0;return!1}});var xt=/\\r/g;w.fn.extend({val:function(e){var t,n,r,i=this[0];return arguments.length?(r=h(e),this.each((function(n){var i;1===this.nodeType&&(null==(i=r?e.call(this,n,w(this).val()):e)?i=\"\":\"number\"==typeof i?i+=\"\":Array.isArray(i)&&(i=w.map(i,(function(e){return null==e?\"\":e+\"\"}))),(t=w.valHooks[this.type]||w.valHooks[this.nodeName.toLowerCase()])&&\"set\"in t&&void 0!==t.set(this,i,\"value\")||(this.value=i))}))):i?(t=w.valHooks[i.type]||w.valHooks[i.nodeName.toLowerCase()])&&\"get\"in t&&void 0!==(n=t.get(i,\"value\"))?n:\"string\"==typeof(n=i.value)?n.replace(xt,\"\"):null==n?\"\":n:void 0}}),w.extend({valHooks:{option:{get:function(e){var t=w.find.attr(e,\"value\");return null!=t?t:vt(w.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a=\"select-one\"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r-1)&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),w.each([\"radio\",\"checkbox\"],(function(){w.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=w.inArray(w(e).val(),t)>-1}},d.checkOn||(w.valHooks[this].get=function(e){return null===e.getAttribute(\"value\")?\"on\":e.value})})),d.focusin=\"onfocusin\"in e;var bt=/^(?:focusinfocus|focusoutblur)$/,wt=function(e){e.stopPropagation()};w.extend(w.event,{trigger:function(t,n,r,i){var o,a,s,u,l,f,p,d,y=[r||v],m=c.call(t,\"type\")?t.type:t,x=c.call(t,\"namespace\")?t.namespace.split(\".\"):[];if(a=d=s=r=r||v,3!==r.nodeType&&8!==r.nodeType&&!bt.test(m+w.event.triggered)&&(m.indexOf(\".\")>-1&&(x=m.split(\".\"),m=x.shift(),x.sort()),l=m.indexOf(\":\")<0&&\"on\"+m,(t=t[w.expando]?t:new w.Event(m,\"object\"==typeof t&&t)).isTrigger=i?2:3,t.namespace=x.join(\".\"),t.rnamespace=t.namespace?new RegExp(\"(^|\\\\.)\"+x.join(\"\\\\.(?:.*\\\\.|)\")+\"(\\\\.|$)\"):null,t.result=void 0,t.target||(t.target=r),n=null==n?[t]:w.makeArray(n,[t]),p=w.event.special[m]||{},i||!p.trigger||!1!==p.trigger.apply(r,n))){if(!i&&!p.noBubble&&!g(r)){for(u=p.delegateType||m,bt.test(u+m)||(a=a.parentNode);a;a=a.parentNode)y.push(a),s=a;s===(r.ownerDocument||v)&&y.push(s.defaultView||s.parentWindow||e)}for(o=0;(a=y[o++])&&!t.isPropagationStopped();)d=a,t.type=o>1?u:p.bindType||m,(f=(Y.get(a,\"events\")||Object.create(null))[t.type]&&Y.get(a,\"handle\"))&&f.apply(a,n),(f=l&&a[l])&&f.apply&&V(a)&&(t.result=f.apply(a,n),!1===t.result&&t.preventDefault());return t.type=m,i||t.isDefaultPrevented()||p._default&&!1!==p._default.apply(y.pop(),n)||!V(r)||l&&h(r[m])&&!g(r)&&((s=r[l])&&(r[l]=null),w.event.triggered=m,t.isPropagationStopped()&&d.addEventListener(m,wt),r[m](),t.isPropagationStopped()&&d.removeEventListener(m,wt),w.event.triggered=void 0,s&&(r[l]=s)),t.result}},simulate:function(e,t,n){var r=w.extend(new w.Event,n,{type:e,isSimulated:!0});w.event.trigger(r,null,t)}}),w.fn.extend({trigger:function(e,t){return this.each((function(){w.event.trigger(e,t,this)}))},triggerHandler:function(e,t){var n=this[0];if(n)return w.event.trigger(e,t,n,!0)}}),d.focusin||w.each({focus:\"focusin\",blur:\"focusout\"},(function(e,t){var n=function(e){w.event.simulate(t,e.target,w.event.fix(e))};w.event.special[t]={setup:function(){var r=this.ownerDocument||this.document||this,i=Y.access(r,t);i||r.addEventListener(e,n,!0),Y.access(r,t,(i||0)+1)},teardown:function(){var r=this.ownerDocument||this.document||this,i=Y.access(r,t)-1;i?Y.access(r,t,i):(r.removeEventListener(e,n,!0),Y.remove(r,t))}}}));var Tt=e.location,Ct={guid:Date.now()},Et=/\\?/;w.parseXML=function(t){var n;if(!t||\"string\"!=typeof t)return null;try{n=(new e.DOMParser).parseFromString(t,\"text/xml\")}catch(e){n=void 0}return n&&!n.getElementsByTagName(\"parsererror\").length||w.error(\"Invalid XML: \"+t),n};var St=/\\[\\]$/,kt=/\\r?\\n/g,At=/^(?:submit|button|image|reset|file)$/i,Nt=/^(?:input|select|textarea|keygen)/i;function Dt(e,t,n,r){var i;if(Array.isArray(t))w.each(t,(function(t,i){n||St.test(e)?r(e,i):Dt(e+\"[\"+(\"object\"==typeof i&&null!=i?t:\"\")+\"]\",i,n,r)}));else if(n||\"object\"!==x(t))r(e,t);else for(i in t)Dt(e+\"[\"+i+\"]\",t[i],n,r)}w.param=function(e,t){var n,r=[],i=function(e,t){var n=h(t)?t():t;r[r.length]=encodeURIComponent(e)+\"=\"+encodeURIComponent(null==n?\"\":n)};if(null==e)return\"\";if(Array.isArray(e)||e.jquery&&!w.isPlainObject(e))w.each(e,(function(){i(this.name,this.value)}));else for(n in e)Dt(n,e[n],t,i);return r.join(\"&\")},w.fn.extend({serialize:function(){return w.param(this.serializeArray())},serializeArray:function(){return this.map((function(){var e=w.prop(this,\"elements\");return e?w.makeArray(e):this})).filter((function(){var e=this.type;return this.name&&!w(this).is(\":disabled\")&&Nt.test(this.nodeName)&&!At.test(e)&&(this.checked||!de.test(e))})).map((function(e,t){var n=w(this).val();return null==n?null:Array.isArray(n)?w.map(n,(function(e){return{name:t.name,value:e.replace(kt,\"\\r\\n\")}})):{name:t.name,value:n.replace(kt,\"\\r\\n\")}})).get()}});var jt=/%20/g,qt=/#.*$/,Lt=/([?&])_=[^&]*/,Ht=/^(.*?):[ \\t]*([^\\r\\n]*)$/gm,Ot=/^(?:GET|HEAD)$/,Pt=/^\\/\\//,Rt={},Mt={},It=\"*/\".concat(\"*\"),Wt=v.createElement(\"a\");function Ft(e){return function(t,n){\"string\"!=typeof t&&(n=t,t=\"*\");var r,i=0,o=t.toLowerCase().match(P)||[];if(h(n))for(;r=o[i++];)\"+\"===r[0]?(r=r.slice(1)||\"*\",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function Bt(e,t,n,r){var i={},o=e===Mt;function a(s){var u;return i[s]=!0,w.each(e[s]||[],(function(e,s){var l=s(t,n,r);return\"string\"!=typeof l||o||i[l]?o?!(u=l):void 0:(t.dataTypes.unshift(l),a(l),!1)})),u}return a(t.dataTypes[0])||!i[\"*\"]&&a(\"*\")}function $t(e,t){var n,r,i=w.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&w.extend(!0,e,r),e}Wt.href=Tt.href,w.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Tt.href,type:\"GET\",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(Tt.protocol),global:!0,processData:!0,async:!0,contentType:\"application/x-www-form-urlencoded; charset=UTF-8\",accepts:{\"*\":It,text:\"text/plain\",html:\"text/html\",xml:\"application/xml, text/xml\",json:\"application/json, text/javascript\"},contents:{xml:/\\bxml\\b/,html:/\\bhtml/,json:/\\bjson\\b/},responseFields:{xml:\"responseXML\",text:\"responseText\",json:\"responseJSON\"},converters:{\"* text\":String,\"text html\":!0,\"text json\":JSON.parse,\"text xml\":w.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?$t($t(e,w.ajaxSettings),t):$t(w.ajaxSettings,e)},ajaxPrefilter:Ft(Rt),ajaxTransport:Ft(Mt),ajax:function(t,n){\"object\"==typeof t&&(n=t,t=void 0),n=n||{};var r,i,o,a,s,u,l,c,f,p,d=w.ajaxSetup({},n),h=d.context||d,g=d.context&&(h.nodeType||h.jquery)?w(h):w.event,y=w.Deferred(),m=w.Callbacks(\"once memory\"),x=d.statusCode||{},b={},T={},C=\"canceled\",E={readyState:0,getResponseHeader:function(e){var t;if(l){if(!a)for(a={};t=Ht.exec(o);)a[t[1].toLowerCase()+\" \"]=(a[t[1].toLowerCase()+\" \"]||[]).concat(t[2]);t=a[e.toLowerCase()+\" \"]}return null==t?null:t.join(\", \")},getAllResponseHeaders:function(){return l?o:null},setRequestHeader:function(e,t){return null==l&&(e=T[e.toLowerCase()]=T[e.toLowerCase()]||e,b[e]=t),this},overrideMimeType:function(e){return null==l&&(d.mimeType=e),this},statusCode:function(e){var t;if(e)if(l)E.always(e[E.status]);else for(t in e)x[t]=[x[t],e[t]];return this},abort:function(e){var t=e||C;return r&&r.abort(t),S(0,t),this}};if(y.promise(E),d.url=((t||d.url||Tt.href)+\"\").replace(Pt,Tt.protocol+\"//\"),d.type=n.method||n.type||d.method||d.type,d.dataTypes=(d.dataType||\"*\").toLowerCase().match(P)||[\"\"],null==d.crossDomain){u=v.createElement(\"a\");try{u.href=d.url,u.href=u.href,d.crossDomain=Wt.protocol+\"//\"+Wt.host!=u.protocol+\"//\"+u.host}catch(e){d.crossDomain=!0}}if(d.data&&d.processData&&\"string\"!=typeof d.data&&(d.data=w.param(d.data,d.traditional)),Bt(Rt,d,n,E),l)return E;for(f in(c=w.event&&d.global)&&0==w.active++&&w.event.trigger(\"ajaxStart\"),d.type=d.type.toUpperCase(),d.hasContent=!Ot.test(d.type),i=d.url.replace(qt,\"\"),d.hasContent?d.data&&d.processData&&0===(d.contentType||\"\").indexOf(\"application/x-www-form-urlencoded\")&&(d.data=d.data.replace(jt,\"+\")):(p=d.url.slice(i.length),d.data&&(d.processData||\"string\"==typeof d.data)&&(i+=(Et.test(i)?\"&\":\"?\")+d.data,delete d.data),!1===d.cache&&(i=i.replace(Lt,\"$1\"),p=(Et.test(i)?\"&\":\"?\")+\"_=\"+Ct.guid+++p),d.url=i+p),d.ifModified&&(w.lastModified[i]&&E.setRequestHeader(\"If-Modified-Since\",w.lastModified[i]),w.etag[i]&&E.setRequestHeader(\"If-None-Match\",w.etag[i])),(d.data&&d.hasContent&&!1!==d.contentType||n.contentType)&&E.setRequestHeader(\"Content-Type\",d.contentType),E.setRequestHeader(\"Accept\",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(\"*\"!==d.dataTypes[0]?\", \"+It+\"; q=0.01\":\"\"):d.accepts[\"*\"]),d.headers)E.setRequestHeader(f,d.headers[f]);if(d.beforeSend&&(!1===d.beforeSend.call(h,E,d)||l))return E.abort();if(C=\"abort\",m.add(d.complete),E.done(d.success),E.fail(d.error),r=Bt(Mt,d,n,E)){if(E.readyState=1,c&&g.trigger(\"ajaxSend\",[E,d]),l)return E;d.async&&d.timeout>0&&(s=e.setTimeout((function(){E.abort(\"timeout\")}),d.timeout));try{l=!1,r.send(b,S)}catch(e){if(l)throw e;S(-1,e)}}else S(-1,\"No Transport\");function S(t,n,a,u){var f,p,v,b,T,C=n;l||(l=!0,s&&e.clearTimeout(s),r=void 0,o=u||\"\",E.readyState=t>0?4:0,f=t>=200&&t<300||304===t,a&&(b=function(e,t,n){for(var r,i,o,a,s=e.contents,u=e.dataTypes;\"*\"===u[0];)u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader(\"Content-Type\"));if(r)for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+\" \"+u[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==u[0]&&u.unshift(o),n[o]}(d,E,a)),!f&&w.inArray(\"script\",d.dataTypes)>-1&&(d.converters[\"text script\"]=function(){}),b=function(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];for(o=c.shift();o;)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if(\"*\"===o)o=u;else if(\"*\"!==u&&u!==o){if(!(a=l[u+\" \"+o]||l[\"* \"+o]))for(i in l)if((s=i.split(\" \"))[1]===o&&(a=l[u+\" \"+s[0]]||l[\"* \"+s[0]])){!0===a?a=l[i]:!0!==l[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e.throws)t=a(t);else try{t=a(t)}catch(e){return{state:\"parsererror\",error:a?e:\"No conversion from \"+u+\" to \"+o}}}return{state:\"success\",data:t}}(d,b,E,f),f?(d.ifModified&&((T=E.getResponseHeader(\"Last-Modified\"))&&(w.lastModified[i]=T),(T=E.getResponseHeader(\"etag\"))&&(w.etag[i]=T)),204===t||\"HEAD\"===d.type?C=\"nocontent\":304===t?C=\"notmodified\":(C=b.state,p=b.data,f=!(v=b.error))):(v=C,!t&&C||(C=\"error\",t<0&&(t=0))),E.status=t,E.statusText=(n||C)+\"\",f?y.resolveWith(h,[p,C,E]):y.rejectWith(h,[E,C,v]),E.statusCode(x),x=void 0,c&&g.trigger(f?\"ajaxSuccess\":\"ajaxError\",[E,d,f?p:v]),m.fireWith(h,[E,C]),c&&(g.trigger(\"ajaxComplete\",[E,d]),--w.active||w.event.trigger(\"ajaxStop\")))}return E},getJSON:function(e,t,n){return w.get(e,t,n,\"json\")},getScript:function(e,t){return w.get(e,void 0,t,\"script\")}}),w.each([\"get\",\"post\"],(function(e,t){w[t]=function(e,n,r,i){return h(n)&&(i=i||r,r=n,n=void 0),w.ajax(w.extend({url:e,type:t,dataType:i,data:n,success:r},w.isPlainObject(e)&&e))}})),w.ajaxPrefilter((function(e){var t;for(t in e.headers)\"content-type\"===t.toLowerCase()&&(e.contentType=e.headers[t]||\"\")})),w._evalUrl=function(e,t,n){return w.ajax({url:e,type:\"GET\",dataType:\"script\",cache:!0,async:!1,global:!1,converters:{\"text script\":function(){}},dataFilter:function(e){w.globalEval(e,t,n)}})},w.fn.extend({wrapAll:function(e){var t;return this[0]&&(h(e)&&(e=e.call(this[0])),t=w(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map((function(){for(var e=this;e.firstElementChild;)e=e.firstElementChild;return e})).append(this)),this},wrapInner:function(e){return h(e)?this.each((function(t){w(this).wrapInner(e.call(this,t))})):this.each((function(){var t=w(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)}))},wrap:function(e){var t=h(e);return this.each((function(n){w(this).wrapAll(t?e.call(this,n):e)}))},unwrap:function(e){return this.parent(e).not(\"body\").each((function(){w(this).replaceWith(this.childNodes)})),this}}),w.expr.pseudos.hidden=function(e){return!w.expr.pseudos.visible(e)},w.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},w.ajaxSettings.xhr=function(){try{return new e.XMLHttpRequest}catch(e){}};var _t={0:200,1223:204},zt=w.ajaxSettings.xhr();d.cors=!!zt&&\"withCredentials\"in zt,d.ajax=zt=!!zt,w.ajaxTransport((function(t){var n,r;if(d.cors||zt&&!t.crossDomain)return{send:function(i,o){var a,s=t.xhr();if(s.open(t.type,t.url,t.async,t.username,t.password),t.xhrFields)for(a in t.xhrFields)s[a]=t.xhrFields[a];for(a in t.mimeType&&s.overrideMimeType&&s.overrideMimeType(t.mimeType),t.crossDomain||i[\"X-Requested-With\"]||(i[\"X-Requested-With\"]=\"XMLHttpRequest\"),i)s.setRequestHeader(a,i[a]);n=function(e){return function(){n&&(n=r=s.onload=s.onerror=s.onabort=s.ontimeout=s.onreadystatechange=null,\"abort\"===e?s.abort():\"error\"===e?\"number\"!=typeof s.status?o(0,\"error\"):o(s.status,s.statusText):o(_t[s.status]||s.status,s.statusText,\"text\"!==(s.responseType||\"text\")||\"string\"!=typeof s.responseText?{binary:s.response}:{text:s.responseText},s.getAllResponseHeaders()))}},s.onload=n(),r=s.onerror=s.ontimeout=n(\"error\"),void 0!==s.onabort?s.onabort=r:s.onreadystatechange=function(){4===s.readyState&&e.setTimeout((function(){n&&r()}))},n=n(\"abort\");try{s.send(t.hasContent&&t.data||null)}catch(e){if(n)throw e}},abort:function(){n&&n()}}})),w.ajaxPrefilter((function(e){e.crossDomain&&(e.contents.script=!1)})),w.ajaxSetup({accepts:{script:\"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript\"},contents:{script:/\\b(?:java|ecma)script\\b/},converters:{\"text script\":function(e){return w.globalEval(e),e}}}),w.ajaxPrefilter(\"script\",(function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type=\"GET\")})),w.ajaxTransport(\"script\",(function(e){var t,n;if(e.crossDomain||e.scriptAttrs)return{send:function(r,i){t=w(\""
],
"text/plain": [
":Scatter [Droplet Diameter (um)] (Spindle Length (um))"
]
},
"execution_count": 3,
"metadata": {
"application/vnd.holoviews_exec.v0+json": {
"id": "1003"
}
},
"output_type": "execute_result"
}
],
"source": [
"# Load in Data Frame\n",
"df = pd.read_csv(\"../data/good_invitro_droplet_data.csv\", comment=\"#\")\n",
"\n",
"# Pull out numpy arrays\n",
"ell = df[\"Spindle Length (um)\"].values\n",
"d = df[\"Droplet Diameter (um)\"].values\n",
"\n",
"# Make a plot\n",
"data_plot = hv.Scatter(\n",
" data=df,\n",
" kdims=\"Droplet Diameter (um)\",\n",
" vdims=\"Spindle Length (um)\",\n",
").opts(\n",
" xlim=(0, None),\n",
" ylim=(0, None),\n",
")\n",
"\n",
"data_plot"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## The tubulin conservation model\n",
"\n",
"In the tubulin conservation model, recall that the theoretical relationship between spindle length and droplet diameter is\n",
"\n",
"\\begin{align}\n",
"l(d) = \\frac{\\gamma d}{\\left(1+(\\gamma d/\\phi)^3\\right)^{\\frac{1}{3}}}\n",
"\\end{align}\n",
"\n",
"We will assume homoscedastic variation about this theoretical curve, giving us a likelihood of\n",
"\n",
"\\begin{align}\n",
"&\\mu_i = \\frac{\\gamma d_i}{\\left(1+(\\gamma d_i/\\phi)^3\\right)^{\\frac{1}{3}}}, \\\\[1em]\n",
"&l_i \\sim \\text{Norm}(\\mu_i, \\sigma) \\;\\forall i.\n",
"\\end{align}\n",
"\n",
"We therefore need to provide priors for $\\gamma$, $\\phi$, and $\\sigma$. We will use the same priors as we did for the independent size model for $\\phi$ and $\\sigma$ because they have the same meaning in the context of this model. \n",
"\n",
"Physically, $0 < \\gamma \\le 1$, so we need to provide a prior for $\\gamma$ that is defined between zero and one. We can use a Beta distribution. I think $\\gamma$ having a values close to zero is very unlikely, since that sets the spindle lengths to zero. Similarly, I do not think values of $\\gamma$ close to one are likely, since this sets the spindle length to be the same as the droplet diameter, meaning that the spindle would always press against the sides of the droplet. So, I will choose a prior for $\\gamma$ that is fairly flat for intermediate values of $\\gamma$, but goes toward zero at $\\gamma = 0, 1$. A Beta distribution with $\\alpha = \\beta = 3/2$ accomplishes this. The prior is plotted below."
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.holoviews_exec.v0+json": "",
"text/html": [
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"
\n",
"
\n",
""
],
"text/plain": [
":Curve [γ] (g(γ))"
]
},
"execution_count": 4,
"metadata": {
"application/vnd.holoviews_exec.v0+json": {
"id": "1125"
}
},
"output_type": "execute_result"
}
],
"source": [
"gamma = np.linspace(0, 1, 200)\n",
"\n",
"hv.Curve((gamma, st.beta.pdf(gamma, 1.5, 1.5)), kdims=\"γ\", vdims=\"g(γ)\",).opts(\n",
" frame_height=200,\n",
" ylim=(0, None),\n",
")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"So, our complete generative model is\n",
"\n",
"\\begin{align}\n",
"&\\phi \\sim \\text{LogNorm}(2.3, 2.3),\\\\[1em]\n",
"&\\gamma \\sim \\text{Beta}(1.5, 1.5), \\\\[1em]\n",
"&\\sigma \\sim \\text{HalfNorm}(20),\\\\[1em]\n",
"&\\mu_i = \\frac{\\gamma d_i}{\\left(1+(\\gamma d_i/\\phi)^3\\right)^{\\frac{1}{3}}}\\;\\forall i, \\\\[1em]\n",
"&l_i \\sim \\text{Norm}(\\mu_i, \\sigma) \\;\\forall i.\n",
"\\end{align}"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Parameter estimation\n",
"\n",
"We will now proceed to compute the MAP and credible intervals. Before embarking on this calculation, I write down the steps for making sense of the posterior using optimization and a multivariate Normal approximation. After defining your model, do the following.\n",
"\n",
"1. Write a function to compute the log posterior.\n",
"2. Define the negative log posterior function.\n",
"3. Set up the `args` that need to be passed to the log posterior function.\n",
"4. Provide an initial guess for the solver.\n",
"5. Use `scipy.optimize.minimize()` to find the MAP.\n",
"6. Extract the optimal parameters from the output.\n",
"7. Compute the Hessian evaluated at the MAP of the log posterior by numerical differentiation.\n",
"8. Compute the covariance by inverting the Hessian.\n",
"9. Report the results (usually by reporting credible intervals).\n",
"\n",
"We will step through this procedure for this model, starting with coding up the posterior."
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
"def theoretical_spindle_length(d, phi, gamma):\n",
" \"\"\"Theoretical spindle length for tubulin conservation model.\"\"\"\n",
" return gamma * d / np.cbrt(1 + (gamma * d / phi)**3)\n",
"\n",
"\n",
"def log_prior(phi, gamma, sigma):\n",
" \"\"\"Log prior for tubulin conservation model\"\"\"\n",
" lp = st.lognorm.logpdf(phi, 2.3, loc=0, scale=np.exp(2.3))\n",
" lp += st.beta.logpdf(gamma, 1.5, 1.5)\n",
" lp += st.halfnorm.logpdf(sigma, 0, 20)\n",
"\n",
" return lp\n",
"\n",
"\n",
"def log_likelihood(d, ell, phi, gamma, sigma):\n",
" \"\"\"Log likelihood for independent size model\"\"\"\n",
" mu = theoretical_spindle_length(d, phi, gamma)\n",
"\n",
" return np.sum(st.norm.logpdf(ell, mu, sigma))\n",
"\n",
"\n",
"def log_posterior(params, d, ell):\n",
" \"\"\"Log posterior of indpendent size model.\"\"\"\n",
" phi, gamma, sigma = params\n",
"\n",
" lp = log_prior(phi, gamma, sigma)\n",
" if lp == -np.inf:\n",
" return lp\n",
" \n",
" return lp + log_likelihood(d, ell, phi, gamma, sigma)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Next, we define the negative log posterior, which we need for minimization."
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"def neg_log_posterior(params, d, ell):\n",
" return -log_posterior(params, d, ell)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"And the arguments we need to pass...."
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [],
"source": [
"args = (d, ell)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"And now for the initial guesses for $\\phi$, $\\gamma$, and $\\sigma$, respectively."
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [],
"source": [
"params_0 = np.array([35, 0.8, 4])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now, we can find the MAP and extract the parameter values."
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [],
"source": [
"# Compute the MAP\n",
"res = scipy.optimize.minimize(neg_log_posterior, params_0, args=args, method=\"powell\")\n",
"\n",
"# Extract optimal parameters\n",
"popt = res.x"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now to compute the Hessian and invert it to get the covariance."
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [],
"source": [
"# Compute Hessian and covariance matrix\n",
"hes = smnd.approx_hess(popt, log_posterior, args=args)\n",
"cov = -np.linalg.inv(hes)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Finally, we can report the results."
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"Most probable parameters\n",
"------------------------\n",
"φ = 38.26 ± 0.77 µm\n",
"γ = 0.859 ± 0.034\n",
"σ = 3.754 ± 0.201 µm\n",
"\n"
]
}
],
"source": [
"# For convenience...\n",
"phi_MAP, gamma_MAP, sigma_MAP = popt\n",
"\n",
"# Print results\n",
"print(\n",
" \"\"\"\n",
"Most probable parameters\n",
"------------------------\n",
"φ = {0:.2f} ± {1:.2f} µm\n",
"γ = {2:.3f} ± {3:.3f}\n",
"σ = {4:.3f} ± {5:.3f} µm\n",
"\"\"\".format(\n",
" phi_MAP,\n",
" 1.96 * np.sqrt(cov[0, 0]),\n",
" gamma_MAP,\n",
" 1.96 * np.sqrt(cov[1, 1]),\n",
" sigma_MAP,\n",
" 1.96 * np.sqrt(cov[2, 2]),\n",
" )\n",
")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Checking the Normal approximation\n",
"\n",
"Plotting this distribution is harder than in the independent size model because we now have three parameters. We therefore have to marginalize out one of the parameters to make a contour plot of two parameters we are interested in. To do so, we first need to grid up the parameter values and compute the log posterior. Unlike in our previous treatment of this model when we could analytically marginalize away $\\sigma$, we cannot do that here because of our choice of prior. We need to compute the posterior for many values of $\\sigma$ and then use numerical quadrature to marginalize it away.\n",
"\n",
"Note that this problem of computing the posterior for plotting does not scale well. For the independent size model, we evaluated the posterior at 200 $\\phi$ values and 200 $\\sigma$ values for a total of 40,000 posterior evaluations. It took a few seconds to run. Now, we will evaluate the posterior at 100 $\\phi$ values, 100 $\\gamma$ values, and 100 $\\sigma_0$ values, for a total of a million posterior evaluations, and you can expect the calculation in the next cell to take several minutes. If we had any more parameters, this brute force style of posterior evaluation becomes intractable. Furthermore, notice below that I chose a tight range of parameter values. I was able to do this because I already found the MAP and credible regions first. Without this, the posterior would be mostly a big sea of low probability and finding where it is not is like finding a needle in a haystack."
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"100%|██████████████████████████████████████████████████████████████████████| 100/100 [08:32<00:00, 5.13s/it]\n"
]
}
],
"source": [
"# Set up plotting range\n",
"phi = np.linspace(37, 39.5, 100)\n",
"gamma = np.linspace(0.8, 0.91, 100)\n",
"sigma = np.linspace(3.0, 4.5, 100)\n",
"PHI, GAMMA, SIGMA = np.meshgrid(phi, gamma, sigma)\n",
"\n",
"# Compute log posterior\n",
"LOG_POST = np.empty_like(PHI)\n",
"for i in tqdm.tqdm(range(PHI.shape[0])):\n",
" for j in range(PHI.shape[1]):\n",
" for k in range(PHI.shape[2]):\n",
" LOG_POST[i, j, k] = log_posterior(\n",
" np.array([PHI[i,j,k], GAMMA[i,j,k], SIGMA[i,j,k]]), d, ell)\n",
" \n",
"# Exponentiate. Ignore normalization, so set max LOG_POST to zero\n",
"POST_exact = np.exp(LOG_POST - LOG_POST.max())"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"To plot the marginalized posterior $g(\\phi, \\gamma\\mid d, l)$, which is what we are interested in, we need to marginalize over $\\sigma$. We can do so numerically using `np.trapz()`, integrating over the $\\sigma$ values."
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [],
"source": [
"# Compute marginalized posterior\n",
"POST_marginalized = np.trapz(POST_exact, x=sigma, axis=2)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can now make the plot."
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
" \n"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/javascript": [
"(function(root) {\n",
" function embed_document(root) {\n",
" \n",
" var docs_json = {\"069bc717-aae6-47a4-8ea7-69156541c8c8\":{\"defs\":[{\"extends\":null,\"module\":null,\"name\":\"ReactiveHTML1\",\"overrides\":[],\"properties\":[]},{\"extends\":null,\"module\":null,\"name\":\"FlexBox1\",\"overrides\":[],\"properties\":[{\"default\":\"flex-start\",\"kind\":null,\"name\":\"align_content\"},{\"default\":\"flex-start\",\"kind\":null,\"name\":\"align_items\"},{\"default\":\"row\",\"kind\":null,\"name\":\"flex_direction\"},{\"default\":\"wrap\",\"kind\":null,\"name\":\"flex_wrap\"},{\"default\":\"flex-start\",\"kind\":null,\"name\":\"justify_content\"}]},{\"extends\":null,\"module\":null,\"name\":\"TemplateActions1\",\"overrides\":[],\"properties\":[{\"default\":0,\"kind\":null,\"name\":\"open_modal\"},{\"default\":0,\"kind\":null,\"name\":\"close_modal\"}]},{\"extends\":null,\"module\":null,\"name\":\"MaterialTemplateActions1\",\"overrides\":[],\"properties\":[{\"default\":0,\"kind\":null,\"name\":\"open_modal\"},{\"default\":0,\"kind\":null,\"name\":\"close_modal\"}]}],\"roots\":{\"references\":[{\"attributes\":{\"below\":[{\"id\":\"1256\"}],\"center\":[{\"id\":\"1259\"},{\"id\":\"1263\"}],\"frame_height\":300,\"frame_width\":300,\"left\":[{\"id\":\"1260\"}],\"renderers\":[{\"id\":\"1281\"}],\"title\":{\"id\":\"1284\"},\"toolbar\":{\"id\":\"1271\"},\"x_range\":{\"id\":\"1248\"},\"x_scale\":{\"id\":\"1252\"},\"y_range\":{\"id\":\"1250\"},\"y_scale\":{\"id\":\"1254\"}},\"id\":\"1247\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{},\"id\":\"1290\",\"type\":\"AllLabels\"},{\"attributes\":{\"source\":{\"id\":\"1278\"}},\"id\":\"1282\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"1286\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"bottom_units\":\"screen\",\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"syncable\":false,\"top_units\":\"screen\"},\"id\":\"1270\",\"type\":\"BoxAnnotation\"},{\"attributes\":{},\"id\":\"1284\",\"type\":\"Title\"},{\"attributes\":{},\"id\":\"1261\",\"type\":\"BasicTicker\"},{\"attributes\":{\"axis_label\":\"\\u03b3\",\"formatter\":{\"id\":\"1289\"},\"major_label_policy\":{\"id\":\"1290\"},\"ticker\":{\"id\":\"1261\"}},\"id\":\"1260\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"1292\",\"type\":\"Selection\"},{\"attributes\":{\"data\":{\"xs\":[{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[248]},{\"__ndarray__\":\"ejtDYt5OQ0BnSMzbGVJDQFVVVVVVVUNAQ2LezpBYQ0Axb2dIzFtDQB988MEHX0NADYl5O0NiQ0D7lQK1fmVDQOmiiy66aENAhrZkqOBoQ0Bwrlu21WtDQNevFKj1a0NA0isDqDptQ0Dmi/3w0m1DQJTWA1bgbUNAgJkKL4htQ0DfQMSH4GxDQNevFKj1a0NAkywmdNpqQ0Ciu769jWlDQOmiiy66aENA8X7biRdoQ0CuKQ/tf2ZDQPuVArV+ZUNAKe4FusRkQ0DQdKsS7WJDQA6JeTtDYkNAY4JbMPxgQ0AffPDBB19DQMvqVVfpXkNAyu1Y+cpcQ0Axb2dIzFtDQKaNY+KQWkNAQ2LezpBYQ0DmArDDO1hDQHacWsfYVUNAVVVVVVVVQ0B2eVk6ZFNDQGdIzNsZUkNA0vrzndhQQ0B6O0Ni3k5DQMooJrI3TkNAjC666KJLQ0CbrpLfgktDQLJ8jKXCSENAniExb2dIQ0DyM7sM8UVDQLAUqPUrRUNAVO/N3AtDQ0DCBx988EFDQFopQYITQENA1PqVArU+Q0BKad4gCD1DQObtDIl5O0NA7A81k+k5Q0D44IMPPjhDQNiOSWi3NkNACtT6lQI1Q0C69F3fcDNDQBzHcRzHMUNA7m2k4RQwQ0Avuuiiiy5DQBBLl/mhLENAQa1fKVArQ0BdH5lHFilDQFOg1q8UKENAqxlhc28lQ0Bkk0022SRDQFzxkZmqIUNAd4bEvJ0hQ0CJeTtDYh5DQGjE+mfJHUNAm2yyySYbQ0AWvwE8whlDQK1fKVDrF0NA/AhE144VQ0DAUqDWrxRDQNFFF110EUNAKLu82CcRQ0DkOI7jOA5DQMaGXcqADENA9isFav0KQ0AIH3zwwQdDQCThTb+KB0NAGhLzdoYEQ0DiI443HQJDQCwFav1KAUNAPvjggw/+QkB6k/3L/PtCQFDrVwrU+kJAYt7OkJj3QkDYSeiNjvRCQHTRRRdd9EJAhsS8nSHxQkCZtzMk5u1CQKuqqqqq6kJAvZ0hMW/nQkDPkJi3M+RCQOGDDz744EJA83aGxLzdQkDpoHH4GN1CQAVq/UqB2kJAnjpYbCPaQkBuTSMom9hCQFfhUf7A10JAX1MuTGHXQkAR3keBW9dCQPDzetKa10JAObtgFxLYQkCYrX9dudhCQNlW13WM2UJABWr9SoHaQkBzVF60idpCQNqXjM+h20JAPRauqt7cQkDzdobEvN1CQL1isJI73kJAfkHpt6/fQkDhgw8++OBCQB8rYERH4UJAJ084j+/iQkDPkJi3M+RCQPM2gtm55EJArOd/e5fmQkC9nSExb+dCQMejS+KO6EJAk454YafqQkCrqqqqqupCQCZzZVnI7EJAmbczJObtQkDJwcCTCe9CQIbEvJ0h8UJA5JoigWjxQkAZu4dX2PNCQHTRRRdd9EJA8yjrwF/2QkBi3s6QmPdCQN7Cfu0D+UJAUOtXCtT6QkAcD1/6w/tCQD744IMP/kJAbUe4hJ/+QkAsBWr9SgFDQBRLEqeWAUNAGhLzdoYEQ0BMchf6qQRDQAgffPDBB0NAPxHfmNoHQ0D2KwVq/QpDQE8/6CgqC0NA5DiO4zgOQ0CKpxfmmg5DQNFFF110EUNA+ME1sy8SQ0C/UqDWrxRDQKUonC/sFUNArV8pUOsXQ0DZhPvS1BlDQJtssskmG0NAqjFrEO8dQ0CJeTtDYh5DQHeGxLydIUNAmpr+GjwiQ0Blk0022SRDQCp8IgHFJkNAVKDWrxQoQ0BBrV8pUCtDQC536ESXK0NAL7rooosuQ0DoBtXsvTBDQBzHcRzHMUNACtT6lQI1Q0BMoo+aUjZDQPjggw8+OENA5u0MiXk7Q0AGSdqJeDxDQNT6lQK1PkNAwgcffPBBQ0AYQRHDekNDQLAUqPUrRUNAniExb2dIQ0CMLrrooktDQEy8m0AITENAejtDYt5OQ0A=\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[184]},{\"__ndarray__\":\"1PqVArU+Q0DCBx988EFDQLAUqPUrRUNAniExb2dIQ0CMLrrooktDQHo7Q2LeTkNAKO253hdQQ0BnSMzbGVJDQHaN/sC0UkNAmPCJJYNTQ0BzOLwJhlNDQHyHtEcFU0NAuNDLmCZSQ0BnSMzbGVJDQNzaxzT1UENAVmW7vYxPQ0B6O0Ni3k5DQAOnJhfuTUNA57UsNSRMQ0CMLrrooktDQDm9efMvSkNAniExb2dIQ0D5fFr+F0hDQKjHgNLdRUNAsBSo9StFQ0AumJTKgkNDQMIHH3zwQUNAa6Vj9AhBQ0DU+pUCtT5DQDvKC41xPkNAmjxUFL07Q0Dn7QyJeTtDQN5M7vHqOENA+OCDDz44Q0A/yY7w+jVDQArU+pUCNUNAO+sVaOwyQ0Acx3EcxzFDQNzasxa+L0NALrrooosuQ0CWwGQRbixDQEGtXylQK0NA9Gs9rvkoQ0BToNavFChDQC4HOWddJUNAZpNNNtkkQ0B3hsS8nSFDQOuq9ECUIUNAiXk7Q2IeQ0AHYxVYjh1DQJtssskmG0NAXagGH0gZQ0CtXylQ6xdDQAHqnwC2FENAv1Kg1q8UQ0DRRRdddBFDQDInvm6SD0NA5DiO4zgOQ0D2KwVq/QpDQHcG5rqpCUNACB988MEHQ0AaEvN2hgRDQIVrrMjSAUNALAVq/UoBQ0A++OCDD/5CQFDrVwrU+kJAYt7OkJj3QkB00UUXXfRCQBlFFNNC8UJAhsS8nSHxQkCooCxkJvBCQD8CJdHQ70JAqdGS6/rvQkAADFC8gPBCQIbEvJ0h8UJA4MyEVVDxQkB9CCdaYfJCQJjtKICh80JAdNFFF130QkAb0+FkEvVCQDy26+us9kJAYt7OkJj3QkCZi38xcPhCQOE2iBhY+kJAUOtXCtT6QkBWNDH2ZfxCQD744IMP/kJAEddgNZf+QkCSVHZZ6wBDQCwFav1KAUNA4oJYxGMDQ0AaEvN2hgRDQOQr/JIABkNACB988MEHQ0AjkGtnwghDQPYrBWr9CkNAK1J6mqoLQ0DkOI7jOA5DQOAocUa7DkNA0UUXXXQRQ0AzvxdX9xFDQL9SoNavFENA8qe1n2IVQ0CtXylQ6xdDQEmq3/cBGUNAm2yyySYbQ0D+hy1g2xxDQIl5O0NiHkNAF3JJMPYgQ0B3hsS8nSFDQGWTTTbZJENAcDw602MlQ0BToNavFChDQBqJtg86KkNAQa1fKVArQ0Avuuiiiy5DQGS8nZqaL0NAHMdxHMcxQ0AK1PqVAjVDQIKTHGjRNUNA+OCDDz44Q0Dm7QyJeTtDQNBZCgnRPUNA1PqVArU+Q0A=\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[124]},{\"__ndarray__\":\"CdT6lQI1Q0BQaWmDFTZDQPjggw8+OENAqAlbgnE5Q0AmQLXcgzlDQHkDIWW7OENA+OCDDz44Q0DODiaUWTdDQEvmfi+hNUNACtT6lQI1Q0BoSTVUjjNDQBzHcRzHMUNAXuctd0QxQ0CIVoVcuC5DQC+66KKLLkNAbvsHZuArQ0BBrV8pUCtDQGjkEt3JKENAU6DWrxQoQ0CFiJcKbSVDQGWTTTbZJENA/B8DHb8hQ0B3hsS8nSFDQIl5O0NiHkNApAGXCX8dQ0CbbLLJJhtDQBvzazKQGENArV8pUOsXQ0C/UqDWrxRDQMEvnpWOEUNA0UUXXXQRQ0DkOI7jOA5DQPYrBWr9CkNAL8IOruYKQ0BQ0Jo81ghDQA1nIUvJCENAEJf4cIsJQ0Da/dEDuwpDQPYrBWr9CkNABpATLWcMQ0DkOI7jOA5DQD4W1PxEDkNAW9WWD4kQQ0DSRRdddBFDQJkeBAYKE0NAv1Kg1q8UQ0DoZsM2zRVDQK1fKVDrF0NAJKe+S9wYQ0CbbLLJJhtDQG74delDHENAiXk7Q2IeQ0CgxoNhFCBDQHeGxLydIUNA9YwxnGIkQ0Blk0022SRDQFOg1q8UKENA1yFq1ropQ0BArV8pUCtDQC+66KKLLkNAHMdxHMcxQ0AJ1PqVAjVDQA==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[62]}],\"ys\":[{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[248]},{\"__ndarray__\":\"hFuAtFu66j8i+rsh+bfqP0pMLzsTtuo/difenba06j8oOLjZ+7PqP0PvrYEMtOo/0GCP5Cu16j8GswZzxrfqP919riGOvOo/aEUjAd+86j/Gkl8s+cXqP8Leto2fxuo/JeCbVxPP6j+DLdiCLdjqP+J6FK5H4eo/QMhQ2WHq6j+eFY0EfPPqP/1iyS+W/Oo/WrAFW7AF6z+6/UGGyg7rPyU8elnME+s/GEt+seQX6z92mLrc/iDrP2fudAsoJus/1eX2Bxkq6z8zMzMzMzPrP+RSG802Nus/koBvXk086z/+B+x33ETrP/DNq4lnRes/TxvotIFO6z8U4YqQfVLrP61oJOCbV+s/N21e12Bf6z8MtmALtmDrP2oDnTbQaes/pPpScq1r6z/JUNlh6nLrP/d2ofV6d+s/KJ4VjQR86z8mEP3I1YLrP4XrUbgehes/0fQMwcuN6z/kOI7jOI7rP0KGyg5Tl+s/FH7QkneY6z+h0wY6baDrP+wsvyrXous//yBDZYep6z8+jFQd7KzrP15uf5Chsus/JHTPNry26z+8u7u7u7vrP25rlw9MwOs/Ggn45tXE6z8J4iUun8nrP3lWNBLwzes/HBNIIbjS6z/Xo3A9CtfrP6RvyJOY2+s/NvGsaCTg6z/OpEpaQeTrP5Q+6ZM+6es/Q43se7Ls6z/ziyW/WPLrPwGUDTbr9Os/Utlh6nL76z9bwnL76fzrP7AmnhWNBOw/2sjVbqwE7D+G0B4HTwzsPw502kCnDew/336UtbcT7D9swRZswRbsP0rqVWvfGuw/zA5Tl9sf7D/JID2wwCHsP3cqFnphKOw/KVyPwvUo7D94Qzgs2y7sP4ipy+0PMuw/WPePYQA17D+xzjwozjrsP+b2BxkqO+w/kreAR29A7D9ERERERETsP4YplCmkRew/dqlz5YxK7D+kkYBvXk3sPxgCWWcKT+w/7QfgLCJT7D8B37yaeFbsP5Cl/KWyVuw/Uib/TcpZ7D8MlKF1NlzsPx2IFNbiXew/SvTEiKde7D+ZQM7CP17sPzzgHlM5XOw/MdX6SdZX7D8C37yaeFbsP/rb6NDiTuw/o5GAb15N7D9ERERERETsP+b2BxkqO+w/iKnL7Q8y7D8pXI/C9SjsP8sOU5fbH+w/bMEWbMEW7D8OdNpApw3sP68mnhWNBOw/J8StM8X76z9R2WHqcvvrP/SLJb9Y8us/lD7pkz7p6z/Su6XwkuPrPzbxrGgk4Os/2KNwPQrX6z9drMRex8/rP3lWNBLwzes/Ggn45tXE6z9+UJF0fL7rP7y7u7u7u+s/Xm5/kKGy6z8WmeYT0q7rP/4gQ2WHqes/odMGOm2g6z8GUW6kX6DrP0KGyg5Tl+s/U/JY7eGS6z/kOI7jOI7rP+feI3Q0hus/hetRuB6F6z8mnhWNBHzrP+7Yf9Qseus/yFDZYepy6z/3hvKAum7rP2oDnTbQaes/NhpTytJj6z8MtmALtmDrPw+2omJmWes/rWgk4JtX6z/U+5uyaE/rP08b6LSBTus/lkOFfM9F6z/wzauJZ0XrP1YNK5KSPOs/koBvXk086z+juBmbqzPrPzQzMzMzM+s/oP/e6BUr6z/V5fYHGSrrP2QNsVfOIus/d5i63P4g6z9yPFo60xrrPxhLfrHkF+s/iFG8UCQT6z+6/UGGyg7rP8xbqsjCC+s/W7AFW7AF6z/b30JJsQTrPz+aYuHV/eo//WLJL5b86j+i8tJkMvfqP54VjQR88+o/RQHFieHw6j+yNzZu3+rqP0DIUNlh6uo/4oWqU/zk6j/iehSuR+HqPzZC7Up23+o//pxyuCva6j+DLdiCLdjqPx+VjEsg1eo/uzMk+GnQ6j8k4JtXE8/qPyZuuRbpy+o/UyBAZ8PH6j/Gkl8s+cXqP7vf/6Tjw+o/INuQdlfA6j9ykS5EM73qP2hFIwHfvOo/hFuAtFu66j8=\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[184]},{\"__ndarray__\":\"6lwsM7T76j9+gra9QvnqP+EhwcqS9+o/QpulPN726j8Hg4rAj/fqP7sPVC5u+uo//GLJL5b86j98nPWNtwLrP1qwBVuwBes/uv1BhsoO6z8YS36x5BfrP3eYutz+IOs/1OX2Bxkq6z+wTYQVdyrrPzQzMzMzM+s/koBvXk086z/83FR3EUDrP/DNq4lnRes/TxvotIFO6z/uMUZ30lDrP61oJOCbV+s/+SFG2ldf6z8MtmALtmDrP2oDnTbQaes/KoXtinps6z/KUNlh6nLrP6DgDpCueOs/Jp4VjQR86z/RmQ6+MYTrP4XrUbgehes/5DiO4ziO6z+9FhjpE4/rP0KGyg5Tl+s/K5z6DG+Z6z+g0wY6baDrPxxq7YpYo+s//yBDZYep6z/Up4qq2azrP15uf5Chsus/C9mPavm16z+8u7u7u7vrP7rQjcm8vus/Ggn45tXE6z+Rxfb7JsfrP3lWNBLwzes/fM+bkjnP6z/Z/mug9NbrP9ejcD0K1+s/DrX/N1ne6z828axoJODrP5MtUZhl5es/lD7pkz7p6z+kbaj5FezrP/KLJb9Y8us/9JHm/mTy6z8TkHHOSvjrP1HZYepy++s/AToCsMT96z+WsOVwwQLsP7AmnhWNBOw/Ukj02zUH7D8ssrhlCgvsPw502kCnDew/6UiTkS8O7D8s5z8SXBDsP4CQC9xiEew/ODqq8sgQ7D8OdNpApw3sP7AmnhWNBOw/RLJVWc0D7D9Q2WHqcvvrP/KLJb9Y8us/kz7pkz7p6z818axoJODrP5yaV3cf2es/16NwPQrX6z95VjQS8M3rPxoJ+ObVxOs/CuAkeUDA6z+8u7u7u7vrP15uf5Chsus/npCcremt6z/+IENlh6nrP6HTBjptoOs/SHhwU0ye6z9ChsoOU5frP6UBcl9ukOs/5DiO4ziO6z+E61G4HoXrP+xTmDG+g+s/J54VjQR86z/CywNrDHjrP8lQ2WHqcus/tjW54Rht6z9qA5020GnrPwEcA3vNYus/DLZgC7Zg6z/gBWMQGFnrP61oJOCbV+s/Gki35+lP6z9PG+i0gU7rP5ycdEY3R+s/8M2riWdF6z+ms+Yb9z7rP5KAb15NPOs/rddYvyI36z80MzMzMzPrPwnB0L+1L+s/1eX2Bxkq6z/i0bPDrSjrP2c1FNgKIus/d5i63P4g6z9d2KpWyRvrPxhLfrHkF+s/TOVstegV6z//g/EWcBDrP7r9QYbKDus/WuOgTF4L6z83m1g7uAbrP1qwBVuwBes/lrp+J4sC6z/6pAwe3P7qP/1iyS+W/Oo/6lwsM7T76j8=\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[124]},{\"__ndarray__\":\"hRTCOp076z+TgG9eTTzrP+zXHZtxP+s/8M2riWdF6z9PG+i0gU7rP6xoJOCbV+s/1XIwLuBa6z8MtmALtmDrP2oDnTbQaes/Yg3GjZNs6z/JUNlh6nLrP8vFRAsJeus/J54VjQR86z+F61G4HoXrP3hN02Kyhes/5DiO4ziO6z9YAjA18I/rP0KGyg5Tl+s/6dVAPVCZ6z+h0wY6baDrP7HZvmvsoes//yBDZYep6z+0LIsb16nrP6YbY4besOs/Xm5/kKGy6z9Fmd27LbfrP7y7u7u7u+s/FO/CPtm86z+I4wfXVcHrPxoJ+ObVxOs/2niB1PLE6z8WLQkNc8brP7XcbOv+xOs/Ggn45tXE6z+8u7u7u7vrP15uf5Chsus//iBDZYep6z+g0wY6baDrP4KtQzX6nus/QobKDlOX6z+zFX6+cY7rP+Q4juM4jus/hutRuB6F6z8+MDAEs4HrPyeeFY0EfOs/3lDQYn526z/JUNlh6nLrP5e5kMqEbOs/agOdNtBp6z8oV3O5k2PrPwy2YAu2YOs/Au+s1oNb6z+uaCTgm1frP6Y8ktI2VOs/TxvotIFO6z+aVz7GlU3rPyg/PUfyR+s/8M2riWdF6z8MvxqXDEPrP8ypaz4wP+s/koBvXk086z+FFMI6nTvrPw==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[62]}]},\"selected\":{\"id\":\"1292\"},\"selection_policy\":{\"id\":\"1293\"}},\"id\":\"1278\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"line_width\":{\"value\":2},\"xs\":{\"field\":\"xs\"},\"ys\":{\"field\":\"ys\"}},\"id\":\"1279\",\"type\":\"MultiLine\"},{\"attributes\":{},\"id\":\"1289\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"line_alpha\":{\"value\":0.1},\"line_width\":{\"value\":2},\"xs\":{\"field\":\"xs\"},\"ys\":{\"field\":\"ys\"}},\"id\":\"1280\",\"type\":\"MultiLine\"},{\"attributes\":{\"axis\":{\"id\":\"1256\"},\"ticker\":null},\"id\":\"1259\",\"type\":\"Grid\"},{\"attributes\":{\"axis_label\":\"\\u03d5 (\\u00b5m)\",\"formatter\":{\"id\":\"1286\"},\"major_label_policy\":{\"id\":\"1287\"},\"ticker\":{\"id\":\"1257\"}},\"id\":\"1256\",\"type\":\"LinearAxis\"},{\"attributes\":{\"overlay\":{\"id\":\"1270\"}},\"id\":\"1266\",\"type\":\"BoxZoomTool\"},{\"attributes\":{},\"id\":\"1287\",\"type\":\"AllLabels\"},{\"attributes\":{},\"id\":\"1254\",\"type\":\"LinearScale\"},{\"attributes\":{\"active_multi\":null,\"tools\":[{\"id\":\"1264\"},{\"id\":\"1265\"},{\"id\":\"1266\"},{\"id\":\"1267\"},{\"id\":\"1268\"},{\"id\":\"1269\"}]},\"id\":\"1271\",\"type\":\"Toolbar\"},{\"attributes\":{},\"id\":\"1265\",\"type\":\"WheelZoomTool\"},{\"attributes\":{},\"id\":\"1267\",\"type\":\"SaveTool\"},{\"attributes\":{\"data_source\":{\"id\":\"1278\"},\"glyph\":{\"id\":\"1279\"},\"hover_glyph\":null,\"muted_glyph\":null,\"nonselection_glyph\":{\"id\":\"1280\"},\"view\":{\"id\":\"1282\"}},\"id\":\"1281\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"axis\":{\"id\":\"1260\"},\"dimension\":1,\"ticker\":null},\"id\":\"1263\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"1257\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"1269\",\"type\":\"HelpTool\"},{\"attributes\":{},\"id\":\"1264\",\"type\":\"PanTool\"},{\"attributes\":{},\"id\":\"1248\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"1250\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"1293\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"1252\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"1268\",\"type\":\"ResetTool\"}],\"root_ids\":[\"1247\"]},\"title\":\"Bokeh Application\",\"version\":\"2.3.3\"}};\n",
" var render_items = [{\"docid\":\"069bc717-aae6-47a4-8ea7-69156541c8c8\",\"root_ids\":[\"1247\"],\"roots\":{\"1247\":\"339d179f-9378-40cc-932c-1d58cc480b83\"}}];\n",
" root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n",
"\n",
" }\n",
" if (root.Bokeh !== undefined) {\n",
" embed_document(root);\n",
" } else {\n",
" var attempts = 0;\n",
" var timer = setInterval(function(root) {\n",
" if (root.Bokeh !== undefined) {\n",
" clearInterval(timer);\n",
" embed_document(root);\n",
" } else {\n",
" attempts++;\n",
" if (attempts > 100) {\n",
" clearInterval(timer);\n",
" console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\");\n",
" }\n",
" }\n",
" }, 10, root)\n",
" }\n",
"})(window);"
],
"application/vnd.bokehjs_exec.v0+json": ""
},
"metadata": {
"application/vnd.bokehjs_exec.v0+json": {
"id": "1247"
}
},
"output_type": "display_data"
}
],
"source": [
"# Plot\n",
"p = bebi103.viz.contour(\n",
" PHI[:, :, 0],\n",
" GAMMA[:, :, 0],\n",
" POST_marginalized,\n",
" x_axis_label=\"ϕ (µm)\",\n",
" y_axis_label=\"γ\",\n",
" overlaid=False,\n",
")\n",
"bokeh.io.show(p)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"To see how good the Normal approximation is, we can plot the marginalized Normal distribution as well. In this case, we can marginalize a multivariate Normal simply by ignoring the parameters we are marginalizing out. We simply cut $\\sigma$ out of the MAP and out of the posterior covariance matrix and compute the PDF for a multivariate Normal. This calculation is almost instantaneous compared to the calculation of the full posterior."
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
" \n"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/javascript": [
"(function(root) {\n",
" function embed_document(root) {\n",
" \n",
" var docs_json = {\"6cce91f6-3103-432e-940a-75a3dc7edb9e\":{\"defs\":[{\"extends\":null,\"module\":null,\"name\":\"ReactiveHTML1\",\"overrides\":[],\"properties\":[]},{\"extends\":null,\"module\":null,\"name\":\"FlexBox1\",\"overrides\":[],\"properties\":[{\"default\":\"flex-start\",\"kind\":null,\"name\":\"align_content\"},{\"default\":\"flex-start\",\"kind\":null,\"name\":\"align_items\"},{\"default\":\"row\",\"kind\":null,\"name\":\"flex_direction\"},{\"default\":\"wrap\",\"kind\":null,\"name\":\"flex_wrap\"},{\"default\":\"flex-start\",\"kind\":null,\"name\":\"justify_content\"}]},{\"extends\":null,\"module\":null,\"name\":\"TemplateActions1\",\"overrides\":[],\"properties\":[{\"default\":0,\"kind\":null,\"name\":\"open_modal\"},{\"default\":0,\"kind\":null,\"name\":\"close_modal\"}]},{\"extends\":null,\"module\":null,\"name\":\"MaterialTemplateActions1\",\"overrides\":[],\"properties\":[{\"default\":0,\"kind\":null,\"name\":\"open_modal\"},{\"default\":0,\"kind\":null,\"name\":\"close_modal\"}]}],\"roots\":{\"references\":[{\"attributes\":{\"below\":[{\"id\":\"1256\"}],\"center\":[{\"id\":\"1259\"},{\"id\":\"1263\"}],\"frame_height\":300,\"frame_width\":300,\"left\":[{\"id\":\"1260\"}],\"renderers\":[{\"id\":\"1281\"},{\"id\":\"1352\"}],\"title\":{\"id\":\"1284\"},\"toolbar\":{\"id\":\"1271\"},\"x_range\":{\"id\":\"1248\"},\"x_scale\":{\"id\":\"1252\"},\"y_range\":{\"id\":\"1250\"},\"y_scale\":{\"id\":\"1254\"}},\"id\":\"1247\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{},\"id\":\"1290\",\"type\":\"AllLabels\"},{\"attributes\":{\"source\":{\"id\":\"1278\"}},\"id\":\"1282\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"1286\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"bottom_units\":\"screen\",\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"syncable\":false,\"top_units\":\"screen\"},\"id\":\"1270\",\"type\":\"BoxAnnotation\"},{\"attributes\":{},\"id\":\"1284\",\"type\":\"Title\"},{\"attributes\":{},\"id\":\"1261\",\"type\":\"BasicTicker\"},{\"attributes\":{\"axis_label\":\"\\u03b3\",\"formatter\":{\"id\":\"1289\"},\"major_label_policy\":{\"id\":\"1290\"},\"ticker\":{\"id\":\"1261\"}},\"id\":\"1260\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"1365\",\"type\":\"Selection\"},{\"attributes\":{},\"id\":\"1292\",\"type\":\"Selection\"},{\"attributes\":{\"line_color\":{\"value\":\"orange\"},\"line_width\":{\"value\":2},\"xs\":{\"field\":\"xs\"},\"ys\":{\"field\":\"ys\"}},\"id\":\"1350\",\"type\":\"MultiLine\"},{\"attributes\":{\"data\":{\"xs\":[{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[248]},{\"__ndarray__\":\"ejtDYt5OQ0BnSMzbGVJDQFVVVVVVVUNAQ2LezpBYQ0Axb2dIzFtDQB988MEHX0NADYl5O0NiQ0D7lQK1fmVDQOmiiy66aENAhrZkqOBoQ0Bwrlu21WtDQNevFKj1a0NA0isDqDptQ0Dmi/3w0m1DQJTWA1bgbUNAgJkKL4htQ0DfQMSH4GxDQNevFKj1a0NAkywmdNpqQ0Ciu769jWlDQOmiiy66aENA8X7biRdoQ0CuKQ/tf2ZDQPuVArV+ZUNAKe4FusRkQ0DQdKsS7WJDQA6JeTtDYkNAY4JbMPxgQ0AffPDBB19DQMvqVVfpXkNAyu1Y+cpcQ0Axb2dIzFtDQKaNY+KQWkNAQ2LezpBYQ0DmArDDO1hDQHacWsfYVUNAVVVVVVVVQ0B2eVk6ZFNDQGdIzNsZUkNA0vrzndhQQ0B6O0Ni3k5DQMooJrI3TkNAjC666KJLQ0CbrpLfgktDQLJ8jKXCSENAniExb2dIQ0DyM7sM8UVDQLAUqPUrRUNAVO/N3AtDQ0DCBx988EFDQFopQYITQENA1PqVArU+Q0BKad4gCD1DQObtDIl5O0NA7A81k+k5Q0D44IMPPjhDQNiOSWi3NkNACtT6lQI1Q0C69F3fcDNDQBzHcRzHMUNA7m2k4RQwQ0Avuuiiiy5DQBBLl/mhLENAQa1fKVArQ0BdH5lHFilDQFOg1q8UKENAqxlhc28lQ0Bkk0022SRDQFzxkZmqIUNAd4bEvJ0hQ0CJeTtDYh5DQGjE+mfJHUNAm2yyySYbQ0AWvwE8whlDQK1fKVDrF0NA/AhE144VQ0DAUqDWrxRDQNFFF110EUNAKLu82CcRQ0DkOI7jOA5DQMaGXcqADENA9isFav0KQ0AIH3zwwQdDQCThTb+KB0NAGhLzdoYEQ0DiI443HQJDQCwFav1KAUNAPvjggw/+QkB6k/3L/PtCQFDrVwrU+kJAYt7OkJj3QkDYSeiNjvRCQHTRRRdd9EJAhsS8nSHxQkCZtzMk5u1CQKuqqqqq6kJAvZ0hMW/nQkDPkJi3M+RCQOGDDz744EJA83aGxLzdQkDpoHH4GN1CQAVq/UqB2kJAnjpYbCPaQkBuTSMom9hCQFfhUf7A10JAX1MuTGHXQkAR3keBW9dCQPDzetKa10JAObtgFxLYQkCYrX9dudhCQNlW13WM2UJABWr9SoHaQkBzVF60idpCQNqXjM+h20JAPRauqt7cQkDzdobEvN1CQL1isJI73kJAfkHpt6/fQkDhgw8++OBCQB8rYERH4UJAJ084j+/iQkDPkJi3M+RCQPM2gtm55EJArOd/e5fmQkC9nSExb+dCQMejS+KO6EJAk454YafqQkCrqqqqqupCQCZzZVnI7EJAmbczJObtQkDJwcCTCe9CQIbEvJ0h8UJA5JoigWjxQkAZu4dX2PNCQHTRRRdd9EJA8yjrwF/2QkBi3s6QmPdCQN7Cfu0D+UJAUOtXCtT6QkAcD1/6w/tCQD744IMP/kJAbUe4hJ/+QkAsBWr9SgFDQBRLEqeWAUNAGhLzdoYEQ0BMchf6qQRDQAgffPDBB0NAPxHfmNoHQ0D2KwVq/QpDQE8/6CgqC0NA5DiO4zgOQ0CKpxfmmg5DQNFFF110EUNA+ME1sy8SQ0C/UqDWrxRDQKUonC/sFUNArV8pUOsXQ0DZhPvS1BlDQJtssskmG0NAqjFrEO8dQ0CJeTtDYh5DQHeGxLydIUNAmpr+GjwiQ0Blk0022SRDQCp8IgHFJkNAVKDWrxQoQ0BBrV8pUCtDQC536ESXK0NAL7rooosuQ0DoBtXsvTBDQBzHcRzHMUNACtT6lQI1Q0BMoo+aUjZDQPjggw8+OENA5u0MiXk7Q0AGSdqJeDxDQNT6lQK1PkNAwgcffPBBQ0AYQRHDekNDQLAUqPUrRUNAniExb2dIQ0CMLrrooktDQEy8m0AITENAejtDYt5OQ0A=\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[184]},{\"__ndarray__\":\"1PqVArU+Q0DCBx988EFDQLAUqPUrRUNAniExb2dIQ0CMLrrooktDQHo7Q2LeTkNAKO253hdQQ0BnSMzbGVJDQHaN/sC0UkNAmPCJJYNTQ0BzOLwJhlNDQHyHtEcFU0NAuNDLmCZSQ0BnSMzbGVJDQNzaxzT1UENAVmW7vYxPQ0B6O0Ni3k5DQAOnJhfuTUNA57UsNSRMQ0CMLrrooktDQDm9efMvSkNAniExb2dIQ0D5fFr+F0hDQKjHgNLdRUNAsBSo9StFQ0AumJTKgkNDQMIHH3zwQUNAa6Vj9AhBQ0DU+pUCtT5DQDvKC41xPkNAmjxUFL07Q0Dn7QyJeTtDQN5M7vHqOENA+OCDDz44Q0A/yY7w+jVDQArU+pUCNUNAO+sVaOwyQ0Acx3EcxzFDQNzasxa+L0NALrrooosuQ0CWwGQRbixDQEGtXylQK0NA9Gs9rvkoQ0BToNavFChDQC4HOWddJUNAZpNNNtkkQ0B3hsS8nSFDQOuq9ECUIUNAiXk7Q2IeQ0AHYxVYjh1DQJtssskmG0NAXagGH0gZQ0CtXylQ6xdDQAHqnwC2FENAv1Kg1q8UQ0DRRRdddBFDQDInvm6SD0NA5DiO4zgOQ0D2KwVq/QpDQHcG5rqpCUNACB988MEHQ0AaEvN2hgRDQIVrrMjSAUNALAVq/UoBQ0A++OCDD/5CQFDrVwrU+kJAYt7OkJj3QkB00UUXXfRCQBlFFNNC8UJAhsS8nSHxQkCooCxkJvBCQD8CJdHQ70JAqdGS6/rvQkAADFC8gPBCQIbEvJ0h8UJA4MyEVVDxQkB9CCdaYfJCQJjtKICh80JAdNFFF130QkAb0+FkEvVCQDy26+us9kJAYt7OkJj3QkCZi38xcPhCQOE2iBhY+kJAUOtXCtT6QkBWNDH2ZfxCQD744IMP/kJAEddgNZf+QkCSVHZZ6wBDQCwFav1KAUNA4oJYxGMDQ0AaEvN2hgRDQOQr/JIABkNACB988MEHQ0AjkGtnwghDQPYrBWr9CkNAK1J6mqoLQ0DkOI7jOA5DQOAocUa7DkNA0UUXXXQRQ0AzvxdX9xFDQL9SoNavFENA8qe1n2IVQ0CtXylQ6xdDQEmq3/cBGUNAm2yyySYbQ0D+hy1g2xxDQIl5O0NiHkNAF3JJMPYgQ0B3hsS8nSFDQGWTTTbZJENAcDw602MlQ0BToNavFChDQBqJtg86KkNAQa1fKVArQ0Avuuiiiy5DQGS8nZqaL0NAHMdxHMcxQ0AK1PqVAjVDQIKTHGjRNUNA+OCDDz44Q0Dm7QyJeTtDQNBZCgnRPUNA1PqVArU+Q0A=\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[124]},{\"__ndarray__\":\"CdT6lQI1Q0BQaWmDFTZDQPjggw8+OENAqAlbgnE5Q0AmQLXcgzlDQHkDIWW7OENA+OCDDz44Q0DODiaUWTdDQEvmfi+hNUNACtT6lQI1Q0BoSTVUjjNDQBzHcRzHMUNAXuctd0QxQ0CIVoVcuC5DQC+66KKLLkNAbvsHZuArQ0BBrV8pUCtDQGjkEt3JKENAU6DWrxQoQ0CFiJcKbSVDQGWTTTbZJENA/B8DHb8hQ0B3hsS8nSFDQIl5O0NiHkNApAGXCX8dQ0CbbLLJJhtDQBvzazKQGENArV8pUOsXQ0C/UqDWrxRDQMEvnpWOEUNA0UUXXXQRQ0DkOI7jOA5DQPYrBWr9CkNAL8IOruYKQ0BQ0Jo81ghDQA1nIUvJCENAEJf4cIsJQ0Da/dEDuwpDQPYrBWr9CkNABpATLWcMQ0DkOI7jOA5DQD4W1PxEDkNAW9WWD4kQQ0DSRRdddBFDQJkeBAYKE0NAv1Kg1q8UQ0DoZsM2zRVDQK1fKVDrF0NAJKe+S9wYQ0CbbLLJJhtDQG74delDHENAiXk7Q2IeQ0CgxoNhFCBDQHeGxLydIUNA9YwxnGIkQ0Blk0022SRDQFOg1q8UKENA1yFq1ropQ0BArV8pUCtDQC+66KKLLkNAHMdxHMcxQ0AJ1PqVAjVDQA==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[62]}],\"ys\":[{\"__ndarray__\":\"Yo7DWaB86j+TuJiYTHrqPyA6OKtgeOo/+k/GP9x26j+bkdCFxHXqP308QzEldeo/3p2LMRJ16j/EdfZuqnXqPxTcXhkcd+o/AqSQd6t56j/TJ33SJ33qP1v8xkjHfeo/aACd44iE6j8wdbn9QYbqP5DC9Shcj+o/kLQ5STKR6j/uDzJUdpjqP01dbn+Qoeo/q6qqqqqq6j8J+ObVxLPqP2hFIwHfvOo/xpJfLPnF6j/i9n6aocvqPyXgm1cTz+o/gy3Ygi3Y6j/iehSuR+HqP0g7UfNc5eo/QMhQ2WHq6j+eFY0EfPPqP00iw+g0+eo//WLJL5b86j9csAVbsAXrP6R58IF8Cus/uv1BhsoO6z8XS36x5BfrP1MFeEQ6Gus/d5i63P4g6z98g8c44SjrP9bl9gcZKus/NDMzMzMz6z9DAC6exTbrP5KAb15NPOs/MWuG6vtD6z/wzauJZ0XrP08b6LSBTus/C34zwblQ6z+taCTgm1frP1SoJjcIXes/DLZgC7Zg6z/8PIFp42jrP2oDnTbQaes/yVDZYepy6z90ZDBlfnTrPyaeFY0EfOs/653dLNR/6z+F61G4HoXrPz5JvnPZius/5DiO4ziO6z+TfNdMl5XrP0KGyg5Tl+s/AAUYYRWg6z+h0wY6baDrP/8gQ2WHqes/yi/MqXWq6z9ebn+QobLrP6I8FwuotOs/vLu7u7u76z9ijHjnpb7rPxoJ+ObVxOs/mvr8CHPI6z95VjQS8M3rP7H4LIIS0us/16NwPQrX6z9TcWvAhtvrPzbxrGgk4Os/epR3mtHk6z+UPumTPunrP/cRi1v07es/84slv1jy6z/DkXHL7/brP1LZYepy++s/lIzdM8T/6z+wJp4VjQTsP/bxKGNxCOw/DnTaQKcN7D8yY5ys9hDsP2zBFmzBFuw/U2hF5lIZ7D/LDlOX2x/sPzgvUmSEIew/KVyPwvUo7D9ubtfxiCnsP6oHLpF2Mew/iKnL7Q8y7D/Obf8sTTnsP+b2BxkqO+w/iMTX+/RA7D9ERERERETsP+QCYt9pSOw/o5GAb15N7D8bUy36pk/sPwDfvJp4Vuw/kH9clqZW7D/X4SlPrV3sP2As+cWSX+w/30jWQnlk7D++eTXxrGjsPzTXJH38auw/pv13REFx7D8dx3Ecx3HsP282Ca+Ad+w/exSuR+F67D+jUAGJZX3sP18cvWcEg+w/2mHqcvuD7D/iBYJIiIjsPzmvJp4Vjew/obMtG5aN7D/QjW7HjpLsP5b8Yskvluw/XtV9AAuX7D+xjDvVV5vsP+Zd/fwYn+w/9Umf9Emf7D8sf64HoqLsPyDEvoecpew/tnA7FQeo7D9Tl9sfZKjsP+ga7F3zqew/4G2GWyur7D+Saq/kjavsP/D4R9buquw/PBz4AQmp7D9Sl9sfZKjsP/wEbeJqpew/9Umf9Emf7D+W/GLJL5bsP+MWvdCJlOw/OK8mnhWN7D/aYepy+4PsP3hlay6ze+w/exSuR+F67D8dx3Ecx3HsP755NfGsaOw/YSz5xZJf7D8B37yaeFbsP+gam5DAUOw/o5GAb15N7D9ERERERETsP+b2BxkqO+w/iKnL7Q8y7D8pXI/C9SjsP+jJFRHaJ+w/yw5Tl9sf7D9swRZswRbsPw502kCnDew/7DCVGmwN7D+wJp4VjQTsP1HZYepy++s/mlDYk6D36z/ziyW/WPLrP5Q+6ZM+6es/xJyvfGHk6z828axoJODrP9ejcD0K1+s/AvWc/uXS6z95VjQS8M3rPxoJ+ObVxOs/j5pJ6b7C6z+8u7u7u7vrP0SEosums+s/Xm5/kKGy6z//IENlh6nrPxg/765apes/oNMGOm2g6z9h8Ozj4pfrP0KGyg5Tl+s/5DiO4ziO6z8j7nGT7YrrP4XrUbgehes/Wrm6lJl+6z8nnhWNBHzrP8lQ2WHqcus/MMA8kNhy6z9qA5020GnrP3d1G6ZfZ+s/DLZgC7Zg6z+jgzClX1zrP61oJOCbV+s/jLUllspR6z9PG+i0gU7rP66zsPuUR+s/8M2riWdF6z8EfCR3tT3rP5KAb15NPOs/ZGTRfyQ06z80MzMzMzPrP8d/GyrcKus/1eX2Bxkq6z8+6+j71yHrP3eYutz+IOs/uryizBQZ6z8YS36x5BfrP4XOhK+QEOs/uv1BhsoO6z89p2nnSgjrP1qwBVuwBes/M3+m40MA6z/9YskvlvzqPxJ77UV9+Oo/nhWNBHzz6j9k/47x+fDqP0DIUNlh6uo/CwTcJL7p6j8rhoJ/leLqP+J6FK5H4eo/nGa9tpjb6j+ELdiCLdjqP4XaNkbm1Oo/JeCbVxPP6j8Q6eDAhs7qP21MlD4iyOo/xpJfLPnF6j82w7KL/MHqP2hFIwHfvOo/j7g0Rza86j9EiHCmZrbqPwn45tXEs+o/ANvpDeKw6j9Ubq6apqvqP6uqqqqqquo/qmuWS22m6j+xxGNvrKHqP01dbn+Qoeo/CKuo08uc6j/uDzJUdpjqP07Xqnl0mOo/1fthjP6T6j9yc3b/B5DqP5DC9Shcj+o//kUmNxOM6j/DGexCe4jqPzJ1uf1Bhuo/vlcCeiWF6j+SW4fM8YHqP1DDE8Iif+o/0yd90id96j9ijsNZoHzqPw==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[248]},{\"__ndarray__\":\"hFuAtFu66j8i+rsh+bfqP0pMLzsTtuo/difenba06j8oOLjZ+7PqP0PvrYEMtOo/0GCP5Cu16j8GswZzxrfqP919riGOvOo/aEUjAd+86j/Gkl8s+cXqP8Leto2fxuo/JeCbVxPP6j+DLdiCLdjqP+J6FK5H4eo/QMhQ2WHq6j+eFY0EfPPqP/1iyS+W/Oo/WrAFW7AF6z+6/UGGyg7rPyU8elnME+s/GEt+seQX6z92mLrc/iDrP2fudAsoJus/1eX2Bxkq6z8zMzMzMzPrP+RSG802Nus/koBvXk086z/+B+x33ETrP/DNq4lnRes/TxvotIFO6z8U4YqQfVLrP61oJOCbV+s/N21e12Bf6z8MtmALtmDrP2oDnTbQaes/pPpScq1r6z/JUNlh6nLrP/d2ofV6d+s/KJ4VjQR86z8mEP3I1YLrP4XrUbgehes/0fQMwcuN6z/kOI7jOI7rP0KGyg5Tl+s/FH7QkneY6z+h0wY6baDrP+wsvyrXous//yBDZYep6z8+jFQd7KzrP15uf5Chsus/JHTPNry26z+8u7u7u7vrP25rlw9MwOs/Ggn45tXE6z8J4iUun8nrP3lWNBLwzes/HBNIIbjS6z/Xo3A9CtfrP6RvyJOY2+s/NvGsaCTg6z/OpEpaQeTrP5Q+6ZM+6es/Q43se7Ls6z/ziyW/WPLrPwGUDTbr9Os/Utlh6nL76z9bwnL76fzrP7AmnhWNBOw/2sjVbqwE7D+G0B4HTwzsPw502kCnDew/336UtbcT7D9swRZswRbsP0rqVWvfGuw/zA5Tl9sf7D/JID2wwCHsP3cqFnphKOw/KVyPwvUo7D94Qzgs2y7sP4ipy+0PMuw/WPePYQA17D+xzjwozjrsP+b2BxkqO+w/kreAR29A7D9ERERERETsP4YplCmkRew/dqlz5YxK7D+kkYBvXk3sPxgCWWcKT+w/7QfgLCJT7D8B37yaeFbsP5Cl/KWyVuw/Uib/TcpZ7D8MlKF1NlzsPx2IFNbiXew/SvTEiKde7D+ZQM7CP17sPzzgHlM5XOw/MdX6SdZX7D8C37yaeFbsP/rb6NDiTuw/o5GAb15N7D9ERERERETsP+b2BxkqO+w/iKnL7Q8y7D8pXI/C9SjsP8sOU5fbH+w/bMEWbMEW7D8OdNpApw3sP68mnhWNBOw/J8StM8X76z9R2WHqcvvrP/SLJb9Y8us/lD7pkz7p6z/Su6XwkuPrPzbxrGgk4Os/2KNwPQrX6z9drMRex8/rP3lWNBLwzes/Ggn45tXE6z9+UJF0fL7rP7y7u7u7u+s/Xm5/kKGy6z8WmeYT0q7rP/4gQ2WHqes/odMGOm2g6z8GUW6kX6DrP0KGyg5Tl+s/U/JY7eGS6z/kOI7jOI7rP+feI3Q0hus/hetRuB6F6z8mnhWNBHzrP+7Yf9Qseus/yFDZYepy6z/3hvKAum7rP2oDnTbQaes/NhpTytJj6z8MtmALtmDrPw+2omJmWes/rWgk4JtX6z/U+5uyaE/rP08b6LSBTus/lkOFfM9F6z/wzauJZ0XrP1YNK5KSPOs/koBvXk086z+juBmbqzPrPzQzMzMzM+s/oP/e6BUr6z/V5fYHGSrrP2QNsVfOIus/d5i63P4g6z9yPFo60xrrPxhLfrHkF+s/iFG8UCQT6z+6/UGGyg7rP8xbqsjCC+s/W7AFW7AF6z/b30JJsQTrPz+aYuHV/eo//WLJL5b86j+i8tJkMvfqP54VjQR88+o/RQHFieHw6j+yNzZu3+rqP0DIUNlh6uo/4oWqU/zk6j/iehSuR+HqPzZC7Up23+o//pxyuCva6j+DLdiCLdjqPx+VjEsg1eo/uzMk+GnQ6j8k4JtXE8/qPyZuuRbpy+o/UyBAZ8PH6j/Gkl8s+cXqP7vf/6Tjw+o/INuQdlfA6j9ykS5EM73qP2hFIwHfvOo/hFuAtFu66j8=\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[184]},{\"__ndarray__\":\"6lwsM7T76j9+gra9QvnqP+EhwcqS9+o/QpulPN726j8Hg4rAj/fqP7sPVC5u+uo//GLJL5b86j98nPWNtwLrP1qwBVuwBes/uv1BhsoO6z8YS36x5BfrP3eYutz+IOs/1OX2Bxkq6z+wTYQVdyrrPzQzMzMzM+s/koBvXk086z/83FR3EUDrP/DNq4lnRes/TxvotIFO6z/uMUZ30lDrP61oJOCbV+s/+SFG2ldf6z8MtmALtmDrP2oDnTbQaes/KoXtinps6z/KUNlh6nLrP6DgDpCueOs/Jp4VjQR86z/RmQ6+MYTrP4XrUbgehes/5DiO4ziO6z+9FhjpE4/rP0KGyg5Tl+s/K5z6DG+Z6z+g0wY6baDrPxxq7YpYo+s//yBDZYep6z/Up4qq2azrP15uf5Chsus/C9mPavm16z+8u7u7u7vrP7rQjcm8vus/Ggn45tXE6z+Rxfb7JsfrP3lWNBLwzes/fM+bkjnP6z/Z/mug9NbrP9ejcD0K1+s/DrX/N1ne6z828axoJODrP5MtUZhl5es/lD7pkz7p6z+kbaj5FezrP/KLJb9Y8us/9JHm/mTy6z8TkHHOSvjrP1HZYepy++s/AToCsMT96z+WsOVwwQLsP7AmnhWNBOw/Ukj02zUH7D8ssrhlCgvsPw502kCnDew/6UiTkS8O7D8s5z8SXBDsP4CQC9xiEew/ODqq8sgQ7D8OdNpApw3sP7AmnhWNBOw/RLJVWc0D7D9Q2WHqcvvrP/KLJb9Y8us/kz7pkz7p6z818axoJODrP5yaV3cf2es/16NwPQrX6z95VjQS8M3rPxoJ+ObVxOs/CuAkeUDA6z+8u7u7u7vrP15uf5Chsus/npCcremt6z/+IENlh6nrP6HTBjptoOs/SHhwU0ye6z9ChsoOU5frP6UBcl9ukOs/5DiO4ziO6z+E61G4HoXrP+xTmDG+g+s/J54VjQR86z/CywNrDHjrP8lQ2WHqcus/tjW54Rht6z9qA5020GnrPwEcA3vNYus/DLZgC7Zg6z/gBWMQGFnrP61oJOCbV+s/Gki35+lP6z9PG+i0gU7rP5ycdEY3R+s/8M2riWdF6z+ms+Yb9z7rP5KAb15NPOs/rddYvyI36z80MzMzMzPrPwnB0L+1L+s/1eX2Bxkq6z/i0bPDrSjrP2c1FNgKIus/d5i63P4g6z9d2KpWyRvrPxhLfrHkF+s/TOVstegV6z//g/EWcBDrP7r9QYbKDus/WuOgTF4L6z83m1g7uAbrP1qwBVuwBes/lrp+J4sC6z/6pAwe3P7qP/1iyS+W/Oo/6lwsM7T76j8=\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[124]},{\"__ndarray__\":\"hRTCOp076z+TgG9eTTzrP+zXHZtxP+s/8M2riWdF6z9PG+i0gU7rP6xoJOCbV+s/1XIwLuBa6z8MtmALtmDrP2oDnTbQaes/Yg3GjZNs6z/JUNlh6nLrP8vFRAsJeus/J54VjQR86z+F61G4HoXrP3hN02Kyhes/5DiO4ziO6z9YAjA18I/rP0KGyg5Tl+s/6dVAPVCZ6z+h0wY6baDrP7HZvmvsoes//yBDZYep6z+0LIsb16nrP6YbY4besOs/Xm5/kKGy6z9Fmd27LbfrP7y7u7u7u+s/FO/CPtm86z+I4wfXVcHrPxoJ+ObVxOs/2niB1PLE6z8WLQkNc8brP7XcbOv+xOs/Ggn45tXE6z+8u7u7u7vrP15uf5Chsus//iBDZYep6z+g0wY6baDrP4KtQzX6nus/QobKDlOX6z+zFX6+cY7rP+Q4juM4jus/hutRuB6F6z8+MDAEs4HrPyeeFY0EfOs/3lDQYn526z/JUNlh6nLrP5e5kMqEbOs/agOdNtBp6z8oV3O5k2PrPwy2YAu2YOs/Au+s1oNb6z+uaCTgm1frP6Y8ktI2VOs/TxvotIFO6z+aVz7GlU3rPyg/PUfyR+s/8M2riWdF6z8MvxqXDEPrP8ypaz4wP+s/koBvXk086z+FFMI6nTvrPw==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[62]}]},\"selected\":{\"id\":\"1292\"},\"selection_policy\":{\"id\":\"1293\"}},\"id\":\"1278\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"line_width\":{\"value\":2},\"xs\":{\"field\":\"xs\"},\"ys\":{\"field\":\"ys\"}},\"id\":\"1279\",\"type\":\"MultiLine\"},{\"attributes\":{},\"id\":\"1289\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"line_alpha\":{\"value\":0.1},\"line_width\":{\"value\":2},\"xs\":{\"field\":\"xs\"},\"ys\":{\"field\":\"ys\"}},\"id\":\"1280\",\"type\":\"MultiLine\"},{\"attributes\":{\"axis\":{\"id\":\"1256\"},\"ticker\":null},\"id\":\"1259\",\"type\":\"Grid\"},{\"attributes\":{\"axis_label\":\"\\u03d5 (\\u00b5m)\",\"formatter\":{\"id\":\"1286\"},\"major_label_policy\":{\"id\":\"1287\"},\"ticker\":{\"id\":\"1257\"}},\"id\":\"1256\",\"type\":\"LinearAxis\"},{\"attributes\":{\"overlay\":{\"id\":\"1270\"}},\"id\":\"1266\",\"type\":\"BoxZoomTool\"},{\"attributes\":{\"data\":{\"xs\":[{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[246]},{\"__ndarray__\":\"ejtDYt5OQ0BnSMzbGVJDQFVVVVVVVUNAQ2LezpBYQ0Axb2dIzFtDQB988MEHX0NADYl5O0NiQ0D7lQK1fmVDQDlOj0ySZkNA6qKLLrpoQ0BNJ2piiWlDQAzNUxMFa0NAAIxZj79rQ0Bb/aqK9WtDQJ8V99bLa0NAq+QN/FhrQ0DEqgl0qmpDQMT4aqHHaUNA6aKLLrpoQ0DmpcTJs2hDQJAl1xSAZ0NANFWk6CJmQ0D7lQK1fmVDQPR+hqamZENALpaChgtjQ0AOiXk7Q2JDQM72PydUYUNAM1o1Pn9fQ0AffPDBB19DQL5yvrKWXUNAMW9nSMxbQ0B+Wafxi1tDQCEE5rhzWUNAQ2LezpBYQ0DVLrE8QVdDQFVVVVVVVUNAduv0/vFUQ0A20DYlklJDQGdIzNsZUkNANMzdbx9QQ0B6O0Ni3k5DQHF2v72STUNAjC666KJLQ0D0oSaP7UpDQJ4hMW9nSENAnXDa+zBIQ0ApoqoCYkVDQLAUqPUrRUNArahA9X5CQ0DCBx988EFDQIGBHCaDP0NA1PqVArU+Q0AuC95nbjxDQObtDIl5O0NAZY0eJkA5Q0D44IMPPjhDQEK82GD3NUNACtT6lQI1Q0DU8ASlkjJDQBzHcRzHMUNAE1UiAhAvQ0Avuuiiiy5DQO4nSPxsK0NAQa1fKVArQ0BToNavFChDQNizDNWrJ0NAZZNNNtkkQ0CtZWCixSNDQHeGxLydIUNAyyw+/bMfQ0CJeTtDYh5DQLuF/P5wG0NAm2yyySYbQ0CtXylQ6xdDQHbB8Qv5FkNAv1Kg1q8UQ0BMh21SPxJDQNFFF110EUNA5DiO4zgOQ0Bta6zHMg1DQPYrBWr9CkNACB988MEHQ0D+SAzuwAdDQBoS83aGBENAUVOKC7MBQ0AsBWr9SgFDQD744IMP/kJAUOtXCtT6QkBS3sEvtfpCQGLezpCY90JAdNFFF130QkCXVW0QgPFCQIfEvJ0h8UJAmbczJObtQkCsqqqqqupCQL2dITFv50JAz5CYtzPkQkDhgw8++OBCQPN2hsS83UJABWr9SoHaQkBm8b91rNlCQMFCHoC310JAF1100UXXQkAYSvSMu9ZCQFFax/9W1kJA7AuYnVvWQkCCCd3usdZCQBdddNFF10JA6SaujEvXQkBMTYEnGdhCQOiCQUcW2UJAVIdankHaQkAFav1KgdpCQAQZYneM20JAfe+2tfzcQkDzdobEvN1CQHf4uN2L3kJA8lL/IzjgQkDhgw8++OBCQKiDQB3/4UJA1dDgBeXjQkDPkJi3M+RCQPYHo9Ha5UJAvZ0hMW/nQkCSEKrz8edCQLCa++Ab6kJAq6qqqqrqQkDENId+WexCQJm3MyTm7UJAPCRagLPuQkCGxLydIfFCQLk15Zkn8UJASdK2TKXzQkB00UUXXfRCQOLj/4I89kJAYt7OkJj3QkDrx2dr7PhCQFDrVwrU+kJAWisIErT7QkA++OCDD/5CQBKBveWS/kJALAVq/UoBQ0B0t3C1iAFDQBoS83aGBENAqGfNr5UEQ0BqOYXPuQdDQAgffPDBB0NAIw1fY/cKQ0D2KwVq/QpDQOQ4juM4DkNA71W9TE8OQ0DRRRdddBFDQBMj3sDCEUNAv1Kg1q8UQ0C/shCNVBVDQK1fKVDrF0NAoBZKrAcZQ0CbbLLJJhtDQE65XsffHENAink7Q2IeQ0BipbtQ4SBDQHeGxLydIUNAZZNNNtkkQ0Ap2isxECVDQFOg1q8UKENAjG27jG8pQ0BBrV8pUCtDQIxkDGMNLkNAMLrooosuQ0Acx3EcxzFDQE6COVP2MkNACtT6lQI1Q0B+66vROThDQPfggw8+OENA5u0MiXk7Q0CweQMRBD5DQNT6lQK1PkNAwgcffPBBQ0DcUcpKkERDQLAUqPUrRUNAniExb2dIQ0CMLrrooktDQADZV/2YTENAejtDYt5OQ0A=\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[184]},{\"__ndarray__\":\"sBSo9StFQ0CeITFvZ0hDQI0uuuiiS0NAmqWr0P9MQ0B6O0Ni3k5DQPNVR3xWUUNAZ0jM2xlSQ0Ae+zEqulJDQJ+1vWoZU0NAegzIV+hSQ0DkVvClUVJDQGdIzNsZUkNAJ7foaGVRQ0B/JDmDO1BDQHo7Q2LeTkNAsKVhD0xNQ0CMLrrooktDQOCafYWSS0NAnNHWJa9JQ0CeITFvZ0hDQP61YVGnR0NAuIuwGH1FQ0CwFKj1K0VDQGRf7yMwQ0NAwgcffPBBQ0AxHX7KwUBDQNT6lQK1PkNAEz10zzI+Q0CAq8pXgztDQObtDIl5O0NAXJalObI4Q0D44IMPPjhDQLUY0Gy+NUNACtT6lQI1Q0AxXxyqpjJDQBzHcRzHMUNASm1H+WgvQ0Avuuiiiy5DQOgNEp8CLENAQa1fKVArQ0Do2CoFcChDQFOg1q8UKENAZZNNNtkkQ0B2p4XbqiRDQHeGxLydIUNAyA0VBqggQ0CJeTtDYh5DQDqGhgNiHENAnGyyySYbQ0CtXylQ6xdDQPU04pvLF0NAv1Kg1q8UQ0DLpzeUsBJDQNBFF110EUNA5DiO4zgOQ0CYlKyQ5wxDQPYrBWr9CkNACB988MEHQ0D59SNhvwVDQBoS83aGBENALAVq/UoBQ0A++OCDD/5CQFDrVwrU+kJAYt7OkJj3QkB00UUXXfRCQAa380kJ8kJAhsS8nSHxQkBcMgPV8+9CQNvTZiA970JAbBfxhjnvQkBITq5DrO9CQBvr6J508EJAhsS8nSHxQkB0ZvDJhPFCQAdUtybR8kJA9okqzkv0QkB00UUXXfRCQEhKWZj39UJAYt7OkJj3QkAYiTqJyfdCQDe46IbC+UJAUOtXCtT6QkCwHxqa3/tCQD744IMP/kJAGHmhXB7+QkA6pKmrfgBDQCwFav1KAUNAw4ZPbwADQ0AaEvN2hgRDQNkwJR2jBUNACB988MEHQ0CszqrIZghDQPYrBWr9CkNA5pjRI0wLQ0DkOI7jOA5DQHLSDYhUDkNA0UUXXXQRQ0CMY4AEghFDQL9SoNavFENAc2vocdcUQ0CtXylQ6xdDQMsUUo1YGENAm2yyySYbQ0CEncwaChxDQIl5O0NiHkNAgKHbEfIfQ0B3hsS8nSFDQGbx3tUXJENAZZNNNtkkQ0BToNavFChDQFFPn1iNKENAQa1fKVArQ0BEVQuybi1DQC+66KKLLkNAHMdxHMcxQ0BNYTS84jJDQArU+pUCNUNA+OCDDz44Q0CF3b/mVTlDQObtDIl5O0NA1PqVArU+Q0DCBx988EFDQFw5VoGnQkNAsBSo9StFQ0A=\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[124]},{\"__ndarray__\":\"L7rooosuQ0Acx3EcxzFDQArU+pUCNUNA+OCDDz44Q0DjgpG/sThDQGfTCvDtOUNA/Cop9rE5Q0BuHZGZyjhDQPjggw8+OENA2C7vlF03Q0ALt87dnzVDQArU+pUCNUNADK0y6YozQ0Acx3EcxzFDQPX+DbY+MUNAHNKR5a8uQ0Avuuiiiy5DQCVcBIbRK0NAQa1fKVArQ0AJmrL5ryhDQFOg1q8UKENAQqCIPEIlQ0Blk0022SRDQHeGxLydIUNAQ5aUGXQhQ0CJeTtDYh5DQEF7EUIEHUNAm2yyySYbQ0CtXylQ6xdDQJ052hLkF0NAv1Kg1q8UQ0DRRRdddBFDQF+a/5fQDkNA5DiO4zgOQ0DI5I0s7wxDQPYrBWr9CkNAbPD8K4gIQ0AW1N02UAhDQJb7uRwOCUNA/9ffkEMKQ0D2KwVq/QpDQFTpSJjlC0NAWsIJwc4NQ0DkOI7jOA5DQNZcmZMPEENA0UUXXXQRQ0BcA8lBiRJDQL9SoNavFENArAZCVkEVQ0CtXylQ6xdDQF9HZr4/GENAnGyyySYbQ0Bsu9hmjxtDQIl5O0NiHkNAZeLBFj8fQ0B3hsS8nSFDQK822qRiI0NAZZNNNtkkQ0BToNavFChDQEGtXylQK0NAY2F2JG4uQ0Avuuiiiy5DQA==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[62]}],\"ys\":[{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[246]},{\"__ndarray__\":\"llUu9Y+x6j/Oulpc/q7qP0wR1NQBreo/BeRDBK6r6j/ijaduJ6vqPzoMQ3yrq+o/mRK7oZ6t6j+m6NA3prHqPwn45tXEs+o/8OLXB7e56j9oRSMB37zqP8aSXyz5xeo/JeCbVxPP6j+DLdiCLdjqP+J6FK5H4eo/QMhQ2WHq6j+eFY0EfPPqP/xiyS+W/Oo/JgvKznYF6z9bsAVbsAXrP7r9QYbKDus/GUt+seQX6z96fNr+sRvrP3eYutz+IOs/1eX2Bxkq6z9rvK2HIS7rPzQzMzMzM+s/koBvXk086z80fxX+cz7rP/DNq4lnRes/41KXmlhN6z9PG+i0gU7rP65oJOCbV+s/wCi32TRb6z8MtmALtmDrPwNhvRw/aOs/agOdNtBp6z/JUNlh6nLrP0yoyWyhdOs/J54VjQR86z++8ydHdIDrP4XrUbgehes/xQKT4cKL6z/kOI7jOI7rPzDvLpWclus/QobKDlOX6z+h0wY6baDrP4RBDFsXoes//yBDZYep6z9xI8sfO6vrP15uf5Chsus/9ZkgJAa16z+7u7u7u7vrP9KBQsx+vus/Ggn45tXE6z+OKOAFqsfrP3hWNBLwzes/H+8Ya4vQ6z/Yo3A9CtfrPxY1Qlwl2es/N/GsaCTg6z+m9HEReeHrP5Q+6ZM+6es/mMZ1pIbp6z/5z0VdY/HrP/OLJb9Y8us/iGmI9gT56z9R2WHqcvvrP+TyqERjAOw/sCaeFY0E7D/Fp6PJegfsPw502kCnDew/DXz52EYO7D+nBWt97BTsP2zBFmzBFuw/LPvU/VEb7D/LDlOX2x/sP7OaF/FiIew//KYC/Dsn7D8pXI/C9SjsPwCLmvnXLOw/Y7jZag4y7D+IqcvtDzLsP7IShjsjN+w/5vYHGSo77D8NoH+OxjvsP6RopDcwQOw/pSuWMyNE7D9ERERERETsP+ORrPXPR+w/03M9m/5K7D+jkYBvXk3sP2eLezeyTew/j3PeMOVP7D8ezimQb1HsP5Xbb3A1Uuw/yBQIjQZS7D9TmdIKlFDsP6ORgG9eTew/Nn0Dd89G7D9ERERERETsP+b2BxkqO+w/fHmVt4E37D+IqcvtDzLsPyhcj8L1KOw/yw5Tl9sf7D9swRZswRbsP5zuizwEDuw/DnTaQKcN7D+wJp4VjQTsP1LZYepy++s/84slv1jy6z+8Hd1ZrvDrP5Q+6ZM+6es/NvGsaCTg6z927lK549vrP9ejcD0K1+s/eVY0EvDN6z9aThpaNMrrPxoJ+ObVxOs/vLu7u7u76z8CR0F7W7rrP15uf5Chsus/ag/ZgNGr6z//IENlh6nrP6DTBjptoOs/cg3eFzee6z9ChsoOU5frP+9tbB9ikes/5DiO4ziO6z+57eJrNYXrP4XrUbgehes/Jp4VjQR86z9bEXJGhnnrP8lQ2WHqcus/6E4m6lVu6z9qA5020GnrP65DA7+WY+s/DLZgC7Zg6z/wG9n2PFnrP65oJOCbV+s/ItxI3j5P6z9PG+i0gU7rP44AjZSURes/8M2riWdF6z+RgG9eTTzrPxk2VjM2POs/NDMzMzMz6z+IHYSAIjPrP9xxn7RUKus/1eX2Bxkq6z8ORdFdyCHrP3aYutz+IOs/E7cFaH0Z6z8YS36x5BfrP7y7YZdzEes/uv1BhsoO6z+C9oG8qwnrP1uwBVuwBes/ImBHtycC6z/9YskvlvzqP1R2c4Dq+uo/B9Ei6e3z6j+eFY0EfPPqP1lipy0V7eo/QMhQ2WHq6j8Sj4ILiObqP+J6FK5H4eo/KHwjX03g6j/D3agBP9rqP4It2IIt2Oo/Hw6donTU6j8m4JtXE8/qP+hSiusLz+o/MzdbGMLJ6j/Gkl8s+cXqP6J+M8LjxOo/ZHcUW0LA6j9oRSMB37zqP1SwKhsKvOo/FAbZ9hq46j8V79DbpLTqPwn45tXEs+o/llUu9Y+x6j8=\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[184]},{\"__ndarray__\":\"viMRsBTy6j//mJhRaPHqP/K+l4ZE8uo/nhWNBHzz6j9e71QN5/XqP/1iyS+W/Oo/p5CNRbQA6z9bsAVbsAXrP7r9QYbKDus/GEt+seQX6z92mLrc/iDrP2fYFOcYI+s/1eX2Bxkq6z80MzMzMzPrP5KAb15NPOs/8M2riWdF6z8loy6aKU7rP08b6LSBTus/rGgk4JtX6z8NLn1QUV3rPwy2YAu2YOs/agOdNtBp6z80ZDTuDmvrP8hQ2WHqcus/nidCYpV36z8onhWNBHzrP38dIUZQg+s/hutRuB6F6z/kOI7jOI7rP8dBAdJYjus/QobKDlOX6z+mBVAYvZjrP6LTBjptoOs/qavAp52i6z//IENlh6nrP7w0rewFrOs/Xm5/kKGy6z8ic03H/rTrP7y7u7u7u+s/okGU14696z8ZCfjm1cTrP+SAs7a6xes/wF3jJ4XN6z95VjQS8M3rP8RIdaLx1Os/16NwPQrX6z/gGqKYAdzrPzbxrGgk4Os/Ud9rybPi6z85TDgTBenrP5Q+6ZM+6es/FNPMiPLu6z/yiyW/WPLrP+bAwQN89Os/FJh/zpT56z9R2WHqcvvrP5Z75jY5/us/NgdD8VkC7D+wJp4VjQTsPwro0BXtBew/Mpkfd8kI7D8sIL8X4ArsP2p8xI71C+w/tp2PyJkL7D9Kyw/Y9wjsP7AmnhWNBOw/VUUJ+psB7D9R2WHqcvvrP/OLJb9Y8us/lD7pkz7p6z828axoJODrP9ejcD0K1+s/sjVtQlDR6z95VjQS8M3rPxoJ+ObVxOs/vLu7u7u76z+UHTGhX7vrP15uf5Chsus//qryMoCq6z//IENlh6nrP6LTBjptoOs/LsT6c9qb6z9ChsoOU5frPw68NX51jus/5DiO4ziO6z+G61G4HoXrP0sJK5o5gus/KJ4VjQR86z+u0gdiv3brP8hQ2WHqcus/7/xHTutr6z9qA5020GnrP7ewHGKqYes/DLZgC7Zg6z8X+oxN7VfrP61oJOCbV+s/T8N+4adO6z9PG+i0gU7rP9B8fqHQRes/8M2riWdF6z+Bd/NtYD3rP5KAb15NPOs/2zuxQlI16z80MzMzMzPrP1Ig1gajLes/1eX2Bxkq6z+gZLZrUSbrP3aYutz+IOs/NoA+2V0f6z/FAZlpyhjrPxhLfrHkF+s/lM6Sg5YS6z+6/UGGyg7rP+75u57EDOs/ULo8fF4H6z9bsAVbsAXrP8LQbu5mAus/fCmdgOf96j/9YskvlvzqPxh8iSHx+eo/4tvGy5X26j8xI1sU3/PqP54VjQR88+o/viMRsBTy6j8=\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[124]},{\"__ndarray__\":\"EVyFmSY86z8Z5FOHdjnrP6oWOwSDOOs/H+ZmdyU76z+SgG9eTTzrP/DNq4lnRes/UBvotIFO6z+uaCTgm1frP5pFPY4rW+s/DLZgC7Zg6z9qA5020GnrPx8NWAWNbOs/yVDZYepy6z+tSL8c9nnrPyeeFY0EfOs/hetRuB6F6z9owMu2lYXrP+Q4juM4jus/UpWnY76P6z9ChsoOU5frP65JOBoAmes/odMGOm2g6z8cjL1ud6HrP13Hhqwsqes//yBDZYep6z/O81ks+6/rP15uf5Chsus/Fr9ZcyS26z+Hn8P0sbvrP7y7u7u7u+s/xA5eTPC/6z+X1knwVcPrPxoJ+ObVxOs/LV+biSnF6z8aCfjm1cTrP/dUqyXgw+s/vLu7u7u76z9ebn+QobLrPwAhQ2WHqes/odMGOm2g6z+Wvq4WUpzrP0KGyg5Tl+s/5DiO4ziO6z8pzDBsgozrP4XrUbgehes/xlsxKet/6z8nnhWNBHzrP15rTcrBdOs/yFDZYepy6z8WfM4YxmrrP2oDnTbQaes/agm94sdh6z8MtmALtmDrPxOEoCGjWes/rWgk4JtX6z+pSMg8PVLrP04b6LSBTus/osqrEYNL6z/wzauJZ0XrP9ZM2vp9QOs/koBvXk086z8RXIWZJjzrPw==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[62]}]},\"selected\":{\"id\":\"1365\"},\"selection_policy\":{\"id\":\"1366\"}},\"id\":\"1349\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"1366\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"data_source\":{\"id\":\"1349\"},\"glyph\":{\"id\":\"1350\"},\"hover_glyph\":null,\"muted_glyph\":null,\"nonselection_glyph\":{\"id\":\"1351\"},\"view\":{\"id\":\"1353\"}},\"id\":\"1352\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"1287\",\"type\":\"AllLabels\"},{\"attributes\":{},\"id\":\"1254\",\"type\":\"LinearScale\"},{\"attributes\":{\"active_multi\":null,\"tools\":[{\"id\":\"1264\"},{\"id\":\"1265\"},{\"id\":\"1266\"},{\"id\":\"1267\"},{\"id\":\"1268\"},{\"id\":\"1269\"}]},\"id\":\"1271\",\"type\":\"Toolbar\"},{\"attributes\":{},\"id\":\"1265\",\"type\":\"WheelZoomTool\"},{\"attributes\":{},\"id\":\"1267\",\"type\":\"SaveTool\"},{\"attributes\":{\"data_source\":{\"id\":\"1278\"},\"glyph\":{\"id\":\"1279\"},\"hover_glyph\":null,\"muted_glyph\":null,\"nonselection_glyph\":{\"id\":\"1280\"},\"view\":{\"id\":\"1282\"}},\"id\":\"1281\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"axis\":{\"id\":\"1260\"},\"dimension\":1,\"ticker\":null},\"id\":\"1263\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"1257\",\"type\":\"BasicTicker\"},{\"attributes\":{\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"orange\"},\"line_width\":{\"value\":2},\"xs\":{\"field\":\"xs\"},\"ys\":{\"field\":\"ys\"}},\"id\":\"1351\",\"type\":\"MultiLine\"},{\"attributes\":{},\"id\":\"1269\",\"type\":\"HelpTool\"},{\"attributes\":{},\"id\":\"1264\",\"type\":\"PanTool\"},{\"attributes\":{},\"id\":\"1248\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"1250\",\"type\":\"DataRange1d\"},{\"attributes\":{\"source\":{\"id\":\"1349\"}},\"id\":\"1353\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"1293\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"1252\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"1268\",\"type\":\"ResetTool\"}],\"root_ids\":[\"1247\"]},\"title\":\"Bokeh Application\",\"version\":\"2.3.3\"}};\n",
" var render_items = [{\"docid\":\"6cce91f6-3103-432e-940a-75a3dc7edb9e\",\"root_ids\":[\"1247\"],\"roots\":{\"1247\":\"71e44d8f-6942-46f1-b080-5eb480f4e326\"}}];\n",
" root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n",
"\n",
" }\n",
" if (root.Bokeh !== undefined) {\n",
" embed_document(root);\n",
" } else {\n",
" var attempts = 0;\n",
" var timer = setInterval(function(root) {\n",
" if (root.Bokeh !== undefined) {\n",
" clearInterval(timer);\n",
" embed_document(root);\n",
" } else {\n",
" attempts++;\n",
" if (attempts > 100) {\n",
" clearInterval(timer);\n",
" console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\");\n",
" }\n",
" }\n",
" }, 10, root)\n",
" }\n",
"})(window);"
],
"application/vnd.bokehjs_exec.v0+json": ""
},
"metadata": {
"application/vnd.bokehjs_exec.v0+json": {
"id": "1247"
}
},
"output_type": "display_data"
}
],
"source": [
"# Set up plotting range\n",
"POST_norm = st.multivariate_normal.pdf(\n",
" np.dstack((PHI[:, :, 0], GAMMA[:, :, 0])), popt[:-1], cov[:-1, :-1]\n",
")\n",
"\n",
"p = bebi103.viz.contour(\n",
" PHI[:, :, 0],\n",
" GAMMA[:, :, 0],\n",
" POST_norm,\n",
" line_kwargs=dict(line_color=\"orange\"),\n",
" p=p,\n",
")\n",
"bokeh.io.show(p)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We are again fortunate that the Normal approximation is a good one. This is not always the case, though, and this is a **major** danger in using optimization methods to making sense of the posterior."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Displaying the best fit line\n",
"\n",
"Researchers typically display the best-fit line with their data points. I generally discourage this; you should instead show results from **posterior predictive checks**, which we will discuss in coming weeks. However, for now we do not know how to do that, so we will just display the best fit line."
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [
{
"data": {},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.holoviews_exec.v0+json": "",
"text/html": [
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"
\n",
"
\n",
""
],
"text/plain": [
":Overlay\n",
" .Scatter.I :Scatter [Droplet Diameter (um)] (Spindle Length (um))\n",
" .Curve.I :Curve [x] (y)"
]
},
"execution_count": 16,
"metadata": {
"application/vnd.holoviews_exec.v0+json": {
"id": "1432"
}
},
"output_type": "execute_result"
}
],
"source": [
"# Extract parameters\n",
"phi, gamma = popt[:2]\n",
"\n",
"# Make theoretical curve\n",
"d_theor = np.linspace(0, 250, 250)\n",
"ell_theor = theoretical_spindle_length(d_theor, phi, gamma)\n",
"\n",
"# Make the plot\n",
"data_plot * hv.Curve(data=(d_theor, ell_theor)).opts(color=\"orange\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"It looks like most of the sampling was in the curved part of the plot, meaning we had few samples in the linear regime where the only relevant parameter is $\\gamma$, and few in the regime where $\\phi$ is the only relevant parameter."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Computing environment"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Python implementation: CPython\n",
"Python version : 3.9.7\n",
"IPython version : 7.29.0\n",
"\n",
"numpy : 1.20.3\n",
"pandas : 1.3.5\n",
"scipy : 1.7.3\n",
"tqdm : 4.62.3\n",
"statsmodels: 0.12.2\n",
"bokeh : 2.3.3\n",
"holoviews : 1.14.6\n",
"bebi103 : 0.1.10\n",
"jupyterlab : 3.2.1\n",
"\n"
]
}
],
"source": [
"%load_ext watermark\n",
"%watermark -v -p numpy,pandas,scipy,tqdm,statsmodels,bokeh,holoviews,bebi103,jupyterlab"
]
}
],
"metadata": {
"anaconda-cloud": {},
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.9.7"
}
},
"nbformat": 4,
"nbformat_minor": 4
}