{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"pygments_lexer":"ipython3","nbconvert_exporter":"python","version":"3.6.4","file_extension":".py","codemirror_mode":{"name":"ipython","version":3},"name":"python","mimetype":"text/x-python"}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"code","source":"%%capture\n!pip3 install scanpy[leiden] mygene","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","execution":{"iopub.status.busy":"2022-12-17T21:41:55.694259Z","iopub.execute_input":"2022-12-17T21:41:55.694887Z","iopub.status.idle":"2022-12-17T21:42:13.753760Z","shell.execute_reply.started":"2022-12-17T21:41:55.694803Z","shell.execute_reply":"2022-12-17T21:42:13.752444Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import gc\nimport os\nimport sys\n\nimport anndata as ad\nimport matplotlib.pyplot as plt\nimport mygene\nimport numpy as np\nimport pandas as pd\nimport scipy.stats as stats\nimport seaborn as sns\nimport scanpy as sc\n\n\nsc.settings.verbosity = 3\nsc.set_figure_params(dpi=150)\nsns.set_style(\"ticks\")\n\nDATA_DIR = \"/kaggle/input/openproblemsmultimodalanndata\"\nmg = mygene.MyGeneInfo()","metadata":{"execution":{"iopub.status.busy":"2022-12-17T21:42:13.755833Z","iopub.execute_input":"2022-12-17T21:42:13.756187Z","iopub.status.idle":"2022-12-17T21:42:15.646682Z","shell.execute_reply.started":"2022-12-17T21:42:13.756144Z","shell.execute_reply":"2022-12-17T21:42:15.645797Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Cite\nFP_CITE_TRAIN_INPUTS_ann = os.path.join(DATA_DIR,\"train_cite_inputs_values.sparse.ann.h5\")\nFP_CITE_TRAIN_TARGETS_ann = os.path.join(DATA_DIR,\"train_cite_targets_values.sparse.ann.h5\")\nFP_CITE_TEST_INPUTS_ann = os.path.join(DATA_DIR,\"test_cite_inputs_values.sparse.ann.h5\")","metadata":{"execution":{"iopub.status.busy":"2022-12-17T21:42:15.648078Z","iopub.execute_input":"2022-12-17T21:42:15.648374Z","iopub.status.idle":"2022-12-17T21:42:15.653727Z","shell.execute_reply.started":"2022-12-17T21:42:15.648349Z","shell.execute_reply":"2022-12-17T21:42:15.651965Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"metadata_fp = \"/kaggle/input/open-problems-multimodal/metadata.csv\"\nadd_metadata_fp = \"/kaggle/input/open-problems-multimodal/metadata_cite_day_2_donor_27678.csv\"\nmetadata = pd.read_csv(metadata_fp)\nadd_metadata = pd.read_csv(add_metadata_fp)\nmetadata = pd.concat([metadata, add_metadata])\nmetadata.set_index(\"cell_id\", inplace=True)\nmetadata.head()","metadata":{"execution":{"iopub.status.busy":"2022-12-17T21:42:15.655544Z","iopub.execute_input":"2022-12-17T21:42:15.655925Z","iopub.status.idle":"2022-12-17T21:42:16.079979Z","shell.execute_reply.started":"2022-12-17T21:42:15.655898Z","shell.execute_reply":"2022-12-17T21:42:16.078832Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"def annotate(adata: ad.AnnData, metadata: pd.DataFrame, f_donors: [str]):\n    adata.obs[\"cell_type\"] = metadata[\"cell_type\"][adata.obs_names]\n    adata.obs[\"day\"] = metadata[\"day\"][adata.obs_names].astype(str)\n    adata.obs[\"donor\"] = metadata[\"donor\"][adata.obs_names].astype(str)\n    adata.obs[\"gender\"] = \"m\"\n    adata.obs.loc[adata.obs[\"donor\"].isin(f_donors), \"gender\"] = \"f\"\n    adata.obs[\"n_genes_counts\"] = (adata.X > 0).sum(axis=1).A1\n    adata.obs[\"read_depth\"] = adata.X.sum(axis=1).A1","metadata":{"execution":{"iopub.status.busy":"2022-12-17T21:42:16.081565Z","iopub.execute_input":"2022-12-17T21:42:16.082856Z","iopub.status.idle":"2022-12-17T21:42:16.089140Z","shell.execute_reply.started":"2022-12-17T21:42:16.082818Z","shell.execute_reply":"2022-12-17T21:42:16.088362Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"cite_target = sc.read_h5ad(FP_CITE_TRAIN_TARGETS_ann)\nannotate(cite_target, metadata=metadata, f_donors=[\"13176\", ])\ncite_target","metadata":{"execution":{"iopub.status.busy":"2022-12-17T21:42:16.090103Z","iopub.execute_input":"2022-12-17T21:42:16.090401Z","iopub.status.idle":"2022-12-17T21:42:18.079718Z","shell.execute_reply.started":"2022-12-17T21:42:16.090373Z","shell.execute_reply":"2022-12-17T21:42:18.078719Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"cite_target_df = pd.DataFrame(cite_target.X.A, columns=cite_target.var_names, index=cite_target.obs_names)\ncite_target_df = pd.concat([cite_target_df, cite_target.obs], axis=1)\ncite_target_df.head()","metadata":{"execution":{"iopub.status.busy":"2022-12-17T21:42:57.308348Z","iopub.execute_input":"2022-12-17T21:42:57.308732Z","iopub.status.idle":"2022-12-17T21:42:57.485108Z","shell.execute_reply.started":"2022-12-17T21:42:57.308696Z","shell.execute_reply":"2022-12-17T21:42:57.484454Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"cite = sc.read_h5ad(FP_CITE_TRAIN_INPUTS_ann)\nannotate(cite, metadata=metadata, f_donors=[\"13176\", ])\ncite","metadata":{"execution":{"iopub.status.busy":"2022-12-17T21:42:18.081191Z","iopub.execute_input":"2022-12-17T21:42:18.081550Z","iopub.status.idle":"2022-12-17T21:42:57.306641Z","shell.execute_reply.started":"2022-12-17T21:42:18.081519Z","shell.execute_reply":"2022-12-17T21:42:57.305573Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Will firstly found corresponding RNA ensembl id for each CD","metadata":{}},{"cell_type":"code","source":"name_to_ensembl = {}\nensembl_to_name = {}\nfor ensembl_name in cite.var_names:\n    ensembl, name = ensembl_name.split(\"_\")\n#     if not name.startswith(\"CD\"):\n#         continue\n    if name in name_to_ensembl:\n        name_to_ensembl[name] = \"ambiguous\"\n    else:\n        name_to_ensembl[name] = ensembl\n    ensembl_to_name[ensembl] = name","metadata":{"execution":{"iopub.status.busy":"2022-12-17T21:42:57.486023Z","iopub.execute_input":"2022-12-17T21:42:57.486876Z","iopub.status.idle":"2022-12-17T21:42:57.513576Z","shell.execute_reply.started":"2022-12-17T21:42:57.486830Z","shell.execute_reply":"2022-12-17T21:42:57.512891Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"len(ensembl_to_name)","metadata":{"execution":{"iopub.status.busy":"2022-12-17T21:42:57.516482Z","iopub.execute_input":"2022-12-17T21:42:57.516814Z","iopub.status.idle":"2022-12-17T21:42:57.522574Z","shell.execute_reply.started":"2022-12-17T21:42:57.516788Z","shell.execute_reply":"2022-12-17T21:42:57.521613Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"cite_target.var_names[cite_target.var_names.isin(name_to_ensembl.keys())]","metadata":{"execution":{"iopub.status.busy":"2022-12-17T21:42:57.523701Z","iopub.execute_input":"2022-12-17T21:42:57.523983Z","iopub.status.idle":"2022-12-17T21:42:57.534464Z","shell.execute_reply.started":"2022-12-17T21:42:57.523958Z","shell.execute_reply":"2022-12-17T21:42:57.533540Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"not_found = cite_target.var_names[~cite_target.var_names.isin(name_to_ensembl.keys())]\nnot_found","metadata":{"execution":{"iopub.status.busy":"2022-12-17T21:42:57.535953Z","iopub.execute_input":"2022-12-17T21:42:57.536312Z","iopub.status.idle":"2022-12-17T21:42:57.548927Z","shell.execute_reply.started":"2022-12-17T21:42:57.536279Z","shell.execute_reply":"2022-12-17T21:42:57.547901Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"cd2ensembl = {}\nambiguous = {}\nnot_found_mg = []\n\nfor cd in cite_target.var_names:\n    \n    print(cd, end=\": \")\n    \n    q = mg.query(f'alias:{cd}', species='human', )\n    \n    if q[\"total\"] == 0:\n        if cd in name_to_ensembl:\n            cd2ensembl[cd] = {\"ensembl\": name_to_ensembl[cd], \"name\": \"\", \"symbol\": \"\", \"cd_name\": cd, \"cite_input\": f\"{name_to_ensembl[cd]}_{cd}\"}\n            print(\"not found, found in name_to_ensembl\")\n        else:\n            not_found_mg.append(cd)\n            print(\"not found\")\n            \n    elif q[\"total\"] > 1:\n        if cd in name_to_ensembl:\n            cd2ensembl[cd] = {\"ensembl\": name_to_ensembl[cd], \"name\": \"\", \"symbol\": \"\", \"cd_name\": cd, \"cite_input\": f\"{name_to_ensembl[cd]}_{cd}\"}\n            print(\"ambiguous, found in name_to_ensembl\")\n        else:\n            ambiguous[cd] = []\n            print(\"ambiguous\")\n            \n    else:\n        qq = mg.getgenes([q[\"hits\"][0][\"entrezgene\"]], fields=\"alias,name,symbol,ensembl\")[0]\n        \n        if type(qq[\"ensembl\"]) == list:\n            if cd in name_to_ensembl:\n                cd2ensembl[cd] = {\"name\": qq[\"name\"], \"symbol\": qq[\"symbol\"], \"cd_name\": cd, \"cite_input\": f\"{name_to_ensembl[cd]}_{cd}\"}\n                cd2ensembl[cd][\"ensembl\"] = name_to_ensembl[cd]\n                print(f'ambiguous ensembl, found in name_to_ensembl: {cd2ensembl[cd][\"ensembl\"]}, {cd2ensembl[cd][\"name\"]}, {cd2ensembl[cd][\"symbol\"]}')\n            else:\n                ambiguous[cd] = [qqq[\"gene\"] for qqq in qq[\"ensembl\"]]\n                print(\"ambiguous\")\n                \n        elif type(qq[\"ensembl\"]) == dict:\n            if qq[\"ensembl\"][\"gene\"] in ensembl_to_name:\n                cd2ensembl[cd] = {\"name\": qq[\"name\"], \"symbol\": qq[\"symbol\"], \"cd_name\": cd, \"cite_input\": f'{qq[\"ensembl\"][\"gene\"]}_{ensembl_to_name[qq[\"ensembl\"][\"gene\"]]}'}\n                cd2ensembl[cd][\"ensembl\"] = qq[\"ensembl\"][\"gene\"]\n                print(f'{cd2ensembl[cd][\"ensembl\"]}, {cd2ensembl[cd][\"name\"]}, {cd2ensembl[cd][\"symbol\"]}')\n            else:\n                not_found_mg.append(cd)\n                print(f'not found {qq[\"ensembl\"][\"gene\"]} in ensembl_to_name')\n        else:\n            print(f\"ensembl strange type: {type(qq['ensembl'])}\")","metadata":{"execution":{"iopub.status.busy":"2022-12-17T22:13:12.103810Z","iopub.execute_input":"2022-12-17T22:13:12.104197Z","iopub.status.idle":"2022-12-17T22:16:14.866940Z","shell.execute_reply.started":"2022-12-17T22:13:12.104165Z","shell.execute_reply":"2022-12-17T22:16:14.866227Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"len(cd2ensembl)","metadata":{"execution":{"iopub.status.busy":"2022-12-17T22:16:20.452214Z","iopub.execute_input":"2022-12-17T22:16:20.453102Z","iopub.status.idle":"2022-12-17T22:16:20.458911Z","shell.execute_reply.started":"2022-12-17T22:16:20.453064Z","shell.execute_reply":"2022-12-17T22:16:20.457951Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"ensembl_to_name[\"ENSG00000188389\"]","metadata":{"execution":{"iopub.status.busy":"2022-12-17T20:56:33.716956Z","iopub.execute_input":"2022-12-17T20:56:33.717399Z","iopub.status.idle":"2022-12-17T20:56:33.743845Z","shell.execute_reply.started":"2022-12-17T20:56:33.717363Z","shell.execute_reply":"2022-12-17T20:56:33.741407Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## will check ambiguous and try to repair some manually","metadata":{}},{"cell_type":"code","source":"ambiguous","metadata":{"execution":{"iopub.status.busy":"2022-12-17T22:16:24.054429Z","iopub.execute_input":"2022-12-17T22:16:24.055334Z","iopub.status.idle":"2022-12-17T22:16:24.062737Z","shell.execute_reply.started":"2022-12-17T22:16:24.055287Z","shell.execute_reply":"2022-12-17T22:16:24.061700Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"def add_ensembl(cd):\n    ensembl_id = cd2ensembl[cd]['ensembl']\n    cd2ensembl[cd]['symbol'] = ensembl_to_name[ensembl_id]\n    cd2ensembl[cd][\"cite_input\"] = f'{ensembl_id}_{ensembl_to_name[ensembl_id]}'","metadata":{"execution":{"iopub.status.busy":"2022-12-17T22:16:28.551006Z","iopub.execute_input":"2022-12-17T22:16:28.551412Z","iopub.status.idle":"2022-12-17T22:16:28.556452Z","shell.execute_reply.started":"2022-12-17T22:16:28.551366Z","shell.execute_reply":"2022-12-17T22:16:28.555638Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# ensembl id not found in RNA data\n# cd2ensembl[\"CD158e1\"] = {'ensembl': 'ENSG00000167633', 'name': '', 'symbol': ''}\n# cd2ensembl[\"CD16a\"] = {'ensembl': 'ENSG00000203747', 'name': '', 'symbol': \"\", \"cd_name\": \"CD16\"}\n# cd2ensembl[\"CD16b\"] = {'ensembl': 'ENSG00000162747', 'name': '', 'symbol': \"\", \"cd_name\": \"CD16\"}\n# cd2ensembl[\"CD158b\"] = {'ensembl': '', 'name': '', 'symbol': \"\", \"cd_name\": \"CD158b\"}\n# cd2ensembl[\"CD279\"] = {'ensembl': 'ENSG00000188389', 'name': '', 'symbol': \"\"}\n\ncd2ensembl[\"CD270\"] = {'ensembl': 'ENSG00000157873', 'name': '', \"cd_name\": \"CD270\"}\nadd_ensembl(\"CD270\")\ncd2ensembl[\"CD335\"] = {'ensembl': 'ENSG00000189430', 'name': '', \"cd_name\": \"CD335\"}\nadd_ensembl(\"CD335\")\ncd2ensembl[\"CD45\"] = {'ensembl': 'ENSG00000081237', 'name': '', \"cd_name\": \"CD45\"}\nadd_ensembl(\"CD45\")\ncd2ensembl[\"CD85j\"] = {'ensembl': 'ENSG00000104972', 'name': '', \"cd_name\": \"CD85j\"}\nadd_ensembl(\"CD85j\")\ncd2ensembl[\"CD25\"] = {'ensembl': 'ENSG00000134460', 'name': '', \"cd_name\": \"CD25\"}\nadd_ensembl(\"CD25\")\ncd2ensembl[\"CD20\"] = {'ensembl': 'ENSG00000156738', 'name': '', \"cd_name\": \"CD20\"}\nadd_ensembl(\"CD20\")\ncd2ensembl[\"CD32\"] = {'ensembl': 'ENSG00000143226', 'name': '', \"cd_name\": \"CD32\"}\nadd_ensembl(\"CD32\")","metadata":{"execution":{"iopub.status.busy":"2022-12-17T22:16:31.621596Z","iopub.execute_input":"2022-12-17T22:16:31.621979Z","iopub.status.idle":"2022-12-17T22:16:31.631049Z","shell.execute_reply.started":"2022-12-17T22:16:31.621948Z","shell.execute_reply":"2022-12-17T22:16:31.630183Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"len(cd2ensembl)","metadata":{"execution":{"iopub.status.busy":"2022-12-17T22:16:34.349223Z","iopub.execute_input":"2022-12-17T22:16:34.349620Z","iopub.status.idle":"2022-12-17T22:16:34.355658Z","shell.execute_reply.started":"2022-12-17T22:16:34.349589Z","shell.execute_reply":"2022-12-17T22:16:34.354945Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## will check not found and try to repair some manually","metadata":{}},{"cell_type":"code","source":"ensembl_to_name[\"ENSG00000173391\"]","metadata":{"execution":{"iopub.status.busy":"2022-12-17T20:44:46.638866Z","iopub.execute_input":"2022-12-17T20:44:46.639347Z","iopub.status.idle":"2022-12-17T20:44:46.647064Z","shell.execute_reply.started":"2022-12-17T20:44:46.639312Z","shell.execute_reply":"2022-12-17T20:44:46.645828Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"not_found_mg","metadata":{"execution":{"iopub.status.busy":"2022-12-17T22:16:37.666282Z","iopub.execute_input":"2022-12-17T22:16:37.667409Z","iopub.status.idle":"2022-12-17T22:16:37.674454Z","shell.execute_reply.started":"2022-12-17T22:16:37.667369Z","shell.execute_reply":"2022-12-17T22:16:37.673345Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# not found ensembl id in RNA data\n# cd2ensembl[\"TIGIT\"] = {'ensembl': 'ENSG00000181847', 'name': '', 'symbol': \"\", \"cd_name\": \"TIGIT\"}\n# cd2ensembl[\"Podoplanin\"] = {'ensembl': 'ENSG00000162493', 'name': '', 'symbol': \"\", \"cd_name\": \"Podoplanin\"}\n# cd2ensembl[\"CD5\"] = {'ensembl': 'ENSG00000110448', 'name': '', 'symbol': \"\", \"cd_name\": \"CD5\"}\n# cd2ensembl[\"CD28\"] = {'ensembl': 'ENSG00000178562', 'name': '', 'symbol': \"\", \"cd_name\": \"CD28\"}\n# cd2ensembl[\"CD158\"] = {'ensembl': 'ENSG00000125498', 'name': '', 'symbol': \"\", \"cd_name\": \"CD158\"}\n\n\ncd2ensembl[\"CD3\"] = {'ensembl': 'ENSG00000198851', 'name': '', \"cd_name\": \"CD3\"}\nadd_ensembl(\"CD3\")\ncd2ensembl[\"HLA-A-B-C\"] = {'ensembl': 'ENSG00000206503', 'name': '', \"cd_name\": \"HLA-A-B-C\"}\nadd_ensembl(\"HLA-A-B-C\")\ncd2ensembl[\"CD45RA\"] = {'ensembl': 'ENSG00000081237', 'name': '', \"cd_name\": \"CD45RA\"}\nadd_ensembl(\"CD45RA\")\ncd2ensembl[\"CD105\"] = {'ensembl': 'ENSG00000106991', 'name': '', \"cd_name\": \"CD105\"}\nadd_ensembl(\"CD105\")\ncd2ensembl[\"CD45RO\"] = {'ensembl': 'ENSG00000081237', 'name': '', \"cd_name\": \"CD45RO\"}\nadd_ensembl(\"CD45RO\")\ncd2ensembl[\"HLA-DRA\"] = {'ensembl': 'ENSG00000204287', 'name': '', \"cd_name\": \"HLA-DR\"}\nadd_ensembl(\"HLA-DRA\")\ncd2ensembl[\"HLA-DRB1\"] = {'ensembl': 'ENSG00000196126', 'name': '', \"cd_name\": \"HLA-DR\"}\nadd_ensembl(\"HLA-DRB1\")\ncd2ensembl[\"CD1c\"] = {'ensembl': 'ENSG00000158481', 'name': '', \"cd_name\": \"CD1c\"}\nadd_ensembl(\"CD1c\")\ncd2ensembl[\"CD1d\"] = {'ensembl': 'ENSG00000158473', 'name': '', \"cd_name\": \"CD1d\"}\nadd_ensembl(\"CD1d\")\ncd2ensembl[\"integrinB7\"] = {'ensembl': 'ENSG00000139626', 'name': '', \"cd_name\": \"integrinB7\"}\nadd_ensembl(\"integrinB7\")\ncd2ensembl[\"LOX-1\"] = {'ensembl': 'ENSG00000173391', 'name': '', \"cd_name\": \"LOX-1\"}\nadd_ensembl(\"LOX-1\")","metadata":{"execution":{"iopub.status.busy":"2022-12-17T22:16:40.608008Z","iopub.execute_input":"2022-12-17T22:16:40.609115Z","iopub.status.idle":"2022-12-17T22:16:40.618602Z","shell.execute_reply.started":"2022-12-17T22:16:40.609078Z","shell.execute_reply":"2022-12-17T22:16:40.617575Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"cd2ensembl_df = pd.DataFrame(cd2ensembl).T\ncd2ensembl_df","metadata":{"execution":{"iopub.status.busy":"2022-12-17T22:16:49.852360Z","iopub.execute_input":"2022-12-17T22:16:49.852742Z","iopub.status.idle":"2022-12-17T22:16:49.871419Z","shell.execute_reply.started":"2022-12-17T22:16:49.852710Z","shell.execute_reply":"2022-12-17T22:16:49.870547Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"cd2ensembl_df[~cd2ensembl_df.cite_input.isin(cite.var_names)]","metadata":{"execution":{"iopub.status.busy":"2022-12-17T22:16:54.547065Z","iopub.execute_input":"2022-12-17T22:16:54.547418Z","iopub.status.idle":"2022-12-17T22:16:54.558800Z","shell.execute_reply.started":"2022-12-17T22:16:54.547373Z","shell.execute_reply":"2022-12-17T22:16:54.557834Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"cd2ensembl_df.to_csv(\"CD_info_alt.csv\")","metadata":{"execution":{"iopub.status.busy":"2022-12-17T22:17:06.063320Z","iopub.execute_input":"2022-12-17T22:17:06.063685Z","iopub.status.idle":"2022-12-17T22:17:06.071164Z","shell.execute_reply.started":"2022-12-17T22:17:06.063658Z","shell.execute_reply":"2022-12-17T22:17:06.070473Z"},"trusted":true},"execution_count":null,"outputs":[]}]}