Skip to content

Instantly share code, notes, and snippets.

@greglandrum
Created January 14, 2019 13:43
Show Gist options
  • Save greglandrum/d721822e8973ff8438cf2af283c9271e to your computer and use it in GitHub Desktop.
Save greglandrum/d721822e8973ff8438cf2af283c9271e to your computer and use it in GitHub Desktop.
KNIME from Jupyter_demo.ipynb
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"metadata": {},
"cell_type": "markdown",
"source": "# Using KNIME Analytics Platform from Python\n\nThe new [knime module for Python](https://pypi.org/project/knime/), released at the same time as [v3.7 of KNIME Analytics Platform](https://www.knime.com/knime-analytics-platform-37-highlights), allows KNIME workflows to be called from Python and integrates nicely with the Jupyter notebook.\n\nHere we'll demonstrate using a KNIME workflow that performs a complicated database query (the query is against a PostgreSQL instance of [ChEMBL24](https://www.ebi.ac.uk/chembl/) that we have running in AWS) that is parameterized on user-supplied information. \n\nThe results of the query are summarized in a couple of different ways and made available in two separate output tables."
},
{
"metadata": {},
"cell_type": "markdown",
"source": "Start by importing the knime(py) module, which can be installed from pip: `pip install knime` and then tell it where to find the KNIME executable. If you have KNIME installed in a standard location this second step isn't necessary, but I tend to have KNIME installed on my desktop."
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "import pandas as pd\nimport knime\nknime.executable_path = \"c:/Users/glandrum/Desktop/KNIME_3.7/knime.exe\"",
"execution_count": 1,
"outputs": []
},
{
"metadata": {},
"cell_type": "markdown",
"source": "Define the location of the workspace:"
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "workspace = \"c:/Users/glandrum/KNIME workspaces/KNIME nightly\"",
"execution_count": 2,
"outputs": []
},
{
"metadata": {},
"cell_type": "markdown",
"source": "Now pick a workflow and make sure it's the right one by displaying an SVG of the workflow:"
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "workflow = \"KNIME Stories/Jupyter KNIME Jupyter/Fetch ChEMBL Target Data\"\nknime.Workflow(workflow_path=workflow,workspace_path=workspace)",
"execution_count": 3,
"outputs": [
{
"data": {
"image/svg+xml": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<svg stroke-dasharray=\"none\" shape-rendering=\"auto\"\n xmlns=\"http://www.w3.org/2000/svg\" font-family=\"&apos;Dialog&apos;\"\n width=\"828\" text-rendering=\"auto\" fill-opacity=\"1\"\n contentScriptType=\"text/ecmascript\" color-interpolation=\"auto\"\n color-rendering=\"auto\" preserveAspectRatio=\"xMidYMid meet\" font-size=\"12\"\n fill=\"black\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" stroke=\"black\"\n image-rendering=\"auto\" stroke-miterlimit=\"10\" zoomAndPan=\"magnify\"\n version=\"1.0\" stroke-linecap=\"square\" stroke-linejoin=\"miter\"\n contentStyleType=\"text/css\" font-style=\"normal\" height=\"481\"\n stroke-width=\"1\" stroke-dashoffset=\"0\" font-weight=\"normal\"\n stroke-opacity=\"1\">\n <!--Generated by the Batik Graphics2D SVG Generator-->\n <defs id=\"genericDefs\"/>\n <g>\n <defs id=\"defs1\">\n <clipPath clipPathUnits=\"userSpaceOnUse\" id=\"lOcn6EHpV1XclipPath1\">\n <path d=\"M666 139 L829 139 L829 482 L666 482 L666 139 Z\"/>\n </clipPath>\n <clipPath clipPathUnits=\"userSpaceOnUse\" id=\"lOcn6EHpV1XclipPath2\">\n <path d=\"M676 149 L772 149 L772 166 L676 166 L676 149 Z\"/>\n </clipPath>\n <clipPath clipPathUnits=\"userSpaceOnUse\" id=\"lOcn6EHpV1XclipPath3\">\n <path d=\"M346 -1 L509 -1 L509 182 L346 182 L346 -1 Z\"/>\n </clipPath>\n <clipPath clipPathUnits=\"userSpaceOnUse\" id=\"lOcn6EHpV1XclipPath4\">\n <path d=\"M356 9 L459 9 L459 26 L356 26 L356 9 Z\"/>\n </clipPath>\n <clipPath clipPathUnits=\"userSpaceOnUse\" id=\"lOcn6EHpV1XclipPath5\">\n <path d=\"M714 298 L789 298 L789 315 L714 315 L714 298 Z\"/>\n </clipPath>\n <clipPath clipPathUnits=\"userSpaceOnUse\" id=\"lOcn6EHpV1XclipPath6\">\n <path d=\"M236 158 L341 158 L341 175 L236 175 L236 158 Z\"/>\n </clipPath>\n <clipPath clipPathUnits=\"userSpaceOnUse\" id=\"lOcn6EHpV1XclipPath7\">\n <path d=\"M706 438 L798 438 L798 455 L706 455 L706 438 Z\"/>\n </clipPath>\n <clipPath clipPathUnits=\"userSpaceOnUse\" id=\"lOcn6EHpV1XclipPath8\">\n <path d=\"M716 205 L778 205 L778 222 L716 222 L716 205 Z\"/>\n </clipPath>\n <clipPath clipPathUnits=\"userSpaceOnUse\" id=\"lOcn6EHpV1XclipPath9\">\n <path d=\"M703 220 L791 220 L791 237 L703 237 L703 220 Z\"/>\n </clipPath>\n <clipPath clipPathUnits=\"userSpaceOnUse\" id=\"lOcn6EHpV1XclipPath10\">\n <path d=\"M-1 -1 L33 -1 L33 33 L-1 33 L-1 -1 Z\"/>\n </clipPath>\n <clipPath clipPathUnits=\"userSpaceOnUse\" id=\"lOcn6EHpV1XclipPath11\">\n <path d=\"M-1 -1 L17 -1 L17 17 L-1 17 L-1 -1 Z\"/>\n </clipPath>\n <clipPath clipPathUnits=\"userSpaceOnUse\" id=\"lOcn6EHpV1XclipPath12\">\n <path d=\"M-1 -1 L33 -1 L33 13 L-1 13 L-1 -1 Z\"/>\n </clipPath>\n <clipPath clipPathUnits=\"userSpaceOnUse\" id=\"lOcn6EHpV1XclipPath13\">\n <path d=\"M703 253 L739 253 L739 264 L703 264 L703 253 Z\"/>\n </clipPath>\n <clipPath clipPathUnits=\"userSpaceOnUse\" id=\"lOcn6EHpV1XclipPath14\">\n <path d=\"M755 253 L791 253 L791 264 L755 264 L755 253 Z\"/>\n </clipPath>\n <clipPath clipPathUnits=\"userSpaceOnUse\" id=\"lOcn6EHpV1XclipPath15\">\n <path d=\"M228 220 L346 220 L346 237 L228 237 L228 220 Z\"/>\n </clipPath>\n <clipPath clipPathUnits=\"userSpaceOnUse\" id=\"lOcn6EHpV1XclipPath16\">\n <path d=\"M228 253 L279 253 L279 264 L228 264 L228 253 Z\"/>\n </clipPath>\n <clipPath clipPathUnits=\"userSpaceOnUse\" id=\"lOcn6EHpV1XclipPath17\">\n <path d=\"M295 253 L346 253 L346 264 L295 264 L295 253 Z\"/>\n </clipPath>\n <clipPath clipPathUnits=\"userSpaceOnUse\" id=\"lOcn6EHpV1XclipPath18\">\n <path d=\"M529 205 L644 205 L644 222 L529 222 L529 205 Z\"/>\n </clipPath>\n <clipPath clipPathUnits=\"userSpaceOnUse\" id=\"lOcn6EHpV1XclipPath19\">\n <path d=\"M522 220 L652 220 L652 237 L522 237 L522 220 Z\"/>\n </clipPath>\n <clipPath clipPathUnits=\"userSpaceOnUse\" id=\"lOcn6EHpV1XclipPath20\">\n <path d=\"M522 243 L579 243 L579 254 L522 254 L522 243 Z\"/>\n </clipPath>\n <clipPath clipPathUnits=\"userSpaceOnUse\" id=\"lOcn6EHpV1XclipPath21\">\n <path d=\"M522 262 L579 262 L579 273 L522 273 L522 262 Z\"/>\n </clipPath>\n <clipPath clipPathUnits=\"userSpaceOnUse\" id=\"lOcn6EHpV1XclipPath22\">\n <path d=\"M595 243 L652 243 L652 254 L595 254 L595 243 Z\"/>\n </clipPath>\n <clipPath clipPathUnits=\"userSpaceOnUse\" id=\"lOcn6EHpV1XclipPath23\">\n <path d=\"M595 262 L652 262 L652 273 L595 273 L595 262 Z\"/>\n </clipPath>\n <clipPath clipPathUnits=\"userSpaceOnUse\" id=\"lOcn6EHpV1XclipPath24\">\n <path d=\"M396 65 L458 65 L458 82 L396 82 L396 65 Z\"/>\n </clipPath>\n <clipPath clipPathUnits=\"userSpaceOnUse\" id=\"lOcn6EHpV1XclipPath25\">\n <path d=\"M389 80 L466 80 L466 97 L389 97 L389 80 Z\"/>\n </clipPath>\n <clipPath clipPathUnits=\"userSpaceOnUse\" id=\"lOcn6EHpV1XclipPath26\">\n <path d=\"M389 113 L419 113 L419 124 L389 124 L389 113 Z\"/>\n </clipPath>\n <clipPath clipPathUnits=\"userSpaceOnUse\" id=\"lOcn6EHpV1XclipPath27\">\n <path d=\"M436 113 L466 113 L466 124 L436 124 L436 113 Z\"/>\n </clipPath>\n <clipPath clipPathUnits=\"userSpaceOnUse\" id=\"lOcn6EHpV1XclipPath28\">\n <path d=\"M245 80 L330 80 L330 97 L245 97 L245 80 Z\"/>\n </clipPath>\n <clipPath clipPathUnits=\"userSpaceOnUse\" id=\"lOcn6EHpV1XclipPath29\">\n <path d=\"M296 113 L330 113 L330 124 L296 124 L296 113 Z\"/>\n </clipPath>\n <clipPath clipPathUnits=\"userSpaceOnUse\" id=\"lOcn6EHpV1XclipPath30\">\n <path d=\"M375 220 L480 220 L480 237 L375 237 L375 220 Z\"/>\n </clipPath>\n <clipPath clipPathUnits=\"userSpaceOnUse\" id=\"lOcn6EHpV1XclipPath31\">\n <path d=\"M375 253 L419 253 L419 264 L375 264 L375 253 Z\"/>\n </clipPath>\n <clipPath clipPathUnits=\"userSpaceOnUse\" id=\"lOcn6EHpV1XclipPath32\">\n <path d=\"M436 253 L480 253 L480 264 L436 264 L436 253 Z\"/>\n </clipPath>\n <clipPath clipPathUnits=\"userSpaceOnUse\" id=\"lOcn6EHpV1XclipPath33\">\n <path d=\"M375 360 L480 360 L480 377 L375 377 L375 360 Z\"/>\n </clipPath>\n <clipPath clipPathUnits=\"userSpaceOnUse\" id=\"lOcn6EHpV1XclipPath34\">\n <path d=\"M375 393 L419 393 L419 404 L375 404 L375 393 Z\"/>\n </clipPath>\n <clipPath clipPathUnits=\"userSpaceOnUse\" id=\"lOcn6EHpV1XclipPath35\">\n <path d=\"M436 393 L480 393 L480 404 L436 404 L436 393 Z\"/>\n </clipPath>\n <clipPath clipPathUnits=\"userSpaceOnUse\" id=\"lOcn6EHpV1XclipPath36\">\n <path d=\"M228 360 L346 360 L346 377 L228 377 L228 360 Z\"/>\n </clipPath>\n <clipPath clipPathUnits=\"userSpaceOnUse\" id=\"lOcn6EHpV1XclipPath37\">\n <path d=\"M228 393 L279 393 L279 404 L228 404 L228 393 Z\"/>\n </clipPath>\n <clipPath clipPathUnits=\"userSpaceOnUse\" id=\"lOcn6EHpV1XclipPath38\">\n <path d=\"M295 393 L346 393 L346 404 L295 404 L295 393 Z\"/>\n </clipPath>\n <clipPath clipPathUnits=\"userSpaceOnUse\" id=\"lOcn6EHpV1XclipPath39\">\n <path d=\"M529 345 L644 345 L644 362 L529 362 L529 345 Z\"/>\n </clipPath>\n <clipPath clipPathUnits=\"userSpaceOnUse\" id=\"lOcn6EHpV1XclipPath40\">\n <path d=\"M522 360 L652 360 L652 377 L522 377 L522 360 Z\"/>\n </clipPath>\n <clipPath clipPathUnits=\"userSpaceOnUse\" id=\"lOcn6EHpV1XclipPath41\">\n <path d=\"M522 383 L579 383 L579 394 L522 394 L522 383 Z\"/>\n </clipPath>\n <clipPath clipPathUnits=\"userSpaceOnUse\" id=\"lOcn6EHpV1XclipPath42\">\n <path d=\"M522 402 L579 402 L579 413 L522 413 L522 402 Z\"/>\n </clipPath>\n <clipPath clipPathUnits=\"userSpaceOnUse\" id=\"lOcn6EHpV1XclipPath43\">\n <path d=\"M595 383 L652 383 L652 394 L595 394 L595 383 Z\"/>\n </clipPath>\n <clipPath clipPathUnits=\"userSpaceOnUse\" id=\"lOcn6EHpV1XclipPath44\">\n <path d=\"M595 402 L652 402 L652 413 L595 413 L595 402 Z\"/>\n </clipPath>\n <clipPath clipPathUnits=\"userSpaceOnUse\" id=\"lOcn6EHpV1XclipPath45\">\n <path d=\"M716 345 L778 345 L778 362 L716 362 L716 345 Z\"/>\n </clipPath>\n <clipPath clipPathUnits=\"userSpaceOnUse\" id=\"lOcn6EHpV1XclipPath46\">\n <path d=\"M703 360 L791 360 L791 377 L703 377 L703 360 Z\"/>\n </clipPath>\n <clipPath clipPathUnits=\"userSpaceOnUse\" id=\"lOcn6EHpV1XclipPath47\">\n <path d=\"M703 393 L739 393 L739 404 L703 404 L703 393 Z\"/>\n </clipPath>\n <clipPath clipPathUnits=\"userSpaceOnUse\" id=\"lOcn6EHpV1XclipPath48\">\n <path d=\"M755 393 L791 393 L791 404 L755 404 L755 393 Z\"/>\n </clipPath>\n <clipPath clipPathUnits=\"userSpaceOnUse\" id=\"lOcn6EHpV1XclipPath49\">\n <path d=\"M14 285 L119 285 L119 302 L14 302 L14 285 Z\"/>\n </clipPath>\n <clipPath clipPathUnits=\"userSpaceOnUse\" id=\"lOcn6EHpV1XclipPath50\">\n <path d=\"M-1 300 L135 300 L135 317 L-1 317 L-1 300 Z\"/>\n </clipPath>\n <clipPath clipPathUnits=\"userSpaceOnUse\" id=\"lOcn6EHpV1XclipPath51\">\n <path d=\"M75 333 L135 333 L135 344 L75 344 L75 333 Z\"/>\n </clipPath>\n <clipPath clipPathUnits=\"userSpaceOnUse\" id=\"lOcn6EHpV1XclipPath52\">\n <path d=\"M-1 -1 L1379 -1 L1379 1007 L-1 1007 L-1 -1 Z\"/>\n </clipPath>\n </defs>\n <g fill=\"white\" font-family=\"&apos;Segoe UI&apos;\"\n stroke-linejoin=\"round\" stroke=\"white\" stroke-width=\"0\"\n stroke-miterlimit=\"0\">\n <rect x=\"667\" y=\"140\" clip-path=\"url(#lOcn6EHpV1XclipPath1)\" width=\"161\"\n height=\"341\" stroke=\"none\"/>\n <text x=\"677\" y=\"162\" clip-path=\"url(#lOcn6EHpV1XclipPath2)\" fill=\"black\"\n font-family=\"&apos;Arial&apos;\" stroke=\"none\"\n xml:space=\"preserve\">Output to caller</text>\n </g><g fill=\"rgb(255,216,0)\" stroke-width=\"10\"\n font-family=\"&apos;Segoe UI&apos;\" stroke-linecap=\"butt\"\n stroke=\"rgb(255,216,0)\">\n <rect x=\"672\" y=\"145\" clip-path=\"url(#lOcn6EHpV1XclipPath1)\" fill=\"none\"\n width=\"151\" height=\"331\"/>\n <rect x=\"347\" y=\"0\" clip-path=\"url(#lOcn6EHpV1XclipPath3)\" fill=\"white\"\n width=\"161\" height=\"181\" stroke=\"none\"/>\n <text x=\"357\" y=\"22\" clip-path=\"url(#lOcn6EHpV1XclipPath4)\" fill=\"black\"\n font-family=\"&apos;Arial&apos;\" stroke=\"none\"\n xml:space=\"preserve\">Input from caller</text><rect x=\"352\"\n y=\"5\" clip-path=\"url(#lOcn6EHpV1XclipPath3)\" fill=\"none\" width=\"151\"\n height=\"171\"/>\n <text x=\"715\" y=\"311\" clip-path=\"url(#lOcn6EHpV1XclipPath5)\" fill=\"black\"\n font-family=\"&apos;Arial&apos;\" stroke=\"none\"\n xml:space=\"preserve\">details data</text><text x=\"237\" y=\"171\"\n clip-path=\"url(#lOcn6EHpV1XclipPath6)\" fill=\"black\"\n font-family=\"&apos;Arial&apos;\" stroke=\"none\"\n xml:space=\"preserve\">Sample input data</text><text x=\"707\"\n y=\"451\" clip-path=\"url(#lOcn6EHpV1XclipPath7)\" fill=\"black\"\n font-family=\"&apos;Arial&apos;\" stroke=\"none\"\n xml:space=\"preserve\">summary data</text>\n </g><g stroke-width=\"10\" font-weight=\"bold\"\n font-family=\"&apos;Arial&apos;\" stroke-linecap=\"butt\">\n <text xml:space=\"preserve\" x=\"717\" y=\"218\"\n clip-path=\"url(#lOcn6EHpV1XclipPath8)\" stroke=\"none\">Container</text><text xml:space=\"preserve\"\n x=\"704\" y=\"233\" clip-path=\"url(#lOcn6EHpV1XclipPath9)\" stroke=\"none\">Output (Table)</text><image xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n transform=\"matrix(1,0,0,1,731,243)\" width=\"32\"\n xlink:show=\"embed\" xlink:type=\"simple\"\n clip-path=\"url(#lOcn6EHpV1XclipPath10)\" preserveAspectRatio=\"none\"\n font-weight=\"normal\" height=\"32\" x=\"0\" y=\"0\"\n xlink:href=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAbUlEQVR42u2XsQ2A\nQAwDQ8QGDPZiiJ+KCSh/DiZgmYgg5amok+YsufbFqbxc97mJyOFubpUcmXu4+xrh\nu+RKZ6bG5VVqmlj7bxOV4d8vAAAAAAAAAAAAAAAAAAAArDDfNFZqlca7jvscihXz\n/AFzcw2txpwGwQAAAABJRU5ErkJggg==\" xlink:actuate=\"onLoad\"/>\n <image xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n transform=\"matrix(1,0,0,1,739,251)\" width=\"16\"\n xlink:show=\"embed\" xlink:type=\"simple\"\n clip-path=\"url(#lOcn6EHpV1XclipPath11)\" preserveAspectRatio=\"none\"\n font-weight=\"normal\" height=\"16\" x=\"0\" y=\"0\"\n xlink:href=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABUUlEQVR42q1TsU6E\nQBBdOIwYGiso9RpqSjqxspTKGjpKyus4urOz9Auot7VS+AMIheXdD5BQCQkRZ8hA\nyIpS6CQvLLPvzc7Ozkh93zPR4jh24PMquG+jKHoTuTL7oyl0ogsfxJ78uwXuDnhH\nWiOPQ0ZcIccT4ArwQFmdLwS4A7wDPgEXALwm30iShNHuiXQ2ZiWaqqqs6zqFOGiX\naZpKeFq4dk8Ue57HXNcVt0KZ7p6uiQ3DELdQ48r0NGPxmGVZLAiCQTgX53nOOOfz\nAHvUfruvbduDwPf94V/X9SXxZFhEhzK4RkdZlsw0zUGoadpv4i0U8Yg1wN2b0ds0\nDUuSBCvOqqr68WTS8I3jOCq96WRt27KiKFiWZWsP9IhFxPRP5PhAPS7qul4StMRB\nO6F2LGIotPIzdd7cXgDBvJWnWcCeHh00G4eFAAfgjbPg/ds0fgFP0HPHJaLVVAAA\nAABJRU5ErkJggg==\" xlink:actuate=\"onLoad\"/>\n <image xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n transform=\"matrix(1,0,0,1,731,282)\" width=\"32\"\n xlink:show=\"embed\" xlink:type=\"simple\"\n clip-path=\"url(#lOcn6EHpV1XclipPath12)\" preserveAspectRatio=\"none\"\n font-weight=\"normal\" height=\"12\" x=\"0\" y=\"0\" font-size=\"4\"\n xlink:href=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAMCAYAAAADFL+5AAABuklEQVR42sVUy07C\nUBA9LdW2PigEwY2JMaCfoVv9C7/Aj/FnXLHQf2AhlLhxpUJ5WNsSKN5zpTeFVgwu\n9CSTtHceZ+7cmdGazeY1gFsh+/hbjIXcGL8nn0PHVH7FYBht0wDkvDXS5Lquw7Zt\nOMV9mKaJ4WgE/91HNJkseZ4U73B08ACjHMv/qafj+e0cT6OrJTtzexu7e7siXhFR\nFIl4YwRBgDiOVRJG8qVpGkolB43GqQpQrR3iI/iA2+4gFAES8uP6PfSypey2HODY\nuQe6UElY4gKNs1Ps2DvK7kiI63bgeQPM5/OvSydKy7JQrzcydWKASqWiys6bp8lV\n9cQZdbQh6JMmT0AOcik/VS6RMauQh2qtikKhIN88KXseqKMNbemTB3KQK5PAf0El\nwCZJ3mUVry+vmM1mstvZcN+BOtrQlj65syM4okU/LSUQhiG6XTfjwCbs9XpJAWW3\nx16YseMZdck40oe+qyAHudSzpTMbDIZotVprx1B2uej27BheLI0hp6bz2M4dw3Sl\njcVGkruA8+n7vpR1INHT6PLHRcTEo/4E/b737TbkE9wsktgQmiDekvKLLahW8Sd3\nI9NSe3Ml5QAAAABJRU5ErkJggg==\" xlink:actuate=\"onLoad\"/>\n <polygon text-rendering=\"optimizeLegibility\"\n clip-path=\"url(#lOcn6EHpV1XclipPath13)\"\n points=\" 722 254 731 258 722 263\" stroke=\"none\"/>\n <polygon text-rendering=\"optimizeLegibility\"\n clip-path=\"url(#lOcn6EHpV1XclipPath14)\"\n points=\" 763 254 772 258 763 263\" stroke=\"none\"/>\n <text x=\"229\" y=\"233\" clip-path=\"url(#lOcn6EHpV1XclipPath15)\"\n text-rendering=\"optimizeLegibility\" stroke=\"none\"\n xml:space=\"preserve\">DB GroupBy (Labs)</text><image xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n text-rendering=\"optimizeLegibility\"\n transform=\"matrix(1,0,0,1,271,243)\" width=\"32\"\n xlink:show=\"embed\" xlink:type=\"simple\"\n clip-path=\"url(#lOcn6EHpV1XclipPath10)\" preserveAspectRatio=\"none\"\n font-weight=\"normal\" height=\"32\" x=\"0\" y=\"0\"\n xlink:href=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAaklEQVR42u2XsQ2A\nMAwEjcUGDBYxRKZiiqzCQAZHcqio7eZe+vrP7+q355ZDRC53c6vkyNzD3fcIPyVX\nujI1Lq9S08Taf5uoDP9+AQAAAAAAAAAAAAAAAAAAYIX5prFSqzTmOu5rKFbM8xel\nUA0xDHJAMgAAAABJRU5ErkJggg==\" xlink:actuate=\"onLoad\"/>\n <image xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n text-rendering=\"optimizeLegibility\"\n transform=\"matrix(1,0,0,1,279,251)\" width=\"16\"\n xlink:show=\"embed\" xlink:type=\"simple\"\n clip-path=\"url(#lOcn6EHpV1XclipPath11)\" preserveAspectRatio=\"none\"\n font-weight=\"normal\" height=\"16\" x=\"0\" y=\"0\"\n xlink:href=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABHklEQVR42mP8//8/\nAyWAEYgvAfE1KD4DNHAbKQYwA/E0INYBYkcgjm5sbNRtaGhYRYoL0P3wEohlgJgL\niLuw6DkEdOUyGIcJSeIdEG8BYmeggj9QA9KxYDtk01iAOACIzwM1PUKz6RUQSyLx\ntYF4D7pzWIAaNzJCAMjZgUAcA8RuQPGPQPoF3K+MjBLYwoAFKHEPSEsBMTtU7CsQ\nf8ITbiFAPRbIXlBEU7D1P/7EAQobCWQDQADk3GfQQGwnEHOLgOZnIBvAAxT4iuRX\nDiBmhkaxDpJGdaxhAA0HPSCtCsT+0FgBhQkPKHYIJSSQAR/QExLQRV+AhoLSyExs\nCQndAHQATsZAQ0AxkUGMC24B8WMgfgKKASBeQ1JupDQ7AwD2W1gnlxG/HQAAAABJRU5ErkJggg==\"\n xlink:actuate=\"onLoad\"/>\n <image xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n text-rendering=\"optimizeLegibility\"\n transform=\"matrix(1,0,0,1,271,282)\" width=\"32\"\n xlink:show=\"embed\" xlink:type=\"simple\"\n clip-path=\"url(#lOcn6EHpV1XclipPath12)\" preserveAspectRatio=\"none\"\n font-weight=\"normal\" height=\"12\" x=\"0\" y=\"0\" font-size=\"4\"\n xlink:href=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAMCAYAAAADFL+5AAAB2UlEQVR42sVUTU/b\nMBh+7DRpEqBNV1EY4wTlOmkXBEK77DJpv4JfwI/h30yqJi4cxhHBaYUT4qN8pGkI\nSZrFxg7YKiT0xvZYlvz6tf08fv2+Jr1ebxvAruhz+LcIRd+h703ORct5DsbZa5fk\n3K1NklNK4TgOvEYDlmVhFI5wH0VI0/GLnaZpwnUdNJteYQfBEA8PMbIs02uYaAf3\ne7jBBTJrDMoM2GMXX5xNdMxPWkRNjQghaHlNdLtr+pDOwoI4OMKffh9Jkmry5aWl\nwqfwcXERg6srnJ2faxH74U/czF6CmBQEtIhEjAi//V/4Sn7Aq7WfLq0OcWwbqyvd\nUghddwbtD+0J23lBPilW+iRSlsCvDQry12Aew2FyoG29wqrXQSipfMfO/DwMwyjG\nKuxVUL4R85E7vDonBEVCorKA/wUtYJym4Kxa9eD6Gnme64R7C8rXoC0YcXU0iaCw\n+UxZQJwkODntlzbIJLy9u52w4yLhSiLFnPRJ1KmN1t8OeMbKNx5SfLbXta2rgHMO\nfxjg6Ph4ahnKLJfZfjf0p5bh1tz3N8tQVYASEKq/gDGGSBDKPg2SKAhkH015W4qN\n2W9F+clPiMhitEspF8qZnWcR7wJJbBADlNDKr/gRdwHUkatixdAAAAAASUVORK5C\nYII=\" xlink:actuate=\"onLoad\"/>\n </g>\n <g stroke-linecap=\"butt\" fill=\"rgb(102,0,45)\"\n text-rendering=\"optimizeLegibility\" font-family=\"&apos;Arial&apos;\"\n stroke=\"rgb(102,0,45)\" stroke-width=\"10\">\n <polygon clip-path=\"url(#lOcn6EHpV1XclipPath16)\"\n points=\" 262 254 271 254 271 263 262 263\" stroke=\"none\"/>\n <polygon clip-path=\"url(#lOcn6EHpV1XclipPath17)\"\n points=\" 303 254 312 254 312 263 303 263\" stroke=\"none\"/>\n <text x=\"530\" y=\"218\" clip-path=\"url(#lOcn6EHpV1XclipPath18)\" fill=\"black\"\n stroke=\"none\" font-weight=\"bold\" xml:space=\"preserve\">Parameterized DB</text><text x=\"523\"\n y=\"233\" clip-path=\"url(#lOcn6EHpV1XclipPath19)\" fill=\"black\"\n stroke=\"none\" font-weight=\"bold\" xml:space=\"preserve\">Query Reader (Labs)</text><image xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n stroke=\"black\" transform=\"matrix(1,0,0,1,571,243)\" width=\"32\"\n xlink:show=\"embed\" xlink:type=\"simple\" fill=\"black\"\n clip-path=\"url(#lOcn6EHpV1XclipPath10)\" preserveAspectRatio=\"none\"\n height=\"32\" x=\"0\" y=\"0\"\n xlink:href=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAa0lEQVR42u2XsQ2A\nQAwDQ8QGbMIiL4b4lWiY4hcMBClPRZ00Z8m1L07l5T73TUQud3Or5Mjcw93XCD8k\nVzozNS6vUtPE2n+bqAz/fgEAAAAAAAAAAAAAAAAAAGCF+aaxUqs03nXc51CsmOcP\nA/INJ1T1pwYAAAAASUVORK5CYII=\" xlink:actuate=\"onLoad\"/>\n <image xmlns:xlink=\"http://www.w3.org/1999/xlink\" stroke=\"black\"\n transform=\"matrix(1,0,0,1,579,251)\" width=\"16\"\n xlink:show=\"embed\" xlink:type=\"simple\" fill=\"black\"\n clip-path=\"url(#lOcn6EHpV1XclipPath11)\" preserveAspectRatio=\"none\"\n height=\"16\" x=\"0\" y=\"0\"\n xlink:href=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABDUlEQVR42mNmYGC4\nDcSOQCwCxPeB+BsDKuAE4lYg3gnEjUCsBsQHgPg7SJIZiCcBsSYQewFxLhA/BeIL\nSAbkAHEzEL+DyjkAMT8QbwVJMmGxbQqaWD8Q7wDiMCAOh7rQCybJwoAJutH4jEjs\nBiDmAuLPyAb8AeLLUH/Nh7KxAZDmYihbB1mCiYE48AaI/6MLgjT/Q+KrQkMcGxAG\n4p8MWPyXDsR60KjUxOJvvAAUBjPQxN7hUPsfm+HosbAXiPMYSATN0PiVZaAS0CNF\nMSgpCwCxGRAnQVNdIxTjA/+hYXEAFAbv0ST/4Qg8dFAPwuiB+AOIq/AkZWRDQa5s\nAEneBOIrQHwciJcB8TNSwgAABqAyhgP6VoQAAAAASUVORK5CYII=\" xlink:actuate=\"onLoad\"/>\n <image xmlns:xlink=\"http://www.w3.org/1999/xlink\" stroke=\"black\"\n transform=\"matrix(1,0,0,1,571,282)\" width=\"32\"\n xlink:show=\"embed\" xlink:type=\"simple\" fill=\"black\"\n clip-path=\"url(#lOcn6EHpV1XclipPath12)\" preserveAspectRatio=\"none\"\n height=\"12\" x=\"0\" y=\"0\" font-size=\"4\"\n xlink:href=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAMCAYAAAADFL+5AAAB2UlEQVR42sVUTU/b\nMBh+7DRpEqBNV1EY4wTlOmkXBEK77DJpv4JfwI/h30yqJi4cxhHBaYUT4qN8pGkI\nSZrFxg7YKiT0xvZYlvz6tf08fv2+Jr1ebxvAruhz+LcIRd+h703ORct5DsbZa5fk\n3K1NklNK4TgOvEYDlmVhFI5wH0VI0/GLnaZpwnUdNJteYQfBEA8PMbIs02uYaAf3\ne7jBBTJrDMoM2GMXX5xNdMxPWkRNjQghaHlNdLtr+pDOwoI4OMKffh9Jkmry5aWl\nwqfwcXERg6srnJ2faxH74U/czF6CmBQEtIhEjAi//V/4Sn7Aq7WfLq0OcWwbqyvd\nUghddwbtD+0J23lBPilW+iRSlsCvDQry12Aew2FyoG29wqrXQSipfMfO/DwMwyjG\nKuxVUL4R85E7vDonBEVCorKA/wUtYJym4Kxa9eD6Gnme64R7C8rXoC0YcXU0iaCw\n+UxZQJwkODntlzbIJLy9u52w4yLhSiLFnPRJ1KmN1t8OeMbKNx5SfLbXta2rgHMO\nfxjg6Ph4ahnKLJfZfjf0p5bh1tz3N8tQVYASEKq/gDGGSBDKPg2SKAhkH015W4qN\n2W9F+clPiMhitEspF8qZnWcR7wJJbBADlNDKr/gRdwHUkatixdAAAAAASUVORK5C\nYII=\" xlink:actuate=\"onLoad\"/>\n <polygon fill=\"black\" clip-path=\"url(#lOcn6EHpV1XclipPath20)\"\n points=\" 562 244 571 248 562 253\" stroke=\"none\"/>\n <polygon clip-path=\"url(#lOcn6EHpV1XclipPath21)\"\n points=\" 562 263 571 263 571 272 562 272\" stroke=\"none\"/>\n <polygon fill=\"black\" clip-path=\"url(#lOcn6EHpV1XclipPath22)\"\n points=\" 603 244 612 248 603 253\" stroke=\"none\"/>\n <polygon fill=\"black\" clip-path=\"url(#lOcn6EHpV1XclipPath23)\"\n points=\" 603 263 612 267 603 272\" stroke=\"none\"/>\n <text x=\"397\" y=\"78\" clip-path=\"url(#lOcn6EHpV1XclipPath24)\" fill=\"black\"\n stroke=\"none\" font-weight=\"bold\" xml:space=\"preserve\">Container</text><text x=\"390\"\n y=\"93\" clip-path=\"url(#lOcn6EHpV1XclipPath25)\" fill=\"black\" stroke=\"none\"\n font-weight=\"bold\" xml:space=\"preserve\">Input (Table)</text><image xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n stroke=\"black\" transform=\"matrix(1,0,0,1,411,103)\" width=\"32\"\n xlink:show=\"embed\" xlink:type=\"simple\" fill=\"black\"\n clip-path=\"url(#lOcn6EHpV1XclipPath10)\" preserveAspectRatio=\"none\"\n height=\"32\" x=\"0\" y=\"0\"\n xlink:href=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAbUlEQVR42u2XsQ2A\nQAwDQ8QGDPZiiJ+KCSh/DiZgmYgg5amok+YsufbFqbxc97mJyOFubpUcmXu4+xrh\nu+RKZ6bG5VVqmlj7bxOV4d8vAAAAAAAAAAAAAAAAAAAArDDfNFZqlca7jvscihXz\n/AFzcw2txpwGwQAAAABJRU5ErkJggg==\" xlink:actuate=\"onLoad\"/>\n <image xmlns:xlink=\"http://www.w3.org/1999/xlink\" stroke=\"black\"\n transform=\"matrix(1,0,0,1,419,111)\" width=\"16\"\n xlink:show=\"embed\" xlink:type=\"simple\" fill=\"black\"\n clip-path=\"url(#lOcn6EHpV1XclipPath11)\" preserveAspectRatio=\"none\"\n height=\"16\" x=\"0\" y=\"0\"\n xlink:href=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAA60lEQVR42mP8//8/\nAzpobGx0AFL70YQd6+vrD6CrZWKgELBAbQwAUiDcABWvwKK2AqjuAZQNUrcB6KIN\nLFCBCUAsD8RhUFexYzHAHYhvAPE/IOYEYpA3NzAzMjKCTPOHKmKFuQqPi1mhbIGD\nBw8ygmwroCAICpigfj9IhmaQngAmaNQ0kGFAA0gvRjQCBcEYHxslHUATDVkuAOll\nbGho+ADk8JMZiB+ZoGmAXDABFIgg5z+ECnwH4p94NPyEqgGBhyC9sERTgJaUZ0BT\nHjLYCcQZyEkZnhdAaRomAM0bHVgM6ACqg+WFBKrlRgCqDEnUPy6RDQAAAABJRU5E\nrkJggg==\" xlink:actuate=\"onLoad\"/>\n <image xmlns:xlink=\"http://www.w3.org/1999/xlink\" stroke=\"black\"\n transform=\"matrix(1,0,0,1,411,142)\" width=\"32\"\n xlink:show=\"embed\" xlink:type=\"simple\" fill=\"black\"\n clip-path=\"url(#lOcn6EHpV1XclipPath12)\" preserveAspectRatio=\"none\"\n height=\"12\" x=\"0\" y=\"0\" font-size=\"4\"\n xlink:href=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAMCAYAAAADFL+5AAAB2UlEQVR42sVUTU/b\nMBh+7DRpEqBNV1EY4wTlOmkXBEK77DJpv4JfwI/h30yqJi4cxhHBaYUT4qN8pGkI\nSZrFxg7YKiT0xvZYlvz6tf08fv2+Jr1ebxvAruhz+LcIRd+h703ORct5DsbZa5fk\n3K1NklNK4TgOvEYDlmVhFI5wH0VI0/GLnaZpwnUdNJteYQfBEA8PMbIs02uYaAf3\ne7jBBTJrDMoM2GMXX5xNdMxPWkRNjQghaHlNdLtr+pDOwoI4OMKffh9Jkmry5aWl\nwqfwcXERg6srnJ2faxH74U/czF6CmBQEtIhEjAi//V/4Sn7Aq7WfLq0OcWwbqyvd\nUghddwbtD+0J23lBPilW+iRSlsCvDQry12Aew2FyoG29wqrXQSipfMfO/DwMwyjG\nKuxVUL4R85E7vDonBEVCorKA/wUtYJym4Kxa9eD6Gnme64R7C8rXoC0YcXU0iaCw\n+UxZQJwkODntlzbIJLy9u52w4yLhSiLFnPRJ1KmN1t8OeMbKNx5SfLbXta2rgHMO\nfxjg6Ph4ahnKLJfZfjf0p5bh1tz3N8tQVYASEKq/gDGGSBDKPg2SKAhkH015W4qN\n2W9F+clPiMhitEspF8qZnWcR7wJJbBADlNDKr/gRdwHUkatixdAAAAAASUVORK5C\nYII=\" xlink:actuate=\"onLoad\"/>\n <polygon fill=\"none\" stroke-width=\"1\" clip-path=\"url(#lOcn6EHpV1XclipPath26)\"\n points=\" 402 114 410 117 402 122\" stroke=\"black\"/>\n <polygon fill=\"black\" stroke-width=\"1\" clip-path=\"url(#lOcn6EHpV1XclipPath27)\"\n points=\" 443 114 452 118 443 123\" stroke=\"none\"/>\n </g>\n <g text-rendering=\"optimizeLegibility\" font-weight=\"bold\"\n font-family=\"&apos;Arial&apos;\" stroke-linecap=\"butt\">\n <text xml:space=\"preserve\" x=\"246\" y=\"93\"\n clip-path=\"url(#lOcn6EHpV1XclipPath28)\" stroke=\"none\">Table Creator</text><image xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n transform=\"matrix(1,0,0,1,271,103)\" width=\"32\"\n xlink:show=\"embed\" xlink:type=\"simple\"\n clip-path=\"url(#lOcn6EHpV1XclipPath10)\" preserveAspectRatio=\"none\"\n font-weight=\"normal\" height=\"32\" x=\"0\" y=\"0\"\n xlink:href=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAa0lEQVR42u2XsQ2A\nQAwDQ8QGbMIiL4b4lWiY4hcMBClPRZ00Z8m1L07l5T73TUQud3Or5Mjcw93XCD8k\nVzozNS6vUtPE2n+bqAz/fgEAAAAAAAAAAAAAAAAAAGCF+aaxUqs03nXc51CsmOcP\nA/INJ1T1pwYAAAAASUVORK5CYII=\" xlink:actuate=\"onLoad\"/>\n <image xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n transform=\"matrix(1,0,0,1,279,111)\" width=\"16\"\n xlink:show=\"embed\" xlink:type=\"simple\"\n clip-path=\"url(#lOcn6EHpV1XclipPath11)\" preserveAspectRatio=\"none\"\n font-weight=\"normal\" height=\"16\" x=\"0\" y=\"0\"\n xlink:href=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAATUlEQVR42mNkYGD4\nz0AE+P//PyM2cSaoJBjjY+MCTAwUAsZRLwwHLzASciKGBkbG/8gGkuUFKXFp0l0A\ns5n6gUhOGIC88PTFE0aquAAAFb5YHdYo+gQAAAAASUVORK5CYII=\" xlink:actuate=\"onLoad\"/>\n <image xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n transform=\"matrix(1,0,0,1,271,142)\" width=\"32\"\n xlink:show=\"embed\" xlink:type=\"simple\"\n clip-path=\"url(#lOcn6EHpV1XclipPath12)\" preserveAspectRatio=\"none\"\n font-weight=\"normal\" height=\"12\" x=\"0\" y=\"0\" font-size=\"4\"\n xlink:href=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAMCAYAAAADFL+5AAAB2UlEQVR42sVUTU/b\nMBh+7DRpEqBNV1EY4wTlOmkXBEK77DJpv4JfwI/h30yqJi4cxhHBaYUT4qN8pGkI\nSZrFxg7YKiT0xvZYlvz6tf08fv2+Jr1ebxvAruhz+LcIRd+h703ORct5DsbZa5fk\n3K1NklNK4TgOvEYDlmVhFI5wH0VI0/GLnaZpwnUdNJteYQfBEA8PMbIs02uYaAf3\ne7jBBTJrDMoM2GMXX5xNdMxPWkRNjQghaHlNdLtr+pDOwoI4OMKffh9Jkmry5aWl\nwqfwcXERg6srnJ2faxH74U/czF6CmBQEtIhEjAi//V/4Sn7Aq7WfLq0OcWwbqyvd\nUghddwbtD+0J23lBPilW+iRSlsCvDQry12Aew2FyoG29wqrXQSipfMfO/DwMwyjG\nKuxVUL4R85E7vDonBEVCorKA/wUtYJym4Kxa9eD6Gnme64R7C8rXoC0YcXU0iaCw\n+UxZQJwkODntlzbIJLy9u52w4yLhSiLFnPRJ1KmN1t8OeMbKNx5SfLbXta2rgHMO\nfxjg6Ph4ahnKLJfZfjf0p5bh1tz3N8tQVYASEKq/gDGGSBDKPg2SKAhkH015W4qN\n2W9F+clPiMhitEspF8qZnWcR7wJJbBADlNDKr/gRdwHUkatixdAAAAAASUVORK5C\nYII=\" xlink:actuate=\"onLoad\"/>\n <polygon clip-path=\"url(#lOcn6EHpV1XclipPath29)\"\n points=\" 303 114 312 118 303 123\" stroke=\"none\"/>\n <text xml:space=\"preserve\" x=\"376\" y=\"233\"\n clip-path=\"url(#lOcn6EHpV1XclipPath30)\" stroke=\"none\">DB Sorter (Labs)</text><image xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n transform=\"matrix(1,0,0,1,411,243)\" width=\"32\"\n xlink:show=\"embed\" xlink:type=\"simple\"\n clip-path=\"url(#lOcn6EHpV1XclipPath10)\" preserveAspectRatio=\"none\"\n font-weight=\"normal\" height=\"32\" x=\"0\" y=\"0\"\n xlink:href=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAaklEQVR42u2XsQ2A\nMAwEjcUGDBYxRKZiiqzCQAZHcqio7eZe+vrP7+q355ZDRC53c6vkyNzD3fcIPyVX\nujI1Lq9S08Taf5uoDP9+AQAAAAAAAAAAAAAAAAAAYIX5prFSqzTmOu5rKFbM8xel\nUA0xDHJAMgAAAABJRU5ErkJggg==\" xlink:actuate=\"onLoad\"/>\n <image xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n transform=\"matrix(1,0,0,1,419,251)\" width=\"16\"\n xlink:show=\"embed\" xlink:type=\"simple\"\n clip-path=\"url(#lOcn6EHpV1XclipPath11)\" preserveAspectRatio=\"none\"\n font-weight=\"normal\" height=\"16\" x=\"0\" y=\"0\"\n xlink:href=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAA+UlEQVR42mNmYGC4\nDcSOQCwCxPeB+BsDCYAZiCcBsSYQewFxLhA/BeILSGr+A3EjEp8RmWZCM5ATiKcQ\nsPQ/EsYwAAS68WhmgWmE0iwggT9AfBmIDwDxfCgbF0hG54MMYAfif0SEF8jPM9DE\n0PkMqkDcisXPDLjEQC5IB2I9aFRqQsWriY1GFizOeEdKOmBB4+8F4jwsTv+PlgZQ\nDGgB4itAfAyIHyPJZaC5LgObC0DpoBaIVyJp1oPSc9HUzsVlgAAQ20GT63kgvgiV\n+4OWbP/gCoP3aGL/0OIehv8TE4g/gLgKS+D9x5Ko4AbcggbicSBeBsTPSIlGALhM\nNH/iJ7YkAAAAAElFTkSuQmCC\" xlink:actuate=\"onLoad\"/>\n <image xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n transform=\"matrix(1,0,0,1,411,282)\" width=\"32\"\n xlink:show=\"embed\" xlink:type=\"simple\"\n clip-path=\"url(#lOcn6EHpV1XclipPath12)\" preserveAspectRatio=\"none\"\n font-weight=\"normal\" height=\"12\" x=\"0\" y=\"0\" font-size=\"4\"\n xlink:href=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAMCAYAAAADFL+5AAAB2UlEQVR42sVUTU/b\nMBh+7DRpEqBNV1EY4wTlOmkXBEK77DJpv4JfwI/h30yqJi4cxhHBaYUT4qN8pGkI\nSZrFxg7YKiT0xvZYlvz6tf08fv2+Jr1ebxvAruhz+LcIRd+h703ORct5DsbZa5fk\n3K1NklNK4TgOvEYDlmVhFI5wH0VI0/GLnaZpwnUdNJteYQfBEA8PMbIs02uYaAf3\ne7jBBTJrDMoM2GMXX5xNdMxPWkRNjQghaHlNdLtr+pDOwoI4OMKffh9Jkmry5aWl\nwqfwcXERg6srnJ2faxH74U/czF6CmBQEtIhEjAi//V/4Sn7Aq7WfLq0OcWwbqyvd\nUghddwbtD+0J23lBPilW+iRSlsCvDQry12Aew2FyoG29wqrXQSipfMfO/DwMwyjG\nKuxVUL4R85E7vDonBEVCorKA/wUtYJym4Kxa9eD6Gnme64R7C8rXoC0YcXU0iaCw\n+UxZQJwkODntlzbIJLy9u52w4yLhSiLFnPRJ1KmN1t8OeMbKNx5SfLbXta2rgHMO\nfxjg6Ph4ahnKLJfZfjf0p5bh1tz3N8tQVYASEKq/gDGGSBDKPg2SKAhkH015W4qN\n2W9F+clPiMhitEspF8qZnWcR7wJJbBADlNDKr/gRdwHUkatixdAAAAAASUVORK5C\nYII=\" xlink:actuate=\"onLoad\"/>\n <polygon fill=\"rgb(102,0,45)\" clip-path=\"url(#lOcn6EHpV1XclipPath31)\"\n points=\" 402 254 411 254 411 263 402 263\" stroke=\"none\"/>\n <polygon fill=\"rgb(102,0,45)\" clip-path=\"url(#lOcn6EHpV1XclipPath32)\"\n points=\" 443 254 452 254 452 263 443 263\" stroke=\"none\"/>\n <text xml:space=\"preserve\" x=\"376\" y=\"373\"\n clip-path=\"url(#lOcn6EHpV1XclipPath33)\" stroke=\"none\">DB Sorter (Labs)</text><image xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n transform=\"matrix(1,0,0,1,411,383)\" width=\"32\"\n xlink:show=\"embed\" xlink:type=\"simple\"\n clip-path=\"url(#lOcn6EHpV1XclipPath10)\" preserveAspectRatio=\"none\"\n font-weight=\"normal\" height=\"32\" x=\"0\" y=\"0\"\n xlink:href=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAaklEQVR42u2XsQ2A\nMAwEjcUGDBYxRKZiiqzCQAZHcqio7eZe+vrP7+q355ZDRC53c6vkyNzD3fcIPyVX\nujI1Lq9S08Taf5uoDP9+AQAAAAAAAAAAAAAAAAAAYIX5prFSqzTmOu5rKFbM8xel\nUA0xDHJAMgAAAABJRU5ErkJggg==\" xlink:actuate=\"onLoad\"/>\n <image xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n transform=\"matrix(1,0,0,1,419,391)\" width=\"16\"\n xlink:show=\"embed\" xlink:type=\"simple\"\n clip-path=\"url(#lOcn6EHpV1XclipPath11)\" preserveAspectRatio=\"none\"\n font-weight=\"normal\" height=\"16\" x=\"0\" y=\"0\"\n xlink:href=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAA+UlEQVR42mNmYGC4\nDcSOQCwCxPeB+BsDCYAZiCcBsSYQewFxLhA/BeILSGr+A3EjEp8RmWZCM5ATiKcQ\nsPQ/EsYwAAS68WhmgWmE0iwggT9AfBmIDwDxfCgbF0hG54MMYAfif0SEF8jPM9DE\n0PkMqkDcisXPDLjEQC5IB2I9aFRqQsWriY1GFizOeEdKOmBB4+8F4jwsTv+PlgZQ\nDGgB4itAfAyIHyPJZaC5LgObC0DpoBaIVyJp1oPSc9HUzsVlgAAQ20GT63kgvgiV\n+4OWbP/gCoP3aGL/0OIehv8TE4g/gLgKS+D9x5Ko4AbcggbicSBeBsTPSIlGALhM\nNH/iJ7YkAAAAAElFTkSuQmCC\" xlink:actuate=\"onLoad\"/>\n <image xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n transform=\"matrix(1,0,0,1,411,422)\" width=\"32\"\n xlink:show=\"embed\" xlink:type=\"simple\"\n clip-path=\"url(#lOcn6EHpV1XclipPath12)\" preserveAspectRatio=\"none\"\n font-weight=\"normal\" height=\"12\" x=\"0\" y=\"0\" font-size=\"4\"\n xlink:href=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAMCAYAAAADFL+5AAAB2UlEQVR42sVUTU/b\nMBh+7DRpEqBNV1EY4wTlOmkXBEK77DJpv4JfwI/h30yqJi4cxhHBaYUT4qN8pGkI\nSZrFxg7YKiT0xvZYlvz6tf08fv2+Jr1ebxvAruhz+LcIRd+h703ORct5DsbZa5fk\n3K1NklNK4TgOvEYDlmVhFI5wH0VI0/GLnaZpwnUdNJteYQfBEA8PMbIs02uYaAf3\ne7jBBTJrDMoM2GMXX5xNdMxPWkRNjQghaHlNdLtr+pDOwoI4OMKffh9Jkmry5aWl\nwqfwcXERg6srnJ2faxH74U/czF6CmBQEtIhEjAi//V/4Sn7Aq7WfLq0OcWwbqyvd\nUghddwbtD+0J23lBPilW+iRSlsCvDQry12Aew2FyoG29wqrXQSipfMfO/DwMwyjG\nKuxVUL4R85E7vDonBEVCorKA/wUtYJym4Kxa9eD6Gnme64R7C8rXoC0YcXU0iaCw\n+UxZQJwkODntlzbIJLy9u52w4yLhSiLFnPRJ1KmN1t8OeMbKNx5SfLbXta2rgHMO\nfxjg6Ph4ahnKLJfZfjf0p5bh1tz3N8tQVYASEKq/gDGGSBDKPg2SKAhkH015W4qN\n2W9F+clPiMhitEspF8qZnWcR7wJJbBADlNDKr/gRdwHUkatixdAAAAAASUVORK5C\nYII=\" xlink:actuate=\"onLoad\"/>\n <polygon fill=\"rgb(102,0,45)\" clip-path=\"url(#lOcn6EHpV1XclipPath34)\"\n points=\" 402 394 411 394 411 403 402 403\" stroke=\"none\"/>\n <polygon fill=\"rgb(102,0,45)\" clip-path=\"url(#lOcn6EHpV1XclipPath35)\"\n points=\" 443 394 452 394 452 403 443 403\" stroke=\"none\"/>\n <text xml:space=\"preserve\" x=\"229\" y=\"373\"\n clip-path=\"url(#lOcn6EHpV1XclipPath36)\" stroke=\"none\">DB GroupBy (Labs)</text><image xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n transform=\"matrix(1,0,0,1,271,383)\" width=\"32\"\n xlink:show=\"embed\" xlink:type=\"simple\"\n clip-path=\"url(#lOcn6EHpV1XclipPath10)\" preserveAspectRatio=\"none\"\n font-weight=\"normal\" height=\"32\" x=\"0\" y=\"0\"\n xlink:href=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAaklEQVR42u2XsQ2A\nMAwEjcUGDBYxRKZiiqzCQAZHcqio7eZe+vrP7+q355ZDRC53c6vkyNzD3fcIPyVX\nujI1Lq9S08Taf5uoDP9+AQAAAAAAAAAAAAAAAAAAYIX5prFSqzTmOu5rKFbM8xel\nUA0xDHJAMgAAAABJRU5ErkJggg==\" xlink:actuate=\"onLoad\"/>\n <image xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n transform=\"matrix(1,0,0,1,279,391)\" width=\"16\"\n xlink:show=\"embed\" xlink:type=\"simple\"\n clip-path=\"url(#lOcn6EHpV1XclipPath11)\" preserveAspectRatio=\"none\"\n font-weight=\"normal\" height=\"16\" x=\"0\" y=\"0\"\n xlink:href=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABHklEQVR42mP8//8/\nAyWAEYgvAfE1KD4DNHAbKQYwA/E0INYBYkcgjm5sbNRtaGhYRYoL0P3wEohlgJgL\niLuw6DkEdOUyGIcJSeIdEG8BYmeggj9QA9KxYDtk01iAOACIzwM1PUKz6RUQSyLx\ntYF4D7pzWIAaNzJCAMjZgUAcA8RuQPGPQPoF3K+MjBLYwoAFKHEPSEsBMTtU7CsQ\nf8ITbiFAPRbIXlBEU7D1P/7EAQobCWQDQADk3GfQQGwnEHOLgOZnIBvAAxT4iuRX\nDiBmhkaxDpJGdaxhAA0HPSCtCsT+0FgBhQkPKHYIJSSQAR/QExLQRV+AhoLSyExs\nCQndAHQATsZAQ0AxkUGMC24B8WMgfgKKASBeQ1JupDQ7AwD2W1gnlxG/HQAAAABJRU5ErkJggg==\"\n xlink:actuate=\"onLoad\"/>\n <image xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n transform=\"matrix(1,0,0,1,271,422)\" width=\"32\"\n xlink:show=\"embed\" xlink:type=\"simple\"\n clip-path=\"url(#lOcn6EHpV1XclipPath12)\" preserveAspectRatio=\"none\"\n font-weight=\"normal\" height=\"12\" x=\"0\" y=\"0\" font-size=\"4\"\n xlink:href=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAMCAYAAAADFL+5AAAB2UlEQVR42sVUTU/b\nMBh+7DRpEqBNV1EY4wTlOmkXBEK77DJpv4JfwI/h30yqJi4cxhHBaYUT4qN8pGkI\nSZrFxg7YKiT0xvZYlvz6tf08fv2+Jr1ebxvAruhz+LcIRd+h703ORct5DsbZa5fk\n3K1NklNK4TgOvEYDlmVhFI5wH0VI0/GLnaZpwnUdNJteYQfBEA8PMbIs02uYaAf3\ne7jBBTJrDMoM2GMXX5xNdMxPWkRNjQghaHlNdLtr+pDOwoI4OMKffh9Jkmry5aWl\nwqfwcXERg6srnJ2faxH74U/czF6CmBQEtIhEjAi//V/4Sn7Aq7WfLq0OcWwbqyvd\nUghddwbtD+0J23lBPilW+iRSlsCvDQry12Aew2FyoG29wqrXQSipfMfO/DwMwyjG\nKuxVUL4R85E7vDonBEVCorKA/wUtYJym4Kxa9eD6Gnme64R7C8rXoC0YcXU0iaCw\n+UxZQJwkODntlzbIJLy9u52w4yLhSiLFnPRJ1KmN1t8OeMbKNx5SfLbXta2rgHMO\nfxjg6Ph4ahnKLJfZfjf0p5bh1tz3N8tQVYASEKq/gDGGSBDKPg2SKAhkH015W4qN\n2W9F+clPiMhitEspF8qZnWcR7wJJbBADlNDKr/gRdwHUkatixdAAAAAASUVORK5C\nYII=\" xlink:actuate=\"onLoad\"/>\n <polygon fill=\"rgb(102,0,45)\" clip-path=\"url(#lOcn6EHpV1XclipPath37)\"\n points=\" 262 394 271 394 271 403 262 403\" stroke=\"none\"/>\n <polygon fill=\"rgb(102,0,45)\" clip-path=\"url(#lOcn6EHpV1XclipPath38)\"\n points=\" 303 394 312 394 312 403 303 403\" stroke=\"none\"/>\n <text xml:space=\"preserve\" x=\"530\" y=\"358\"\n clip-path=\"url(#lOcn6EHpV1XclipPath39)\" stroke=\"none\">Parameterized DB</text><text xml:space=\"preserve\"\n x=\"523\" y=\"373\" clip-path=\"url(#lOcn6EHpV1XclipPath40)\" stroke=\"none\">Query Reader (Labs)</text><image xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n transform=\"matrix(1,0,0,1,571,383)\" width=\"32\"\n xlink:show=\"embed\" xlink:type=\"simple\"\n clip-path=\"url(#lOcn6EHpV1XclipPath10)\" preserveAspectRatio=\"none\"\n font-weight=\"normal\" height=\"32\" x=\"0\" y=\"0\"\n xlink:href=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAa0lEQVR42u2XsQ2A\nQAwDQ8QGbMIiL4b4lWiY4hcMBClPRZ00Z8m1L07l5T73TUQud3Or5Mjcw93XCD8k\nVzozNS6vUtPE2n+bqAz/fgEAAAAAAAAAAAAAAAAAAGCF+aaxUqs03nXc51CsmOcP\nA/INJ1T1pwYAAAAASUVORK5CYII=\" xlink:actuate=\"onLoad\"/>\n <image xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n transform=\"matrix(1,0,0,1,579,391)\" width=\"16\"\n xlink:show=\"embed\" xlink:type=\"simple\"\n clip-path=\"url(#lOcn6EHpV1XclipPath11)\" preserveAspectRatio=\"none\"\n font-weight=\"normal\" height=\"16\" x=\"0\" y=\"0\"\n xlink:href=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABDUlEQVR42mNmYGC4\nDcSOQCwCxPeB+BsDKuAE4lYg3gnEjUCsBsQHgPg7SJIZiCcBsSYQewFxLhA/BeIL\nSAbkAHEzEL+DyjkAMT8QbwVJMmGxbQqaWD8Q7wDiMCAOh7rQCybJwoAJutH4jEjs\nBiDmAuLPyAb8AeLLUH/Nh7KxAZDmYihbB1mCiYE48AaI/6MLgjT/Q+KrQkMcGxAG\n4p8MWPyXDsR60KjUxOJvvAAUBjPQxN7hUPsfm+HosbAXiPMYSATN0PiVZaAS0CNF\nMSgpCwCxGRAnQVNdIxTjA/+hYXEAFAbv0ST/4Qg8dFAPwuiB+AOIq/AkZWRDQa5s\nAEneBOIrQHwciJcB8TNSwgAABqAyhgP6VoQAAAAASUVORK5CYII=\" xlink:actuate=\"onLoad\"/>\n <image xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n transform=\"matrix(1,0,0,1,571,422)\" width=\"32\"\n xlink:show=\"embed\" xlink:type=\"simple\"\n clip-path=\"url(#lOcn6EHpV1XclipPath12)\" preserveAspectRatio=\"none\"\n font-weight=\"normal\" height=\"12\" x=\"0\" y=\"0\" font-size=\"4\"\n xlink:href=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAMCAYAAAADFL+5AAAB2UlEQVR42sVUTU/b\nMBh+7DRpEqBNV1EY4wTlOmkXBEK77DJpv4JfwI/h30yqJi4cxhHBaYUT4qN8pGkI\nSZrFxg7YKiT0xvZYlvz6tf08fv2+Jr1ebxvAruhz+LcIRd+h703ORct5DsbZa5fk\n3K1NklNK4TgOvEYDlmVhFI5wH0VI0/GLnaZpwnUdNJteYQfBEA8PMbIs02uYaAf3\ne7jBBTJrDMoM2GMXX5xNdMxPWkRNjQghaHlNdLtr+pDOwoI4OMKffh9Jkmry5aWl\nwqfwcXERg6srnJ2faxH74U/czF6CmBQEtIhEjAi//V/4Sn7Aq7WfLq0OcWwbqyvd\nUghddwbtD+0J23lBPilW+iRSlsCvDQry12Aew2FyoG29wqrXQSipfMfO/DwMwyjG\nKuxVUL4R85E7vDonBEVCorKA/wUtYJym4Kxa9eD6Gnme64R7C8rXoC0YcXU0iaCw\n+UxZQJwkODntlzbIJLy9u52w4yLhSiLFnPRJ1KmN1t8OeMbKNx5SfLbXta2rgHMO\nfxjg6Ph4ahnKLJfZfjf0p5bh1tz3N8tQVYASEKq/gDGGSBDKPg2SKAhkH015W4qN\n2W9F+clPiMhitEspF8qZnWcR7wJJbBADlNDKr/gRdwHUkatixdAAAAAASUVORK5C\nYII=\" xlink:actuate=\"onLoad\"/>\n <polygon clip-path=\"url(#lOcn6EHpV1XclipPath41)\"\n points=\" 562 384 571 388 562 393\" stroke=\"none\"/>\n <polygon fill=\"rgb(102,0,45)\" clip-path=\"url(#lOcn6EHpV1XclipPath42)\"\n points=\" 562 403 571 403 571 412 562 412\" stroke=\"none\"/>\n <polygon clip-path=\"url(#lOcn6EHpV1XclipPath43)\"\n points=\" 603 384 612 388 603 393\" stroke=\"none\"/>\n <polygon clip-path=\"url(#lOcn6EHpV1XclipPath44)\"\n points=\" 603 403 612 407 603 412\" stroke=\"none\"/>\n <text xml:space=\"preserve\" x=\"717\" y=\"358\"\n clip-path=\"url(#lOcn6EHpV1XclipPath45)\" stroke=\"none\">Container</text><text xml:space=\"preserve\"\n x=\"704\" y=\"373\" clip-path=\"url(#lOcn6EHpV1XclipPath46)\" stroke=\"none\">Output (Table)</text><image xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n transform=\"matrix(1,0,0,1,731,383)\" width=\"32\"\n xlink:show=\"embed\" xlink:type=\"simple\"\n clip-path=\"url(#lOcn6EHpV1XclipPath10)\" preserveAspectRatio=\"none\"\n font-weight=\"normal\" height=\"32\" x=\"0\" y=\"0\"\n xlink:href=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAbUlEQVR42u2XsQ2A\nQAwDQ8QGDPZiiJ+KCSh/DiZgmYgg5amok+YsufbFqbxc97mJyOFubpUcmXu4+xrh\nu+RKZ6bG5VVqmlj7bxOV4d8vAAAAAAAAAAAAAAAAAAAArDDfNFZqlca7jvscihXz\n/AFzcw2txpwGwQAAAABJRU5ErkJggg==\" xlink:actuate=\"onLoad\"/>\n <image xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n transform=\"matrix(1,0,0,1,739,391)\" width=\"16\"\n xlink:show=\"embed\" xlink:type=\"simple\"\n clip-path=\"url(#lOcn6EHpV1XclipPath11)\" preserveAspectRatio=\"none\"\n font-weight=\"normal\" height=\"16\" x=\"0\" y=\"0\"\n xlink:href=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABUUlEQVR42q1TsU6E\nQBBdOIwYGiso9RpqSjqxspTKGjpKyus4urOz9Auot7VS+AMIheXdD5BQCQkRZ8hA\nyIpS6CQvLLPvzc7Ozkh93zPR4jh24PMquG+jKHoTuTL7oyl0ogsfxJ78uwXuDnhH\nWiOPQ0ZcIccT4ArwQFmdLwS4A7wDPgEXALwm30iShNHuiXQ2ZiWaqqqs6zqFOGiX\naZpKeFq4dk8Ue57HXNcVt0KZ7p6uiQ3DELdQ48r0NGPxmGVZLAiCQTgX53nOOOfz\nAHvUfruvbduDwPf94V/X9SXxZFhEhzK4RkdZlsw0zUGoadpv4i0U8Yg1wN2b0ds0\nDUuSBCvOqqr68WTS8I3jOCq96WRt27KiKFiWZWsP9IhFxPRP5PhAPS7qul4StMRB\nO6F2LGIotPIzdd7cXgDBvJWnWcCeHh00G4eFAAfgjbPg/ds0fgFP0HPHJaLVVAAA\nAABJRU5ErkJggg==\" xlink:actuate=\"onLoad\"/>\n <image xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n transform=\"matrix(1,0,0,1,731,422)\" width=\"32\"\n xlink:show=\"embed\" xlink:type=\"simple\"\n clip-path=\"url(#lOcn6EHpV1XclipPath12)\" preserveAspectRatio=\"none\"\n font-weight=\"normal\" height=\"12\" x=\"0\" y=\"0\" font-size=\"4\"\n xlink:href=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAMCAYAAAADFL+5AAABuklEQVR42sVUy07C\nUBA9LdW2PigEwY2JMaCfoVv9C7/Aj/FnXLHQf2AhlLhxpUJ5WNsSKN5zpTeFVgwu\n9CSTtHceZ+7cmdGazeY1gFsh+/hbjIXcGL8nn0PHVH7FYBht0wDkvDXS5Lquw7Zt\nOMV9mKaJ4WgE/91HNJkseZ4U73B08ACjHMv/qafj+e0cT6OrJTtzexu7e7siXhFR\nFIl4YwRBgDiOVRJG8qVpGkolB43GqQpQrR3iI/iA2+4gFAES8uP6PfSypey2HODY\nuQe6UElY4gKNs1Ps2DvK7kiI63bgeQPM5/OvSydKy7JQrzcydWKASqWiys6bp8lV\n9cQZdbQh6JMmT0AOcik/VS6RMauQh2qtikKhIN88KXseqKMNbemTB3KQK5PAf0El\nwCZJ3mUVry+vmM1mstvZcN+BOtrQlj65syM4okU/LSUQhiG6XTfjwCbs9XpJAWW3\nx16YseMZdck40oe+qyAHudSzpTMbDIZotVprx1B2uej27BheLI0hp6bz2M4dw3Sl\njcVGkruA8+n7vpR1INHT6PLHRcTEo/4E/b737TbkE9wsktgQmiDekvKLLahW8Sd3\nI9NSe3Ml5QAAAABJRU5ErkJggg==\" xlink:actuate=\"onLoad\"/>\n <polygon clip-path=\"url(#lOcn6EHpV1XclipPath47)\"\n points=\" 722 394 731 398 722 403\" stroke=\"none\"/>\n <polygon clip-path=\"url(#lOcn6EHpV1XclipPath48)\"\n points=\" 763 394 772 398 763 403\" stroke=\"none\"/>\n <text xml:space=\"preserve\" x=\"15\" y=\"298\"\n clip-path=\"url(#lOcn6EHpV1XclipPath49)\" stroke=\"none\">Retrieve assays,</text><text xml:space=\"preserve\"\n x=\"0\" y=\"313\" clip-path=\"url(#lOcn6EHpV1XclipPath50)\" stroke=\"none\">activities, and targets</text><image xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n transform=\"matrix(1,0,0,1,51,323)\" width=\"32\"\n xlink:show=\"embed\" xlink:type=\"simple\"\n clip-path=\"url(#lOcn6EHpV1XclipPath10)\" preserveAspectRatio=\"none\"\n font-weight=\"normal\" height=\"32\" x=\"0\" y=\"0\"\n xlink:href=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAa0lEQVR42u2XsQ2A\nMAwEjcUGDBYxRKZiigxARrMwkkNFbTf30td/fle/3XMeInK5m1slR+Ye7r5H+Cm5\n0pWpcXmVmibW/ttEZfj3CwAAAAAAAAAAAAAAAAAAACvMN42VWqXxruO+hmLFPH8A\nMOkNmTZYl7gAAAAASUVORK5CYII=\" xlink:actuate=\"onLoad\"/>\n <image xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n transform=\"matrix(1,0,0,1,59,331)\" width=\"16\"\n xlink:show=\"embed\" xlink:type=\"simple\"\n clip-path=\"url(#lOcn6EHpV1XclipPath11)\" preserveAspectRatio=\"none\"\n font-weight=\"normal\" height=\"16\" x=\"0\" y=\"0\"\n xlink:href=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAA3UlEQVR42mP8//8/\nAyWAhRhFjCcZGfjY+RgYGRkZQBZ++vmJ4b/5f+IN4GHjYXBSdWJgY2Zj+PX3F8Oe\nW3vwuwBkEzIQOS7CIMotCudz/OSAq2EipBmrKiYsYcCYDtQoCGQEQxUA2f9nQvzJ\ne4GX4dGHRwysTKwMv//9ZvjB9oMBFvgIL4A0xwMxOxD/BOKFCFu+fPvCcPDeQaC5\nTAz/gPDHjx8IF8NZ5UDcgeTMFqALaghHMRMDhYAF5hfGCqBjriN54QupCek91N8g\nN/2D8kkxABbipAKKw2AYGAAArXBAE6T1kEAAAAAASUVORK5CYII=\" xlink:actuate=\"onLoad\"/>\n <image xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n transform=\"matrix(1,0,0,1,51,362)\" width=\"32\"\n xlink:show=\"embed\" xlink:type=\"simple\"\n clip-path=\"url(#lOcn6EHpV1XclipPath12)\" preserveAspectRatio=\"none\"\n font-weight=\"normal\" height=\"12\" x=\"0\" y=\"0\" font-size=\"4\"\n xlink:href=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAMCAYAAAADFL+5AAAB2UlEQVR42sVUTU/b\nMBh+7DRpEqBNV1EY4wTlOmkXBEK77DJpv4JfwI/h30yqJi4cxhHBaYUT4qN8pGkI\nSZrFxg7YKiT0xvZYlvz6tf08fv2+Jr1ebxvAruhz+LcIRd+h703ORct5DsbZa5fk\n3K1NklNK4TgOvEYDlmVhFI5wH0VI0/GLnaZpwnUdNJteYQfBEA8PMbIs02uYaAf3\ne7jBBTJrDMoM2GMXX5xNdMxPWkRNjQghaHlNdLtr+pDOwoI4OMKffh9Jkmry5aWl\nwqfwcXERg6srnJ2faxH74U/czF6CmBQEtIhEjAi//V/4Sn7Aq7WfLq0OcWwbqyvd\nUghddwbtD+0J23lBPilW+iRSlsCvDQry12Aew2FyoG29wqrXQSipfMfO/DwMwyjG\nKuxVUL4R85E7vDonBEVCorKA/wUtYJym4Kxa9eD6Gnme64R7C8rXoC0YcXU0iaCw\n+UxZQJwkODntlzbIJLy9u52w4yLhSiLFnPRJ1KmN1t8OeMbKNx5SfLbXta2rgHMO\nfxjg6Ph4ahnKLJfZfjf0p5bh1tz3N8tQVYASEKq/gDGGSBDKPg2SKAhkH015W4qN\n2W9F+clPiMhitEspF8qZnWcR7wJJbBADlNDKr/gRdwHUkatixdAAAAAASUVORK5C\nYII=\" xlink:actuate=\"onLoad\"/>\n <polygon fill=\"rgb(102,0,45)\" clip-path=\"url(#lOcn6EHpV1XclipPath51)\"\n points=\" 83 334 92 334 92 343 83 343\" stroke=\"none\"/>\n </g>\n <g fill=\"white\" text-rendering=\"optimizeLegibility\"\n font-family=\"&apos;Segoe UI&apos;\" stroke-linecap=\"butt\"\n stroke=\"white\">\n <rect x=\"667\" y=\"140\" clip-path=\"url(#lOcn6EHpV1XclipPath1)\" width=\"161\"\n height=\"341\" stroke=\"none\"/>\n <text x=\"677\" y=\"162\" clip-path=\"url(#lOcn6EHpV1XclipPath2)\" fill=\"black\"\n font-family=\"&apos;Arial&apos;\" stroke=\"none\"\n xml:space=\"preserve\">Output to caller</text><rect x=\"672\"\n y=\"145\" clip-path=\"url(#lOcn6EHpV1XclipPath1)\" fill=\"none\" width=\"151\"\n height=\"331\" stroke=\"rgb(255,216,0)\" stroke-width=\"10\"/>\n <rect x=\"347\" y=\"0\" clip-path=\"url(#lOcn6EHpV1XclipPath3)\" width=\"161\"\n height=\"181\" stroke=\"none\" stroke-width=\"10\"/>\n </g>\n <g text-rendering=\"optimizeLegibility\" stroke-width=\"10\"\n font-family=\"&apos;Arial&apos;\" stroke-linecap=\"butt\">\n <text xml:space=\"preserve\" x=\"357\" y=\"22\"\n clip-path=\"url(#lOcn6EHpV1XclipPath4)\" stroke=\"none\">Input from caller</text><rect x=\"352\"\n y=\"5\" clip-path=\"url(#lOcn6EHpV1XclipPath3)\" fill=\"none\" width=\"151\"\n height=\"171\" stroke=\"rgb(255,216,0)\"/>\n <text xml:space=\"preserve\" x=\"715\" y=\"311\"\n clip-path=\"url(#lOcn6EHpV1XclipPath5)\" stroke=\"none\">details data</text><text xml:space=\"preserve\"\n x=\"237\" y=\"171\" clip-path=\"url(#lOcn6EHpV1XclipPath6)\" stroke=\"none\">Sample input data</text><text xml:space=\"preserve\"\n x=\"707\" y=\"451\" clip-path=\"url(#lOcn6EHpV1XclipPath7)\" stroke=\"none\">summary data</text><text x=\"717\"\n y=\"218\" clip-path=\"url(#lOcn6EHpV1XclipPath8)\" stroke=\"none\"\n font-weight=\"bold\" xml:space=\"preserve\">Container</text><text x=\"704\"\n y=\"233\" clip-path=\"url(#lOcn6EHpV1XclipPath9)\" stroke=\"none\"\n font-weight=\"bold\" xml:space=\"preserve\">Output (Table)</text><image xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n transform=\"matrix(1,0,0,1,731,243)\" width=\"32\"\n xlink:show=\"embed\" xlink:type=\"simple\"\n clip-path=\"url(#lOcn6EHpV1XclipPath10)\" preserveAspectRatio=\"none\"\n height=\"32\" x=\"0\" y=\"0\"\n xlink:href=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAbUlEQVR42u2XsQ2A\nQAwDQ8QGDPZiiJ+KCSh/DiZgmYgg5amok+YsufbFqbxc97mJyOFubpUcmXu4+xrh\nu+RKZ6bG5VVqmlj7bxOV4d8vAAAAAAAAAAAAAAAAAAAArDDfNFZqlca7jvscihXz\n/AFzcw2txpwGwQAAAABJRU5ErkJggg==\" xlink:actuate=\"onLoad\"/>\n <image xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n transform=\"matrix(1,0,0,1,739,251)\" width=\"16\"\n xlink:show=\"embed\" xlink:type=\"simple\"\n clip-path=\"url(#lOcn6EHpV1XclipPath11)\" preserveAspectRatio=\"none\"\n height=\"16\" x=\"0\" y=\"0\"\n xlink:href=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABUUlEQVR42q1TsU6E\nQBBdOIwYGiso9RpqSjqxspTKGjpKyus4urOz9Auot7VS+AMIheXdD5BQCQkRZ8hA\nyIpS6CQvLLPvzc7Ozkh93zPR4jh24PMquG+jKHoTuTL7oyl0ogsfxJ78uwXuDnhH\nWiOPQ0ZcIccT4ArwQFmdLwS4A7wDPgEXALwm30iShNHuiXQ2ZiWaqqqs6zqFOGiX\naZpKeFq4dk8Ue57HXNcVt0KZ7p6uiQ3DELdQ48r0NGPxmGVZLAiCQTgX53nOOOfz\nAHvUfruvbduDwPf94V/X9SXxZFhEhzK4RkdZlsw0zUGoadpv4i0U8Yg1wN2b0ds0\nDUuSBCvOqqr68WTS8I3jOCq96WRt27KiKFiWZWsP9IhFxPRP5PhAPS7qul4StMRB\nO6F2LGIotPIzdd7cXgDBvJWnWcCeHh00G4eFAAfgjbPg/ds0fgFP0HPHJaLVVAAA\nAABJRU5ErkJggg==\" xlink:actuate=\"onLoad\"/>\n <image xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n transform=\"matrix(1,0,0,1,731,282)\" width=\"32\"\n xlink:show=\"embed\" xlink:type=\"simple\"\n clip-path=\"url(#lOcn6EHpV1XclipPath12)\" preserveAspectRatio=\"none\"\n height=\"12\" x=\"0\" y=\"0\" font-size=\"4\"\n xlink:href=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAMCAYAAAADFL+5AAABuklEQVR42sVUy07C\nUBA9LdW2PigEwY2JMaCfoVv9C7/Aj/FnXLHQf2AhlLhxpUJ5WNsSKN5zpTeFVgwu\n9CSTtHceZ+7cmdGazeY1gFsh+/hbjIXcGL8nn0PHVH7FYBht0wDkvDXS5Lquw7Zt\nOMV9mKaJ4WgE/91HNJkseZ4U73B08ACjHMv/qafj+e0cT6OrJTtzexu7e7siXhFR\nFIl4YwRBgDiOVRJG8qVpGkolB43GqQpQrR3iI/iA2+4gFAES8uP6PfSypey2HODY\nuQe6UElY4gKNs1Ps2DvK7kiI63bgeQPM5/OvSydKy7JQrzcydWKASqWiys6bp8lV\n9cQZdbQh6JMmT0AOcik/VS6RMauQh2qtikKhIN88KXseqKMNbemTB3KQK5PAf0El\nwCZJ3mUVry+vmM1mstvZcN+BOtrQlj65syM4okU/LSUQhiG6XTfjwCbs9XpJAWW3\nx16YseMZdck40oe+qyAHudSzpTMbDIZotVprx1B2uej27BheLI0hp6bz2M4dw3Sl\njcVGkruA8+n7vpR1INHT6PLHRcTEo/4E/b737TbkE9wsktgQmiDekvKLLahW8Sd3\nI9NSe3Ml5QAAAABJRU5ErkJggg==\" xlink:actuate=\"onLoad\"/>\n <polygon clip-path=\"url(#lOcn6EHpV1XclipPath13)\"\n points=\" 722 254 731 258 722 263\" stroke=\"none\"/>\n <polygon clip-path=\"url(#lOcn6EHpV1XclipPath14)\"\n points=\" 763 254 772 258 763 263\" stroke=\"none\"/>\n <text x=\"229\" y=\"233\" clip-path=\"url(#lOcn6EHpV1XclipPath15)\" stroke=\"none\"\n font-weight=\"bold\" xml:space=\"preserve\">DB GroupBy (Labs)</text><image xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n transform=\"matrix(1,0,0,1,271,243)\" width=\"32\"\n xlink:show=\"embed\" xlink:type=\"simple\"\n clip-path=\"url(#lOcn6EHpV1XclipPath10)\" preserveAspectRatio=\"none\"\n height=\"32\" x=\"0\" y=\"0\"\n xlink:href=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAaklEQVR42u2XsQ2A\nMAwEjcUGDBYxRKZiiqzCQAZHcqio7eZe+vrP7+q355ZDRC53c6vkyNzD3fcIPyVX\nujI1Lq9S08Taf5uoDP9+AQAAAAAAAAAAAAAAAAAAYIX5prFSqzTmOu5rKFbM8xel\nUA0xDHJAMgAAAABJRU5ErkJggg==\" xlink:actuate=\"onLoad\"/>\n <image xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n transform=\"matrix(1,0,0,1,279,251)\" width=\"16\"\n xlink:show=\"embed\" xlink:type=\"simple\"\n clip-path=\"url(#lOcn6EHpV1XclipPath11)\" preserveAspectRatio=\"none\"\n height=\"16\" x=\"0\" y=\"0\"\n xlink:href=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABHklEQVR42mP8//8/\nAyWAEYgvAfE1KD4DNHAbKQYwA/E0INYBYkcgjm5sbNRtaGhYRYoL0P3wEohlgJgL\niLuw6DkEdOUyGIcJSeIdEG8BYmeggj9QA9KxYDtk01iAOACIzwM1PUKz6RUQSyLx\ntYF4D7pzWIAaNzJCAMjZgUAcA8RuQPGPQPoF3K+MjBLYwoAFKHEPSEsBMTtU7CsQ\nf8ITbiFAPRbIXlBEU7D1P/7EAQobCWQDQADk3GfQQGwnEHOLgOZnIBvAAxT4iuRX\nDiBmhkaxDpJGdaxhAA0HPSCtCsT+0FgBhQkPKHYIJSSQAR/QExLQRV+AhoLSyExs\nCQndAHQATsZAQ0AxkUGMC24B8WMgfgKKASBeQ1JupDQ7AwD2W1gnlxG/HQAAAABJRU5ErkJggg==\"\n xlink:actuate=\"onLoad\"/>\n <image xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n transform=\"matrix(1,0,0,1,271,282)\" width=\"32\"\n xlink:show=\"embed\" xlink:type=\"simple\"\n clip-path=\"url(#lOcn6EHpV1XclipPath12)\" preserveAspectRatio=\"none\"\n height=\"12\" x=\"0\" y=\"0\" font-size=\"4\"\n xlink:href=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAMCAYAAAADFL+5AAAB2UlEQVR42sVUTU/b\nMBh+7DRpEqBNV1EY4wTlOmkXBEK77DJpv4JfwI/h30yqJi4cxhHBaYUT4qN8pGkI\nSZrFxg7YKiT0xvZYlvz6tf08fv2+Jr1ebxvAruhz+LcIRd+h703ORct5DsbZa5fk\n3K1NklNK4TgOvEYDlmVhFI5wH0VI0/GLnaZpwnUdNJteYQfBEA8PMbIs02uYaAf3\ne7jBBTJrDMoM2GMXX5xNdMxPWkRNjQghaHlNdLtr+pDOwoI4OMKffh9Jkmry5aWl\nwqfwcXERg6srnJ2faxH74U/czF6CmBQEtIhEjAi//V/4Sn7Aq7WfLq0OcWwbqyvd\nUghddwbtD+0J23lBPilW+iRSlsCvDQry12Aew2FyoG29wqrXQSipfMfO/DwMwyjG\nKuxVUL4R85E7vDonBEVCorKA/wUtYJym4Kxa9eD6Gnme64R7C8rXoC0YcXU0iaCw\n+UxZQJwkODntlzbIJLy9u52w4yLhSiLFnPRJ1KmN1t8OeMbKNx5SfLbXta2rgHMO\nfxjg6Ph4ahnKLJfZfjf0p5bh1tz3N8tQVYASEKq/gDGGSBDKPg2SKAhkH015W4qN\n2W9F+clPiMhitEspF8qZnWcR7wJJbBADlNDKr/gRdwHUkatixdAAAAAASUVORK5C\nYII=\" xlink:actuate=\"onLoad\"/>\n <polygon fill=\"rgb(102,0,45)\" clip-path=\"url(#lOcn6EHpV1XclipPath16)\"\n points=\" 262 254 271 254 271 263 262 263\" stroke=\"none\"/>\n <polygon fill=\"rgb(102,0,45)\" clip-path=\"url(#lOcn6EHpV1XclipPath17)\"\n points=\" 303 254 312 254 312 263 303 263\" stroke=\"none\"/>\n <text x=\"530\" y=\"218\" clip-path=\"url(#lOcn6EHpV1XclipPath18)\" stroke=\"none\"\n font-weight=\"bold\" xml:space=\"preserve\">Parameterized DB</text><text x=\"523\"\n y=\"233\" clip-path=\"url(#lOcn6EHpV1XclipPath19)\" stroke=\"none\"\n font-weight=\"bold\" xml:space=\"preserve\">Query Reader (Labs)</text><image xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n transform=\"matrix(1,0,0,1,571,243)\" width=\"32\"\n xlink:show=\"embed\" xlink:type=\"simple\"\n clip-path=\"url(#lOcn6EHpV1XclipPath10)\" preserveAspectRatio=\"none\"\n height=\"32\" x=\"0\" y=\"0\"\n xlink:href=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAa0lEQVR42u2XsQ2A\nQAwDQ8QGbMIiL4b4lWiY4hcMBClPRZ00Z8m1L07l5T73TUQud3Or5Mjcw93XCD8k\nVzozNS6vUtPE2n+bqAz/fgEAAAAAAAAAAAAAAAAAAGCF+aaxUqs03nXc51CsmOcP\nA/INJ1T1pwYAAAAASUVORK5CYII=\" xlink:actuate=\"onLoad\"/>\n <image xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n transform=\"matrix(1,0,0,1,579,251)\" width=\"16\"\n xlink:show=\"embed\" xlink:type=\"simple\"\n clip-path=\"url(#lOcn6EHpV1XclipPath11)\" preserveAspectRatio=\"none\"\n height=\"16\" x=\"0\" y=\"0\"\n xlink:href=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABDUlEQVR42mNmYGC4\nDcSOQCwCxPeB+BsDKuAE4lYg3gnEjUCsBsQHgPg7SJIZiCcBsSYQewFxLhA/BeIL\nSAbkAHEzEL+DyjkAMT8QbwVJMmGxbQqaWD8Q7wDiMCAOh7rQCybJwoAJutH4jEjs\nBiDmAuLPyAb8AeLLUH/Nh7KxAZDmYihbB1mCiYE48AaI/6MLgjT/Q+KrQkMcGxAG\n4p8MWPyXDsR60KjUxOJvvAAUBjPQxN7hUPsfm+HosbAXiPMYSATN0PiVZaAS0CNF\nMSgpCwCxGRAnQVNdIxTjA/+hYXEAFAbv0ST/4Qg8dFAPwuiB+AOIq/AkZWRDQa5s\nAEneBOIrQHwciJcB8TNSwgAABqAyhgP6VoQAAAAASUVORK5CYII=\" xlink:actuate=\"onLoad\"/>\n <image xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n transform=\"matrix(1,0,0,1,571,282)\" width=\"32\"\n xlink:show=\"embed\" xlink:type=\"simple\"\n clip-path=\"url(#lOcn6EHpV1XclipPath12)\" preserveAspectRatio=\"none\"\n height=\"12\" x=\"0\" y=\"0\" font-size=\"4\"\n xlink:href=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAMCAYAAAADFL+5AAAB2UlEQVR42sVUTU/b\nMBh+7DRpEqBNV1EY4wTlOmkXBEK77DJpv4JfwI/h30yqJi4cxhHBaYUT4qN8pGkI\nSZrFxg7YKiT0xvZYlvz6tf08fv2+Jr1ebxvAruhz+LcIRd+h703ORct5DsbZa5fk\n3K1NklNK4TgOvEYDlmVhFI5wH0VI0/GLnaZpwnUdNJteYQfBEA8PMbIs02uYaAf3\ne7jBBTJrDMoM2GMXX5xNdMxPWkRNjQghaHlNdLtr+pDOwoI4OMKffh9Jkmry5aWl\nwqfwcXERg6srnJ2faxH74U/czF6CmBQEtIhEjAi//V/4Sn7Aq7WfLq0OcWwbqyvd\nUghddwbtD+0J23lBPilW+iRSlsCvDQry12Aew2FyoG29wqrXQSipfMfO/DwMwyjG\nKuxVUL4R85E7vDonBEVCorKA/wUtYJym4Kxa9eD6Gnme64R7C8rXoC0YcXU0iaCw\n+UxZQJwkODntlzbIJLy9u52w4yLhSiLFnPRJ1KmN1t8OeMbKNx5SfLbXta2rgHMO\nfxjg6Ph4ahnKLJfZfjf0p5bh1tz3N8tQVYASEKq/gDGGSBDKPg2SKAhkH015W4qN\n2W9F+clPiMhitEspF8qZnWcR7wJJbBADlNDKr/gRdwHUkatixdAAAAAASUVORK5C\nYII=\" xlink:actuate=\"onLoad\"/>\n <polygon clip-path=\"url(#lOcn6EHpV1XclipPath20)\"\n points=\" 562 244 571 248 562 253\" stroke=\"none\"/>\n <polygon fill=\"rgb(102,0,45)\" clip-path=\"url(#lOcn6EHpV1XclipPath21)\"\n points=\" 562 263 571 263 571 272 562 272\" stroke=\"none\"/>\n <polygon clip-path=\"url(#lOcn6EHpV1XclipPath22)\"\n points=\" 603 244 612 248 603 253\" stroke=\"none\"/>\n <polygon clip-path=\"url(#lOcn6EHpV1XclipPath23)\"\n points=\" 603 263 612 267 603 272\" stroke=\"none\"/>\n <text x=\"397\" y=\"78\" clip-path=\"url(#lOcn6EHpV1XclipPath24)\" stroke=\"none\"\n font-weight=\"bold\" xml:space=\"preserve\">Container</text><text x=\"390\"\n y=\"93\" clip-path=\"url(#lOcn6EHpV1XclipPath25)\" stroke=\"none\"\n font-weight=\"bold\" xml:space=\"preserve\">Input (Table)</text><image xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n transform=\"matrix(1,0,0,1,411,103)\" width=\"32\"\n xlink:show=\"embed\" xlink:type=\"simple\"\n clip-path=\"url(#lOcn6EHpV1XclipPath10)\" preserveAspectRatio=\"none\"\n height=\"32\" x=\"0\" y=\"0\"\n xlink:href=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAbUlEQVR42u2XsQ2A\nQAwDQ8QGDPZiiJ+KCSh/DiZgmYgg5amok+YsufbFqbxc97mJyOFubpUcmXu4+xrh\nu+RKZ6bG5VVqmlj7bxOV4d8vAAAAAAAAAAAAAAAAAAAArDDfNFZqlca7jvscihXz\n/AFzcw2txpwGwQAAAABJRU5ErkJggg==\" xlink:actuate=\"onLoad\"/>\n <image xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n transform=\"matrix(1,0,0,1,419,111)\" width=\"16\"\n xlink:show=\"embed\" xlink:type=\"simple\"\n clip-path=\"url(#lOcn6EHpV1XclipPath11)\" preserveAspectRatio=\"none\"\n height=\"16\" x=\"0\" y=\"0\"\n xlink:href=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAA60lEQVR42mP8//8/\nAzpobGx0AFL70YQd6+vrD6CrZWKgELBAbQwAUiDcABWvwKK2AqjuAZQNUrcB6KIN\nLFCBCUAsD8RhUFexYzHAHYhvAPE/IOYEYpA3NzAzMjKCTPOHKmKFuQqPi1mhbIGD\nBw8ygmwroCAICpigfj9IhmaQngAmaNQ0kGFAA0gvRjQCBcEYHxslHUATDVkuAOll\nbGho+ADk8JMZiB+ZoGmAXDABFIgg5z+ECnwH4p94NPyEqgGBhyC9sERTgJaUZ0BT\nHjLYCcQZyEkZnhdAaRomAM0bHVgM6ACqg+WFBKrlRgCqDEnUPy6RDQAAAABJRU5E\nrkJggg==\" xlink:actuate=\"onLoad\"/>\n <image xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n transform=\"matrix(1,0,0,1,411,142)\" width=\"32\"\n xlink:show=\"embed\" xlink:type=\"simple\"\n clip-path=\"url(#lOcn6EHpV1XclipPath12)\" preserveAspectRatio=\"none\"\n height=\"12\" x=\"0\" y=\"0\" font-size=\"4\"\n xlink:href=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAMCAYAAAADFL+5AAAB2UlEQVR42sVUTU/b\nMBh+7DRpEqBNV1EY4wTlOmkXBEK77DJpv4JfwI/h30yqJi4cxhHBaYUT4qN8pGkI\nSZrFxg7YKiT0xvZYlvz6tf08fv2+Jr1ebxvAruhz+LcIRd+h703ORct5DsbZa5fk\n3K1NklNK4TgOvEYDlmVhFI5wH0VI0/GLnaZpwnUdNJteYQfBEA8PMbIs02uYaAf3\ne7jBBTJrDMoM2GMXX5xNdMxPWkRNjQghaHlNdLtr+pDOwoI4OMKffh9Jkmry5aWl\nwqfwcXERg6srnJ2faxH74U/czF6CmBQEtIhEjAi//V/4Sn7Aq7WfLq0OcWwbqyvd\nUghddwbtD+0J23lBPilW+iRSlsCvDQry12Aew2FyoG29wqrXQSipfMfO/DwMwyjG\nKuxVUL4R85E7vDonBEVCorKA/wUtYJym4Kxa9eD6Gnme64R7C8rXoC0YcXU0iaCw\n+UxZQJwkODntlzbIJLy9u52w4yLhSiLFnPRJ1KmN1t8OeMbKNx5SfLbXta2rgHMO\nfxjg6Ph4ahnKLJfZfjf0p5bh1tz3N8tQVYASEKq/gDGGSBDKPg2SKAhkH015W4qN\n2W9F+clPiMhitEspF8qZnWcR7wJJbBADlNDKr/gRdwHUkatixdAAAAAASUVORK5C\nYII=\" xlink:actuate=\"onLoad\"/>\n <polygon fill=\"none\" stroke-width=\"1\" clip-path=\"url(#lOcn6EHpV1XclipPath26)\"\n points=\" 402 114 410 117 402 122\"/>\n <polygon stroke-width=\"1\" clip-path=\"url(#lOcn6EHpV1XclipPath27)\"\n points=\" 443 114 452 118 443 123\" stroke=\"none\"/>\n <text x=\"246\" y=\"93\" clip-path=\"url(#lOcn6EHpV1XclipPath28)\" stroke=\"none\"\n font-weight=\"bold\" stroke-width=\"1\" xml:space=\"preserve\">Table Creator</text><image xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n transform=\"matrix(1,0,0,1,271,103)\" width=\"32\"\n xlink:show=\"embed\" xlink:type=\"simple\"\n clip-path=\"url(#lOcn6EHpV1XclipPath10)\" preserveAspectRatio=\"none\"\n stroke-width=\"1\" height=\"32\" x=\"0\" y=\"0\"\n xlink:href=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAa0lEQVR42u2XsQ2A\nQAwDQ8QGbMIiL4b4lWiY4hcMBClPRZ00Z8m1L07l5T73TUQud3Or5Mjcw93XCD8k\nVzozNS6vUtPE2n+bqAz/fgEAAAAAAAAAAAAAAAAAAGCF+aaxUqs03nXc51CsmOcP\nA/INJ1T1pwYAAAAASUVORK5CYII=\" xlink:actuate=\"onLoad\"/>\n <image xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n transform=\"matrix(1,0,0,1,279,111)\" width=\"16\"\n xlink:show=\"embed\" xlink:type=\"simple\"\n clip-path=\"url(#lOcn6EHpV1XclipPath11)\" preserveAspectRatio=\"none\"\n stroke-width=\"1\" height=\"16\" x=\"0\" y=\"0\"\n xlink:href=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAATUlEQVR42mNkYGD4\nz0AE+P//PyM2cSaoJBjjY+MCTAwUAsZRLwwHLzASciKGBkbG/8gGkuUFKXFp0l0A\ns5n6gUhOGIC88PTFE0aquAAAFb5YHdYo+gQAAAAASUVORK5CYII=\" xlink:actuate=\"onLoad\"/>\n <image xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n transform=\"matrix(1,0,0,1,271,142)\" width=\"32\"\n xlink:show=\"embed\" xlink:type=\"simple\"\n clip-path=\"url(#lOcn6EHpV1XclipPath12)\" preserveAspectRatio=\"none\"\n stroke-width=\"1\" height=\"12\" x=\"0\" y=\"0\" font-size=\"4\"\n xlink:href=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAMCAYAAAADFL+5AAAB2UlEQVR42sVUTU/b\nMBh+7DRpEqBNV1EY4wTlOmkXBEK77DJpv4JfwI/h30yqJi4cxhHBaYUT4qN8pGkI\nSZrFxg7YKiT0xvZYlvz6tf08fv2+Jr1ebxvAruhz+LcIRd+h703ORct5DsbZa5fk\n3K1NklNK4TgOvEYDlmVhFI5wH0VI0/GLnaZpwnUdNJteYQfBEA8PMbIs02uYaAf3\ne7jBBTJrDMoM2GMXX5xNdMxPWkRNjQghaHlNdLtr+pDOwoI4OMKffh9Jkmry5aWl\nwqfwcXERg6srnJ2faxH74U/czF6CmBQEtIhEjAi//V/4Sn7Aq7WfLq0OcWwbqyvd\nUghddwbtD+0J23lBPilW+iRSlsCvDQry12Aew2FyoG29wqrXQSipfMfO/DwMwyjG\nKuxVUL4R85E7vDonBEVCorKA/wUtYJym4Kxa9eD6Gnme64R7C8rXoC0YcXU0iaCw\n+UxZQJwkODntlzbIJLy9u52w4yLhSiLFnPRJ1KmN1t8OeMbKNx5SfLbXta2rgHMO\nfxjg6Ph4ahnKLJfZfjf0p5bh1tz3N8tQVYASEKq/gDGGSBDKPg2SKAhkH015W4qN\n2W9F+clPiMhitEspF8qZnWcR7wJJbBADlNDKr/gRdwHUkatixdAAAAAASUVORK5C\nYII=\" xlink:actuate=\"onLoad\"/>\n <polygon stroke-width=\"1\" clip-path=\"url(#lOcn6EHpV1XclipPath29)\"\n points=\" 303 114 312 118 303 123\" stroke=\"none\"/>\n <text x=\"376\" y=\"233\" clip-path=\"url(#lOcn6EHpV1XclipPath30)\" stroke=\"none\"\n font-weight=\"bold\" stroke-width=\"1\" xml:space=\"preserve\">DB Sorter (Labs)</text><image xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n transform=\"matrix(1,0,0,1,411,243)\" width=\"32\"\n xlink:show=\"embed\" xlink:type=\"simple\"\n clip-path=\"url(#lOcn6EHpV1XclipPath10)\" preserveAspectRatio=\"none\"\n stroke-width=\"1\" height=\"32\" x=\"0\" y=\"0\"\n xlink:href=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAaklEQVR42u2XsQ2A\nMAwEjcUGDBYxRKZiiqzCQAZHcqio7eZe+vrP7+q355ZDRC53c6vkyNzD3fcIPyVX\nujI1Lq9S08Taf5uoDP9+AQAAAAAAAAAAAAAAAAAAYIX5prFSqzTmOu5rKFbM8xel\nUA0xDHJAMgAAAABJRU5ErkJggg==\" xlink:actuate=\"onLoad\"/>\n <image xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n transform=\"matrix(1,0,0,1,419,251)\" width=\"16\"\n xlink:show=\"embed\" xlink:type=\"simple\"\n clip-path=\"url(#lOcn6EHpV1XclipPath11)\" preserveAspectRatio=\"none\"\n stroke-width=\"1\" height=\"16\" x=\"0\" y=\"0\"\n xlink:href=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAA+UlEQVR42mNmYGC4\nDcSOQCwCxPeB+BsDCYAZiCcBsSYQewFxLhA/BeILSGr+A3EjEp8RmWZCM5ATiKcQ\nsPQ/EsYwAAS68WhmgWmE0iwggT9AfBmIDwDxfCgbF0hG54MMYAfif0SEF8jPM9DE\n0PkMqkDcisXPDLjEQC5IB2I9aFRqQsWriY1GFizOeEdKOmBB4+8F4jwsTv+PlgZQ\nDGgB4itAfAyIHyPJZaC5LgObC0DpoBaIVyJp1oPSc9HUzsVlgAAQ20GT63kgvgiV\n+4OWbP/gCoP3aGL/0OIehv8TE4g/gLgKS+D9x5Ko4AbcggbicSBeBsTPSIlGALhM\nNH/iJ7YkAAAAAElFTkSuQmCC\" xlink:actuate=\"onLoad\"/>\n <image xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n transform=\"matrix(1,0,0,1,411,282)\" width=\"32\"\n xlink:show=\"embed\" xlink:type=\"simple\"\n clip-path=\"url(#lOcn6EHpV1XclipPath12)\" preserveAspectRatio=\"none\"\n stroke-width=\"1\" height=\"12\" x=\"0\" y=\"0\" font-size=\"4\"\n xlink:href=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAMCAYAAAADFL+5AAAB2UlEQVR42sVUTU/b\nMBh+7DRpEqBNV1EY4wTlOmkXBEK77DJpv4JfwI/h30yqJi4cxhHBaYUT4qN8pGkI\nSZrFxg7YKiT0xvZYlvz6tf08fv2+Jr1ebxvAruhz+LcIRd+h703ORct5DsbZa5fk\n3K1NklNK4TgOvEYDlmVhFI5wH0VI0/GLnaZpwnUdNJteYQfBEA8PMbIs02uYaAf3\ne7jBBTJrDMoM2GMXX5xNdMxPWkRNjQghaHlNdLtr+pDOwoI4OMKffh9Jkmry5aWl\nwqfwcXERg6srnJ2faxH74U/czF6CmBQEtIhEjAi//V/4Sn7Aq7WfLq0OcWwbqyvd\nUghddwbtD+0J23lBPilW+iRSlsCvDQry12Aew2FyoG29wqrXQSipfMfO/DwMwyjG\nKuxVUL4R85E7vDonBEVCorKA/wUtYJym4Kxa9eD6Gnme64R7C8rXoC0YcXU0iaCw\n+UxZQJwkODntlzbIJLy9u52w4yLhSiLFnPRJ1KmN1t8OeMbKNx5SfLbXta2rgHMO\nfxjg6Ph4ahnKLJfZfjf0p5bh1tz3N8tQVYASEKq/gDGGSBDKPg2SKAhkH015W4qN\n2W9F+clPiMhitEspF8qZnWcR7wJJbBADlNDKr/gRdwHUkatixdAAAAAASUVORK5C\nYII=\" xlink:actuate=\"onLoad\"/>\n <polygon fill=\"rgb(102,0,45)\" stroke-width=\"1\"\n clip-path=\"url(#lOcn6EHpV1XclipPath31)\"\n points=\" 402 254 411 254 411 263 402 263\" stroke=\"none\"/>\n <polygon fill=\"rgb(102,0,45)\" stroke-width=\"1\"\n clip-path=\"url(#lOcn6EHpV1XclipPath32)\"\n points=\" 443 254 452 254 452 263 443 263\" stroke=\"none\"/>\n <text x=\"376\" y=\"373\" clip-path=\"url(#lOcn6EHpV1XclipPath33)\" stroke=\"none\"\n font-weight=\"bold\" stroke-width=\"1\" xml:space=\"preserve\">DB Sorter (Labs)</text><image xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n transform=\"matrix(1,0,0,1,411,383)\" width=\"32\"\n xlink:show=\"embed\" xlink:type=\"simple\"\n clip-path=\"url(#lOcn6EHpV1XclipPath10)\" preserveAspectRatio=\"none\"\n stroke-width=\"1\" height=\"32\" x=\"0\" y=\"0\"\n xlink:href=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAaklEQVR42u2XsQ2A\nMAwEjcUGDBYxRKZiiqzCQAZHcqio7eZe+vrP7+q355ZDRC53c6vkyNzD3fcIPyVX\nujI1Lq9S08Taf5uoDP9+AQAAAAAAAAAAAAAAAAAAYIX5prFSqzTmOu5rKFbM8xel\nUA0xDHJAMgAAAABJRU5ErkJggg==\" xlink:actuate=\"onLoad\"/>\n <image xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n transform=\"matrix(1,0,0,1,419,391)\" width=\"16\"\n xlink:show=\"embed\" xlink:type=\"simple\"\n clip-path=\"url(#lOcn6EHpV1XclipPath11)\" preserveAspectRatio=\"none\"\n stroke-width=\"1\" height=\"16\" x=\"0\" y=\"0\"\n xlink:href=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAA+UlEQVR42mNmYGC4\nDcSOQCwCxPeB+BsDCYAZiCcBsSYQewFxLhA/BeILSGr+A3EjEp8RmWZCM5ATiKcQ\nsPQ/EsYwAAS68WhmgWmE0iwggT9AfBmIDwDxfCgbF0hG54MMYAfif0SEF8jPM9DE\n0PkMqkDcisXPDLjEQC5IB2I9aFRqQsWriY1GFizOeEdKOmBB4+8F4jwsTv+PlgZQ\nDGgB4itAfAyIHyPJZaC5LgObC0DpoBaIVyJp1oPSc9HUzsVlgAAQ20GT63kgvgiV\n+4OWbP/gCoP3aGL/0OIehv8TE4g/gLgKS+D9x5Ko4AbcggbicSBeBsTPSIlGALhM\nNH/iJ7YkAAAAAElFTkSuQmCC\" xlink:actuate=\"onLoad\"/>\n <image xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n transform=\"matrix(1,0,0,1,411,422)\" width=\"32\"\n xlink:show=\"embed\" xlink:type=\"simple\"\n clip-path=\"url(#lOcn6EHpV1XclipPath12)\" preserveAspectRatio=\"none\"\n stroke-width=\"1\" height=\"12\" x=\"0\" y=\"0\" font-size=\"4\"\n xlink:href=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAMCAYAAAADFL+5AAAB2UlEQVR42sVUTU/b\nMBh+7DRpEqBNV1EY4wTlOmkXBEK77DJpv4JfwI/h30yqJi4cxhHBaYUT4qN8pGkI\nSZrFxg7YKiT0xvZYlvz6tf08fv2+Jr1ebxvAruhz+LcIRd+h703ORct5DsbZa5fk\n3K1NklNK4TgOvEYDlmVhFI5wH0VI0/GLnaZpwnUdNJteYQfBEA8PMbIs02uYaAf3\ne7jBBTJrDMoM2GMXX5xNdMxPWkRNjQghaHlNdLtr+pDOwoI4OMKffh9Jkmry5aWl\nwqfwcXERg6srnJ2faxH74U/czF6CmBQEtIhEjAi//V/4Sn7Aq7WfLq0OcWwbqyvd\nUghddwbtD+0J23lBPilW+iRSlsCvDQry12Aew2FyoG29wqrXQSipfMfO/DwMwyjG\nKuxVUL4R85E7vDonBEVCorKA/wUtYJym4Kxa9eD6Gnme64R7C8rXoC0YcXU0iaCw\n+UxZQJwkODntlzbIJLy9u52w4yLhSiLFnPRJ1KmN1t8OeMbKNx5SfLbXta2rgHMO\nfxjg6Ph4ahnKLJfZfjf0p5bh1tz3N8tQVYASEKq/gDGGSBDKPg2SKAhkH015W4qN\n2W9F+clPiMhitEspF8qZnWcR7wJJbBADlNDKr/gRdwHUkatixdAAAAAASUVORK5C\nYII=\" xlink:actuate=\"onLoad\"/>\n <polygon fill=\"rgb(102,0,45)\" stroke-width=\"1\"\n clip-path=\"url(#lOcn6EHpV1XclipPath34)\"\n points=\" 402 394 411 394 411 403 402 403\" stroke=\"none\"/>\n <polygon fill=\"rgb(102,0,45)\" stroke-width=\"1\"\n clip-path=\"url(#lOcn6EHpV1XclipPath35)\"\n points=\" 443 394 452 394 452 403 443 403\" stroke=\"none\"/>\n <text x=\"229\" y=\"373\" clip-path=\"url(#lOcn6EHpV1XclipPath36)\" stroke=\"none\"\n font-weight=\"bold\" stroke-width=\"1\" xml:space=\"preserve\">DB GroupBy (Labs)</text><image xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n transform=\"matrix(1,0,0,1,271,383)\" width=\"32\"\n xlink:show=\"embed\" xlink:type=\"simple\"\n clip-path=\"url(#lOcn6EHpV1XclipPath10)\" preserveAspectRatio=\"none\"\n stroke-width=\"1\" height=\"32\" x=\"0\" y=\"0\"\n xlink:href=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAaklEQVR42u2XsQ2A\nMAwEjcUGDBYxRKZiiqzCQAZHcqio7eZe+vrP7+q355ZDRC53c6vkyNzD3fcIPyVX\nujI1Lq9S08Taf5uoDP9+AQAAAAAAAAAAAAAAAAAAYIX5prFSqzTmOu5rKFbM8xel\nUA0xDHJAMgAAAABJRU5ErkJggg==\" xlink:actuate=\"onLoad\"/>\n <image xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n transform=\"matrix(1,0,0,1,279,391)\" width=\"16\"\n xlink:show=\"embed\" xlink:type=\"simple\"\n clip-path=\"url(#lOcn6EHpV1XclipPath11)\" preserveAspectRatio=\"none\"\n stroke-width=\"1\" height=\"16\" x=\"0\" y=\"0\"\n xlink:href=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABHklEQVR42mP8//8/\nAyWAEYgvAfE1KD4DNHAbKQYwA/E0INYBYkcgjm5sbNRtaGhYRYoL0P3wEohlgJgL\niLuw6DkEdOUyGIcJSeIdEG8BYmeggj9QA9KxYDtk01iAOACIzwM1PUKz6RUQSyLx\ntYF4D7pzWIAaNzJCAMjZgUAcA8RuQPGPQPoF3K+MjBLYwoAFKHEPSEsBMTtU7CsQ\nf8ITbiFAPRbIXlBEU7D1P/7EAQobCWQDQADk3GfQQGwnEHOLgOZnIBvAAxT4iuRX\nDiBmhkaxDpJGdaxhAA0HPSCtCsT+0FgBhQkPKHYIJSSQAR/QExLQRV+AhoLSyExs\nCQndAHQATsZAQ0AxkUGMC24B8WMgfgKKASBeQ1JupDQ7AwD2W1gnlxG/HQAAAABJRU5ErkJggg==\"\n xlink:actuate=\"onLoad\"/>\n <image xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n transform=\"matrix(1,0,0,1,271,422)\" width=\"32\"\n xlink:show=\"embed\" xlink:type=\"simple\"\n clip-path=\"url(#lOcn6EHpV1XclipPath12)\" preserveAspectRatio=\"none\"\n stroke-width=\"1\" height=\"12\" x=\"0\" y=\"0\" font-size=\"4\"\n xlink:href=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAMCAYAAAADFL+5AAAB2UlEQVR42sVUTU/b\nMBh+7DRpEqBNV1EY4wTlOmkXBEK77DJpv4JfwI/h30yqJi4cxhHBaYUT4qN8pGkI\nSZrFxg7YKiT0xvZYlvz6tf08fv2+Jr1ebxvAruhz+LcIRd+h703ORct5DsbZa5fk\n3K1NklNK4TgOvEYDlmVhFI5wH0VI0/GLnaZpwnUdNJteYQfBEA8PMbIs02uYaAf3\ne7jBBTJrDMoM2GMXX5xNdMxPWkRNjQghaHlNdLtr+pDOwoI4OMKffh9Jkmry5aWl\nwqfwcXERg6srnJ2faxH74U/czF6CmBQEtIhEjAi//V/4Sn7Aq7WfLq0OcWwbqyvd\nUghddwbtD+0J23lBPilW+iRSlsCvDQry12Aew2FyoG29wqrXQSipfMfO/DwMwyjG\nKuxVUL4R85E7vDonBEVCorKA/wUtYJym4Kxa9eD6Gnme64R7C8rXoC0YcXU0iaCw\n+UxZQJwkODntlzbIJLy9u52w4yLhSiLFnPRJ1KmN1t8OeMbKNx5SfLbXta2rgHMO\nfxjg6Ph4ahnKLJfZfjf0p5bh1tz3N8tQVYASEKq/gDGGSBDKPg2SKAhkH015W4qN\n2W9F+clPiMhitEspF8qZnWcR7wJJbBADlNDKr/gRdwHUkatixdAAAAAASUVORK5C\nYII=\" xlink:actuate=\"onLoad\"/>\n <polygon fill=\"rgb(102,0,45)\" stroke-width=\"1\"\n clip-path=\"url(#lOcn6EHpV1XclipPath37)\"\n points=\" 262 394 271 394 271 403 262 403\" stroke=\"none\"/>\n <polygon fill=\"rgb(102,0,45)\" stroke-width=\"1\"\n clip-path=\"url(#lOcn6EHpV1XclipPath38)\"\n points=\" 303 394 312 394 312 403 303 403\" stroke=\"none\"/>\n <text x=\"530\" y=\"358\" clip-path=\"url(#lOcn6EHpV1XclipPath39)\" stroke=\"none\"\n font-weight=\"bold\" stroke-width=\"1\" xml:space=\"preserve\">Parameterized DB</text><text x=\"523\"\n y=\"373\" clip-path=\"url(#lOcn6EHpV1XclipPath40)\" stroke=\"none\"\n font-weight=\"bold\" stroke-width=\"1\" xml:space=\"preserve\">Query Reader (Labs)</text><image xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n transform=\"matrix(1,0,0,1,571,383)\" width=\"32\"\n xlink:show=\"embed\" xlink:type=\"simple\"\n clip-path=\"url(#lOcn6EHpV1XclipPath10)\" preserveAspectRatio=\"none\"\n stroke-width=\"1\" height=\"32\" x=\"0\" y=\"0\"\n xlink:href=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAa0lEQVR42u2XsQ2A\nQAwDQ8QGbMIiL4b4lWiY4hcMBClPRZ00Z8m1L07l5T73TUQud3Or5Mjcw93XCD8k\nVzozNS6vUtPE2n+bqAz/fgEAAAAAAAAAAAAAAAAAAGCF+aaxUqs03nXc51CsmOcP\nA/INJ1T1pwYAAAAASUVORK5CYII=\" xlink:actuate=\"onLoad\"/>\n <image xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n transform=\"matrix(1,0,0,1,579,391)\" width=\"16\"\n xlink:show=\"embed\" xlink:type=\"simple\"\n clip-path=\"url(#lOcn6EHpV1XclipPath11)\" preserveAspectRatio=\"none\"\n stroke-width=\"1\" height=\"16\" x=\"0\" y=\"0\"\n xlink:href=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABDUlEQVR42mNmYGC4\nDcSOQCwCxPeB+BsDKuAE4lYg3gnEjUCsBsQHgPg7SJIZiCcBsSYQewFxLhA/BeIL\nSAbkAHEzEL+DyjkAMT8QbwVJMmGxbQqaWD8Q7wDiMCAOh7rQCybJwoAJutH4jEjs\nBiDmAuLPyAb8AeLLUH/Nh7KxAZDmYihbB1mCiYE48AaI/6MLgjT/Q+KrQkMcGxAG\n4p8MWPyXDsR60KjUxOJvvAAUBjPQxN7hUPsfm+HosbAXiPMYSATN0PiVZaAS0CNF\nMSgpCwCxGRAnQVNdIxTjA/+hYXEAFAbv0ST/4Qg8dFAPwuiB+AOIq/AkZWRDQa5s\nAEneBOIrQHwciJcB8TNSwgAABqAyhgP6VoQAAAAASUVORK5CYII=\" xlink:actuate=\"onLoad\"/>\n <image xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n transform=\"matrix(1,0,0,1,571,422)\" width=\"32\"\n xlink:show=\"embed\" xlink:type=\"simple\"\n clip-path=\"url(#lOcn6EHpV1XclipPath12)\" preserveAspectRatio=\"none\"\n stroke-width=\"1\" height=\"12\" x=\"0\" y=\"0\" font-size=\"4\"\n xlink:href=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAMCAYAAAADFL+5AAAB2UlEQVR42sVUTU/b\nMBh+7DRpEqBNV1EY4wTlOmkXBEK77DJpv4JfwI/h30yqJi4cxhHBaYUT4qN8pGkI\nSZrFxg7YKiT0xvZYlvz6tf08fv2+Jr1ebxvAruhz+LcIRd+h703ORct5DsbZa5fk\n3K1NklNK4TgOvEYDlmVhFI5wH0VI0/GLnaZpwnUdNJteYQfBEA8PMbIs02uYaAf3\ne7jBBTJrDMoM2GMXX5xNdMxPWkRNjQghaHlNdLtr+pDOwoI4OMKffh9Jkmry5aWl\nwqfwcXERg6srnJ2faxH74U/czF6CmBQEtIhEjAi//V/4Sn7Aq7WfLq0OcWwbqyvd\nUghddwbtD+0J23lBPilW+iRSlsCvDQry12Aew2FyoG29wqrXQSipfMfO/DwMwyjG\nKuxVUL4R85E7vDonBEVCorKA/wUtYJym4Kxa9eD6Gnme64R7C8rXoC0YcXU0iaCw\n+UxZQJwkODntlzbIJLy9u52w4yLhSiLFnPRJ1KmN1t8OeMbKNx5SfLbXta2rgHMO\nfxjg6Ph4ahnKLJfZfjf0p5bh1tz3N8tQVYASEKq/gDGGSBDKPg2SKAhkH015W4qN\n2W9F+clPiMhitEspF8qZnWcR7wJJbBADlNDKr/gRdwHUkatixdAAAAAASUVORK5C\nYII=\" xlink:actuate=\"onLoad\"/>\n <polygon stroke-width=\"1\" clip-path=\"url(#lOcn6EHpV1XclipPath41)\"\n points=\" 562 384 571 388 562 393\" stroke=\"none\"/>\n <polygon fill=\"rgb(102,0,45)\" stroke-width=\"1\"\n clip-path=\"url(#lOcn6EHpV1XclipPath42)\"\n points=\" 562 403 571 403 571 412 562 412\" stroke=\"none\"/>\n <polygon stroke-width=\"1\" clip-path=\"url(#lOcn6EHpV1XclipPath43)\"\n points=\" 603 384 612 388 603 393\" stroke=\"none\"/>\n <polygon stroke-width=\"1\" clip-path=\"url(#lOcn6EHpV1XclipPath44)\"\n points=\" 603 403 612 407 603 412\" stroke=\"none\"/>\n <text x=\"717\" y=\"358\" clip-path=\"url(#lOcn6EHpV1XclipPath45)\" stroke=\"none\"\n font-weight=\"bold\" stroke-width=\"1\" xml:space=\"preserve\">Container</text><text x=\"704\"\n y=\"373\" clip-path=\"url(#lOcn6EHpV1XclipPath46)\" stroke=\"none\"\n font-weight=\"bold\" stroke-width=\"1\" xml:space=\"preserve\">Output (Table)</text><image xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n transform=\"matrix(1,0,0,1,731,383)\" width=\"32\"\n xlink:show=\"embed\" xlink:type=\"simple\"\n clip-path=\"url(#lOcn6EHpV1XclipPath10)\" preserveAspectRatio=\"none\"\n stroke-width=\"1\" height=\"32\" x=\"0\" y=\"0\"\n xlink:href=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAbUlEQVR42u2XsQ2A\nQAwDQ8QGDPZiiJ+KCSh/DiZgmYgg5amok+YsufbFqbxc97mJyOFubpUcmXu4+xrh\nu+RKZ6bG5VVqmlj7bxOV4d8vAAAAAAAAAAAAAAAAAAAArDDfNFZqlca7jvscihXz\n/AFzcw2txpwGwQAAAABJRU5ErkJggg==\" xlink:actuate=\"onLoad\"/>\n <image xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n transform=\"matrix(1,0,0,1,739,391)\" width=\"16\"\n xlink:show=\"embed\" xlink:type=\"simple\"\n clip-path=\"url(#lOcn6EHpV1XclipPath11)\" preserveAspectRatio=\"none\"\n stroke-width=\"1\" height=\"16\" x=\"0\" y=\"0\"\n xlink:href=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABUUlEQVR42q1TsU6E\nQBBdOIwYGiso9RpqSjqxspTKGjpKyus4urOz9Auot7VS+AMIheXdD5BQCQkRZ8hA\nyIpS6CQvLLPvzc7Ozkh93zPR4jh24PMquG+jKHoTuTL7oyl0ogsfxJ78uwXuDnhH\nWiOPQ0ZcIccT4ArwQFmdLwS4A7wDPgEXALwm30iShNHuiXQ2ZiWaqqqs6zqFOGiX\naZpKeFq4dk8Ue57HXNcVt0KZ7p6uiQ3DELdQ48r0NGPxmGVZLAiCQTgX53nOOOfz\nAHvUfruvbduDwPf94V/X9SXxZFhEhzK4RkdZlsw0zUGoadpv4i0U8Yg1wN2b0ds0\nDUuSBCvOqqr68WTS8I3jOCq96WRt27KiKFiWZWsP9IhFxPRP5PhAPS7qul4StMRB\nO6F2LGIotPIzdd7cXgDBvJWnWcCeHh00G4eFAAfgjbPg/ds0fgFP0HPHJaLVVAAA\nAABJRU5ErkJggg==\" xlink:actuate=\"onLoad\"/>\n <image xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n transform=\"matrix(1,0,0,1,731,422)\" width=\"32\"\n xlink:show=\"embed\" xlink:type=\"simple\"\n clip-path=\"url(#lOcn6EHpV1XclipPath12)\" preserveAspectRatio=\"none\"\n stroke-width=\"1\" height=\"12\" x=\"0\" y=\"0\" font-size=\"4\"\n xlink:href=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAMCAYAAAADFL+5AAABuklEQVR42sVUy07C\nUBA9LdW2PigEwY2JMaCfoVv9C7/Aj/FnXLHQf2AhlLhxpUJ5WNsSKN5zpTeFVgwu\n9CSTtHceZ+7cmdGazeY1gFsh+/hbjIXcGL8nn0PHVH7FYBht0wDkvDXS5Lquw7Zt\nOMV9mKaJ4WgE/91HNJkseZ4U73B08ACjHMv/qafj+e0cT6OrJTtzexu7e7siXhFR\nFIl4YwRBgDiOVRJG8qVpGkolB43GqQpQrR3iI/iA2+4gFAES8uP6PfSypey2HODY\nuQe6UElY4gKNs1Ps2DvK7kiI63bgeQPM5/OvSydKy7JQrzcydWKASqWiys6bp8lV\n9cQZdbQh6JMmT0AOcik/VS6RMauQh2qtikKhIN88KXseqKMNbemTB3KQK5PAf0El\nwCZJ3mUVry+vmM1mstvZcN+BOtrQlj65syM4okU/LSUQhiG6XTfjwCbs9XpJAWW3\nx16YseMZdck40oe+qyAHudSzpTMbDIZotVprx1B2uej27BheLI0hp6bz2M4dw3Sl\njcVGkruA8+n7vpR1INHT6PLHRcTEo/4E/b737TbkE9wsktgQmiDekvKLLahW8Sd3\nI9NSe3Ml5QAAAABJRU5ErkJggg==\" xlink:actuate=\"onLoad\"/>\n <polygon stroke-width=\"1\" clip-path=\"url(#lOcn6EHpV1XclipPath47)\"\n points=\" 722 394 731 398 722 403\" stroke=\"none\"/>\n <polygon stroke-width=\"1\" clip-path=\"url(#lOcn6EHpV1XclipPath48)\"\n points=\" 763 394 772 398 763 403\" stroke=\"none\"/>\n <text x=\"15\" y=\"298\" clip-path=\"url(#lOcn6EHpV1XclipPath49)\" stroke=\"none\"\n font-weight=\"bold\" stroke-width=\"1\" xml:space=\"preserve\">Retrieve assays,</text><text x=\"0\"\n y=\"313\" clip-path=\"url(#lOcn6EHpV1XclipPath50)\" stroke=\"none\"\n font-weight=\"bold\" stroke-width=\"1\" xml:space=\"preserve\">activities, and targets</text><image xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n transform=\"matrix(1,0,0,1,51,323)\" width=\"32\"\n xlink:show=\"embed\" xlink:type=\"simple\"\n clip-path=\"url(#lOcn6EHpV1XclipPath10)\" preserveAspectRatio=\"none\"\n stroke-width=\"1\" height=\"32\" x=\"0\" y=\"0\"\n xlink:href=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAa0lEQVR42u2XsQ2A\nMAwEjcUGDBYxRKZiigxARrMwkkNFbTf30td/fle/3XMeInK5m1slR+Ye7r5H+Cm5\n0pWpcXmVmibW/ttEZfj3CwAAAAAAAAAAAAAAAAAAACvMN42VWqXxruO+hmLFPH8A\nMOkNmTZYl7gAAAAASUVORK5CYII=\" xlink:actuate=\"onLoad\"/>\n <image xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n transform=\"matrix(1,0,0,1,59,331)\" width=\"16\"\n xlink:show=\"embed\" xlink:type=\"simple\"\n clip-path=\"url(#lOcn6EHpV1XclipPath11)\" preserveAspectRatio=\"none\"\n stroke-width=\"1\" height=\"16\" x=\"0\" y=\"0\"\n xlink:href=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAA3UlEQVR42mP8//8/\nAyWAhRhFjCcZGfjY+RgYGRkZQBZ++vmJ4b/5f+IN4GHjYXBSdWJgY2Zj+PX3F8Oe\nW3vwuwBkEzIQOS7CIMotCudz/OSAq2EipBmrKiYsYcCYDtQoCGQEQxUA2f9nQvzJ\ne4GX4dGHRwysTKwMv//9ZvjB9oMBFvgIL4A0xwMxOxD/BOKFCFu+fPvCcPDeQaC5\nTAz/gPDHjx8IF8NZ5UDcgeTMFqALaghHMRMDhYAF5hfGCqBjriN54QupCek91N8g\nN/2D8kkxABbipAKKw2AYGAAArXBAE6T1kEAAAAAASUVORK5CYII=\" xlink:actuate=\"onLoad\"/>\n <image xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n transform=\"matrix(1,0,0,1,51,362)\" width=\"32\"\n xlink:show=\"embed\" xlink:type=\"simple\"\n clip-path=\"url(#lOcn6EHpV1XclipPath12)\" preserveAspectRatio=\"none\"\n stroke-width=\"1\" height=\"12\" x=\"0\" y=\"0\" font-size=\"4\"\n xlink:href=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAMCAYAAAADFL+5AAAB2UlEQVR42sVUTU/b\nMBh+7DRpEqBNV1EY4wTlOmkXBEK77DJpv4JfwI/h30yqJi4cxhHBaYUT4qN8pGkI\nSZrFxg7YKiT0xvZYlvz6tf08fv2+Jr1ebxvAruhz+LcIRd+h703ORct5DsbZa5fk\n3K1NklNK4TgOvEYDlmVhFI5wH0VI0/GLnaZpwnUdNJteYQfBEA8PMbIs02uYaAf3\ne7jBBTJrDMoM2GMXX5xNdMxPWkRNjQghaHlNdLtr+pDOwoI4OMKffh9Jkmry5aWl\nwqfwcXERg6srnJ2faxH74U/czF6CmBQEtIhEjAi//V/4Sn7Aq7WfLq0OcWwbqyvd\nUghddwbtD+0J23lBPilW+iRSlsCvDQry12Aew2FyoG29wqrXQSipfMfO/DwMwyjG\nKuxVUL4R85E7vDonBEVCorKA/wUtYJym4Kxa9eD6Gnme64R7C8rXoC0YcXU0iaCw\n+UxZQJwkODntlzbIJLy9u52w4yLhSiLFnPRJ1KmN1t8OeMbKNx5SfLbXta2rgHMO\nfxjg6Ph4ahnKLJfZfjf0p5bh1tz3N8tQVYASEKq/gDGGSBDKPg2SKAhkH015W4qN\n2W9F+clPiMhitEspF8qZnWcR7wJJbBADlNDKr/gRdwHUkatixdAAAAAASUVORK5C\nYII=\" xlink:actuate=\"onLoad\"/>\n <polygon fill=\"rgb(102,0,45)\" stroke-width=\"1\"\n clip-path=\"url(#lOcn6EHpV1XclipPath51)\"\n points=\" 83 334 92 334 92 343 83 343\" stroke=\"none\"/>\n </g>\n <g stroke-linecap=\"butt\" fill=\"rgb(150,150,150)\"\n text-rendering=\"optimizeLegibility\"\n font-family=\"&apos;Segoe UI&apos;\" stroke=\"rgb(150,150,150)\"\n stroke-width=\"2\">\n <path fill=\"none\"\n d=\"M312 118 C314 118 318 118 320 118 C341 118 372 118 393 118 C395 118 399 118 401 118\"\n clip-path=\"url(#lOcn6EHpV1XclipPath52)\" fill-rule=\"evenodd\"/>\n <path fill=\"none\"\n d=\"M452 398 C454 398 458 398 460 398 C488 398 525 407 553 407 C555 407 559 407 561 407\"\n clip-path=\"url(#lOcn6EHpV1XclipPath52)\" fill-rule=\"evenodd\"/>\n <path fill=\"none\"\n d=\"M612 248 C614 248 618 248 620 248 C648 248 685 258 713 258 C715 258 719 258 721 258\"\n clip-path=\"url(#lOcn6EHpV1XclipPath52)\" fill-rule=\"evenodd\"/>\n <path fill=\"none\"\n d=\"M92 338 C94 338 98 338 100 338 C151 338 202 258 253 258 C255 258 259 258 261 258\"\n clip-path=\"url(#lOcn6EHpV1XclipPath52)\" fill-rule=\"evenodd\"/>\n <path fill=\"none\"\n d=\"M312 258 C314 258 318 258 320 258 C341 258 372 258 393 258 C395 258 399 258 401 258\"\n clip-path=\"url(#lOcn6EHpV1XclipPath52)\" fill-rule=\"evenodd\"/>\n <path fill=\"none\"\n d=\"M452 118 C454 118 458 118 460 118 C507 118 506 248 553 248 C555 248 559 248 561 248\"\n clip-path=\"url(#lOcn6EHpV1XclipPath52)\" fill-rule=\"evenodd\"/>\n <path fill=\"none\"\n d=\"M612 388 C614 388 618 388 620 388 C648 388 685 398 713 398 C715 398 719 398 721 398\"\n clip-path=\"url(#lOcn6EHpV1XclipPath52)\" fill-rule=\"evenodd\"/>\n <path fill=\"none\"\n d=\"M452 118 C454 118 458 118 460 118 C545 118 468 388 553 388 C555 388 559 388 561 388\"\n clip-path=\"url(#lOcn6EHpV1XclipPath52)\" fill-rule=\"evenodd\"/>\n <path fill=\"none\"\n d=\"M452 258 C454 258 458 258 460 258 C488 258 525 267 553 267 C555 267 559 267 561 267\"\n clip-path=\"url(#lOcn6EHpV1XclipPath52)\" fill-rule=\"evenodd\"/>\n <path fill=\"none\"\n d=\"M92 338 C94 338 98 338 100 338 C149 338 204 398 253 398 C255 398 259 398 261 398\"\n clip-path=\"url(#lOcn6EHpV1XclipPath52)\" fill-rule=\"evenodd\"/>\n <path fill=\"none\"\n d=\"M312 398 C314 398 318 398 320 398 C341 398 372 398 393 398 C395 398 399 398 401 398\"\n clip-path=\"url(#lOcn6EHpV1XclipPath52)\" fill-rule=\"evenodd\"/>\n </g>\n </g>\n</svg>",
"text/plain": "<knime.LocalWorkflow at 0x1ecc011b6c8>"
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
]
},
{
"metadata": {},
"cell_type": "markdown",
"source": "We need to provide the workflow with a table containing the terms we want to query for. For this workflow we are providing ChEMBL target IDs.\n\nWe'll do this by providing a Pandas DataFrame:"
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "interesting_targets = {'target_chembl_id':[\"CHEMBL214\",\"CHEMBL219\",\"CHEMBL1983\"]}\ndf = pd.DataFrame(interesting_targets)",
"execution_count": 4,
"outputs": []
},
{
"metadata": {},
"cell_type": "markdown",
"source": "Now execute the workflow with that DataFrame as one of the inputs:"
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "with knime.Workflow(workflow_path=workflow,workspace_path=workspace) as wf:\n wf.data_table_inputs[0] = df\n wf.execute()\n",
"execution_count": 5,
"outputs": []
},
{
"metadata": {},
"cell_type": "markdown",
"source": "The two output tables are also present as Pandas DataFrames:"
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "len(wf.data_table_outputs)",
"execution_count": 6,
"outputs": [
{
"data": {
"text/plain": "2"
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
]
},
{
"metadata": {},
"cell_type": "markdown",
"source": "The first data table has one summary level of the data - the number of compounds for which there is data for each readout of each assay that was run against each target:"
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "len(wf.data_table_outputs[0])",
"execution_count": 7,
"outputs": [
{
"data": {
"text/plain": "2067"
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
]
},
{
"metadata": {},
"cell_type": "markdown",
"source": "That's too many rows to look at all at once, so let's just dispay the first few:"
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "wf.data_table_outputs[0].head()",
"execution_count": 8,
"outputs": [
{
"data": {
"text/html": "<div>\n<style scoped>\n .dataframe tbody tr th:only-of-type {\n vertical-align: middle;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n\n .dataframe thead th {\n text-align: right;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>standard_type</th>\n <th>description</th>\n <th>assay_type</th>\n <th>assay_chembl_id</th>\n <th>pref_name</th>\n <th>organism</th>\n <th>target_chembl_id</th>\n <th>COUNT(molregno)</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>0</th>\n <td>Ki</td>\n <td>Antagonist activity at 5HT1A</td>\n <td>F</td>\n <td>CHEMBL1106423</td>\n <td>Serotonin 1a (5-HT1a) receptor</td>\n <td>Homo sapiens</td>\n <td>CHEMBL214</td>\n <td>88</td>\n </tr>\n <tr>\n <th>1</th>\n <td>Ki</td>\n <td>Binding affinity to human 5-hydroxytryptamine ...</td>\n <td>B</td>\n <td>CHEMBL615772</td>\n <td>Serotonin 1a (5-HT1a) receptor</td>\n <td>Homo sapiens</td>\n <td>CHEMBL214</td>\n <td>81</td>\n </tr>\n <tr>\n <th>2</th>\n <td>Emax</td>\n <td>Intrinsic activity at human 5-HT1A receptor ex...</td>\n <td>F</td>\n <td>CHEMBL1259257</td>\n <td>Serotonin 1a (5-HT1a) receptor</td>\n <td>Homo sapiens</td>\n <td>CHEMBL214</td>\n <td>75</td>\n </tr>\n <tr>\n <th>3</th>\n <td>EC50</td>\n <td>Intrinsic activity at human 5-HT1A receptor ex...</td>\n <td>F</td>\n <td>CHEMBL1259255</td>\n <td>Serotonin 1a (5-HT1a) receptor</td>\n <td>Homo sapiens</td>\n <td>CHEMBL214</td>\n <td>74</td>\n </tr>\n <tr>\n <th>4</th>\n <td>Ki</td>\n <td>Binding affinity to 5HT1A receptor</td>\n <td>B</td>\n <td>CHEMBL1785228</td>\n <td>Serotonin 1a (5-HT1a) receptor</td>\n <td>Homo sapiens</td>\n <td>CHEMBL214</td>\n <td>66</td>\n </tr>\n </tbody>\n</table>\n</div>",
"text/plain": " standard_type description assay_type \\\n0 Ki Antagonist activity at 5HT1A F \n1 Ki Binding affinity to human 5-hydroxytryptamine ... B \n2 Emax Intrinsic activity at human 5-HT1A receptor ex... F \n3 EC50 Intrinsic activity at human 5-HT1A receptor ex... F \n4 Ki Binding affinity to 5HT1A receptor B \n\n assay_chembl_id pref_name organism \\\n0 CHEMBL1106423 Serotonin 1a (5-HT1a) receptor Homo sapiens \n1 CHEMBL615772 Serotonin 1a (5-HT1a) receptor Homo sapiens \n2 CHEMBL1259257 Serotonin 1a (5-HT1a) receptor Homo sapiens \n3 CHEMBL1259255 Serotonin 1a (5-HT1a) receptor Homo sapiens \n4 CHEMBL1785228 Serotonin 1a (5-HT1a) receptor Homo sapiens \n\n target_chembl_id COUNT(molregno) \n0 CHEMBL214 88 \n1 CHEMBL214 81 \n2 CHEMBL214 75 \n3 CHEMBL214 74 \n4 CHEMBL214 66 "
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
]
},
{
"metadata": {},
"cell_type": "markdown",
"source": "The second data table rolls the data up in even further, it shows the number of compounds that were tested in all assays that were run against each target:"
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "wf.data_table_outputs[1]",
"execution_count": 9,
"outputs": [
{
"data": {
"text/html": "<div>\n<style scoped>\n .dataframe tbody tr th:only-of-type {\n vertical-align: middle;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n\n .dataframe thead th {\n text-align: right;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>pref_name</th>\n <th>organism</th>\n <th>target_chembl_id</th>\n <th>COUNT(molregno)</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>0</th>\n <td>Serotonin 1a (5-HT1a) receptor</td>\n <td>Homo sapiens</td>\n <td>CHEMBL214</td>\n <td>8089</td>\n </tr>\n <tr>\n <th>1</th>\n <td>Dopamine D4 receptor</td>\n <td>Homo sapiens</td>\n <td>CHEMBL219</td>\n <td>6090</td>\n </tr>\n <tr>\n <th>2</th>\n <td>Serotonin 1d (5-HT1d) receptor</td>\n <td>Homo sapiens</td>\n <td>CHEMBL1983</td>\n <td>2497</td>\n </tr>\n </tbody>\n</table>\n</div>",
"text/plain": " pref_name organism target_chembl_id \\\n0 Serotonin 1a (5-HT1a) receptor Homo sapiens CHEMBL214 \n1 Dopamine D4 receptor Homo sapiens CHEMBL219 \n2 Serotonin 1d (5-HT1d) receptor Homo sapiens CHEMBL1983 \n\n COUNT(molregno) \n0 8089 \n1 6090 \n2 2497 "
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
]
},
{
"metadata": {},
"cell_type": "markdown",
"source": "That's it!"
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "",
"execution_count": null,
"outputs": []
}
],
"metadata": {
"_draft": {
"nbviewer_url": "https://gist.github.com/9c563ac4eaafff99929c5a4c2e39ed9e"
},
"gist": {
"id": "9c563ac4eaafff99929c5a4c2e39ed9e",
"data": {
"description": "KNIME from Jupyter_demo.ipynb",
"public": true
}
},
"kernelspec": {
"name": "python3",
"display_name": "Python 3",
"language": "python"
},
"language_info": {
"name": "python",
"version": "3.6.6",
"mimetype": "text/x-python",
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"pygments_lexer": "ipython3",
"nbconvert_exporter": "python",
"file_extension": ".py"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
@mbezy
Copy link

mbezy commented Feb 12, 2019

Hi, thanks for sharing the code!
One question: if there are several container input in the Knime workflow, how can one know in which order to provide the inputs in the Python code (using the "data_table_inputs" function)?
Thank you!

@maxime-beck
Copy link

This is very useful thank you!
In terms of execution time, would there be any optimization possible? It's quite long to execute even the smallest workflow (8 seconds to create and sort 4 cells). I would assume most of this time is used to load the workflow?

@greglandrum
Copy link
Author

@maxime-beck : because this needs to launch a KNIME Analytics Platform instance each time you run a workflow, it's always going to take a while. I find it most useful when combined with workflows that already take a long time to execute.

If you're a KNIME Server customer: there will be an updated version of the package soon that can take advantage of a KNIME Server to execute the workflows. This will allow a much lower latency than we get when using things locally.

@maxime-beck
Copy link

@greglandrum I see that the library is invoking the KNIME Batch Application but that CLI doesn't provide a way to just start an instance and keep it running. Is there any plan to add that feature to the Batch Application anytime soon? That would greatly improve the performances of the Jupyter integration.

@nguyenduydu
Copy link

@mbezy: I have the same question. Have you found the answer yet?

@arddashti
Copy link

Hi, thanks for sharing the code!
This is very very useful.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment