{"id":21045037,"url":"https://github.com/quansight/ipymapd","last_synced_at":"2026-01-02T07:05:26.496Z","repository":{"id":98605869,"uuid":"143777044","full_name":"Quansight/ipymapd","owner":"Quansight","description":"Interactive tools for MapD Ibis","archived":false,"fork":false,"pushed_at":"2018-08-06T21:09:57.000Z","size":67,"stargazers_count":0,"open_issues_count":0,"forks_count":1,"subscribers_count":51,"default_branch":"master","last_synced_at":"2025-03-10T15:17:09.399Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Jupyter Notebook","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Quansight.png","metadata":{"files":{"readme":"readme.ipynb","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-08-06T20:02:53.000Z","updated_at":"2020-03-26T14:51:47.000Z","dependencies_parsed_at":null,"dependency_job_id":"986c8960-e339-46dd-872e-3e6ed1aa4953","html_url":"https://github.com/Quansight/ipymapd","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Quansight%2Fipymapd","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Quansight%2Fipymapd/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Quansight%2Fipymapd/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Quansight%2Fipymapd/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Quansight","download_url":"https://codeload.github.com/Quansight/ipymapd/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243489835,"owners_count":20299001,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-19T14:19:38.940Z","updated_at":"2026-01-02T07:05:26.462Z","avatar_url":"https://github.com/Quansight.png","language":"Jupyter Notebook","funding_links":[],"categories":[],"sub_categories":[],"readme":"{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Interactive tools for MapD\\n\",\n    \"\\n\",\n    \"MapD is cool technology.  This tool bundles MapD technologies into a user friendly IPython API.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 1,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"%reload_ext ipymapd\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## Connecting to a database\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"* List known connections\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"Return known MapD database connections using a configuration file.\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"    %mapd connect\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"Connect to a database connection.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 2,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"\u003cibis.mapd.client.MapDClient object at 0x113068f60\u003e contains the tables: ['flights_donotmodify', 'contributions_donotmodify', 'tweets_nov_feb', 'zipcodes_orig', 'zipcodes', 'demo_vote_clean']\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"%mapd connect metis\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"List the tables in the connection.  This could return a sick widget to explore the data.\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"    %mapd table metis --interactive\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"Connect to a database using arguments\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"    %mapd connect \\\\\\n\",\n    \"    --user mapd \\\\\\n\",\n    \"    --password HyperInteractive \\\\\\n\",\n    \"    --host metis.mapd.com \\\\\\n\",\n    \"    --port 443 \\\\\\n\",\n    \"    --database mapd \\\\\\n\",\n    \"    --protocol https \"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## Queries\\n\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 3,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/html\": [\n       \"\u003cdiv\u003e\\n\",\n       \"\u003cstyle scoped\u003e\\n\",\n       \"    .dataframe tbody tr th:only-of-type {\\n\",\n       \"        vertical-align: middle;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe tbody tr th {\\n\",\n       \"        vertical-align: top;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe thead th {\\n\",\n       \"        text-align: right;\\n\",\n       \"    }\\n\",\n       \"\u003c/style\u003e\\n\",\n       \"\u003ctable border=\\\"1\\\" class=\\\"dataframe\\\"\u003e\\n\",\n       \"  \u003cthead\u003e\\n\",\n       \"    \u003ctr style=\\\"text-align: right;\\\"\u003e\\n\",\n       \"      \u003cth\u003e\u003c/th\u003e\\n\",\n       \"      \u003cth\u003ex\u003c/th\u003e\\n\",\n       \"      \u003cth\u003ey\u003c/th\u003e\\n\",\n       \"      \u003cth\u003erowid\u003c/th\u003e\\n\",\n       \"    \u003c/tr\u003e\\n\",\n       \"  \u003c/thead\u003e\\n\",\n       \"  \u003ctbody\u003e\\n\",\n       \"    \u003ctr\u003e\\n\",\n       \"      \u003cth\u003e0\u003c/th\u003e\\n\",\n       \"      \u003ctd\u003e-13563874.0\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e4.384050e+06\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e4448\u003c/td\u003e\\n\",\n       \"    \u003c/tr\u003e\\n\",\n       \"    \u003ctr\u003e\\n\",\n       \"      \u003cth\u003e1\u003c/th\u003e\\n\",\n       \"      \u003ctd\u003e-4913196.5\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e-2.574509e+06\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e10016\u003c/td\u003e\\n\",\n       \"    \u003c/tr\u003e\\n\",\n       \"    \u003ctr\u003e\\n\",\n       \"      \u003cth\u003e2\u003c/th\u003e\\n\",\n       \"      \u003ctd\u003e-7009535.0\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e-4.230903e+06\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e4608\u003c/td\u003e\\n\",\n       \"    \u003c/tr\u003e\\n\",\n       \"    \u003ctr\u003e\\n\",\n       \"      \u003cth\u003e3\u003c/th\u003e\\n\",\n       \"      \u003ctd\u003e11907241.0\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e-6.886003e+05\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e4576\u003c/td\u003e\\n\",\n       \"    \u003c/tr\u003e\\n\",\n       \"    \u003ctr\u003e\\n\",\n       \"      \u003cth\u003e4\u003c/th\u003e\\n\",\n       \"      \u003ctd\u003e-7630287.0\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e-3.707356e+06\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e9408\u003c/td\u003e\\n\",\n       \"    \u003c/tr\u003e\\n\",\n       \"    \u003ctr\u003e\\n\",\n       \"      \u003cth\u003e5\u003c/th\u003e\\n\",\n       \"      \u003ctd\u003e-8239380.0\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e4.968139e+06\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e9888\u003c/td\u003e\\n\",\n       \"    \u003c/tr\u003e\\n\",\n       \"    \u003ctr\u003e\\n\",\n       \"      \u003cth\u003e6\u003c/th\u003e\\n\",\n       \"      \u003ctd\u003e-5436762.0\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e-3.040998e+06\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e4416\u003c/td\u003e\\n\",\n       \"    \u003c/tr\u003e\\n\",\n       \"    \u003ctr\u003e\\n\",\n       \"      \u003cth\u003e7\u003c/th\u003e\\n\",\n       \"      \u003ctd\u003e13476805.0\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e1.632640e+06\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e4960\u003c/td\u003e\\n\",\n       \"    \u003c/tr\u003e\\n\",\n       \"    \u003ctr\u003e\\n\",\n       \"      \u003cth\u003e8\u003c/th\u003e\\n\",\n       \"      \u003ctd\u003e-8241296.5\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e4.973656e+06\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e4449\u003c/td\u003e\\n\",\n       \"    \u003c/tr\u003e\\n\",\n       \"    \u003ctr\u003e\\n\",\n       \"      \u003cth\u003e9\u003c/th\u003e\\n\",\n       \"      \u003ctd\u003e-7277123.5\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e-3.884417e+06\u003c/td\u003e\\n\",\n       \"      \u003ctd\u003e9984\u003c/td\u003e\\n\",\n       \"    \u003c/tr\u003e\\n\",\n       \"  \u003c/tbody\u003e\\n\",\n       \"\u003c/table\u003e\\n\",\n       \"\u003c/div\u003e\"\n      ],\n      \"text/plain\": [\n       \"            x             y  rowid\\n\",\n       \"0 -13563874.0  4.384050e+06   4448\\n\",\n       \"1  -4913196.5 -2.574509e+06  10016\\n\",\n       \"2  -7009535.0 -4.230903e+06   4608\\n\",\n       \"3  11907241.0 -6.886003e+05   4576\\n\",\n       \"4  -7630287.0 -3.707356e+06   9408\\n\",\n       \"5  -8239380.0  4.968139e+06   9888\\n\",\n       \"6  -5436762.0 -3.040998e+06   4416\\n\",\n       \"7  13476805.0  1.632640e+06   4960\\n\",\n       \"8  -8241296.5  4.973656e+06   4449\\n\",\n       \"9  -7277123.5 -3.884417e+06   9984\"\n      ]\n     },\n     \"execution_count\": 3,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"%%mapd \\n\",\n    \"SELECT goog_x as x, goog_y as y, tweets_nov_feb.rowid FROM tweets_nov_feb limit 10\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## Visualization\\n\",\n    \"\\n\",\n    \"The `mapd` magic may accept yaml in the body.  When `yaml` is used we return a visualization.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 15,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"application/vnd.mapd.vega+json\": {\n       \"connection\": {\n        \"dbName\": \"mapd\",\n        \"host\": \"metis.mapd.com\",\n        \"password\": \"HyperInteractive\",\n        \"port\": \"443\",\n        \"protocol\": \"https\",\n        \"user\": \"mapd\"\n       },\n       \"vega\": {\n        \"config\": {\n         \"ticks\": false\n        },\n        \"data\": [\n         {\n          \"name\": \"tweets\",\n          \"sql\": \"SELECT goog_x as x, goog_y as y, tweets_nov_feb.rowid FROM tweets_nov_feb\"\n         }\n        ],\n        \"height\": 564,\n        \"marks\": [\n         {\n          \"from\": {\n           \"data\": \"tweets\"\n          },\n          \"properties\": {\n           \"fillColor\": \"green\",\n           \"size\": {\n            \"value\": 1\n           },\n           \"x\": {\n            \"field\": \"x\",\n            \"scale\": \"x\"\n           },\n           \"y\": {\n            \"field\": \"y\",\n            \"scale\": \"y\"\n           }\n          },\n          \"type\": \"points\"\n         }\n        ],\n        \"scales\": [\n         {\n          \"domain\": [\n           3650484.1235206556,\n           7413325.514451755\n          ],\n          \"name\": \"x\",\n          \"range\": \"width\",\n          \"type\": \"linear\"\n         },\n         {\n          \"domain\": [\n           5778161.9183506705,\n           10471808.487466192\n          ],\n          \"name\": \"y\",\n          \"range\": \"height\",\n          \"type\": \"linear\"\n         }\n        ],\n        \"width\": 384\n       }\n      },\n      \"image/png\": \"iVBORw0KGgoAAAANSUhEUgAAAYAAAAI0CAYAAAAUdP5BAAAgAElEQVR4Xu3dCfwdZX3v8W82AgGyBwIhZCEhC4QQwh6SkEASIkKAsO+bgaIioOyyqMUdl1pttS2oVMW1LlC9Xl9at9Yu1vZ2eXm99Wpre9vrfV2v7W3tq7VX7+834YSTk/M/Z+bMMzPPzHweXxEx58w8z/uZMzPP9nskEgIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggg0CKB6VrYotJS1OgFZmmpDteJ0eeTDCLQBIEF2tCEYlCGpghwQTalJikHAggggAACCCCAAAIIIIAAAggggAACCCCAQAUC+2u65mp1BWfmlAgggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggEBNBRZqY01zTrYRQAABBHIJLNCG5PsztDjXcfgyAggggEBNBVZqZ01zTrYRQAABBBBAAAEEEEAgu8CBmpP9S3wDAQQQQKD+AnQB1b8OKQECCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggEDLBHzXqc16dctKTXERQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAAB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\",\n      \"text/plain\": [\n       \"\u003cmapd_renderer.MapDBackendRenderer at 0x113021240\u003e\"\n      ]\n     },\n     \"execution_count\": 15,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"%%mapd\\n\",\n    \"width: 384\\n\",\n    \"height: 564\\n\",\n    \"config: {ticks: false}\\n\",\n    \"data:\\n\",\n    \"  - name: 'tweets'\\n\",\n    \"    sql: 'SELECT goog_x as x, goog_y as y, tweets_nov_feb.rowid FROM tweets_nov_feb' \\n\",\n    \"scales:\\n\",\n    \"  - name: 'x'\\n\",\n    \"    type: 'linear'\\n\",\n    \"    domain: [3650484.1235206556, 7413325.514451755]\\n\",\n    \"    range: 'width'\\n\",\n    \"  - name: 'y'\\n\",\n    \"    type: 'linear'\\n\",\n    \"    domain: [5778161.9183506705, 10471808.487466192]\\n\",\n    \"    range: 'height'\\n\",\n    \"marks:\\n\",\n    \"  - type: 'points'\\n\",\n    \"    from: {data: 'tweets'}\\n\",\n    \"    properties:\\n\",\n    \"      x: {scale: 'x', field: 'x'}\\n\",\n    \"      y: {scale: 'y', field: 'y'}\\n\",\n    \"      fillColor: 'green'\\n\",\n    \"      size: {value: 1}\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"Disconnect the last database that was created\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 11,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"%mapd disconnect \"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## Completion\\n\",\n    \"\\n\",\n    \"* Queries have completion\\n\",\n    \"* The line magic has completion\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## Alternatives\\n\",\n    \"\\n\",\n    \"* ibis.mapd\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## Assumptions\\n\",\n    \"\\n\",\n    \"* A user will experiment with a query before visualizing it.\\n\",\n    \"* Typing out the connection information in _unfun_\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 14,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"[NbConvertApp] Converting notebook readme.ipynb to markdown\\n\",\n      \"[NbConvertApp] Writing 4364 bytes to readme.md\\n\",\n      \"[NbConvertApp] Converting notebook ipymapd/arguments.ipynb to python\\n\",\n      \"[NbConvertApp] Writing 1843 bytes to ipymapd/arguments.py\\n\",\n      \"[NbConvertApp] Converting notebook ipymapd/connection.ipynb to python\\n\",\n      \"[NbConvertApp] Writing 1487 bytes to ipymapd/connection.py\\n\",\n      \"[NbConvertApp] Converting notebook ipymapd/isql.ipynb to python\\n\",\n      \"[NbConvertApp] Writing 799 bytes to ipymapd/isql.py\\n\",\n      \"[NbConvertApp] Converting notebook ipymapd/magics.ipynb to python\\n\",\n      \"[NbConvertApp] Writing 3461 bytes to ipymapd/magics.py\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"if __name__ == '__main__':\\n\",\n    \"    !jupyter nbconvert --to markdown readme.ipynb\\n\",\n    \"    !jupyter nbconvert --to python ipymapd/*.ipynb\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": []\n  }\n ],\n \"metadata\": {\n  \"kernelspec\": {\n   \"display_name\": \"p6\",\n   \"language\": \"python\",\n   \"name\": \"other-env\"\n  },\n  \"language_info\": {\n   \"codemirror_mode\": {\n    \"name\": \"ipython\",\n    \"version\": 3\n   },\n   \"file_extension\": \".py\",\n   \"mimetype\": \"text/x-python\",\n   \"name\": \"python\",\n   \"nbconvert_exporter\": \"python\",\n   \"pygments_lexer\": \"ipython3\",\n   \"version\": \"3.6.3\"\n  }\n },\n \"nbformat\": 4,\n \"nbformat_minor\": 2\n}\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fquansight%2Fipymapd","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fquansight%2Fipymapd","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fquansight%2Fipymapd/lists"}