Files
sugartrail/dashboard/.ipynb_checkpoints/quickstart_voila-checkpoint.ipynb
2022-12-31 13:51:42 +00:00

303 lines
8.5 KiB
Plaintext

{
"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": [
"<!-- Insert a valid [Companies House Public Data API key](https://developer.company-information.service.gov.uk/get-started/) as `username` string value below. If you don't want to use the API and would prefer loading a pre-built network, uncomment and run the cell below and then run the final cell to build and load the map. -->"
]
},
{
"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": [
"<!-- Each marker represents a company in the network. Green markers represent active companies based at the address, red markers represent active companies no longer based at the address and black markers represent dissolved companies once based at the address. \n",
"\n",
"Select a marker to display additional information: \n",
"- pop-up with the selected company's name and address\n",
"- table containing the most efficient paths from the origin to the selected company\n",
"- antpaths for each company in the network. Red antpath represents the path through all the historic addresses for the selected company. Black antpath represents the path from the network origin through all the addresses in the path to the selected company as displayed in the table. -->"
]
}
],
"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
}