Skip to content
Snippets Groups Projects
StructureTensor3D_Examples-checkpoint.ipynb 1010 KiB
Newer Older
  • Learn to ignore specific revisions
  • vand's avatar
    vand committed
           "    var width = this.canvas.width/mpl.ratio\n",
           "    var dataURL = this.canvas.toDataURL();\n",
           "    this.cell_info[1]['text/html'] = '<img src=\"' + dataURL + '\" width=\"' + width + '\">';\n",
           "}\n",
           "\n",
           "mpl.figure.prototype.updated_canvas_event = function() {\n",
           "    // Tell IPython that the notebook contents must change.\n",
           "    IPython.notebook.set_dirty(true);\n",
           "    this.send_message(\"ack\", {});\n",
           "    var fig = this;\n",
           "    // Wait a second, then push the new image to the DOM so\n",
           "    // that it is saved nicely (might be nice to debounce this).\n",
           "    setTimeout(function () { fig.push_to_output() }, 1000);\n",
           "}\n",
           "\n",
           "mpl.figure.prototype._init_toolbar = function() {\n",
           "    var fig = this;\n",
           "\n",
           "    var nav_element = $('<div/>');\n",
           "    nav_element.attr('style', 'width: 100%');\n",
           "    this.root.append(nav_element);\n",
           "\n",
           "    // Define a callback function for later on.\n",
           "    function toolbar_event(event) {\n",
           "        return fig.toolbar_button_onclick(event['data']);\n",
           "    }\n",
           "    function toolbar_mouse_event(event) {\n",
           "        return fig.toolbar_button_onmouseover(event['data']);\n",
           "    }\n",
           "\n",
           "    for(var toolbar_ind in mpl.toolbar_items){\n",
           "        var name = mpl.toolbar_items[toolbar_ind][0];\n",
           "        var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
           "        var image = mpl.toolbar_items[toolbar_ind][2];\n",
           "        var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
           "\n",
           "        if (!name) { continue; };\n",
           "\n",
           "        var button = $('<button class=\"btn btn-default\" href=\"#\" title=\"' + name + '\"><i class=\"fa ' + image + ' fa-lg\"></i></button>');\n",
           "        button.click(method_name, toolbar_event);\n",
           "        button.mouseover(tooltip, toolbar_mouse_event);\n",
           "        nav_element.append(button);\n",
           "    }\n",
           "\n",
           "    // Add the status bar.\n",
           "    var status_bar = $('<span class=\"mpl-message\" style=\"text-align:right; float: right;\"/>');\n",
           "    nav_element.append(status_bar);\n",
           "    this.message = status_bar[0];\n",
           "\n",
           "    // Add the close button to the window.\n",
           "    var buttongrp = $('<div class=\"btn-group inline pull-right\"></div>');\n",
           "    var button = $('<button class=\"btn btn-mini btn-primary\" href=\"#\" title=\"Stop Interaction\"><i class=\"fa fa-power-off icon-remove icon-large\"></i></button>');\n",
           "    button.click(function (evt) { fig.handle_close(fig, {}); } );\n",
           "    button.mouseover('Stop Interaction', toolbar_mouse_event);\n",
           "    buttongrp.append(button);\n",
           "    var titlebar = this.root.find($('.ui-dialog-titlebar'));\n",
           "    titlebar.prepend(buttongrp);\n",
           "}\n",
           "\n",
           "mpl.figure.prototype._root_extra_style = function(el){\n",
           "    var fig = this\n",
           "    el.on(\"remove\", function(){\n",
           "\tfig.close_ws(fig, {});\n",
           "    });\n",
           "}\n",
           "\n",
           "mpl.figure.prototype._canvas_extra_style = function(el){\n",
           "    // this is important to make the div 'focusable\n",
           "    el.attr('tabindex', 0)\n",
           "    // reach out to IPython and tell the keyboard manager to turn it's self\n",
           "    // off when our div gets focus\n",
           "\n",
           "    // location in version 3\n",
           "    if (IPython.notebook.keyboard_manager) {\n",
           "        IPython.notebook.keyboard_manager.register_events(el);\n",
           "    }\n",
           "    else {\n",
           "        // location in version 2\n",
           "        IPython.keyboard_manager.register_events(el);\n",
           "    }\n",
           "\n",
           "}\n",
           "\n",
           "mpl.figure.prototype._key_event_extra = function(event, name) {\n",
           "    var manager = IPython.notebook.keyboard_manager;\n",
           "    if (!manager)\n",
           "        manager = IPython.keyboard_manager;\n",
           "\n",
           "    // Check for shift+enter\n",
           "    if (event.shiftKey && event.which == 13) {\n",
           "        this.canvas_div.blur();\n",
           "        // select the cell after this one\n",
           "        var index = IPython.notebook.find_cell_index(this.cell_info[0]);\n",
           "        IPython.notebook.select(index + 1);\n",
           "    }\n",
           "}\n",
           "\n",
           "mpl.figure.prototype.handle_save = function(fig, msg) {\n",
           "    fig.ondownload(fig, null);\n",
           "}\n",
           "\n",
           "\n",
           "mpl.find_output_cell = function(html_output) {\n",
           "    // Return the cell and output element which can be found *uniquely* in the notebook.\n",
           "    // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n",
           "    // IPython event is triggered only after the cells have been serialised, which for\n",
           "    // our purposes (turning an active figure into a static one), is too late.\n",
           "    var cells = IPython.notebook.get_cells();\n",
           "    var ncells = cells.length;\n",
           "    for (var i=0; i<ncells; i++) {\n",
           "        var cell = cells[i];\n",
           "        if (cell.cell_type === 'code'){\n",
           "            for (var j=0; j<cell.output_area.outputs.length; j++) {\n",
           "                var data = cell.output_area.outputs[j];\n",
           "                if (data.data) {\n",
           "                    // IPython >= 3 moved mimebundle to data attribute of output\n",
           "                    data = data.data;\n",
           "                }\n",
           "                if (data['text/html'] == html_output) {\n",
           "                    return [cell, data, j];\n",
           "                }\n",
           "            }\n",
           "        }\n",
           "    }\n",
           "}\n",
           "\n",
           "// Register the function which deals with the matplotlib target/channel.\n",
           "// The kernel may be null if the page has been refreshed.\n",
           "if (IPython.notebook.kernel != null) {\n",
           "    IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n",
           "}\n"
          ],
          "text/plain": [
           "<IPython.core.display.Javascript object>"
          ]
         },
         "metadata": {},
         "output_type": "display_data"
        },
        {
         "data": {
          "text/html": [
           "<img src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABAAAAAMACAYAAAC6uhUNAAAgAElEQVR4XuzdC7geZXUv8JUoWEoiIPcioIAEFahcyzkKHEQU2orFQKxFFCyFnloVY+UYtVoeMCoIKSgeLGpFW1ohFo7QHgsJBRNtDXKxUCOCaBQEFQoGEy2Q5DwzPaEJuez97VnfZeb9zfPwqNkza971WwMy/z3ffJNWrVq1KmwECBAgQIAAAQIECBAgQIBApwUmCQA6PV/NESBAgAABAgQIECBAgACBWkAA4EIgQIAAAQIECBAgQIAAAQIFCAgAChiyFgkQIECAAAECBAgQIECAgADANUCAAAECBAgQIECAAAECBAoQEAAUMGQtEiBAgAABAgQIECBAgAABAYBrgAABAgQIECBAgAABAgQIFCAgAChgyFokQIAAAQIECBAgQIAAAQICANcAAQIECBAgQIAAAQIECBAoQEAAUMCQtUiAAAECBAgQIECAAAECBAQArgECBAgQIECAAAECBAgQIFCAgACggCFrkQABAgQIECBAgAABAgQICABcAwQIECBAgAABAgQIECBAoAABAUABQ9YiAQIECBAgQIAAAQIECBAQALgGCBAgQIAAAQIECBAgQIBAAQICgAKGrEUCBAgQIECAAAECBAgQICAAcA0QIECAAAECBAgQIECAAIECBAQABQxZiwQIECBAgAABAgQIECBAQADgGiBAgAABAgQIECBAgAABAgUICAAKGLIWCRAgQIAAAQIECBAgQICAAMA1QIAAAQIECBAgQIAAAQIEChAQABQwZC0SIECAAAECBAgQIECAAAEBgGuAAAECBAgQIECAAAECBAgUICAAKGDIWiRAgAABAgQIECBAgAABAgIA1wABAgQIECBAgAABAgQIEChAQABQwJC1SIAAAQIECBAgQIAAAQIEBACuAQIECBAgQIAAAQIECBAgUICAAKCAIWuRAAECBAgQIECAAAECBAgIAFwDBAgQIECAAAECBAgQIECgAAEBQAFD1iIBAgQIECBAgAABAgQIEBAAuAYIECBAgAABAgQIECBAgEABAgKAAoasRQIECBAgQIAAAQIECBAgIABwDRAgQIAAAQIECBAgQIAAgQIEBAAFDFmLBAgQIECAAAECBAgQIEBAAOAaIECAAAECBAgQIECAAAECBQgIAAoYshYJECBAgAABAgQIECBAgIAAwDVAgAABAgQIECBAgAABAgQKEBAAFDBkLRIgQIAAAQIECBAgQIAAAQGAa4AAAQIECBAgQIAAAQIECBQgIAAoYMhaJECAAAECBAgQIECAAAECAgDXAAECBAgQIECAAAECBAgQKEBAAFDAkLVIgAABAgQIECBAgAABAgQEAK4BAgQIECBAgAABAgQIECBQgIAAoIAha5EAAQIECBAgQIAAAQIECAgAXAMECBAgQIAAAQIECBAgQKAAAQFAAUPWIgECBAgQIECAAAECBAgQEAC4BggQIECAAAECBAgQIECAQAECAoAChqxFAgQIECBAgAABAgQIECAgAHANECBAgAABAgQIECBAgACBAgQEAAUMWYsECBAgQIAAAQIECBAgQEAA4BogQIAAAQIECBAgQIAAAQIFCAgAChiyFgkQIECAAAECBAgQIECAgADANUCAAAECBAgQIECAAAECBAoQEAAUMGQtEiBAgAABAgQIECBAgAABAYBrgAABAgQIECBAgAABAgQIFCAgAChgyFokQIAAAQIECBAgQIAAAQICANcAAQIECBAgQIAAAQIECBAoQEAAUMCQtUiAAAECBAgQIECAAAECBAQArgECBAgQIECAAAECBAgQIFCAgACggCFrkQABAgQGL3DyySfHZZddFocffnjceOONay2g+t9HHHFE/Wff+9734nnPe97gF9iRM372s5+NU045paduejF/4xvfGJ///Oefqr9q1aqezmVnAgQIECAwSgICgFGahrUQIECAQGcEBACDGWWvAcDWW28dP/rRj2LTTTcdc4HXX399vPKVr1xrPwHAmGx2IECAAIERFhAAjPBwLI0AAQIE2isgABjM7J588sn45S9/udGT3XrrrfWTGNX2x3/8x/Gxj31szMUtX7489t577/oJjd122y3uvffe+hgBwJh0diBAgACBERYQAIzwcCyNAAECBNorsLEAoL1dtXPlb3vb25666b/55pvjwAMPHLORP/mTP4nzzz8/fvd3fzee9axn1R/nEACMyWYHAgQIEBhxAQHAiA/I8ggQIECgnQICgNGY2xNPPBG/9mu/Fg899FC8+MUvjjvvvHPMhVVPDBx88MExZcqU+Pa3vx3vfve7BQBjqtmBAAECBNogIABow5SskQABAgSGKlDdNF500UXxla98JX74wx/GihUrYptttokddtghXvrSl8axxx4bRx555FprzPgIwE9/+tO4+OKL48tf/nLcc8898dhjj8X2229fP5L+27/92/G6170udt555/XaVC8a/PSnPx0LFy6MBx98MDbZZJP6uGqt73jHO2Krrbbq2bTXz9uPwuPy/+f//J/4nd/5nbrXc889N971rndttO9qtgcddFDcdttt8YlPfCL+5//8n7F6ltWBo9BTz4NzAAECBAgQ+P8CAgCXAgECBAgQ2IjA3/7t38ZJJ50U1WfNN7St7zfLTQOAK664In7/938/fv7zn2/wvG9605uiuilfc/uP//iP+IM/+IO13lz/9AJViHDttdeO61H4NY9tYwDw2te+Nq666qp4xjOeUYc3O+6440av9/POOy/OPPPMOOSQQ+KrX/1qTJ48WQDgnxAECBAg0BkBAUBnRqkRAgQIEMgWePTRR+vfsFc34XvssUecddZZ8Ru/8RtRvUl+2bJlcdddd8X8+fOjemT8//7f/7vW6ZsEAF/60pfq31pXv22ublhnzZpVv41+u+22i5/97Gf1b6erm9pf/dVfjUsuuWSt81afWf/CF74Qz3zmM+Mtb3lL/N7v/V7svvvu8fjjj9dPA7z//e+vH2uvQoDbb7+9fophvNtYL9y7++6743/8j/8RS5cujf322692WXPbWJgxnjVUTzFUn8cf7/bwww/Xj/9XvR999NHrzOjpdaoX/VUv/qs+NnDLLbfEvvvuW+/iCYDxituPAAECBEZdQAAw6hOyPgIECBAYmsA111xTPzJfbd/85jefuiEcz4ImGgBUb5/fdddd68+sVzfuCxYs2OBvrasb8upGf/V29dVXx3HHHVf/1vrv//7v65vep29VgFA94l7drI/3jfjj6fff//3f69+aV3Wrm+5FixbFTjvttNahkyZNGk+pDe6zviceNlaw+vhE1WO1VU9yVB+Z2Nh21FFHxbx586J6AWD1JMDqTQDQaGwOJkCAAIEREhAAjNAwLIUAAQIERkug+i179Qh5tVWfx68+9z/ebaIBwF/8xV/E6aefXp/muuuui+qmdLxb9dv3m266KU488cT4q7/6qw0eVr3Rvlrfc57znDpoaHpjXv2GvVpn9Y6E6qmE6j8POOCAdc7f9Dy9BgDVi/yqt/5vscUW9XsQfuVXfmVMk1122SW+9a1vxeabby4AGO+FZz8CBAgQaI2A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4YZ49NFH42Uve1lcd911sdlmm/VzCWoTIECAAAECBAgQIEBgwgICgAnTObAkgauvvjqOO+64+qb/pptuiv33379u/6GHHqrDgDvuuCPe+c53xkc/+tGSWPRKgAABAgQIECBAgECLBAQALRqWpQ5P4OCDD46bb745zjnnnHjve9+71kIWLlwYhx56aDzrWc+KH//4x7HFFlsMb6HOTIAAAQIECBAgQIAAgQ0ICABcGgTGELj//vvjuc99br3XvffeG89//vPXOWKXXXaJH/7wh3H55ZfH61//eqYECBAgQIAAAQIECBAYOQEBwMiNxIJGTeDaa6+NV7/61fGc5zwnHn744fUu77WvfW1cddVV8a53vSvOPffcCbew+eabxxNPPBHbbbfdhGs4kAABAgQIECBQisBPfvKT+kXMy5YtK6VlfRJoJCAAaMTn4BIEPvaxj8Xb3va2eMlLXhK33Xbbelt++9vfHhdddFEcf/zxUX1TwES3TTfdNJ544smImDLREo4jQIAAAQIECBQk8POImBSrVq0oqGetEpi4gABg4naOLERg9uzZ9ef+X/rSl0b1ef/1bdXPq/1e+cpXxj/+4z9uVGb1xwnWt9MDDzwQK1duHhEzC9HVJgECBAgQIECgicAF9cGrVi1tUsSxBIoREAAUM2qNTlRAADBROccRIECAAAECBPotIADot7D63RIQAHRrnrrpg8AgPwJQPR1w//1Vgu0JgD6MUkkCBAgQIECgcwICgM6NVEN9FRAA9JVX8S4IXHPNNXHsscfG1ltvHQ899NB6W1r9EsA/+ZM/ifPOO2/CbQsAJkznQAIECBAgQKBIAQFAkWPX9IQFBAATpnNgKQL33Xdf7LzzznW7/f4aQAFAKVeVPgkQIECAAIEcAQFAjqMqpQgIAEqZtD4bCRx88MFx8803xznnnFO/EHDNrXox4KGHHhrPetaz4sc//nFsscUWEz6XAGDCdA4kQIAAAQIEihQQABQ5dk1PWEAAMGE6B5YkcPXVV8dxxx0XU6ZMiZtuuin233//uv2HH344jjjiiLjjjjvine98Z3z0ox9txCIAaMTnYAIECBAgQKA4AQFAcSPXcCMBAUAjPgeXJPD2t789Lrroothkk03iyCOPjM033zzmz58fjz76aP0Vgddff31sttlmjUhKCwBW3X/WRr0m7fSBRp4OJkCAAAEC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BAgQGLaAAGDYE3D+dgkIANo1L6vtuIAAoOMD1h4BAgQIECCQLCAASAZVruMCAoCOD1h77RIQALRrXlZLgAABAgQIDFtAADDsCTh/uwQEAO2al9V2XEAA0PEBa48AAQIECBBIFhAAJIMq13EBAUDHB6y9dgkIANo1L6slQIAAAQIEhi0gABj2BJy/XQICgHbNy2o7LiAA6PiAtUeAAAECBAgkCwgAkkGV67iAAKDjA9ZeuwQEAO2al9USIECAAAECwxYQAAx7As7fLgEBQLvmZbUdFxAAdHzA2iNAgAABAgSSBQQAyaDKdVxAANDxAWuvXQICgHbNy2oJECBAgACBYQsIAIY9Aedvl4AAoF3zstoGAk888UR85StfiS9/+ctx4403xt133x3Lli2LrbfeOg4++OA4/fTT47d+67c2eIZ58+bFBRdcEIsWLaqP23XXXWP69Okxa9asmDJlSoOV/dehAoAURkUIECBAgACBYgQEAMWMWqMpAgKAFEZF2iBQ3cAfddRR9VJ32GGHOOCAA2LzzTePb33rW3HnnXfWf37aaafFJZdcEpMmTVqrpTlz5sTMmTPrPz/00ENj++23jwULFsSDDz4Y06ZNi4ULF8Y222zTmEEA0JhQAQIECBAgQKAoAQFAUePWbGMBAUBjQgXaInDDDTfEJz7xiXj7299e38SvuX3hC1+IE088MVasWBGXXXZZvPGNb3zqx7fddlsdFkyePDmuueaaOOaYY+qfLV++PI499tiYP39+/STA3LlzG1MIABoTKkCAAAECBAgUJSAAKGrcmm0sIABoTKhAVwROPfXU+PSnPx1HHnlkVE8LrN5mzJgRV155ZVQ/v/TSS9dqd8mSJbHbbrvFypUrY/HixbHXXns14hAANOJzMAECBAgQIFCcgACguJFruJGAAKARn4O7JHDxxRfHH//xH8eee+4Zd911V93a448/HltttVX92/7qCYIjjjhinZYPO+yw+uMAs2fPrt8H0GQTADTRcywBAgQIECBQnoAAoLyZ67iJgACgiZ5jOyVwxhlnxIUXXhiHH354/ZLAaqveDbDPPvvU/33p0qUxderUdXqu3g1QvSPghBNOiCuuuKKRiQCgEZ+DCRAgQIAAgeIEBADFjVzDjQQEAI34HNwVgeplftXj+z/72c/ioosuire+9a11a9Vn/qvP+W+55ZbxyCOP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93fxox/9qL7Jrz7bXz3eXz3qv3q788476xcDVtvSpUtj6tSp65ytejdA9Y6AE044oX6pYJNNANBEr/mxAoDmhioQIECAAIGBCggABsrtZO0XEAC0f4Y6GKdA9fh+9ej/wQcfXP8m/9xzz41Vq1atdfR+++0XV199deyyyy71n1ef+a8+57/lllvGI488st4zrX5B4IEHHhg333zzOFez/t0mEgCMddPa9DH1seo3abjp2no9dz976XUt9idAgAABAgQSBAQACYhKlCQgAChp2oX3+uEPf7h+RL966V/1cYC3vOUt8ba3vS122GGH+qv9qv9dvQBw7733jltvvbXe7/LLL48TTzwxdtppp6i+PWB92+pgYc8994y77rprTOXqJn9D2wMPPBCbr1wZM8es8l87jHVT2/Qme6z6PSx1nV2brq3Xc/ezl17XYn8CBAgQIEAgQUAAkICoREkCAoCSpl14rx/60Ifqt/5X2+tf//r65n7N7Qc/+EH9lX6//OUv43Of+1ycdNJJAoCI6OdNswCg8L8ptU+AAAECBJoKCACaCjq+MAEBQGEDL7ndj3/84/HWt761Jrjxxhvj8MMPX4fj+OOPjy9+8Yvxxje+MS677DIfARAAlPy3jN4JECBAgMDoCwgARn9GVjhSAgKAkRqHxfRT4B/+4R/it37rt+pTVL/t33nnndc53ZlnnhnnnXdeHHXUUXHdddfVLwrcd9996/3GeglgFR5UXxfYZFvfOwD6+Rv4Jmt1LAECBAgQIEBg6AICgKGPwALaJSAAaNe8rLaBwIMPPlh/A0D14r/qM/7VC/+evr35zW+Ov/zLv4zjjjuu/oaAUfgaQAFAg6E7lAABAgQIEOi2gACg2/PVXbqAACCdVMFRFjjssMNiwYIF9TcAvOtd71prqdWLAffaa6+49957o3pfwLvf/e765zNmzKh/s3/qqadG9cK/NbclS5bE7rvvHitWrIjFixfXxzfZPAHQRM+xBAgQIECAQHECAoDiRq7hZgICgGZ+jm6ZwPz58+MVr3hFbLXVVlF9JOCQQw6pO3jyySdj5syZ8bGPfSymTp0ad999d2y//fb1z6qnBaqv+Js8eXJce+21cfTRR9d/vnz58vorAqua06dPj7lz5zbWEAA0JlSAAAECBAgQKElAAFDStPWaICAASEBUol0C55xzTvzpn/5pPPOZ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gFImrc8kAQFAEqQyBDIEBAAZimoQIECAAAECxQgIAIoZtUZzBAQAOY6qEEgREACkMCpCgAABAgQIlCIgAChl0vpMEhAAJEEqQyBDQACQoagGAQIECBAgUIyAAKCYUWs0R0AAkOOoCoEUAQFACqMiBAgQIECAQCkCAoBSJq3PJAEBQBKkMgQyBAQAGYpqECBAgAABAsUICACKGbVGcwQEADmOqhBIERAApDAqQoAAAQIECJQiIAAoZdL6TBIQACRBKkMgQ0AAkKGoBgECBAgQIFCMgACgmFFrNEdAAJDjqAqBFAEBQAqjIgQIECBAgEApAgKAUiatzyQBAUASpDIEMgQEABmKahAgQIAAAQLFCAgAihm1RnMEBAA5jqoQSBEQAKQwKkKAAAECBAiUIiAAKGXS+kwSEAAkQSrTHoEf/OAHce6558b1118f1X9ftWpV7LjjjnHYYYfFzJkz49d//dfX28y8efPiggsuiEWLFsWyZcti1113jenTp8esWbNiypQpKQACgBRGRQgQIECAAIFSBAQApUxan0kCAoAkSGXaIfD1r389jjrqqHjsscdip512igMOOCCe8YxnxO233x7f+9734pnPfGZcfvnlccIJJ6zV0Jw5c+pwYNKkSXHooYfG9ttvHwsWLIgHH3wwpk2bFgsXLoxtttmmMYIAoDGhAgQIECBAgEBJAgKAkqat1wQBAUACohLtEah+u/+v//qvcdppp8XHP/7x2GSTTerFr1y5Mj7wgQ/EOeecE1tuuWU88MAD8Su/8iv1z2677bY6KJg8eXJcc801ccwxx9R/vnz58jj22GNj/vz59ZMAc+fObQwhAGhMqAABAgQIECBQkoAAoKRp6zVBQACQgKhEOwQefvjhp35L/5Of/CS23XbbtRa+YsWKmDp1avziF7+IW2+9Nfbbb7/65zNmzIgrr7wyTj311Lj00kvXOmbJkiWx22671QHC4sWLY6+99mqEIQBoxOdgAgQIECBAoDQBAUBpE9dvQwEBQENAh7dH4Oc//3l9g19tYwUA1bsBdt5553j88cdjq622qn/bf8MNN8QRRxyxTsPVuwOqjwPMnj27fh9Ak00A0ETPsQQIECBAgEBxAgKA4kau4WYCAoBmfo5umcDqm/WNfQSgesT/H/7hH+rO7rzzzthnn33q/7506dKnAoQ1267eDVC9I6B6b8AVV1zRSEQA0IjPwQQIECBAgEBpAgKA0iau34YCAoCGgA5vl8Bdd90Vv/mbvxn33ntv/RLAAw88sH4JYPU5//vvvz9e97rX1e8GePazn103Vn3mv/qcf/VegEceeWS9za5+QWBV6+abb24EIgBoxOdgAgQIECBAoDQBAUBpE9dvQwEBQENAh7dPoHr8/6STTorrrrturcW/6EUvine+853x5je/+ak/r74R4MQTT6zDgvvuu2+9zVbvBaieKNhzzz2jChjG2qqb/A1t1csHV267Y8T89Z9rrNp+ToAAAQIECBAoSkAAUNS4NdtcQADQ3FCFFgl89atfjde+9rX11/199KMfjZe//OWx6aabRvXn1aP8d999dx0AfPrTn667EgC0aLiWSoAAAQIECJQnIAAob+Y6biQgAGjE5+A2CTz66KP1b+kfeuih+Od//uf4jd/4jbWWX30soPq8/5ov/PMRgDZN2FoJECBAgACB4gQEAMWNXMPNBAQAzfwc3SKBv/7rv443vOENsfvuu8c999yz3pVXTwT80z/9U7znPe+JD37wg3HHHXfEvvvuW+871ksAjz/++PrrApts3gHQRM+xBAgQIECAQHECAoDiRq7hZgICgGZ+jm6RwIc+9KH6xn6//faLW2+9db0rP+644+Lqq6+OP/zDP4z//b//t68BbNF8LZUAAQIECBAoUEAAUODQtdxEQADQRM+xrRL43Oc+F29605tis802i+ple1tsscVa63/iiSdijz32iB/84AfxkY98JM4888z65zNmzKh/s3/qqadG9cK/NbclS5bUTxSsWLEiFi9eHHvttVcjE08ANOJzMAECBAgQIFCagACgtInrt6GAAKAhoMPbI/DTn/40nv/858eyZcvihBNOiM985jMxZcqUuoHHH3+8fgngxRdfHJtsskl8+9vfjt12263+WfW0QPUVf5MnT45rr702jj766PrPq3cFVF8ROH/+/Jg+fXrMnTu3MYYAoDGhAgQIECBAgEBJAgKAkqat1wQBAUACohLtEfirv/qrOOWUU+LJJ5+MbbfdNg466KD6hv8b3/hG3H///fVNfhUCVB8BWHObM2dOHRBMmjQpDj/88Nhuu+1iwYIF9ZME06ZNi4ULF8Y222zTGEIA0JhQAQIECBAgQKAkAQFASdPWa4KAACABUYl2CXzzm9+MP//zP4+vfOUr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t94a1Vf8VTfw1157bRx99NH1kpcvX15/ReD8+fNj+vTpMXfu3LVaqX7+ghe8oP5GgPe85z3xwQ9+8Kmfv/e9743Zs2dHddNehQCbbbZZYwYBQGNCBQgQIECAAIGCBAQABQ1bqykCAoAURkUGKVDdzP/RH/3RU6f87ne/Gw899FB9I776a/uqH1511VWx5tfyzZkzJ2bOnBmTJk2Kww8/PLbbbrtYsGBBVF+9N23atFi4cGFUn+V/+vbVr341XvnKV9Zhwd57713/deedd9Z/bb755jFv3rw45JBDUggEACmMihAgQIAAAQKFCAgAChm0NtMEBABplAoNSuDGG2+MI444YszTfe9734vnPe95a+1X3ayff/75sWjRoli2bFnssssuUb34b9asWTF16tQN1rznnnvi7LPPrm/2q5f9bbvttvGKV7wi3v/+99cfH8jaBABZkuoQIECAAAECJQgIAEqYsh4zBQQAmZpqEWgoIABoCOhwAgQIECBAoCgBAUBR49ZsgoAAIAFRCQJZAgKALEl1CBAgQIAAgRIEBAAlTFmPmQICgExNtQg0FBAANAR0OAECBAgQIFCUgACgqHFrNkFAAJCAqASBLAEBQJakOgQIECBAgEAJAgKAEqasx0wBAUCmploEGgoIABoCOpwAAQIECBAoSkAAUNS4NZsgIABIQFSCQJaAACBLUh0CBAgQIECgBAEBQAlT1mOmgAAgU1MtAg0FBAANAR1OgAABAgQIFCUgAChq3JpNEBAAJCAqQSBLQACQJakOAQIECBAgUIKAAKCEKesxU0AAkKmpFoGGAgKAhoAOJ0CAAAECBIoSEAAUNW7NJggIABIQlSCQJSAAyJJUhwABAgQIEChBQABQwpT1mCkgAMjUVItAQwEBQENAhxMgQIAAAQJFCQgAihq3ZhMEBAAJiEoQyBIQAGRJqkOAAAECBAiUICAAKGHKeswUEABkaqpFoKGAAKAhoMMJECBAgACBogQEAEWNW7MJAgKABEQlCGQJCACyJNUhQIAAAQIEShAQAJQwZT1mCggAMjXVItBQQADQENDhBAgQIECAQFECAoCixq3ZBAEBQAKiEgSyBAQAWZLqECBAgAABAiUICABKmLIeMwUEAJmaahFoKCAAaAjocAIECBAgQKAoAQFAUePWbIKAACABUQkCWQICgCxJdQgQIECAAIESBAQA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BQQAmUFVR4AAAQIECAy5gABgyDtY8zILCAAyg6puegR+/OMfp+9+97tp+fLl1f/uvvvutG7dunTWWWelM844Y8oHcfHFF6cPfvCD1f7HHnts+vznPz9h2Xidj3/84+m6665Lq1evTrNmzUpHHHFEWrhwYdppp52m/JqT7SgAyMKoEgIECBAgQKAYAQFAMV2toVkEBABZGFUy3QIf/vCH0wUXXLDZy9YJAO6777601157pSeffDJt2LBh0gDg6quvTkcffXR6+umn05w5c9Luu++efvjDH6aoY+bMmemGG25Is2fPbswgAGhMqAICBAgQIECgKAEBQFHdrbGNBQQAjQlVsCUE4kp9zALYe++90z777JPOOeectHjx4inPAFi/fn16y1vekn70ox+lo446Kl1xxRUTBgArV65Mr3zlK6ug4NJLL00f+MAHqibHjIP3v//96corr6xCgWXLlqUZM2Y04hAANOJTmAABAgQIEChOQABQXJdrcCMBAUAjPoUHRSAG4jGIn+oMgE9/+tPp1FNPTRdddFF66KGH0plnnjlhALBgwYK0aNGiNHfu3HTNNdds0uQ1a9akGLTHLQFLly5N8+bNa0QiAGjEpzABAgQIECBQnIAAoLgu1+BGAgKARnwKD4pAnQCgM3PgTW96U/r+979fDf4nCwDi6v8999yTLr/88jR//vzNmnzMMcdUsw9iZkDMEGiyCQCa6ClLgAABAgQIlCcgACivz7W4iYAAoImesgMjMNUAIKbtH3jggemOO+5It99+e9pjjz3Sxz72sQkDgMcffzztsMMOVTtj/z333HOzNl944YXp5JNPrm4DuOmmmxqZCAAa8SlMgAABAgQIFCcgACiuyzW4kYAAoBGfwoMiMNUAIFbxP/3001PcAhALCcY2WQAQQUEsFBjbo48+mp7//Odv1uQlS5akI488Mu24447p4YcfbkQiAGjEpzABAgQIECBQnIAAoLgu1+BGAgKARnwKD4rAVAKAO++8M+27775pv/32S9dff33aaqutugYAN954YzVjILa1a9emrbfeerMmx7oAhx56aNp2223TU0891ZUkBvkTbatWrUrr12+XUjq1az12IECAAAECBAgQEAA4BwjUERAA1NGy78AKdAsA4vF9+++/f7rrrrvSrbfeml796lePtGWyGQACgIHtcgdGgAABAgQIEEgp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x66ZgNIE2i8gAGh/H2rBEAr4Udx7p7Jj17tA7yWdd73ZcevNzSC2dzd27JoJKE2g/QICgPb3oRYMoYAfxb13Kjt2vQv0XtJ515sdt97cDGJ7d2PHrpmA0gTaLyAAaH8fagEBAgQIECBAgAABAgQIEOgqIADoSmQHAgQIECBAgAABAgQIECDQfgEBQPv7UAsIECBAgAABAgQIECBAgEBXAQFAVyI7ECBAgAABAgQIECBAgACB9gsIANrfh1pAgAABAgQIECBAgAABAgS6CggAuhLZgQABAgQIECBAgAABAgQItF9AAND+PtQCAgQIECBAgAABAgQIECDQVUAA0JXIDgSmT+Cqq65KF110UbrtttvS//3f/6XZs2enX//1X0+nnHJK2mabbabvQAboldauXZuuu+66tHTp0nTttdemf/u3f0tPPPFEetGLXpTe9KY3peOPPz4dfvjhEx7x9773vXTeeeelm266qSq36667pqOOOiqdfvrpafvttx+glk7foSxYsCAtWrSoesGzzjornXHGGeO+OLuNLPFevOSSS9JXv/rVdNddd6Unn3wy7bjjjmnPPfdM73//+9N737UjvvcAABTwSURBVPvezfzYpfTv//7v6ZOf/GS65pprqv+/YcOGNGvWrPQLv/AL6dRTT00///M/X+R59+Mf/zh997vfTcuXL6/+d/fdd6d169ZN+l7sQPV6Xt1zzz3p7LPPTlH+4YcfTi9+8YvT3Llz00c/+tH0ile8Yvo+fBq+Ul279evXp3/6p3+qvj/+/u//vrJ+7LHH0vOf//y09957V+/fX/u1X0szZsyY8Miijz7+8Y9X30OrV6+uzuEjjjgiLVy4MO20004NWzR9xevaTXRkF198cfrgBz9Y/fnYY49Nn//854febvp6ySsRmB4BAcD0OHsVAl0FPvzhD6cLLrggbb311umtb31rNTiNHyyPPvpoOuigg6ofjM997nO71jNsO8QP1re97W1Vs17ykpekfffdN2233XbVQOzOO++s/v0DH/hANUAb+yPu05/+dDXQiH9/85vfnGbOnJmuv/769J//+Z/p1a9+dbrhhhuqgVxJ24033lhZxGAs/jdRAMBu41nxwAMPpHnz5lXnW5wrBxxwQHX+/cd//Ee69dZb0y/90i+lq6++epNTiF1Ky5Ytq963jz/+eNp5552r9+2znvWs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8bZht4vF0mJmV7dtxYoV1YBz9NarzT333JPi0XdRPmZoRCgTs1viUXjxPdOWra7dVPeP9o++h320x/Lly1M8rjfC41hTJc7hWD8ggsHOzJ82+E3VYrzzbmz7phIARJlhsWtD/zpGAnUEBAB1tOxLgAABAgQIECBAgAABAgRaKiAAaGnHOWwCBAgQIECAAAECBAgQIFBHQABQR8u+BAgQIECAAAECBAgQIECgpQICgJZ2nMMmQIAAAQIECBAgQIAAAQJ1BAQAdbTsS4AAAQIECBAgQIAAAQIEWiogAGhpxzlsAgQIECBAgAABAgQIECBQR0AAUEfLvgQIECBAgAABAgQIECBAoKUCAoCWdpzDJkCAAAECBAgQIECAAAECdQQEAHW07EuAAAECBAgQIECAAAECBFoqIABoacc5bAIECBAgQIAAAQIECBAgUEdAAFBHy74ECBAgQIAAAQIECBAgQKClAgKAlnacwyZAgAABAgQIECBAgAABAnUEBAB1tOxLgAABAgQIECBAgAABAgRaKiAAaGnHOWwCBAgQIECAAAECBAgQIFBHQABQR8u+BAgQIECAAAECBAgQIECgpQICgJZ2nMMmQIAAAQIECBAgQIAAAQJ1BAQAdbTsS4AAAQIECBAgQIAAAQIEWiogAGhpxzlsAgQIECBAgAABAgQIECBQR0AAUEfLvgQIECBAgAABAgQIECBAoKUCAoCWdpzDJkCAAAECBAgQIECAAAECdQQEAHW07EuAAAECBAgQIECAAAECBFoqIABoacc5bAIECBAgQIAAAQIECBAgUEdAAFBHy74ECBAgQIAAAQIECBAgQKClAgKAlnacwyZAgAABAgQIECBAgAABAnUEBAB1tOxLgAABAgQIECBAgAABAgRaKiAAaGnHOWwCBAgQIECAAAECBAgQIFBHQABQR8u+BAgQIECAAAECBAgQIECgpQICgJZ2nMMmQIAAAQIECBAgQIAAAQJ1BAQAdbTsS4AAAQIECBAgQIAAAQIEWiogAGhpxzlsAgQIECBAgAABAgQIECBQR0AAUEfLvgQIECBAgAABAgQIECBAoKUCAoCWdpzDJkCAAAECBAgQIECAAAECdQQEAHW07EuAAAECBAgQIECAAAECBFoqIABoacc5bAIECBAgQIAAAQIECBAgUEdAAFBHy74ECBAgQIAAAQIECBAgQKClAgKAlnacwyZAgAABAgQIECBAgAABAnUEBAB1tOxLgAABAgQIECBAgAABAgRaKiAAaGnHOWwCBAgQIECAAAECBAgQIFBHQABQR8u+BAgQIECAAAECBAgQIECgpQICgJZ2nMMmQIAAAQIECBAgQIAAAQJ1BAQAdbTsS4AAAQIECBAgQIAAAQIEWiogAGhpxzlsAgQIECBAgAABAgQIECBQR0AAUEfLvgQIECBAgAABAgQIECBAoKUCAoCWdpzDJkCAAAECBAgQIECAAAECdQQEAHW07EuAAAECBAgQIECAAAECBFoqIABoacc5bAIECBAgQIAAAQIECBAgUEdAAFBHy74ECBAgQIAAAQIECBAgQKClAgKAlnacwyZAgAABAgQIECBAgAABAnUEBAB1tOxLgAABAgQIECBAgAABAgRaKiAAaGnHOWwCBAgQIECAAAECBAgQIFBHQABQR8u+BAgQIECAAAECBAgQIECgpQICgJZ2nMMmQIAAAQIECBAgQIAAAQJ1BAQAdbTsS4AAAQIECBAgQIAAAQIEWirw/wAupmOjt1mRjwAAAABJRU5ErkJggg==\" width=\"639.999990463257\">"
          ],
          "text/plain": [
           "<IPython.core.display.HTML object>"
          ]
         },
         "metadata": {},
         "output_type": "display_data"
        }
       ],
       "source": [
        "t = np.sqrt(1/2)\n",
        "u_clusters = np.array([[1,0,0],[0,0,1],[t,0,t],[-t,0,t]]).T # initalizing orientations close to desired solution   \n",
        "dist = st3d.tensor_vector_distance(S,u_clusters)\n",
        "assignment = np.argmin(dist,axis = 1)\n",
        "     \n",
        "S_clusters = np.zeros((6,u_clusters.shape[1]))\n",
        "for r in range(10): # iterations of k-means\n",
        "    \n",
        "    for i in range(u_clusters.shape[1]): # collecting ST for all voxels in a cluster\n",
        "        S_clusters[:,i] = np.mean(S[:,assignment==i],axis=1)\n",
        "    val,vec = st3d.eig_special(S_clusters) # estimating new cluster orientation\n",
        "    print(f'Iter {r}: moved cluster centers for for {np.sqrt(np.sum((u_clusters-vec)**2))}')\n",
        "    u_clusters = vec\n",
        "    dist = st3d.tensor_vector_distance(S,u_clusters)\n",
        "    assignment_new = np.argmin(dist,axis = 1)\n",
        "    print(f'Iter {r}: moved {np.sum(abs(assignment-assignment_new))} voxels')\n",
        "    assignment = assignment_new\n",
        "\n",
        "st3d.show_vol(assignment.reshape(volume.shape), cmap='jet')"
       ]
      },
      {
       "cell_type": "code",
       "execution_count": null,
       "metadata": {},
       "outputs": [],
       "source": []
      }
     ],
     "metadata": {
      "kernelspec": {
       "display_name": "Python 3",
       "language": "python",
       "name": "python3"
      },
      "language_info": {
       "codemirror_mode": {
        "name": "ipython",
        "version": 3
       },
       "file_extension": ".py",
       "mimetype": "text/x-python",
       "name": "python",
       "nbconvert_exporter": "python",
       "pygments_lexer": "ipython3",
       "version": "3.7.4"
      }
     },
     "nbformat": 4,
     "nbformat_minor": 2
    }