{"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":"!pip install --quiet tables","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","execution":{"iopub.status.busy":"2022-08-27T18:12:05.962804Z","iopub.execute_input":"2022-08-27T18:12:05.963884Z","iopub.status.idle":"2022-08-27T18:12:20.988749Z","shell.execute_reply.started":"2022-08-27T18:12:05.963767Z","shell.execute_reply":"2022-08-27T18:12:20.987594Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import os\nimport pandas as pd\nimport matplotlib.pyplot as plt\nimport seaborn as sns","metadata":{"execution":{"iopub.status.busy":"2022-08-27T18:12:40.754027Z","iopub.execute_input":"2022-08-27T18:12:40.754648Z","iopub.status.idle":"2022-08-27T18:12:41.499988Z","shell.execute_reply.started":"2022-08-27T18:12:40.754586Z","shell.execute_reply":"2022-08-27T18:12:41.498612Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"os.listdir(\"/kaggle/input/open-problems-multimodal/\")","metadata":{"execution":{"iopub.status.busy":"2022-08-27T18:12:52.942746Z","iopub.execute_input":"2022-08-27T18:12:52.943288Z","iopub.status.idle":"2022-08-27T18:12:52.957834Z","shell.execute_reply.started":"2022-08-27T18:12:52.943248Z","shell.execute_reply":"2022-08-27T18:12:52.956340Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"DATA_DIR = \"/kaggle/input/open-problems-multimodal/\"\nFP_CELL_METADATA = os.path.join(DATA_DIR,\"metadata.csv\")\n\nFP_CITE_TRAIN_INPUTS = os.path.join(DATA_DIR,\"train_cite_inputs.h5\")\nFP_CITE_TRAIN_TARGETS = os.path.join(DATA_DIR,\"train_cite_targets.h5\")\nFP_CITE_TEST_INPUTS = os.path.join(DATA_DIR,\"test_cite_inputs.h5\")\n\nFP_MULTIOME_TRAIN_INPUTS = os.path.join(DATA_DIR,\"train_multi_inputs.h5\")\nFP_MULTIOME_TRAIN_TARGETS = os.path.join(DATA_DIR,\"train_multi_targets.h5\")\nFP_MULTIOME_TEST_INPUTS = os.path.join(DATA_DIR,\"test_multi_inputs.h5\")\n\nFP_SUBMISSION = os.path.join(DATA_DIR,\"sample_submission.csv\")\nFP_EVALUATION_IDS = os.path.join(DATA_DIR,\"evaluation_ids.csv\")","metadata":{"execution":{"iopub.status.busy":"2022-08-27T18:13:10.533064Z","iopub.execute_input":"2022-08-27T18:13:10.533604Z","iopub.status.idle":"2022-08-27T18:13:10.542380Z","shell.execute_reply.started":"2022-08-27T18:13:10.533551Z","shell.execute_reply":"2022-08-27T18:13:10.541202Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df_cell = pd.read_csv(FP_CELL_METADATA)\ndf_cell","metadata":{"execution":{"iopub.status.busy":"2022-08-27T18:13:26.031971Z","iopub.execute_input":"2022-08-27T18:13:26.032571Z","iopub.status.idle":"2022-08-27T18:13:26.464108Z","shell.execute_reply.started":"2022-08-27T18:13:26.032502Z","shell.execute_reply":"2022-08-27T18:13:26.462978Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df_cell_cite = df_cell[df_cell.technology==\"citeseq\"]\ndf_cell_multi = df_cell[df_cell.technology==\"multiome\"]","metadata":{"execution":{"iopub.status.busy":"2022-08-27T18:13:41.081803Z","iopub.execute_input":"2022-08-27T18:13:41.082245Z","iopub.status.idle":"2022-08-27T18:13:41.158118Z","shell.execute_reply.started":"2022-08-27T18:13:41.082207Z","shell.execute_reply":"2022-08-27T18:13:41.156810Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"fig, axs = plt.subplots(1,2,figsize=(12,6))\ndf_cite_cell_dist = df_cell_cite.set_index(\"cell_id\")[[\"day\",\"donor\"]].value_counts().to_frame()\\\n                .sort_values(\"day\").reset_index()\\\n                .rename(columns={0:\"# cells\"})\nsns.barplot(data=df_cite_cell_dist, x=\"day\",hue=\"donor\",y=\"# cells\", ax=axs[0])\naxs[0].set_title(\"Number of cells measured with CITEseq\")\n\ndf_multi_cell_dist = df_cell_multi.set_index(\"cell_id\")[[\"day\",\"donor\"]].value_counts().to_frame()\\\n                .sort_values(\"day\").reset_index()\\\n                .rename(columns={0:\"# cells\"})\nsns.barplot(data=df_multi_cell_dist, x=\"day\",hue=\"donor\",y=\"# cells\", ax=axs[1])\naxs[1].set_title(\"Number of cells measured with Multiome\")\nplt.show()","metadata":{"execution":{"iopub.status.busy":"2022-08-27T18:14:01.643409Z","iopub.execute_input":"2022-08-27T18:14:01.643821Z","iopub.status.idle":"2022-08-27T18:14:02.274141Z","shell.execute_reply.started":"2022-08-27T18:14:01.643786Z","shell.execute_reply":"2022-08-27T18:14:02.273319Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df_cite_train_x = pd.read_hdf(FP_CITE_TRAIN_INPUTS)\ndf_cite_test_x = pd.read_hdf(FP_CITE_TEST_INPUTS)\ndf_cite_train_x.head()","metadata":{"execution":{"iopub.status.busy":"2022-08-27T18:14:18.511863Z","iopub.execute_input":"2022-08-27T18:14:18.512778Z","iopub.status.idle":"2022-08-27T18:15:56.586366Z","shell.execute_reply.started":"2022-08-27T18:14:18.512721Z","shell.execute_reply":"2022-08-27T18:15:56.582644Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df_cite_train_y = pd.read_hdf(FP_CITE_TRAIN_TARGETS)\ndf_cite_train_y.head()","metadata":{"execution":{"iopub.status.busy":"2022-08-27T18:17:00.808424Z","iopub.execute_input":"2022-08-27T18:17:00.809431Z","iopub.status.idle":"2022-08-27T18:17:01.612129Z","shell.execute_reply.started":"2022-08-27T18:17:00.809366Z","shell.execute_reply":"2022-08-27T18:17:01.610825Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_cells = df_cite_train_x.index.to_list()    \ntest_cells = df_cite_test_x.index.to_list()                                                     \ndf_cell_cite[\"split\"] = \"\"\ndf_cell_cite.loc[df_cell_cite.cell_id.isin(train_cells),\"split\"] = \"train\"\ndf_cell_cite.loc[df_cell_cite.cell_id.isin(test_cells),\"split\"] = \"test\"\n\ndf_cell_cite[[\"split\",\"day\",\"donor\"]].value_counts().to_frame().sort_values([\"split\",\"day\",\"donor\"]).rename(columns={0: \"n cells\"})","metadata":{"execution":{"iopub.status.busy":"2022-08-27T18:17:51.517997Z","iopub.execute_input":"2022-08-27T18:17:51.518617Z","iopub.status.idle":"2022-08-27T18:17:51.670513Z","shell.execute_reply.started":"2022-08-27T18:17:51.518558Z","shell.execute_reply":"2022-08-27T18:17:51.669484Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"START = int(1e5)\nSTOP = START+1000\n\ndf_multi_train_x = pd.read_hdf(FP_MULTIOME_TRAIN_INPUTS,start=START,stop=STOP)\ndf_multi_test_x = pd.read_hdf(FP_MULTIOME_TEST_INPUTS,start=START,stop=STOP)\ndf_multi_train_x.head()","metadata":{"execution":{"iopub.status.busy":"2022-08-27T18:18:06.916412Z","iopub.execute_input":"2022-08-27T18:18:06.916976Z","iopub.status.idle":"2022-08-27T18:18:11.588898Z","shell.execute_reply.started":"2022-08-27T18:18:06.916932Z","shell.execute_reply":"2022-08-27T18:18:11.587526Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df_multi_train_y = pd.read_hdf(FP_MULTIOME_TRAIN_TARGETS, start=START, stop=STOP)\ndf_multi_train_y.head()","metadata":{"execution":{"iopub.status.busy":"2022-08-27T18:18:26.367856Z","iopub.execute_input":"2022-08-27T18:18:26.368386Z","iopub.status.idle":"2022-08-27T18:18:27.147809Z","shell.execute_reply.started":"2022-08-27T18:18:26.368347Z","shell.execute_reply":"2022-08-27T18:18:27.146452Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# train_cells = df_multi_train_y.index.to_list()    \n# test_cells = df_multi_test_y.index.to_list()                                                     \n# df_cell_multi[\"split\"] = \"\"\n# df_cell_multi.loc[df_cell_multi.cell_id.isin(train_cells),\"split\"] = \"train\"\n# df_cell_multi.loc[df_cell_multi.cell_id.isin(test_cells),\"split\"] = \"test\"\n\n# df_cell_multi[[\"split\",\"day\",\"donor\"]].value_counts().to_frame().sort_values([\"split\",\"day\",\"donor\"]).rename(columns={0: \"n cells\"})","metadata":{"execution":{"iopub.status.busy":"2022-08-27T18:18:47.915947Z","iopub.execute_input":"2022-08-27T18:18:47.916881Z","iopub.status.idle":"2022-08-27T18:18:47.921924Z","shell.execute_reply.started":"2022-08-27T18:18:47.916838Z","shell.execute_reply":"2022-08-27T18:18:47.920978Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]}]}