{"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":"# This Python 3 environment comes with many helpful analytics libraries installed\n# It is defined by the kaggle/python Docker image: https://github.com/kaggle/docker-python\n# For example, here's several helpful packages to load\n\nimport numpy as np # linear algebra\nimport pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)\n\n# Input data files are available in the read-only \"../input/\" directory\n# For example, running this (by clicking run or pressing Shift+Enter) will list all files under the input directory\n\nimport os\nfor dirname, _, filenames in os.walk('/kaggle/input'):\n    for filename in filenames:\n        print(os.path.join(dirname, filename))\n\n# You can write up to 20GB to the current directory (/kaggle/working/) that gets preserved as output when you create a version using \"Save & Run All\" \n# You can also write temporary files to /kaggle/temp/, but they won't be saved outside of the current session","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","execution":{"iopub.status.busy":"2022-11-03T02:20:41.236516Z","iopub.execute_input":"2022-11-03T02:20:41.236879Z","iopub.status.idle":"2022-11-03T02:20:41.249340Z","shell.execute_reply.started":"2022-11-03T02:20:41.236847Z","shell.execute_reply":"2022-11-03T02:20:41.248072Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import pandas as pd\nfilename = \"../input/open-problems-multimodal/metadata.csv\"\ndf = pd.read_csv(filename)\ndf.head()","metadata":{"execution":{"iopub.status.busy":"2022-11-03T02:20:41.263797Z","iopub.execute_input":"2022-11-03T02:20:41.264901Z","iopub.status.idle":"2022-11-03T02:20:41.584919Z","shell.execute_reply.started":"2022-11-03T02:20:41.264837Z","shell.execute_reply":"2022-11-03T02:20:41.583774Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"! pip install -q tables ","metadata":{"execution":{"iopub.status.busy":"2022-11-03T02:20:41.586544Z","iopub.execute_input":"2022-11-03T02:20:41.587610Z","iopub.status.idle":"2022-11-03T02:20:50.617535Z","shell.execute_reply.started":"2022-11-03T02:20:41.587571Z","shell.execute_reply":"2022-11-03T02:20:50.616159Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Creando Diccionario Para los Datos","metadata":{}},{"cell_type":"code","source":"import os\nimport numpy as np\nimport pandas as pd\nfrom collections import Counter\n\nPATH_DATASET = \"/kaggle/input/open-problems-multimodal\"\n\nclass MiDiccionario(dict):\n    def __missing__(self, key):\n        return key","metadata":{"execution":{"iopub.status.busy":"2022-11-03T02:20:50.619838Z","iopub.execute_input":"2022-11-03T02:20:50.620392Z","iopub.status.idle":"2022-11-03T02:20:50.629075Z","shell.execute_reply.started":"2022-11-03T02:20:50.620281Z","shell.execute_reply":"2022-11-03T02:20:50.627437Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"#  Usaremos Tecnologia Citeseq\n\nUna nueva técnica desarrollada por científicos del New York Genome Center NYGC representa un importante paso adelante para la secuenciación de ARN unicelular, un campo de la genómica en avance que proporciona información detallada sobre las células individuales y hace posible distinguir entre diferentes célulastipos y para estudiar los mecanismos de la enfermedad a nivel de células individuales.\n\n\n\nCITE-seq, o Indización celular de transcriptomas y epítopos por secuenciación, combina la medición de marcadores de proteínas de superficie en miles de células individuales con la secuenciación simultánea del ARN mensajero ARNm o transcriptomas de esas mismas células individuales.\n\n\n\nEl estudio de prueba de concepto de los investigadores de NYGC de CITE-seq, publicado hoy en Nature Methods, monitoreó 10 proteínas de superficie, junto con transcriptomas, de 8,000 células individuales, la demostración a mayor escala de análisis multidimensional unicelular hasta la fecha.\n\n\n\n“Ningún otro método permite mediciones simultáneas de transcriptomas y proteínas en la misma escala”, dijo Marlon Stoeckius, PhD, un científico investigador en el Laboratorio de Innovación Tecnológica de NYGC, quien dirigió el desarrollo de CITE-seq. “CITE-seq se suma a lo ya establecidométodos para el análisis del transcriptoma sin ningún efecto perjudicial sobre la calidad de los datos generados ”.\n\n\n\nLos enfoques anteriores se basaban en la captura de información de proteínas de células individuales mediante citometría antes de depositar estas células en placas para la secuenciación de ARN de una sola célula. Los enfoques actuales adolecen de un bajo rendimiento el número de células que se pueden analizar y se limitan a unnúmero relativamente pequeño de marcadores de proteínas.\n\n\n\nEl componente de detección de proteínas de CITE-seq se basa en anticuerpos con códigos de barras de ADN, que producen una lectura secuenciable que se captura junto con el transcriptoma de la célula. La integración de los datos de proteínas y ARN generados por CITE-seq requirió datos personalizadosanálisis, que se desarrolló en estrecha colaboración con el laboratorio de Rahul Satija, PhD, un miembro principal de la facultad de la NYGC. Como ejemplo del poder de CITE-seq, los investigadores utilizaron los datos multimodales para identificar subclases de asesinos naturales NK células que son difíciles de distinguir basándose solo en transcriptomas.\n\n\n\nLa capacidad de CITE-seq para diseccionar con mayor precisión las poblaciones de células tiene muchas aplicaciones potenciales en la investigación clínica. “Una posible dirección futura es usar CITE-seq en muestras de tumores para examinar tanto las células tumorales individuales como los diferentes grupos de células inmunes queinfiltrar el tumor. Este enfoque podría ser muy útil en la caracterización profunda de la heterogeneidad del tumor y en el desarrollo de nuevos enfoques inmunoterapéuticos ”, dijo el Dr. Stoeckius.\n\n\nEste artículo se ha vuelto a publicar desde materiales proporcionado por Centro del genoma de Nueva York . Nota: el material puede haber sido editado por su extensión y contenido. Para obtener más información, comuníquese con la fuente citada.","metadata":{}},{"cell_type":"code","source":"df_metadato = pd.read_csv(os.path.join(PATH_DATASET, \"metadata.csv\"))\ndisplay(df_metadato.head())\nprint(f\"table size: {len(df_metadato)}\")","metadata":{"execution":{"iopub.status.busy":"2022-11-03T02:20:50.632934Z","iopub.execute_input":"2022-11-03T02:20:50.633294Z","iopub.status.idle":"2022-11-03T02:20:50.849477Z","shell.execute_reply.started":"2022-11-03T02:20:50.633259Z","shell.execute_reply":"2022-11-03T02:20:50.847844Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"donor = list(df_metadato.donor.unique())[1::]\ndays = list(df_metadato.day.unique())\ncell_typedic = dict(zip(df_metadato.cell_type.unique(), range(1,9)))\ncells =list(df_metadato.cell_type.unique())[0:-1:]","metadata":{"execution":{"iopub.status.busy":"2022-11-03T02:20:50.850891Z","iopub.execute_input":"2022-11-03T02:20:50.851231Z","iopub.status.idle":"2022-11-03T02:20:50.898311Z","shell.execute_reply.started":"2022-11-03T02:20:50.851203Z","shell.execute_reply":"2022-11-03T02:20:50.896805Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Donadores","metadata":{}},{"cell_type":"code","source":"donor","metadata":{"execution":{"iopub.status.busy":"2022-11-03T02:20:50.900614Z","iopub.execute_input":"2022-11-03T02:20:50.901107Z","iopub.status.idle":"2022-11-03T02:20:50.910862Z","shell.execute_reply.started":"2022-11-03T02:20:50.901059Z","shell.execute_reply":"2022-11-03T02:20:50.908946Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"La función map() se utiliza mucho junto a expresiones lambda ya que permite ahorrarnos el esfuerzo de crear bucles for","metadata":{}},{"cell_type":"code","source":"df_metadato['cell_type'] = df_metadato['cell_type'].map(cell_typedic)","metadata":{"execution":{"iopub.status.busy":"2022-11-03T02:20:50.913130Z","iopub.execute_input":"2022-11-03T02:20:50.913524Z","iopub.status.idle":"2022-11-03T02:20:50.944479Z","shell.execute_reply.started":"2022-11-03T02:20:50.913493Z","shell.execute_reply":"2022-11-03T02:20:50.942679Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df_eval = pd.read_csv(os.path.join(PATH_DATASET, \"evaluation_ids.csv\"))\ndisplay(df_eval.head())\n      \nprint(f\"total: {len(df_eval)}\")\nprint(f\"cell_id: {len(df_eval['cell_id'].unique())}\")\nprint(f\"gene_id: {len(df_eval['gene_id'].unique())}\")","metadata":{"execution":{"iopub.status.busy":"2022-11-03T02:20:50.946268Z","iopub.execute_input":"2022-11-03T02:20:50.946696Z","iopub.status.idle":"2022-11-03T02:21:45.519613Z","shell.execute_reply.started":"2022-11-03T02:20:50.946661Z","shell.execute_reply":"2022-11-03T02:21:45.518109Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df_eval = df_eval.merge(df_metadato[['cell_id', 'day', 'donor', 'cell_type', 'technology']], how = 'left', on = 'cell_id').set_index(\"cell_id\")\ndf_meta = df_metadato.set_index(\"cell_id\")\ndf_eval['target'] = 0 \ndf_eval","metadata":{"execution":{"iopub.status.busy":"2022-11-03T02:21:45.521112Z","iopub.execute_input":"2022-11-03T02:21:45.522810Z","iopub.status.idle":"2022-11-03T02:22:15.478332Z","shell.execute_reply.started":"2022-11-03T02:21:45.522755Z","shell.execute_reply":"2022-11-03T02:22:15.477243Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"!pip install scanpy\nimport scanpy as sc\nimport numpy as np\nimport pandas as pd\nimport seaborn as sns\nimport matplotlib as mpl","metadata":{"execution":{"iopub.status.busy":"2022-11-03T02:22:15.482591Z","iopub.execute_input":"2022-11-03T02:22:15.482987Z","iopub.status.idle":"2022-11-03T02:22:26.293651Z","shell.execute_reply.started":"2022-11-03T02:22:15.482951Z","shell.execute_reply":"2022-11-03T02:22:26.292344Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"sc.logging.print_versions()\nsc.set_figure_params(frameon=False, figsize=(4, 4))","metadata":{"execution":{"iopub.status.busy":"2022-11-03T02:22:26.296042Z","iopub.execute_input":"2022-11-03T02:22:26.296495Z","iopub.status.idle":"2022-11-03T02:22:26.566135Z","shell.execute_reply.started":"2022-11-03T02:22:26.296455Z","shell.execute_reply":"2022-11-03T02:22:26.564730Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"datafile = \"../input/open-problems-multimodal/train_multi_targets.h5\"","metadata":{"execution":{"iopub.status.busy":"2022-11-03T02:22:26.567883Z","iopub.execute_input":"2022-11-03T02:22:26.568195Z","iopub.status.idle":"2022-11-03T02:22:26.573779Z","shell.execute_reply.started":"2022-11-03T02:22:26.568166Z","shell.execute_reply":"2022-11-03T02:22:26.572520Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"datafile","metadata":{"execution":{"iopub.status.busy":"2022-11-03T02:22:26.575260Z","iopub.execute_input":"2022-11-03T02:22:26.575586Z","iopub.status.idle":"2022-11-03T02:22:26.587804Z","shell.execute_reply.started":"2022-11-03T02:22:26.575561Z","shell.execute_reply":"2022-11-03T02:22:26.586192Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":" !mkdir -p data\n!wget http://cf.10xgenomics.com/samples/cell-exp/3.1.0/5k_pbmc_protein_v3_nextgem/5k_pbmc_protein_v3_nextgem_filtered_feature_bc_matrix.h5 -O data/5k_pbmc_protein_v3_nextgem_filtered_feature_bc_matrix.h5","metadata":{"execution":{"iopub.status.busy":"2022-11-03T02:22:26.589487Z","iopub.execute_input":"2022-11-03T02:22:26.589862Z","iopub.status.idle":"2022-11-03T02:22:27.826999Z","shell.execute_reply.started":"2022-11-03T02:22:26.589829Z","shell.execute_reply":"2022-11-03T02:22:27.825995Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"datafile = \"data/5k_pbmc_protein_v3_nextgem_filtered_feature_bc_matrix.h5\"","metadata":{"execution":{"iopub.status.busy":"2022-11-03T02:22:27.828487Z","iopub.execute_input":"2022-11-03T02:22:27.829701Z","iopub.status.idle":"2022-11-03T02:22:27.835052Z","shell.execute_reply.started":"2022-11-03T02:22:27.829666Z","shell.execute_reply":"2022-11-03T02:22:27.834057Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"pbmc = sc.read_10x_h5(datafile, gex_only=False)\npbmc.var_names_make_unique()\npbmc.layers[\"counts\"] = pbmc.X.copy()\nsc.pp.filter_genes(pbmc, min_counts=1)\npbmc","metadata":{"execution":{"iopub.status.busy":"2022-11-03T02:22:27.836471Z","iopub.execute_input":"2022-11-03T02:22:27.837103Z","iopub.status.idle":"2022-11-03T02:22:28.720512Z","shell.execute_reply.started":"2022-11-03T02:22:27.837076Z","shell.execute_reply":"2022-11-03T02:22:28.719195Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"pbmc.var[\"feature_types\"].value_counts()","metadata":{"execution":{"iopub.status.busy":"2022-11-03T02:22:28.721771Z","iopub.execute_input":"2022-11-03T02:22:28.722134Z","iopub.status.idle":"2022-11-03T02:22:28.736669Z","shell.execute_reply.started":"2022-11-03T02:22:28.722103Z","shell.execute_reply":"2022-11-03T02:22:28.735520Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Para facilitar el preprocesamiento, dividiremos los datos en objetos separados de proteína y ARN :esto no llevara a tener un orden de dato debido a que son de alta complejidad y el objetivo de este cuaderno no es olo dar y entregar numero in que ademas poder predecir el comportamiento celular.","metadata":{}},{"cell_type":"markdown","source":"Datos de Anticuerpos","metadata":{}},{"cell_type":"code","source":"protein = pbmc[:, pbmc.var[\"feature_types\"] == \"Antibody Capture\"].copy()\nrna = pbmc[:, pbmc.var[\"feature_types\"] == \"Gene Expression\"].copy()","metadata":{"execution":{"iopub.status.busy":"2022-11-03T02:22:28.738195Z","iopub.execute_input":"2022-11-03T02:22:28.738957Z","iopub.status.idle":"2022-11-03T02:22:28.964729Z","shell.execute_reply.started":"2022-11-03T02:22:28.738912Z","shell.execute_reply":"2022-11-03T02:22:28.963433Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"Conteo de Acido Ribunucleico","metadata":{}},{"cell_type":"code","source":"rna.shape","metadata":{"execution":{"iopub.status.busy":"2022-11-03T02:22:28.966499Z","iopub.execute_input":"2022-11-03T02:22:28.966827Z","iopub.status.idle":"2022-11-03T02:22:28.976401Z","shell.execute_reply.started":"2022-11-03T02:22:28.966798Z","shell.execute_reply":"2022-11-03T02:22:28.974202Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"pbmc.shape","metadata":{"execution":{"iopub.status.busy":"2022-11-03T02:22:28.977992Z","iopub.execute_input":"2022-11-03T02:22:28.978332Z","iopub.status.idle":"2022-11-03T02:22:28.986468Z","shell.execute_reply.started":"2022-11-03T02:22:28.978304Z","shell.execute_reply":"2022-11-03T02:22:28.985436Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"protein.var[\"control\"] = protein.var_names.str.contains(\"control\")\nsc.pp.calculate_qc_metrics(\n    protein,\n    percent_top=(5, 10, 15),\n    var_type=\"antibodies\",\n    qc_vars=(\"control\",),\n    inplace=True,\n)","metadata":{"execution":{"iopub.status.busy":"2022-11-03T02:22:28.987761Z","iopub.execute_input":"2022-11-03T02:22:28.988071Z","iopub.status.idle":"2022-11-03T02:22:29.054865Z","shell.execute_reply.started":"2022-11-03T02:22:28.988044Z","shell.execute_reply":"2022-11-03T02:22:29.053271Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Normalizacion de Datos con Curva de Campana\n\n¿Qué representa la curva de la campana de Gauss?\nResultado de imagen para que es la curva de campana\nLa campana de Gauss es un sistema que se emplea en estadística y probabilidad. Se trata de una representación gráfica de la distribución normal de un conjunto de datos, los cuales se reparten en valores bajos, medios y altos y crean un gráfico de forma acampanada y simétrica.","metadata":{}},{"cell_type":"code","source":"sns.jointplot(\"log1p_total_counts\", \"n_antibodies_by_counts\", protein.obs, kind=\"hex\", norm=mpl.colors.LogNorm())\nsns.jointplot(\"log1p_total_counts\", \"log1p_total_counts_control\", protein.obs, kind=\"hex\", norm=mpl.colors.LogNorm())","metadata":{"execution":{"iopub.status.busy":"2022-11-03T02:22:29.057062Z","iopub.execute_input":"2022-11-03T02:22:29.058437Z","iopub.status.idle":"2022-11-03T02:22:30.837133Z","shell.execute_reply.started":"2022-11-03T02:22:29.058393Z","shell.execute_reply":"2022-11-03T02:22:30.836239Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"Este paquete implementa el algoritmo de Leiden en C++ y lo expone a python . Se basa en ( python -)igraph para que funcione.","metadata":{}},{"cell_type":"code","source":"!pip3 install leidenalg","metadata":{"execution":{"iopub.status.busy":"2022-11-03T02:22:30.838409Z","iopub.execute_input":"2022-11-03T02:22:30.839572Z","iopub.status.idle":"2022-11-03T02:22:39.841844Z","shell.execute_reply.started":"2022-11-03T02:22:30.839534Z","shell.execute_reply":"2022-11-03T02:22:39.839577Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"protein.layers[\"counts\"] = protein.X.copy()","metadata":{"execution":{"iopub.status.busy":"2022-11-03T02:22:39.844997Z","iopub.execute_input":"2022-11-03T02:22:39.845609Z","iopub.status.idle":"2022-11-03T02:22:39.851925Z","shell.execute_reply.started":"2022-11-03T02:22:39.845555Z","shell.execute_reply":"2022-11-03T02:22:39.850946Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"Actualizamos   la normalizacion Anterior de los datos","metadata":{}},{"cell_type":"code","source":"protein","metadata":{"execution":{"iopub.status.busy":"2022-11-03T02:22:39.852918Z","iopub.execute_input":"2022-11-03T02:22:39.853231Z","iopub.status.idle":"2022-11-03T02:22:39.867993Z","shell.execute_reply.started":"2022-11-03T02:22:39.853205Z","shell.execute_reply":"2022-11-03T02:22:39.866493Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"sc.pp.log1p(protein)","metadata":{"execution":{"iopub.status.busy":"2022-11-03T02:22:39.869913Z","iopub.execute_input":"2022-11-03T02:22:39.870682Z","iopub.status.idle":"2022-11-03T02:22:39.883652Z","shell.execute_reply.started":"2022-11-03T02:22:39.870640Z","shell.execute_reply":"2022-11-03T02:22:39.882097Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"sc.pp.pca(protein, n_comps=20)\nsc.pp.neighbors(protein, n_neighbors=30) ","metadata":{"execution":{"iopub.status.busy":"2022-11-03T02:22:39.885456Z","iopub.execute_input":"2022-11-03T02:22:39.885765Z","iopub.status.idle":"2022-11-03T02:22:43.434440Z","shell.execute_reply.started":"2022-11-03T02:22:39.885737Z","shell.execute_reply":"2022-11-03T02:22:43.433660Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"sc.tl.leiden(protein, key_added=\"protein_leiden\")","metadata":{"execution":{"iopub.status.busy":"2022-11-03T02:22:43.439340Z","iopub.execute_input":"2022-11-03T02:22:43.440556Z","iopub.status.idle":"2022-11-03T02:22:44.136430Z","shell.execute_reply.started":"2022-11-03T02:22:43.440527Z","shell.execute_reply":"2022-11-03T02:22:44.135104Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"protein.obsp[\"protein_connectivities\"] = protein.obsp[\"connectivities\"].copy()\nsc.tl.umap(protein)\nsc.pl.umap(protein, color=\"protein_leiden\", size=10)","metadata":{"execution":{"iopub.status.busy":"2022-11-03T02:22:44.137922Z","iopub.execute_input":"2022-11-03T02:22:44.138199Z","iopub.status.idle":"2022-11-03T02:22:52.649812Z","shell.execute_reply.started":"2022-11-03T02:22:44.138175Z","shell.execute_reply":"2022-11-03T02:22:52.647890Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"Hermosa Agrupacion de los Datos, en este evento se muestran los tipos distintos de genomas","metadata":{}},{"cell_type":"code","source":"protein","metadata":{"execution":{"iopub.status.busy":"2022-11-03T02:22:52.651484Z","iopub.execute_input":"2022-11-03T02:22:52.651867Z","iopub.status.idle":"2022-11-03T02:22:52.658907Z","shell.execute_reply.started":"2022-11-03T02:22:52.651841Z","shell.execute_reply":"2022-11-03T02:22:52.657172Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"sc.pp.filter_genes(rna, min_counts=1)\n\nrna.var[\"mito\"] = rna.var_names.str.startswith(\"MT-\")\nsc.pp.calculate_qc_metrics(rna, qc_vars=[\"mito\"], inplace=True)","metadata":{"execution":{"iopub.status.busy":"2022-11-03T02:22:52.660956Z","iopub.execute_input":"2022-11-03T02:22:52.661443Z","iopub.status.idle":"2022-11-03T02:22:53.286663Z","shell.execute_reply.started":"2022-11-03T02:22:52.661397Z","shell.execute_reply":"2022-11-03T02:22:53.284605Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"rna.layers[\"counts\"] = rna.X.copy()\nsc.pp.normalize_total(rna)\nsc.pp.log1p(rna)","metadata":{"execution":{"iopub.status.busy":"2022-11-03T02:22:53.288423Z","iopub.execute_input":"2022-11-03T02:22:53.288808Z","iopub.status.idle":"2022-11-03T02:22:53.480603Z","shell.execute_reply.started":"2022-11-03T02:22:53.288771Z","shell.execute_reply":"2022-11-03T02:22:53.479523Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"sc.pp.pca(rna)\nsc.pp.neighbors(rna, n_neighbors=30)   \nsc.tl.umap(rna)\nsc.tl.leiden(rna, key_added=\"rna_leiden\")","metadata":{"execution":{"iopub.status.busy":"2022-11-03T02:22:53.481921Z","iopub.execute_input":"2022-11-03T02:22:53.482332Z","iopub.status.idle":"2022-11-03T02:23:27.645185Z","shell.execute_reply.started":"2022-11-03T02:22:53.482298Z","shell.execute_reply":"2022-11-03T02:23:27.643538Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"rna.obsm[\"protein\"] = protein.to_df()\nrna.obsm[\"protein_umap\"] = protein.obsm[\"X_umap\"]\nrna.obs[\"protein_leiden\"] = protein.obs[\"protein_leiden\"]\nrna.obsp[\"rna_connectivities\"] = rna.obsp[\"connectivities\"].copy()\nrna.obsp[\"protein_connectivities\"] = protein.obsp[\"protein_connectivities\"]","metadata":{"execution":{"iopub.status.busy":"2022-11-03T02:23:27.646870Z","iopub.execute_input":"2022-11-03T02:23:27.647241Z","iopub.status.idle":"2022-11-03T02:23:27.657716Z","shell.execute_reply.started":"2022-11-03T02:23:27.647204Z","shell.execute_reply":"2022-11-03T02:23:27.656323Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"sc.tl.umap(rna)","metadata":{"execution":{"iopub.status.busy":"2022-11-03T02:23:27.659714Z","iopub.execute_input":"2022-11-03T02:23:27.660050Z","iopub.status.idle":"2022-11-03T02:23:35.710050Z","shell.execute_reply.started":"2022-11-03T02:23:27.660018Z","shell.execute_reply":"2022-11-03T02:23:35.708532Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"sc.pl.umap(rna, color=[\"rna_leiden\", \"protein_leiden\"], size=10)\nsc.pl.embedding(rna, basis=\"protein_umap\", color=[\"rna_leiden\", \"protein_leiden\"], size=10)","metadata":{"execution":{"iopub.status.busy":"2022-11-03T02:23:35.711838Z","iopub.execute_input":"2022-11-03T02:23:35.712209Z","iopub.status.idle":"2022-11-03T02:23:37.872824Z","shell.execute_reply.started":"2022-11-03T02:23:35.712176Z","shell.execute_reply":"2022-11-03T02:23:37.871213Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"**El ARN o ácido ribonucleico es el otro tipo de ácido nucleico que posibilita la síntesis de proteínas. Si bien el ADN contiene la información genética, el ARN es el que permite que esta sea comprendida por las células. Está compuesto por una cadena simple, al contrario del ADN, que tiene una doble cadena**","metadata":{}},{"cell_type":"code","source":"pbmc.X[:, (pbmc.var[\"feature_types\"] == \"Gene Expression\").values] = rna.X","metadata":{"execution":{"iopub.status.busy":"2022-11-03T02:23:37.874393Z","iopub.execute_input":"2022-11-03T02:23:37.874725Z","iopub.status.idle":"2022-11-03T02:23:43.023645Z","shell.execute_reply.started":"2022-11-03T02:23:37.874694Z","shell.execute_reply":"2022-11-03T02:23:43.022289Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"pbmc.X[:, (pbmc.var[\"feature_types\"] == \"Antibody Capture\").values] = protein.X","metadata":{"execution":{"iopub.status.busy":"2022-11-03T02:23:43.025337Z","iopub.execute_input":"2022-11-03T02:23:43.025818Z","iopub.status.idle":"2022-11-03T02:23:43.281079Z","shell.execute_reply.started":"2022-11-03T02:23:43.025779Z","shell.execute_reply":"2022-11-03T02:23:43.279820Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"pbmc.obsm.update(rna.obsm)","metadata":{"execution":{"iopub.status.busy":"2022-11-03T02:23:43.282393Z","iopub.execute_input":"2022-11-03T02:23:43.282720Z","iopub.status.idle":"2022-11-03T02:23:43.288462Z","shell.execute_reply.started":"2022-11-03T02:23:43.282690Z","shell.execute_reply":"2022-11-03T02:23:43.287221Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"pbmc.obs[rna.obs.columns] = rna.obs","metadata":{"execution":{"iopub.status.busy":"2022-11-03T02:23:43.290152Z","iopub.execute_input":"2022-11-03T02:23:43.290567Z","iopub.status.idle":"2022-11-03T02:23:43.305390Z","shell.execute_reply.started":"2022-11-03T02:23:43.290503Z","shell.execute_reply":"2022-11-03T02:23:43.304001Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"pbmc","metadata":{"execution":{"iopub.status.busy":"2022-11-03T02:23:43.307558Z","iopub.execute_input":"2022-11-03T02:23:43.307910Z","iopub.status.idle":"2022-11-03T02:23:43.317475Z","shell.execute_reply.started":"2022-11-03T02:23:43.307878Z","shell.execute_reply":"2022-11-03T02:23:43.315843Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"sc.pl.umap(pbmc, color=\"protein_leiden\", legend_loc=\"on data\")","metadata":{"execution":{"iopub.status.busy":"2022-11-03T02:23:43.320110Z","iopub.execute_input":"2022-11-03T02:23:43.320542Z","iopub.status.idle":"2022-11-03T02:23:43.499313Z","shell.execute_reply.started":"2022-11-03T02:23:43.320511Z","shell.execute_reply":"2022-11-03T02:23:43.497801Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"sc.pl.umap(pbmc, color=\"n_genes_by_counts\", legend_loc=\"on data\")","metadata":{"execution":{"iopub.status.busy":"2022-11-03T02:23:43.501003Z","iopub.execute_input":"2022-11-03T02:23:43.501399Z","iopub.status.idle":"2022-11-03T02:23:43.679736Z","shell.execute_reply.started":"2022-11-03T02:23:43.501343Z","shell.execute_reply":"2022-11-03T02:23:43.678652Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"conteo por numero de genes","metadata":{}},{"cell_type":"code","source":"df_eval = df_eval.set_index('row_id')\n\nprint(f\"total: {len(df_eval)}\")\nprint(f\"gene_id: {len(df_eval['gene_id'].unique())}\")\ndf_eval[[\"target\"]].round(6).to_csv(\"submission.csv\")","metadata":{"execution":{"iopub.status.busy":"2022-11-03T02:23:43.681312Z","iopub.execute_input":"2022-11-03T02:23:43.681638Z","iopub.status.idle":"2022-11-03T02:25:04.412408Z","shell.execute_reply.started":"2022-11-03T02:23:43.681606Z","shell.execute_reply":"2022-11-03T02:25:04.410657Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import pandas as pd\nsub= pd.read_csv(\"../input/open-problems-multimodal/sample_submission.csv\")\nsub.to_csv(\"submission.csv\")","metadata":{"execution":{"iopub.status.busy":"2022-11-03T02:27:48.934920Z","iopub.execute_input":"2022-11-03T02:27:48.935319Z"},"trusted":true},"execution_count":null,"outputs":[]}]}