{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# TOEFLやTOEICのスコアリングについて考える\n", "\n", "TOELEやTOEICは世界的(後者は日本国内で主流)な英語能力の検定試験の一種です。大学入試や留学,就活などでこれら検定試験のスコアが活用されることもあります。\n", "\n", "ところで,TOEICって,そのスコアのレンジ(範囲)が10点〜990点になるように **統計的な処理** が施されています。その理由はいくつかありますが,大きなものとしては「複数回受験した場合でも,能力を比較可能な形で表現するため」だったり,「異なる回を受験した,異なる受験者のスコアをなるべく平等に比較するため」だったりします。\n", "\n", "この**統計的な処理**については様々な憶測がありますが,よくあるのは「素点をもとに偏差値的な処理をする」というなんとも腑に落ちないものです。公式問題集には素点とスコアのざっくりとした対応表がついており,そこから,「50門正答したら,大体hoge点 ~ fuga点の間」ということがわかるようですが,やはり,そのスコアリングについては触れられていません。\n", "\n", "「TOEIC スコア 計算」などで検索すると,上記のようなことを説明してくれる不親切なまとめサイトがゴロゴロある一方で,みんなが口を揃えて言う**統計的な処理**については殆ど触れられていません。それもそのはずで,TOEICのテストを運用,スコアリングしているETSという非営利団体は,このスコアの計算方法を詳細に公開していないからです(のちに触れますが,これは決して受験者に意地悪しているのではなく,公平なテスト運用に欠かせないのです)。\n", "\n", "## TOEICのスコアリングに用いる統計処理について\n", "\n", "TOEICのスコアリングの方法は,実際のところETSが公開していないので,わかりません。これにつきます。[Examinee Handbook (直PDF)](https://www.ets.org/s/toeic/pdf/listening-reading-examinee-handbook.pdf)によれば,\n", "\n", "- Scores are determined by the number of correct answers, which is converted to a scaled score. \n", "- Scaled scores are transformed and derived from test takers’ raw scores through a proven statistical procedure called “equating.” \n", "\n", "とだけ記されています。つまり,正答数をなんらかの変換を施したものがスコアであり,そのスコア算出にはequatingという処理が施されている,ということです。\n", "\n", "よく「TOEICにはIRT(項目反応理論)が使われている」と言われるのですが,そう**予想**されているだけです(私もそうだと思っていて,まず間違いなくIRTを使っていると思っています。その理由については後述)。\n", "\n", "## TOEFLのスコアリングに用いる統計処理について\n", "TOEFLに関しては,IRTが使われていることが明言されています。たとえばこの[論文](https://onlinelibrary.wiley.com/doi/abs/10.1002/j.2333-8504.1993.tb01570.x)の初っ端に「IRTの3PLMっての使ってるで」って書いてあります。\n", "\n", "## 項目反応理論とはなにものなのか\n", "\n", "項目反応理論とは,一言でいうと,「個人の能力レベルと項目ごとの難しさなどを考慮して,個人が特定の項目に正答できる確率をモデル化したもの」です。具体的には,\n", "\n", "$$\n", "P(\\theta) = \\gamma + \\frac{1-\\gamma}{1 + exp(\\alpha(\\theta - \\beta))}\n", "$$\n", "\n", "このようなモデルに基づいています。$\\alpha, \\beta, \\gamma$はそれぞれ項目の識別力,困難度,当て推量のパラメタであり,$\\theta$が受験者の能力値を表しています。この$\\theta$に基づいてTOEFLのスコアは計算されています。IRTではこの反応確率を$\\theta$の関数とみなしたものをICC(Item Characteristic Curve)と呼んでいます。\n", "\n", "この$\\theta$が重要で,理論上は$[-\\infty, \\infty]$の区間の任意の値を取ります。しかも困ったことに,$\\theta$と$\\beta$を線形変換すると,パラメタは異なるのに正当確率が全く同じという組み合わせが無限にできてしまいます。これを尺度の不定性などと呼びます。この尺度の不定性を解決するために,IRTでは一般に「$\\theta$の平均を0,標準偏差を1」に固定して,すべてのパラメタを推定します。そうすると,受験者集団の$\\theta$が標準正規分布に従っていれば,プラスマイナス4標準偏差の範囲に,ほぼ100%の受験者のスコアが入ってくることになります。すべてのパラメタが推定し終わった後に,$\\theta$を任意の平均と標準偏差になるように線形変換すると,TOEFLのような0から1000点満点といったスコアが計算できるのです。" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "application/vnd.webio.node+json": { "children": [ { "children": [ { "children": [ { "children": [ { "children": [ { "children": [ "α" ], "instanceArgs": { "namespace": "html", "tag": "label" }, "nodeType": "DOM", "props": { "className": "interact ", "style": { "padding": "5px 10px 0px 10px" } }, "type": "node" } ], "instanceArgs": { "namespace": "html", "tag": "div" }, "nodeType": "DOM", "props": { "className": "interact-flex-row-left" }, "type": "node" }, { "children": [ { "children": [], "instanceArgs": { "namespace": "html", "tag": "input" }, "nodeType": "DOM", "props": { "attributes": { "data-bind": "numericValue: index, valueUpdate: 'input', event: {change: function (){this.changes(this.changes()+1)}}", "orient": "horizontal", "type": "range" }, "className": "slider slider is-fullwidth", "max": 301, "min": 1, "step": 1, "style": {} }, "type": "node" } ], "instanceArgs": { "namespace": "html", "tag": "div" }, "nodeType": "DOM", "props": { "className": "interact-flex-row-center" }, "type": "node" }, { "children": [ { "children": [], "instanceArgs": { "namespace": "html", "tag": "p" }, "nodeType": "DOM", "props": { "attributes": { "data-bind": "text: formatted_val" } }, "type": "node" } ], "instanceArgs": { "namespace": "html", "tag": "div" }, "nodeType": "DOM", "props": { "className": "interact-flex-row-right" }, "type": "node" } ], "instanceArgs": { "namespace": "html", "tag": "div" }, "nodeType": "DOM", "props": { "className": "interact-flex-row interact-widget" }, "type": "node" } ], "instanceArgs": { "handlers": { "changes": [ "(function (val){return (val!=this.model[\"changes\"]()) ? (this.valueFromJulia[\"changes\"]=true, this.model[\"changes\"](val)) : undefined})" ], "index": [ "(function (val){return (val!=this.model[\"index\"]()) ? (this.valueFromJulia[\"index\"]=true, this.model[\"index\"](val)) : undefined})" ] }, "id": "12514129453254694312", "imports": { "data": [ { "name": "knockout", "type": "js", "url": "/assetserver/8a25aee9ab7c0ff01c93039ce56f10fbc64ee308-knockout.js" }, { "name": "knockout_punches", "type": "js", "url": "/assetserver/8f7f2f607dcbcd95d4b35a7fe6451252ff6bde8d-knockout_punches.js" }, { "name": null, "type": "js", "url": "/assetserver/c73bec8302cc32c0a173062c134a504022cf02a7-all.js" }, { "name": null, "type": "css", "url": "/assetserver/7bc29f863e4ee9845ad2e19b2098119edc97fe62-style.css" }, { "name": null, "type": "css", "url": "/assetserver/377f32d1aec4fee67d3bbbed169304a486146cb6-bulma_confined.min.css" } ], "type": "async_block" }, "mount_callbacks": [ "function () {\n var handler = (function (ko, koPunches) {\n ko.punches.enableAll();\n ko.bindingHandlers.numericValue = {\n init: function(element, valueAccessor, allBindings, data, context) {\n var stringified = ko.observable(ko.unwrap(valueAccessor()));\n stringified.subscribe(function(value) {\n var val = parseFloat(value);\n if (!isNaN(val)) {\n valueAccessor()(val);\n }\n });\n valueAccessor().subscribe(function(value) {\n var str = JSON.stringify(value);\n if ((str == \"0\") && ([\"-0\", \"-0.\"].indexOf(stringified()) >= 0))\n return;\n if ([\"null\", \"\"].indexOf(str) >= 0)\n return;\n stringified(str);\n });\n ko.applyBindingsToNode(\n element,\n {\n value: stringified,\n valueUpdate: allBindings.get('valueUpdate'),\n },\n context,\n );\n }\n };\n var json_data = {\"formatted_vals\":[\"0.0\",\"0.01\",\"0.02\",\"0.03\",\"0.04\",\"0.05\",\"0.06\",\"0.07\",\"0.08\",\"0.09\",\"0.1\",\"0.11\",\"0.12\",\"0.13\",\"0.14\",\"0.15\",\"0.16\",\"0.17\",\"0.18\",\"0.19\",\"0.2\",\"0.21\",\"0.22\",\"0.23\",\"0.24\",\"0.25\",\"0.26\",\"0.27\",\"0.28\",\"0.29\",\"0.3\",\"0.31\",\"0.32\",\"0.33\",\"0.34\",\"0.35\",\"0.36\",\"0.37\",\"0.38\",\"0.39\",\"0.4\",\"0.41\",\"0.42\",\"0.43\",\"0.44\",\"0.45\",\"0.46\",\"0.47\",\"0.48\",\"0.49\",\"0.5\",\"0.51\",\"0.52\",\"0.53\",\"0.54\",\"0.55\",\"0.56\",\"0.57\",\"0.58\",\"0.59\",\"0.6\",\"0.61\",\"0.62\",\"0.63\",\"0.64\",\"0.65\",\"0.66\",\"0.67\",\"0.68\",\"0.69\",\"0.7\",\"0.71\",\"0.72\",\"0.73\",\"0.74\",\"0.75\",\"0.76\",\"0.77\",\"0.78\",\"0.79\",\"0.8\",\"0.81\",\"0.82\",\"0.83\",\"0.84\",\"0.85\",\"0.86\",\"0.87\",\"0.88\",\"0.89\",\"0.9\",\"0.91\",\"0.92\",\"0.93\",\"0.94\",\"0.95\",\"0.96\",\"0.97\",\"0.98\",\"0.99\",\"1.0\",\"1.01\",\"1.02\",\"1.03\",\"1.04\",\"1.05\",\"1.06\",\"1.07\",\"1.08\",\"1.09\",\"1.1\",\"1.11\",\"1.12\",\"1.13\",\"1.14\",\"1.15\",\"1.16\",\"1.17\",\"1.18\",\"1.19\",\"1.2\",\"1.21\",\"1.22\",\"1.23\",\"1.24\",\"1.25\",\"1.26\",\"1.27\",\"1.28\",\"1.29\",\"1.3\",\"1.31\",\"1.32\",\"1.33\",\"1.34\",\"1.35\",\"1.36\",\"1.37\",\"1.38\",\"1.39\",\"1.4\",\"1.41\",\"1.42\",\"1.43\",\"1.44\",\"1.45\",\"1.46\",\"1.47\",\"1.48\",\"1.49\",\"1.5\",\"1.51\",\"1.52\",\"1.53\",\"1.54\",\"1.55\",\"1.56\",\"1.57\",\"1.58\",\"1.59\",\"1.6\",\"1.61\",\"1.62\",\"1.63\",\"1.64\",\"1.65\",\"1.66\",\"1.67\",\"1.68\",\"1.69\",\"1.7\",\"1.71\",\"1.72\",\"1.73\",\"1.74\",\"1.75\",\"1.76\",\"1.77\",\"1.78\",\"1.79\",\"1.8\",\"1.81\",\"1.82\",\"1.83\",\"1.84\",\"1.85\",\"1.86\",\"1.87\",\"1.88\",\"1.89\",\"1.9\",\"1.91\",\"1.92\",\"1.93\",\"1.94\",\"1.95\",\"1.96\",\"1.97\",\"1.98\",\"1.99\",\"2.0\",\"2.01\",\"2.02\",\"2.03\",\"2.04\",\"2.05\",\"2.06\",\"2.07\",\"2.08\",\"2.09\",\"2.1\",\"2.11\",\"2.12\",\"2.13\",\"2.14\",\"2.15\",\"2.16\",\"2.17\",\"2.18\",\"2.19\",\"2.2\",\"2.21\",\"2.22\",\"2.23\",\"2.24\",\"2.25\",\"2.26\",\"2.27\",\"2.28\",\"2.29\",\"2.3\",\"2.31\",\"2.32\",\"2.33\",\"2.34\",\"2.35\",\"2.36\",\"2.37\",\"2.38\",\"2.39\",\"2.4\",\"2.41\",\"2.42\",\"2.43\",\"2.44\",\"2.45\",\"2.46\",\"2.47\",\"2.48\",\"2.49\",\"2.5\",\"2.51\",\"2.52\",\"2.53\",\"2.54\",\"2.55\",\"2.56\",\"2.57\",\"2.58\",\"2.59\",\"2.6\",\"2.61\",\"2.62\",\"2.63\",\"2.64\",\"2.65\",\"2.66\",\"2.67\",\"2.68\",\"2.69\",\"2.7\",\"2.71\",\"2.72\",\"2.73\",\"2.74\",\"2.75\",\"2.76\",\"2.77\",\"2.78\",\"2.79\",\"2.8\",\"2.81\",\"2.82\",\"2.83\",\"2.84\",\"2.85\",\"2.86\",\"2.87\",\"2.88\",\"2.89\",\"2.9\",\"2.91\",\"2.92\",\"2.93\",\"2.94\",\"2.95\",\"2.96\",\"2.97\",\"2.98\",\"2.99\",\"3.0\"],\"changes\":WebIO.getval({\"name\":\"changes\",\"scope\":\"12514129453254694312\",\"id\":\"ob_18\",\"type\":\"observable\"}),\"index\":WebIO.getval({\"name\":\"index\",\"scope\":\"12514129453254694312\",\"id\":\"ob_17\",\"type\":\"observable\"})};\n var self = this;\n function AppViewModel() {\n for (var key in json_data) {\n var el = json_data[key];\n this[key] = Array.isArray(el) ? ko.observableArray(el) : ko.observable(el);\n }\n \n [this[\"formatted_val\"]=ko.computed( function(){\n return this.formatted_vals()[parseInt(this.index())-(1)];\n }\n,this)]\n [this[\"changes\"].subscribe((function (val){!(this.valueFromJulia[\"changes\"]) ? (WebIO.setval({\"name\":\"changes\",\"scope\":\"12514129453254694312\",\"id\":\"ob_18\",\"type\":\"observable\"},val)) : undefined; return this.valueFromJulia[\"changes\"]=false}),self),this[\"index\"].subscribe((function (val){!(this.valueFromJulia[\"index\"]) ? (WebIO.setval({\"name\":\"index\",\"scope\":\"12514129453254694312\",\"id\":\"ob_17\",\"type\":\"observable\"},val)) : undefined; return this.valueFromJulia[\"index\"]=false}),self)]\n \n }\n self.model = new AppViewModel();\n self.valueFromJulia = {};\n for (var key in json_data) {\n self.valueFromJulia[key] = false;\n }\n ko.applyBindings(self.model, self.dom);\n}\n);\n (WebIO.importBlock({\"data\":[{\"name\":\"knockout\",\"type\":\"js\",\"url\":\"/assetserver/8a25aee9ab7c0ff01c93039ce56f10fbc64ee308-knockout.js\"},{\"name\":\"knockout_punches\",\"type\":\"js\",\"url\":\"/assetserver/8f7f2f607dcbcd95d4b35a7fe6451252ff6bde8d-knockout_punches.js\"}],\"type\":\"async_block\"})).then((imports) => handler.apply(this, imports));\n}\n" ], "observables": { "changes": { "id": "ob_18", "sync": false, "value": 0 }, "index": { "id": "ob_17", "sync": true, "value": 151 } }, "systemjs_options": null }, "nodeType": "Scope", "props": {}, "type": "node" } ], "instanceArgs": { "namespace": "html", "tag": "div" }, "nodeType": "DOM", "props": { "className": "field interact-widget" }, "type": "node" }, { "children": [ { "children": [ { "children": [ { "children": [ { "children": [ "β" ], "instanceArgs": { "namespace": "html", "tag": "label" }, "nodeType": "DOM", "props": { "className": "interact ", "style": { "padding": "5px 10px 0px 10px" } }, "type": "node" } ], "instanceArgs": { "namespace": "html", "tag": "div" }, "nodeType": "DOM", "props": { "className": "interact-flex-row-left" }, "type": "node" }, { "children": [ { "children": [], "instanceArgs": { "namespace": "html", "tag": "input" }, "nodeType": "DOM", "props": { "attributes": { "data-bind": "numericValue: index, valueUpdate: 'input', event: {change: function (){this.changes(this.changes()+1)}}", "orient": "horizontal", "type": "range" }, "className": "slider slider is-fullwidth", "max": 801, "min": 1, "step": 1, "style": {} }, "type": "node" } ], "instanceArgs": { "namespace": "html", "tag": "div" }, "nodeType": "DOM", "props": { "className": "interact-flex-row-center" }, "type": "node" }, { "children": [ { "children": [], "instanceArgs": { "namespace": "html", "tag": "p" }, "nodeType": "DOM", "props": { "attributes": { "data-bind": "text: formatted_val" } }, "type": "node" } ], "instanceArgs": { "namespace": "html", "tag": "div" }, "nodeType": "DOM", "props": { "className": "interact-flex-row-right" }, "type": "node" } ], "instanceArgs": { "namespace": "html", "tag": "div" }, "nodeType": "DOM", "props": { "className": "interact-flex-row interact-widget" }, "type": "node" } ], "instanceArgs": { "handlers": { "changes": [ "(function (val){return (val!=this.model[\"changes\"]()) ? (this.valueFromJulia[\"changes\"]=true, this.model[\"changes\"](val)) : undefined})" ], "index": [ "(function (val){return (val!=this.model[\"index\"]()) ? (this.valueFromJulia[\"index\"]=true, this.model[\"index\"](val)) : undefined})" ] }, "id": "13265937592986216686", "imports": { "data": [ { "name": "knockout", "type": "js", "url": "/assetserver/8a25aee9ab7c0ff01c93039ce56f10fbc64ee308-knockout.js" }, { "name": "knockout_punches", "type": "js", "url": "/assetserver/8f7f2f607dcbcd95d4b35a7fe6451252ff6bde8d-knockout_punches.js" }, { "name": null, "type": "js", "url": "/assetserver/c73bec8302cc32c0a173062c134a504022cf02a7-all.js" }, { "name": null, "type": "css", "url": "/assetserver/7bc29f863e4ee9845ad2e19b2098119edc97fe62-style.css" }, { "name": null, "type": "css", "url": "/assetserver/377f32d1aec4fee67d3bbbed169304a486146cb6-bulma_confined.min.css" } ], "type": "async_block" }, "mount_callbacks": [ "function () {\n var handler = (function (ko, koPunches) {\n ko.punches.enableAll();\n ko.bindingHandlers.numericValue = {\n init: function(element, valueAccessor, allBindings, data, context) {\n var stringified = ko.observable(ko.unwrap(valueAccessor()));\n stringified.subscribe(function(value) {\n var val = parseFloat(value);\n if (!isNaN(val)) {\n valueAccessor()(val);\n }\n });\n valueAccessor().subscribe(function(value) {\n var str = JSON.stringify(value);\n if ((str == \"0\") && ([\"-0\", \"-0.\"].indexOf(stringified()) >= 0))\n return;\n if ([\"null\", \"\"].indexOf(str) >= 0)\n return;\n stringified(str);\n });\n ko.applyBindingsToNode(\n element,\n {\n value: stringified,\n valueUpdate: allBindings.get('valueUpdate'),\n },\n context,\n );\n }\n };\n var json_data = {\"formatted_vals\":[\"-4.0\",\"-3.99\",\"-3.98\",\"-3.97\",\"-3.96\",\"-3.95\",\"-3.94\",\"-3.93\",\"-3.92\",\"-3.91\",\"-3.9\",\"-3.89\",\"-3.88\",\"-3.87\",\"-3.86\",\"-3.85\",\"-3.84\",\"-3.83\",\"-3.82\",\"-3.81\",\"-3.8\",\"-3.79\",\"-3.78\",\"-3.77\",\"-3.76\",\"-3.75\",\"-3.74\",\"-3.73\",\"-3.72\",\"-3.71\",\"-3.7\",\"-3.69\",\"-3.68\",\"-3.67\",\"-3.66\",\"-3.65\",\"-3.64\",\"-3.63\",\"-3.62\",\"-3.61\",\"-3.6\",\"-3.59\",\"-3.58\",\"-3.57\",\"-3.56\",\"-3.55\",\"-3.54\",\"-3.53\",\"-3.52\",\"-3.51\",\"-3.5\",\"-3.49\",\"-3.48\",\"-3.47\",\"-3.46\",\"-3.45\",\"-3.44\",\"-3.43\",\"-3.42\",\"-3.41\",\"-3.4\",\"-3.39\",\"-3.38\",\"-3.37\",\"-3.36\",\"-3.35\",\"-3.34\",\"-3.33\",\"-3.32\",\"-3.31\",\"-3.3\",\"-3.29\",\"-3.28\",\"-3.27\",\"-3.26\",\"-3.25\",\"-3.24\",\"-3.23\",\"-3.22\",\"-3.21\",\"-3.2\",\"-3.19\",\"-3.18\",\"-3.17\",\"-3.16\",\"-3.15\",\"-3.14\",\"-3.13\",\"-3.12\",\"-3.11\",\"-3.1\",\"-3.09\",\"-3.08\",\"-3.07\",\"-3.06\",\"-3.05\",\"-3.04\",\"-3.03\",\"-3.02\",\"-3.01\",\"-3.0\",\"-2.99\",\"-2.98\",\"-2.97\",\"-2.96\",\"-2.95\",\"-2.94\",\"-2.93\",\"-2.92\",\"-2.91\",\"-2.9\",\"-2.89\",\"-2.88\",\"-2.87\",\"-2.86\",\"-2.85\",\"-2.84\",\"-2.83\",\"-2.82\",\"-2.81\",\"-2.8\",\"-2.79\",\"-2.78\",\"-2.77\",\"-2.76\",\"-2.75\",\"-2.74\",\"-2.73\",\"-2.72\",\"-2.71\",\"-2.7\",\"-2.69\",\"-2.68\",\"-2.67\",\"-2.66\",\"-2.65\",\"-2.64\",\"-2.63\",\"-2.62\",\"-2.61\",\"-2.6\",\"-2.59\",\"-2.58\",\"-2.57\",\"-2.56\",\"-2.55\",\"-2.54\",\"-2.53\",\"-2.52\",\"-2.51\",\"-2.5\",\"-2.49\",\"-2.48\",\"-2.47\",\"-2.46\",\"-2.45\",\"-2.44\",\"-2.43\",\"-2.42\",\"-2.41\",\"-2.4\",\"-2.39\",\"-2.38\",\"-2.37\",\"-2.36\",\"-2.35\",\"-2.34\",\"-2.33\",\"-2.32\",\"-2.31\",\"-2.3\",\"-2.29\",\"-2.28\",\"-2.27\",\"-2.26\",\"-2.25\",\"-2.24\",\"-2.23\",\"-2.22\",\"-2.21\",\"-2.2\",\"-2.19\",\"-2.18\",\"-2.17\",\"-2.16\",\"-2.15\",\"-2.14\",\"-2.13\",\"-2.12\",\"-2.11\",\"-2.1\",\"-2.09\",\"-2.08\",\"-2.07\",\"-2.06\",\"-2.05\",\"-2.04\",\"-2.03\",\"-2.02\",\"-2.01\",\"-2.0\",\"-1.99\",\"-1.98\",\"-1.97\",\"-1.96\",\"-1.95\",\"-1.94\",\"-1.93\",\"-1.92\",\"-1.91\",\"-1.9\",\"-1.89\",\"-1.88\",\"-1.87\",\"-1.86\",\"-1.85\",\"-1.84\",\"-1.83\",\"-1.82\",\"-1.81\",\"-1.8\",\"-1.79\",\"-1.78\",\"-1.77\",\"-1.76\",\"-1.75\",\"-1.74\",\"-1.73\",\"-1.72\",\"-1.71\",\"-1.7\",\"-1.69\",\"-1.68\",\"-1.67\",\"-1.66\",\"-1.65\",\"-1.64\",\"-1.63\",\"-1.62\",\"-1.61\",\"-1.6\",\"-1.59\",\"-1.58\",\"-1.57\",\"-1.56\",\"-1.55\",\"-1.54\",\"-1.53\",\"-1.52\",\"-1.51\",\"-1.5\",\"-1.49\",\"-1.48\",\"-1.47\",\"-1.46\",\"-1.45\",\"-1.44\",\"-1.43\",\"-1.42\",\"-1.41\",\"-1.4\",\"-1.39\",\"-1.38\",\"-1.37\",\"-1.36\",\"-1.35\",\"-1.34\",\"-1.33\",\"-1.32\",\"-1.31\",\"-1.3\",\"-1.29\",\"-1.28\",\"-1.27\",\"-1.26\",\"-1.25\",\"-1.24\",\"-1.23\",\"-1.22\",\"-1.21\",\"-1.2\",\"-1.19\",\"-1.18\",\"-1.17\",\"-1.16\",\"-1.15\",\"-1.14\",\"-1.13\",\"-1.12\",\"-1.11\",\"-1.1\",\"-1.09\",\"-1.08\",\"-1.07\",\"-1.06\",\"-1.05\",\"-1.04\",\"-1.03\",\"-1.02\",\"-1.01\",\"-1.0\",\"-0.99\",\"-0.98\",\"-0.97\",\"-0.96\",\"-0.95\",\"-0.94\",\"-0.93\",\"-0.92\",\"-0.91\",\"-0.9\",\"-0.89\",\"-0.88\",\"-0.87\",\"-0.86\",\"-0.85\",\"-0.84\",\"-0.83\",\"-0.82\",\"-0.81\",\"-0.8\",\"-0.79\",\"-0.78\",\"-0.77\",\"-0.76\",\"-0.75\",\"-0.74\",\"-0.73\",\"-0.72\",\"-0.71\",\"-0.7\",\"-0.69\",\"-0.68\",\"-0.67\",\"-0.66\",\"-0.65\",\"-0.64\",\"-0.63\",\"-0.62\",\"-0.61\",\"-0.6\",\"-0.59\",\"-0.58\",\"-0.57\",\"-0.56\",\"-0.55\",\"-0.54\",\"-0.53\",\"-0.52\",\"-0.51\",\"-0.5\",\"-0.49\",\"-0.48\",\"-0.47\",\"-0.46\",\"-0.45\",\"-0.44\",\"-0.43\",\"-0.42\",\"-0.41\",\"-0.4\",\"-0.39\",\"-0.38\",\"-0.37\",\"-0.36\",\"-0.35\",\"-0.34\",\"-0.33\",\"-0.32\",\"-0.31\",\"-0.3\",\"-0.29\",\"-0.28\",\"-0.27\",\"-0.26\",\"-0.25\",\"-0.24\",\"-0.23\",\"-0.22\",\"-0.21\",\"-0.2\",\"-0.19\",\"-0.18\",\"-0.17\",\"-0.16\",\"-0.15\",\"-0.14\",\"-0.13\",\"-0.12\",\"-0.11\",\"-0.1\",\"-0.09\",\"-0.08\",\"-0.07\",\"-0.06\",\"-0.05\",\"-0.04\",\"-0.03\",\"-0.02\",\"-0.01\",\"0.0\",\"0.01\",\"0.02\",\"0.03\",\"0.04\",\"0.05\",\"0.06\",\"0.07\",\"0.08\",\"0.09\",\"0.1\",\"0.11\",\"0.12\",\"0.13\",\"0.14\",\"0.15\",\"0.16\",\"0.17\",\"0.18\",\"0.19\",\"0.2\",\"0.21\",\"0.22\",\"0.23\",\"0.24\",\"0.25\",\"0.26\",\"0.27\",\"0.28\",\"0.29\",\"0.3\",\"0.31\",\"0.32\",\"0.33\",\"0.34\",\"0.35\",\"0.36\",\"0.37\",\"0.38\",\"0.39\",\"0.4\",\"0.41\",\"0.42\",\"0.43\",\"0.44\",\"0.45\",\"0.46\",\"0.47\",\"0.48\",\"0.49\",\"0.5\",\"0.51\",\"0.52\",\"0.53\",\"0.54\",\"0.55\",\"0.56\",\"0.57\",\"0.58\",\"0.59\",\"0.6\",\"0.61\",\"0.62\",\"0.63\",\"0.64\",\"0.65\",\"0.66\",\"0.67\",\"0.68\",\"0.69\",\"0.7\",\"0.71\",\"0.72\",\"0.73\",\"0.74\",\"0.75\",\"0.76\",\"0.77\",\"0.78\",\"0.79\",\"0.8\",\"0.81\",\"0.82\",\"0.83\",\"0.84\",\"0.85\",\"0.86\",\"0.87\",\"0.88\",\"0.89\",\"0.9\",\"0.91\",\"0.92\",\"0.93\",\"0.94\",\"0.95\",\"0.96\",\"0.97\",\"0.98\",\"0.99\",\"1.0\",\"1.01\",\"1.02\",\"1.03\",\"1.04\",\"1.05\",\"1.06\",\"1.07\",\"1.08\",\"1.09\",\"1.1\",\"1.11\",\"1.12\",\"1.13\",\"1.14\",\"1.15\",\"1.16\",\"1.17\",\"1.18\",\"1.19\",\"1.2\",\"1.21\",\"1.22\",\"1.23\",\"1.24\",\"1.25\",\"1.26\",\"1.27\",\"1.28\",\"1.29\",\"1.3\",\"1.31\",\"1.32\",\"1.33\",\"1.34\",\"1.35\",\"1.36\",\"1.37\",\"1.38\",\"1.39\",\"1.4\",\"1.41\",\"1.42\",\"1.43\",\"1.44\",\"1.45\",\"1.46\",\"1.47\",\"1.48\",\"1.49\",\"1.5\",\"1.51\",\"1.52\",\"1.53\",\"1.54\",\"1.55\",\"1.56\",\"1.57\",\"1.58\",\"1.59\",\"1.6\",\"1.61\",\"1.62\",\"1.63\",\"1.64\",\"1.65\",\"1.66\",\"1.67\",\"1.68\",\"1.69\",\"1.7\",\"1.71\",\"1.72\",\"1.73\",\"1.74\",\"1.75\",\"1.76\",\"1.77\",\"1.78\",\"1.79\",\"1.8\",\"1.81\",\"1.82\",\"1.83\",\"1.84\",\"1.85\",\"1.86\",\"1.87\",\"1.88\",\"1.89\",\"1.9\",\"1.91\",\"1.92\",\"1.93\",\"1.94\",\"1.95\",\"1.96\",\"1.97\",\"1.98\",\"1.99\",\"2.0\",\"2.01\",\"2.02\",\"2.03\",\"2.04\",\"2.05\",\"2.06\",\"2.07\",\"2.08\",\"2.09\",\"2.1\",\"2.11\",\"2.12\",\"2.13\",\"2.14\",\"2.15\",\"2.16\",\"2.17\",\"2.18\",\"2.19\",\"2.2\",\"2.21\",\"2.22\",\"2.23\",\"2.24\",\"2.25\",\"2.26\",\"2.27\",\"2.28\",\"2.29\",\"2.3\",\"2.31\",\"2.32\",\"2.33\",\"2.34\",\"2.35\",\"2.36\",\"2.37\",\"2.38\",\"2.39\",\"2.4\",\"2.41\",\"2.42\",\"2.43\",\"2.44\",\"2.45\",\"2.46\",\"2.47\",\"2.48\",\"2.49\",\"2.5\",\"2.51\",\"2.52\",\"2.53\",\"2.54\",\"2.55\",\"2.56\",\"2.57\",\"2.58\",\"2.59\",\"2.6\",\"2.61\",\"2.62\",\"2.63\",\"2.64\",\"2.65\",\"2.66\",\"2.67\",\"2.68\",\"2.69\",\"2.7\",\"2.71\",\"2.72\",\"2.73\",\"2.74\",\"2.75\",\"2.76\",\"2.77\",\"2.78\",\"2.79\",\"2.8\",\"2.81\",\"2.82\",\"2.83\",\"2.84\",\"2.85\",\"2.86\",\"2.87\",\"2.88\",\"2.89\",\"2.9\",\"2.91\",\"2.92\",\"2.93\",\"2.94\",\"2.95\",\"2.96\",\"2.97\",\"2.98\",\"2.99\",\"3.0\",\"3.01\",\"3.02\",\"3.03\",\"3.04\",\"3.05\",\"3.06\",\"3.07\",\"3.08\",\"3.09\",\"3.1\",\"3.11\",\"3.12\",\"3.13\",\"3.14\",\"3.15\",\"3.16\",\"3.17\",\"3.18\",\"3.19\",\"3.2\",\"3.21\",\"3.22\",\"3.23\",\"3.24\",\"3.25\",\"3.26\",\"3.27\",\"3.28\",\"3.29\",\"3.3\",\"3.31\",\"3.32\",\"3.33\",\"3.34\",\"3.35\",\"3.36\",\"3.37\",\"3.38\",\"3.39\",\"3.4\",\"3.41\",\"3.42\",\"3.43\",\"3.44\",\"3.45\",\"3.46\",\"3.47\",\"3.48\",\"3.49\",\"3.5\",\"3.51\",\"3.52\",\"3.53\",\"3.54\",\"3.55\",\"3.56\",\"3.57\",\"3.58\",\"3.59\",\"3.6\",\"3.61\",\"3.62\",\"3.63\",\"3.64\",\"3.65\",\"3.66\",\"3.67\",\"3.68\",\"3.69\",\"3.7\",\"3.71\",\"3.72\",\"3.73\",\"3.74\",\"3.75\",\"3.76\",\"3.77\",\"3.78\",\"3.79\",\"3.8\",\"3.81\",\"3.82\",\"3.83\",\"3.84\",\"3.85\",\"3.86\",\"3.87\",\"3.88\",\"3.89\",\"3.9\",\"3.91\",\"3.92\",\"3.93\",\"3.94\",\"3.95\",\"3.96\",\"3.97\",\"3.98\",\"3.99\",\"4.0\"],\"changes\":WebIO.getval({\"name\":\"changes\",\"scope\":\"13265937592986216686\",\"id\":\"ob_21\",\"type\":\"observable\"}),\"index\":WebIO.getval({\"name\":\"index\",\"scope\":\"13265937592986216686\",\"id\":\"ob_20\",\"type\":\"observable\"})};\n var self = this;\n function AppViewModel() {\n for (var key in json_data) {\n var el = json_data[key];\n this[key] = Array.isArray(el) ? ko.observableArray(el) : ko.observable(el);\n }\n \n [this[\"formatted_val\"]=ko.computed( function(){\n return this.formatted_vals()[parseInt(this.index())-(1)];\n }\n,this)]\n [this[\"changes\"].subscribe((function (val){!(this.valueFromJulia[\"changes\"]) ? (WebIO.setval({\"name\":\"changes\",\"scope\":\"13265937592986216686\",\"id\":\"ob_21\",\"type\":\"observable\"},val)) : undefined; return this.valueFromJulia[\"changes\"]=false}),self),this[\"index\"].subscribe((function (val){!(this.valueFromJulia[\"index\"]) ? (WebIO.setval({\"name\":\"index\",\"scope\":\"13265937592986216686\",\"id\":\"ob_20\",\"type\":\"observable\"},val)) : undefined; return this.valueFromJulia[\"index\"]=false}),self)]\n \n }\n self.model = new AppViewModel();\n self.valueFromJulia = {};\n for (var key in json_data) {\n self.valueFromJulia[key] = false;\n }\n ko.applyBindings(self.model, self.dom);\n}\n);\n (WebIO.importBlock({\"data\":[{\"name\":\"knockout\",\"type\":\"js\",\"url\":\"/assetserver/8a25aee9ab7c0ff01c93039ce56f10fbc64ee308-knockout.js\"},{\"name\":\"knockout_punches\",\"type\":\"js\",\"url\":\"/assetserver/8f7f2f607dcbcd95d4b35a7fe6451252ff6bde8d-knockout_punches.js\"}],\"type\":\"async_block\"})).then((imports) => handler.apply(this, imports));\n}\n" ], "observables": { "changes": { "id": "ob_21", "sync": false, "value": 0 }, "index": { "id": "ob_20", "sync": true, "value": 401 } }, "systemjs_options": null }, "nodeType": "Scope", "props": {}, "type": "node" } ], "instanceArgs": { "namespace": "html", "tag": "div" }, "nodeType": "DOM", "props": { "className": "field interact-widget" }, "type": "node" }, { "children": [ { "children": [ { "children": [ { "children": [ { "children": [ "γ" ], "instanceArgs": { "namespace": "html", "tag": "label" }, "nodeType": "DOM", "props": { "className": "interact ", "style": { "padding": "5px 10px 0px 10px" } }, "type": "node" } ], "instanceArgs": { "namespace": "html", "tag": "div" }, "nodeType": "DOM", "props": { "className": "interact-flex-row-left" }, "type": "node" }, { "children": [ { "children": [], "instanceArgs": { "namespace": "html", "tag": "input" }, "nodeType": "DOM", "props": { "attributes": { "data-bind": "numericValue: index, valueUpdate: 'input', event: {change: function (){this.changes(this.changes()+1)}}", "orient": "horizontal", "type": "range" }, "className": "slider slider is-fullwidth", "max": 101, "min": 1, "step": 1, "style": {} }, "type": "node" } ], "instanceArgs": { "namespace": "html", "tag": "div" }, "nodeType": "DOM", "props": { "className": "interact-flex-row-center" }, "type": "node" }, { "children": [ { "children": [], "instanceArgs": { "namespace": "html", "tag": "p" }, "nodeType": "DOM", "props": { "attributes": { "data-bind": "text: formatted_val" } }, "type": "node" } ], "instanceArgs": { "namespace": "html", "tag": "div" }, "nodeType": "DOM", "props": { "className": "interact-flex-row-right" }, "type": "node" } ], "instanceArgs": { "namespace": "html", "tag": "div" }, "nodeType": "DOM", "props": { "className": "interact-flex-row interact-widget" }, "type": "node" } ], "instanceArgs": { "handlers": { "changes": [ "(function (val){return (val!=this.model[\"changes\"]()) ? (this.valueFromJulia[\"changes\"]=true, this.model[\"changes\"](val)) : undefined})" ], "index": [ "(function (val){return (val!=this.model[\"index\"]()) ? (this.valueFromJulia[\"index\"]=true, this.model[\"index\"](val)) : undefined})" ] }, "id": "2961590104758986936", "imports": { "data": [ { "name": "knockout", "type": "js", "url": "/assetserver/8a25aee9ab7c0ff01c93039ce56f10fbc64ee308-knockout.js" }, { "name": "knockout_punches", "type": "js", "url": "/assetserver/8f7f2f607dcbcd95d4b35a7fe6451252ff6bde8d-knockout_punches.js" }, { "name": null, "type": "js", "url": "/assetserver/c73bec8302cc32c0a173062c134a504022cf02a7-all.js" }, { "name": null, "type": "css", "url": "/assetserver/7bc29f863e4ee9845ad2e19b2098119edc97fe62-style.css" }, { "name": null, "type": "css", "url": "/assetserver/377f32d1aec4fee67d3bbbed169304a486146cb6-bulma_confined.min.css" } ], "type": "async_block" }, "mount_callbacks": [ "function () {\n var handler = (function (ko, koPunches) {\n ko.punches.enableAll();\n ko.bindingHandlers.numericValue = {\n init: function(element, valueAccessor, allBindings, data, context) {\n var stringified = ko.observable(ko.unwrap(valueAccessor()));\n stringified.subscribe(function(value) {\n var val = parseFloat(value);\n if (!isNaN(val)) {\n valueAccessor()(val);\n }\n });\n valueAccessor().subscribe(function(value) {\n var str = JSON.stringify(value);\n if ((str == \"0\") && ([\"-0\", \"-0.\"].indexOf(stringified()) >= 0))\n return;\n if ([\"null\", \"\"].indexOf(str) >= 0)\n return;\n stringified(str);\n });\n ko.applyBindingsToNode(\n element,\n {\n value: stringified,\n valueUpdate: allBindings.get('valueUpdate'),\n },\n context,\n );\n }\n };\n var json_data = {\"formatted_vals\":[\"0.0\",\"0.01\",\"0.02\",\"0.03\",\"0.04\",\"0.05\",\"0.06\",\"0.07\",\"0.08\",\"0.09\",\"0.1\",\"0.11\",\"0.12\",\"0.13\",\"0.14\",\"0.15\",\"0.16\",\"0.17\",\"0.18\",\"0.19\",\"0.2\",\"0.21\",\"0.22\",\"0.23\",\"0.24\",\"0.25\",\"0.26\",\"0.27\",\"0.28\",\"0.29\",\"0.3\",\"0.31\",\"0.32\",\"0.33\",\"0.34\",\"0.35\",\"0.36\",\"0.37\",\"0.38\",\"0.39\",\"0.4\",\"0.41\",\"0.42\",\"0.43\",\"0.44\",\"0.45\",\"0.46\",\"0.47\",\"0.48\",\"0.49\",\"0.5\",\"0.51\",\"0.52\",\"0.53\",\"0.54\",\"0.55\",\"0.56\",\"0.57\",\"0.58\",\"0.59\",\"0.6\",\"0.61\",\"0.62\",\"0.63\",\"0.64\",\"0.65\",\"0.66\",\"0.67\",\"0.68\",\"0.69\",\"0.7\",\"0.71\",\"0.72\",\"0.73\",\"0.74\",\"0.75\",\"0.76\",\"0.77\",\"0.78\",\"0.79\",\"0.8\",\"0.81\",\"0.82\",\"0.83\",\"0.84\",\"0.85\",\"0.86\",\"0.87\",\"0.88\",\"0.89\",\"0.9\",\"0.91\",\"0.92\",\"0.93\",\"0.94\",\"0.95\",\"0.96\",\"0.97\",\"0.98\",\"0.99\",\"1.0\"],\"changes\":WebIO.getval({\"name\":\"changes\",\"scope\":\"2961590104758986936\",\"id\":\"ob_24\",\"type\":\"observable\"}),\"index\":WebIO.getval({\"name\":\"index\",\"scope\":\"2961590104758986936\",\"id\":\"ob_23\",\"type\":\"observable\"})};\n var self = this;\n function AppViewModel() {\n for (var key in json_data) {\n var el = json_data[key];\n this[key] = Array.isArray(el) ? ko.observableArray(el) : ko.observable(el);\n }\n \n [this[\"formatted_val\"]=ko.computed( function(){\n return this.formatted_vals()[parseInt(this.index())-(1)];\n }\n,this)]\n [this[\"changes\"].subscribe((function (val){!(this.valueFromJulia[\"changes\"]) ? (WebIO.setval({\"name\":\"changes\",\"scope\":\"2961590104758986936\",\"id\":\"ob_24\",\"type\":\"observable\"},val)) : undefined; return this.valueFromJulia[\"changes\"]=false}),self),this[\"index\"].subscribe((function (val){!(this.valueFromJulia[\"index\"]) ? (WebIO.setval({\"name\":\"index\",\"scope\":\"2961590104758986936\",\"id\":\"ob_23\",\"type\":\"observable\"},val)) : undefined; return this.valueFromJulia[\"index\"]=false}),self)]\n \n }\n self.model = new AppViewModel();\n self.valueFromJulia = {};\n for (var key in json_data) {\n self.valueFromJulia[key] = false;\n }\n ko.applyBindings(self.model, self.dom);\n}\n);\n (WebIO.importBlock({\"data\":[{\"name\":\"knockout\",\"type\":\"js\",\"url\":\"/assetserver/8a25aee9ab7c0ff01c93039ce56f10fbc64ee308-knockout.js\"},{\"name\":\"knockout_punches\",\"type\":\"js\",\"url\":\"/assetserver/8f7f2f607dcbcd95d4b35a7fe6451252ff6bde8d-knockout_punches.js\"}],\"type\":\"async_block\"})).then((imports) => handler.apply(this, imports));\n}\n" ], "observables": { "changes": { "id": "ob_24", "sync": false, "value": 0 }, "index": { "id": "ob_23", "sync": true, "value": 51 } }, "systemjs_options": null }, "nodeType": "Scope", "props": {}, "type": "node" } ], "instanceArgs": { "namespace": "html", "tag": "div" }, "nodeType": "DOM", "props": { "className": "field interact-widget" }, "type": "node" }, { "children": [ { "children": [], "instanceArgs": { "id": "ob_30", "name": "obs-node" }, "nodeType": "ObservableNode", "props": {}, "type": "node" } ], "instanceArgs": { "handlers": {}, "id": "7656910305414329916", "imports": { "data": [], "type": "async_block" }, "mount_callbacks": [], "observables": { "obs-node": { "id": "ob_30", "sync": false, "value": { "children": [ { "children": [], "instanceArgs": { "namespace": "html", "tag": "div" }, "nodeType": "DOM", "props": { "setInnerHtml": "\n\n\n \n \n \n\n\n\n \n \n \n\n\n\n \n \n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n-4\n\n\n-2\n\n\n0\n\n\n2\n\n\n4\n\n\n0.0\n\n\n0.2\n\n\n0.4\n\n\n0.6\n\n\n0.8\n\n\n1.0\n\n\ntheta\n\n\nCorrect probability\n\n\n\n\n\n\nICC\n\n\n" }, "type": "node" } ], "instanceArgs": { "namespace": "html", "tag": "div" }, "nodeType": "DOM", "props": { "className": "interact-flex-row interact-widget" }, "type": "node" } } }, "systemjs_options": null }, "nodeType": "Scope", "props": {}, "type": "node" } ], "instanceArgs": { "namespace": "html", "tag": "div" }, "nodeType": "DOM", "props": {}, "type": "node" }, "text/html": [ "\n", " \n", "\n" ], "text/plain": [ "Node{WebIO.DOM}(WebIO.DOM(:html, :div), Any[Node{DOM}(DOM(:html, :div), Any[Scope(Node{DOM}(DOM(:html, :div), Any[Node{DOM}(DOM(:html, :div), Any[Node{DOM}(DOM(:html, :label), Any[\"α\"], Dict{Symbol,Any}(:className=>\"interact \",:style=>Dict{Any,Any}(:padding=>\"5px 10px 0px 10px\")))], Dict{Symbol,Any}(:className=>\"interact-flex-row-left\")), Node{DOM}(DOM(:html, :div), Any[Node{DOM}(DOM(:html, :input), Any[], Dict{Symbol,Any}(:max=>301,:min=>1,:attributes=>Dict{Any,Any}(:type=>\"range\",Symbol(\"data-bind\")=>\"numericValue: index, valueUpdate: 'input', event: {change: function (){this.changes(this.changes()+1)}}\",\"orient\"=>\"horizontal\"),:step=>1,:className=>\"slider slider is-fullwidth\",:style=>Dict{Any,Any}()))], Dict{Symbol,Any}(:className=>\"interact-flex-row-center\")), Node{DOM}(DOM(:html, :div), Any[Node{DOM}(DOM(:html, :p), Any[], Dict{Symbol,Any}(:attributes=>Dict(\"data-bind\"=>\"text: formatted_val\")))], Dict{Symbol,Any}(:className=>\"interact-flex-row-right\"))], Dict{Symbol,Any}(:className=>\"interact-flex-row interact-widget\")), Dict{String,Tuple{Observables.AbstractObservable,Union{Nothing, Bool}}}(\"changes\"=>(Observable{Int64} with 1 listeners. Value:\n", "0, nothing),\"index\"=>(Observable{Any} with 2 listeners. Value:\n", "151, nothing)), Set(String[]), nothing, Asset[Asset(\"js\", \"knockout\", \"/Users/takuizum/.julia/packages/Knockout/1sDlc/src/../assets/knockout.js\"), Asset(\"js\", \"knockout_punches\", \"/Users/takuizum/.julia/packages/Knockout/1sDlc/src/../assets/knockout_punches.js\"), Asset(\"js\", nothing, \"/Users/takuizum/.julia/packages/InteractBase/l8cEC/src/../assets/all.js\"), Asset(\"css\", nothing, \"/Users/takuizum/.julia/packages/InteractBase/l8cEC/src/../assets/style.css\"), Asset(\"css\", nothing, \"/Users/takuizum/.julia/packages/Interact/0klKX/src/../assets/bulma_confined.min.css\")], Dict{Any,Any}(\"changes\"=>Any[JSString(\"(function (val){return (val!=this.model[\\\"changes\\\"]()) ? (this.valueFromJulia[\\\"changes\\\"]=true, this.model[\\\"changes\\\"](val)) : undefined})\")],\"index\"=>Any[JSString(\"(function (val){return (val!=this.model[\\\"index\\\"]()) ? (this.valueFromJulia[\\\"index\\\"]=true, this.model[\\\"index\\\"](val)) : undefined})\")]), ConnectionPool(Channel{Any}(sz_max:9223372036854775807,sz_curr:0), Set(AbstractConnection[]), Channel{AbstractConnection}(sz_max:32,sz_curr:0)), WebIO.JSString[JSString(\"function () {\\n var handler = (function (ko, koPunches) {\\n ko.punches.enableAll();\\n ko.bindingHandlers.numericValue = {\\n init: function(element, valueAccessor, allBindings, data, context) {\\n var stringified = ko.observable(ko.unwrap(valueAccessor()));\\n stringified.subscribe(function(value) {\\n var val = parseFloat(value);\\n if (!isNaN(val)) {\\n valueAccessor()(val);\\n }\\n });\\n valueAccessor().subscribe(function(value) {\\n var str = JSON.stringify(value);\\n if ((str == \\\"0\\\") && ([\\\"-0\\\", \\\"-0.\\\"].indexOf(stringified()) >= 0))\\n return;\\n if ([\\\"null\\\", \\\"\\\"].indexOf(str) >= 0)\\n return;\\n stringified(str);\\n });\\n ko.applyBindingsToNode(\\n element,\\n {\\n value: stringified,\\n valueUpdate: allBindings.get('valueUpdate'),\\n },\\n context,\\n );\\n }\\n };\\n var json_data = {\\\"formatted_vals\\\":[\\\"0.0\\\",\\\"0.01\\\",\\\"0.02\\\",\\\"0.03\\\",\\\"0.04\\\",\\\"0.05\\\",\\\"0.06\\\",\\\"0.07\\\",\\\"0.08\\\",\\\"0.09\\\",\\\"0.1\\\",\\\"0.11\\\",\\\"0.12\\\",\\\"0.13\\\",\\\"0.14\\\",\\\"0.15\\\",\\\"0.16\\\",\\\"0.17\\\",\\\"0.18\\\",\\\"0.19\\\",\\\"0.2\\\",\\\"0.21\\\",\\\"0.22\\\",\\\"0.23\\\",\\\"0.24\\\",\\\"0.25\\\",\\\"0.26\\\",\\\"0.27\\\",\\\"0.28\\\",\\\"0.29\\\",\\\"0.3\\\",\\\"0.31\\\",\\\"0.32\\\",\\\"0.33\\\",\\\"0.34\\\",\\\"0.35\\\",\\\"0.36\\\",\\\"0.37\\\",\\\"0.38\\\",\\\"0.39\\\",\\\"0.4\\\",\\\"0.41\\\",\\\"0.42\\\",\\\"0.43\\\",\\\"0.44\\\",\\\"0.45\\\",\\\"0.46\\\",\\\"0.47\\\",\\\"0.48\\\",\\\"0.49\\\",\\\"0.5\\\",\\\"0.51\\\",\\\"0.52\\\",\\\"0.53\\\",\\\"0.54\\\",\\\"0.55\\\",\\\"0.56\\\",\\\"0.57\\\",\\\"0.58\\\",\\\"0.59\\\",\\\"0.6\\\",\\\"0.61\\\",\\\"0.62\\\",\\\"0.63\\\",\\\"0.64\\\",\\\"0.65\\\",\\\"0.66\\\",\\\"0.67\\\",\\\"0.68\\\",\\\"0.69\\\",\\\"0.7\\\",\\\"0.71\\\",\\\"0.72\\\",\\\"0.73\\\",\\\"0.74\\\",\\\"0.75\\\",\\\"0.76\\\",\\\"0.77\\\",\\\"0.78\\\",\\\"0.79\\\",\\\"0.8\\\",\\\"0.81\\\",\\\"0.82\\\",\\\"0.83\\\",\\\"0.84\\\",\\\"0.85\\\",\\\"0.86\\\",\\\"0.87\\\",\\\"0.88\\\",\\\"0.89\\\",\\\"0.9\\\",\\\"0.91\\\",\\\"0.92\\\",\\\"0.93\\\",\\\"0.94\\\",\\\"0.95\\\",\\\"0.96\\\",\\\"0.97\\\",\\\"0.98\\\",\\\"0.99\\\",\\\"1.0\\\",\\\"1.01\\\",\\\"1.02\\\",\\\"1.03\\\",\\\"1.04\\\",\\\"1.05\\\",\\\"1.06\\\",\\\"1.07\\\",\\\"1.08\\\",\\\"1.09\\\",\\\"1.1\\\",\\\"1.11\\\",\\\"1.12\\\",\\\"1.13\\\",\\\"1.14\\\",\\\"1.15\\\",\\\"1.16\\\",\\\"1.17\\\",\\\"1.18\\\",\\\"1.19\\\",\\\"1.2\\\",\\\"1.21\\\",\\\"1.22\\\",\\\"1.23\\\",\\\"1.24\\\",\\\"1.25\\\",\\\"1.26\\\",\\\"1.27\\\",\\\"1.28\\\",\\\"1.29\\\",\\\"1.3\\\",\\\"1.31\\\",\\\"1.32\\\",\\\"1.33\\\",\\\"1.34\\\",\\\"1.35\\\",\\\"1.36\\\",\\\"1.37\\\",\\\"1.38\\\",\\\"1.39\\\",\\\"1.4\\\",\\\"1.41\\\",\\\"1.42\\\",\\\"1.43\\\",\\\"1.44\\\",\\\"1.45\\\",\\\"1.46\\\",\\\"1.47\\\",\\\"1.48\\\",\\\"1.49\\\",\\\"1.5\\\",\\\"1.51\\\",\\\"1.52\\\",\\\"1.53\\\",\\\"1.54\\\",\\\"1.55\\\",\\\"1.56\\\",\\\"1.57\\\",\\\"1.58\\\",\\\"1.59\\\",\\\"1.6\\\",\\\"1.61\\\",\\\"1.62\\\",\\\"1.63\\\",\\\"1.64\\\",\\\"1.65\\\",\\\"1.66\\\",\\\"1.67\\\",\\\"1.68\\\",\\\"1.69\\\",\\\"1.7\\\",\\\"1.71\\\",\\\"1.72\\\",\\\"1.73\\\",\\\"1.74\\\",\\\"1.75\\\",\\\"1.76\\\",\\\"1.77\\\",\\\"1.78\\\",\\\"1.79\\\",\\\"1.8\\\",\\\"1.81\\\",\\\"1.82\\\",\\\"1.83\\\",\\\"1.84\\\",\\\"1.85\\\",\\\"1.86\\\",\\\"1.87\\\",\\\"1.88\\\",\\\"1.89\\\",\\\"1.9\\\",\\\"1.91\\\",\\\"1.92\\\",\\\"1.93\\\",\\\"1.94\\\",\\\"1.95\\\",\\\"1.96\\\",\\\"1.97\\\",\\\"1.98\\\",\\\"1.99\\\",\\\"2.0\\\",\\\"2.01\\\",\\\"2.02\\\",\\\"2.03\\\",\\\"2.04\\\",\\\"2.05\\\",\\\"2.06\\\",\\\"2.07\\\",\\\"2.08\\\",\\\"2.09\\\",\\\"2.1\\\",\\\"2.11\\\",\\\"2.12\\\",\\\"2.13\\\",\\\"2.14\\\",\\\"2.15\\\",\\\"2.16\\\",\\\"2.17\\\",\\\"2.18\\\",\\\"2.19\\\",\\\"2.2\\\",\\\"2.21\\\",\\\"2.22\\\",\\\"2.23\\\",\\\"2.24\\\",\\\"2.25\\\",\\\"2.26\\\",\\\"2.27\\\",\\\"2.28\\\",\\\"2.29\\\",\\\"2.3\\\",\\\"2.31\\\",\\\"2.32\\\",\\\"2.33\\\",\\\"2.34\\\",\\\"2.35\\\",\\\"2.36\\\",\\\"2.37\\\",\\\"2.38\\\",\\\"2.39\\\",\\\"2.4\\\",\\\"2.41\\\",\\\"2.42\\\",\\\"2.43\\\",\\\"2.44\\\",\\\"2.45\\\",\\\"2.46\\\",\\\"2.47\\\",\\\"2.48\\\",\\\"2.49\\\",\\\"2.5\\\",\\\"2.51\\\",\\\"2.52\\\",\\\"2.53\\\",\\\"2.54\\\",\\\"2.55\\\",\\\"2.56\\\",\\\"2.57\\\",\\\"2.58\\\",\\\"2.59\\\",\\\"2.6\\\",\\\"2.61\\\",\\\"2.62\\\",\\\"2.63\\\",\\\"2.64\\\",\\\"2.65\\\",\\\"2.66\\\",\\\"2.67\\\",\\\"2.68\\\",\\\"2.69\\\",\\\"2.7\\\",\\\"2.71\\\",\\\"2.72\\\",\\\"2.73\\\",\\\"2.74\\\",\\\"2.75\\\",\\\"2.76\\\",\\\"2.77\\\",\\\"2.78\\\",\\\"2.79\\\",\\\"2.8\\\",\\\"2.81\\\",\\\"2.82\\\",\\\"2.83\\\",\\\"2.84\\\",\\\"2.85\\\",\\\"2.86\\\",\\\"2.87\\\",\\\"2.88\\\",\\\"2.89\\\",\\\"2.9\\\",\\\"2.91\\\",\\\"2.92\\\",\\\"2.93\\\",\\\"2.94\\\",\\\"2.95\\\",\\\"2.96\\\",\\\"2.97\\\",\\\"2.98\\\",\\\"2.99\\\",\\\"3.0\\\"],\\\"changes\\\":WebIO.getval({\\\"name\\\":\\\"changes\\\",\\\"scope\\\":\\\"12514129453254694312\\\",\\\"id\\\":\\\"ob_18\\\",\\\"type\\\":\\\"observable\\\"}),\\\"index\\\":WebIO.getval({\\\"name\\\":\\\"index\\\",\\\"scope\\\":\\\"12514129453254694312\\\",\\\"id\\\":\\\"ob_17\\\",\\\"type\\\":\\\"observable\\\"})};\\n var self = this;\\n function AppViewModel() {\\n for (var key in json_data) {\\n var el = json_data[key];\\n this[key] = Array.isArray(el) ? ko.observableArray(el) : ko.observable(el);\\n }\\n \\n [this[\\\"formatted_val\\\"]=ko.computed( function(){\\n return this.formatted_vals()[parseInt(this.index())-(1)];\\n }\\n,this)]\\n [this[\\\"changes\\\"].subscribe((function (val){!(this.valueFromJulia[\\\"changes\\\"]) ? (WebIO.setval({\\\"name\\\":\\\"changes\\\",\\\"scope\\\":\\\"12514129453254694312\\\",\\\"id\\\":\\\"ob_18\\\",\\\"type\\\":\\\"observable\\\"},val)) : undefined; return this.valueFromJulia[\\\"changes\\\"]=false}),self),this[\\\"index\\\"].subscribe((function (val){!(this.valueFromJulia[\\\"index\\\"]) ? (WebIO.setval({\\\"name\\\":\\\"index\\\",\\\"scope\\\":\\\"12514129453254694312\\\",\\\"id\\\":\\\"ob_17\\\",\\\"type\\\":\\\"observable\\\"},val)) : undefined; return this.valueFromJulia[\\\"index\\\"]=false}),self)]\\n \\n }\\n self.model = new AppViewModel();\\n self.valueFromJulia = {};\\n for (var key in json_data) {\\n self.valueFromJulia[key] = false;\\n }\\n ko.applyBindings(self.model, self.dom);\\n}\\n);\\n (WebIO.importBlock({\\\"data\\\":[{\\\"name\\\":\\\"knockout\\\",\\\"type\\\":\\\"js\\\",\\\"url\\\":\\\"/assetserver/8a25aee9ab7c0ff01c93039ce56f10fbc64ee308-knockout.js\\\"},{\\\"name\\\":\\\"knockout_punches\\\",\\\"type\\\":\\\"js\\\",\\\"url\\\":\\\"/assetserver/8f7f2f607dcbcd95d4b35a7fe6451252ff6bde8d-knockout_punches.js\\\"}],\\\"type\\\":\\\"async_block\\\"})).then((imports) => handler.apply(this, imports));\\n}\\n\")])], Dict{Symbol,Any}(:className=>\"field interact-widget\")), Node{DOM}(DOM(:html, :div), Any[Scope(Node{DOM}(DOM(:html, :div), Any[Node{DOM}(DOM(:html, :div), Any[Node{DOM}(DOM(:html, :label), Any[\"β\"], Dict{Symbol,Any}(:className=>\"interact \",:style=>Dict{Any,Any}(:padding=>\"5px 10px 0px 10px\")))], Dict{Symbol,Any}(:className=>\"interact-flex-row-left\")), Node{DOM}(DOM(:html, :div), Any[Node{DOM}(DOM(:html, :input), Any[], Dict{Symbol,Any}(:max=>801,:min=>1,:attributes=>Dict{Any,Any}(:type=>\"range\",Symbol(\"data-bind\")=>\"numericValue: index, valueUpdate: 'input', event: {change: function (){this.changes(this.changes()+1)}}\",\"orient\"=>\"horizontal\"),:step=>1,:className=>\"slider slider is-fullwidth\",:style=>Dict{Any,Any}()))], Dict{Symbol,Any}(:className=>\"interact-flex-row-center\")), Node{DOM}(DOM(:html, :div), Any[Node{DOM}(DOM(:html, :p), Any[], Dict{Symbol,Any}(:attributes=>Dict(\"data-bind\"=>\"text: formatted_val\")))], Dict{Symbol,Any}(:className=>\"interact-flex-row-right\"))], Dict{Symbol,Any}(:className=>\"interact-flex-row interact-widget\")), Dict{String,Tuple{Observables.AbstractObservable,Union{Nothing, Bool}}}(\"changes\"=>(Observable{Int64} with 1 listeners. Value:\n", "0, nothing),\"index\"=>(Observable{Any} with 2 listeners. Value:\n", "401, nothing)), Set(String[]), nothing, Asset[Asset(\"js\", \"knockout\", \"/Users/takuizum/.julia/packages/Knockout/1sDlc/src/../assets/knockout.js\"), Asset(\"js\", \"knockout_punches\", \"/Users/takuizum/.julia/packages/Knockout/1sDlc/src/../assets/knockout_punches.js\"), Asset(\"js\", nothing, \"/Users/takuizum/.julia/packages/InteractBase/l8cEC/src/../assets/all.js\"), Asset(\"css\", nothing, \"/Users/takuizum/.julia/packages/InteractBase/l8cEC/src/../assets/style.css\"), Asset(\"css\", nothing, \"/Users/takuizum/.julia/packages/Interact/0klKX/src/../assets/bulma_confined.min.css\")], Dict{Any,Any}(\"changes\"=>Any[JSString(\"(function (val){return (val!=this.model[\\\"changes\\\"]()) ? (this.valueFromJulia[\\\"changes\\\"]=true, this.model[\\\"changes\\\"](val)) : undefined})\")],\"index\"=>Any[JSString(\"(function (val){return (val!=this.model[\\\"index\\\"]()) ? (this.valueFromJulia[\\\"index\\\"]=true, this.model[\\\"index\\\"](val)) : undefined})\")]), ConnectionPool(Channel{Any}(sz_max:9223372036854775807,sz_curr:0), Set(AbstractConnection[]), Channel{AbstractConnection}(sz_max:32,sz_curr:0)), WebIO.JSString[JSString(\"function () {\\n var handler = (function (ko, koPunches) {\\n ko.punches.enableAll();\\n ko.bindingHandlers.numericValue = {\\n init: function(element, valueAccessor, allBindings, data, context) {\\n var stringified = ko.observable(ko.unwrap(valueAccessor()));\\n stringified.subscribe(function(value) {\\n var val = parseFloat(value);\\n if (!isNaN(val)) {\\n valueAccessor()(val);\\n }\\n });\\n valueAccessor().subscribe(function(value) {\\n var str = JSON.stringify(value);\\n if ((str == \\\"0\\\") && ([\\\"-0\\\", \\\"-0.\\\"].indexOf(stringified()) >= 0))\\n return;\\n if ([\\\"null\\\", \\\"\\\"].indexOf(str) >= 0)\\n return;\\n stringified(str);\\n });\\n ko.applyBindingsToNode(\\n element,\\n {\\n value: stringified,\\n valueUpdate: allBindings.get('valueUpdate'),\\n },\\n context,\\n );\\n }\\n };\\n var json_data = {\\\"formatted_vals\\\":[\\\"-4.0\\\",\\\"-3.99\\\",\\\"-3.98\\\",\\\"-3.97\\\",\\\"-3.96\\\",\\\"-3.95\\\",\\\"-3.94\\\",\\\"-3.93\\\",\\\"-3.92\\\",\\\"-3.91\\\",\\\"-3.9\\\",\\\"-3.89\\\",\\\"-3.88\\\",\\\"-3.87\\\",\\\"-3.86\\\",\\\"-3.85\\\",\\\"-3.84\\\",\\\"-3.83\\\",\\\"-3.82\\\",\\\"-3.81\\\",\\\"-3.8\\\",\\\"-3.79\\\",\\\"-3.78\\\",\\\"-3.77\\\",\\\"-3.76\\\",\\\"-3.75\\\",\\\"-3.74\\\",\\\"-3.73\\\",\\\"-3.72\\\",\\\"-3.71\\\",\\\"-3.7\\\",\\\"-3.69\\\",\\\"-3.68\\\",\\\"-3.67\\\",\\\"-3.66\\\",\\\"-3.65\\\",\\\"-3.64\\\",\\\"-3.63\\\",\\\"-3.62\\\",\\\"-3.61\\\",\\\"-3.6\\\",\\\"-3.59\\\",\\\"-3.58\\\",\\\"-3.57\\\",\\\"-3.56\\\",\\\"-3.55\\\",\\\"-3.54\\\",\\\"-3.53\\\",\\\"-3.52\\\",\\\"-3.51\\\",\\\"-3.5\\\",\\\"-3.49\\\",\\\"-3.48\\\",\\\"-3.47\\\",\\\"-3.46\\\",\\\"-3.45\\\",\\\"-3.44\\\",\\\"-3.43\\\",\\\"-3.42\\\",\\\"-3.41\\\",\\\"-3.4\\\",\\\"-3.39\\\",\\\"-3.38\\\",\\\"-3.37\\\",\\\"-3.36\\\",\\\"-3.35\\\",\\\"-3.34\\\",\\\"-3.33\\\",\\\"-3.32\\\",\\\"-3.31\\\",\\\"-3.3\\\",\\\"-3.29\\\",\\\"-3.28\\\",\\\"-3.27\\\",\\\"-3.26\\\",\\\"-3.25\\\",\\\"-3.24\\\",\\\"-3.23\\\",\\\"-3.22\\\",\\\"-3.21\\\",\\\"-3.2\\\",\\\"-3.19\\\",\\\"-3.18\\\",\\\"-3.17\\\",\\\"-3.16\\\",\\\"-3.15\\\",\\\"-3.14\\\",\\\"-3.13\\\",\\\"-3.12\\\",\\\"-3.11\\\",\\\"-3.1\\\",\\\"-3.09\\\",\\\"-3.08\\\",\\\"-3.07\\\",\\\"-3.06\\\",\\\"-3.05\\\",\\\"-3.04\\\",\\\"-3.03\\\",\\\"-3.02\\\",\\\"-3.01\\\",\\\"-3.0\\\",\\\"-2.99\\\",\\\"-2.98\\\",\\\"-2.97\\\",\\\"-2.96\\\",\\\"-2.95\\\",\\\"-2.94\\\",\\\"-2.93\\\",\\\"-2.92\\\",\\\"-2.91\\\",\\\"-2.9\\\",\\\"-2.89\\\",\\\"-2.88\\\",\\\"-2.87\\\",\\\"-2.86\\\",\\\"-2.85\\\",\\\"-2.84\\\",\\\"-2.83\\\",\\\"-2.82\\\",\\\"-2.81\\\",\\\"-2.8\\\",\\\"-2.79\\\",\\\"-2.78\\\",\\\"-2.77\\\",\\\"-2.76\\\",\\\"-2.75\\\",\\\"-2.74\\\",\\\"-2.73\\\",\\\"-2.72\\\",\\\"-2.71\\\",\\\"-2.7\\\",\\\"-2.69\\\",\\\"-2.68\\\",\\\"-2.67\\\",\\\"-2.66\\\",\\\"-2.65\\\",\\\"-2.64\\\",\\\"-2.63\\\",\\\"-2.62\\\",\\\"-2.61\\\",\\\"-2.6\\\",\\\"-2.59\\\",\\\"-2.58\\\",\\\"-2.57\\\",\\\"-2.56\\\",\\\"-2.55\\\",\\\"-2.54\\\",\\\"-2.53\\\",\\\"-2.52\\\",\\\"-2.51\\\",\\\"-2.5\\\",\\\"-2.49\\\",\\\"-2.48\\\",\\\"-2.47\\\",\\\"-2.46\\\",\\\"-2.45\\\",\\\"-2.44\\\",\\\"-2.43\\\",\\\"-2.42\\\",\\\"-2.41\\\",\\\"-2.4\\\",\\\"-2.39\\\",\\\"-2.38\\\",\\\"-2.37\\\",\\\"-2.36\\\",\\\"-2.35\\\",\\\"-2.34\\\",\\\"-2.33\\\",\\\"-2.32\\\",\\\"-2.31\\\",\\\"-2.3\\\",\\\"-2.29\\\",\\\"-2.28\\\",\\\"-2.27\\\",\\\"-2.26\\\",\\\"-2.25\\\",\\\"-2.24\\\",\\\"-2.23\\\",\\\"-2.22\\\",\\\"-2.21\\\",\\\"-2.2\\\",\\\"-2.19\\\",\\\"-2.18\\\",\\\"-2.17\\\",\\\"-2.16\\\",\\\"-2.15\\\",\\\"-2.14\\\",\\\"-2.13\\\",\\\"-2.12\\\",\\\"-2.11\\\",\\\"-2.1\\\",\\\"-2.09\\\",\\\"-2.08\\\",\\\"-2.07\\\",\\\"-2.06\\\",\\\"-2.05\\\",\\\"-2.04\\\",\\\"-2.03\\\",\\\"-2.02\\\",\\\"-2.01\\\",\\\"-2.0\\\",\\\"-1.99\\\",\\\"-1.98\\\",\\\"-1.97\\\",\\\"-1.96\\\",\\\"-1.95\\\",\\\"-1.94\\\",\\\"-1.93\\\",\\\"-1.92\\\",\\\"-1.91\\\",\\\"-1.9\\\",\\\"-1.89\\\",\\\"-1.88\\\",\\\"-1.87\\\",\\\"-1.86\\\",\\\"-1.85\\\",\\\"-1.84\\\",\\\"-1.83\\\",\\\"-1.82\\\",\\\"-1.81\\\",\\\"-1.8\\\",\\\"-1.79\\\",\\\"-1.78\\\",\\\"-1.77\\\",\\\"-1.76\\\",\\\"-1.75\\\",\\\"-1.74\\\",\\\"-1.73\\\",\\\"-1.72\\\",\\\"-1.71\\\",\\\"-1.7\\\",\\\"-1.69\\\",\\\"-1.68\\\",\\\"-1.67\\\",\\\"-1.66\\\",\\\"-1.65\\\",\\\"-1.64\\\",\\\"-1.63\\\",\\\"-1.62\\\",\\\"-1.61\\\",\\\"-1.6\\\",\\\"-1.59\\\",\\\"-1.58\\\",\\\"-1.57\\\",\\\"-1.56\\\",\\\"-1.55\\\",\\\"-1.54\\\",\\\"-1.53\\\",\\\"-1.52\\\",\\\"-1.51\\\",\\\"-1.5\\\",\\\"-1.49\\\",\\\"-1.48\\\",\\\"-1.47\\\",\\\"-1.46\\\",\\\"-1.45\\\",\\\"-1.44\\\",\\\"-1.43\\\",\\\"-1.42\\\",\\\"-1.41\\\",\\\"-1.4\\\",\\\"-1.39\\\",\\\"-1.38\\\",\\\"-1.37\\\",\\\"-1.36\\\",\\\"-1.35\\\",\\\"-1.34\\\",\\\"-1.33\\\",\\\"-1.32\\\",\\\"-1.31\\\",\\\"-1.3\\\",\\\"-1.29\\\",\\\"-1.28\\\",\\\"-1.27\\\",\\\"-1.26\\\",\\\"-1.25\\\",\\\"-1.24\\\",\\\"-1.23\\\",\\\"-1.22\\\",\\\"-1.21\\\",\\\"-1.2\\\",\\\"-1.19\\\",\\\"-1.18\\\",\\\"-1.17\\\",\\\"-1.16\\\",\\\"-1.15\\\",\\\"-1.14\\\",\\\"-1.13\\\",\\\"-1.12\\\",\\\"-1.11\\\",\\\"-1.1\\\",\\\"-1.09\\\",\\\"-1.08\\\",\\\"-1.07\\\",\\\"-1.06\\\",\\\"-1.05\\\",\\\"-1.04\\\",\\\"-1.03\\\",\\\"-1.02\\\",\\\"-1.01\\\",\\\"-1.0\\\",\\\"-0.99\\\",\\\"-0.98\\\",\\\"-0.97\\\",\\\"-0.96\\\",\\\"-0.95\\\",\\\"-0.94\\\",\\\"-0.93\\\",\\\"-0.92\\\",\\\"-0.91\\\",\\\"-0.9\\\",\\\"-0.89\\\",\\\"-0.88\\\",\\\"-0.87\\\",\\\"-0.86\\\",\\\"-0.85\\\",\\\"-0.84\\\",\\\"-0.83\\\",\\\"-0.82\\\",\\\"-0.81\\\",\\\"-0.8\\\",\\\"-0.79\\\",\\\"-0.78\\\",\\\"-0.77\\\",\\\"-0.76\\\",\\\"-0.75\\\",\\\"-0.74\\\",\\\"-0.73\\\",\\\"-0.72\\\",\\\"-0.71\\\",\\\"-0.7\\\",\\\"-0.69\\\",\\\"-0.68\\\",\\\"-0.67\\\",\\\"-0.66\\\",\\\"-0.65\\\",\\\"-0.64\\\",\\\"-0.63\\\",\\\"-0.62\\\",\\\"-0.61\\\",\\\"-0.6\\\",\\\"-0.59\\\",\\\"-0.58\\\",\\\"-0.57\\\",\\\"-0.56\\\",\\\"-0.55\\\",\\\"-0.54\\\",\\\"-0.53\\\",\\\"-0.52\\\",\\\"-0.51\\\",\\\"-0.5\\\",\\\"-0.49\\\",\\\"-0.48\\\",\\\"-0.47\\\",\\\"-0.46\\\",\\\"-0.45\\\",\\\"-0.44\\\",\\\"-0.43\\\",\\\"-0.42\\\",\\\"-0.41\\\",\\\"-0.4\\\",\\\"-0.39\\\",\\\"-0.38\\\",\\\"-0.37\\\",\\\"-0.36\\\",\\\"-0.35\\\",\\\"-0.34\\\",\\\"-0.33\\\",\\\"-0.32\\\",\\\"-0.31\\\",\\\"-0.3\\\",\\\"-0.29\\\",\\\"-0.28\\\",\\\"-0.27\\\",\\\"-0.26\\\",\\\"-0.25\\\",\\\"-0.24\\\",\\\"-0.23\\\",\\\"-0.22\\\",\\\"-0.21\\\",\\\"-0.2\\\",\\\"-0.19\\\",\\\"-0.18\\\",\\\"-0.17\\\",\\\"-0.16\\\",\\\"-0.15\\\",\\\"-0.14\\\",\\\"-0.13\\\",\\\"-0.12\\\",\\\"-0.11\\\",\\\"-0.1\\\",\\\"-0.09\\\",\\\"-0.08\\\",\\\"-0.07\\\",\\\"-0.06\\\",\\\"-0.05\\\",\\\"-0.04\\\",\\\"-0.03\\\",\\\"-0.02\\\",\\\"-0.01\\\",\\\"0.0\\\",\\\"0.01\\\",\\\"0.02\\\",\\\"0.03\\\",\\\"0.04\\\",\\\"0.05\\\",\\\"0.06\\\",\\\"0.07\\\",\\\"0.08\\\",\\\"0.09\\\",\\\"0.1\\\",\\\"0.11\\\",\\\"0.12\\\",\\\"0.13\\\",\\\"0.14\\\",\\\"0.15\\\",\\\"0.16\\\",\\\"0.17\\\",\\\"0.18\\\",\\\"0.19\\\",\\\"0.2\\\",\\\"0.21\\\",\\\"0.22\\\",\\\"0.23\\\",\\\"0.24\\\",\\\"0.25\\\",\\\"0.26\\\",\\\"0.27\\\",\\\"0.28\\\",\\\"0.29\\\",\\\"0.3\\\",\\\"0.31\\\",\\\"0.32\\\",\\\"0.33\\\",\\\"0.34\\\",\\\"0.35\\\",\\\"0.36\\\",\\\"0.37\\\",\\\"0.38\\\",\\\"0.39\\\",\\\"0.4\\\",\\\"0.41\\\",\\\"0.42\\\",\\\"0.43\\\",\\\"0.44\\\",\\\"0.45\\\",\\\"0.46\\\",\\\"0.47\\\",\\\"0.48\\\",\\\"0.49\\\",\\\"0.5\\\",\\\"0.51\\\",\\\"0.52\\\",\\\"0.53\\\",\\\"0.54\\\",\\\"0.55\\\",\\\"0.56\\\",\\\"0.57\\\",\\\"0.58\\\",\\\"0.59\\\",\\\"0.6\\\",\\\"0.61\\\",\\\"0.62\\\",\\\"0.63\\\",\\\"0.64\\\",\\\"0.65\\\",\\\"0.66\\\",\\\"0.67\\\",\\\"0.68\\\",\\\"0.69\\\",\\\"0.7\\\",\\\"0.71\\\",\\\"0.72\\\",\\\"0.73\\\",\\\"0.74\\\",\\\"0.75\\\",\\\"0.76\\\",\\\"0.77\\\",\\\"0.78\\\",\\\"0.79\\\",\\\"0.8\\\",\\\"0.81\\\",\\\"0.82\\\",\\\"0.83\\\",\\\"0.84\\\",\\\"0.85\\\",\\\"0.86\\\",\\\"0.87\\\",\\\"0.88\\\",\\\"0.89\\\",\\\"0.9\\\",\\\"0.91\\\",\\\"0.92\\\",\\\"0.93\\\",\\\"0.94\\\",\\\"0.95\\\",\\\"0.96\\\",\\\"0.97\\\",\\\"0.98\\\",\\\"0.99\\\",\\\"1.0\\\",\\\"1.01\\\",\\\"1.02\\\",\\\"1.03\\\",\\\"1.04\\\",\\\"1.05\\\",\\\"1.06\\\",\\\"1.07\\\",\\\"1.08\\\",\\\"1.09\\\",\\\"1.1\\\",\\\"1.11\\\",\\\"1.12\\\",\\\"1.13\\\",\\\"1.14\\\",\\\"1.15\\\",\\\"1.16\\\",\\\"1.17\\\",\\\"1.18\\\",\\\"1.19\\\",\\\"1.2\\\",\\\"1.21\\\",\\\"1.22\\\",\\\"1.23\\\",\\\"1.24\\\",\\\"1.25\\\",\\\"1.26\\\",\\\"1.27\\\",\\\"1.28\\\",\\\"1.29\\\",\\\"1.3\\\",\\\"1.31\\\",\\\"1.32\\\",\\\"1.33\\\",\\\"1.34\\\",\\\"1.35\\\",\\\"1.36\\\",\\\"1.37\\\",\\\"1.38\\\",\\\"1.39\\\",\\\"1.4\\\",\\\"1.41\\\",\\\"1.42\\\",\\\"1.43\\\",\\\"1.44\\\",\\\"1.45\\\",\\\"1.46\\\",\\\"1.47\\\",\\\"1.48\\\",\\\"1.49\\\",\\\"1.5\\\",\\\"1.51\\\",\\\"1.52\\\",\\\"1.53\\\",\\\"1.54\\\",\\\"1.55\\\",\\\"1.56\\\",\\\"1.57\\\",\\\"1.58\\\",\\\"1.59\\\",\\\"1.6\\\",\\\"1.61\\\",\\\"1.62\\\",\\\"1.63\\\",\\\"1.64\\\",\\\"1.65\\\",\\\"1.66\\\",\\\"1.67\\\",\\\"1.68\\\",\\\"1.69\\\",\\\"1.7\\\",\\\"1.71\\\",\\\"1.72\\\",\\\"1.73\\\",\\\"1.74\\\",\\\"1.75\\\",\\\"1.76\\\",\\\"1.77\\\",\\\"1.78\\\",\\\"1.79\\\",\\\"1.8\\\",\\\"1.81\\\",\\\"1.82\\\",\\\"1.83\\\",\\\"1.84\\\",\\\"1.85\\\",\\\"1.86\\\",\\\"1.87\\\",\\\"1.88\\\",\\\"1.89\\\",\\\"1.9\\\",\\\"1.91\\\",\\\"1.92\\\",\\\"1.93\\\",\\\"1.94\\\",\\\"1.95\\\",\\\"1.96\\\",\\\"1.97\\\",\\\"1.98\\\",\\\"1.99\\\",\\\"2.0\\\",\\\"2.01\\\",\\\"2.02\\\",\\\"2.03\\\",\\\"2.04\\\",\\\"2.05\\\",\\\"2.06\\\",\\\"2.07\\\",\\\"2.08\\\",\\\"2.09\\\",\\\"2.1\\\",\\\"2.11\\\",\\\"2.12\\\",\\\"2.13\\\",\\\"2.14\\\",\\\"2.15\\\",\\\"2.16\\\",\\\"2.17\\\",\\\"2.18\\\",\\\"2.19\\\",\\\"2.2\\\",\\\"2.21\\\",\\\"2.22\\\",\\\"2.23\\\",\\\"2.24\\\",\\\"2.25\\\",\\\"2.26\\\",\\\"2.27\\\",\\\"2.28\\\",\\\"2.29\\\",\\\"2.3\\\",\\\"2.31\\\",\\\"2.32\\\",\\\"2.33\\\",\\\"2.34\\\",\\\"2.35\\\",\\\"2.36\\\",\\\"2.37\\\",\\\"2.38\\\",\\\"2.39\\\",\\\"2.4\\\",\\\"2.41\\\",\\\"2.42\\\",\\\"2.43\\\",\\\"2.44\\\",\\\"2.45\\\",\\\"2.46\\\",\\\"2.47\\\",\\\"2.48\\\",\\\"2.49\\\",\\\"2.5\\\",\\\"2.51\\\",\\\"2.52\\\",\\\"2.53\\\",\\\"2.54\\\",\\\"2.55\\\",\\\"2.56\\\",\\\"2.57\\\",\\\"2.58\\\",\\\"2.59\\\",\\\"2.6\\\",\\\"2.61\\\",\\\"2.62\\\",\\\"2.63\\\",\\\"2.64\\\",\\\"2.65\\\",\\\"2.66\\\",\\\"2.67\\\",\\\"2.68\\\",\\\"2.69\\\",\\\"2.7\\\",\\\"2.71\\\",\\\"2.72\\\",\\\"2.73\\\",\\\"2.74\\\",\\\"2.75\\\",\\\"2.76\\\",\\\"2.77\\\",\\\"2.78\\\",\\\"2.79\\\",\\\"2.8\\\",\\\"2.81\\\",\\\"2.82\\\",\\\"2.83\\\",\\\"2.84\\\",\\\"2.85\\\",\\\"2.86\\\",\\\"2.87\\\",\\\"2.88\\\",\\\"2.89\\\",\\\"2.9\\\",\\\"2.91\\\",\\\"2.92\\\",\\\"2.93\\\",\\\"2.94\\\",\\\"2.95\\\",\\\"2.96\\\",\\\"2.97\\\",\\\"2.98\\\",\\\"2.99\\\",\\\"3.0\\\",\\\"3.01\\\",\\\"3.02\\\",\\\"3.03\\\",\\\"3.04\\\",\\\"3.05\\\",\\\"3.06\\\",\\\"3.07\\\",\\\"3.08\\\",\\\"3.09\\\",\\\"3.1\\\",\\\"3.11\\\",\\\"3.12\\\",\\\"3.13\\\",\\\"3.14\\\",\\\"3.15\\\",\\\"3.16\\\",\\\"3.17\\\",\\\"3.18\\\",\\\"3.19\\\",\\\"3.2\\\",\\\"3.21\\\",\\\"3.22\\\",\\\"3.23\\\",\\\"3.24\\\",\\\"3.25\\\",\\\"3.26\\\",\\\"3.27\\\",\\\"3.28\\\",\\\"3.29\\\",\\\"3.3\\\",\\\"3.31\\\",\\\"3.32\\\",\\\"3.33\\\",\\\"3.34\\\",\\\"3.35\\\",\\\"3.36\\\",\\\"3.37\\\",\\\"3.38\\\",\\\"3.39\\\",\\\"3.4\\\",\\\"3.41\\\",\\\"3.42\\\",\\\"3.43\\\",\\\"3.44\\\",\\\"3.45\\\",\\\"3.46\\\",\\\"3.47\\\",\\\"3.48\\\",\\\"3.49\\\",\\\"3.5\\\",\\\"3.51\\\",\\\"3.52\\\",\\\"3.53\\\",\\\"3.54\\\",\\\"3.55\\\",\\\"3.56\\\",\\\"3.57\\\",\\\"3.58\\\",\\\"3.59\\\",\\\"3.6\\\",\\\"3.61\\\",\\\"3.62\\\",\\\"3.63\\\",\\\"3.64\\\",\\\"3.65\\\",\\\"3.66\\\",\\\"3.67\\\",\\\"3.68\\\",\\\"3.69\\\",\\\"3.7\\\",\\\"3.71\\\",\\\"3.72\\\",\\\"3.73\\\",\\\"3.74\\\",\\\"3.75\\\",\\\"3.76\\\",\\\"3.77\\\",\\\"3.78\\\",\\\"3.79\\\",\\\"3.8\\\",\\\"3.81\\\",\\\"3.82\\\",\\\"3.83\\\",\\\"3.84\\\",\\\"3.85\\\",\\\"3.86\\\",\\\"3.87\\\",\\\"3.88\\\",\\\"3.89\\\",\\\"3.9\\\",\\\"3.91\\\",\\\"3.92\\\",\\\"3.93\\\",\\\"3.94\\\",\\\"3.95\\\",\\\"3.96\\\",\\\"3.97\\\",\\\"3.98\\\",\\\"3.99\\\",\\\"4.0\\\"],\\\"changes\\\":WebIO.getval({\\\"name\\\":\\\"changes\\\",\\\"scope\\\":\\\"13265937592986216686\\\",\\\"id\\\":\\\"ob_21\\\",\\\"type\\\":\\\"observable\\\"}),\\\"index\\\":WebIO.getval({\\\"name\\\":\\\"index\\\",\\\"scope\\\":\\\"13265937592986216686\\\",\\\"id\\\":\\\"ob_20\\\",\\\"type\\\":\\\"observable\\\"})};\\n var self = this;\\n function AppViewModel() {\\n for (var key in json_data) {\\n var el = json_data[key];\\n this[key] = Array.isArray(el) ? ko.observableArray(el) : ko.observable(el);\\n }\\n \\n [this[\\\"formatted_val\\\"]=ko.computed( function(){\\n return this.formatted_vals()[parseInt(this.index())-(1)];\\n }\\n,this)]\\n [this[\\\"changes\\\"].subscribe((function (val){!(this.valueFromJulia[\\\"changes\\\"]) ? (WebIO.setval({\\\"name\\\":\\\"changes\\\",\\\"scope\\\":\\\"13265937592986216686\\\",\\\"id\\\":\\\"ob_21\\\",\\\"type\\\":\\\"observable\\\"},val)) : undefined; return this.valueFromJulia[\\\"changes\\\"]=false}),self),this[\\\"index\\\"].subscribe((function (val){!(this.valueFromJulia[\\\"index\\\"]) ? (WebIO.setval({\\\"name\\\":\\\"index\\\",\\\"scope\\\":\\\"13265937592986216686\\\",\\\"id\\\":\\\"ob_20\\\",\\\"type\\\":\\\"observable\\\"},val)) : undefined; return this.valueFromJulia[\\\"index\\\"]=false}),self)]\\n \\n }\\n self.model = new AppViewModel();\\n self.valueFromJulia = {};\\n for (var key in json_data) {\\n self.valueFromJulia[key] = false;\\n }\\n ko.applyBindings(self.model, self.dom);\\n}\\n);\\n (WebIO.importBlock({\\\"data\\\":[{\\\"name\\\":\\\"knockout\\\",\\\"type\\\":\\\"js\\\",\\\"url\\\":\\\"/assetserver/8a25aee9ab7c0ff01c93039ce56f10fbc64ee308-knockout.js\\\"},{\\\"name\\\":\\\"knockout_punches\\\",\\\"type\\\":\\\"js\\\",\\\"url\\\":\\\"/assetserver/8f7f2f607dcbcd95d4b35a7fe6451252ff6bde8d-knockout_punches.js\\\"}],\\\"type\\\":\\\"async_block\\\"})).then((imports) => handler.apply(this, imports));\\n}\\n\")])], Dict{Symbol,Any}(:className=>\"field interact-widget\")), Node{DOM}(DOM(:html, :div), Any[Scope(Node{DOM}(DOM(:html, :div), Any[Node{DOM}(DOM(:html, :div), Any[Node{DOM}(DOM(:html, :label), Any[\"γ\"], Dict{Symbol,Any}(:className=>\"interact \",:style=>Dict{Any,Any}(:padding=>\"5px 10px 0px 10px\")))], Dict{Symbol,Any}(:className=>\"interact-flex-row-left\")), Node{DOM}(DOM(:html, :div), Any[Node{DOM}(DOM(:html, :input), Any[], Dict{Symbol,Any}(:max=>101,:min=>1,:attributes=>Dict{Any,Any}(:type=>\"range\",Symbol(\"data-bind\")=>\"numericValue: index, valueUpdate: 'input', event: {change: function (){this.changes(this.changes()+1)}}\",\"orient\"=>\"horizontal\"),:step=>1,:className=>\"slider slider is-fullwidth\",:style=>Dict{Any,Any}()))], Dict{Symbol,Any}(:className=>\"interact-flex-row-center\")), Node{DOM}(DOM(:html, :div), Any[Node{DOM}(DOM(:html, :p), Any[], Dict{Symbol,Any}(:attributes=>Dict(\"data-bind\"=>\"text: formatted_val\")))], Dict{Symbol,Any}(:className=>\"interact-flex-row-right\"))], Dict{Symbol,Any}(:className=>\"interact-flex-row interact-widget\")), Dict{String,Tuple{Observables.AbstractObservable,Union{Nothing, Bool}}}(\"changes\"=>(Observable{Int64} with 1 listeners. Value:\n", "0, nothing),\"index\"=>(Observable{Any} with 2 listeners. Value:\n", "51, nothing)), Set(String[]), nothing, Asset[Asset(\"js\", \"knockout\", \"/Users/takuizum/.julia/packages/Knockout/1sDlc/src/../assets/knockout.js\"), Asset(\"js\", \"knockout_punches\", \"/Users/takuizum/.julia/packages/Knockout/1sDlc/src/../assets/knockout_punches.js\"), Asset(\"js\", nothing, \"/Users/takuizum/.julia/packages/InteractBase/l8cEC/src/../assets/all.js\"), Asset(\"css\", nothing, \"/Users/takuizum/.julia/packages/InteractBase/l8cEC/src/../assets/style.css\"), Asset(\"css\", nothing, \"/Users/takuizum/.julia/packages/Interact/0klKX/src/../assets/bulma_confined.min.css\")], Dict{Any,Any}(\"changes\"=>Any[JSString(\"(function (val){return (val!=this.model[\\\"changes\\\"]()) ? (this.valueFromJulia[\\\"changes\\\"]=true, this.model[\\\"changes\\\"](val)) : undefined})\")],\"index\"=>Any[JSString(\"(function (val){return (val!=this.model[\\\"index\\\"]()) ? (this.valueFromJulia[\\\"index\\\"]=true, this.model[\\\"index\\\"](val)) : undefined})\")]), ConnectionPool(Channel{Any}(sz_max:9223372036854775807,sz_curr:0), Set(AbstractConnection[]), Channel{AbstractConnection}(sz_max:32,sz_curr:0)), WebIO.JSString[JSString(\"function () {\\n var handler = (function (ko, koPunches) {\\n ko.punches.enableAll();\\n ko.bindingHandlers.numericValue = {\\n init: function(element, valueAccessor, allBindings, data, context) {\\n var stringified = ko.observable(ko.unwrap(valueAccessor()));\\n stringified.subscribe(function(value) {\\n var val = parseFloat(value);\\n if (!isNaN(val)) {\\n valueAccessor()(val);\\n }\\n });\\n valueAccessor().subscribe(function(value) {\\n var str = JSON.stringify(value);\\n if ((str == \\\"0\\\") && ([\\\"-0\\\", \\\"-0.\\\"].indexOf(stringified()) >= 0))\\n return;\\n if ([\\\"null\\\", \\\"\\\"].indexOf(str) >= 0)\\n return;\\n stringified(str);\\n });\\n ko.applyBindingsToNode(\\n element,\\n {\\n value: stringified,\\n valueUpdate: allBindings.get('valueUpdate'),\\n },\\n context,\\n );\\n }\\n };\\n var json_data = {\\\"formatted_vals\\\":[\\\"0.0\\\",\\\"0.01\\\",\\\"0.02\\\",\\\"0.03\\\",\\\"0.04\\\",\\\"0.05\\\",\\\"0.06\\\",\\\"0.07\\\",\\\"0.08\\\",\\\"0.09\\\",\\\"0.1\\\",\\\"0.11\\\",\\\"0.12\\\",\\\"0.13\\\",\\\"0.14\\\",\\\"0.15\\\",\\\"0.16\\\",\\\"0.17\\\",\\\"0.18\\\",\\\"0.19\\\",\\\"0.2\\\",\\\"0.21\\\",\\\"0.22\\\",\\\"0.23\\\",\\\"0.24\\\",\\\"0.25\\\",\\\"0.26\\\",\\\"0.27\\\",\\\"0.28\\\",\\\"0.29\\\",\\\"0.3\\\",\\\"0.31\\\",\\\"0.32\\\",\\\"0.33\\\",\\\"0.34\\\",\\\"0.35\\\",\\\"0.36\\\",\\\"0.37\\\",\\\"0.38\\\",\\\"0.39\\\",\\\"0.4\\\",\\\"0.41\\\",\\\"0.42\\\",\\\"0.43\\\",\\\"0.44\\\",\\\"0.45\\\",\\\"0.46\\\",\\\"0.47\\\",\\\"0.48\\\",\\\"0.49\\\",\\\"0.5\\\",\\\"0.51\\\",\\\"0.52\\\",\\\"0.53\\\",\\\"0.54\\\",\\\"0.55\\\",\\\"0.56\\\",\\\"0.57\\\",\\\"0.58\\\",\\\"0.59\\\",\\\"0.6\\\",\\\"0.61\\\",\\\"0.62\\\",\\\"0.63\\\",\\\"0.64\\\",\\\"0.65\\\",\\\"0.66\\\",\\\"0.67\\\",\\\"0.68\\\",\\\"0.69\\\",\\\"0.7\\\",\\\"0.71\\\",\\\"0.72\\\",\\\"0.73\\\",\\\"0.74\\\",\\\"0.75\\\",\\\"0.76\\\",\\\"0.77\\\",\\\"0.78\\\",\\\"0.79\\\",\\\"0.8\\\",\\\"0.81\\\",\\\"0.82\\\",\\\"0.83\\\",\\\"0.84\\\",\\\"0.85\\\",\\\"0.86\\\",\\\"0.87\\\",\\\"0.88\\\",\\\"0.89\\\",\\\"0.9\\\",\\\"0.91\\\",\\\"0.92\\\",\\\"0.93\\\",\\\"0.94\\\",\\\"0.95\\\",\\\"0.96\\\",\\\"0.97\\\",\\\"0.98\\\",\\\"0.99\\\",\\\"1.0\\\"],\\\"changes\\\":WebIO.getval({\\\"name\\\":\\\"changes\\\",\\\"scope\\\":\\\"2961590104758986936\\\",\\\"id\\\":\\\"ob_24\\\",\\\"type\\\":\\\"observable\\\"}),\\\"index\\\":WebIO.getval({\\\"name\\\":\\\"index\\\",\\\"scope\\\":\\\"2961590104758986936\\\",\\\"id\\\":\\\"ob_23\\\",\\\"type\\\":\\\"observable\\\"})};\\n var self = this;\\n function AppViewModel() {\\n for (var key in json_data) {\\n var el = json_data[key];\\n this[key] = Array.isArray(el) ? ko.observableArray(el) : ko.observable(el);\\n }\\n \\n [this[\\\"formatted_val\\\"]=ko.computed( function(){\\n return this.formatted_vals()[parseInt(this.index())-(1)];\\n }\\n,this)]\\n [this[\\\"changes\\\"].subscribe((function (val){!(this.valueFromJulia[\\\"changes\\\"]) ? (WebIO.setval({\\\"name\\\":\\\"changes\\\",\\\"scope\\\":\\\"2961590104758986936\\\",\\\"id\\\":\\\"ob_24\\\",\\\"type\\\":\\\"observable\\\"},val)) : undefined; return this.valueFromJulia[\\\"changes\\\"]=false}),self),this[\\\"index\\\"].subscribe((function (val){!(this.valueFromJulia[\\\"index\\\"]) ? (WebIO.setval({\\\"name\\\":\\\"index\\\",\\\"scope\\\":\\\"2961590104758986936\\\",\\\"id\\\":\\\"ob_23\\\",\\\"type\\\":\\\"observable\\\"},val)) : undefined; return this.valueFromJulia[\\\"index\\\"]=false}),self)]\\n \\n }\\n self.model = new AppViewModel();\\n self.valueFromJulia = {};\\n for (var key in json_data) {\\n self.valueFromJulia[key] = false;\\n }\\n ko.applyBindings(self.model, self.dom);\\n}\\n);\\n (WebIO.importBlock({\\\"data\\\":[{\\\"name\\\":\\\"knockout\\\",\\\"type\\\":\\\"js\\\",\\\"url\\\":\\\"/assetserver/8a25aee9ab7c0ff01c93039ce56f10fbc64ee308-knockout.js\\\"},{\\\"name\\\":\\\"knockout_punches\\\",\\\"type\\\":\\\"js\\\",\\\"url\\\":\\\"/assetserver/8f7f2f607dcbcd95d4b35a7fe6451252ff6bde8d-knockout_punches.js\\\"}],\\\"type\\\":\\\"async_block\\\"})).then((imports) => handler.apply(this, imports));\\n}\\n\")])], Dict{Symbol,Any}(:className=>\"field interact-widget\")), Observable{Any} with 0 listeners. Value:\n", "Node{DOM}(DOM(:html, :div), Any[Plot{Plots.GRBackend() n=1}], Dict{Symbol,Any}(:className=>\"interact-flex-row interact-widget\"))], Dict{Symbol,Any}())" ] }, "execution_count": 3, "metadata": { "application/vnd.webio.node+json": { "kernelId": "cdc9a926-8ae0-48da-aaa1-070d8f4064ad" } }, "output_type": "execute_result" } ], "source": [ "using Interact, Plots, StatsFuns, CSSUtil, ORCA\n", "\n", "gr() \n", "@manipulate for α = 0:0.01:3, β = -4:0.01:4, γ = 0:.01:1\n", " θ = [-4:0.001:4;]\n", " prob = γ .+ (1-γ).*logistic.((θ.-β)*α)\n", " plot(θ, prob, \n", " label = \"ICC\", \n", " xlabel = \"theta\", ylabel = \"Correct probability\", \n", " xlims = (-4, 4), ylims = (0, 1))\n", " end" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 等化 (equating) とはなにか\n", "\n", "TOEFLのガイドに戻ってみると,統計的な処理=等化(equating)を行っていると書かれています。この等化とは「異なるテスト得点や問題の難易度を比較可能な形に変換すること」です。等化には大きく二種類あり,素点に基づく等化とIRTに基づく等化があります。\n", "\n", "そして結論から言うと,等化の精度(precison)は,後者のほうが高い場合がほとんどなのです。なぜならIRTは素点よりもより多くの統計的な仮定をしいており,それが成り立つという条件下で非常に柔軟な等化が実現できるからです。この等化の原理についてかんたんに説明します。\n", "\n", "等化の特徴は「線形変換」です。つまり,あるテストのパラメタ$\\beta$を$A\\beta+K$という風に変換することです。あるいは$\\alpha$を$\\frac{1}{A}\\alpha$と変換する事に当たります。等化の作業ではこの$A$と$K$をなんらかの方法で推定します(たとえばテスト間で共通する$\\beta$の平均と標準偏差から推定する)。実はIRTのパラメタは,様々な要因により,完全に同じ項目を異なる集団に実施した場合,異なる数値のパラメタが推定されてしまいます。これでは一見するとパラメタが比較できないようなのですが,このあとで説明する線形変換を利用して,比較可能になるのです。推定方法を説明すると,やや冗長になりますので,ここでは「なぜ線形変換ができるのか」について詳しく説明します。\n", "\n", "IRTの$\\theta$と$\\beta$に関しては以下の性質が成り立ちます。\n", "\n", "$$\n", "\\theta = A\\theta^\\ast+K \\\\\n", "\\beta = A\\beta^\\ast+K\n", "$$\n", "\n", "また,$\\alpha$に関しては,\n", "$$\n", "\\alpha = \\frac{\\alpha^\\ast}{A}\n", "$$\n", "\n", "が成り立ちます。したがって,この3つの変換式を同時に施せば,IRTの反応確率は不変です。" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "application/vnd.webio.node+json": { "children": [ { "children": [ { "children": [ { "children": [ { "children": [ { "children": [ "A" ], "instanceArgs": { "namespace": "html", "tag": "label" }, "nodeType": "DOM", "props": { "className": "interact ", "style": { "padding": "5px 10px 0px 10px" } }, "type": "node" } ], "instanceArgs": { "namespace": "html", "tag": "div" }, "nodeType": "DOM", "props": { "className": "interact-flex-row-left" }, "type": "node" }, { "children": [ { "children": [], "instanceArgs": { "namespace": "html", "tag": "input" }, "nodeType": "DOM", "props": { "attributes": { "data-bind": "numericValue: index, valueUpdate: 'input', event: {change: function (){this.changes(this.changes()+1)}}", "orient": "horizontal", "type": "range" }, "className": "slider slider is-fullwidth", "max": 201, "min": 1, "step": 1, "style": {} }, "type": "node" } ], "instanceArgs": { "namespace": "html", "tag": "div" }, "nodeType": "DOM", "props": { "className": "interact-flex-row-center" }, "type": "node" }, { "children": [ { "children": [], "instanceArgs": { "namespace": "html", "tag": "p" }, "nodeType": "DOM", "props": { "attributes": { "data-bind": "text: formatted_val" } }, "type": "node" } ], "instanceArgs": { "namespace": "html", "tag": "div" }, "nodeType": "DOM", "props": { "className": "interact-flex-row-right" }, "type": "node" } ], "instanceArgs": { "namespace": "html", "tag": "div" }, "nodeType": "DOM", "props": { "className": "interact-flex-row interact-widget" }, "type": "node" } ], "instanceArgs": { "handlers": { "changes": [ "(function (val){return (val!=this.model[\"changes\"]()) ? (this.valueFromJulia[\"changes\"]=true, this.model[\"changes\"](val)) : undefined})" ], "index": [ "(function (val){return (val!=this.model[\"index\"]()) ? (this.valueFromJulia[\"index\"]=true, this.model[\"index\"](val)) : undefined})" ] }, "id": "7871373915107825013", "imports": { "data": [ { "name": "knockout", "type": "js", "url": "/assetserver/8a25aee9ab7c0ff01c93039ce56f10fbc64ee308-knockout.js" }, { "name": "knockout_punches", "type": "js", "url": "/assetserver/8f7f2f607dcbcd95d4b35a7fe6451252ff6bde8d-knockout_punches.js" }, { "name": null, "type": "js", "url": "/assetserver/c73bec8302cc32c0a173062c134a504022cf02a7-all.js" }, { "name": null, "type": "css", "url": "/assetserver/7bc29f863e4ee9845ad2e19b2098119edc97fe62-style.css" }, { "name": null, "type": "css", "url": "/assetserver/377f32d1aec4fee67d3bbbed169304a486146cb6-bulma_confined.min.css" } ], "type": "async_block" }, "mount_callbacks": [ "function () {\n var handler = (function (ko, koPunches) {\n ko.punches.enableAll();\n ko.bindingHandlers.numericValue = {\n init: function(element, valueAccessor, allBindings, data, context) {\n var stringified = ko.observable(ko.unwrap(valueAccessor()));\n stringified.subscribe(function(value) {\n var val = parseFloat(value);\n if (!isNaN(val)) {\n valueAccessor()(val);\n }\n });\n valueAccessor().subscribe(function(value) {\n var str = JSON.stringify(value);\n if ((str == \"0\") && ([\"-0\", \"-0.\"].indexOf(stringified()) >= 0))\n return;\n if ([\"null\", \"\"].indexOf(str) >= 0)\n return;\n stringified(str);\n });\n ko.applyBindingsToNode(\n element,\n {\n value: stringified,\n valueUpdate: allBindings.get('valueUpdate'),\n },\n context,\n );\n }\n };\n var json_data = {\"formatted_vals\":[\"-10.0\",\"-9.9\",\"-9.8\",\"-9.7\",\"-9.6\",\"-9.5\",\"-9.4\",\"-9.3\",\"-9.2\",\"-9.1\",\"-9.0\",\"-8.9\",\"-8.8\",\"-8.7\",\"-8.6\",\"-8.5\",\"-8.4\",\"-8.3\",\"-8.2\",\"-8.1\",\"-8.0\",\"-7.9\",\"-7.8\",\"-7.7\",\"-7.6\",\"-7.5\",\"-7.4\",\"-7.3\",\"-7.2\",\"-7.1\",\"-7.0\",\"-6.9\",\"-6.8\",\"-6.7\",\"-6.6\",\"-6.5\",\"-6.4\",\"-6.3\",\"-6.2\",\"-6.1\",\"-6.0\",\"-5.9\",\"-5.8\",\"-5.7\",\"-5.6\",\"-5.5\",\"-5.4\",\"-5.3\",\"-5.2\",\"-5.1\",\"-5.0\",\"-4.9\",\"-4.8\",\"-4.7\",\"-4.6\",\"-4.5\",\"-4.4\",\"-4.3\",\"-4.2\",\"-4.1\",\"-4.0\",\"-3.9\",\"-3.8\",\"-3.7\",\"-3.6\",\"-3.5\",\"-3.4\",\"-3.3\",\"-3.2\",\"-3.1\",\"-3.0\",\"-2.9\",\"-2.8\",\"-2.7\",\"-2.6\",\"-2.5\",\"-2.4\",\"-2.3\",\"-2.2\",\"-2.1\",\"-2.0\",\"-1.9\",\"-1.8\",\"-1.7\",\"-1.6\",\"-1.5\",\"-1.4\",\"-1.3\",\"-1.2\",\"-1.1\",\"-1.0\",\"-0.9\",\"-0.8\",\"-0.7\",\"-0.6\",\"-0.5\",\"-0.4\",\"-0.3\",\"-0.2\",\"-0.1\",\"0.0\",\"0.1\",\"0.2\",\"0.3\",\"0.4\",\"0.5\",\"0.6\",\"0.7\",\"0.8\",\"0.9\",\"1.0\",\"1.1\",\"1.2\",\"1.3\",\"1.4\",\"1.5\",\"1.6\",\"1.7\",\"1.8\",\"1.9\",\"2.0\",\"2.1\",\"2.2\",\"2.3\",\"2.4\",\"2.5\",\"2.6\",\"2.7\",\"2.8\",\"2.9\",\"3.0\",\"3.1\",\"3.2\",\"3.3\",\"3.4\",\"3.5\",\"3.6\",\"3.7\",\"3.8\",\"3.9\",\"4.0\",\"4.1\",\"4.2\",\"4.3\",\"4.4\",\"4.5\",\"4.6\",\"4.7\",\"4.8\",\"4.9\",\"5.0\",\"5.1\",\"5.2\",\"5.3\",\"5.4\",\"5.5\",\"5.6\",\"5.7\",\"5.8\",\"5.9\",\"6.0\",\"6.1\",\"6.2\",\"6.3\",\"6.4\",\"6.5\",\"6.6\",\"6.7\",\"6.8\",\"6.9\",\"7.0\",\"7.1\",\"7.2\",\"7.3\",\"7.4\",\"7.5\",\"7.6\",\"7.7\",\"7.8\",\"7.9\",\"8.0\",\"8.1\",\"8.2\",\"8.3\",\"8.4\",\"8.5\",\"8.6\",\"8.7\",\"8.8\",\"8.9\",\"9.0\",\"9.1\",\"9.2\",\"9.3\",\"9.4\",\"9.5\",\"9.6\",\"9.7\",\"9.8\",\"9.9\",\"10.0\"],\"changes\":WebIO.getval({\"name\":\"changes\",\"scope\":\"7871373915107825013\",\"id\":\"ob_33\",\"type\":\"observable\"}),\"index\":WebIO.getval({\"name\":\"index\",\"scope\":\"7871373915107825013\",\"id\":\"ob_32\",\"type\":\"observable\"})};\n var self = this;\n function AppViewModel() {\n for (var key in json_data) {\n var el = json_data[key];\n this[key] = Array.isArray(el) ? ko.observableArray(el) : ko.observable(el);\n }\n \n [this[\"formatted_val\"]=ko.computed( function(){\n return this.formatted_vals()[parseInt(this.index())-(1)];\n }\n,this)]\n [this[\"changes\"].subscribe((function (val){!(this.valueFromJulia[\"changes\"]) ? (WebIO.setval({\"name\":\"changes\",\"scope\":\"7871373915107825013\",\"id\":\"ob_33\",\"type\":\"observable\"},val)) : undefined; return this.valueFromJulia[\"changes\"]=false}),self),this[\"index\"].subscribe((function (val){!(this.valueFromJulia[\"index\"]) ? (WebIO.setval({\"name\":\"index\",\"scope\":\"7871373915107825013\",\"id\":\"ob_32\",\"type\":\"observable\"},val)) : undefined; return this.valueFromJulia[\"index\"]=false}),self)]\n \n }\n self.model = new AppViewModel();\n self.valueFromJulia = {};\n for (var key in json_data) {\n self.valueFromJulia[key] = false;\n }\n ko.applyBindings(self.model, self.dom);\n}\n);\n (WebIO.importBlock({\"data\":[{\"name\":\"knockout\",\"type\":\"js\",\"url\":\"/assetserver/8a25aee9ab7c0ff01c93039ce56f10fbc64ee308-knockout.js\"},{\"name\":\"knockout_punches\",\"type\":\"js\",\"url\":\"/assetserver/8f7f2f607dcbcd95d4b35a7fe6451252ff6bde8d-knockout_punches.js\"}],\"type\":\"async_block\"})).then((imports) => handler.apply(this, imports));\n}\n" ], "observables": { "changes": { "id": "ob_33", "sync": false, "value": 0 }, "index": { "id": "ob_32", "sync": true, "value": 101 } }, "systemjs_options": null }, "nodeType": "Scope", "props": {}, "type": "node" } ], "instanceArgs": { "namespace": "html", "tag": "div" }, "nodeType": "DOM", "props": { "className": "field interact-widget" }, "type": "node" }, { "children": [ { "children": [ { "children": [ { "children": [ { "children": [ "K" ], "instanceArgs": { "namespace": "html", "tag": "label" }, "nodeType": "DOM", "props": { "className": "interact ", "style": { "padding": "5px 10px 0px 10px" } }, "type": "node" } ], "instanceArgs": { "namespace": "html", "tag": "div" }, "nodeType": "DOM", "props": { "className": "interact-flex-row-left" }, "type": "node" }, { "children": [ { "children": [], "instanceArgs": { "namespace": "html", "tag": "input" }, "nodeType": "DOM", "props": { "attributes": { "data-bind": "numericValue: index, valueUpdate: 'input', event: {change: function (){this.changes(this.changes()+1)}}", "orient": "horizontal", "type": "range" }, "className": "slider slider is-fullwidth", "max": 201, "min": 1, "step": 1, "style": {} }, "type": "node" } ], "instanceArgs": { "namespace": "html", "tag": "div" }, "nodeType": "DOM", "props": { "className": "interact-flex-row-center" }, "type": "node" }, { "children": [ { "children": [], "instanceArgs": { "namespace": "html", "tag": "p" }, "nodeType": "DOM", "props": { "attributes": { "data-bind": "text: formatted_val" } }, "type": "node" } ], "instanceArgs": { "namespace": "html", "tag": "div" }, "nodeType": "DOM", "props": { "className": "interact-flex-row-right" }, "type": "node" } ], "instanceArgs": { "namespace": "html", "tag": "div" }, "nodeType": "DOM", "props": { "className": "interact-flex-row interact-widget" }, "type": "node" } ], "instanceArgs": { "handlers": { "changes": [ "(function (val){return (val!=this.model[\"changes\"]()) ? (this.valueFromJulia[\"changes\"]=true, this.model[\"changes\"](val)) : undefined})" ], "index": [ "(function (val){return (val!=this.model[\"index\"]()) ? (this.valueFromJulia[\"index\"]=true, this.model[\"index\"](val)) : undefined})" ] }, "id": "4545837303132847482", "imports": { "data": [ { "name": "knockout", "type": "js", "url": "/assetserver/8a25aee9ab7c0ff01c93039ce56f10fbc64ee308-knockout.js" }, { "name": "knockout_punches", "type": "js", "url": "/assetserver/8f7f2f607dcbcd95d4b35a7fe6451252ff6bde8d-knockout_punches.js" }, { "name": null, "type": "js", "url": "/assetserver/c73bec8302cc32c0a173062c134a504022cf02a7-all.js" }, { "name": null, "type": "css", "url": "/assetserver/7bc29f863e4ee9845ad2e19b2098119edc97fe62-style.css" }, { "name": null, "type": "css", "url": "/assetserver/377f32d1aec4fee67d3bbbed169304a486146cb6-bulma_confined.min.css" } ], "type": "async_block" }, "mount_callbacks": [ "function () {\n var handler = (function (ko, koPunches) {\n ko.punches.enableAll();\n ko.bindingHandlers.numericValue = {\n init: function(element, valueAccessor, allBindings, data, context) {\n var stringified = ko.observable(ko.unwrap(valueAccessor()));\n stringified.subscribe(function(value) {\n var val = parseFloat(value);\n if (!isNaN(val)) {\n valueAccessor()(val);\n }\n });\n valueAccessor().subscribe(function(value) {\n var str = JSON.stringify(value);\n if ((str == \"0\") && ([\"-0\", \"-0.\"].indexOf(stringified()) >= 0))\n return;\n if ([\"null\", \"\"].indexOf(str) >= 0)\n return;\n stringified(str);\n });\n ko.applyBindingsToNode(\n element,\n {\n value: stringified,\n valueUpdate: allBindings.get('valueUpdate'),\n },\n context,\n );\n }\n };\n var json_data = {\"formatted_vals\":[\"-10.0\",\"-9.9\",\"-9.8\",\"-9.7\",\"-9.6\",\"-9.5\",\"-9.4\",\"-9.3\",\"-9.2\",\"-9.1\",\"-9.0\",\"-8.9\",\"-8.8\",\"-8.7\",\"-8.6\",\"-8.5\",\"-8.4\",\"-8.3\",\"-8.2\",\"-8.1\",\"-8.0\",\"-7.9\",\"-7.8\",\"-7.7\",\"-7.6\",\"-7.5\",\"-7.4\",\"-7.3\",\"-7.2\",\"-7.1\",\"-7.0\",\"-6.9\",\"-6.8\",\"-6.7\",\"-6.6\",\"-6.5\",\"-6.4\",\"-6.3\",\"-6.2\",\"-6.1\",\"-6.0\",\"-5.9\",\"-5.8\",\"-5.7\",\"-5.6\",\"-5.5\",\"-5.4\",\"-5.3\",\"-5.2\",\"-5.1\",\"-5.0\",\"-4.9\",\"-4.8\",\"-4.7\",\"-4.6\",\"-4.5\",\"-4.4\",\"-4.3\",\"-4.2\",\"-4.1\",\"-4.0\",\"-3.9\",\"-3.8\",\"-3.7\",\"-3.6\",\"-3.5\",\"-3.4\",\"-3.3\",\"-3.2\",\"-3.1\",\"-3.0\",\"-2.9\",\"-2.8\",\"-2.7\",\"-2.6\",\"-2.5\",\"-2.4\",\"-2.3\",\"-2.2\",\"-2.1\",\"-2.0\",\"-1.9\",\"-1.8\",\"-1.7\",\"-1.6\",\"-1.5\",\"-1.4\",\"-1.3\",\"-1.2\",\"-1.1\",\"-1.0\",\"-0.9\",\"-0.8\",\"-0.7\",\"-0.6\",\"-0.5\",\"-0.4\",\"-0.3\",\"-0.2\",\"-0.1\",\"0.0\",\"0.1\",\"0.2\",\"0.3\",\"0.4\",\"0.5\",\"0.6\",\"0.7\",\"0.8\",\"0.9\",\"1.0\",\"1.1\",\"1.2\",\"1.3\",\"1.4\",\"1.5\",\"1.6\",\"1.7\",\"1.8\",\"1.9\",\"2.0\",\"2.1\",\"2.2\",\"2.3\",\"2.4\",\"2.5\",\"2.6\",\"2.7\",\"2.8\",\"2.9\",\"3.0\",\"3.1\",\"3.2\",\"3.3\",\"3.4\",\"3.5\",\"3.6\",\"3.7\",\"3.8\",\"3.9\",\"4.0\",\"4.1\",\"4.2\",\"4.3\",\"4.4\",\"4.5\",\"4.6\",\"4.7\",\"4.8\",\"4.9\",\"5.0\",\"5.1\",\"5.2\",\"5.3\",\"5.4\",\"5.5\",\"5.6\",\"5.7\",\"5.8\",\"5.9\",\"6.0\",\"6.1\",\"6.2\",\"6.3\",\"6.4\",\"6.5\",\"6.6\",\"6.7\",\"6.8\",\"6.9\",\"7.0\",\"7.1\",\"7.2\",\"7.3\",\"7.4\",\"7.5\",\"7.6\",\"7.7\",\"7.8\",\"7.9\",\"8.0\",\"8.1\",\"8.2\",\"8.3\",\"8.4\",\"8.5\",\"8.6\",\"8.7\",\"8.8\",\"8.9\",\"9.0\",\"9.1\",\"9.2\",\"9.3\",\"9.4\",\"9.5\",\"9.6\",\"9.7\",\"9.8\",\"9.9\",\"10.0\"],\"changes\":WebIO.getval({\"name\":\"changes\",\"scope\":\"4545837303132847482\",\"id\":\"ob_36\",\"type\":\"observable\"}),\"index\":WebIO.getval({\"name\":\"index\",\"scope\":\"4545837303132847482\",\"id\":\"ob_35\",\"type\":\"observable\"})};\n var self = this;\n function AppViewModel() {\n for (var key in json_data) {\n var el = json_data[key];\n this[key] = Array.isArray(el) ? ko.observableArray(el) : ko.observable(el);\n }\n \n [this[\"formatted_val\"]=ko.computed( function(){\n return this.formatted_vals()[parseInt(this.index())-(1)];\n }\n,this)]\n [this[\"changes\"].subscribe((function (val){!(this.valueFromJulia[\"changes\"]) ? (WebIO.setval({\"name\":\"changes\",\"scope\":\"4545837303132847482\",\"id\":\"ob_36\",\"type\":\"observable\"},val)) : undefined; return this.valueFromJulia[\"changes\"]=false}),self),this[\"index\"].subscribe((function (val){!(this.valueFromJulia[\"index\"]) ? (WebIO.setval({\"name\":\"index\",\"scope\":\"4545837303132847482\",\"id\":\"ob_35\",\"type\":\"observable\"},val)) : undefined; return this.valueFromJulia[\"index\"]=false}),self)]\n \n }\n self.model = new AppViewModel();\n self.valueFromJulia = {};\n for (var key in json_data) {\n self.valueFromJulia[key] = false;\n }\n ko.applyBindings(self.model, self.dom);\n}\n);\n (WebIO.importBlock({\"data\":[{\"name\":\"knockout\",\"type\":\"js\",\"url\":\"/assetserver/8a25aee9ab7c0ff01c93039ce56f10fbc64ee308-knockout.js\"},{\"name\":\"knockout_punches\",\"type\":\"js\",\"url\":\"/assetserver/8f7f2f607dcbcd95d4b35a7fe6451252ff6bde8d-knockout_punches.js\"}],\"type\":\"async_block\"})).then((imports) => handler.apply(this, imports));\n}\n" ], "observables": { "changes": { "id": "ob_36", "sync": false, "value": 0 }, "index": { "id": "ob_35", "sync": true, "value": 101 } }, "systemjs_options": null }, "nodeType": "Scope", "props": {}, "type": "node" } ], "instanceArgs": { "namespace": "html", "tag": "div" }, "nodeType": "DOM", "props": { "className": "field interact-widget" }, "type": "node" }, { "children": [ { "children": [], "instanceArgs": { "id": "ob_42", "name": "obs-node" }, "nodeType": "ObservableNode", "props": {}, "type": "node" } ], "instanceArgs": { "handlers": {}, "id": "16628620995017519939", "imports": { "data": [], "type": "async_block" }, "mount_callbacks": [], "observables": { "obs-node": { "id": "ob_42", "sync": false, "value": { "children": [ { "children": [], "instanceArgs": { "namespace": "html", "tag": "div" }, "nodeType": "DOM", "props": { "setInnerHtml": "\n\n\n \n \n \n\n\n\n \n \n \n\n\n\n \n \n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n-4\n\n\n-2\n\n\n0\n\n\n2\n\n\n4\n\n\n0.0\n\n\n0.2\n\n\n0.4\n\n\n0.6\n\n\n0.8\n\n\n1.0\n\n\ntheta\n\n\nCorrect probability\n\n\n\n\n\nICC\n\n\n" }, "type": "node" } ], "instanceArgs": { "namespace": "html", "tag": "div" }, "nodeType": "DOM", "props": { "className": "interact-flex-row interact-widget" }, "type": "node" } } }, "systemjs_options": null }, "nodeType": "Scope", "props": {}, "type": "node" } ], "instanceArgs": { "namespace": "html", "tag": "div" }, "nodeType": "DOM", "props": {}, "type": "node" }, "text/html": [ "\n", " \n", "\n" ], "text/plain": [ "Node{WebIO.DOM}(WebIO.DOM(:html, :div), Any[Node{DOM}(DOM(:html, :div), Any[Scope(Node{DOM}(DOM(:html, :div), Any[Node{DOM}(DOM(:html, :div), Any[Node{DOM}(DOM(:html, :label), Any[\"A\"], Dict{Symbol,Any}(:className=>\"interact \",:style=>Dict{Any,Any}(:padding=>\"5px 10px 0px 10px\")))], Dict{Symbol,Any}(:className=>\"interact-flex-row-left\")), Node{DOM}(DOM(:html, :div), Any[Node{DOM}(DOM(:html, :input), Any[], Dict{Symbol,Any}(:max=>201,:min=>1,:attributes=>Dict{Any,Any}(:type=>\"range\",Symbol(\"data-bind\")=>\"numericValue: index, valueUpdate: 'input', event: {change: function (){this.changes(this.changes()+1)}}\",\"orient\"=>\"horizontal\"),:step=>1,:className=>\"slider slider is-fullwidth\",:style=>Dict{Any,Any}()))], Dict{Symbol,Any}(:className=>\"interact-flex-row-center\")), Node{DOM}(DOM(:html, :div), Any[Node{DOM}(DOM(:html, :p), Any[], Dict{Symbol,Any}(:attributes=>Dict(\"data-bind\"=>\"text: formatted_val\")))], Dict{Symbol,Any}(:className=>\"interact-flex-row-right\"))], Dict{Symbol,Any}(:className=>\"interact-flex-row interact-widget\")), Dict{String,Tuple{Observables.AbstractObservable,Union{Nothing, Bool}}}(\"changes\"=>(Observable{Int64} with 1 listeners. Value:\n", "0, nothing),\"index\"=>(Observable{Any} with 2 listeners. Value:\n", "101, nothing)), Set(String[]), nothing, Asset[Asset(\"js\", \"knockout\", \"/Users/takuizum/.julia/packages/Knockout/1sDlc/src/../assets/knockout.js\"), Asset(\"js\", \"knockout_punches\", \"/Users/takuizum/.julia/packages/Knockout/1sDlc/src/../assets/knockout_punches.js\"), Asset(\"js\", nothing, \"/Users/takuizum/.julia/packages/InteractBase/l8cEC/src/../assets/all.js\"), Asset(\"css\", nothing, \"/Users/takuizum/.julia/packages/InteractBase/l8cEC/src/../assets/style.css\"), Asset(\"css\", nothing, \"/Users/takuizum/.julia/packages/Interact/0klKX/src/../assets/bulma_confined.min.css\")], Dict{Any,Any}(\"changes\"=>Any[JSString(\"(function (val){return (val!=this.model[\\\"changes\\\"]()) ? (this.valueFromJulia[\\\"changes\\\"]=true, this.model[\\\"changes\\\"](val)) : undefined})\")],\"index\"=>Any[JSString(\"(function (val){return (val!=this.model[\\\"index\\\"]()) ? (this.valueFromJulia[\\\"index\\\"]=true, this.model[\\\"index\\\"](val)) : undefined})\")]), ConnectionPool(Channel{Any}(sz_max:9223372036854775807,sz_curr:0), Set(AbstractConnection[]), Channel{AbstractConnection}(sz_max:32,sz_curr:0)), WebIO.JSString[JSString(\"function () {\\n var handler = (function (ko, koPunches) {\\n ko.punches.enableAll();\\n ko.bindingHandlers.numericValue = {\\n init: function(element, valueAccessor, allBindings, data, context) {\\n var stringified = ko.observable(ko.unwrap(valueAccessor()));\\n stringified.subscribe(function(value) {\\n var val = parseFloat(value);\\n if (!isNaN(val)) {\\n valueAccessor()(val);\\n }\\n });\\n valueAccessor().subscribe(function(value) {\\n var str = JSON.stringify(value);\\n if ((str == \\\"0\\\") && ([\\\"-0\\\", \\\"-0.\\\"].indexOf(stringified()) >= 0))\\n return;\\n if ([\\\"null\\\", \\\"\\\"].indexOf(str) >= 0)\\n return;\\n stringified(str);\\n });\\n ko.applyBindingsToNode(\\n element,\\n {\\n value: stringified,\\n valueUpdate: allBindings.get('valueUpdate'),\\n },\\n context,\\n );\\n }\\n };\\n var json_data = {\\\"formatted_vals\\\":[\\\"-10.0\\\",\\\"-9.9\\\",\\\"-9.8\\\",\\\"-9.7\\\",\\\"-9.6\\\",\\\"-9.5\\\",\\\"-9.4\\\",\\\"-9.3\\\",\\\"-9.2\\\",\\\"-9.1\\\",\\\"-9.0\\\",\\\"-8.9\\\",\\\"-8.8\\\",\\\"-8.7\\\",\\\"-8.6\\\",\\\"-8.5\\\",\\\"-8.4\\\",\\\"-8.3\\\",\\\"-8.2\\\",\\\"-8.1\\\",\\\"-8.0\\\",\\\"-7.9\\\",\\\"-7.8\\\",\\\"-7.7\\\",\\\"-7.6\\\",\\\"-7.5\\\",\\\"-7.4\\\",\\\"-7.3\\\",\\\"-7.2\\\",\\\"-7.1\\\",\\\"-7.0\\\",\\\"-6.9\\\",\\\"-6.8\\\",\\\"-6.7\\\",\\\"-6.6\\\",\\\"-6.5\\\",\\\"-6.4\\\",\\\"-6.3\\\",\\\"-6.2\\\",\\\"-6.1\\\",\\\"-6.0\\\",\\\"-5.9\\\",\\\"-5.8\\\",\\\"-5.7\\\",\\\"-5.6\\\",\\\"-5.5\\\",\\\"-5.4\\\",\\\"-5.3\\\",\\\"-5.2\\\",\\\"-5.1\\\",\\\"-5.0\\\",\\\"-4.9\\\",\\\"-4.8\\\",\\\"-4.7\\\",\\\"-4.6\\\",\\\"-4.5\\\",\\\"-4.4\\\",\\\"-4.3\\\",\\\"-4.2\\\",\\\"-4.1\\\",\\\"-4.0\\\",\\\"-3.9\\\",\\\"-3.8\\\",\\\"-3.7\\\",\\\"-3.6\\\",\\\"-3.5\\\",\\\"-3.4\\\",\\\"-3.3\\\",\\\"-3.2\\\",\\\"-3.1\\\",\\\"-3.0\\\",\\\"-2.9\\\",\\\"-2.8\\\",\\\"-2.7\\\",\\\"-2.6\\\",\\\"-2.5\\\",\\\"-2.4\\\",\\\"-2.3\\\",\\\"-2.2\\\",\\\"-2.1\\\",\\\"-2.0\\\",\\\"-1.9\\\",\\\"-1.8\\\",\\\"-1.7\\\",\\\"-1.6\\\",\\\"-1.5\\\",\\\"-1.4\\\",\\\"-1.3\\\",\\\"-1.2\\\",\\\"-1.1\\\",\\\"-1.0\\\",\\\"-0.9\\\",\\\"-0.8\\\",\\\"-0.7\\\",\\\"-0.6\\\",\\\"-0.5\\\",\\\"-0.4\\\",\\\"-0.3\\\",\\\"-0.2\\\",\\\"-0.1\\\",\\\"0.0\\\",\\\"0.1\\\",\\\"0.2\\\",\\\"0.3\\\",\\\"0.4\\\",\\\"0.5\\\",\\\"0.6\\\",\\\"0.7\\\",\\\"0.8\\\",\\\"0.9\\\",\\\"1.0\\\",\\\"1.1\\\",\\\"1.2\\\",\\\"1.3\\\",\\\"1.4\\\",\\\"1.5\\\",\\\"1.6\\\",\\\"1.7\\\",\\\"1.8\\\",\\\"1.9\\\",\\\"2.0\\\",\\\"2.1\\\",\\\"2.2\\\",\\\"2.3\\\",\\\"2.4\\\",\\\"2.5\\\",\\\"2.6\\\",\\\"2.7\\\",\\\"2.8\\\",\\\"2.9\\\",\\\"3.0\\\",\\\"3.1\\\",\\\"3.2\\\",\\\"3.3\\\",\\\"3.4\\\",\\\"3.5\\\",\\\"3.6\\\",\\\"3.7\\\",\\\"3.8\\\",\\\"3.9\\\",\\\"4.0\\\",\\\"4.1\\\",\\\"4.2\\\",\\\"4.3\\\",\\\"4.4\\\",\\\"4.5\\\",\\\"4.6\\\",\\\"4.7\\\",\\\"4.8\\\",\\\"4.9\\\",\\\"5.0\\\",\\\"5.1\\\",\\\"5.2\\\",\\\"5.3\\\",\\\"5.4\\\",\\\"5.5\\\",\\\"5.6\\\",\\\"5.7\\\",\\\"5.8\\\",\\\"5.9\\\",\\\"6.0\\\",\\\"6.1\\\",\\\"6.2\\\",\\\"6.3\\\",\\\"6.4\\\",\\\"6.5\\\",\\\"6.6\\\",\\\"6.7\\\",\\\"6.8\\\",\\\"6.9\\\",\\\"7.0\\\",\\\"7.1\\\",\\\"7.2\\\",\\\"7.3\\\",\\\"7.4\\\",\\\"7.5\\\",\\\"7.6\\\",\\\"7.7\\\",\\\"7.8\\\",\\\"7.9\\\",\\\"8.0\\\",\\\"8.1\\\",\\\"8.2\\\",\\\"8.3\\\",\\\"8.4\\\",\\\"8.5\\\",\\\"8.6\\\",\\\"8.7\\\",\\\"8.8\\\",\\\"8.9\\\",\\\"9.0\\\",\\\"9.1\\\",\\\"9.2\\\",\\\"9.3\\\",\\\"9.4\\\",\\\"9.5\\\",\\\"9.6\\\",\\\"9.7\\\",\\\"9.8\\\",\\\"9.9\\\",\\\"10.0\\\"],\\\"changes\\\":WebIO.getval({\\\"name\\\":\\\"changes\\\",\\\"scope\\\":\\\"7871373915107825013\\\",\\\"id\\\":\\\"ob_33\\\",\\\"type\\\":\\\"observable\\\"}),\\\"index\\\":WebIO.getval({\\\"name\\\":\\\"index\\\",\\\"scope\\\":\\\"7871373915107825013\\\",\\\"id\\\":\\\"ob_32\\\",\\\"type\\\":\\\"observable\\\"})};\\n var self = this;\\n function AppViewModel() {\\n for (var key in json_data) {\\n var el = json_data[key];\\n this[key] = Array.isArray(el) ? ko.observableArray(el) : ko.observable(el);\\n }\\n \\n [this[\\\"formatted_val\\\"]=ko.computed( function(){\\n return this.formatted_vals()[parseInt(this.index())-(1)];\\n }\\n,this)]\\n [this[\\\"changes\\\"].subscribe((function (val){!(this.valueFromJulia[\\\"changes\\\"]) ? (WebIO.setval({\\\"name\\\":\\\"changes\\\",\\\"scope\\\":\\\"7871373915107825013\\\",\\\"id\\\":\\\"ob_33\\\",\\\"type\\\":\\\"observable\\\"},val)) : undefined; return this.valueFromJulia[\\\"changes\\\"]=false}),self),this[\\\"index\\\"].subscribe((function (val){!(this.valueFromJulia[\\\"index\\\"]) ? (WebIO.setval({\\\"name\\\":\\\"index\\\",\\\"scope\\\":\\\"7871373915107825013\\\",\\\"id\\\":\\\"ob_32\\\",\\\"type\\\":\\\"observable\\\"},val)) : undefined; return this.valueFromJulia[\\\"index\\\"]=false}),self)]\\n \\n }\\n self.model = new AppViewModel();\\n self.valueFromJulia = {};\\n for (var key in json_data) {\\n self.valueFromJulia[key] = false;\\n }\\n ko.applyBindings(self.model, self.dom);\\n}\\n);\\n (WebIO.importBlock({\\\"data\\\":[{\\\"name\\\":\\\"knockout\\\",\\\"type\\\":\\\"js\\\",\\\"url\\\":\\\"/assetserver/8a25aee9ab7c0ff01c93039ce56f10fbc64ee308-knockout.js\\\"},{\\\"name\\\":\\\"knockout_punches\\\",\\\"type\\\":\\\"js\\\",\\\"url\\\":\\\"/assetserver/8f7f2f607dcbcd95d4b35a7fe6451252ff6bde8d-knockout_punches.js\\\"}],\\\"type\\\":\\\"async_block\\\"})).then((imports) => handler.apply(this, imports));\\n}\\n\")])], Dict{Symbol,Any}(:className=>\"field interact-widget\")), Node{DOM}(DOM(:html, :div), Any[Scope(Node{DOM}(DOM(:html, :div), Any[Node{DOM}(DOM(:html, :div), Any[Node{DOM}(DOM(:html, :label), Any[\"K\"], Dict{Symbol,Any}(:className=>\"interact \",:style=>Dict{Any,Any}(:padding=>\"5px 10px 0px 10px\")))], Dict{Symbol,Any}(:className=>\"interact-flex-row-left\")), Node{DOM}(DOM(:html, :div), Any[Node{DOM}(DOM(:html, :input), Any[], Dict{Symbol,Any}(:max=>201,:min=>1,:attributes=>Dict{Any,Any}(:type=>\"range\",Symbol(\"data-bind\")=>\"numericValue: index, valueUpdate: 'input', event: {change: function (){this.changes(this.changes()+1)}}\",\"orient\"=>\"horizontal\"),:step=>1,:className=>\"slider slider is-fullwidth\",:style=>Dict{Any,Any}()))], Dict{Symbol,Any}(:className=>\"interact-flex-row-center\")), Node{DOM}(DOM(:html, :div), Any[Node{DOM}(DOM(:html, :p), Any[], Dict{Symbol,Any}(:attributes=>Dict(\"data-bind\"=>\"text: formatted_val\")))], Dict{Symbol,Any}(:className=>\"interact-flex-row-right\"))], Dict{Symbol,Any}(:className=>\"interact-flex-row interact-widget\")), Dict{String,Tuple{Observables.AbstractObservable,Union{Nothing, Bool}}}(\"changes\"=>(Observable{Int64} with 1 listeners. Value:\n", "0, nothing),\"index\"=>(Observable{Any} with 2 listeners. Value:\n", "101, nothing)), Set(String[]), nothing, Asset[Asset(\"js\", \"knockout\", \"/Users/takuizum/.julia/packages/Knockout/1sDlc/src/../assets/knockout.js\"), Asset(\"js\", \"knockout_punches\", \"/Users/takuizum/.julia/packages/Knockout/1sDlc/src/../assets/knockout_punches.js\"), Asset(\"js\", nothing, \"/Users/takuizum/.julia/packages/InteractBase/l8cEC/src/../assets/all.js\"), Asset(\"css\", nothing, \"/Users/takuizum/.julia/packages/InteractBase/l8cEC/src/../assets/style.css\"), Asset(\"css\", nothing, \"/Users/takuizum/.julia/packages/Interact/0klKX/src/../assets/bulma_confined.min.css\")], Dict{Any,Any}(\"changes\"=>Any[JSString(\"(function (val){return (val!=this.model[\\\"changes\\\"]()) ? (this.valueFromJulia[\\\"changes\\\"]=true, this.model[\\\"changes\\\"](val)) : undefined})\")],\"index\"=>Any[JSString(\"(function (val){return (val!=this.model[\\\"index\\\"]()) ? (this.valueFromJulia[\\\"index\\\"]=true, this.model[\\\"index\\\"](val)) : undefined})\")]), ConnectionPool(Channel{Any}(sz_max:9223372036854775807,sz_curr:0), Set(AbstractConnection[]), Channel{AbstractConnection}(sz_max:32,sz_curr:0)), WebIO.JSString[JSString(\"function () {\\n var handler = (function (ko, koPunches) {\\n ko.punches.enableAll();\\n ko.bindingHandlers.numericValue = {\\n init: function(element, valueAccessor, allBindings, data, context) {\\n var stringified = ko.observable(ko.unwrap(valueAccessor()));\\n stringified.subscribe(function(value) {\\n var val = parseFloat(value);\\n if (!isNaN(val)) {\\n valueAccessor()(val);\\n }\\n });\\n valueAccessor().subscribe(function(value) {\\n var str = JSON.stringify(value);\\n if ((str == \\\"0\\\") && ([\\\"-0\\\", \\\"-0.\\\"].indexOf(stringified()) >= 0))\\n return;\\n if ([\\\"null\\\", \\\"\\\"].indexOf(str) >= 0)\\n return;\\n stringified(str);\\n });\\n ko.applyBindingsToNode(\\n element,\\n {\\n value: stringified,\\n valueUpdate: allBindings.get('valueUpdate'),\\n },\\n context,\\n );\\n }\\n };\\n var json_data = {\\\"formatted_vals\\\":[\\\"-10.0\\\",\\\"-9.9\\\",\\\"-9.8\\\",\\\"-9.7\\\",\\\"-9.6\\\",\\\"-9.5\\\",\\\"-9.4\\\",\\\"-9.3\\\",\\\"-9.2\\\",\\\"-9.1\\\",\\\"-9.0\\\",\\\"-8.9\\\",\\\"-8.8\\\",\\\"-8.7\\\",\\\"-8.6\\\",\\\"-8.5\\\",\\\"-8.4\\\",\\\"-8.3\\\",\\\"-8.2\\\",\\\"-8.1\\\",\\\"-8.0\\\",\\\"-7.9\\\",\\\"-7.8\\\",\\\"-7.7\\\",\\\"-7.6\\\",\\\"-7.5\\\",\\\"-7.4\\\",\\\"-7.3\\\",\\\"-7.2\\\",\\\"-7.1\\\",\\\"-7.0\\\",\\\"-6.9\\\",\\\"-6.8\\\",\\\"-6.7\\\",\\\"-6.6\\\",\\\"-6.5\\\",\\\"-6.4\\\",\\\"-6.3\\\",\\\"-6.2\\\",\\\"-6.1\\\",\\\"-6.0\\\",\\\"-5.9\\\",\\\"-5.8\\\",\\\"-5.7\\\",\\\"-5.6\\\",\\\"-5.5\\\",\\\"-5.4\\\",\\\"-5.3\\\",\\\"-5.2\\\",\\\"-5.1\\\",\\\"-5.0\\\",\\\"-4.9\\\",\\\"-4.8\\\",\\\"-4.7\\\",\\\"-4.6\\\",\\\"-4.5\\\",\\\"-4.4\\\",\\\"-4.3\\\",\\\"-4.2\\\",\\\"-4.1\\\",\\\"-4.0\\\",\\\"-3.9\\\",\\\"-3.8\\\",\\\"-3.7\\\",\\\"-3.6\\\",\\\"-3.5\\\",\\\"-3.4\\\",\\\"-3.3\\\",\\\"-3.2\\\",\\\"-3.1\\\",\\\"-3.0\\\",\\\"-2.9\\\",\\\"-2.8\\\",\\\"-2.7\\\",\\\"-2.6\\\",\\\"-2.5\\\",\\\"-2.4\\\",\\\"-2.3\\\",\\\"-2.2\\\",\\\"-2.1\\\",\\\"-2.0\\\",\\\"-1.9\\\",\\\"-1.8\\\",\\\"-1.7\\\",\\\"-1.6\\\",\\\"-1.5\\\",\\\"-1.4\\\",\\\"-1.3\\\",\\\"-1.2\\\",\\\"-1.1\\\",\\\"-1.0\\\",\\\"-0.9\\\",\\\"-0.8\\\",\\\"-0.7\\\",\\\"-0.6\\\",\\\"-0.5\\\",\\\"-0.4\\\",\\\"-0.3\\\",\\\"-0.2\\\",\\\"-0.1\\\",\\\"0.0\\\",\\\"0.1\\\",\\\"0.2\\\",\\\"0.3\\\",\\\"0.4\\\",\\\"0.5\\\",\\\"0.6\\\",\\\"0.7\\\",\\\"0.8\\\",\\\"0.9\\\",\\\"1.0\\\",\\\"1.1\\\",\\\"1.2\\\",\\\"1.3\\\",\\\"1.4\\\",\\\"1.5\\\",\\\"1.6\\\",\\\"1.7\\\",\\\"1.8\\\",\\\"1.9\\\",\\\"2.0\\\",\\\"2.1\\\",\\\"2.2\\\",\\\"2.3\\\",\\\"2.4\\\",\\\"2.5\\\",\\\"2.6\\\",\\\"2.7\\\",\\\"2.8\\\",\\\"2.9\\\",\\\"3.0\\\",\\\"3.1\\\",\\\"3.2\\\",\\\"3.3\\\",\\\"3.4\\\",\\\"3.5\\\",\\\"3.6\\\",\\\"3.7\\\",\\\"3.8\\\",\\\"3.9\\\",\\\"4.0\\\",\\\"4.1\\\",\\\"4.2\\\",\\\"4.3\\\",\\\"4.4\\\",\\\"4.5\\\",\\\"4.6\\\",\\\"4.7\\\",\\\"4.8\\\",\\\"4.9\\\",\\\"5.0\\\",\\\"5.1\\\",\\\"5.2\\\",\\\"5.3\\\",\\\"5.4\\\",\\\"5.5\\\",\\\"5.6\\\",\\\"5.7\\\",\\\"5.8\\\",\\\"5.9\\\",\\\"6.0\\\",\\\"6.1\\\",\\\"6.2\\\",\\\"6.3\\\",\\\"6.4\\\",\\\"6.5\\\",\\\"6.6\\\",\\\"6.7\\\",\\\"6.8\\\",\\\"6.9\\\",\\\"7.0\\\",\\\"7.1\\\",\\\"7.2\\\",\\\"7.3\\\",\\\"7.4\\\",\\\"7.5\\\",\\\"7.6\\\",\\\"7.7\\\",\\\"7.8\\\",\\\"7.9\\\",\\\"8.0\\\",\\\"8.1\\\",\\\"8.2\\\",\\\"8.3\\\",\\\"8.4\\\",\\\"8.5\\\",\\\"8.6\\\",\\\"8.7\\\",\\\"8.8\\\",\\\"8.9\\\",\\\"9.0\\\",\\\"9.1\\\",\\\"9.2\\\",\\\"9.3\\\",\\\"9.4\\\",\\\"9.5\\\",\\\"9.6\\\",\\\"9.7\\\",\\\"9.8\\\",\\\"9.9\\\",\\\"10.0\\\"],\\\"changes\\\":WebIO.getval({\\\"name\\\":\\\"changes\\\",\\\"scope\\\":\\\"4545837303132847482\\\",\\\"id\\\":\\\"ob_36\\\",\\\"type\\\":\\\"observable\\\"}),\\\"index\\\":WebIO.getval({\\\"name\\\":\\\"index\\\",\\\"scope\\\":\\\"4545837303132847482\\\",\\\"id\\\":\\\"ob_35\\\",\\\"type\\\":\\\"observable\\\"})};\\n var self = this;\\n function AppViewModel() {\\n for (var key in json_data) {\\n var el = json_data[key];\\n this[key] = Array.isArray(el) ? ko.observableArray(el) : ko.observable(el);\\n }\\n \\n [this[\\\"formatted_val\\\"]=ko.computed( function(){\\n return this.formatted_vals()[parseInt(this.index())-(1)];\\n }\\n,this)]\\n [this[\\\"changes\\\"].subscribe((function (val){!(this.valueFromJulia[\\\"changes\\\"]) ? (WebIO.setval({\\\"name\\\":\\\"changes\\\",\\\"scope\\\":\\\"4545837303132847482\\\",\\\"id\\\":\\\"ob_36\\\",\\\"type\\\":\\\"observable\\\"},val)) : undefined; return this.valueFromJulia[\\\"changes\\\"]=false}),self),this[\\\"index\\\"].subscribe((function (val){!(this.valueFromJulia[\\\"index\\\"]) ? (WebIO.setval({\\\"name\\\":\\\"index\\\",\\\"scope\\\":\\\"4545837303132847482\\\",\\\"id\\\":\\\"ob_35\\\",\\\"type\\\":\\\"observable\\\"},val)) : undefined; return this.valueFromJulia[\\\"index\\\"]=false}),self)]\\n \\n }\\n self.model = new AppViewModel();\\n self.valueFromJulia = {};\\n for (var key in json_data) {\\n self.valueFromJulia[key] = false;\\n }\\n ko.applyBindings(self.model, self.dom);\\n}\\n);\\n (WebIO.importBlock({\\\"data\\\":[{\\\"name\\\":\\\"knockout\\\",\\\"type\\\":\\\"js\\\",\\\"url\\\":\\\"/assetserver/8a25aee9ab7c0ff01c93039ce56f10fbc64ee308-knockout.js\\\"},{\\\"name\\\":\\\"knockout_punches\\\",\\\"type\\\":\\\"js\\\",\\\"url\\\":\\\"/assetserver/8f7f2f607dcbcd95d4b35a7fe6451252ff6bde8d-knockout_punches.js\\\"}],\\\"type\\\":\\\"async_block\\\"})).then((imports) => handler.apply(this, imports));\\n}\\n\")])], Dict{Symbol,Any}(:className=>\"field interact-widget\")), Observable{Any} with 0 listeners. Value:\n", "Node{DOM}(DOM(:html, :div), Any[Plot{Plots.GRBackend() n=1}], Dict{Symbol,Any}(:className=>\"interact-flex-row interact-widget\"))], Dict{Symbol,Any}())" ] }, "execution_count": 4, "metadata": { "application/vnd.webio.node+json": { "kernelId": "cdc9a926-8ae0-48da-aaa1-070d8f4064ad" } }, "output_type": "execute_result" } ], "source": [ "gr() \n", "@manipulate for A = -10:0.1:10, K = -10:0.1:10\n", " θ = [-4:0.001:4;]\n", " α = 1\n", " β = 1\n", " γ = 0\n", " prob = γ .+ (1-γ).*logistic.(( (θ*A.+K) .- (β*A.+K)).*α./A)\n", " plot(θ, prob,\n", " label = \"ICC\",\n", " xlabel = \"theta\", ylabel = \"Correct probability\",\n", " xlims = (-4, 4), ylims = (0, 1))\n", " end\n", "# 最初にAのスライダーを少し動かさないと関数が表示されません。" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "上のプロットでは,先ほどの式変形をいろんなAとKで行って見た場合を実演できます。どんな組み合わせであってもICCは不変な様子がわかると思います。\n", "\n", "したがって,テストAとテストBの一部に同じテスト項目が少数(たとえば10項目)含まれていれば,それらのパラメタをもとにAとKを計算し,残りの共通しない項目を線形変換することで,**理論上は**2つのテストのパラメタを完全に同じパラメタに変換できるのです。\n", "\n", "## ヒトはなぜIRTを使うのか 〜それって素点じゃだめなんですか?〜\n", "\n", "なぜややこしい計算をして,$\\theta$なんてスコアに換算する必要があるのでしょうか。それは素点が抱える項目依存性に大きく関係しています。" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "@webio": { "lastCommId": "0c72795b1ee94d909c3a5a540932b97d", "lastKernelId": "cdc9a926-8ae0-48da-aaa1-070d8f4064ad" }, "kernelspec": { "display_name": "Julia 1.1.0", "language": "julia", "name": "julia-1.1" }, "language_info": { "file_extension": ".jl", "mimetype": "application/julia", "name": "julia", "version": "1.1.0" } }, "nbformat": 4, "nbformat_minor": 2 }