diff --git a/notebooks/Jupyter_widget.ipynb b/notebooks/Jupyter_widget.ipynb index b4cac1e..72247c9 100644 --- a/notebooks/Jupyter_widget.ipynb +++ b/notebooks/Jupyter_widget.ipynb @@ -9,8 +9,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "2018.09.3\n", - "Fri Nov 8 12:18:50 2019\n" + "2022.03.4\n", + "Fri Sep 16 18:35:34 2022\n" ] } ], @@ -50,78 +50,7 @@ "outputs": [ { "data": { - "application/javascript": [ - "// make sure our module is only defined\n", - "// only once.\n", - "require.undef('molsvg_widget');\n", - "\n", - "// Define the `molsvg_widget` module using the Jupyter widgets framework.\n", - "define('molsvg_widget', [\"@jupyter-widgets/base\"],\n", - " function(widgets) {\n", - "\n", - " // The frontend class:\n", - " var MolSVGView = widgets.DOMWidgetView.extend({\n", - "\n", - " // This method creates the HTML widget.\n", - " render: function() {\n", - " this.svg_div = document.createElement('div');\n", - " this.el.appendChild(this.svg_div);\n", - " this.model.on('change:svg', this.svg_changed, this);\n", - " this.svg_changed();\n", - " },\n", - " \n", - " // called when the SVG is updated on the Python side\n", - " svg_changed: function() {\n", - " var txt = this.model.get('svg'); \n", - " this.svg_div.innerHTML = txt;\n", - " var sels = this.svg_div.getElementsByClassName(\"atom-selector\");\n", - " for(var i=0;i { return this.atom_clicked(evt) };\n", - " }\n", - " \n", - " },\n", - "\n", - " // callback for when an atom is clicked\n", - " atom_clicked: function(evt) {\n", - " //alert(\" \"+evt+\"|\"+this);\n", - " if(!evt.currentTarget.getAttribute('class')){\n", - " return;\n", - " }\n", - " var satmid = evt.currentTarget.getAttribute('class').match(/atom-([0-9]+)/);\n", - " if(satmid.length >1){\n", - " var atmid = Number(satmid[1]);\n", - " var curSel = this.model.get('selected_atoms');\n", - " var splitSel = curSel.split(',');\n", - " var selItms = [];\n", - " var idx = -1;\n", - " //alert(\"|\"+atmid+\"|\"+curSel+\"|len: \"+splitSel.length);\n", - " if(curSel != \"\" && splitSel.length>0){\n", - " selItms = Array.from(splitSel).map(item => Number(item));\n", - " idx = selItms.indexOf(atmid);\n", - " }\n", - " if(idx == -1){\n", - " selItms = selItms.concat(atmid);\n", - " evt.currentTarget.style[\"stroke-width\"]=3;\n", - " evt.currentTarget.style[\"stroke-opacity\"]=1;\n", - " evt.currentTarget.style[\"stroke\"]='#AA22FF';\n", - " } else {\n", - " selItms.splice(idx,1);\n", - " evt.currentTarget.style[\"stroke-width\"]=1;\n", - " evt.currentTarget.style[\"stroke-opacity\"]=0;\n", - " evt.currentTarget.style[\"stroke\"]='#FFFFFF';\n", - " }\n", - " this.model.set('selected_atoms',String(selItms));\n", - " this.touch();\n", - " }\n", - " }\n", - "\n", - " });\n", - "\n", - " return {\n", - " MolSVGView : MolSVGView\n", - " };\n", - "});\n" - ], + "application/javascript": "// make sure our module is only defined\n// only once.\nrequire.undef('molsvg_widget');\n\n// Define the `molsvg_widget` module using the Jupyter widgets framework.\ndefine('molsvg_widget', [\"@jupyter-widgets/base\"],\n function(widgets) {\n\n // The frontend class:\n var MolSVGView = widgets.DOMWidgetView.extend({\n\n // This method creates the HTML widget.\n render: function() {\n this.svg_div = document.createElement('div');\n this.el.appendChild(this.svg_div);\n this.model.on('change:svg', this.svg_changed, this);\n this.svg_changed();\n },\n \n // called when the SVG is updated on the Python side\n svg_changed: function() {\n var txt = this.model.get('svg'); \n this.svg_div.innerHTML = txt;\n var sels = this.svg_div.getElementsByClassName(\"atom-selector\");\n for(var i=0;i { return this.atom_clicked(evt) };\n }\n \n },\n\n // callback for when an atom is clicked\n atom_clicked: function(evt) {\n //alert(\" \"+evt+\"|\"+this);\n if(!evt.currentTarget.getAttribute('class')){\n return;\n }\n var satmid = evt.currentTarget.getAttribute('class').match(/atom-([0-9]+)/);\n if(satmid.length >1){\n var atmid = Number(satmid[1]);\n var curSel = this.model.get('selected_atoms');\n var splitSel = curSel.split(',');\n var selItms = [];\n var idx = -1;\n //alert(\"|\"+atmid+\"|\"+curSel+\"|len: \"+splitSel.length);\n if(curSel != \"\" && splitSel.length>0){\n selItms = Array.from(splitSel).map(item => Number(item));\n idx = selItms.indexOf(atmid);\n }\n if(idx == -1){\n selItms = selItms.concat(atmid);\n evt.currentTarget.style[\"stroke-width\"]=3;\n evt.currentTarget.style[\"stroke-opacity\"]=1;\n evt.currentTarget.style[\"stroke\"]='#AA22FF';\n } else {\n selItms.splice(idx,1);\n evt.currentTarget.style[\"stroke-width\"]=1;\n evt.currentTarget.style[\"stroke-opacity\"]=0;\n evt.currentTarget.style[\"stroke\"]='#FFFFFF';\n }\n this.model.set('selected_atoms',String(selItms));\n this.touch();\n }\n }\n\n });\n\n return {\n MolSVGView : MolSVGView\n };\n});\n", "text/plain": [ "" ] @@ -206,16 +135,16 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "'2018.09.3'" + "'2022.03.4'" ] }, - "execution_count": 6, + "execution_count": 4, "metadata": {}, "output_type": "execute_result" } @@ -227,19 +156,22 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 5, "metadata": {}, "outputs": [ { - "ename": "AttributeError", - "evalue": "'MolDraw2DSVG' object has no attribute 'TagAtoms'", - "output_type": "error", - "traceback": [ - "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[1;31mAttributeError\u001b[0m Traceback (most recent call last)", - "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[0;32m 3\u001b[0m \u001b[0mdm\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mDraw\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mPrepareMolForDrawing\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mm\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 4\u001b[0m \u001b[0md\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mDrawMolecule\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mdm\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 5\u001b[1;33m \u001b[0md\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mTagAtoms\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mdm\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 6\u001b[0m \u001b[0md\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mFinishDrawing\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 7\u001b[0m \u001b[0msvg\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0md\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mGetDrawingText\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", - "\u001b[1;31mAttributeError\u001b[0m: 'MolDraw2DSVG' object has no attribute 'TagAtoms'" - ] + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "894e66564dbd475f9c5dfd976e001bcb", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "MolSVGWidget(svg=\"\\n\\n