From 81e3a8a3a3e6f862a938dd20d29ee5153be6e33a Mon Sep 17 00:00:00 2001 From: RobbinBouwmeester Date: Mon, 16 Dec 2024 17:26:38 +0100 Subject: [PATCH] Create Server resubmission.ipynb --- jupyter_notebooks/Server resubmission.ipynb | 580 ++++++++++++++++++++ 1 file changed, 580 insertions(+) create mode 100644 jupyter_notebooks/Server resubmission.ipynb diff --git a/jupyter_notebooks/Server resubmission.ipynb b/jupyter_notebooks/Server resubmission.ipynb new file mode 100644 index 00000000..4179d6cd --- /dev/null +++ b/jupyter_notebooks/Server resubmission.ipynb @@ -0,0 +1,580 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 18, + "id": "1affdd3a", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Requirement already satisfied: ipywidgets in c:\\users\\robbi\\anaconda3\\envs\\proteobench_py311\\lib\\site-packages (8.0.4)\n", + "Requirement already satisfied: ipykernel>=4.5.1 in c:\\users\\robbi\\anaconda3\\envs\\proteobench_py311\\lib\\site-packages (from ipywidgets) (6.25.0)\n", + "Requirement already satisfied: ipython>=6.1.0 in c:\\users\\robbi\\anaconda3\\envs\\proteobench_py311\\lib\\site-packages (from ipywidgets) (8.12.2)\n", + "Requirement already satisfied: traitlets>=4.3.1 in c:\\users\\robbi\\anaconda3\\envs\\proteobench_py311\\lib\\site-packages (from ipywidgets) (5.7.1)\n", + "Requirement already satisfied: widgetsnbextension~=4.0 in c:\\users\\robbi\\anaconda3\\envs\\proteobench_py311\\lib\\site-packages (from ipywidgets) (4.0.5)\n", + "Requirement already satisfied: jupyterlab-widgets~=3.0 in c:\\users\\robbi\\anaconda3\\envs\\proteobench_py311\\lib\\site-packages (from ipywidgets) (3.0.5)\n", + "Requirement already satisfied: comm>=0.1.1 in c:\\users\\robbi\\anaconda3\\envs\\proteobench_py311\\lib\\site-packages (from ipykernel>=4.5.1->ipywidgets) (0.1.2)\n", + "Requirement already satisfied: debugpy>=1.6.5 in c:\\users\\robbi\\anaconda3\\envs\\proteobench_py311\\lib\\site-packages (from ipykernel>=4.5.1->ipywidgets) (1.6.7)\n", + "Requirement already satisfied: jupyter-client>=6.1.12 in c:\\users\\robbi\\anaconda3\\envs\\proteobench_py311\\lib\\site-packages (from ipykernel>=4.5.1->ipywidgets) (7.4.9)\n", + "Requirement already satisfied: jupyter-core!=5.0.*,>=4.12 in c:\\users\\robbi\\anaconda3\\envs\\proteobench_py311\\lib\\site-packages (from ipykernel>=4.5.1->ipywidgets) (5.3.0)\n", + "Requirement already satisfied: matplotlib-inline>=0.1 in c:\\users\\robbi\\anaconda3\\envs\\proteobench_py311\\lib\\site-packages (from ipykernel>=4.5.1->ipywidgets) (0.1.6)\n", + "Requirement already satisfied: nest-asyncio in c:\\users\\robbi\\anaconda3\\envs\\proteobench_py311\\lib\\site-packages (from ipykernel>=4.5.1->ipywidgets) (1.5.6)\n", + "Requirement already satisfied: packaging in c:\\users\\robbi\\anaconda3\\envs\\proteobench_py311\\lib\\site-packages (from ipykernel>=4.5.1->ipywidgets) (23.1)\n", + "Requirement already satisfied: psutil in c:\\users\\robbi\\anaconda3\\envs\\proteobench_py311\\lib\\site-packages (from ipykernel>=4.5.1->ipywidgets) (5.9.0)\n", + "Requirement already satisfied: pyzmq>=20 in c:\\users\\robbi\\anaconda3\\envs\\proteobench_py311\\lib\\site-packages (from ipykernel>=4.5.1->ipywidgets) (23.2.0)\n", + "Requirement already satisfied: tornado>=6.1 in c:\\users\\robbi\\anaconda3\\envs\\proteobench_py311\\lib\\site-packages (from ipykernel>=4.5.1->ipywidgets) (6.3.2)\n", + "Requirement already satisfied: backcall in c:\\users\\robbi\\anaconda3\\envs\\proteobench_py311\\lib\\site-packages (from ipython>=6.1.0->ipywidgets) (0.2.0)\n", + "Requirement already satisfied: decorator in c:\\users\\robbi\\anaconda3\\envs\\proteobench_py311\\lib\\site-packages (from ipython>=6.1.0->ipywidgets) (5.1.1)\n", + "Requirement already satisfied: jedi>=0.16 in c:\\users\\robbi\\anaconda3\\envs\\proteobench_py311\\lib\\site-packages (from ipython>=6.1.0->ipywidgets) (0.18.1)\n", + "Requirement already satisfied: pickleshare in c:\\users\\robbi\\anaconda3\\envs\\proteobench_py311\\lib\\site-packages (from ipython>=6.1.0->ipywidgets) (0.7.5)\n", + "Requirement already satisfied: prompt-toolkit!=3.0.37,<3.1.0,>=3.0.30 in c:\\users\\robbi\\anaconda3\\envs\\proteobench_py311\\lib\\site-packages (from ipython>=6.1.0->ipywidgets) (3.0.36)\n", + "Requirement already satisfied: pygments>=2.4.0 in c:\\users\\robbi\\anaconda3\\envs\\proteobench_py311\\lib\\site-packages (from ipython>=6.1.0->ipywidgets) (2.15.1)\n", + "Requirement already satisfied: stack-data in c:\\users\\robbi\\anaconda3\\envs\\proteobench_py311\\lib\\site-packages (from ipython>=6.1.0->ipywidgets) (0.2.0)\n", + "Requirement already satisfied: colorama in c:\\users\\robbi\\anaconda3\\envs\\proteobench_py311\\lib\\site-packages (from ipython>=6.1.0->ipywidgets) (0.4.6)\n", + "Requirement already satisfied: parso<0.9.0,>=0.8.0 in c:\\users\\robbi\\anaconda3\\envs\\proteobench_py311\\lib\\site-packages (from jedi>=0.16->ipython>=6.1.0->ipywidgets) (0.8.3)\n", + "Requirement already satisfied: entrypoints in c:\\users\\robbi\\anaconda3\\envs\\proteobench_py311\\lib\\site-packages (from jupyter-client>=6.1.12->ipykernel>=4.5.1->ipywidgets) (0.4)\n", + "Requirement already satisfied: python-dateutil>=2.8.2 in c:\\users\\robbi\\anaconda3\\envs\\proteobench_py311\\lib\\site-packages (from jupyter-client>=6.1.12->ipykernel>=4.5.1->ipywidgets) (2.8.2)\n", + "Requirement already satisfied: platformdirs>=2.5 in c:\\users\\robbi\\anaconda3\\envs\\proteobench_py311\\lib\\site-packages (from jupyter-core!=5.0.*,>=4.12->ipykernel>=4.5.1->ipywidgets) (3.10.0)\n", + "Requirement already satisfied: pywin32>=300 in c:\\users\\robbi\\anaconda3\\envs\\proteobench_py311\\lib\\site-packages (from jupyter-core!=5.0.*,>=4.12->ipykernel>=4.5.1->ipywidgets) (305.1)\n", + "Requirement already satisfied: wcwidth in c:\\users\\robbi\\anaconda3\\envs\\proteobench_py311\\lib\\site-packages (from prompt-toolkit!=3.0.37,<3.1.0,>=3.0.30->ipython>=6.1.0->ipywidgets) (0.2.5)\n", + "Requirement already satisfied: executing in c:\\users\\robbi\\anaconda3\\envs\\proteobench_py311\\lib\\site-packages (from stack-data->ipython>=6.1.0->ipywidgets) (0.8.3)\n", + "Requirement already satisfied: asttokens in c:\\users\\robbi\\anaconda3\\envs\\proteobench_py311\\lib\\site-packages (from stack-data->ipython>=6.1.0->ipywidgets) (2.0.5)\n", + "Requirement already satisfied: pure-eval in c:\\users\\robbi\\anaconda3\\envs\\proteobench_py311\\lib\\site-packages (from stack-data->ipython>=6.1.0->ipywidgets) (0.2.2)\n", + "Requirement already satisfied: six>=1.5 in c:\\users\\robbi\\anaconda3\\envs\\proteobench_py311\\lib\\site-packages (from python-dateutil>=2.8.2->jupyter-client>=6.1.12->ipykernel>=4.5.1->ipywidgets) (1.16.0)\n" + ] + } + ], + "source": [ + "!pip install ipywidgets\n", + "\n", + "import pandas as pd\n", + "import ipywidgets as widgets\n", + "from IPython.display import display\n", + "import requests\n", + "from bs4 import BeautifulSoup\n", + "import os\n", + "import zipfile\n", + "from tqdm import tqdm" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "56b53d36", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
idold_newsoftware_namesoftware_versionsearch_enginesearch_engine_versionident_fdr_psmident_fdr_peptideident_fdr_proteinenable_match_between_runs...results.2.CV_q75results.2.CV_q95results.1.median_abs_epsilonresults.1.mean_abs_epsilonresults.1.variance_epsilonresults.1.nr_precresults.1.CV_medianresults.1.CV_q90results.1.CV_q75results.1.CV_q95
0MaxQuant_20241216_100704oldMaxQuant1.5.2.8AndromedaNoneNaN0.0100000.010000False...0.2954550.5246230.2023560.2783610.162885511930.2045220.4265790.2954550.524623
1ProlineStudio_20241216_103006oldProlineStudio2.3.0-SNAPSHOT_2024-09-11T06:45:20Z_jenkinsMascot2.8.30.010000NaNNaNTrue...0.3293960.6168190.2116730.3274180.267728596090.2263300.4949500.3293960.616819
2i2MassChroQ_20241216_103323oldi2MassChroQ1.0.16X! TandemX! Tandem Alanine (2017.2.1.4)0.0089980.0119630.009873True...0.2864590.6507840.2239870.3752650.337984825330.1329000.5022090.2864590.650784
3MaxQuant_20241216_130203oldMaxQuant1.5.3.30AndromedaNoneNaN0.0100000.010000True...0.3213310.6058360.2132340.3335180.291254513380.2186300.4819020.3213310.605836
4MaxQuant_20241216_120735oldMaxQuant1.5.3.30AndromedaNoneNaN0.0100000.010000False...0.2918360.5146750.1998730.2726810.155889513450.2024740.4171330.2918360.514675
\n", + "

5 rows × 87 columns

\n", + "
" + ], + "text/plain": [ + " id old_new software_name \\\n", + "0 MaxQuant_20241216_100704 old MaxQuant \n", + "1 ProlineStudio_20241216_103006 old ProlineStudio \n", + "2 i2MassChroQ_20241216_103323 old i2MassChroQ \n", + "3 MaxQuant_20241216_130203 old MaxQuant \n", + "4 MaxQuant_20241216_120735 old MaxQuant \n", + "\n", + " software_version search_engine \\\n", + "0 1.5.2.8 Andromeda \n", + "1 2.3.0-SNAPSHOT_2024-09-11T06:45:20Z_jenkins Mascot \n", + "2 1.0.16 X! Tandem \n", + "3 1.5.3.30 Andromeda \n", + "4 1.5.3.30 Andromeda \n", + "\n", + " search_engine_version ident_fdr_psm ident_fdr_peptide \\\n", + "0 None NaN 0.010000 \n", + "1 2.8.3 0.010000 NaN \n", + "2 X! Tandem Alanine (2017.2.1.4) 0.008998 0.011963 \n", + "3 None NaN 0.010000 \n", + "4 None NaN 0.010000 \n", + "\n", + " ident_fdr_protein enable_match_between_runs ... results.2.CV_q75 \\\n", + "0 0.010000 False ... 0.295455 \n", + "1 NaN True ... 0.329396 \n", + "2 0.009873 True ... 0.286459 \n", + "3 0.010000 True ... 0.321331 \n", + "4 0.010000 False ... 0.291836 \n", + "\n", + " results.2.CV_q95 results.1.median_abs_epsilon results.1.mean_abs_epsilon \\\n", + "0 0.524623 0.202356 0.278361 \n", + "1 0.616819 0.211673 0.327418 \n", + "2 0.650784 0.223987 0.375265 \n", + "3 0.605836 0.213234 0.333518 \n", + "4 0.514675 0.199873 0.272681 \n", + "\n", + " results.1.variance_epsilon results.1.nr_prec results.1.CV_median \\\n", + "0 0.162885 51193 0.204522 \n", + "1 0.267728 59609 0.226330 \n", + "2 0.337984 82533 0.132900 \n", + "3 0.291254 51338 0.218630 \n", + "4 0.155889 51345 0.202474 \n", + "\n", + " results.1.CV_q90 results.1.CV_q75 results.1.CV_q95 \n", + "0 0.426579 0.295455 0.524623 \n", + "1 0.494950 0.329396 0.616819 \n", + "2 0.502209 0.286459 0.650784 \n", + "3 0.481902 0.321331 0.605836 \n", + "4 0.417133 0.291836 0.514675 \n", + "\n", + "[5 rows x 87 columns]" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Step 1: Fetch the JSON data from the URL\n", + "url = \"https://raw.githubusercontent.com/Proteobot/Results_quant_ion_DDA/refs/heads/main/results.json\"\n", + "response = requests.get(url)\n", + "response.raise_for_status() # Raise an error if the request fails\n", + "\n", + "# Step 2: Load the JSON into Python\n", + "data = response.json()\n", + "\n", + "# Step 3: Normalize the JSON structure into a DataFrame\n", + "df = pd.json_normalize(data)\n", + "\n", + "df.head(5)" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "90eec923", + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "e25afbdf0b454e70be200328304947a8", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "SelectMultiple(description='Select Rows:', layout=Layout(width='50%'), options=(('MaxQuant_20241216_100704 (ha…" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "2658f30c03824c1d88ee8381d75f04d1", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Button(description='Filter Rows', style=ButtonStyle())" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "387cecf52a67429aba2c69e330a84817", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Output()" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Create a SelectMultiple widget with names as options\n", + "row_selector = widgets.SelectMultiple(\n", + " options=[(f\"{row['id']} (hash: {row['intermediate_hash']}, submission comments: {row['submission_comments']})\", idx) for idx, row in df.iterrows()],\n", + " description='Select Rows:',\n", + " rows=10, # Number of visible rows in the widget\n", + " layout=widgets.Layout(width='50%') # Adjust layout as needed\n", + ")\n", + "\n", + "# Button to confirm selection\n", + "button = widgets.Button(description='Filter Rows')\n", + "\n", + "# Output widget to display the filtered DataFrame\n", + "output = widgets.Output()\n", + "\n", + "# Callback for filtering rows\n", + "def on_button_click(b):\n", + " with output:\n", + " output.clear_output()\n", + " selected_indices = list(row_selector.value)\n", + " global filtered_df # Store filtered DataFrame globally\n", + " filtered_df = df.iloc[selected_indices]\n", + " print(\"Filtered DataFrame:\")\n", + " display(filtered_df)\n", + "\n", + "# Attach callback\n", + "button.on_click(on_button_click)\n", + "\n", + "# Display the widgets\n", + "display(row_selector, button, output)\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "c79455a0", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "14 8cbc0bce20eee581ad10326e02a09dbc316c30e1\n", + "15 36b7b01b380f641722b3b34633bb53d72348eb80\n", + "16 0280a06fabdbe84746419d0810deae56e7ab2406\n", + "17 47db7ef37a0fb5fec79f3bedbfb4f67835774f10\n", + "Name: intermediate_hash, dtype: object" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "filtered_df[\"intermediate_hash\"]" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "093bd9d5", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Processing folder: https://proteobench.cubimed.rub.de/datasets/0280a06fabdbe84746419d0810deae56e7ab2406/\n", + "Downloading: https://proteobench.cubimed.rub.de/datasets/0280a06fabdbe84746419d0810deae56e7ab2406/0280a06fabdbe84746419d0810deae56e7ab2406_data.zip\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Downloading 0280a06fabdbe84746419d0810deae56e7ab2406_data.zip: 100%|████████████████████████████████████████████████████████████████████████████████████████████████████████| 33.6M/33.6M [00:24<00:00, 1.42MB/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Extracted contents to: extracted_files/0280a06fabdbe84746419d0810deae56e7ab2406\n", + "Processing folder: https://proteobench.cubimed.rub.de/datasets/36b7b01b380f641722b3b34633bb53d72348eb80/\n", + "Downloading: https://proteobench.cubimed.rub.de/datasets/36b7b01b380f641722b3b34633bb53d72348eb80/36b7b01b380f641722b3b34633bb53d72348eb80_data.zip\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Downloading 36b7b01b380f641722b3b34633bb53d72348eb80_data.zip: 100%|████████████████████████████████████████████████████████████████████████████████████████████████████████| 25.4M/25.4M [00:14<00:00, 1.83MB/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Extracted contents to: extracted_files/36b7b01b380f641722b3b34633bb53d72348eb80\n", + "Processing folder: https://proteobench.cubimed.rub.de/datasets/8cbc0bce20eee581ad10326e02a09dbc316c30e1/\n", + "Downloading: https://proteobench.cubimed.rub.de/datasets/8cbc0bce20eee581ad10326e02a09dbc316c30e1/8cbc0bce20eee581ad10326e02a09dbc316c30e1_data.zip\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Downloading 8cbc0bce20eee581ad10326e02a09dbc316c30e1_data.zip: 100%|████████████████████████████████████████████████████████████████████████████████████████████████████████| 33.2M/33.2M [00:18<00:00, 1.94MB/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Extracted contents to: extracted_files/8cbc0bce20eee581ad10326e02a09dbc316c30e1\n" + ] + } + ], + "source": [ + "import pandas as pd\n", + "import requests\n", + "from bs4 import BeautifulSoup\n", + "import os\n", + "import zipfile\n", + "from tqdm import tqdm\n", + "\n", + "# Step 1: Extract the hash list from the DataFrame\n", + "hash_list = filtered_df[\"intermediate_hash\"].tolist()\n", + "\n", + "# Step 2: Fetch folder names from the webpage\n", + "base_url = \"https://proteobench.cubimed.rub.de/datasets/\"\n", + "response = requests.get(base_url)\n", + "response.raise_for_status() # Check for errors\n", + "\n", + "soup = BeautifulSoup(response.text, \"html.parser\")\n", + "folder_links = [link['href'].strip(\"/\") for link in soup.find_all(\"a\") if link['href'].endswith(\"/\")]\n", + "\n", + "# Step 3: Filter folder links based on the hash list\n", + "matching_folders = [folder for folder in folder_links if folder in hash_list]\n", + "\n", + "# Step 4: Download and extract zip files from matching folders\n", + "for folder in matching_folders:\n", + " folder_url = f\"{base_url}{folder}/\"\n", + " print(f\"Processing folder: {folder_url}\")\n", + "\n", + " # Fetch the folder page\n", + " folder_response = requests.get(folder_url)\n", + " folder_response.raise_for_status()\n", + "\n", + " folder_soup = BeautifulSoup(folder_response.text, \"html.parser\")\n", + " zip_files = [link['href'] for link in folder_soup.find_all(\"a\") if link['href'].endswith(\".zip\")]\n", + "\n", + " # Process each .zip file\n", + " for zip_file in zip_files:\n", + " zip_url = f\"{folder_url}{zip_file}\"\n", + " print(f\"Downloading: {zip_url}\")\n", + "\n", + " # Download with a progress bar\n", + " zip_response = requests.get(zip_url, stream=True)\n", + " zip_response.raise_for_status()\n", + "\n", + " zip_filename = os.path.basename(zip_file)\n", + " total_size = int(zip_response.headers.get('content-length', 0))\n", + " block_size = 1024 # 1 KB\n", + "\n", + " # Save the zip file\n", + " with open(zip_filename, \"wb\") as f, tqdm(\n", + " desc=f\"Downloading {zip_filename}\",\n", + " total=total_size,\n", + " unit=\"B\",\n", + " unit_scale=True,\n", + " unit_divisor=1024,\n", + " ) as progress:\n", + " for data in zip_response.iter_content(block_size):\n", + " f.write(data)\n", + " progress.update(len(data))\n", + "\n", + " # Extract the zip file\n", + " extract_dir = f\"extracted_files/{folder}\"\n", + " os.makedirs(extract_dir, exist_ok=True)\n", + " with zipfile.ZipFile(zip_filename, \"r\") as zip_ref:\n", + " zip_ref.extractall(extract_dir)\n", + " print(f\"Extracted contents to: {extract_dir}\")\n", + "\n", + " # Cleanup downloaded .zip file\n", + " os.remove(zip_filename)\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ecb9cf7c", + "metadata": {}, + "outputs": [], + "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.11.4" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +}