diff --git a/oktoberfest/preprocessing/preprocessing.py b/oktoberfest/preprocessing/preprocessing.py index ec76b6f9..a04eeb7f 100644 --- a/oktoberfest/preprocessing/preprocessing.py +++ b/oktoberfest/preprocessing/preprocessing.py @@ -10,7 +10,7 @@ from spectrum_fundamentals.mod_string import internal_without_mods, maxquant_to_internal from spectrum_io.file import csv from spectrum_io.raw import ThermoRaw -from spectrum_io.search_result import Mascot, MaxQuant, MSFragger +from spectrum_io.search_result import Mascot, MaxQuant, MSFragger , Sage from spectrum_io.spectral_library import digest as digest_io from ..data.spectra import FragmentType, Spectra @@ -227,6 +227,8 @@ def convert_search( search_result = MSFragger elif search_engine == "mascot": search_result = Mascot + elif search_engine == "sage": + search_result = Sage else: raise ValueError(f"Unknown search engine provided: {search_engine}") diff --git a/tutorials/Oktoberfest Tutorial.ipynb b/tutorials/Oktoberfest Tutorial.ipynb index 6027306f..5f8334dd 100644 --- a/tutorials/Oktoberfest Tutorial.ipynb +++ b/tutorials/Oktoberfest Tutorial.ipynb @@ -16,7 +16,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 1, "metadata": { "tags": [] }, @@ -27,7 +27,9 @@ "import json\n", "import urllib.request\n", "import shutil\n", - "from tqdm import tqdm" + "from tqdm import tqdm\n", + "%load_ext autoreload\n", + "%autoreload 2" ] }, { @@ -46,7 +48,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 2, "metadata": { "tags": [] }, @@ -56,7 +58,7 @@ "download_file = os.path.join(download_dir, 'Oktoberfest_input.zip')\n", "url = 'https://zenodo.org/record/7613029/files/Oktoberfest_input.zip'\n", "\n", - "download = True # set this to false if you already have the file and don't want to download again in the next step" + "download = False # set this to false if you already have the file and don't want to download again in the next step" ] }, { @@ -68,7 +70,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 3, "metadata": { "tags": [] }, @@ -89,11 +91,36 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 4, "metadata": { "tags": [] }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Downloaded data is stored in /home/karim/projects/oktoberfest/tutorials/Oktoberfest_input\n", + "Contents:\n" + ] + }, + { + "data": { + "text/plain": [ + "['config_files',\n", + " 'GN20170722_SK_HLA_G0103_R1_02.raw',\n", + " 'msms.txt',\n", + " 'GN20170722_SK_HLA_G0103_R2_01.raw',\n", + " 'GN20170722_SK_HLA_G0103_R2_02.raw',\n", + " 'GN20170722_SK_HLA_G0103_R1_01.raw',\n", + " 'peptides_spectral_library.csv']" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "input_dir = download_file[:-4]\n", "print(f'Downloaded data is stored in {input_dir}\\nContents:')\n", @@ -123,7 +150,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 5, "metadata": { "tags": [] }, @@ -134,7 +161,7 @@ " \"tag\": \"\",\n", " \"inputs\": {\n", " \"search_results\": input_dir + \"/msms.txt\",\n", - " \"search_results_type\": \"Maxquant\",\n", + " \"search_results_type\": \"Sage\",\n", " \"library_input\": input_dir + \"/peptides_spectral_library.csv\",\n", " \"library_input_type\": \"peptides\"\n", " },\n", @@ -158,7 +185,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 6, "metadata": { "tags": [] }, @@ -177,11 +204,73 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 7, "metadata": { "tags": [] }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2023-10-26 16:23:17,705 - INFO - oktoberfest.utils.config::read Reading configuration from ./spectral_library_config.json\n", + "2023-10-26 16:23:17,706 - INFO - oktoberfest.runner::run_job Oktoberfest version 0.5.0\n", + "Copyright 2023, Wilhelmlab at Technical University of Munich\n", + "2023-10-26 16:23:17,707 - INFO - oktoberfest.runner::run_job Job executed with the following config:\n", + "2023-10-26 16:23:17,707 - INFO - oktoberfest.runner::run_job {\n", + " \"type\": \"SpectralLibraryGeneration\",\n", + " \"tag\": \"\",\n", + " \"inputs\": {\n", + " \"search_results\": \"/home/karim/projects/oktoberfest/tutorials/Oktoberfest_input/msms.txt\",\n", + " \"search_results_type\": \"Sage\",\n", + " \"library_input\": \"/home/karim/projects/oktoberfest/tutorials/Oktoberfest_input/peptides_spectral_library.csv\",\n", + " \"library_input_type\": \"peptides\"\n", + " },\n", + " \"output\": \"./out\",\n", + " \"models\": {\n", + " \"intensity\": \"Prosit_2020_intensity_HCD\",\n", + " \"irt\": \"Prosit_2019_irt\"\n", + " },\n", + " \"outputFormat\": \"spectronaut\",\n", + " \"prediction_server\": \"koina.proteomicsdb.org:443\",\n", + " \"ssl\": true\n", + "}\n", + "2023-10-26 16:23:17,707 - INFO - oktoberfest.utils.config::read Reading configuration from ./spectral_library_config.json\n", + "2023-10-26 16:23:17,712 - INFO - oktoberfest.preprocessing.preprocessing::process_and_filter_spectra_data No of sequences before Filtering is 5\n", + "2023-10-26 16:23:17,714 - INFO - oktoberfest.preprocessing.preprocessing::process_and_filter_spectra_data No of sequences after Filtering is 5\n", + "2023-10-26 16:23:17,715 - INFO - oktoberfest.runner::generate_spectral_lib Last Batch from index 0\n", + "2023-10-26 16:23:17,715 - INFO - oktoberfest.runner::generate_spectral_lib Batch of size 5\n" + ] + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "e3e519a5e65a4065a9cd1a41951e9f0c", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Inferring predictions for 5 spectra with batch site 1000: 0%| | 0/1 [00:00 43\u001b[0m outputs\u001b[38;5;241m.\u001b[39mappend(\u001b[43mres\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget\u001b[49m\u001b[43m(\u001b[49m\u001b[43mtimeout\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;241;43m10000\u001b[39;49m\u001b[43m)\u001b[49m) \u001b[38;5;66;03m# 10000 seconds = ~3 hours\u001b[39;00m\n\u001b[1;32m 44\u001b[0m progress\u001b[38;5;241m.\u001b[39mupdate(\u001b[38;5;241m1\u001b[39m)\n", + "File \u001b[0;32m~/miniconda3/envs/oktoberfest/lib/python3.10/multiprocessing/pool.py:771\u001b[0m, in \u001b[0;36mApplyResult.get\u001b[0;34m(self, timeout)\u001b[0m\n\u001b[1;32m 770\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m--> 771\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_value\n", + "\u001b[0;31mAssertionError\u001b[0m: Modification not found.", + "\nDuring handling of the above exception, another exception occurred:\n", + "\u001b[0;31mSystemExit\u001b[0m Traceback (most recent call last)", + " \u001b[0;31m[... skipping hidden 1 frame]\u001b[0m\n", + "Cell \u001b[0;32mIn[16], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m \u001b[43mrun_job\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43m./ce_calibration_config.json\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m~/projects/oktoberfest/oktoberfest/runner.py:393\u001b[0m, in \u001b[0;36mrun_job\u001b[0;34m(config_path)\u001b[0m\n\u001b[1;32m 392\u001b[0m \u001b[38;5;28;01melif\u001b[39;00m job_type \u001b[38;5;241m==\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mCollisionEnergyCalibration\u001b[39m\u001b[38;5;124m\"\u001b[39m:\n\u001b[0;32m--> 393\u001b[0m \u001b[43mrun_ce_calibration\u001b[49m\u001b[43m(\u001b[49m\u001b[43mconfig_path\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 394\u001b[0m \u001b[38;5;28;01melif\u001b[39;00m job_type \u001b[38;5;241m==\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mRescoring\u001b[39m\u001b[38;5;124m\"\u001b[39m:\n", + "File \u001b[0;32m~/projects/oktoberfest/oktoberfest/runner.py:247\u001b[0m, in \u001b[0;36mrun_ce_calibration\u001b[0;34m(config_path)\u001b[0m\n\u001b[1;32m 246\u001b[0m processing_pool\u001b[38;5;241m.\u001b[39mapply_async(_ce_calib, [spectra_file, config])\n\u001b[0;32m--> 247\u001b[0m \u001b[43mprocessing_pool\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mcheck_pool\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m~/projects/oktoberfest/oktoberfest/utils/multiprocessing_pool.py:60\u001b[0m, in \u001b[0;36mJobPool.check_pool\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 59\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mpool\u001b[38;5;241m.\u001b[39mjoin()\n\u001b[0;32m---> 60\u001b[0m \u001b[43msys\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mexit\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m1\u001b[39;49m\u001b[43m)\u001b[49m\n", + "\u001b[0;31mSystemExit\u001b[0m: 1", + "\nDuring handling of the above exception, another exception occurred:\n", + "\u001b[0;31mAttributeError\u001b[0m Traceback (most recent call last)", + " \u001b[0;31m[... skipping hidden 1 frame]\u001b[0m\n", + "File \u001b[0;32m~/miniconda3/envs/oktoberfest/lib/python3.10/site-packages/IPython/core/interactiveshell.py:2097\u001b[0m, in \u001b[0;36mInteractiveShell.showtraceback\u001b[0;34m(self, exc_tuple, filename, tb_offset, exception_only, running_compiled_code)\u001b[0m\n\u001b[1;32m 2094\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m exception_only:\n\u001b[1;32m 2095\u001b[0m stb \u001b[38;5;241m=\u001b[39m [\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mAn exception has occurred, use \u001b[39m\u001b[38;5;124m%\u001b[39m\u001b[38;5;124mtb to see \u001b[39m\u001b[38;5;124m'\u001b[39m\n\u001b[1;32m 2096\u001b[0m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mthe full traceback.\u001b[39m\u001b[38;5;130;01m\\n\u001b[39;00m\u001b[38;5;124m'\u001b[39m]\n\u001b[0;32m-> 2097\u001b[0m stb\u001b[38;5;241m.\u001b[39mextend(\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mInteractiveTB\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget_exception_only\u001b[49m\u001b[43m(\u001b[49m\u001b[43metype\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 2098\u001b[0m \u001b[43m \u001b[49m\u001b[43mvalue\u001b[49m\u001b[43m)\u001b[49m)\n\u001b[1;32m 2099\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m 2101\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mcontains_exceptiongroup\u001b[39m(val):\n", + "File \u001b[0;32m~/miniconda3/envs/oktoberfest/lib/python3.10/site-packages/IPython/core/ultratb.py:710\u001b[0m, in \u001b[0;36mListTB.get_exception_only\u001b[0;34m(self, etype, value)\u001b[0m\n\u001b[1;32m 702\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mget_exception_only\u001b[39m(\u001b[38;5;28mself\u001b[39m, etype, value):\n\u001b[1;32m 703\u001b[0m \u001b[38;5;250m \u001b[39m\u001b[38;5;124;03m\"\"\"Only print the exception type and message, without a traceback.\u001b[39;00m\n\u001b[1;32m 704\u001b[0m \n\u001b[1;32m 705\u001b[0m \u001b[38;5;124;03m Parameters\u001b[39;00m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 708\u001b[0m \u001b[38;5;124;03m value : exception value\u001b[39;00m\n\u001b[1;32m 709\u001b[0m \u001b[38;5;124;03m \"\"\"\u001b[39;00m\n\u001b[0;32m--> 710\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mListTB\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mstructured_traceback\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43metype\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mvalue\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m~/miniconda3/envs/oktoberfest/lib/python3.10/site-packages/IPython/core/ultratb.py:568\u001b[0m, in \u001b[0;36mListTB.structured_traceback\u001b[0;34m(self, etype, evalue, etb, tb_offset, context)\u001b[0m\n\u001b[1;32m 565\u001b[0m chained_exc_ids\u001b[38;5;241m.\u001b[39madd(\u001b[38;5;28mid\u001b[39m(exception[\u001b[38;5;241m1\u001b[39m]))\n\u001b[1;32m 566\u001b[0m chained_exceptions_tb_offset \u001b[38;5;241m=\u001b[39m \u001b[38;5;241m0\u001b[39m\n\u001b[1;32m 567\u001b[0m out_list \u001b[38;5;241m=\u001b[39m (\n\u001b[0;32m--> 568\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mstructured_traceback\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 569\u001b[0m \u001b[43m \u001b[49m\u001b[43metype\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 570\u001b[0m \u001b[43m \u001b[49m\u001b[43mevalue\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 571\u001b[0m \u001b[43m \u001b[49m\u001b[43m(\u001b[49m\u001b[43metb\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mchained_exc_ids\u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;66;43;03m# type: ignore\u001b[39;49;00m\n\u001b[1;32m 572\u001b[0m \u001b[43m \u001b[49m\u001b[43mchained_exceptions_tb_offset\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 573\u001b[0m \u001b[43m \u001b[49m\u001b[43mcontext\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 574\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 575\u001b[0m \u001b[38;5;241m+\u001b[39m chained_exception_message\n\u001b[1;32m 576\u001b[0m \u001b[38;5;241m+\u001b[39m out_list)\n\u001b[1;32m 578\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m out_list\n", + "File \u001b[0;32m~/miniconda3/envs/oktoberfest/lib/python3.10/site-packages/IPython/core/ultratb.py:1435\u001b[0m, in \u001b[0;36mAutoFormattedTB.structured_traceback\u001b[0;34m(self, etype, evalue, etb, tb_offset, number_of_lines_of_context)\u001b[0m\n\u001b[1;32m 1433\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m 1434\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mtb \u001b[38;5;241m=\u001b[39m etb\n\u001b[0;32m-> 1435\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mFormattedTB\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mstructured_traceback\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 1436\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43metype\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mevalue\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43metb\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mtb_offset\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mnumber_of_lines_of_context\u001b[49m\n\u001b[1;32m 1437\u001b[0m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m~/miniconda3/envs/oktoberfest/lib/python3.10/site-packages/IPython/core/ultratb.py:1326\u001b[0m, in \u001b[0;36mFormattedTB.structured_traceback\u001b[0;34m(self, etype, value, tb, tb_offset, number_of_lines_of_context)\u001b[0m\n\u001b[1;32m 1323\u001b[0m mode \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mmode\n\u001b[1;32m 1324\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m mode \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mverbose_modes:\n\u001b[1;32m 1325\u001b[0m \u001b[38;5;66;03m# Verbose modes need a full traceback\u001b[39;00m\n\u001b[0;32m-> 1326\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mVerboseTB\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mstructured_traceback\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 1327\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43metype\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mvalue\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mtb\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mtb_offset\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mnumber_of_lines_of_context\u001b[49m\n\u001b[1;32m 1328\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1329\u001b[0m \u001b[38;5;28;01melif\u001b[39;00m mode \u001b[38;5;241m==\u001b[39m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mMinimal\u001b[39m\u001b[38;5;124m'\u001b[39m:\n\u001b[1;32m 1330\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m ListTB\u001b[38;5;241m.\u001b[39mget_exception_only(\u001b[38;5;28mself\u001b[39m, etype, value)\n", + "File \u001b[0;32m~/miniconda3/envs/oktoberfest/lib/python3.10/site-packages/IPython/core/ultratb.py:1173\u001b[0m, in \u001b[0;36mVerboseTB.structured_traceback\u001b[0;34m(self, etype, evalue, etb, tb_offset, number_of_lines_of_context)\u001b[0m\n\u001b[1;32m 1164\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mstructured_traceback\u001b[39m(\n\u001b[1;32m 1165\u001b[0m \u001b[38;5;28mself\u001b[39m,\n\u001b[1;32m 1166\u001b[0m etype: \u001b[38;5;28mtype\u001b[39m,\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 1170\u001b[0m number_of_lines_of_context: \u001b[38;5;28mint\u001b[39m \u001b[38;5;241m=\u001b[39m \u001b[38;5;241m5\u001b[39m,\n\u001b[1;32m 1171\u001b[0m ):\n\u001b[1;32m 1172\u001b[0m \u001b[38;5;250m \u001b[39m\u001b[38;5;124;03m\"\"\"Return a nice text document describing the traceback.\"\"\"\u001b[39;00m\n\u001b[0;32m-> 1173\u001b[0m formatted_exception \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mformat_exception_as_a_whole\u001b[49m\u001b[43m(\u001b[49m\u001b[43metype\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mevalue\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43metb\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mnumber_of_lines_of_context\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1174\u001b[0m \u001b[43m \u001b[49m\u001b[43mtb_offset\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1176\u001b[0m colors \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mColors \u001b[38;5;66;03m# just a shorthand + quicker name lookup\u001b[39;00m\n\u001b[1;32m 1177\u001b[0m colorsnormal \u001b[38;5;241m=\u001b[39m colors\u001b[38;5;241m.\u001b[39mNormal \u001b[38;5;66;03m# used a lot\u001b[39;00m\n", + "File \u001b[0;32m~/miniconda3/envs/oktoberfest/lib/python3.10/site-packages/IPython/core/ultratb.py:1063\u001b[0m, in \u001b[0;36mVerboseTB.format_exception_as_a_whole\u001b[0;34m(self, etype, evalue, etb, number_of_lines_of_context, tb_offset)\u001b[0m\n\u001b[1;32m 1060\u001b[0m \u001b[38;5;28;01massert\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(tb_offset, \u001b[38;5;28mint\u001b[39m)\n\u001b[1;32m 1061\u001b[0m head \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mprepare_header(\u001b[38;5;28mstr\u001b[39m(etype), \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mlong_header)\n\u001b[1;32m 1062\u001b[0m records \u001b[38;5;241m=\u001b[39m (\n\u001b[0;32m-> 1063\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget_records\u001b[49m\u001b[43m(\u001b[49m\u001b[43metb\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mnumber_of_lines_of_context\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mtb_offset\u001b[49m\u001b[43m)\u001b[49m \u001b[38;5;28;01mif\u001b[39;00m etb \u001b[38;5;28;01melse\u001b[39;00m []\n\u001b[1;32m 1064\u001b[0m )\n\u001b[1;32m 1066\u001b[0m frames \u001b[38;5;241m=\u001b[39m []\n\u001b[1;32m 1067\u001b[0m skipped \u001b[38;5;241m=\u001b[39m \u001b[38;5;241m0\u001b[39m\n", + "File \u001b[0;32m~/miniconda3/envs/oktoberfest/lib/python3.10/site-packages/IPython/core/ultratb.py:1131\u001b[0m, in \u001b[0;36mVerboseTB.get_records\u001b[0;34m(self, etb, number_of_lines_of_context, tb_offset)\u001b[0m\n\u001b[1;32m 1129\u001b[0m \u001b[38;5;28;01mwhile\u001b[39;00m cf \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[1;32m 1130\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m-> 1131\u001b[0m mod \u001b[38;5;241m=\u001b[39m inspect\u001b[38;5;241m.\u001b[39mgetmodule(\u001b[43mcf\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mtb_frame\u001b[49m)\n\u001b[1;32m 1132\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m mod \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[1;32m 1133\u001b[0m mod_name \u001b[38;5;241m=\u001b[39m mod\u001b[38;5;241m.\u001b[39m\u001b[38;5;18m__name__\u001b[39m\n", + "\u001b[0;31mAttributeError\u001b[0m: 'tuple' object has no attribute 'tb_frame'" + ] + } + ], "source": [ "run_job(\"./ce_calibration_config.json\")" ] @@ -295,7 +578,7 @@ " \"tag\": \"\",\n", " \"inputs\":{\n", " \"search_results\": input_dir + \"/msms.txt\",\n", - " \"search_results_type\": \"Maxquant\",\n", + " \"search_results_type\": \"Sage\",\n", " \"spectra\": input_dir,\n", " \"spectra_type\": \"raw\"\n", " },\n",