{ "cells": [ { "cell_type": "markdown", "id": "b6926e35", "metadata": {}, "source": [ "# sugartrail " ] }, { "cell_type": "code", "execution_count": 1, "id": "f17ebdd2", "metadata": {}, "outputs": [], "source": [ "from sugartrail import mapview, api, base\n", "import ipywidgets as widgets\n", "from IPython.display import display\n", "import requests" ] }, { "cell_type": "code", "execution_count": null, "id": "cbc5e202", "metadata": {}, "outputs": [], "source": [ "%%capture\n", "network = base.Network()" ] }, { "cell_type": "markdown", "id": "1704e377", "metadata": {}, "source": [ "1. Insert your [Companies House API](https://developer.company-information.service.gov.uk/how-to-create-an-application) key:" ] }, { "cell_type": "code", "execution_count": null, "id": "0632780b", "metadata": {}, "outputs": [], "source": [ "API_input = widgets.Text(\n", " value='',\n", " placeholder='Insert API Key',\n", " disabled=False\n", ")\n", "\n", "auth_status = widgets.HTML(\n", " value=\"\",\n", ")\n", "\n", "auth_button = widgets.Button(description='Authenticate',button_style='success')\n", "auth_button.on_click(lambda bt: auth())\n", "\n", "def auth():\n", " auth_button.disabled=True\n", " API_input.disabled=True\n", " api.basic_auth.username = API_input.value\n", " if api.test():\n", " auth_status.value = u'\\u2705: Login Successful'\n", " company_text.disabled = False\n", " init_button.disabled = False\n", " else:\n", " auth_button.disabled=False\n", " API_input.disabled=False\n", " auth_status.value = u'\\u274c: Invalid API key'\n", "\n", "display(API_input, auth_button, auth_status)" ] }, { "cell_type": "markdown", "id": "2bd8c5be", "metadata": {}, "source": [ "2. Insert the unique company registration number (CRN) for a company you would like to investigate:" ] }, { "cell_type": "markdown", "id": "d5f9b6ad", "metadata": {}, "source": [ "" ] }, { "cell_type": "code", "execution_count": null, "id": "128106c5", "metadata": {}, "outputs": [], "source": [ "company_text = widgets.Text(\n", " value='',\n", " placeholder='Insert Company ID',\n", " disabled=True\n", ")\n", "\n", "init_status = widgets.HTML(\n", " value=\"\",\n", ")\n", "\n", "init_button = widgets.Button(description='Initialise',button_style='success', disabled=True)\n", "init_button.on_click(lambda bt: init_network()) \n", "\n", "def init_network():\n", " init_button.disabled=True\n", " company_text.disabled=True\n", " api.basic_auth.username = API_input.value\n", " response = api.get_company(str(company_text.value))\n", " if response:\n", " network.company_id = str(company_text.value)\n", " init_status.value = u'\\u2705: Initialisation Successful for ' + str(response['company_name']) \n", " depth_selector.disabled = False\n", " generate_network_button.disabled = False\n", " else:\n", " auth_button.disabled=False\n", " API_input.disabled=False\n", " init_status.value = u'\\u274c: Initialisation Failed. No records for company: ' + str(company_text.value) + ' found.'\n", "\n", "display(company_text, init_button, init_status)" ] }, { "cell_type": "markdown", "id": "addafb36", "metadata": {}, "source": [ "3. Select the depth of the network you would like to build:" ] }, { "cell_type": "code", "execution_count": null, "id": "ea0e8392", "metadata": {}, "outputs": [], "source": [ "depth_selector = widgets.BoundedIntText(\n", " value=1,\n", " min=1,\n", " max=5,\n", " step=1,\n", " disabled=True\n", ")\n", "\n", "generate_network_button = widgets.Button(description='Build Network',button_style='success', disabled=True)\n", "generate_network_button.on_click(lambda bt: generate_network()) \n", "\n", "\n", "build_status = widgets.HTML(\n", " value=\"\",\n", ")\n", "\n", "def generate_network():\n", " with output_box:\n", " depth_selector.disabled = True\n", " generate_network_button.disabled = True\n", " network.perform_hop(depth_selector.value + 1)\n", " network.run_map_preprocessing()\n", " build_map_button.disabled = False\n", " \n", " \n", "output_box = widgets.Output()\n", "display(depth_selector, generate_network_button, build_status, output_box)" ] }, { "cell_type": "markdown", "id": "03ffce05", "metadata": {}, "source": [ "4. Visualise network on a map:" ] }, { "cell_type": "code", "execution_count": null, "id": "6449cd96", "metadata": {}, "outputs": [], "source": [ "build_map_button=widgets.Button(description='Build Map',button_style='success', disabled=True)\n", "build_map_button.on_click(lambda bt: generate_map()) \n", "\n", "map_container = widgets.HTML(\n", " value=\"\",\n", ")\n", "\n", "def generate_map():\n", " map_data,path_table = mapview.build_map(network, clear_widget=False) \n", " hbox = widgets.HBox([path_table])\n", " vbox.children = [map_data, hbox]\n", " accordion.selected_index=0\n", " accordi0n.open(0)\n", " build_map_button.disabled = True\n", "\n", "display(build_map_button, map_container)" ] }, { "cell_type": "code", "execution_count": null, "id": "a5a07e3b", "metadata": {}, "outputs": [], "source": [ "%%capture\n", "empty_network = base.Network()" ] }, { "cell_type": "code", "execution_count": 3, "id": "01dca0cf", "metadata": { "scrolled": true, "tags": [ "7" ] }, "outputs": [], "source": [ "map_data,path_table = mapview.build_map(network, clear_widget=False) \n", "hbox = widgets.HBox([path_table])\n", "vbox = widgets.VBox([map_data, hbox])" ] }, { "cell_type": "code", "execution_count": 10, "id": "684a116e", "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "08a9390c88cb49cfb5705f3a0b378ced", "version_major": 2, "version_minor": 0 }, "text/plain": [ "Accordion(children=(VBox(children=(Map(bottom=87768.0, center=[51.27331450324598, -3.223454500000008], control…" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "accordion = widgets.Accordion(children=[vbox])\n", "accordion.set_title(0, 'Map')\n", "# accordion.set_title(1, 'Text')\n", "accordion" ] }, { "cell_type": "markdown", "id": "457bf4d0", "metadata": {}, "source": [ "" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.9.15" } }, "nbformat": 4, "nbformat_minor": 5 }