PageSourceSearch

https://brain-viz.web.app/static/js/main.8c469219.chunk.js

js brain-viz.web.app collected 2026-10-03 12:18:47 UTC 21,432 bytes, 2 lines download raw bytes

1(this["webpackJsonpbrain-viz"]=this["webpackJsonpbrain-viz"]||[]).push([[0],{166:function(e,t,n){},168:function(e,t,n){},287:function(e,t,n){"use strict";n.r(t);var a=n(6),i=n(1),s=n.n(i),r=n(41),o=n.n(r),c=(n(166),n(167),n(168),n(24)),l=n.n(c),d=n(106),u=n(28),h=n(2),p=n(8),g=n(4),m=n(5),b=n(0),y=n(147),f=n(148),j=n(149),v=n.n(j),x=function(e){var t=new v.a;return new Promise((function(n,a){t.load(e,(function(e){return n(e)}),null,a)}))},w=n(304),S=n(307),O=n(152),k=n(301),C=n.p+"static/media/mni_coordinates.3fe06488.npy",A=n.p+"static/media/dcnn_layer.9f16b49b.npy",P=n.p+"static/media/neural_responses_all_lfp.ab630573.npy",F=n.p+"static/media/neural_responses_ctg_lfp.5b1d4503.npy",N=n.p+"static/media/predictive.0d72bc9f.npy",I=n(174),M=[14,15,16,17,18,19,20,21,22,23,24,65,66,67,68,69,70,71,72,73,74,85,86,87,88,97,98,99,105,106,107,108,109,110,111,112,113,116,121,122,123,124,462,463,587,617,1213,1223,1225,2329,2330,2331,2332,2333,2334,2942,2985,2994,3243,3244,3266,3433,3449,3450,3457,3458,3459,3495,3496,3497,3560,3561,3562,3563,3564,3570,3571,3572,3573,3864,3865,3912,3913,3923,3924,3939,3944,3945,3946,3947,3948,3949,4069,4070,4084,4192,4217,4643,4651,4656,4657,4668,4703,4815,4816,4817,5008,5010,5032,5033,5034,5035,5036,5037,5137,5138,5183,5255,5288,5289,5291,5296,5297,5298,5323,6052,6281,6282,6283,6284,6301,6341,6342,6352,6353,6943,6944,6945,6946,6947,7360,7545,7733,7737,7739,7784,7880,7882,7883,8446,8455,8507,9217,9850,10162,10493,10494,10495,10661,10700,10719,10975,10976,10981,11060,11079,11085,11113,11116,11214,11215,11216,11270,11271,10246,6174,8228,6210,6211,6212,6213,6218,8268,8269,10360,6265,10361,10362,10363,10369,2187,6285,6286,146,147,148,4255,4256,4257,4258,4259,4260,4261,10437,10438,10439,6354,4309,4310,4311,4312,4313,4314,4315,4316,10453,10454,10455,10510,10511,10512,10524,10525,10526,10527,10528,10529,2354,8522,331,8523,2385,2386,8537,2393,2394,2395,2396,2397,2401,2402,2403,356,357,358,2404,2405,2406,2407,2408,2409,2410,2411,10605,10606,10611,10618,9852,9853,424,425,436,437,438,439,440,8630,8637,8638,446,447,448,449,450,451,452,453,454,8639,6607,6652,2559,8715,8716,8717,8718,8719,8731,10794,10795,10796,10797,10798,10799,568,10835,6740,6741,2648,8792,8793,8794,8795,8796,6763,10865,10866,631,10872,10873,4732,4733,2689,2690,2691,2692,10883,10884,4743,10885,10886,10887,2701,2702,6799,10895,10896,10897,10898,10899,10900,10901,10903,10904,10902,6810,8859,8862,10912,10913,8868,8869,8878,6832,6833,4787,4788,10931,10932,8890,6843,8891,8892,8894,8895,8900,8901,2758,8906,8907,2764,8908,8909,8910,8911,8912,8913,8914,8932,6908,6909,6910,6911,6912,780,781,2852,2853,8999,2856,2857,2859,2860,2861,2862,2863,11057,9051,9052,9053,9054,9055,9056,9057,9059,9079,7063,939,7096,5058,5059,964,5060,5061,971,972,977,978,979,980,990,991,992,996,7141,7142,1004,1018,1019,1020,1021,3078,3079,3080,9254,9255,9275,3161,9330,1145,1146,1147,1148,5251,9393,9394,9395,9396,9419,9420,9421,5324,9425,9461,9462,9463,7430,5399,5400,1343,1344,1345,1346,1347,1348,9552,9564,9565,1375,3434,3435,9579,1391,9585,9586,9587,9588,9589,9590,9591,9592,9593,9594,9595,9596,1401,1402,1403,1404,1405,3451,9597,9599,3469,3470,9623,3494,3499,7601,3506,5563,3574,5654,1560,1561,1562,1563,1564,1565,1566,1567,1568,1569,1570,3656,3657,3658,3659,3660,3663,1620,7769,7770,7771,3685,3686,3697,3698,1657,1658,9851,1659,1660,1661,1662,9856,1663,1664,1665,1666,1667,7812,9854,9855,3721,9857,9858,9859,9860,9861,9862,9863,9864,9865,9869,9870,9871,9876,9877,9878,9879,9880,9881,9882,9883,9884,9885,9886,9887,9888,9889,9890,9891,9892,9893,9894,9895,9896,9897,9898,9899,9900,9901,9902,9903,5810,9904,9905,9906,9907,5840,5841,9936,9937,3796,9938,9941,9942,9943,7925,7978,7996,7997,7998,1893,1897,10097,1919,1927,1928,1929,1930,1931,10121,10133,10134,10135,10142,10143,10144,10147,10150,10151,10169,10170,2005,2019,8173,8174,2042,6209,5698,7778,7687,10924,4653,2190,7502,2771,3191,3928,5790,392,393,394,395,396,400,411,412,413,414,415,416,421,422,423,705,706,707,708,709,710,711,712,713,714,715,716,717,718,719,720,721,722,723,724,725,726,727,728,729,730,731,732,733,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,2313,2314,9248,9249,9250,9251,9252,9253,9258,9259,9260,9261,9262,9263,9264,9265,9266,9267,9268,9273,9274,9280,9281,9282,9283,9284,9285,9286,9287,9288,9289,9290,9291,9292,9293,9294,10554,11272,11273,11274,11275,11276,11277,11278,11279,11280,11281,11282,11283,11284,11285,11286,11287,11288,11289,11290,11291,11292],z=47,L=function(e){var t=e.shape,n=e.data;return I.array(Object.values(n)).reshape(t)},D=n(303),T=n(302),q=n(153),_=n(305),B=n(306),V=n(117),U=n(118),H=n.n(U),R=Object(a.jsx)(H.a,{linkTarget:"_blank",className:"textAligned",children:'Multiple neural locations react to an image being shown, but it appears that only a small portion of them carries the information that is relevant to re
1cognizing the object on the image *(for details, see Kuzovkin et al., "[Identifying task-relevant spectral signatures of perceptual categorization in the human cortex](https://www.nature.com/articles/s41598-020-64243-6)", Scientific Reports, 2020)*. We call such probes "predictive".\n'}),G=Object(a.jsx)(H.a,{linkTarget:"_blank",className:"textAligned",children:'In addition to time and opacity, the controls also allow you to assign the color of the probes based either on the increase (red) or decrease (blue) of the activity with respect to the baseline, or to set the colors based on an assignation of electrodes\' activity to layers of a Deep Convolutional Neural Network *(lower layers in blue, higher in layers in red, for details, see Kuzovkin et al., "[Activations of deep convolutional neural networks are aligned with gamma band activity of human visual cortex](https://www.nature.com/articles/s42003-018-0110-y)", Communications Biology, 2018)*'}),E=["Houses","Faces","Animals","Scenery","Tools","Pseudoword","Characters","Noise"].map((function(e,t){return{key:e,text:e,value:t.toString()}})),W=function(e){var t=e.hooks,n=e.displaySettings,s=e.active;return Object(a.jsxs)(i.Fragment,{children:[Object(a.jsx)(D.a,{style:{width:"100%",paddingBottom:"2rem",paddingLeft:"1rem",textAlign:"left"},toggle:!0,label:"Sub-select stimulus image category",onChange:t.subSelectImg,checked:n.subSelectImgChecked}),s&&Object(a.jsx)(S.a,{columns:4,style:{margin:"0.5rem"},children:E.map((function(e){var i=e.key,s=e.text,r=e.value;return Object(a.jsx)(O.a,{width:4,style:{padding:"0rem"},children:Object(a.jsxs)(T.a,{style:{padding:"0rem"},fluid:!0,positive:n.subSelectImage===r,onClick:function(){return t.toggleSubSelectImg(r)},children:[Object(a.jsx)(q.a,{src:"sprites/".concat(s,".jpg")}),Object(a.jsx)("p",{children:s})]})},i)}))}),s&&R,s&&Object(a.jsx)(D.a,{toggle:!0,label:"Show only predictive probes",onChange:t.togglePredictiveProbes,checked:n.onlyPredictiveProbes})]})},J=function(e){var t,n=e.displaySettings,s=e.playing,r=e.hooks,o=e.updateMoment,c=e.slider,l=e.brainOpacity;return n&&r?Object(a.jsxs)(i.Fragment,{children:[Object(a.jsx)("p",{style:{textAlign:"left"},children:"This visualization allows to you to interactively explore human brain data recorded with deep intracranial probes (electrodes, implanted inside test subjects' brains as shown on the x-ray image below) across 100 human subjects.\n"}),Object(a.jsx)("img",{src:"xray.png",width:"100%",alt:"X-ray image of electrodes within a brain"}),Object(a.jsx)("p",{style:{textAlign:"left"},children:'As you progress through time (using the "Time" slider) you will see how how the activity changes, especially in response to a stimulus (an image) being shown at the 0 ms time mark.\n'}),Object(a.jsx)("p",{style:{textAlign:"left"},children:"You can choose the shown stimulus image category, the neural reaction to which you would like to explore:\n"}),Object(a.jsx)(_.a,{vertical:!0,children:Object(a.jsx)(W,{active:n.subSelectImgChecked,hooks:r,displaySettings:n})}),G,Object(a.jsxs)(_.a,{vertical:!0,children:[Object(a.jsx)(D.a,{radio:!0,label:"Color-code in accordance with the change in activity",style:{paddingLeft:"1rem",width:"100%",textAlign:"left"},onChange:r.toggleColorCode,checked:!n.colorCoded}),Object(a.jsx)(D.a,{radio:!0,label:"Color-code the probes to reflect complexity of visual representations based on DCNN mapping",style:{paddingLeft:"1rem",width:"100%",textAlign:"left"},onChange:r.toggleColorCode,checked:n.colorCoded})]}),Object(a.jsxs)(_.a,{vertical:!0,children:[Object(a.jsxs)(B.a,{children:["Time: ",(t=n.moment,"".concat((t/47*1500-500).toFixed(2),"ms"))]}),Object(a.jsx)(V.Slider,{ref:function(e){return c=e},value:n.moment,discrete:!0,color:"red",settings:{start:0,min:0,max:z,step:1,onChange:o}}),Object(a.jsxs)(T.a.Group,{children:[Object(a.jsx)(T.a,{disabled:s,labelPosition:"left",icon:"left chevron",content:"Previous",onClick:r.timeBackward}),Object(a.jsx)(T.a,{icon:s?"pause":"play",content:s?"Pause":"Play",onClick:r.togglePlayPause}),Object(a.jsx)(T.a,{icon:"undo",content:"Reset",onClick:function(){r.resetTime(),c.setState({position:0})}}),Object(a.jsx)(T.a,{disabled:s,labelPosition:"right",icon:"right chevron",content:"Next",onClick:r.timeForward})]})]}),Object(a.jsxs)(_.a,{vertical:!0,children:[Object(a.jsxs)(B.a,{children:["Brain opacity: ",l]}),Object(a.jsx)(V.Slider,{value:l,color:"red",settings:{start:.4,min:0,max:1,step:.
1025,onChange:r.updateBrainOpacity}})]}),Object(a.jsx)("br",{}),Object(a.jsx)("p",{style:{textAlign:"left"},children:"Implemented by Fedor Stomakhin, Siim Parring and Hain Zuppur as a part of the Computer Graphics course at the Institute of Computer Science of University of Tartu, 2020"})]}):Object(a.jsx)("div",{})},Y=function(e){return Object(a.jsxs)(i.Fragment,{children:[Object(a.jsx)(B.a,{as:"h1",content:"Human Brain Activity",floated:"left",subheader:"Recorded with implanted intracranial electrodes while looking at natural images",style:{margin:"10px"}}),Object(a.jsx)("a",{href:"http://www.neuro.cs.ut.ee",target:"_blank",rel:"noreferrer noopener",children:Object(a.jsx)("img",{src:"CompNeurosciLogo.png",height:80,alt:"UT Computational Neuroscience department logo"})}),Object(a.jsx)("a",{href:"http://www.ut.ee",target:"_blank",rel:"noreferrer noopener",children:Object(a.jsx)("img",{src:"UOTLogo.png",height:80,alt:"Tartu University logo"})})]})},Z={height:750},K=1e4/z,X=["#25219E","#23479B","#2C5BA7","#00B7EC","#48C69B","#A7D316","#FFD100","#FF5F17","#E61A26"].map((function(e){var t=function(e){var t=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(e);return t?{r:parseInt(t[1],16),g:parseInt(t[2],16),b:parseInt(t[3],16)}:null}(e);return[parseFloat(t.r)/255,parseFloat(t.g)/255,parseFloat(t.b)/255]})),$=(new b.qb).load("sprites/disc.png"),Q=new b.O,ee=function(e){Object(g.a)(n,e);var t=Object(m.a)(n);function n(){var e;Object(h.a)(this,n);for(var a=arguments.length,s=new Array(a),r=0;r<a;r++)s[r]=arguments[r];return(e=t.call.apply(t,[this].concat(s))).contextRef=Object(i.createRef)(),e.state={brainData:[]},e.startAnimationLoop=function(){var t=e.state.clock&&e.state.clock.getDelta();e.renderer.render(e.scene,e.camera),!e.state.clock.running&&e.state.playing&&e.state.clock.start(),e.state.clock.running&&!e.state.playing&&e.state.clock.stop(),e.state.displaySettings.moment>=z&&e.state.clock.running?(e.hooks.togglePlayPause(),e.state.clock.stop()):e.state.clock.running&&e.state.playing&&e.updateMoment(e.state.displaySettings.moment+1e3*t/K),e.requestID=window.requestAnimationFrame(e.startAnimationLoop)},e.handleWindowResize=function(){var t=e.el.clientWidth,n=e.el.clientHeight;e.renderer.setSize(t,n),e.camera.aspect=t/n,e.camera.updateProjectionMatrix()},e.hooks={subSelectImg:function(){e.setState((function(e){return{displaySettings:Object(u.a)(Object(u.a)({},e.displaySettings),{},{subSelectImgChecked:!e.displaySettings.subSelectImgChecked})}}))},togglePredictiveProbes:function(){e.setState((function(e){return{displaySettings:Object(u.a)(Object(u.a)({},e.displaySettings),{},{onlyPredictiveProbes:!e.displaySettings.onlyPredictiveProbes})}}))},toggleHighGammaFrq:function(){e.setState((function(e){return{displaySettings:Object(u.a)(Object(u.a)({},e.displaySettings),{},{highGammaFrq:!e.displaySettings.highGammaFrq})}}))},toggleSubSelectImg:function(t){e.setState((function(e){return{displaySettings:Object(u.a)(Object(u.a)({},e.displaySettings),{},{subSelectImage:e.displaySettings.subSelectImage===t?"":t})}}))},toggleColorCode:function(){e.setState((function(e){return{displaySettings:Object(u.a)(Object(u.a)({},e.displaySettings),{},{colorCoded:!e.displaySettings.colorCoded})}}))},timeForward:function(){e.state.displaySettings.moment!==z&&e.updateMoment(e.state.displaySettings.moment+1),e.state.displaySettings.moment===z&&e.setState({playing:!1})},timeBackward:function(){0!==e.state.displaySettings.moment&&e.updateMoment(e.state.displaySettings.moment-1)},updateBrainOpacity:function(t){(e.setState({brainOpacity:t}),e.state.mesh)&&(e.state.mesh.material.opacity=t)},togglePlayPause:function(){e.state.clock.running?e.state.clock.stop():e.state.clock.start(),e.setState({playing:!e.state.playing})},resetTime:function(){e.setState({playing:!1}),e.updateMoment(0)}},e.updateMoment=function(t){e.setState({displaySettings:Object(u.a)(Object(u.a)({},e.state.displaySettings),{},{moment:t})})},e}return Object(p.a)(n,[{key:"componentDidMount",value:function(){var e=Object(d.a)(l.a.mark((function e(){return l.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return document.title="Human Brain A
1ctivity",this.setState({displaySettings:{subSelectImgChecked:!1,subSelectImage:"",onlyPredictiveProbes:!1,colorCoded:!1,highGammaFrq:!1,moment:0},playing:!1,brainOpacity:.4,initialized:!1,clock:new b.i,material:new b.ib({uniforms:{tex:{type:"t",value:$},maxPointSize:{type:"f",value:25},timeToNext:{type:"f",value:0}},vertexShader:"\n#define PI 3.1415926535\n\nattribute vec3 color;\nattribute float hidden;\nattribute int dcnn;\nattribute float nodeValue;\nattribute float nextNodeValue;\n\nuniform float maxPointSize;\nuniform float timeToNext;\n\nvarying vec3 fragColor;\nvarying float fragHidden;\n\nvec3 getColor(float nv) {\n  if (dcnn != -1) {\n    return color;\n  }\n  if(nv <= 0.0) {\n    return vec3(0.0, 0.0, abs(nv)); \n  } else { \n    return vec3(abs(nv), 0.0, 0.0);\n  }\n}\n\nvoid main() {\n  fragColor = mix(getColor(clamp(nodeValue, -1.0, 1.0)), getColor(clamp(nextNodeValue, -1.0, 1.0)), timeToNext);\n  fragHidden = hidden;\n\n  gl_PointSize = maxPointSize * pow(abs(mix(nodeValue, nextNodeValue, timeToNext)), 1.5);\n  gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n}\n",fragmentShader:"\nuniform sampler2D tex;\n\nvarying float fragHidden;\nvarying vec3 fragColor;\n\nvoid main() {\n\n  if(fragHidden > 0.9) discard;\n  float texOpacity = texture2D(tex, gl_PointCoord.st).a;\n  if(texOpacity < 0.5) discard;\n \n  gl_FragColor = vec4(fragColor.rgb, texOpacity);\n}\n",transparent:!0,blending:b.a,sizeAttenuation:!0})}),this.loadModel=this.loadModel.bind(this),this.sceneSetup(),e.next=6,this.addCustomSceneObjects();case 6:return this.startAnimationLoop(),window.addEventListener("resize",this.handleWindowResize),e.next=10,this.loadAllNPYs();case 10:this.setupDots(),this.setState({initialized:!0}),this.updateDots();case 13:case"end":return e.stop()}}),e,this)})));return function(){return e.apply(this,arguments)}}()},{key:"componentDidUpdate",value:function(e,t,n){JSON.stringify(t.displaySettings)!==JSON.stringify(this.state.displaySettings)&&this.updateDots()}},{key:"componentWillUnmount",value:function(){window.removeEventListener("resize",this.handleWindowResize),window.cancelAnimationFrame(this.requestID),this.controls.dispose()}},{key:"sceneSetup",value:function(){var e=this.el.clientWidth,t=this.el.clientHeight;this.scene=new b.hb,this.camera=new b.Y(75,e/t,.1,1e3),this.camera.position.z=200,this.controls=new y.a(this.camera,this.el),this.renderer=new b.wb({alpha:!0}),this.renderer.setClearColor(16777215,0),this.renderer.setSize(e,t),this.el.appendChild(this.renderer.domElement)}},{key:"loadAllNPYs",value:function(){var e=Object(d.a)(l.a.mark((function e(){var t,n,a,i,s,r,o;return l.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,x(C);case 2:return t=e.sent.data,e.next=5,x(A);case 5:return n=e.sent.data,a=[],e.t0=L,e.next=10,x(P);case 10:return e.t1=e.sent,i=(0,e.t0)(e.t1).tolist(),s=[],e.t2=L,e.next=16,x(F);case 16:return e.t3=e.sent,r=(0,e.t2)(e.t3).tolist(),e.t4=L,e.next=21,x(N);case 21:e.t5=e.sent,o=(0,e.t4)(e.t5).tolist(),this.setState({brainData:t,dcnnLayer:n,resAllFrq:a,resAllLfp:i,resCtgFrq:s,resCtgLfp:r,predictive:o});case 24:case"end":return e.stop()}}),e,this)})));return function(){return e.apply(this,arguments)}}()},{key:"addCustomSceneObjects",value:function(){var e=Object(d.a)(l.a.mark((function e(){var t,n,a,i,s,r,o,c,d,u,h;return l.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t=function(e){var t=e.scene.children[0],n=(new b.q).fromBufferGeometry(t.geometry);return n.mergeVertices(),n.computeVertexNormals(),n.computeFaceNormals(),t.geometry=n,t.material=Q,new b.M(t.geometry,t.material)},n=this.scene,(a=new f.a).setPath("/models/"),e.next=6,this.loadModel(a,n,"lh_low.glb");case 6:return i=e.sent,s=t(i),e.next=10,this.loadModel(a,n,"rh_low.glb");case 10:r=e.sent,o=t(r),c=new b.q,s.updateMatrix(),c.merge(s.geometry,s.matrix,0),o.updateMatrix(),c.merge(o.geometry,o.matrix,1),(d=o.material).opacity=this.state.brainOpacity,d.transparent=!0,(u=new b.M(c,d)).renderOrder=1,u.position.set(0,15,0),u.scale.set(1.2,1.1,1),n.add(u),this.setState({mesh:u}),(h=[])[0]=new b.Z(16777215,1,0),h[1]=new b.Z(16777215,1,0),h[2]=new b.Z(16777215,1,0),h[0].position.set(0,200,0),h[1].position.set(100,200,100),h[2].position.set(-100,-200,-100),this.scene.add(h[0]),this.scene.add(h[1]),this.scene.add(h[2]);case 36:case"end":return e.stop()}}),e,this)})));return function(){return e.apply(this,arguments)}}()},{key:"updateDots",value:function(){if(this.state.initialized){var e,t,n,a=this.state.brainData.length/3,i=this.state.dots.geometry.attributes.color,s=this.state.dots.geometry.attributes.nodeValue,r=this.state.dots.geometry.attributes.nextNodeValue,o=this.state.dots.geometry.attributes.hidden,c=this.state.dots.geometry.attributes.dcnn,l=this.state.displaySettings,d=l.colorCoded,u=l.subSelectImage,h=l.onlyPredictiveProbes,p=l.subSelectImgChecked,g=l.moment,m=this.state.material.uniforms.timeToNext;g%1===0?(e=g,n=0):n=g-(e=Math.floor(g)),m.value=n,m.needsUpdate=!0,t=e+1,e===z&&(t=e);for(var b=0;b<3*a;b+=3){var y=b/3,f=void 0,j=void 0,v=Number(this.state.dcnnLayer[y]);M.includes(y)||(!0!==d||-1!==v?h&&p&&""!==u&&0===Number(this.state.predictive[y][u])?o.array[y]=1:(o.array[y]=0,!p||""===u||!1!==d&&-1===v||(this.state.displaySettings.highGammaFrq?(f=(this.state.resCtgFrq[u][y][e]+3)/6,j=(this.state.resCtgFrq[u][y][t]+3)/6):(f=(this.state.resCtgLfp[u][y][e]+100)/200,j=(this.state.resCtgLfp[u][y][t]+100)/200)),p&&""!==u||(this.state.displaySettings.highGammaFrq?(f=(this.state.resAllFrq[y][e]+3)/6,j=(this.state.resAllFrq[y][t]+3)/6):(f=(this.state.resAllLfp[y][e]+100)/200,j=(this.state.resAllLfp[y][t]+100)/200)),c.array[y]=v,!0===d&&-1!==v?(i.array[b]=X[v][0],i.array[b+1]=X[v][1],i.array[b+2]=X[v][2]):c.array[y]=-1,s.array[y]=2*f-1,r.array[y]=2*j-1):o.array[y]=1)}i.needsUpdate=!0,o.needsUpdate=!0,s.needsUpdate=!0,r.needsUpdate=!0,c.needsUpdate=!0}}},{key:"setupDots",value:function(){if(this.scene&&this.state.brainData){for(var e=this.state.brainData,t=e.length/3,n=new b.f,a=new Float32Array(3*t),i=new Float32Array(t),s=new Float32Array(t),r=new Array(t),o=new Int8Array(t),c=new Float32Array(3*t),l=0;l<3*t;l+=3){var d=l/3;if(o[d]=-1,M.includes(d))r[d]=1;else{var u=[-e[l],e[l+2],-e[l+1]],h=u[0],p=u[1],g=u[2];a[l]=h,a[l+1]=p,a[l+2]=g,i[d]=this.state.resAllLfp[d][this.state.displaySettings.moment]/100,s[d]=this.state.resAllLfp[d][this.state.displaySettings.moment+1]/100,r[d]=0}}n.setAttribute("position",new b.o(a,3)),n.setAttribute("color",new b.o(c,3)),n.setAttribute("hidden",new b.o(r,1)),n.setAttribute("nodeValue",new b.o(i,1)),n.setAttribute("nextNodeValue",new b.o(s,1)),n.setAttribute("dcnn",new b.t(o,1));var m=new b.ab(n,this.state.material);this.scene.add(m),this.setState({dots:m})}}},{key:"render",value:function(){var e=this;return Object(a.jsx)(w.a,{innerRef:this.contextRef,children:Object(a.jsxs)(S.a,{columns:2,children:[Object(a.jsx)(O.a,{width:4,style:{paddingLeft:"2rem",marginTop:"5rem"},children:Object(a.jsx)(J,{displaySettings:this.state.displaySettings,playing:this.state.playing,hooks:this.hooks,updateMoment:this.updateMoment,slider:this.slider,brainOpacity:this.state.brainOpacity})}),Object(a.jsx)(O.a,{width:12,children:Object(a.jsxs)(k.a,{context:this.contextRef,children:[Object(a.jsx)(Y,{}),Object(a.jsx)("div",{style:Z,ref:function(t){return e.el=t}})]})})]})})}},{key:"loadModel",value:function(e,t,n){return new Promise((function(t,a){e.load(n,(function(e){return t(e)}),null,a)}))}}]),n}(i.Component);var te=function(){return Object(a.jsx)("div",{className:"App",children:Object(a.jsx)(ee,{})})},ne=function(e){e&&e instanceof Function&&n.e(3).then(n.bind(null,308)).then((function(t){var n=t.getCLS,a=t.getFID,i=t.getFCP,s=t.getLCP,r=t.getTTFB;n(e),a(e),i(e),s(e),r(e)}))};o.a.render(Object(a.jsx)(s.a.StrictMode,{children:Object(a.jsx)(te,{})}),document.getElementById("root")),ne()}},[[287,1,2]]]);
2//# sourceMappingURL=main.8c469219.chunk.js.map

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.