{"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":"markdown","source":"# Preparation\n\n## Gorl of this competition\n\nIn this competition, you’ll aim to detect GW signals from the mergers of binary black holes. Specifically, you'll build a model to analyze simulated GW times-series data from a network of Earth-based detectors.\n\n## Evaluation\n\n[Area under the ROC curve](https://en.wikipedia.org/wiki/Receiver_operating_characteristic)","metadata":{}},{"cell_type":"markdown","source":"## Load data","metadata":{}},{"cell_type":"code","source":"import glob\n\nimport matplotlib.pyplot as plt\nimport numpy as np # linear algebra\nimport pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)\nimport plotly.express as px\nimport seaborn as sns\n\n%matplotlib inline  ","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","execution":{"iopub.status.busy":"2021-06-30T16:47:46.493683Z","iopub.execute_input":"2021-06-30T16:47:46.494053Z","iopub.status.idle":"2021-06-30T16:47:46.499768Z","shell.execute_reply.started":"2021-06-30T16:47:46.494030Z","shell.execute_reply":"2021-06-30T16:47:46.499232Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"!ls ../input/g2net-gravitational-wave-detection","metadata":{"execution":{"iopub.status.busy":"2021-06-30T16:47:46.500790Z","iopub.execute_input":"2021-06-30T16:47:46.501295Z","iopub.status.idle":"2021-06-30T16:47:46.838248Z","shell.execute_reply.started":"2021-06-30T16:47:46.501263Z","shell.execute_reply":"2021-06-30T16:47:46.837087Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"sub = pd.read_csv(\"../input/g2net-gravitational-wave-detection/sample_submission.csv\")\ndf_training_labels = pd.read_csv(\"../input/g2net-gravitational-wave-detection/training_labels.csv\")","metadata":{"execution":{"iopub.status.busy":"2021-06-30T16:47:46.840090Z","iopub.execute_input":"2021-06-30T16:47:46.840523Z","iopub.status.idle":"2021-06-30T16:47:47.431178Z","shell.execute_reply.started":"2021-06-30T16:47:46.840490Z","shell.execute_reply":"2021-06-30T16:47:47.430486Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Visualizations","metadata":{}},{"cell_type":"markdown","source":"## train labels\n\nThere ara two columns:\n\n- id: Id of sample\n- target: present of signal(ttarget=1 is \"present\")","metadata":{}},{"cell_type":"code","source":"df_training_labels.head()","metadata":{"execution":{"iopub.status.busy":"2021-06-30T16:47:47.432440Z","iopub.execute_input":"2021-06-30T16:47:47.432792Z","iopub.status.idle":"2021-06-30T16:47:47.445382Z","shell.execute_reply.started":"2021-06-30T16:47:47.432764Z","shell.execute_reply":"2021-06-30T16:47:47.443870Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"Labels for signal presence and absence are provided equally.","metadata":{}},{"cell_type":"code","source":"g = sns.countplot(df_training_labels[\"target\"])\ng.set_title(\"Count of each target\")","metadata":{"execution":{"iopub.status.busy":"2021-06-30T16:47:47.447257Z","iopub.execute_input":"2021-06-30T16:47:47.447679Z","iopub.status.idle":"2021-06-30T16:47:47.605971Z","shell.execute_reply.started":"2021-06-30T16:47:47.447638Z","shell.execute_reply":"2021-06-30T16:47:47.604949Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## Visualize signal\n\n### <span style=\"color: orange; \">↓↓↓ If you want to check other signals, you should change \"train_id\".</span>","metadata":{}},{"cell_type":"code","source":"train_id = \"00000e74ad\"\nsignal_array = np.load(f\"../input/g2net-gravitational-wave-detection/train/{train_id[0]}/{train_id[1]}/{train_id[2]}/{train_id}.npy\")","metadata":{"execution":{"iopub.status.busy":"2021-06-30T16:47:47.607004Z","iopub.execute_input":"2021-06-30T16:47:47.607271Z","iopub.status.idle":"2021-06-30T16:47:47.616967Z","shell.execute_reply.started":"2021-06-30T16:47:47.607244Z","shell.execute_reply":"2021-06-30T16:47:47.616381Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"- Each data sample (npy file) contains 3 time series for LIGO Hanford, LIGO Livingston, and Virgo.\n- Each spans are 2 sec and is sampled at 2,048 Hz.","metadata":{}},{"cell_type":"code","source":"colors = [\"blue\", \"orange\", \"olive\"]\n\nfig, axs = plt.subplots(1, 3, figsize=(15, 5), sharey=True)\nfor i, ax in zip(range(signal_array.shape[0]) , axs):\n    ax.plot(np.arange(0,signal_array.shape[1]), signal_array[i,:], color=colors[i])\n    ax.set_title(f\"Row {i}\")\n    ax.set_xlabel(\"Time (1/2048 sec)\")\n_ = fig.suptitle(f'Signals of {train_id}', fontsize=16)","metadata":{"execution":{"iopub.status.busy":"2021-06-30T16:47:47.619064Z","iopub.execute_input":"2021-06-30T16:47:47.619346Z","iopub.status.idle":"2021-06-30T16:47:47.912710Z","shell.execute_reply.started":"2021-06-30T16:47:47.619318Z","shell.execute_reply":"2021-06-30T16:47:47.911978Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## Gallery\n\n### target = 1","metadata":{}},{"cell_type":"code","source":"train_id_gallery = \"0920c46762\"\nsignal_array = signal_array = np.load(f\"../input/g2net-gravitational-wave-detection/train/{train_id_gallery[0]}/{train_id_gallery[1]}/{train_id_gallery[2]}/{train_id_gallery}.npy\")\n\nfig, axs = plt.subplots(1, 3, figsize=(15, 5), sharey=True)\nfor i, ax in zip(range(signal_array.shape[0]) , axs):\n    ax.plot(np.arange(0,signal_array.shape[1]), signal_array[i,:], color=colors[i])\n    ax.set_title(f\"Row {i}\")\n    ax.set_xlabel(\"Time (1/2048 sec)\")\n_ = fig.suptitle(f'Signals of {train_id_gallery}', fontsize=16)","metadata":{"_kg_hide-input":true,"execution":{"iopub.status.busy":"2021-06-30T16:47:47.913941Z","iopub.execute_input":"2021-06-30T16:47:47.914152Z","iopub.status.idle":"2021-06-30T16:47:48.217509Z","shell.execute_reply.started":"2021-06-30T16:47:47.914129Z","shell.execute_reply":"2021-06-30T16:47:48.216676Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_id_gallery = \"2dba065d99\"\nsignal_array = signal_array = np.load(f\"../input/g2net-gravitational-wave-detection/train/{train_id_gallery[0]}/{train_id_gallery[1]}/{train_id_gallery[2]}/{train_id_gallery}.npy\")\n\nfig, axs = plt.subplots(1, 3, figsize=(15, 5), sharey=True)\nfor i, ax in zip(range(signal_array.shape[0]) , axs):\n    ax.plot(np.arange(0,signal_array.shape[1]), signal_array[i,:], color=colors[i])\n    ax.set_title(f\"Row {i}\")\n    ax.set_xlabel(\"Time (1/2048 sec)\")\n_ = fig.suptitle(f'Signals of {train_id_gallery}', fontsize=16)","metadata":{"_kg_hide-input":true,"execution":{"iopub.status.busy":"2021-06-30T16:47:48.218567Z","iopub.execute_input":"2021-06-30T16:47:48.218788Z","iopub.status.idle":"2021-06-30T16:47:48.510013Z","shell.execute_reply.started":"2021-06-30T16:47:48.218762Z","shell.execute_reply":"2021-06-30T16:47:48.508759Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_id_gallery = \"5ba2069e22\"\nsignal_array = signal_array = np.load(f\"../input/g2net-gravitational-wave-detection/train/{train_id_gallery[0]}/{train_id_gallery[1]}/{train_id_gallery[2]}/{train_id_gallery}.npy\")\n\nfig, axs = plt.subplots(1, 3, figsize=(15, 5), sharey=True)\nfor i, ax in zip(range(signal_array.shape[0]) , axs):\n    ax.plot(np.arange(0,signal_array.shape[1]), signal_array[i,:], color=colors[i])\n    ax.set_title(f\"Row {i}\")\n    ax.set_xlabel(\"Time (1/2048 sec)\")\n_ = fig.suptitle(f'Signals of {train_id_gallery}', fontsize=16)","metadata":{"_kg_hide-input":true,"execution":{"iopub.status.busy":"2021-06-30T16:47:48.511569Z","iopub.execute_input":"2021-06-30T16:47:48.511876Z","iopub.status.idle":"2021-06-30T16:47:48.818256Z","shell.execute_reply.started":"2021-06-30T16:47:48.511851Z","shell.execute_reply":"2021-06-30T16:47:48.817444Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_id_gallery = \"ffffcf161a\"\nsignal_array = signal_array = np.load(f\"../input/g2net-gravitational-wave-detection/train/{train_id_gallery[0]}/{train_id_gallery[1]}/{train_id_gallery[2]}/{train_id_gallery}.npy\")\n\nfig, axs = plt.subplots(1, 3, figsize=(15, 5), sharey=True)\nfor i, ax in zip(range(signal_array.shape[0]) , axs):\n    ax.plot(np.arange(0,signal_array.shape[1]), signal_array[i,:], color=colors[i])\n    ax.set_title(f\"Row {i}\")\n    ax.set_xlabel(\"Time (1/2048 sec)\")\n_ = fig.suptitle(f'Signals of {train_id_gallery}', fontsize=16)","metadata":{"_kg_hide-input":true,"execution":{"iopub.status.busy":"2021-06-30T16:47:48.819251Z","iopub.execute_input":"2021-06-30T16:47:48.819481Z","iopub.status.idle":"2021-06-30T16:47:49.121090Z","shell.execute_reply.started":"2021-06-30T16:47:48.819453Z","shell.execute_reply":"2021-06-30T16:47:49.120396Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"### target = 0","metadata":{"execution":{"iopub.status.busy":"2021-06-30T16:33:54.358817Z","iopub.execute_input":"2021-06-30T16:33:54.359164Z","iopub.status.idle":"2021-06-30T16:33:54.363227Z","shell.execute_reply.started":"2021-06-30T16:33:54.359136Z","shell.execute_reply":"2021-06-30T16:33:54.362171Z"}}},{"cell_type":"code","source":"train_id_gallery = \"0015c1981e\"\nsignal_array = signal_array = np.load(f\"../input/g2net-gravitational-wave-detection/train/{train_id_gallery[0]}/{train_id_gallery[1]}/{train_id_gallery[2]}/{train_id_gallery}.npy\")\n\nfig, axs = plt.subplots(1, 3, figsize=(15, 5), sharey=True)\nfor i, ax in zip(range(signal_array.shape[0]) , axs):\n    ax.plot(np.arange(0,signal_array.shape[1]), signal_array[i,:], color=colors[i])\n    ax.set_title(f\"Row {i}\")\n    ax.set_xlabel(\"Time (1/2048 sec)\")\n_ = fig.suptitle(f'Signals of {train_id_gallery}', fontsize=16)","metadata":{"_kg_hide-input":true,"execution":{"iopub.status.busy":"2021-06-30T16:47:49.122143Z","iopub.execute_input":"2021-06-30T16:47:49.122464Z","iopub.status.idle":"2021-06-30T16:47:49.573917Z","shell.execute_reply.started":"2021-06-30T16:47:49.122433Z","shell.execute_reply":"2021-06-30T16:47:49.573147Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_id_gallery = \"5b3e52c96c\"\nsignal_array = signal_array = np.load(f\"../input/g2net-gravitational-wave-detection/train/{train_id_gallery[0]}/{train_id_gallery[1]}/{train_id_gallery[2]}/{train_id_gallery}.npy\")\n\nfig, axs = plt.subplots(1, 3, figsize=(15, 5), sharey=True)\nfor i, ax in zip(range(signal_array.shape[0]) , axs):\n    ax.plot(np.arange(0,signal_array.shape[1]), signal_array[i,:], color=colors[i])\n    ax.set_title(f\"Row {i}\")\n    ax.set_xlabel(\"Time (1/2048 sec)\")\n_ = fig.suptitle(f'Signals of {train_id_gallery}', fontsize=16)","metadata":{"_kg_hide-input":true,"execution":{"iopub.status.busy":"2021-06-30T16:47:49.575040Z","iopub.execute_input":"2021-06-30T16:47:49.575274Z","iopub.status.idle":"2021-06-30T16:47:49.862867Z","shell.execute_reply.started":"2021-06-30T16:47:49.575250Z","shell.execute_reply":"2021-06-30T16:47:49.862098Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_id_gallery = \"b6ef59cd9a\"\nsignal_array = signal_array = np.load(f\"../input/g2net-gravitational-wave-detection/train/{train_id_gallery[0]}/{train_id_gallery[1]}/{train_id_gallery[2]}/{train_id_gallery}.npy\")\n\nfig, axs = plt.subplots(1, 3, figsize=(15, 5), sharey=True)\nfor i, ax in zip(range(signal_array.shape[0]) , axs):\n    ax.plot(np.arange(0,signal_array.shape[1]), signal_array[i,:], color=colors[i])\n    ax.set_title(f\"Row {i}\")\n    ax.set_xlabel(\"Time (1/2048 sec)\")\n_ = fig.suptitle(f'Signals of {train_id_gallery}', fontsize=16)","metadata":{"_kg_hide-input":true,"execution":{"iopub.status.busy":"2021-06-30T16:47:49.863950Z","iopub.execute_input":"2021-06-30T16:47:49.864177Z","iopub.status.idle":"2021-06-30T16:47:50.180635Z","shell.execute_reply.started":"2021-06-30T16:47:49.864153Z","shell.execute_reply":"2021-06-30T16:47:50.179718Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_id_gallery = \"fffff2180b\"\nsignal_array = signal_array = np.load(f\"../input/g2net-gravitational-wave-detection/train/{train_id_gallery[0]}/{train_id_gallery[1]}/{train_id_gallery[2]}/{train_id_gallery}.npy\")\n\nfig, axs = plt.subplots(1, 3, figsize=(15, 5), sharey=True)\nfor i, ax in zip(range(signal_array.shape[0]) , axs):\n    ax.plot(np.arange(0,signal_array.shape[1]), signal_array[i,:], color=colors[i])\n    ax.set_title(f\"Row {i}\")\n    ax.set_xlabel(\"Time (1/2048 sec)\")\n_ = fig.suptitle(f'Signals of {train_id_gallery}', fontsize=16)","metadata":{"_kg_hide-input":true,"execution":{"iopub.status.busy":"2021-06-30T16:47:50.181540Z","iopub.execute_input":"2021-06-30T16:47:50.181843Z","iopub.status.idle":"2021-06-30T16:47:50.462404Z","shell.execute_reply.started":"2021-06-30T16:47:50.181820Z","shell.execute_reply":"2021-06-30T16:47:50.461610Z"},"trusted":true},"execution_count":null,"outputs":[]}]}