1&&\"string\"==typeof v&&!d.checkClone&&De.test(v))return e.each((function(i){var o=e.eq(i);y&&(t[0]=v.call(this,i,o.html())),Re(o,t,n,r)}));if(p&&(a=(i=xe(t,e[0].ownerDocument,!1,e,r)).firstChild,1===i.childNodes.length&&(i=a),a||r)){for(u=(s=b.map(ve(i,\"script\"),Le)).length;f0&&ye(a,!u&&ve(e,\"script\")),s},cleanData:function(e){for(var t,n,r,i=b.event.special,o=0;void 0!==(n=e[o]);o++)if(X(n)){if(t=n[G.expando]){if(t.events)for(r in t.events)i[r]?b.event.remove(n,r):b.removeEvent(n,r,t.handle);n[G.expando]=void 0}n[Y.expando]&&(n[Y.expando]=void 0)}}}),b.fn.extend({detach:function(e){return Me(this,e,!0)},remove:function(e){return Me(this,e)},text:function(e){return B(this,(function(e){return void 0===e?b.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 Re(this,arguments,(function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||qe(this,e).appendChild(e)}))},prepend:function(){return Re(this,arguments,(function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=qe(this,e);t.insertBefore(e,t.firstChild)}}))},before:function(){return Re(this,arguments,(function(e){this.parentNode&&this.parentNode.insertBefore(e,this)}))},after:function(){return Re(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&&(b.cleanData(ve(e,!1)),e.textContent=\"\");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map((function(){return b.clone(this,e,t)}))},html:function(e){return B(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&&!Ne.test(e)&&!ge[(de.exec(e)||[\"\",\"\"])[1].toLowerCase()]){e=b.htmlPrefilter(e);try{for(;n3,ne.removeChild(t)),s}}))}();var ze=[\"Webkit\",\"Moz\",\"ms\"],Ue=v.createElement(\"div\").style,Xe={};function Ve(e){var t=b.cssProps[e]||Xe[e];return t||(e in Ue?e:Xe[e]=function(e){for(var t=e[0].toUpperCase()+e.slice(1),n=ze.length;n--;)if((e=ze[n]+t)in Ue)return e}(e)||e)}var Ge=/^(none|table(?!-c[ea]).+)/,Ye=/^--/,Qe={position:\"absolute\",visibility:\"hidden\",display:\"block\"},Je={letterSpacing:\"0\",fontWeight:\"400\"};function Ke(e,t,n){var r=ee.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||\"px\"):t}function Ze(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+=b.css(e,n+te[a],!0,i)),r?(\"content\"===n&&(u-=b.css(e,\"padding\"+te[a],!0,i)),\"margin\"!==n&&(u-=b.css(e,\"border\"+te[a]+\"Width\",!0,i))):(u+=b.css(e,\"padding\"+te[a],!0,i),\"padding\"!==n?u+=b.css(e,\"border\"+te[a]+\"Width\",!0,i):s+=b.css(e,\"border\"+te[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 et(e,t,n){var r=We(e),i=(!d.boxSizingReliable()||n)&&\"border-box\"===b.css(e,\"boxSizing\",!1,r),o=i,a=$e(e,t,r),s=\"offset\"+t[0].toUpperCase()+t.slice(1);if(Ie.test(a)){if(!n)return a;a=\"auto\"}return(!d.boxSizingReliable()&&i||!d.reliableTrDimensions()&&k(e,\"tr\")||\"auto\"===a||!parseFloat(a)&&\"inline\"===b.css(e,\"display\",!1,r))&&e.getClientRects().length&&(i=\"border-box\"===b.css(e,\"boxSizing\",!1,r),(o=s in e)&&(a=e[s])),(a=parseFloat(a)||0)+Ze(e,t,n||(i?\"border\":\"content\"),o,r,a)+\"px\"}function tt(e,t,n,r,i){return new tt.prototype.init(e,t,n,r,i)}b.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=U(t),u=Ye.test(t),l=e.style;if(u||(t=Ve(s)),a=b.cssHooks[t]||b.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=ee.exec(n))&&i[1]&&(n=ae(e,t,i),o=\"number\"),null!=n&&n==n&&(\"number\"!==o||u||(n+=i&&i[3]||(b.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=U(t);return Ye.test(t)||(t=Ve(s)),(a=b.cssHooks[t]||b.cssHooks[s])&&\"get\"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=$e(e,t,r)),\"normal\"===i&&t in Je&&(i=Je[t]),\"\"===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),b.each([\"height\",\"width\"],(function(e,t){b.cssHooks[t]={get:function(e,n,r){if(n)return!Ge.test(b.css(e,\"display\"))||e.getClientRects().length&&e.getBoundingClientRect().width?et(e,t,r):Fe(e,Qe,(function(){return et(e,t,r)}))},set:function(e,n,r){var i,o=We(e),a=!d.scrollboxSize()&&\"absolute\"===o.position,s=(a||r)&&\"border-box\"===b.css(e,\"boxSizing\",!1,o),u=r?Ze(e,t,r,s,o):0;return s&&a&&(u-=Math.ceil(e[\"offset\"+t[0].toUpperCase()+t.slice(1)]-parseFloat(o[t])-Ze(e,t,\"border\",!1,o)-.5)),u&&(i=ee.exec(n))&&\"px\"!==(i[3]||\"px\")&&(e.style[t]=n,n=b.css(e,t)),Ke(0,n,u)}}})),b.cssHooks.marginLeft=_e(d.reliableMarginLeft,(function(e,t){if(t)return(parseFloat($e(e,\"marginLeft\"))||e.getBoundingClientRect().left-Fe(e,{marginLeft:0},(function(){return e.getBoundingClientRect().left})))+\"px\"})),b.each({margin:\"\",padding:\"\",border:\"Width\"},(function(e,t){b.cssHooks[e+t]={expand:function(n){for(var r=0,i={},o=\"string\"==typeof n?n.split(\" \"):[n];r<4;r++)i[e+te[r]+t]=o[r]||o[r-2]||o[0];return i}},\"margin\"!==e&&(b.cssHooks[e+t].set=Ke)})),b.fn.extend({css:function(e,t){return B(this,(function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=We(e),i=t.length;a1)}}),b.Tween=tt,tt.prototype={constructor:tt,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||b.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(b.cssNumber[n]?\"\":\"px\")},cur:function(){var e=tt.propHooks[this.prop];return e&&e.get?e.get(this):tt.propHooks._default.get(this)},run:function(e){var t,n=tt.propHooks[this.prop];return this.options.duration?this.pos=t=b.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):tt.propHooks._default.set(this),this}},tt.prototype.init.prototype=tt.prototype,tt.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=b.css(e.elem,e.prop,\"\"))&&\"auto\"!==t?t:0},set:function(e){b.fx.step[e.prop]?b.fx.step[e.prop](e):1!==e.elem.nodeType||!b.cssHooks[e.prop]&&null==e.elem.style[Ve(e.prop)]?e.elem[e.prop]=e.now:b.style(e.elem,e.prop,e.now+e.unit)}}},tt.propHooks.scrollTop=tt.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},b.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:\"swing\"},b.fx=tt.prototype.init,b.fx.step={};var nt,rt,it=/^(?:toggle|show|hide)$/,ot=/queueHooks$/;function at(){rt&&(!1===v.hidden&&e.requestAnimationFrame?e.requestAnimationFrame(at):e.setTimeout(at,b.fx.interval),b.fx.tick())}function st(){return e.setTimeout((function(){nt=void 0})),nt=Date.now()}function ut(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i[\"margin\"+(n=te[r])]=i[\"padding\"+n]=e;return t&&(i.opacity=i.width=e),i}function lt(e,t,n){for(var r,i=(ct.tweeners[t]||[]).concat(ct.tweeners[\"*\"]),o=0,a=i.length;o1)},removeAttr:function(e){return this.each((function(){b.removeAttr(this,e)}))}}),b.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return void 0===e.getAttribute?b.prop(e,t,n):(1===o&&b.isXMLDoc(e)||(i=b.attrHooks[t.toLowerCase()]||(b.expr.match.bool.test(t)?ft:void 0)),void 0!==n?null===n?void b.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=b.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!d.radioValue&&\"radio\"===t&&k(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(O);if(i&&1===e.nodeType)for(;n=i[r++];)e.removeAttribute(n)}}),ft={set:function(e,t,n){return!1===t?b.removeAttr(e,n):e.setAttribute(n,n),n}},b.each(b.expr.match.bool.source.match(/\\w+/g),(function(e,t){var n=pt[t]||b.find.attr;pt[t]=function(e,t,r){var i,o,a=t.toLowerCase();return r||(o=pt[a],pt[a]=i,i=null!=n(e,t,r)?a:null,pt[a]=o),i}}));var dt=/^(?:input|select|textarea|button)$/i,ht=/^(?:a|area)$/i;function gt(e){return(e.match(O)||[]).join(\" \")}function vt(e){return e.getAttribute&&e.getAttribute(\"class\")||\"\"}function yt(e){return Array.isArray(e)?e:\"string\"==typeof e&&e.match(O)||[]}b.fn.extend({prop:function(e,t){return B(this,b.prop,e,t,arguments.length>1)},removeProp:function(e){return this.each((function(){delete this[b.propFix[e]||e]}))}}),b.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&b.isXMLDoc(e)||(t=b.propFix[t]||t,i=b.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=b.find.attr(e,\"tabindex\");return t?parseInt(t,10):dt.test(e.nodeName)||ht.test(e.nodeName)&&e.href?0:-1}}},propFix:{for:\"htmlFor\",class:\"className\"}}),d.optSelected||(b.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)}}),b.each([\"tabIndex\",\"readOnly\",\"maxLength\",\"cellSpacing\",\"cellPadding\",\"rowSpan\",\"colSpan\",\"useMap\",\"frameBorder\",\"contentEditable\"],(function(){b.propFix[this.toLowerCase()]=this})),b.fn.extend({addClass:function(e){var t,n,r,i,o,a,s,u=0;if(h(e))return this.each((function(t){b(this).addClass(e.call(this,t,vt(this)))}));if((t=yt(e)).length)for(;n=this[u++];)if(i=vt(n),r=1===n.nodeType&&\" \"+gt(i)+\" \"){for(a=0;o=t[a++];)r.indexOf(\" \"+o+\" \")<0&&(r+=o+\" \");i!==(s=gt(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){b(this).removeClass(e.call(this,t,vt(this)))}));if(!arguments.length)return this.attr(\"class\",\"\");if((t=yt(e)).length)for(;n=this[u++];)if(i=vt(n),r=1===n.nodeType&&\" \"+gt(i)+\" \"){for(a=0;o=t[a++];)for(;r.indexOf(\" \"+o+\" \")>-1;)r=r.replace(\" \"+o+\" \",\" \");i!==(s=gt(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){b(this).toggleClass(e.call(this,n,vt(this),t),t)})):this.each((function(){var t,i,o,a;if(r)for(i=0,o=b(this),a=yt(e);t=a[i++];)o.hasClass(t)?o.removeClass(t):o.addClass(t);else void 0!==e&&\"boolean\"!==n||((t=vt(this))&&G.set(this,\"__className__\",t),this.setAttribute&&this.setAttribute(\"class\",t||!1===e?\"\":G.get(this,\"__className__\")||\"\"))}))},hasClass:function(e){var t,n,r=0;for(t=\" \"+e+\" \";n=this[r++];)if(1===n.nodeType&&(\" \"+gt(vt(n))+\" \").indexOf(t)>-1)return!0;return!1}});var mt=/\\r/g;b.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,b(this).val()):e)?i=\"\":\"number\"==typeof i?i+=\"\":Array.isArray(i)&&(i=b.map(i,(function(e){return null==e?\"\":e+\"\"}))),(t=b.valHooks[this.type]||b.valHooks[this.nodeName.toLowerCase()])&&\"set\"in t&&void 0!==t.set(this,i,\"value\")||(this.value=i))}))):i?(t=b.valHooks[i.type]||b.valHooks[i.nodeName.toLowerCase()])&&\"get\"in t&&void 0!==(n=t.get(i,\"value\"))?n:\"string\"==typeof(n=i.value)?n.replace(mt,\"\"):null==n?\"\":n:void 0}}),b.extend({valHooks:{option:{get:function(e){var t=b.find.attr(e,\"value\");return null!=t?t:gt(b.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}}}}),b.each([\"radio\",\"checkbox\"],(function(){b.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=b.inArray(b(e).val(),t)>-1}},d.checkOn||(b.valHooks[this].get=function(e){return null===e.getAttribute(\"value\")?\"on\":e.value})})),d.focusin=\"onfocusin\"in e;var xt=/^(?:focusinfocus|focusoutblur)$/,bt=function(e){e.stopPropagation()};b.extend(b.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&&!xt.test(m+b.event.triggered)&&(m.indexOf(\".\")>-1&&(x=m.split(\".\"),m=x.shift(),x.sort()),l=m.indexOf(\":\")<0&&\"on\"+m,(t=t[b.expando]?t:new b.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]:b.makeArray(n,[t]),p=b.event.special[m]||{},i||!p.trigger||!1!==p.trigger.apply(r,n))){if(!i&&!p.noBubble&&!g(r)){for(u=p.delegateType||m,xt.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=(G.get(a,\"events\")||Object.create(null))[t.type]&&G.get(a,\"handle\"))&&f.apply(a,n),(f=l&&a[l])&&f.apply&&X(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)||!X(r)||l&&h(r[m])&&!g(r)&&((s=r[l])&&(r[l]=null),b.event.triggered=m,t.isPropagationStopped()&&d.addEventListener(m,bt),r[m](),t.isPropagationStopped()&&d.removeEventListener(m,bt),b.event.triggered=void 0,s&&(r[l]=s)),t.result}},simulate:function(e,t,n){var r=b.extend(new b.Event,n,{type:e,isSimulated:!0});b.event.trigger(r,null,t)}}),b.fn.extend({trigger:function(e,t){return this.each((function(){b.event.trigger(e,t,this)}))},triggerHandler:function(e,t){var n=this[0];if(n)return b.event.trigger(e,t,n,!0)}}),d.focusin||b.each({focus:\"focusin\",blur:\"focusout\"},(function(e,t){var n=function(e){b.event.simulate(t,e.target,b.event.fix(e))};b.event.special[t]={setup:function(){var r=this.ownerDocument||this.document||this,i=G.access(r,t);i||r.addEventListener(e,n,!0),G.access(r,t,(i||0)+1)},teardown:function(){var r=this.ownerDocument||this.document||this,i=G.access(r,t)-1;i?G.access(r,t,i):(r.removeEventListener(e,n,!0),G.remove(r,t))}}}));var wt=e.location,Tt={guid:Date.now()},Ct=/\\?/;b.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||b.error(\"Invalid XML: \"+t),n};var Et=/\\[\\]$/,St=/\\r?\\n/g,kt=/^(?:submit|button|image|reset|file)$/i,At=/^(?:input|select|textarea|keygen)/i;function Nt(e,t,n,r){var i;if(Array.isArray(t))b.each(t,(function(t,i){n||Et.test(e)?r(e,i):Nt(e+\"[\"+(\"object\"==typeof i&&null!=i?t:\"\")+\"]\",i,n,r)}));else if(n||\"object\"!==x(t))r(e,t);else for(i in t)Nt(e+\"[\"+i+\"]\",t[i],n,r)}b.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&&!b.isPlainObject(e))b.each(e,(function(){i(this.name,this.value)}));else for(n in e)Nt(n,e[n],t,i);return r.join(\"&\")},b.fn.extend({serialize:function(){return b.param(this.serializeArray())},serializeArray:function(){return this.map((function(){var e=b.prop(this,\"elements\");return e?b.makeArray(e):this})).filter((function(){var e=this.type;return this.name&&!b(this).is(\":disabled\")&&At.test(this.nodeName)&&!kt.test(e)&&(this.checked||!pe.test(e))})).map((function(e,t){var n=b(this).val();return null==n?null:Array.isArray(n)?b.map(n,(function(e){return{name:t.name,value:e.replace(St,\"\\r\\n\")}})):{name:t.name,value:n.replace(St,\"\\r\\n\")}})).get()}});var Dt=/%20/g,jt=/#.*$/,qt=/([?&])_=[^&]*/,Lt=/^(.*?):[ \\t]*([^\\r\\n]*)$/gm,Ht=/^(?:GET|HEAD)$/,Ot=/^\\/\\//,Pt={},Rt={},Mt=\"*/\".concat(\"*\"),It=v.createElement(\"a\");function Wt(e){return function(t,n){\"string\"!=typeof t&&(n=t,t=\"*\");var r,i=0,o=t.toLowerCase().match(O)||[];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 Ft(e,t,n,r){var i={},o=e===Rt;function a(s){var u;return i[s]=!0,b.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 Bt(e,t){var n,r,i=b.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&b.extend(!0,e,r),e}It.href=wt.href,b.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:wt.href,type:\"GET\",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(wt.protocol),global:!0,processData:!0,async:!0,contentType:\"application/x-www-form-urlencoded; charset=UTF-8\",accepts:{\"*\":Mt,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\":b.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?Bt(Bt(e,b.ajaxSettings),t):Bt(b.ajaxSettings,e)},ajaxPrefilter:Wt(Pt),ajaxTransport:Wt(Rt),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=b.ajaxSetup({},n),h=d.context||d,g=d.context&&(h.nodeType||h.jquery)?b(h):b.event,y=b.Deferred(),m=b.Callbacks(\"once memory\"),x=d.statusCode||{},w={},T={},C=\"canceled\",E={readyState:0,getResponseHeader:function(e){var t;if(l){if(!a)for(a={};t=Lt.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,w[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||wt.href)+\"\").replace(Ot,wt.protocol+\"//\"),d.type=n.method||n.type||d.method||d.type,d.dataTypes=(d.dataType||\"*\").toLowerCase().match(O)||[\"\"],null==d.crossDomain){u=v.createElement(\"a\");try{u.href=d.url,u.href=u.href,d.crossDomain=It.protocol+\"//\"+It.host!=u.protocol+\"//\"+u.host}catch(e){d.crossDomain=!0}}if(d.data&&d.processData&&\"string\"!=typeof d.data&&(d.data=b.param(d.data,d.traditional)),Ft(Pt,d,n,E),l)return E;for(f in(c=b.event&&d.global)&&0==b.active++&&b.event.trigger(\"ajaxStart\"),d.type=d.type.toUpperCase(),d.hasContent=!Ht.test(d.type),i=d.url.replace(jt,\"\"),d.hasContent?d.data&&d.processData&&0===(d.contentType||\"\").indexOf(\"application/x-www-form-urlencoded\")&&(d.data=d.data.replace(Dt,\"+\")):(p=d.url.slice(i.length),d.data&&(d.processData||\"string\"==typeof d.data)&&(i+=(Ct.test(i)?\"&\":\"?\")+d.data,delete d.data),!1===d.cache&&(i=i.replace(qt,\"$1\"),p=(Ct.test(i)?\"&\":\"?\")+\"_=\"+Tt.guid+++p),d.url=i+p),d.ifModified&&(b.lastModified[i]&&E.setRequestHeader(\"If-Modified-Since\",b.lastModified[i]),b.etag[i]&&E.setRequestHeader(\"If-None-Match\",b.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]?\", \"+Mt+\"; 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=Ft(Rt,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(w,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,w,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&&(w=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&&b.inArray(\"script\",d.dataTypes)>-1&&(d.converters[\"text script\"]=function(){}),w=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,w,E,f),f?(d.ifModified&&((T=E.getResponseHeader(\"Last-Modified\"))&&(b.lastModified[i]=T),(T=E.getResponseHeader(\"etag\"))&&(b.etag[i]=T)),204===t||\"HEAD\"===d.type?C=\"nocontent\":304===t?C=\"notmodified\":(C=w.state,p=w.data,f=!(v=w.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]),--b.active||b.event.trigger(\"ajaxStop\")))}return E},getJSON:function(e,t,n){return b.get(e,t,n,\"json\")},getScript:function(e,t){return b.get(e,void 0,t,\"script\")}}),b.each([\"get\",\"post\"],(function(e,t){b[t]=function(e,n,r,i){return h(n)&&(i=i||r,r=n,n=void 0),b.ajax(b.extend({url:e,type:t,dataType:i,data:n,success:r},b.isPlainObject(e)&&e))}})),b.ajaxPrefilter((function(e){var t;for(t in e.headers)\"content-type\"===t.toLowerCase()&&(e.contentType=e.headers[t]||\"\")})),b._evalUrl=function(e,t,n){return b.ajax({url:e,type:\"GET\",dataType:\"script\",cache:!0,async:!1,global:!1,converters:{\"text script\":function(){}},dataFilter:function(e){b.globalEval(e,t,n)}})},b.fn.extend({wrapAll:function(e){var t;return this[0]&&(h(e)&&(e=e.call(this[0])),t=b(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){b(this).wrapInner(e.call(this,t))})):this.each((function(){var t=b(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)}))},wrap:function(e){var t=h(e);return this.each((function(n){b(this).wrapAll(t?e.call(this,n):e)}))},unwrap:function(e){return this.parent(e).not(\"body\").each((function(){b(this).replaceWith(this.childNodes)})),this}}),b.expr.pseudos.hidden=function(e){return!b.expr.pseudos.visible(e)},b.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},b.ajaxSettings.xhr=function(){try{return new e.XMLHttpRequest}catch(e){}};var $t={0:200,1223:204},_t=b.ajaxSettings.xhr();d.cors=!!_t&&\"withCredentials\"in _t,d.ajax=_t=!!_t,b.ajaxTransport((function(t){var n,r;if(d.cors||_t&&!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()}}})),b.ajaxPrefilter((function(e){e.crossDomain&&(e.contents.script=!1)})),b.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 b.globalEval(e),e}}}),b.ajaxPrefilter(\"script\",(function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type=\"GET\")})),b.ajaxTransport(\"script\",(function(e){var t,n;if(e.crossDomain||e.scriptAttrs)return{send:function(r,i){t=b(\""
],
"text/plain": [
":Layout\n",
" .Points.I :Points [Nanog,Prdm14] (cell)\n",
" .Points.II :Points [Nanog,Rest] (cell)\n",
" .Points.III :Points [Nanog,Rex1] (cell)\n",
" .Points.IV :Points [Prdm14,Rest] (cell)\n",
" .Points.V :Points [Prdm14,Rex1] (cell)\n",
" .Points.VI :Points [Rest,Rex1] (cell)"
]
},
"execution_count": 5,
"metadata": {
"application/vnd.holoviews_exec.v0+json": {
"id": "1430"
}
},
"output_type": "execute_result"
}
],
"source": [
"hv.extension(\"bokeh\")\n",
"\n",
"plots = [\n",
" hv.Points(data=df, kdims=[gene1, gene2], vdims=[\"cell\"]).opts(\n",
" color=\"cell\", cmap=\"viridis\",\n",
" ).opts(\n",
" frame_height=150,\n",
" frame_width=150,\n",
" size=2\n",
" )\n",
" for gene1, gene2 in itertools.combinations(genes, 2)\n",
"]\n",
"\n",
"hv.Layout(plots).cols(3)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"It appears as though there is a correlation between Rest, Nanog, and Rex1. They tend to be high or low together. Prdm14, on the other hand, shows less correlation.\n",
"\n",
"To futher explore the data set, we will plot the ECDFs again, but this time coloring them by the ranking in Rex1 levels."
]
},
{
"cell_type": "code",
"execution_count": 6,
"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": [
":Layout\n",
" .Scatter.I :Scatter [Nanog] (Nanog ECDF,Rex1 ECDF)\n",
" .Scatter.II :Scatter [Prdm14] (Prdm14 ECDF,Rex1 ECDF)\n",
" .Scatter.III :Scatter [Rest] (Rest ECDF,Rex1 ECDF)\n",
" .Scatter.IV :Scatter [Rex1] (Rex1 ECDF,Rex1 ECDF)"
]
},
"execution_count": 6,
"metadata": {
"application/vnd.holoviews_exec.v0+json": {
"id": "2444"
}
},
"output_type": "execute_result"
}
],
"source": [
"hv.extension(\"bokeh\")\n",
"\n",
"# Generate ECDF values\n",
"for gene in [\"Nanog\", \"Prdm14\", \"Rest\", \"Rex1\"]:\n",
" df[f\"{gene} ECDF\"] = df[gene].rank(method='first') / len(df)\n",
"\n",
"plots = [\n",
" hv.Scatter(data=df, kdims=[f\"{gene}\"], vdims=[f\"{gene} ECDF\", \"Rex1 ECDF\"]).opts(\n",
" color='Rex1 ECDF',\n",
" cmap='viridis',\n",
" ).opts(\n",
" frame_height=150,\n",
" frame_width=150,\n",
" size=2\n",
" )\n",
" for gene in genes\n",
"]\n",
"\n",
"hv.Layout(plots).cols(2)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We see what we expected in the pairwise scatter plots."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Model for mRNA levels\n",
"\n",
"In this part of the lesson, we will model gene expression of each of the four genes separately, though they are connected by which cell is being measured. We will discuss that later. For now, we develop a model for the mRNA counts for a given gene.\n",
"\n",
"If gene expression is a purely Poisson process, we might expect a Poisson distribution. Or, if the copy number is itself somehow tightly regulated, we might expect a Normal distribution.\n",
"\n",
"Study of gene expression dynamics, largely through fluorescence imaging, has lead to a different story. Expression of many important genes can be **bursty**, which means that the promoter is on for a period of time in which transcripts are made, and then it is off for a while. The \"on\" periods are called \"bursts\" and are themselves well-modeled as a Poisson process. That is to say that the amount of time that a promoter is on is Exponentially distributed. Thus, we can think of a burst as a series of Bernoulli trials. A \"failure\" is production of an mRNA molecule, and a \"success\" is a switch to an off state. The number of \"successes\" we get is equal to the number of bursts we get per decay time of the mRNA. We can define the number of bursts before degradation of the mRNA as $\\alpha$. This is the so-called **burst frequency**. So, we have a series of Bernoulli trials and we wait for $\\alpha$ successes. Then, $n$, the total number of failures (which is the number of mRNA transcripts), is Negative Binomially distributed, since this matches the Negative Binomial story. Referring to the parametrization used in the [distribution explorer](https://distribution-explorer.github.io/discrete/negative_binomial.html),\n",
"\n",
"\\begin{align}\n",
"n \\sim \\text{NBinom}(\\alpha, \\beta),\n",
"\\end{align}\n",
"\n",
"where $\\beta$ is related to the probability $\\theta$ of a success of a Bernoulli trial by $\\theta = \\beta/(1+\\beta)$.\n",
"\n",
"The meaning of the parameter $\\beta$, and the related quantity $\\theta$, can be a little mystical here. We would like to relate it to the typical **burst size**, i.e., the typical number of transcripts made per burst. The size of a single given burst (that is, the number of transcripts made in a burst) is geometrically distributed (since it matches that story), so\n",
"\n",
"\\begin{align}\n",
"f(n_\\mathrm{burst} ; \\theta) = (1-\\theta)^{n_\\mathrm{burst}}\\,\\theta.\n",
"\\end{align}\n",
"\n",
"The mean number of transcripts $b$ in a burst is\n",
"\n",
"\\begin{align}\n",
"b \\equiv \\left\\langle n_\\mathrm{burst}\\right\\rangle &= \\sum_{n_\\mathrm{burst}=0}^\\infty\n",
"n_\\mathrm{burst}(1-\\theta)^{n_\\mathrm{burst}}\\theta\\\\[1em]\n",
"&= \\theta \\sum_{n_\\mathrm{burst}=0}^\\infty\n",
"n_\\mathrm{burst}(1-\\theta)^{n_\\mathrm{burst}} \\\\[1em]\n",
"&= \\theta(1-\\theta)\\, \\frac{\\mathrm{d}}{\\mathrm{d}(1-\\theta)}\\sum_{n_\\mathrm{burst}=0}^\\infty(1-\\theta)^{n_\\mathrm{burst}} \\\\[1em]\n",
"&= \\theta(1-\\theta)\\, \\frac{\\mathrm{d}}{\\mathrm{d}(1-\\theta)}\\,\\frac{1}{\\theta}\\\\[1em]\n",
"&= -\\theta(1-\\theta)\\, \\frac{\\mathrm{d}}{\\mathrm{d}\\theta}\\,\\frac{1}{\\theta} \\\\[1em]\n",
"&= \\frac{1-\\theta}{\\theta} \\\\[1em]\n",
"&= \\frac{1}{\\beta}.\n",
"\\end{align}\n",
"\n",
"So we now see that $1/\\beta$ is the typical burst size. Using the Negative Binomial property of mRNA copy numbers of bursty gene expression, we can characterize the expression levels of a given cell type by the two parameters of the Negative Binomial, the burst frequency $\\alpha$ and the burst size $b = 1/\\beta$. These are the two parameters we would like to infer from transcript count data. The conclusion of all this is that we have have our likelihood.\n",
"\n",
"\\begin{align}\n",
"&n \\sim \\text{NBinom}(\\alpha, \\beta),\\\\[1em]\n",
"&b = 1/\\beta.\n",
"\\end{align}"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Maximum likelihood estimation by numerical optimization\n",
"\n",
"To compute the MLE for the two parameter, the burst frequency $\\alpha$ and burst size $\\beta$, we need to define the likelihood function. We make the assumption that the number of transcripts in each cell is i.i.d., giving a statistical model of\n",
"\n",
"\\begin{align}\n",
"n_i \\sim \\text{NBinom}(\\alpha,\\beta)\\;\\forall i.\n",
"\\end{align}\n",
"\n",
"Referring to the PMF of the Negative Binomial distribution and making the change of variables $b=1/\\beta$, the likelihood function is\n",
"\n",
"\\begin{align}\n",
"L(\\alpha, b;\\mathbf{n}) = \\prod_i\\frac{\\Gamma(n_i+\\alpha)}{\\Gamma(\\alpha)n!}\\left(\\frac{1}{1+b}\\right)^\\alpha\\left(\\frac{b}{1+b}\\right)^{n_i},\n",
"\\end{align}\n",
"\n",
"and the log-likelihood is \n",
"\n",
"\\begin{align}\n",
"\\ell(\\alpha, b;\\mathbf{n}) = \\ln L(\\alpha, b;\\mathbf{n}) = \\sum_i \\ln \\left(\\frac{\\Gamma(n_i+\\alpha)}{\\Gamma(\\alpha)n!}\\left(\\frac{1}{1+b}\\right)^\\alpha\\left(\\frac{b}{1+b}\\right)^{n_i}\\right).\n",
"\\end{align}\n",
"\n",
"To find the MLE, we need to find the values of $\\alpha$ and $b$ that satisfy\n",
"\n",
"\\begin{align}\n",
"\\frac{\\partial \\ell}{\\partial \\alpha} = \\frac{\\partial \\ell}{\\partial b} = 0.\n",
"\\end{align}\n",
"\n",
"Unfortunately, not closed form solution exists for this. We therefore need to resort to [numerical optimization](https://en.wikipedia.org/wiki/Mathematical_optimization) to find the MLE $\\alpha^*$ and $b^*$."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Numerical optimization\n",
"\n",
"Numerical optimization is typically implemented to find a *minimizers* of a function rather than maximizers. The function we are minimizing is called an **objective function**. This is not a problem for maximum likelihood estimation; we simply define a *negative* log-likelihood as our objective function.\n",
"\n",
"Sometimes, we have **constraints** on the allowed values for the parameters. In our case, both $\\alpha$ and $\\beta$ must be non-negative. So, the statement of the optimization problem to find the MLE is\n",
"\n",
"\\begin{align}\n",
"\\text{minimize } (-\\ell(\\alpha, \\beta;\\mathbf{n})) \\text{ s.t. } \\alpha, \\beta > 0,\n",
"\\end{align}\n",
"\n",
"where \"s.t.\" is read \"subject to.\" If we explicitly consider the constraints, we are performing a **constrained optimization problem**. Constrained optimization is often considerably more challenging than unconstrained optimization. There are ways around simple positivity constraints such as the ones here. We can instead define new variables $\\xi_\\alpha = \\ln \\alpha$ and $\\xi_b = \\ln b$, and write the log-likelihood in terms of these variables instead. We then find minimizing $\\xi_\\alpha$ and $\\xi_b$ and convert them to $\\alpha$ and $\\beta$ by exponentiation after performing the minimization calculation.\n",
"\n",
"Numerical optimization is implemented in the `scipy.optimize` submodule ([docs](https://docs.scipy.org/doc/scipy/reference/optimize.html)). Most of the functionality you need is in the `scipy.optimize.minimize()` function. To use the function to find minimizers of an objective function, the standard call signature is\n",
"\n",
"```python\n",
"scipy.optimize.minimize(fun, x0, args=(), method='BFGS')\n",
"```\n",
"\n",
"The `fun` argument is a function with call signature `fun(x, *args)`, where `x` is the variables used in the optimization. In the case of MLE, the function is the negative log-likelihood function, `x` is always an array of the parameter values we are trying to estimate, and the remaining arguments are additional arguments passed into the likelihood function, which always include the measured data. Importantly, we have to provide a guess as to which values of the parameters are optimal. This is passed as an array `x0`. The kwarg `args` specifies which additional arguments are to be passed to `fun()`. **Note that `args` must be a tuple**. Finally, the `method` keyword argument specifies which numerical optimization method to use, the default being the [Broyden–Fletcher–Goldfarb–Shanno algorithm](https://en.wikipedia.org/wiki/Broyden–Fletcher–Goldfarb–Shanno_algorithm). This is a good algorithm but does compute derivatives, so it is only useful if the parameter values can take on any real value.\n",
"\n",
"I have omitted the `bounds` keyword argument here because we will not usually use them, as we will either do the logarithm trick above, or use [Powell's method](https://en.wikipedia.org/wiki/Powell%27s_method), which does not required calculation of derivatives (so we may therefore have discontinuities in the objective function and set the value of the objective function to be infinity for disallowed parameter values)."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Solving with the BFGS algorithm\n",
"\n",
"We will now solve the minimization problem using the BFGS algorithm, specifying the parameters using logarithms to make sure that the problem is completely unconstrained. First, we have to write a function for the log-likelihood matching the required function signature of the input `fun` to `scipy.optimize.minimize()`. Note that we do not have to enter in the code for the log-likelihood. The `scipy.stats` module has functions to compute the log-PDF/log-PMF for many distributions. We just need to check the distribution explorer to ensure we use the parametrization that the `scipy.stats` module requires. In this case, it expects parameters `alpha` and `1/1+b`."
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [],
"source": [
"def log_like_iid_nbinom_log_params(log_params, n):\n",
" \"\"\"Log likelihood for i.i.d. NBinom measurements with \n",
" input being logarithm of parameters.\n",
" \n",
" Parameters\n",
" ----------\n",
" log_params : array\n",
" Logarithm of the parameters alpha and b.\n",
" n : array\n",
" Array of counts.\n",
" \n",
" Returns\n",
" -------\n",
" output : float\n",
" Log-likelihood. \n",
" \"\"\"\n",
" log_alpha, log_b = log_params\n",
"\n",
" alpha = np.exp(log_alpha)\n",
" b = np.exp(log_b)\n",
"\n",
" return np.sum(st.nbinom.logpmf(n, alpha, 1/(1+b)))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"With the log likelihood specified, we simply use `-log_like_iid_nbinom_params()` as our objective function. I do not have \n",
"a good guess in mind, so I will just start with both parameters being about three, so their logarithms are about one. Let's perform the optimization for the *nanog* gene and look at the result."
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
" fun: 1524.9284357728939\n",
" hess_inv: array([[ 0.00201009, -0.00068819],\n",
" [-0.00068819, 0.00255942]])\n",
" jac: array([0., 0.])\n",
" message: 'Optimization terminated successfully.'\n",
" nfev: 69\n",
" nit: 17\n",
" njev: 23\n",
" status: 0\n",
" success: True\n",
" x: array([0.233833 , 4.24052605])"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Extract the values for Nanog\n",
"n = df['Nanog'].values\n",
"\n",
"res = scipy.optimize.minimize(\n",
" fun=lambda log_params, n: -log_like_iid_nbinom_log_params(log_params, n),\n",
" x0=np.array([1, 1]),\n",
" args=(n,),\n",
" method='BFGS'\n",
")\n",
"\n",
"res"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The result returned by `scipy.optimize.minimize()` is an `OptimizeResult` object that has several attributes about how the optimization calculation went, including if it was successful. Importantly, the optimal log-parameter values are in the array `x`. We can extract them and exponentiate them to get the MLE."
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"α: 1.263433475874493\n",
"b: 69.444373557454\n"
]
}
],
"source": [
"alpha_mle, b_mle = np.exp(res.x)\n",
"\n",
"print(\"α: \", alpha_mle)\n",
"print(\"b: \", b_mle)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"So, the MLE for the burst frequency is about 1.25 inverse degradation times. The MLE for the burst size is about 70 transcripts per burst."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Solving using Powell's method\n",
"\n",
"As an alternative to the BFGS method, we can use Powell's method. This has the advantage that we do not have to use derivatives in the optimization, so we do not have to use logarithms of the parameters. We do, however, need to specify that the log-likelihood is minus infinity for disallowed parameter values."
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [],
"source": [
"def log_like_iid_nbinom(params, n):\n",
" \"\"\"Log likelihood for i.i.d. NBinom measurements.\"\"\"\n",
" alpha, b = params\n",
" \n",
" if alpha <= 0 or b <= 0:\n",
" return -np.inf\n",
"\n",
" return np.sum(st.nbinom.logpmf(n, alpha, 1/(1+b)))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We take a similar approach to solving using Powell's method. This time, we will catch warnings because the solver will stumble into regions where the log-likelihood is minus infinity. We know this to be the case, as we designed it that way, so we will suppress the warnings to keep our notebook clean."
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"α: 1.263097372292775\n",
"b: 69.34784233505958\n"
]
}
],
"source": [
"with warnings.catch_warnings():\n",
" warnings.simplefilter(\"ignore\")\n",
" \n",
" res = scipy.optimize.minimize(\n",
" fun=lambda params, n: -log_like_iid_nbinom(params, n),\n",
" x0=np.array([3, 3]),\n",
" args=(n,),\n",
" method='Powell'\n",
" )\n",
"\n",
"if res.success:\n",
" alpha_mle, b_mle = res.x\n",
"else:\n",
" raise RuntimeError('Convergence failed with message', res.message)\n",
" \n",
"print(\"α: \", alpha_mle)\n",
"print(\"b: \", b_mle)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This differs from the result we got with BFGS in the third or fourth decimal place, due to inaccuracies in introducing the logarithms, but the different is not big."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## The likelihood function\n",
"\n",
"To help give a picture of what the likelihood function looks like, and what the optimizer is doing, we can plot it. In this case, we have two parameters, so we can make a contour plot. We first compute the log-likelihood for various values of $\\alpha$ and $b$."
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [],
"source": [
"# alpha and b values for plotting\n",
"alpha = np.linspace(1, 1.5, 100)\n",
"b = np.linspace(50, 90, 100)\n",
"\n",
"# Compute log-likelihood for each value\n",
"log_like = np.empty((100, 100))\n",
"for j, alpha_val in enumerate(alpha):\n",
" for i, b_val in enumerate(b):\n",
" log_like[i, j] = log_like_iid_nbinom((alpha_val, b_val), n)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Remember that the likelihood function is not a probability distribution, so it is not normalized. When we exponentiate the log-likelihood, we may get values close to zero, or very large. It is therefore a good idea to first subtract the maximal value of all computed log-likelihoods. This has the effect of multiplying the likelihood function by a constant."
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [],
"source": [
"like = np.exp(log_like - log_like.max())"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now, we can make a contour plot by making a HoloViews `Image` and performing a `contours()` operation."
]
},
{
"cell_type": "code",
"execution_count": 14,
"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",
" .Image.I :Image [α,b] (z)\n",
" .Contours.I :Contours [α,b] (z)"
]
},
"execution_count": 14,
"metadata": {
"application/vnd.holoviews_exec.v0+json": {
"id": "3128"
}
},
"output_type": "execute_result"
}
],
"source": [
"hv.extension(\"bokeh\")\n",
"\n",
"im = hv.Image((alpha, b, like), kdims=[\"α\", \"b\"])\n",
"\n",
"hv.operation.contours(im, levels=5, overlaid=True).opts(\n",
" hv.opts.Contours(\n",
" cmap=[\"white\"],\n",
" frame_height=300,\n",
" frame_width=300,\n",
" line_width=2,\n",
" show_legend=False,\n",
" )\n",
").opts(\n",
" padding=0\n",
")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Graphically, we can see that we appropriately found the maximum."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## A quick visualization\n",
"\n",
"We can do a quick visualization of our MLE to see if the model holds up. We will talk more about graphical tests of model predictive accuracy in coming lessons, but for now, we will simply over the theoretical CDF parametrized by the MLE. We can conveniently use the `scipy.stats` module to generate the CDF. It is probably overkill, since we have such a wide range of mRNA counts, but we will take care to make sure we plot the theoretical CDF as a staircase, since it is for a discrete distribution."
]
},
{
"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 = {\"63ab6047-974d-4542-b35c-a660ae14d04e\":{\"roots\":{\"references\":[{\"attributes\":{\"below\":[{\"id\":\"3334\"}],\"center\":[{\"id\":\"3337\"},{\"id\":\"3341\"},{\"id\":\"3370\"}],\"frame_height\":275,\"frame_width\":375,\"left\":[{\"id\":\"3338\"}],\"renderers\":[{\"id\":\"3359\"},{\"id\":\"3376\"},{\"id\":\"3392\"}],\"title\":{\"id\":\"3361\"},\"toolbar\":{\"id\":\"3349\"},\"x_range\":{\"id\":\"3326\"},\"x_scale\":{\"id\":\"3330\"},\"y_range\":{\"id\":\"3328\"},\"y_scale\":{\"id\":\"3332\"}},\"id\":\"3325\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{},\"id\":\"3343\",\"type\":\"WheelZoomTool\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAACEAAAAAAAAAIQAAAAAAAAAhAAAAAAAAACEAAAAAAAAAQQAAAAAAAABBAAAAAAAAAEEAAAAAAAAAQQAAAAAAAABBAAAAAAAAAEEAAAAAAAAAUQAAAAAAAABRAAAAAAAAAFEAAAAAAAAAUQAAAAAAAABhAAAAAAAAAGEAAAAAAAAAYQAAAAAAAABhAAAAAAAAAGEAAAAAAAAAYQAAAAAAAABhAAAAAAAAAGEAAAAAAAAAgQAAAAAAAACBAAAAAAAAAIEAAAAAAAAAgQAAAAAAAACBAAAAAAAAAIEAAAAAAAAAkQAAAAAAAACRAAAAAAAAAJEAAAAAAAAAkQAAAAAAAACRAAAAAAAAAJEAAAAAAAAAkQAAAAAAAACRAAAAAAAAAJEAAAAAAAAAkQAAAAAAAACRAAAAAAAAAJEAAAAAAAAAmQAAAAAAAACZAAAAAAAAAJkAAAAAAAAAmQAAAAAAAACZAAAAAAAAAJkAAAAAAAAAmQAAAAAAAACZAAAAAAAAAJkAAAAAAAAAmQAAAAAAAAChAAAAAAAAAKEAAAAAAAAAqQAAAAAAAACpAAAAAAAAALEAAAAAAAAAsQAAAAAAAACxAAAAAAAAALEAAAAAAAAAsQAAAAAAAACxAAAAAAAAALEAAAAAAAAAsQODMzMzM7DFA4MzMzMzsMUAAAAAAAAAyQAAAAAAAADJAAAAAAAAAM0AAAAAAAAAzQAAAAAAAADNAAAAAAAAAM0AAAAAAAAAzQAAAAAAAADNAAAAAAAAAM0AAAAAAAAAzQAAAAAAAADRAAAAAAAAANEAAAAAAAAA0QAAAAAAAADRAAAAAAAAANUAAAAAAAAA1QAAAAAAAADVAAAAAAAAANUAAAAAAAAA1QAAAAAAAADVAAAAAAAAANkAAAAAAAAA2QAAAAAAAADZAAAAAAAAANkAAAAAAAAA3QAAAAAAAADdAAAAAAAAAOEAAAAAAAAA4QAAAAAAAADhAAAAAAAAAOEAAAAAAAAA4QAAAAAAAADhAAAAAAAAAOEAAAAAAAAA4QAAAAAAAADlAAAAAAAAAOUAAAAAAAAA6QAAAAAAAADpAAAAAAAAAO0AAAAAAAAA7QAAAAAAAADtAAAAAAAAAO0AAAAAAAAA7QAAAAAAAADtAAAAAAAAAPEAAAAAAAAA8QAAAAAAAAD1AAAAAAAAAPUAAAAAAAAA9QAAAAAAAAD1AAAAAAAAAPUAAAAAAAAA9QAAAAAAAAD1AAAAAAAAAPUAAAAAAAAA+QAAAAAAAAD5AAAAAAAAAPkAAAAAAAAA+QAAAAAAAAD9AAAAAAAAAP0AAAAAAAABAQAAAAAAAAEBAAAAAAAAAQEAAAAAAAABAQAAAAAAAAEBAAAAAAAAAQEAAAAAAAIBAQAAAAAAAgEBAAAAAAACAQEAAAAAAAIBAQAAAAAAAgEBAAAAAAACAQEAAAAAAAIBAQAAAAAAAgEBAAAAAAACAQEAAAAAAAIBAQAAAAAAAAEFAAAAAAAAAQUAAAAAAAIBBQAAAAAAAgEFAAAAAAACAQkAAAAAAAIBCQAAAAAAAgEJAAAAAAACAQkAAAAAAAABDQAAAAAAAAENAAAAAAAAAQ0AAAAAAAABDQAAAAAAAgENAAAAAAACAQ0AAAAAAAIBDQAAAAAAAgENAAAAAAACAQ0AAAAAAAIBDQAAAAAAAAERAAAAAAAAAREAAAAAAAABEQAAAAAAAAERAAAAAAACAREAAAAAAAIBEQAAAAAAAgERAAAAAAACAREAAAAAAAABGQAAAAAAAAEZAAAAAAAAARkAAAAAAAABGQAAAAAAAAEZAAAAAAAAARkAAAAAAAABHQAAAAAAAAEdAAAAAAAAASEAAAAAAAABIQAAAAAAAAEhAAAAAAAAASEAAAAAAAIBIQAAAAAAAgEhAAAAAAACASEAAAAAAAIBIQAAAAAAAAElAAAAAAAAASUAAAAAAAIBJQAAAAAAAgElAAAAAAAAASkAAAAAAAABKQAAAAAAAgEpAAAAAAACASkAAAAAAAIBLQAAAAAAAgEtAAAAAAACAS0AAAAAAAIBLQAAAAAAAgExAAAAAAACATEAAAAAAAABNQAAAAAAAAE1AAAAAAACATUAAAAAAAIBNQAAAAAAAgE1AAAAAAACATUAAAAAAAABOQAAAAAAAAE5AAAAAAACATkAAAAAAAIBOQAAAAAAAgE5AAAAAAACATkAAAAAAAABPQAAAAAAAAE9AAAAAAACAT0AAAAAAAIBPQAAAAAAAAFBAAAAAAAAAUEAAAAAAAABQQAAAAAAAAFBAAAAAAAAAUEAAAAAAAABQQAAAAAAAAFBAAAAAAAAAUEAAAAAAAEBQQAAAAAAAQFBAAAAAAABAUEAAAAAAAEBQQAAAAAAAQFBAAAAAAABAUEAAAAAAAIBQQAAAAAAAgFBAAAAAAACAUEAAAAAAAIBQQAAAAAAAgFBAAAAAAACAUEAAAAAAAIBQQAAAAAAAgFBAAAAAAADAUEAAAAAAAMBQQAAAAAAAwFBAAAAAAADAUEAAAAAAAMBQQAAAAAAAwFBAAAAAAADAUEAAAAAAAMBQQAAAAAAAAFFAAAAAAAAAUUAAAAAAAABRQAAAAAAAAFFAAAAAAAAAUUAAAAAAAABRQAAAAAAAQFFAAAAAAABAUUAAAAAAAEBRQAAAAAAAQFFA0MzMzMy8UUDQzMzMzLxRQAAAAAAAAFJAAAAAAAAAUkAAAAAAAABSQAAAAAAAAFJAAAAAAABAUkAAAAAAAEBSQAAAAAAAQFJAAAAAAABAUkAAAAAAAIBSQAAAAAAAgFJAAAAAAACAUkAAAAAAAIBSQAAAAAAAgFJAAAAAAACAUkAAAAAAAABTQAAAAAAAAFNAAAAAAAAAU0AAAAAAAABTQAAAAAAAQFNAAAAAAABAU0AAAAAAAEBTQAAAAAAAQFNAAAAAAABAU0AAAAAAAEBTQAAAAAAAQFNAAAAAAABAU0AAAAAAAIBTQAAAAAAAgFNAAAAAAACAU0AAAAAAAIBTQAAAAAAAwFNAAAAAAADAU0AAAAAAAMBTQAAAAAAAwFNAAAAAAAAAVEAAAAAAAABUQAAAAAAAAFRAAAAAAAAAVEAAAAAAAABUQAAAAAAAAFRAAAAAAABAVEAAAAAAAEBUQAAAAAAAgFRAAAAAAACAVEAAAAAAAIBUQAAAAAAAgFRAAAAAAADAVEAAAAAAAMBUQAAAAAAAwFRAAAAAAADAVEAAAAAAAABVQAAAAAAAAFVAAAAAAAAAVUAAAAAAAABVQAAAAAAAAFVAAAAAAAAAVUAAAAAAAEBVQAAAAAAAQFVAAAAAAACAVUAAAAAAAIBVQAAAAAAAgFVAAAAAAACAVUAAAAAAAMBVQAAAAAAAwFVAAAAAAADAVUAAAAAAAMBVQAAAAAAAAFZAAAAAAAAAVkAAAAAAAABWQAAAAAAAAFZAAAAAAACAVkAAAAAAAIBWQAAAAAAAAFdAAAAAAAAAV0AAAAAAAIBXQAAAAAAAgFdAAAAAAACAV0AAAAAAAIBXQAAAAAAAgFdAAAAAAACAV0AAAAAAAIBXQAAAAAAAgFdAAAAAAAAAWEAAAAAAAABYQAAAAAAAAFlAAAAAAAAAWUAAAAAAAEBZQAAAAAAAQFlAAAAAAABAWUAAAAAAAEBZQAAAAAAAwFlAAAAAAADAWUAAAAAAAMBZQAAAAAAAwFlAaGZmZmb+WUBoZmZmZv5ZQAAAAAAAAFpAAAAAAAAAWkAAAAAAAABaQAAAAAAAAFpAAAAAAAAAWkAAAAAAAABaQAAAAAAAAFpAAAAAAAAAWkAAAAAAAABaQAAAAAAAAFpAAAAAAABAWkAAAAAAAEBaQAAAAAAAQFpAAAAAAABAWkAAAAAAAMBaQAAAAAAAwFpAAAAAAADAWkAAAAAAAMBaQAAAAAAAAFtAAAAAAAAAW0AAAAAAAEBbQAAAAAAAQFtAAAAAAACAW0AAAAAAAIBbQAAAAAAAQFxAAAAAAABAXEAAAAAAAIBcQAAAAAAAgFxAAAAAAADAXEAAAAAAAMBcQAAAAAAAAF1AAAAAAAAAXUAAAAAAAABdQAAAAAAAAF1AAAAAAABAXUAAAAAAAEBdQAAAAAAAgF1AAAAAAACAXUAAAAAAAMBdQAAAAAAAwF1AAAAAAAAAXkAAAAAAAABeQAAAAAAAAF5AAAAAAAAAXkAAAAAAAABeQAAAAAAAAF5AAAAAAABAXkAAAAAAAEBeQAAAAAAAwF5AAAAAAADAXkAAAAAAAABfQAAAAAAAAF9AAAAAAABAX0AAAAAAAEBfQAAAAAAAwF9AAAAAAADAX0AAAAAAAMBfQAAAAAAAwF9AAAAAAADAX0AAAAAAAMBfQAAAAAAAAGBAAAAAAAAAYEAAAAAAAABgQAAAAAAAAGBA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AABaQAAAAAAAAFpAAAAAAAAAWkAAAAAAAABaQAAAAAAAAFpAAAAAAAAAWkAAAAAAAABaQAAAAAAAwFlAAAAAAADAWUAAAAAAAMBZQAAAAAAAwFlAAAAAAABAWUAAAAAAAEBZQAAAAAAAQFlAAAAAAABAWUAAAAAAAABZQAAAAAAAAFlAAAAAAABAWEAAAAAAAEBYQAAAAAAAAFhAAAAAAAAAWEAAAAAAAIBXQAAAAAAAgFdAAAAAAACAV0AAAAAAAIBXQAAAAAAAgFdAAAAAAACAV0AAAAAAAIBXQAAAAAAAgFdAAAAAAAAAV0AAAAAAAABXQAAAAAAAgFZAAAAAAACAVkAAAAAAAABWQAAAAAAAAFZAAAAAAAAAVkAAAAAAAABWQAAAAAAAwFVAAAAAAADAVUAAAAAAAMBVQAAAAAAAwFVAAAAAAACAVUAAAAAAAIBVQAAAAAAAgFVAAAAAAACAVUAAAAAAAEBVQAAAAAAAQFVAAAAAAAAAVUAAAAAAAABVQAAAAAAAAFVAAAAAAAAAVUAAAAAAAABVQAAAAAAAAFVAAAAAAADAVEAAAAAAAMBUQAAAAAAAwFRAAAAAAADAVEAAAAAAAIBUQAAAAAAAgFRAAAAAAACAVEAAAAAAAIBUQAAAAAAAQFRAAAAAAABAVEAAAAAAAABUQAAAAAAAAFRAAAAAAAAAVEAAAAAAAABUQAAAAAAAAFRAAAAAAAAAVEAAAAAAAMBTQAAAAAAAwFNAAAAAAADAU0AAAAAAAMBTQAAAAAAAgFNAAAAAAACAU0AAAAAAAIBTQAAAAAAAgFNAAAAAAABAU0AAAAAAAEBTQAAAAAAAQFNAAAAAAABAU0AAAAAAAEBTQAAAAAAAQFNAAAAAAABAU0AAAAAAAEBTQAAAAAAAAFNAAAAAAAAAU0AAAAAAAABTQAAAAAAAAFNAAAAAAACAUkAAAAAAAIBSQAAAAAAAgFJAAAAAAACAUkAAAAAAAIBSQAAAAAAAgFJAAAAAAABAUkAAAAAAAEBSQAAAAAAAQFJAAAAAAABAUkAAAAAAAABSQAAAAAAAAFJAAAAAAAAAUkAAAAAAAABSQAAAAAAAwFFAAAAAAADAUUAAAAAAAEBRQAAAAAAAQFFAAAAAAABAUUAAAAAAAEBRQAAAAAAAQFFAAAAAAABAUUAAAAAAAABRQAAAAAAAAFFAAAAAAAAAUUAAAAAAAABRQAAAAAAAwFBAAAAAAADAUEAAAAAAAMBQQAAAAAAAwFBAAAAAAADAUEAAAAAAAMBQQAAAAAAAwFBAAAAAAADAUEAAAAAAAIBQQAAAAAAAgFBAAAAAAACAUEAAAAAAAIBQQAAAAAAAgFBAAAAAAACAUEAAAAAAAIBQQAAAAAAAgFBAAAAAAABAUEAAAAAAAEBQQAAAAAAAQFBAAAAAAABAUEAAAAAAAEBQQAAAAAAAQFBAAAAAAAAAUEAAAAAAAABQQAAAAAAAAFBAAAAAAAAAUEAAAAAAAABQQAAAAAAAAFBAAAAAAAAAUEAAAAAAAABQQAAAAAAAgE9AAAAAAACAT0AAAAAAAABPQAAAAAAAAE9AAAAAAACATkAAAAAAAIBOQAAAAAAAgE5AAAAAAACATkAAAAAAAABOQAAAAAAAAE5AAAAAAACATUAAAAAAAIBNQAAAAAAAgE1AAAAAAACATUAAAAAAAABNQAAAAAAAAE1AAAAAAACATEAAAAAAAIBMQAAAAAAAgEtAAAAAAACAS0AAAAAAAIBLQAAAAAAAgEtAAAAAAACASkAAAAAAAIBKQAAAAAAAAEpAAAAAAAAASkAAAAAAAIBJQAAAAAAAgElAAAAAAAAASUAAAAAAAABJQAAAAAAAgEhAAAAAAACASEAAAAAAAABIQAAAAAAAAEhAAAAAAACAR0AAAAAAAIBHQAAAAAAAAEdAAAAAAAAAR0AAAAAAAABGQAAAAAAAAEZAAAAAAAAARkAAAAAAAABGQAAAAAAAgERAAAAAAACAREAAAAAAAIBEQAAAAAAAgERAAAAAAAAAREAAAAAAAABEQAAAAAAAAERAAAAAAAAAREAAAAAAAIBDQAAAAAAAgENAAAAAAACAQ0AAAAAAAIBDQAAAAAAAgENAAAAAAACAQ0AAAAAAAABDQAAAAAAAAENAAAAAAAAAQ0AAAAAAAABDQAAAAAAAgEJAAAAAAACAQkAAAAAAAIBBQAAAAAAAgEFAAAAAAACAQUAAAAAAAIBBQAAAAAAAgEBAAAAAAACAQEAAAAAAAIBAQAAAAAAAgEBAAAAAAACAQEAAAAAAAIBAQAAAAAAAgEBAAAAAAACAQEAAAAAAAABAQAAAAAAAAEBAAAAAAAAAQEAAAAAAAABAQAAAAAAAAEBAAAAAAAAAQEAAAAAAAAA/QAAAAAAAAD9AAAAAAAAAPkAAAAAAAAA+QAAAAAAAAD1AAAAAAAAAPUAAAAAAAAA9QAAAAAAAAD1AAAAAAAAAPUAAAAAAAAA9QAAAAAAAAD1AAAAAAAAAPUAAAAAAAAA8QAAAAAAAADxAAAAAAAAAO0AAAAAAAAA7QAAAAAAAADtAAAAAAAAAO0AAAAAAAAA6QAAAAAAAADpAAAAAAAAAOUAAAAAAAAA5QAAAAAAAADhAAAAAAAAAOEAAAAAAAAA4QAAAAAAAADhAAAAAAAAAOEAAAAAAAAA4QAAAAAAAADdAAAAAAAAAN0AAAAAAAAA2QAAAAAAAADZAAAAAAAAANkAAAAAAAAA2QAAAAAAAADVAAAAAAAAANUAAAAAAAAA1QAAAAAAAADVAAAAAAAAANEAAAAAAAAA0QAAAAAAAADRAAAAAAAAANEAAAAAAAAAzQAAAAAAAADNAAAAAAAAAM0AAAAAAAAAzQAAAAAAAADNAAAAAAAAAM0AAAAAAAAAyQAAAAAAAADJAAAAAAAAALkAAAAAAAAAuQAAAAAAAACxAAAAAAAAALEAAAAAAAAAsQAAAAAAAACxAAAAAAAAAKkAAAAAAAAAqQAAAAAAAAChAAAAAAAAAKEAAAAAAAAAmQAAAAAAAACZAAAAAAAAAJkAAAAAAAAAmQAAAAAAAACZAAAAAAAAAJkAAAAAAAAAkQAAAAAAAACRAAAAAAAAAJEAAAAAAAAAkQAAAAAAAACRAAAAAAAAAJEAAAAAAAAAkQAAAAAAAACRAAAAAAAAAJEAAAAAAAAAkQAAAAAAAACBAAAAAAAAAIEAAAAAAAAAgQAAAAAAAACBAAAAAAAAAGEAAAAAAAAAYQAAAAAAAABhAAAAAAAAAGEAAAAAAAAAYQAAAAAAAABhAAAAAAAAAFEAAAAAAAAAUQAAAAAAAABBAAAAAAAAAEEAAAAAAAAAQQAAAAAAAABBAAAAAAAAACEAAAAAAAAAIQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAAAAAAAAAAAAAAAA\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[1116]},\"y\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[1116]}},\"selected\":{\"id\":\"3368\"},\"selection_policy\":{\"id\":\"3369\"}},\"id\":\"3356\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAPA/AAAAAAAA8D8AAAAAAAAAQAAAAAAAAABAAAAAAAAACEAAAAAAAAAIQAAAAAAAABBAAAAAAAAAEEAAAAAAAAAUQAAAAAAAABRAAAAAAAAAGEAAAAAAAAAYQAAAAAAAABxAAAAAAAAAHEAAAAAAAAAgQAAAAAAAACBAAAAAAAAAIkAAAAAAAAAiQAAAAAAAACRAAAAAAAAAJEAAAAAAAAAmQAAAAAAAACZAAAAAAAAAKEAAAAAAAAAoQAAAAAAAACpAAAAAAAAAKkAAAAAAAAAsQAAAAAAAACxAAAAAAAAALkAAAAAAAAAuQAAAAAAAADBAAAAAAAAAMEAAAAAAAAAxQAAAAAAAADFAAAAAAAAAMkAAAAAAAAAyQAAAAAAAADNAAAAAAAAAM0AAAAAAAAA0QAAAAAAAADRAAAAAAAAANUAAAAAAAAA1QAAAAAAAADZAAAAAAAAANkAAAAAAAAA3QAAAAAAAADdAAAAAAAAAOEAAAAAAAAA4QAAAAAAAADlAAAAAAAAAOUAAAAAAAAA6QAAAAAAAADpAAAAAAAAAO0AAAAAAAAA7QAAAAAAAADxAAAAAAAAAPEAAAAAAAAA9QAAAAAAAAD1AAAAAAAAAPkAAAAAAAAA+QAAAAAAAAD9AAAAAAAAAP0AAAAAAAABAQAAAAAAAAEBAAAAAAACAQEAAAAAAAIBAQAAAAAAAAEFAAAAAAAAAQUAAAAAAAIBBQAAAAAAAgEFAAAAAAAAAQkAAAAAAAABCQAAAAAAAgEJAAAAAAACAQkAAAAAAAABDQAAAAAAAAENAAAAAAACAQ0AAAAAAAIBDQAAAAAAAAERAAAAAAAAAREAAAAAAAIBEQAAAAAAAgERAAAAAAAAARUAAAAAAAABFQAAAAAAAgEVAAAAAAACARUAAAAAAAABGQAAAAAAAAEZAAAAAAACARkAAAAAAAIBGQAAAAAAAAEdAAAAAAAAAR0AAAAAAAIBHQAAAAAAAgEdAAAAAAAAASEAAAAAAAABIQAAAAAAAgEhAAAAAAACASEAAAAAAAABJQAAAAAAAAElAAAAAAACASUAAAAAAAIBJQAAAAAAAAEpAAAAAAAAASkAAAAAAAIBKQAAAAAAAgEpAAAAAAAAAS0AAAAAAAABLQAAAAAAAgEtAAAAAAACAS0AAAAAAAABMQAAAAAAAAExAAAAAAACATEAAAAAAAIBMQAAAAAAAAE1AAAAAAAAATUAAAAAAAIBNQAAAAAAAgE1AAAAAAAAATkAAAAAAAABOQAAAAAAAgE5AAAAAAACATkAAAAAAAABPQAAAAAAAAE9AAAAAAACAT0AAAAAAAIBPQAAAAAAAAFBAAAAAAAAAUEAAAAAAAEBQQAAAAAAAQFBAAAAAAACAUEAAAAAAAIBQQAAAAAAAwFBAAAAAAADAUEAAAAAAAABRQAAAAAAAAFFAAAAAAABAUUAAAAAAAEBRQAAAAAAAgFFAAAAAAACAUUAAAAAAAMBRQAAAAAAAwFFAAAAAAAAAUkAAAAAAAABSQAAAAAAAQFJAAAAAAABAUkAAAAAAAIBSQAAAAAAAgFJAAAAAAADAUkAAAAAAAMBSQAAAAAAAAFNAAAAAAAAAU0AAAAAAAEBTQAAAAAAAQFNAAAAAAACAU0AAAAAAAIBTQAAAAAAAwFNAAAAAAADAU0AAAAAAAABUQAAAAAAAAFRAAAAAAABAVEAAAAAAAEBUQAAAAAAAgFRAAAAAAACAVEAAAAAAAMBUQAAAAAAAwFRAAAAAAAAAVUAAAAAAAABVQAAAAAAAQFVAAAAAAABAVUAAAAAAAIBVQAAAAAAAgFVAAAAAAADAVUAAAAAAAMBVQAAAAAAAAFZAAAAAAAAAVkAAAAAAAEBWQAAAAAAAQFZAAAAAAACAVkAAAAAAAIBWQAAAAAAAwFZAAAAAAADAVkAAAAAAAABXQAAAAAAAAFdAAAAAAABAV0AAAAAAAEBXQAAAAAAAgFdAAAAAAACAV0AAAAAAAMBXQAAAAAAAwFdAAAAAAAAAWEAAAAAAAABYQAAAAAAAQFhAAAAAAABAWEAAAAAAAIBYQAAAAAAAgFhAAAAAAADAWEAAAAAAAMBYQAAAAAAAAFlAAAAAAAAAWUAAAAAAAEBZQAAAAAAAQFlAAAAAAACAWUAAAAAAAIBZQAAAAAAAwFlAAAAAAADAWUAAAAAAAABaQAAAAAAAAFpAAAAAAABAWkAAAAAAAEBaQAAAAAAAgFpAAAAAAACAWkAAAAAAAMBaQAAAAAAAwFpAAAAAAAAAW0AAAAAAAABbQAAAAAAAQFtAAAAAAABAW0AAAAAAAIBbQAAAAAAAgFtAAAAAAADAW0AAAAAAAMBbQAAAAAAAAFxAAAAAAAAAXEAAAAAAAEBcQAAAAAAAQFxAAAAAAACAXEAAAAAAAIBcQAAAAAAAwFxAAAAAAADAXEAAAAAAAABdQAAAAAAAAF1AAAAAAABAXUAAAAAAAEBdQAAAAAAAgF1AAAAAAACAXUAAAAAAAMBdQAAAAAAAwF1AAAAAAAAAXkAAAAAAAABeQAAAAAAAQF5AAAAAAABAXkAAAAAAAIBeQAAAAAAAgF5AAAAAAADAXkAAAAAAAMBeQAAAAAAAAF9AAAAAAAAAX0AAAAAAAEBfQAAAAAAAQF9AAAAAAACAX0AAAAAAAIBfQAAAAAAAwF9AAAAAAADAX0AAAAAAAABgQAAAAAAAAGBAAAAAAAAgYEAAAAAAACBgQAAAAAAAQGBAAAAAAABAYEAAAAAAAGBgQAAAAAAAYGBAAAAAAACAYEAAAAAAAIBgQAAAAAAAoGBAAAAAAACgYEAAAAAAAMBgQAAAAAAAwGBAAAAAAADgYEAAAAAAAOBgQAAAAAAAAGFAAAAAAAAAYUAAAAAAACBhQAAAAAAAIGFAAAAAAABAYUAAAAAAAEBhQAAAAAAAYGFAAAAAAABgYUAAAAAAAIBhQAAAAAAAgGFAAAAAAACgYUAAAAAAAKBhQAAAAAAAwGFAAAAAAADAYUAAAAAAAOBhQAAAAAAA4GFAAAAAAAAAYkAAAAAAAABiQAAAAAAAIGJAAAAAAAAgYkAAAAAAAEBiQAAAAAAAQGJAAAAAAABgYkAAAAAAAGBiQAAAAAAAgGJAAAAAAACAYkAAAAAAAKBiQAAAAAAAoGJAAAAAAADAYkAAAAAAAMBiQAAAAAAA4GJAAAAAAADgYkAAAAAAAABjQAAAAAAAAGNAAAAAAAAgY0AAAAAAACBjQAAAAAAAQGNAAAAAAABAY0AAAAAAAGBjQAAAAAAAYGNAAAAAAACAY0AAAAAAAIBjQAAAAAAAoGNAAAAAAACgY0AAAAAAAMBjQAAAAAAAwGNAAAAAAADgY0AAAAAAAOBjQAAAAAAAAGRAAAAAAAAAZEAAAAAAACBkQAAAAAAAIGRAAAAAAABAZEAAAAAAAEBkQAAAAAAAYGRAAAAAAABgZEAAAAAAAIBkQAAAAAAAgGRAAAAAAACgZEAAAAAAAKBkQAAAAAAAwGRAAAAAAADAZEAAAAAAAOBkQAAAAAAA4GRAAAAAAAAAZUAAAAAAAABlQAAAAAAAIGVAAAAAAAAgZUAAAAAAAEBlQAAAAAAAQGVAAAAAAABgZUAAAAAAAGBlQAAAAAAAgGVAAAAAAACAZUAAAAAAAKBlQAAAAAAAoGVAAAAAAADAZUAAAAAAAMBlQAAAAAAA4GVAAAAAAADgZUAAAAAAAABmQAAAAAAAAGZAAAAAAAAgZkAAAAAAACBmQAAAAAAAQGZAAAAAAABAZkAAAAAAAGBmQAAAAAAAYGZAAAAAAACAZkAAAAAAAIBmQAAAAAAAoGZAAAAAAACgZkAAAAAAAMBmQAAAAAAAwGZAAAAAAADgZkAAAAAAAOBmQAAAAAAAAGdAAAAAAAAAZ0AAAAAAACBnQAAAAAAAIGdAAAAAAABAZ0AAAAAAAEBnQAAAAAAAYGdAAAAAAABgZ0AAAAAAAIBnQAAAAAAAgGdAAAAAAACgZ0AAAAAAAKBnQAAAAAAAwGdAAAAAAADAZ0AAAAAAAOBnQAAAAAAA4GdAAAAAAAAAaEAAAAAAAABoQAAAAAAAIGhAAAAAAAAgaEAAAAAAAEBoQAAAAAAAQGhAAAAAAABgaEAAAAAAAGBoQAAAAAAAgGhAAAAAAACAaEAAAAAAAKBoQAAAAAAAoGhAAAAAAADAaEAAAAAAAMBoQAAAAAAA4GhAAAAAAADgaEAAAAAAAABpQAAAAAAAAGlAAAAAAAAgaUAAAAAAACBpQAAAAAAAQGlAAAAAAABAaUAAAAAAAGBpQAAAAAAAYGlAAAAAAACAaUAAAAAAAIBpQAAAAAAAoGlAAAAAAACgaUAAAAAAAMBpQAAAAAAAwGlAAAAAAADgaUAAAAAAAOBpQAAAAAAAAGpAAAAAAAAAakAAAAAAACBqQAAAAAAAIGpAAAAAAABAakAAAAAAAEBqQAAAAAAAYGpAAAAAAABgakAAAAAAAIBqQAAAAAAAgGpAAAAAAACgakAAAAAAAKBqQAAAAAAAwGpAAAAAAADAakAAAAAAAOBqQAAAAAAA4GpAAAAAAAAAa0AAAAAAAABrQAAAAAAAIGtAAAAAAAAga0AAAAAAAEBrQAAAAAAAQGtAAAAAAABga0AAAAAAAGBrQAAAAAAAgGtAAAAAAACAa0AAAAAAAKBrQAAAAAAAoGtAAAAAAADAa0AAAAAAAMBrQAAAAAAA4GtAAAAAAADga0AAAAAAAABsQAAAAAAAAGxAAAAAAAAgbEAAAAAAACBsQAAAAAAAQGxAAAAAAABAbEAAAAAAAGBsQAAAAAAAYGxAAAAAAACAbEAAAAAAAIBsQAAAAAAAoGxAAAAAAACgbEAAAAAAAMBsQAAAAAAAwGxAAAAAAADgbEAAAAAAAOBsQAAAAAAAAG1AAAAAAAAAbUAAAAAAACBtQAAAAAAAIG1AAAAAAABAbUAAAAAAAEBtQAAAAAAAYG1AAAAAAABgbUAAAAAAAIBtQAAAAAAAgG1AAAAAAACgbUAAAAAAAKBtQAAAAAAAwG1AAAAAAADAbUAAAAAAAOBtQAAAAAAA4G1AAAAAAAAAbkAAAAAAAABuQAAAAAAAIG5AAAAAAAAgbkAAAAAAAEBuQAAAAAAAQG5AAAAAAABgbkAAAAAAAGBuQAAAAAAAgG5AAAAAAACAbkAAAAAAAKBuQAAAAAAAoG5AAAAAAADAbkAAAAAAAMBuQAAAAAAA4G5AAAAAAADgbkAAAAAAAABvQAAAAAAAAG9AAAAAAAAgb0AAAAAAACBvQAAAAAAAQG9AAAAAAABAb0AAAAAAAGBvQAAAAAAAYG9AAAAAAACAb0AAAAAAAIBvQAAAAAAAoG9AAAAAAACgb0AAAAAAAMBvQAAAAAAAwG9AAAAAAADgb0AAAAAAAOBvQAAAAAAAAHBAAAAAAAAAcEAAAAAAABBwQAAAAAAAEHBAAAAAAAAgcEAAAAAAACBwQAAAAAAAMHBAAAAAAAAwcEAAAAAAAEBwQAAAAAAAQHBAAAAAAABQcEAAAAAAAFBwQAAAAAAAYHBAAAAAAABgcEAAAAAAAHBwQAAAAAAAcHBAAAAAAACAcEAAAAAAAIBwQAAAAAAAkHBAAAAAAACQcEAAAAAAAKBwQAAAAAAAoHBAAAAAAACwcEAAAAAAALBwQAAAAAAAwHBAAAAAAADAcEAAAAAAANBwQAAAAAAA0HBAAAAAAADgcEAAAAAAAOBwQAAAAAAA8HBAAAAAAADwcEAAAAAAAABxQAAAAAAAAHFAAAAAAAAQcUAAAAAAABBxQAAAAAAAIHFAAAAAAAAgcUAAAAAAADBxQAAAAAAAMHFAAAAAAABAcUAAAAAAAEBxQAAAAAAAUHFAAAAAAABQcUAAAAAAAGBxQAAAAAAAYHFAAAAAAABwcUAAAAAAAHBxQAAAAAAAgHFAAAAAAACAcUAAAAAAAJBxQAAAAAAAkHFAAAAAAACgcUAAAAAAAKBxQAAAAAAAsHFAAAAAAACwcUAAAAAAAMBxQAAAAAAAwHFAAAAAAADQcUAAAAAAANBxQAAAAAAA4HFAAAAAAADgcUAAAAAAAPBxQAAAAAAA8HFAAAAAAAAAckAAAAAAAAByQAAAAAAAEHJAAAAAAAAQckAAAAAAACByQAAAAAAAIHJAAAAAAAAwckAAAAAAADByQAAAAAAAQHJAAAAAAABAckAAAAAAAFByQAAAAAAAUHJAAAAAAABgckAAAAAAAGByQAAAAAAAcHJAAAAAAABwckAAAAAAAIByQAAAAAAAgHJAAAAAAACQckAAAAAAAJByQAAAAAAAoHJAAAAAAACgckAAAAAAALByQAAAAAAAsHJAAAAAAADAckAAAAAAAMByQAAAAAAA0HJAAAAAAADQckAAAAAAAOByQAAAAAAA4HJAAAAAAADwckAAAAAAAPByQAAAAAAAAHNAAAAAAAAAc0AAAAAAABBzQAAAAAAAEHNAAAAAAAAgc0AAAAAAACBzQAAAAAAAMHNAAAAAAAAwc0AAAAAAAEBzQAAAAAAAQHNAAAAAAABQc0AAAAAAAFBzQAAAAAAAYHNAAAAAAABgc0AAAAAAAHBzQAAAAAAAcHNAAAAAAACAc0AAAAAAAIBzQAAAAAAAkHNAAAAAAACQc0AAAAAAAKBzQAAAAAAAoHNAAAAAAACwc0AAAAAAALBzQAAAAAAAwHNAAAAAAADAc0AAAAAAANBzQAAAAAAA0HNAAAAAAADgc0AAAAAAAOBzQAAAAAAA8HNAAAAAAADwc0AAAAAAAAB0QAAAAAAAAHRAAAAAAAAQdEAAAAAAABB0QAAAAAAAIHRAAAAAAAAgdEAAAAAAADB0QAAAAAAAMHRAAAAAAABAdEAAAAAAAEB0QAAAAAAAUHRAAAAAAABQdEAAAAAAAGB0QAAAAAAAYHRAAAAAAABwdEAAAAAAAHB0QAAAAAAAgHRAAAAAAACAdEAAAAAAAJB0QAAAAAAAkHRAAAAAAACgdEAAAAAAAKB0QAAAAAAAsHRAAAAAAACwdEAAAAAAAMB0QAAAAAAAwHRAAAAAAADQdEAAAAAAANB0QAAAAAAA4HRAAAAAAADgdEAAAAAAAPB0QAAAAAAA8HRAAAAAAAAAdUAAAAAAAAB1QAAAAAAAEHVAAAAAAAAQdUAAAAAAACB1QAAAAAAAIHVAAAAAAAAwdUAAAAAAADB1QAAAAAAAQHVAAAAAAABAdUAAAAAAAFB1QAAAAAAAUHVAAAAAAABgdUAAAAAAAGB1QAAAAAAAcHVAAAAAAABwdUAAAAAAAIB1QAAAAAAAgHVAAAAAAACQdUAAAAAAAJB1QAAAAAAAoHVAAAAAAACgdUAAAAAAALB1QAAAAAAAsHVAAAAAAADAdUAAAAAAAMB1QAAAAAAA0HVAAAAAAADQdUAAAAAAAOB1QAAAAAAA4HVAAAAAAADwdUAAAAAAAPB1QAAAAAAAAHZAAAAAAAAAdkAAAAAAABB2QAAAAAAAEHZAAAAAAAAgdkAAAAAAACB2QAAAAAAAMHZAAAAAAAAwdkAAAAAAAEB2QAAAAAAAQHZAAAAAAABQdkAAAAAAAFB2QAAAAAAAYHZAAAAAAABgdkAAAAAAAHB2QAAAAAAAcHZAAAAAAACAdkAAAAAAAIB2QAAAAAAAkHZAAAAAAACQdkAAAAAAAKB2QAAAAAAAoHZAAAAAAACwdkAAAAAAALB2QAAAAAAAwHZAAAAAAADAdkAAAAAAANB2QAAAAAAA0HZAAAAAAADgdkAAAAAAAOB2QAAAAAAA8HZAAAAAAADwdkAAAAAAAAB3QAAAAAAAAHdAAAAAAAAQd0AAAAAAABB3QAAAAAAAIHdAAAAAAAAgd0AAAAAAADB3QAAAAAAAMHdAAAAAAABAd0AAAAAAAEB3QAAAAAAAUHdAAAAAAABQd0AAAAAAAGB3QAAAAAAAYHdAAAAAAABwd0AAAAAAAHB3QAAAAAAAgHdAAAAAAACAd0AAAAAAAJB3QAAAAAAAkHdAAAAAAACgd0AAAAAAAKB3QAAAAAAAsHdAAAAAAACwd0AAAAAAAMB3QAAAAAAAwHdAAAAAAADQd0AAAAAAANB3QAAAAAAA4HdAAAAAAADgd0AAAAAAAPB3QAAAAAAA8HdAAAAAAAAAeEAAAAAAAAB4QAAAAAAAEHhAAAAAAAAQeEAAAAAAACB4QAAAAAAAIHhAAAAAAAAweEAAAAAAADB4QAAAAAAAQHhAAAAAAABAeEAAAAAAAFB4QAAAAAAAUHhAAAAAAABgeEAAAAAAAGB4QAAAAAAAcHhAAAAAAABweEAAAAAAAIB4QAAAAAAAgHhAAAAAAACQeEAAAAAAAJB4QAAAAAAAoHhAAAAAAACgeEAAAAAAALB4QAAAAAAAsHhAAAAAAADAeEAAAAAAAMB4QAAAAAAA0HhAAAAAAADQeEAAAAAAAOB4QAAAAAAA4HhAAAAAAADweEAAAAAAAPB4QAAAAAAAAHlAAAAAAAAAeUAAAAAAABB5QAAAAAAAEHlAAAAAAAAgeUAAAAAAACB5QAAAAAAAMHlAAAAAAAAweUAAAAAAAEB5QAAAAAAAQHlAAAAAAABQeUAAAAAAAFB5QAAAAAAAYHlAAAAAAABgeUAAAAAAAHB5QAAAAAAAcHlAAAAAAACAeUAAAAAAAIB5QA==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[818]},\"y\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[818]}},\"selected\":{\"id\":\"3437\"},\"selection_policy\":{\"id\":\"3438\"}},\"id\":\"3389\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"3335\",\"type\":\"BasicTicker\"},{\"attributes\":{\"axis\":{\"id\":\"3334\"},\"ticker\":null},\"id\":\"3337\",\"type\":\"Grid\"},{\"attributes\":{\"data_source\":{\"id\":\"3356\"},\"glyph\":{\"id\":\"3357\"},\"hover_glyph\":null,\"muted_glyph\":null,\"nonselection_glyph\":{\"id\":\"3358\"},\"selection_glyph\":null,\"view\":{\"id\":\"3360\"}},\"id\":\"3359\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"3346\",\"type\":\"ResetTool\"},{\"attributes\":{},\"id\":\"3342\",\"type\":\"PanTool\"},{\"attributes\":{},\"id\":\"3368\",\"type\":\"Selection\"},{\"attributes\":{},\"id\":\"3369\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"overlay\":{\"id\":\"3348\"}},\"id\":\"3344\",\"type\":\"BoxZoomTool\"},{\"attributes\":{\"line_color\":\"orange\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"3390\",\"type\":\"Line\"},{\"attributes\":{\"axis\":{\"id\":\"3338\"},\"dimension\":1,\"ticker\":null},\"id\":\"3341\",\"type\":\"Grid\"},{\"attributes\":{\"text\":\"\"},\"id\":\"3361\",\"type\":\"Title\"},{\"attributes\":{\"fill_alpha\":0.1,\"fill_color\":\"#1f77b3\",\"line_alpha\":0.1,\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"3358\",\"type\":\"Patch\"},{\"attributes\":{\"data_source\":{\"id\":\"3389\"},\"glyph\":{\"id\":\"3390\"},\"hover_glyph\":null,\"muted_glyph\":null,\"nonselection_glyph\":{\"id\":\"3391\"},\"selection_glyph\":null,\"view\":{\"id\":\"3393\"}},\"id\":\"3392\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"fill_color\":{\"value\":\"#1f77b3\"},\"line_color\":{\"value\":\"#1f77b3\"},\"x\":{\"field\":\"Nanog\"},\"y\":{\"field\":\"__ECDF\"}},\"id\":\"3374\",\"type\":\"Circle\"},{\"attributes\":{\"axis_label\":\"Nanog\",\"formatter\":{\"id\":\"3366\"},\"ticker\":{\"id\":\"3335\"}},\"id\":\"3334\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"3364\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"data\":{\"Nanog\":[39,33,68,88,41,103,27,15,153,127,73,5,64,104,202,216,51,293,4,1,5,143,77,27,156,0,100,101,33,120,101,57,97,121,228,79,48,0,34,107,110,408,231,153,138,10,137,69,174,61,32,84,67,141,24,94,246,80,69,11,20,10,13,44,68,251,127,74,156,44,61,33,39,175,128,24,67,274,78,49,4,143,193,82,10,176,86,107,130,149,31,40,177,37,145,1,86,113,115,139,68,83,64,94,117,26,108,120,84,2,144,62,55,12,21,39,33,14,103,78,82,46,47,79,1,6,24,116,104,63,59,132,125,153,85,104,52,140,128,22,35,2,162,236,140,14,3,132,120,30,84,200,74,154,81,77,59,88,80,10,175,19,124,60,87,194,29,119,67,8,38,94,28,22,66,6,90,77,92,118,171,29,32,11,77,37,198,134,14,227,190,40,1,50,65,19,64,154,65,25,71,129,114,123,156,8,132,136,80,162,53,87,72,64,19,134,10,65,109,96,105,21,20,116,239,0,83,263,67,0,29,66,191,30,196,49,186,181,104,127,66,11,19,155,252,160,38,41,6,195,55,24,94,11,66,73,263,168,128,18,58,72,105,118,23,212,76,32,29,104,2,76,148,187,141,3,8,74,104],\"__ECDF\":{\"__ndarray__\":\"r2dJ0OtZ0j+5OkBWrg7QPxzHcRzHcdw/B8jK1QGy4j8q/k2Nin/TP9q+UJi2L+Q/J5poookmyj8avEVsBm/BP9daa6211uo/vvfee++95z9IHnnkkUfeP7JydYCsXK0/rANk5eoA2T/AqVHxb2rkP0geeeSRR+4/LQl6PUuC7j8gK1cHyMrVP42Kf1Oj4u8/XMRm8BaxqT+vZ0nQ61mSP93JfEh3Mq8/J5poookm6j+Nin9To+LfP/FvalT8m8o/hxtuuOGG6z+ycnWArFxtP4Jez5Kg1+M/9dNPP/304z+fJUGvZ0nQP5vBW8Rm8OY/aEnQ61kS5D+bwVvEZvDWPxDpTuZDuuM/8yHdyXxI5z8S9HqWBL3uP/eFwrR9oeA/i39To+Lf1D+ycnWArFx9P0/mQ7qT+dA/VVVVVVVV5T8gK1cHyMrlPwAAAAAAAPA/hWn7QmHa7j9J0OtZEvTqP3bZZZddduk/BhZYYIEFtj8EZOXqAFnpP82HdCfzId0/HMdxHMdx7D8WWGCBBRbYPxL0epYEvc4/chzHcRzH4T+HG2644YbbP0GvZ0nQ6+k/Zpdddtllxz/SncyHdCfjP93JfEh3Mu8/3HDDDTfc4D+ycnWArFzdP/FvalT8m7o/2r5QmLYvxD+bwVvEZvC2P93JfEh3Mr8/9dNPP/300z8CsnJ1gKzcP1A//fTTT+8/MW1fKEzb5z8S9HqWBL3eP/qQ7mQ+pOs/2r5QmLYv1D/7QmHavlDYP4QQQgghhNA/lVJKKaWU0j+PPPLII4/sPxZYYIEFFug/MW1fKEzbxz9sBm8Rm8HbPxsV/6ZGxe8/EZvBW8Rm4D9walT8mxrVP4cbbrjhhqs/mQ/pTuZD6j+XXXbZZZftP6dGxb+pUeE/MW1fKEzbtz91J/Mh3cnsPz3yyCOPPOI/yMrVAbJy5T/hLWIzeIvoP2Tl6gBZueo/SB555JFHzj9fKEzbFwrTP+ecc8455+w/GrxFbAZv0T9/+umnn37qPwYWWGCBBZY/r2dJ0OtZ4j+ToNezJOjlP3iL2AzeIuY/6U7mQ7qT6T/nnHPOOefcP4wxxhhjjOE/ke5kPqQ72T9FE0000UTjP9DrWRL0euY/XMRm8BaxyT87QFauDpDlPw433HDDDec/5JFHHnnk4T+EEEIIIYSgPwyFaftCYeo/4S1iM3iL2D/Q61kS9HrWP0geeeSRR74/cGpU/JsaxT96PUuCXs/SP2r7QmHavtA/uTpAVq4OwD9NNNFEE03kP4QQQgghhOA/GrxFbAZv4T/AqVHxb2rUP6WUUkoppdQ/avtCYdq+4D9cxGbwFrGZP4QQQgghhLA/+0Jh2r5QyD/rAFm5OkDmPzIf0p3Mh+Q/xhhjjDHG2D9ml1122WXXP1Oj4t/UqOg/S4Jez5Kg5z+8RWwGbxHrP8p8SHcyH+I/pZRSSiml5D8GFlhggQXWP1zEZvAWsek/ic3gLWIz6D8GFlhggQXGPzTRRBNNNNE/r2dJ0OtZoj9S8W9qVPzrP/jee++99+4/zjnnnHPO6T+EEEIIIYTAPwYWWGCBBaY/xhhjjDHG6D+ArFwdICvnP7JydYCsXM0/VwfIytUB4j/VqPg3NSruP/jee++9994/L7vssssu6z800UQTTTThP7k6QFauDuA/S4Jez5Kg1z96PUuCXs/iP0/mQ7qT+eA/xhhjjDHGuD8CsnJ1gKzsP69nSdDrWcI/2QzeIjaD5z8xbV8oTNvXPyLdyXxId+I/CtP2hcK07T+HG2644YbLPyhM2xcK0+Y/UvFvalT82z9FE0000USzP+SRRx555NE/uIjN4C1i4z+8RWwGbxHLP9DrWRL0esY/8W9qVPyb2j8avEVsBm+xP+2yyy677OI/LLDAAgss4D9fKEzbFwrjP0Nh2r5QmOY/qlHxb2pU7D9S8W9qVPzLP93JfEh3Ms8/hxtuuOGGuz+fJUGvZ0ngP/+mRsW/qdE/YjN4i9gM7j+sA2Tl6gDpP0/mQ7qT+cA/oH766aef7j+ycnWArFztP0UTTTTRRNM/snJ1gKxcnT87QFauDpDVP0GvZ0nQ69k/ej1Lgl7Pwj922WWXXXbZP6EwbV8oTOs/J5poookm2j+R7mQ+pDvJP5dddtlll90/brjhhhtu6D8GFlhggQXmP2aXXXbZZec/bAZvEZvB6z/avlCYti+0PzmO4ziO4+g/ke5kPqQ76T/CW8Rm8BbhP8Rm8BaxGew/6wBZuTpA1j+VUkoppZTiP31IdzIf0t0/XMRm8Bax2T9FE0000UTDPx555JFHHuk/XMRm8BaxuT8MhWn7QmHaP6211lprreU/nXPOOeec4z9walT8mxrlPztAVq4OkMU/pZRSSimlxD9edtlll13mP2pU/JsaFe8/BhZYYIEFhj//pkbFv6nhPzUq/k2Niu8/N9xwww033D+ycnWArFyNPxzHcRzHccw/11prrbXW2j8l6PUsCXrtP31IdzIf0s0/77333nvv7T9VVVVVVVXVP82HdCfzIe0/WhL0epYE7T8YCtP2hcLkP6Pi39So+Oc/vEVsBm8R2z8cx3Ecx3G8PxDpTuZDusM/FKbtC4Vp6z/DtH2hMG3vP99777333us/ynxIdzIf0j8Q6U7mQ7rTP69nSdDrWbI/fUh3Mh/S7T+21lprrbXWP8YYY4wxxsg/Kv5NjYp/4z+ycnWArFy9P6EwbV8oTNs/LQl6PUuC3j+on3766afvPzfccMMNN+w/+0Jh2r5Q6D/kkUceeeTBP4CsXB0gK9c/YjN4i9gM3j/j39So+DflP7bWWmutteY/m8FbxGbwxj+6k/mQ7mTuP8O0faEwbd8/qJ9++umnzz/nnHPOOefMP4t/U6Pi3+Q/2r5QmLYvpD+on3766affP/FvalT8m+o/P/30008/7T+0JOj1LAnqPzFtXyhM26c/cGpU/JsatT/dyXxIdzLfP/30008//eQ/\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[279]},\"__dummy_cat\":[\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \"],\"__label\":[\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \"],\"index\":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278]},\"selected\":{\"id\":\"3387\"},\"selection_policy\":{\"id\":\"3388\"}},\"id\":\"3372\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"value\":\"#1f77b3\"},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#1f77b3\"},\"x\":{\"field\":\"Nanog\"},\"y\":{\"field\":\"__ECDF\"}},\"id\":\"3375\",\"type\":\"Circle\"},{\"attributes\":{\"data_source\":{\"id\":\"3372\"},\"glyph\":{\"id\":\"3374\"},\"hover_glyph\":null,\"muted_glyph\":null,\"nonselection_glyph\":{\"id\":\"3375\"},\"selection_glyph\":null,\"view\":{\"id\":\"3377\"}},\"id\":\"3376\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"source\":{\"id\":\"3372\"}},\"id\":\"3377\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"3326\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"3366\",\"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\",\"top_units\":\"screen\"},\"id\":\"3348\",\"type\":\"BoxAnnotation\"},{\"attributes\":{},\"id\":\"3328\",\"type\":\"DataRange1d\"},{\"attributes\":{\"source\":{\"id\":\"3389\"}},\"id\":\"3393\",\"type\":\"CDSView\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"orange\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"3391\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"3330\",\"type\":\"LinearScale\"},{\"attributes\":{\"axis_label\":\"ECDF\",\"formatter\":{\"id\":\"3364\"},\"ticker\":{\"id\":\"3339\"}},\"id\":\"3338\",\"type\":\"LinearAxis\"},{\"attributes\":{\"source\":{\"id\":\"3356\"}},\"id\":\"3360\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"3388\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"items\":[{\"id\":\"3371\"}],\"visible\":false},\"id\":\"3370\",\"type\":\"Legend\"},{\"attributes\":{\"active_drag\":\"auto\",\"active_inspect\":\"auto\",\"active_multi\":null,\"active_scroll\":\"auto\",\"active_tap\":\"auto\",\"tools\":[{\"id\":\"3342\"},{\"id\":\"3343\"},{\"id\":\"3344\"},{\"id\":\"3345\"},{\"id\":\"3346\"},{\"id\":\"3347\"}]},\"id\":\"3349\",\"type\":\"Toolbar\"},{\"attributes\":{},\"id\":\"3347\",\"type\":\"HelpTool\"},{\"attributes\":{\"fill_alpha\":0.5,\"fill_color\":\"#1f77b3\",\"line_alpha\":0,\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"3357\",\"type\":\"Patch\"},{\"attributes\":{},\"id\":\"3345\",\"type\":\"SaveTool\"},{\"attributes\":{},\"id\":\"3438\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"3437\",\"type\":\"Selection\"},{\"attributes\":{},\"id\":\"3387\",\"type\":\"Selection\"},{\"attributes\":{},\"id\":\"3332\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"3339\",\"type\":\"BasicTicker\"},{\"attributes\":{\"label\":{\"value\":\" \"},\"renderers\":[{\"id\":\"3359\"},{\"id\":\"3376\"}]},\"id\":\"3371\",\"type\":\"LegendItem\"}],\"root_ids\":[\"3325\"]},\"title\":\"Bokeh Application\",\"version\":\"2.2.3\"}};\n",
" var render_items = [{\"docid\":\"63ab6047-974d-4542-b35c-a660ae14d04e\",\"root_ids\":[\"3325\"],\"roots\":{\"3325\":\"0af9ccf1-87ec-4b30-8429-cc9fa5530650\"}}];\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": "3325"
}
},
"output_type": "display_data"
}
],
"source": [
"p = iqplot.ecdf(data=df['Nanog'].values, q='Nanog', conf_int=True)\n",
"n_theor = np.arange(0, df['Nanog'].max()+1)\n",
"cdf_theor = st.nbinom.cdf(n_theor, alpha_mle, 1/(1+b_mle))\n",
"\n",
"# Weave together to make staircase for discrete distribution\n",
"n_plot = np.empty(2 * len(n_theor))\n",
"cdf_plot = np.empty(2 * len(n_theor))\n",
"cdf_plot[0] = 0\n",
"cdf_plot[1::2] = cdf_theor\n",
"cdf_plot[2::2] = cdf_theor[:-1]\n",
"n_plot[::2] = n_theor\n",
"n_plot[1::2] = n_theor\n",
"\n",
"p.line(n_plot, cdf_plot, line_color='orange', line_width=2)\n",
"bokeh.io.show(p)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The MLE curve deviates from the nonparametric ECDF 95% confidence interval. This suggests we may be missing something in our model. We will cover this in more depth in future lessons."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Computing environment"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"CPython 3.8.5\n",
"IPython 7.19.0\n",
"\n",
"numpy 1.19.2\n",
"scipy 1.5.2\n",
"pandas 1.1.3\n",
"tqdm 4.50.2\n",
"bokeh 2.2.3\n",
"holoviews 1.13.5\n",
"iqplot 0.1.6\n",
"bebi103 0.1.1\n",
"jupyterlab 2.2.6\n"
]
}
],
"source": [
"%load_ext watermark\n",
"%watermark -v -p numpy,scipy,pandas,tqdm,bokeh,holoviews,iqplot,bebi103,jupyterlab"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"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.8.5"
}
},
"nbformat": 4,
"nbformat_minor": 4
}